sitero 0.1.0 → 0.1.1

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 (387) hide show
  1. package/dist/export/cms/client/components/editor/index.js +4 -0
  2. package/dist/export/cms/client/components/index.js +24 -20
  3. package/dist/export/cms/client/i18n/index.js +1 -0
  4. package/dist/export/cms/client/index.js +11 -0
  5. package/dist/export/cms/client/pages/index.js +10 -8
  6. package/dist/export/core/server/index.js +8 -0
  7. package/dist/export/index.js +2 -0
  8. package/dist/export/web/server/index.js +1 -0
  9. package/dist/src/cms/client/applications/create-applications.js +3 -1
  10. package/dist/src/cms/client/applications/ui/use-nav-items.js +203 -0
  11. package/dist/src/cms/client/infrastructure/i18n/intor-config.js +8 -5
  12. package/dist/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.js +1 -0
  13. package/dist/src/cms/client/infrastructure/i18n/messages/index.js +9 -0
  14. package/dist/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.js +1 -0
  15. package/dist/src/cms/client/interfaces/components/create-components.js +26 -24
  16. package/dist/src/cms/client/interfaces/components/create-post-contents.js +86 -0
  17. package/dist/src/cms/client/interfaces/components/resources/admin/admin-card.js +3 -0
  18. package/dist/src/cms/client/interfaces/components/resources/admin/admin-list.js +1 -0
  19. package/dist/src/cms/client/interfaces/components/resources/admin/admin-refresh-tokens/admin-refresh-token-card.js +4 -0
  20. package/dist/src/cms/client/interfaces/components/resources/admin/admin-relations-section.js +2 -2
  21. package/dist/src/cms/client/interfaces/components/resources/admin/admin-table.js +1 -1
  22. package/dist/src/cms/client/interfaces/components/resources/config/config-edit-content.js +20 -2
  23. package/dist/src/cms/client/interfaces/components/resources/config/config-show-content.js +1 -0
  24. package/dist/src/cms/client/interfaces/components/resources/file/file-card.js +4 -0
  25. package/dist/src/cms/client/interfaces/components/resources/file/file-list.js +1 -0
  26. package/dist/src/cms/client/interfaces/components/resources/file/file-relations-section.js +2 -2
  27. package/dist/src/cms/client/interfaces/components/resources/file/file-state-icons.js +1 -1
  28. package/dist/src/cms/client/interfaces/components/resources/file/search/is-locked-buttons.js +7 -0
  29. package/dist/src/cms/client/interfaces/components/resources/file/search/type-buttons.js +7 -0
  30. package/dist/src/cms/client/interfaces/components/resources/folder/file-manager/file-manager-header.js +1 -1
  31. package/dist/src/cms/client/interfaces/components/resources/folder/folder-card.js +4 -0
  32. package/dist/src/cms/client/interfaces/components/resources/folder/folder-state-icons.js +1 -1
  33. package/dist/src/cms/client/interfaces/components/resources/inquiry/inquiry-card.js +4 -0
  34. package/dist/src/cms/client/interfaces/components/resources/inquiry/inquiry-list.js +1 -0
  35. package/dist/src/cms/client/interfaces/components/resources/{category → post/category}/category-card.js +26 -19
  36. package/dist/src/cms/client/interfaces/components/resources/post/category/category-relations-section.js +90 -0
  37. package/dist/src/cms/client/interfaces/components/resources/{category → post/category}/category-table.js +28 -21
  38. package/dist/src/cms/client/interfaces/components/resources/post/content/post-create-content.js +463 -0
  39. package/dist/src/cms/client/interfaces/components/resources/post/content/post-edit-content.js +461 -0
  40. package/dist/src/cms/client/interfaces/components/resources/post/content/post-show-content.js +218 -0
  41. package/dist/src/cms/client/interfaces/components/resources/post/content/types.js +12 -0
  42. package/dist/src/cms/client/interfaces/components/resources/post/post-card.js +16 -70
  43. package/dist/src/cms/client/interfaces/components/resources/post/post-list.js +4 -6
  44. package/dist/src/cms/client/interfaces/components/resources/post/search/control-fields-buttons.js +10 -50
  45. package/dist/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-card.js +19 -17
  46. package/dist/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-relations-section.js +14 -14
  47. package/dist/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-table.js +20 -17
  48. package/dist/src/cms/client/interfaces/components/resources/{topic → post/topic}/topic-card.js +29 -22
  49. package/dist/src/cms/client/interfaces/components/resources/{topic → post/topic}/topic-table.js +32 -24
  50. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/fields/basic-tags.js +1 -1
  51. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/fields/json-ld-tags.js +1 -1
  52. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/fields/open-graph-tags.js +1 -1
  53. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/fields/twitter-tags.js +1 -1
  54. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.js +6 -0
  55. package/dist/src/cms/client/interfaces/components/ui/blocks/list-container/list-container.js +6 -0
  56. package/dist/src/cms/client/interfaces/components/ui/blocks/list-container/page-size-selector.js +6 -0
  57. package/dist/src/cms/client/interfaces/components/ui/blocks/page-header/page-header.js +7 -1
  58. package/dist/src/cms/client/interfaces/components/ui/blocks/page-header/presets/index.js +11 -0
  59. package/dist/src/cms/client/interfaces/components/ui/buttons/return-button.js +7 -0
  60. package/dist/src/cms/client/interfaces/components/ui/features/external-link.js +7 -0
  61. package/dist/src/cms/client/interfaces/components/ui/features/file/file-info/file-info.js +5 -1
  62. package/dist/src/cms/client/interfaces/components/ui/features/file/file-preview/file-preview-list.js +7 -0
  63. package/dist/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal-body.js +8 -4
  64. package/dist/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal-trigger.js +6 -0
  65. package/dist/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal.js +5 -0
  66. package/dist/src/cms/client/interfaces/components/ui/form/index-field.js +1 -0
  67. package/dist/src/cms/client/interfaces/components/ui/i18n/display/i18n-array-display.js +4 -1
  68. package/dist/src/cms/client/interfaces/components/ui/i18n/display/i18n-display.js +4 -1
  69. package/dist/src/cms/client/interfaces/components/ui/i18n/display/i18n-object-array-display.js +4 -1
  70. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-array-input.js +6 -0
  71. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-date-input.js +6 -0
  72. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-input.js +6 -0
  73. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-json-input.js +7 -1
  74. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-number-input.js +6 -0
  75. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-object-array-input.js +6 -0
  76. package/dist/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-textarea.js +6 -0
  77. package/dist/src/cms/client/interfaces/components/ui/inputs/array-input.js +6 -0
  78. package/dist/src/cms/client/interfaces/components/ui/inputs/editor/base/built-in-plugins.js +1 -2
  79. package/dist/src/cms/client/interfaces/components/ui/inputs/editor/editor.js +1 -1
  80. package/dist/src/cms/client/interfaces/components/ui/inputs/editor/plugins/file-repository/upload-adapter.js +1 -1
  81. package/dist/src/cms/client/interfaces/components/ui/layouts/navbar/i18n-selector.js +5 -0
  82. package/dist/src/cms/client/interfaces/components/ui/layouts/navbar/nav-user.js +1 -0
  83. package/dist/src/cms/client/interfaces/components/ui/layouts/navbar/navbar.js +1 -0
  84. package/dist/src/cms/client/interfaces/components/ui/layouts/navbar/theme-selector.js +6 -0
  85. package/dist/src/cms/client/interfaces/pages/(auth)/email-unverified/page.js +1 -0
  86. package/dist/src/cms/client/interfaces/pages/(auth)/forgot-password/page.js +1 -0
  87. package/dist/src/cms/client/interfaces/pages/(auth)/layout.js +1 -0
  88. package/dist/src/cms/client/interfaces/pages/(auth)/reset-password/page.js +1 -0
  89. package/dist/src/cms/client/interfaces/pages/(auth)/sign-in/page.js +1 -0
  90. package/dist/src/cms/client/interfaces/pages/dashboard/(auth)/change-password/page.js +1 -0
  91. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/edit/page.js +20 -4
  92. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/page.js +43 -4
  93. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/create/page.js +21 -5
  94. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/page.js +97 -39
  95. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/edit/page.js +34 -5
  96. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/page.js +35 -4
  97. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/create/page.js +34 -5
  98. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/edit/page.js +115 -0
  99. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/page.js +170 -0
  100. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/create/page.js +117 -0
  101. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/page.js +8 -1
  102. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/_id_/edit/page.js +100 -0
  103. package/dist/src/cms/client/interfaces/pages/dashboard/content/{tag → content-management/tag}/_id_/page.js +40 -22
  104. package/dist/src/cms/client/interfaces/pages/dashboard/content/{tag/_id_/edit → content-management/tag/create}/page.js +24 -26
  105. package/dist/src/cms/client/interfaces/pages/dashboard/content/{tag/create → content-management/tag}/page.js +43 -27
  106. package/dist/src/cms/client/interfaces/pages/dashboard/content/{topic → content-management/topic}/_id_/edit/page.js +32 -15
  107. package/dist/src/cms/client/interfaces/pages/dashboard/content/{topic → content-management/topic}/_id_/page.js +36 -36
  108. package/dist/src/cms/client/interfaces/pages/dashboard/content/{topic/create → content-management/topic}/page.js +41 -15
  109. package/dist/src/cms/client/interfaces/pages/dashboard/layout.js +1 -0
  110. package/dist/src/cms/client/interfaces/pages/dashboard/page.js +1 -0
  111. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/page.js +1 -0
  112. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/page.js +3 -2
  113. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/page.js +1 -0
  114. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file-manager/page.js +1 -0
  115. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/folder/page.js +1 -0
  116. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/page.js +3 -2
  117. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/trash/page.js +1 -1
  118. package/dist/src/cms/client/interfaces/pages/dashboard/website/inquiry/_id_/page.js +1 -0
  119. package/dist/src/cms/client/interfaces/pages/dashboard/website/inquiry/page.js +1 -0
  120. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-config/_slug_/edit/page.js +1 -0
  121. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-config/_slug_/page.js +1 -0
  122. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-config/page.js +1 -0
  123. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/_slug_/edit/page.js +1 -0
  124. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/_slug_/page.js +1 -1
  125. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/page.js +1 -0
  126. package/dist/src/constants/paths/cms-paths.js +7 -4
  127. package/dist/src/core/domain/static/topics.js +29 -0
  128. package/dist/src/core/server/infrastructure/database/file/query/file-query-repository.js +1 -0
  129. package/dist/src/core/server/infrastructure/database/folder/query/folder-query-repository.js +1 -0
  130. package/dist/src/core/server/infrastructure/database/post/command/post-command-repository.js +6 -151
  131. package/dist/src/core/server/infrastructure/database/post/command/post-create-data.js +81 -0
  132. package/dist/src/core/server/infrastructure/database/post/command/post-update-data.js +86 -0
  133. package/dist/src/core/server/infrastructure/i18n/messages/index.js +9 -0
  134. package/dist/src/core/server/interfaces/actions/resources/file/commands/purge-many/file-purge-many-action.js +1 -0
  135. package/dist/src/core/server/interfaces/actions/resources/file/commands/soft-delete/file-soft-delete-action.js +1 -0
  136. package/dist/src/core/server/interfaces/actions/resources/file/commands/soft-delete-many/file-soft-delete-many-action.js +1 -0
  137. package/dist/src/core/server/interfaces/actions/resources/folder/commands/delete/folder-delete-action.js +1 -0
  138. package/dist/src/core/server/interfaces/actions/resources/folder/queries/folder-find-full-action.js +1 -0
  139. package/dist/src/core/server/seeders/folder/seeder.js +1 -0
  140. package/dist/src/web/server/applications/sitemap/get-post-items.js +46 -6
  141. package/dist/src/web/server/applications/sitemap/get-subcategory-items.js +34 -0
  142. package/dist/src/web/server/interfaces/create-web-interfaces.js +4 -0
  143. package/dist/src/web/server/interfaces/loaders/load-categories.js +6 -3
  144. package/dist/src/web/server/interfaces/loaders/load-category.js +8 -2
  145. package/dist/src/web/server/interfaces/loaders/load-post.js +8 -2
  146. package/dist/src/web/server/interfaces/loaders/load-posts.js +7 -3
  147. package/dist/src/web/server/interfaces/loaders/load-subcategories.js +61 -0
  148. package/dist/src/web/server/interfaces/loaders/load-subcategory.js +27 -0
  149. package/dist/types/export/cms/client/components/index.d.ts +4 -1
  150. package/dist/types/export/cms/client/components/index.d.ts.map +1 -1
  151. package/dist/types/export/cms/client/i18n/index.d.ts +1 -1
  152. package/dist/types/export/cms/client/i18n/index.d.ts.map +1 -1
  153. package/dist/types/export/cms/client/index.d.ts +1 -1
  154. package/dist/types/export/cms/client/index.d.ts.map +1 -1
  155. package/dist/types/export/cms/client/pages/index.d.ts +1 -1
  156. package/dist/types/export/cms/client/pages/index.d.ts.map +1 -1
  157. package/dist/types/export/core/server/index.d.ts +6 -1
  158. package/dist/types/export/core/server/index.d.ts.map +1 -1
  159. package/dist/types/export/index.d.ts +2 -2
  160. package/dist/types/export/index.d.ts.map +1 -1
  161. package/dist/types/export/web/server/index.d.ts +1 -1
  162. package/dist/types/export/web/server/index.d.ts.map +1 -1
  163. package/dist/types/src/cms/client/applications/create-applications.d.ts.map +1 -1
  164. package/dist/types/src/cms/client/applications/resources/post/use-create-form-data.d.ts +1 -1
  165. package/dist/types/src/cms/client/applications/resources/post/use-create-form-data.d.ts.map +1 -1
  166. package/dist/types/src/cms/client/applications/types.d.ts +2 -1
  167. package/dist/types/src/cms/client/applications/types.d.ts.map +1 -1
  168. package/dist/types/src/cms/client/applications/ui/index.d.ts +1 -0
  169. package/dist/types/src/cms/client/applications/ui/index.d.ts.map +1 -1
  170. package/dist/types/src/cms/client/applications/ui/use-nav-items.d.ts +20 -0
  171. package/dist/types/src/cms/client/applications/ui/use-nav-items.d.ts.map +1 -0
  172. package/dist/types/src/cms/client/infrastructure/i18n/index.d.ts +1 -0
  173. package/dist/types/src/cms/client/infrastructure/i18n/index.d.ts.map +1 -1
  174. package/dist/types/src/cms/client/infrastructure/i18n/intor-config.d.ts.map +1 -1
  175. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/index.d.ts +3 -0
  176. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/index.d.ts.map +1 -1
  177. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.d.ts +3 -0
  178. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.d.ts.map +1 -1
  179. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts +1347 -0
  180. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts.map +1 -0
  181. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/index.d.ts +3 -0
  182. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/index.d.ts.map +1 -1
  183. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.d.ts +3 -0
  184. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.d.ts.map +1 -1
  185. package/dist/types/src/cms/client/interfaces/components/create-components.d.ts +10 -5
  186. package/dist/types/src/cms/client/interfaces/components/create-components.d.ts.map +1 -1
  187. package/dist/types/src/cms/client/interfaces/components/create-post-contents.d.ts +38 -0
  188. package/dist/types/src/cms/client/interfaces/components/create-post-contents.d.ts.map +1 -0
  189. package/dist/types/src/cms/client/interfaces/components/resources/admin/admin-relations-section.d.ts +1 -2
  190. package/dist/types/src/cms/client/interfaces/components/resources/admin/admin-relations-section.d.ts.map +1 -1
  191. package/dist/types/src/cms/client/interfaces/components/resources/config/config-edit-content.d.ts +1 -1
  192. package/dist/types/src/cms/client/interfaces/components/resources/config/config-edit-content.d.ts.map +1 -1
  193. package/dist/types/src/cms/client/interfaces/components/resources/file/file-relations-section.d.ts +1 -2
  194. package/dist/types/src/cms/client/interfaces/components/resources/file/file-relations-section.d.ts.map +1 -1
  195. package/dist/types/src/cms/client/interfaces/components/resources/index.d.ts +5 -4
  196. package/dist/types/src/cms/client/interfaces/components/resources/index.d.ts.map +1 -1
  197. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-card.d.ts +8 -0
  198. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-card.d.ts.map +1 -0
  199. package/dist/types/src/cms/client/interfaces/components/resources/{category → post/category}/category-relations-section.d.ts +4 -4
  200. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-relations-section.d.ts.map +1 -0
  201. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-table.d.ts +8 -0
  202. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-table.d.ts.map +1 -0
  203. package/dist/types/src/cms/client/interfaces/components/resources/post/category/index.d.ts.map +1 -0
  204. package/dist/types/src/cms/client/interfaces/components/resources/post/content/index.d.ts +6 -0
  205. package/dist/types/src/cms/client/interfaces/components/resources/post/content/index.d.ts.map +1 -0
  206. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts +46 -0
  207. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts.map +1 -0
  208. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-edit-content.d.ts +45 -0
  209. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-edit-content.d.ts.map +1 -0
  210. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-show-content.d.ts +26 -0
  211. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-show-content.d.ts.map +1 -0
  212. package/dist/types/src/cms/client/interfaces/components/resources/post/content/types.d.ts +19 -0
  213. package/dist/types/src/cms/client/interfaces/components/resources/post/content/types.d.ts.map +1 -0
  214. package/dist/types/src/cms/client/interfaces/components/resources/post/index.d.ts +2 -0
  215. package/dist/types/src/cms/client/interfaces/components/resources/post/index.d.ts.map +1 -1
  216. package/dist/types/src/cms/client/interfaces/components/resources/post/post-card.d.ts +1 -8
  217. package/dist/types/src/cms/client/interfaces/components/resources/post/post-card.d.ts.map +1 -1
  218. package/dist/types/src/cms/client/interfaces/components/resources/post/post-list.d.ts +4 -3
  219. package/dist/types/src/cms/client/interfaces/components/resources/post/post-list.d.ts.map +1 -1
  220. package/dist/types/src/cms/client/interfaces/components/resources/post/post-relations-section.d.ts +1 -1
  221. package/dist/types/src/cms/client/interfaces/components/resources/post/post-relations-section.d.ts.map +1 -1
  222. package/dist/types/src/cms/client/interfaces/components/resources/post/search/control-fields-buttons.d.ts +0 -2
  223. package/dist/types/src/cms/client/interfaces/components/resources/post/search/control-fields-buttons.d.ts.map +1 -1
  224. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/index.d.ts.map +1 -0
  225. package/dist/types/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-card.d.ts +1 -1
  226. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-card.d.ts.map +1 -0
  227. package/dist/types/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-relations-section.d.ts +4 -4
  228. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-relations-section.d.ts.map +1 -0
  229. package/dist/types/src/cms/client/interfaces/components/resources/{tag → post/tag}/tag-table.d.ts +1 -1
  230. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-table.d.ts.map +1 -0
  231. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/index.d.ts.map +1 -0
  232. package/dist/types/src/cms/client/interfaces/components/resources/{topic → post/topic}/topic-card.d.ts +2 -2
  233. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-card.d.ts.map +1 -0
  234. package/dist/types/src/cms/client/interfaces/components/resources/{topic → post/topic}/topic-table.d.ts +2 -2
  235. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-table.d.ts.map +1 -0
  236. package/dist/types/src/cms/client/interfaces/components/ui/blocks/page-header/presets/index.d.ts.map +1 -1
  237. package/dist/types/src/cms/client/interfaces/components/ui/blocks/page-header/types.d.ts +1 -0
  238. package/dist/types/src/cms/client/interfaces/components/ui/blocks/page-header/types.d.ts.map +1 -1
  239. package/dist/types/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal.d.ts +2 -1
  240. package/dist/types/src/cms/client/interfaces/components/ui/features/pick-modal/pick-modal.d.ts.map +1 -1
  241. package/dist/types/src/cms/client/interfaces/components/ui/form/index-field.d.ts.map +1 -1
  242. package/dist/types/src/cms/client/interfaces/components/ui/i18n/display/i18n-array-display.d.ts.map +1 -1
  243. package/dist/types/src/cms/client/interfaces/components/ui/i18n/display/i18n-display.d.ts.map +1 -1
  244. package/dist/types/src/cms/client/interfaces/components/ui/i18n/display/i18n-object-array-display.d.ts.map +1 -1
  245. package/dist/types/src/cms/client/interfaces/components/ui/i18n/inputs/i18n-json-input.d.ts.map +1 -1
  246. package/dist/types/src/cms/client/interfaces/components/ui/inputs/editor/base/built-in-plugins.d.ts.map +1 -1
  247. package/dist/types/src/cms/client/interfaces/components/ui/layouts/content-container.d.ts +1 -1
  248. package/dist/types/src/cms/client/interfaces/components/ui/layouts/content-container.d.ts.map +1 -1
  249. package/dist/types/src/cms/client/interfaces/components/ui/layouts/sidebar/nav-main.d.ts +1 -1
  250. package/dist/types/src/cms/client/interfaces/components/ui/layouts/sidebar/nav-main.d.ts.map +1 -1
  251. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/edit/page.d.ts +6 -2
  252. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/edit/page.d.ts.map +1 -1
  253. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/page.d.ts +6 -3
  254. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/page.d.ts.map +1 -1
  255. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/create/page.d.ts +6 -2
  256. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/create/page.d.ts.map +1 -1
  257. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/page.d.ts +3 -3
  258. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/page.d.ts.map +1 -1
  259. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/edit/page.d.ts +6 -2
  260. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/edit/page.d.ts.map +1 -1
  261. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/page.d.ts +7 -3
  262. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/page.d.ts.map +1 -1
  263. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/create/page.d.ts +6 -2
  264. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/create/page.d.ts.map +1 -1
  265. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/edit/page.d.ts +24 -0
  266. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/edit/page.d.ts.map +1 -0
  267. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/page.d.ts +27 -0
  268. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/page.d.ts.map +1 -0
  269. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/create/page.d.ts +24 -0
  270. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/create/page.d.ts.map +1 -0
  271. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/index.d.ts +4 -0
  272. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/index.d.ts.map +1 -0
  273. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/page.d.ts +3 -1
  274. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/page.d.ts.map +1 -1
  275. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/edit/page.d.ts +20 -0
  276. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/edit/page.d.ts.map +1 -0
  277. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/page.d.ts +23 -0
  278. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/page.d.ts.map +1 -0
  279. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/create/page.d.ts +16 -0
  280. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/create/page.d.ts.map +1 -0
  281. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/index.d.ts.map +1 -0
  282. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/page.d.ts +14 -0
  283. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/page.d.ts.map +1 -0
  284. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/edit/page.d.ts +20 -0
  285. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/edit/page.d.ts.map +1 -0
  286. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/page.d.ts +20 -0
  287. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/page.d.ts.map +1 -0
  288. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/{topic → content-management/topic}/index.d.ts +0 -1
  289. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/index.d.ts.map +1 -0
  290. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.d.ts +14 -0
  291. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.d.ts.map +1 -0
  292. package/dist/types/src/cms/client/interfaces/pages/index.d.ts +3 -2
  293. package/dist/types/src/cms/client/interfaces/pages/index.d.ts.map +1 -1
  294. package/dist/types/src/constants/paths/cms-paths.d.ts +9 -6
  295. package/dist/types/src/constants/paths/cms-paths.d.ts.map +1 -1
  296. package/dist/types/src/core/domain/index.d.ts +1 -1
  297. package/dist/types/src/core/domain/index.d.ts.map +1 -1
  298. package/dist/types/src/core/domain/static/index.d.ts +1 -1
  299. package/dist/types/src/core/domain/static/index.d.ts.map +1 -1
  300. package/dist/types/src/core/domain/static/post.d.ts +1 -1
  301. package/dist/types/src/core/domain/static/post.d.ts.map +1 -1
  302. package/dist/types/src/core/domain/static/topics.d.ts +36 -3
  303. package/dist/types/src/core/domain/static/topics.d.ts.map +1 -1
  304. package/dist/types/src/core/server/infrastructure/database/index.d.ts +1 -1
  305. package/dist/types/src/core/server/infrastructure/database/index.d.ts.map +1 -1
  306. package/dist/types/src/core/server/infrastructure/database/post/command/index.d.ts +2 -0
  307. package/dist/types/src/core/server/infrastructure/database/post/command/index.d.ts.map +1 -1
  308. package/dist/types/src/core/server/infrastructure/database/post/command/post-command-repository.d.ts +2 -2
  309. package/dist/types/src/core/server/infrastructure/database/post/command/post-command-repository.d.ts.map +1 -1
  310. package/dist/types/src/core/server/infrastructure/database/post/command/post-create-data.d.ts +160 -0
  311. package/dist/types/src/core/server/infrastructure/database/post/command/post-create-data.d.ts.map +1 -0
  312. package/dist/types/src/core/server/infrastructure/database/post/command/post-update-data.d.ts +207 -0
  313. package/dist/types/src/core/server/infrastructure/database/post/command/post-update-data.d.ts.map +1 -0
  314. package/dist/types/src/core/server/infrastructure/database/post/index.d.ts +1 -1
  315. package/dist/types/src/core/server/infrastructure/database/post/index.d.ts.map +1 -1
  316. package/dist/types/src/core/server/infrastructure/i18n/index.d.ts +1 -0
  317. package/dist/types/src/core/server/infrastructure/i18n/index.d.ts.map +1 -1
  318. package/dist/types/src/core/server/infrastructure/i18n/messages/index.d.ts +105 -0
  319. package/dist/types/src/core/server/infrastructure/i18n/messages/index.d.ts.map +1 -0
  320. package/dist/types/src/core/server/infrastructure/index.d.ts +1 -1
  321. package/dist/types/src/core/server/infrastructure/index.d.ts.map +1 -1
  322. package/dist/types/src/shared/form/types.d.ts +2 -2
  323. package/dist/types/src/shared/form/types.d.ts.map +1 -1
  324. package/dist/types/src/web/server/applications/index.d.ts +1 -1
  325. package/dist/types/src/web/server/applications/index.d.ts.map +1 -1
  326. package/dist/types/src/web/server/applications/sitemap/get-post-items.d.ts +3 -1
  327. package/dist/types/src/web/server/applications/sitemap/get-post-items.d.ts.map +1 -1
  328. package/dist/types/src/web/server/applications/sitemap/get-subcategory-items.d.ts +18 -0
  329. package/dist/types/src/web/server/applications/sitemap/get-subcategory-items.d.ts.map +1 -0
  330. package/dist/types/src/web/server/applications/sitemap/index.d.ts +1 -0
  331. package/dist/types/src/web/server/applications/sitemap/index.d.ts.map +1 -1
  332. package/dist/types/src/web/server/index.d.ts +1 -0
  333. package/dist/types/src/web/server/index.d.ts.map +1 -1
  334. package/dist/types/src/web/server/interfaces/create-web-interfaces.d.ts.map +1 -1
  335. package/dist/types/src/web/server/interfaces/loaders/index.d.ts +2 -0
  336. package/dist/types/src/web/server/interfaces/loaders/index.d.ts.map +1 -1
  337. package/dist/types/src/web/server/interfaces/loaders/load-categories.d.ts.map +1 -1
  338. package/dist/types/src/web/server/interfaces/loaders/load-category.d.ts.map +1 -1
  339. package/dist/types/src/web/server/interfaces/loaders/load-post.d.ts.map +1 -1
  340. package/dist/types/src/web/server/interfaces/loaders/load-posts.d.ts.map +1 -1
  341. package/dist/types/src/web/server/interfaces/loaders/load-subcategories.d.ts +10 -0
  342. package/dist/types/src/web/server/interfaces/loaders/load-subcategories.d.ts.map +1 -0
  343. package/dist/types/src/web/server/interfaces/loaders/load-subcategory.d.ts +8 -0
  344. package/dist/types/src/web/server/interfaces/loaders/load-subcategory.d.ts.map +1 -0
  345. package/dist/types/src/web/server/interfaces/types.d.ts +3 -1
  346. package/dist/types/src/web/server/interfaces/types.d.ts.map +1 -1
  347. package/package.json +2 -2
  348. package/dist/src/cms/client/interfaces/components/resources/category/category-relations-section.js +0 -82
  349. package/dist/src/cms/client/interfaces/pages/dashboard/content/tag/page.js +0 -81
  350. package/dist/src/cms/client/interfaces/pages/dashboard/content/topic/page.js +0 -79
  351. package/dist/types/src/cms/client/interfaces/components/resources/category/category-card.d.ts +0 -3
  352. package/dist/types/src/cms/client/interfaces/components/resources/category/category-card.d.ts.map +0 -1
  353. package/dist/types/src/cms/client/interfaces/components/resources/category/category-relations-section.d.ts.map +0 -1
  354. package/dist/types/src/cms/client/interfaces/components/resources/category/category-table.d.ts +0 -3
  355. package/dist/types/src/cms/client/interfaces/components/resources/category/category-table.d.ts.map +0 -1
  356. package/dist/types/src/cms/client/interfaces/components/resources/category/index.d.ts.map +0 -1
  357. package/dist/types/src/cms/client/interfaces/components/resources/tag/index.d.ts.map +0 -1
  358. package/dist/types/src/cms/client/interfaces/components/resources/tag/tag-card.d.ts.map +0 -1
  359. package/dist/types/src/cms/client/interfaces/components/resources/tag/tag-relations-section.d.ts.map +0 -1
  360. package/dist/types/src/cms/client/interfaces/components/resources/tag/tag-table.d.ts.map +0 -1
  361. package/dist/types/src/cms/client/interfaces/components/resources/topic/index.d.ts.map +0 -1
  362. package/dist/types/src/cms/client/interfaces/components/resources/topic/topic-card.d.ts.map +0 -1
  363. package/dist/types/src/cms/client/interfaces/components/resources/topic/topic-table.d.ts.map +0 -1
  364. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/[id]/edit/page.d.ts +0 -15
  365. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/[id]/edit/page.d.ts.map +0 -1
  366. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/[id]/page.d.ts +0 -17
  367. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/[id]/page.d.ts.map +0 -1
  368. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/create/page.d.ts +0 -11
  369. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/create/page.d.ts.map +0 -1
  370. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/index.d.ts.map +0 -1
  371. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/page.d.ts +0 -8
  372. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/tag/page.d.ts.map +0 -1
  373. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/[id]/edit/page.d.ts +0 -15
  374. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/[id]/edit/page.d.ts.map +0 -1
  375. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/[id]/page.d.ts +0 -17
  376. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/[id]/page.d.ts.map +0 -1
  377. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/create/page.d.ts +0 -11
  378. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/create/page.d.ts.map +0 -1
  379. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/index.d.ts.map +0 -1
  380. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/page.d.ts +0 -12
  381. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/topic/page.d.ts.map +0 -1
  382. package/dist/types/src/core/domain/translation.d.ts +0 -7
  383. package/dist/types/src/core/domain/translation.d.ts.map +0 -1
  384. /package/dist/types/src/cms/client/interfaces/components/resources/{category → post/category}/index.d.ts +0 -0
  385. /package/dist/types/src/cms/client/interfaces/components/resources/{tag → post/tag}/index.d.ts +0 -0
  386. /package/dist/types/src/cms/client/interfaces/components/resources/{topic → post/topic}/index.d.ts +0 -0
  387. /package/dist/types/src/cms/client/interfaces/pages/dashboard/content/{tag → content-management/tag}/index.d.ts +0 -0
@@ -19,6 +19,7 @@ import 'zod';
19
19
  import 'sonner';
20
20
  import { useQuery } from '../../../../../../../../../../../core/client/infrastructure/react-query/use-query.js';
21
21
  import { getControlMeta } from '../../../../../../../../../applications/form/get-control-meta.js';
22
+ import '../../../../../../../../../../../core/domain/resources/admin/constants.js';
22
23
  import { PageHeader } from '../../../../../../../../components/ui/blocks/page-header/page-header.js';
23
24
  import '@radix-ui/react-avatar';
24
25
  import '../../../../../../../../components/shadcn/badge.js';
@@ -39,16 +40,19 @@ import 'next/link';
39
40
  import { Badge } from '../../../../../../../../components/ui/display/badge.js';
40
41
 
41
42
  function createCategoryEditPage({
42
- topics: staticTopics,
43
43
  postFindAction,
44
44
  postFindFullAction,
45
45
  postFindManyAction,
46
- renderPostEditContent
46
+ renderPostEditContent,
47
+ PostEditContent,
48
+ allowField
47
49
  }) {
48
50
  return function CategoryEditPage() {
49
51
  const { t, locale } = useTranslator();
50
52
  const { id, topicSlug } = useParams();
51
- const categoryType = staticTopics[topicSlug]?.categoryType;
53
+ const allowFieldInTopic = (params) => allowField?.({ ...params, topicSlug: params.topicSlug ?? topicSlug }) ?? false;
54
+ const categoryType = POST_TYPES.CATEGORY;
55
+ const subcategoryType = POST_TYPES.SUBCATEGORY;
52
56
  const { data: topic, isFetching: isFetchingTopic } = useQuery(
53
57
  () => postFindAction({ type: POST_TYPES.TOPIC, slug: topicSlug }),
54
58
  ["postFindAction", POST_TYPES.TOPIC, topicSlug],
@@ -83,9 +87,21 @@ function createCategoryEditPage({
83
87
  }
84
88
  }
85
89
  ),
86
- renderPostEditContent({
90
+ PostEditContent && allowField && /* @__PURE__ */ jsx(
91
+ PostEditContent,
92
+ {
93
+ post: category,
94
+ postType: categoryType,
95
+ controlMeta,
96
+ isFetching: isFetchingTopic || isFetching || isFetchingControlMeta,
97
+ isNotFound,
98
+ allowField: allowFieldInTopic
99
+ }
100
+ ),
101
+ renderPostEditContent?.({
87
102
  category,
88
103
  categoryType,
104
+ subcategoryType,
89
105
  controlMeta,
90
106
  isFetching: isFetchingTopic || isFetching || isFetchingControlMeta,
91
107
  isNotFound
@@ -36,9 +36,9 @@ import 'next-themes';
36
36
  import 'sonner';
37
37
  import '@radix-ui/react-tabs';
38
38
  import '@radix-ui/react-tooltip';
39
+ import '../../../../../../../../../../core/domain/resources/admin/constants.js';
39
40
  import 'next/link';
40
41
  import { Badge } from '../../../../../../../components/ui/display/badge.js';
41
- import '../../../../../../../../../../core/domain/resources/admin/constants.js';
42
42
  import { ExternalLink } from '../../../../../../../components/ui/features/external-link.js';
43
43
  import 'next/image';
44
44
 
@@ -50,13 +50,20 @@ function createCategoryShowPage({
50
50
  postFindFullAction,
51
51
  postDeleteAction,
52
52
  SeoMetadataDialog,
53
- renderPostShowContent
53
+ renderPostShowContent,
54
+ PostShowContent,
55
+ allowField,
56
+ CategoryRelationsSection
54
57
  }) {
55
58
  return function CategoryShowPage() {
56
59
  const { t, locale } = useTranslator();
57
60
  const { id, topicSlug } = useParams();
58
61
  const router = useRouter();
59
- const postType = staticTopics[topicSlug]?.postType;
62
+ const postType = POST_TYPES.POST;
63
+ const isFieldAllowed = (type, field, fieldRuleKey) => allowField?.({ topicSlug, type, field, fieldRuleKey }) ?? false;
64
+ const subcategoryType = staticTopics[topicSlug]?.roles.includes(
65
+ POST_TYPES.SUBCATEGORY
66
+ ) ? POST_TYPES.SUBCATEGORY : void 0;
60
67
  const { data: topic, isFetching: isFetchingTopic } = useQuery(
61
68
  () => postFindAction({ type: POST_TYPES.TOPIC, slug: topicSlug }),
62
69
  ["postFindAction", POST_TYPES.TOPIC, topicSlug],
@@ -130,7 +137,39 @@ function createCategoryShowPage({
130
137
  isLocked: category?.isLocked
131
138
  }
132
139
  ),
133
- renderPostShowContent({
140
+ PostShowContent && allowField && /* @__PURE__ */ jsx(
141
+ PostShowContent,
142
+ {
143
+ post: category,
144
+ isFetching,
145
+ isNotFound,
146
+ allowField,
147
+ children: category && CategoryRelationsSection && /* @__PURE__ */ jsx(
148
+ CategoryRelationsSection,
149
+ {
150
+ category,
151
+ headerProps: { children: t("resources.post.text") },
152
+ usableFields: [
153
+ ...isFieldAllowed(subcategoryType || postType, "isActive") ? ["isActive"] : [],
154
+ ...isFieldAllowed(
155
+ subcategoryType || postType,
156
+ "isIndexActive"
157
+ ) ? ["isIndexActive"] : [],
158
+ ...isFieldAllowed(
159
+ subcategoryType || postType,
160
+ "isSlugActive"
161
+ ) ? ["isSlugActive"] : [],
162
+ ...isFieldAllowed(subcategoryType || postType, "isFeatured") ? ["isFeatured"] : [],
163
+ ...isFieldAllowed(
164
+ subcategoryType || postType,
165
+ "isShownOnHome"
166
+ ) ? ["isShownOnHome"] : []
167
+ ]
168
+ }
169
+ )
170
+ }
171
+ ),
172
+ renderPostShowContent?.({
134
173
  category,
135
174
  postType,
136
175
  isFetching,
@@ -20,8 +20,9 @@ import 'zod';
20
20
  import 'sonner';
21
21
  import { useQuery } from '../../../../../../../../../../core/client/infrastructure/react-query/use-query.js';
22
22
  import { getControlMeta } from '../../../../../../../../applications/form/get-control-meta.js';
23
- import { PageHeader } from '../../../../../../../components/ui/blocks/page-header/page-header.js';
24
23
  import 'lucide-react';
24
+ import '../../../../../../../../../../core/domain/resources/admin/constants.js';
25
+ import { PageHeader } from '../../../../../../../components/ui/blocks/page-header/page-header.js';
25
26
  import '@radix-ui/react-avatar';
26
27
  import '../../../../../../../components/shadcn/badge.js';
27
28
  import '../../../../../../../components/shadcn/button.js';
@@ -41,15 +42,18 @@ import 'next/link';
41
42
  import { Badge } from '../../../../../../../components/ui/display/badge.js';
42
43
 
43
44
  function createCategoryCreatePage({
44
- topics: staticTopics,
45
45
  postFindAction,
46
46
  postFindManyAction,
47
- renderPostCreateContent
47
+ renderPostCreateContent,
48
+ PostCreateContent,
49
+ allowField
48
50
  }) {
49
51
  return function CategoryCreatePage() {
50
52
  const { t, locale } = useTranslator();
51
53
  const { topicSlug } = useParams();
52
- const categoryType = staticTopics[topicSlug]?.categoryType;
54
+ const allowFieldInTopic = (params) => allowField?.({ ...params, topicSlug: params.topicSlug ?? topicSlug }) ?? false;
55
+ const categoryType = POST_TYPES.CATEGORY;
56
+ const subcategoryType = POST_TYPES.SUBCATEGORY;
53
57
  const returnHref = joinUrl(
54
58
  CMS_PATHS.content["content-management"].pathname,
55
59
  topicSlug
@@ -85,9 +89,21 @@ function createCategoryCreatePage({
85
89
  isNotFound
86
90
  }
87
91
  ),
88
- renderPostCreateContent({
92
+ PostCreateContent && allowField && /* @__PURE__ */ jsx(
93
+ PostCreateContent,
94
+ {
95
+ topic,
96
+ postType: categoryType,
97
+ controlMeta,
98
+ isFetching: isFetchingTopic || isFetchingControlMeta,
99
+ allowField: allowFieldInTopic,
100
+ cancelButtonHref: returnHref
101
+ }
102
+ ),
103
+ renderPostCreateContent?.({
89
104
  topic,
90
105
  categoryType,
106
+ subcategoryType,
91
107
  controlMeta,
92
108
  isFetching: isFetchingTopic || isFetchingControlMeta,
93
109
  cancelButtonHref: returnHref
@@ -21,6 +21,7 @@ import 'zod';
21
21
  import 'sonner';
22
22
  import { useQuery } from '../../../../../../../../core/client/infrastructure/react-query/use-query.js';
23
23
  import '../../../../../../../../core/domain/resources/admin/constants.js';
24
+ import { isContentTopic, hasTopicRole } from '../../../../../../../../core/domain/static/topics.js';
24
25
  import 'next/link';
25
26
  import '@radix-ui/react-avatar';
26
27
  import '../../../../../components/shadcn/badge.js';
@@ -42,8 +43,8 @@ import { PageHeader } from '../../../../../components/ui/blocks/page-header/page
42
43
  import { Accordion } from '../../../../../components/ui/features/accordion/accordion.js';
43
44
  import { ExternalLink } from '../../../../../components/ui/features/external-link.js';
44
45
  import 'next/image';
45
- import { CategoryCard } from '../../../../../components/resources/category/category-card.js';
46
- import { CategoryTable } from '../../../../../components/resources/category/category-table.js';
46
+ import { CategoryCard } from '../../../../../components/resources/post/category/category-card.js';
47
+ import { CategoryTable } from '../../../../../components/resources/post/category/category-table.js';
47
48
  import 'intor/next';
48
49
  import { ContentContainer } from '../../../../../components/ui/layouts/content-container.js';
49
50
 
@@ -55,11 +56,22 @@ function createTopicScopePage({
55
56
  PostList: PostListBase,
56
57
  allowField
57
58
  }) {
58
- return function TopicPage() {
59
+ return function ContentTopicScopePage() {
59
60
  const { t, locale } = useTranslator();
60
61
  const { topicSlug } = useParams();
61
- const postType = staticTopics[topicSlug]?.postType;
62
- const categoryType = staticTopics[topicSlug]?.categoryType;
62
+ const isFieldAllowed = (type, field, fieldRuleKey) => allowField({ topicSlug, type, field, fieldRuleKey });
63
+ const isContentTopicScope = isContentTopic(staticTopics, topicSlug);
64
+ const hasPost = isContentTopicScope;
65
+ const hasCategory = hasTopicRole(
66
+ staticTopics,
67
+ topicSlug,
68
+ POST_TYPES.CATEGORY
69
+ );
70
+ const hasSubcategory = hasTopicRole(
71
+ staticTopics,
72
+ topicSlug,
73
+ POST_TYPES.SUBCATEGORY
74
+ );
63
75
  const {
64
76
  data: topic,
65
77
  isFetching,
@@ -71,26 +83,25 @@ function createTopicScopePage({
71
83
  );
72
84
  const topicT = findTranslation(topic?.translations, locale);
73
85
  const [categoryStates, setCategoryStates] = useState({});
86
+ const [subcategoryStates, setSubcategoryStates] = useState({});
74
87
  const [postStates, setPostStates] = useState(
75
88
  {}
76
89
  );
77
- const PostList = /* @__PURE__ */ jsx(
90
+ const getUsableFields = (type) => [
91
+ ...isFieldAllowed(type, "isActive") ? ["isActive"] : [],
92
+ ...isFieldAllowed(type, "isIndexActive") ? ["isIndexActive"] : [],
93
+ ...isFieldAllowed(type, "isSlugActive") ? ["isSlugActive"] : [],
94
+ ...isFieldAllowed(type, "isFeatured") ? ["isFeatured"] : [],
95
+ ...isFieldAllowed(type, "isShownOnHome") ? ["isShownOnHome"] : []
96
+ ];
97
+ const postList = /* @__PURE__ */ jsx(
78
98
  PostListBase,
79
99
  {
80
- usableFields: [
81
- ...allowField(postType, "isActive") ? ["isActive"] : [],
82
- ...allowField(postType, "isIndexActive") ? ["isIndexActive"] : [],
83
- ...allowField(postType, "isSlugActive") ? ["isSlugActive"] : [],
84
- ...allowField(postType, "isFeatured") ? ["isFeatured"] : [],
85
- ...allowField(postType, "isShownOnHome") ? ["isShownOnHome"] : [],
86
- // TODO: remove (currently only for kowkun)
87
- ...allowField(postType, "state3") ? ["state3"] : [],
88
- ...allowField(postType, "state4") ? ["state4"] : []
89
- ],
90
- type: postType,
100
+ usableFields: getUsableFields(POST_TYPES.POST),
101
+ type: POST_TYPES.POST,
91
102
  topicId: topic?.id ?? DO_NOT_FETCH_KEY,
92
103
  setListItemStates: setPostStates,
93
- localKey: `post-${postType}`
104
+ localKey: `post-${POST_TYPES.POST}`
94
105
  }
95
106
  );
96
107
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -104,9 +115,12 @@ function createTopicScopePage({
104
115
  title: !isFetching ? topicT.title : /* @__PURE__ */ jsx(Spinner, {})
105
116
  },
106
117
  settingButtonProps: {
107
- href: joinUrl(CMS_PATHS.content.topic.pathname, topic?.id)
118
+ href: joinUrl(
119
+ CMS_PATHS.content["content-management"].topic.pathname,
120
+ topic?.id
121
+ )
108
122
  },
109
- createCategoryButtonProps: categoryType ? {
123
+ createCategoryButtonProps: hasCategory ? {
110
124
  href: joinUrl(
111
125
  CMS_PATHS.content["content-management"].category.pathname(
112
126
  topicSlug
@@ -115,20 +129,29 @@ function createTopicScopePage({
115
129
  ),
116
130
  children: t("ui.create.text") + t("resources.category.text")
117
131
  } : void 0,
118
- createButtonProps: {
132
+ createSubcategoryButtonProps: hasSubcategory ? {
133
+ href: joinUrl(
134
+ CMS_PATHS.content["content-management"].subcategory.pathname(topicSlug),
135
+ "create"
136
+ ),
137
+ children: t("ui.create.text") + t("resources.subcategory.text")
138
+ } : void 0,
139
+ createButtonProps: hasPost ? {
119
140
  icon: File,
120
141
  href: joinUrl(
121
- CMS_PATHS.content["content-management"].post.pathname(topicSlug),
142
+ CMS_PATHS.content["content-management"].post.pathname(
143
+ topicSlug
144
+ ),
122
145
  "create"
123
146
  ),
124
147
  children: t("ui.create.text") + t("resources.post.text")
125
- },
148
+ } : void 0,
126
149
  rightChildren: /* @__PURE__ */ jsx(ExternalLink, { href: externalHref?.(topicSlug) ?? `/${topicSlug}` }),
127
150
  isDisabled: isFetching,
128
- isNotFound
151
+ isNotFound: isNotFound || !isContentTopicScope
129
152
  }
130
153
  ),
131
- /* @__PURE__ */ jsx(ContentContainer, { isFixHeight: !categoryType, children: categoryType ? /* @__PURE__ */ jsxs(Fragment, { children: [
154
+ isContentTopicScope && /* @__PURE__ */ jsx(ContentContainer, { isFixHeight: !hasCategory, children: hasCategory ? /* @__PURE__ */ jsxs(Fragment, { children: [
132
155
  /* @__PURE__ */ jsx(
133
156
  Accordion,
134
157
  {
@@ -145,19 +168,52 @@ function createTopicScopePage({
145
168
  children: /* @__PURE__ */ jsx(
146
169
  PostListBase,
147
170
  {
148
- usableFields: [
149
- ...allowField(categoryType, "isActive") ? ["isActive"] : [],
150
- ...allowField(categoryType, "isIndexActive") ? ["isIndexActive"] : [],
151
- ...allowField(categoryType, "isSlugActive") ? ["isSlugActive"] : [],
152
- ...allowField(categoryType, "isFeatured") ? ["isFeatured"] : [],
153
- ...allowField(categoryType, "isShownOnHome") ? ["isShownOnHome"] : []
154
- ],
155
- type: categoryType,
171
+ usableFields: getUsableFields(POST_TYPES.CATEGORY),
172
+ type: POST_TYPES.CATEGORY,
156
173
  topicId: topic?.id ?? DO_NOT_FETCH_KEY,
157
174
  setListItemStates: setCategoryStates,
158
- Card: CategoryCard,
159
- Table: CategoryTable,
160
- localKey: `category-${categoryType}`
175
+ Card: (props) => /* @__PURE__ */ jsx(
176
+ CategoryCard,
177
+ {
178
+ ...props,
179
+ hasSubcategory
180
+ }
181
+ ),
182
+ Table: (props) => /* @__PURE__ */ jsx(
183
+ CategoryTable,
184
+ {
185
+ ...props,
186
+ hasSubcategory
187
+ }
188
+ ),
189
+ localKey: `category-${POST_TYPES.CATEGORY}`
190
+ }
191
+ )
192
+ }
193
+ ),
194
+ hasSubcategory && /* @__PURE__ */ jsx(
195
+ Accordion,
196
+ {
197
+ accordionHeaderProps: {
198
+ count: subcategoryStates.count,
199
+ children: /* @__PURE__ */ jsxs("span", { className: "flex-center gap-2", children: [
200
+ /* @__PURE__ */ jsx(Notebook, { className: "size-4" }),
201
+ t("resources.subcategory.text")
202
+ ] })
203
+ },
204
+ hasBorder: true,
205
+ initialOpen: true,
206
+ deps: [subcategoryStates.isFetching],
207
+ children: /* @__PURE__ */ jsx(
208
+ PostListBase,
209
+ {
210
+ usableFields: getUsableFields(POST_TYPES.SUBCATEGORY),
211
+ type: POST_TYPES.SUBCATEGORY,
212
+ topicId: topic?.id ?? DO_NOT_FETCH_KEY,
213
+ setListItemStates: setSubcategoryStates,
214
+ Card: (props) => /* @__PURE__ */ jsx(CategoryCard, { ...props, isSubcategory: true }),
215
+ Table: (props) => /* @__PURE__ */ jsx(CategoryTable, { ...props, isSubcategory: true }),
216
+ localKey: `subcategory-${POST_TYPES.SUBCATEGORY}`
161
217
  }
162
218
  )
163
219
  }
@@ -174,11 +230,13 @@ function createTopicScopePage({
174
230
  },
175
231
  hasBorder: true,
176
232
  initialOpen: true,
177
- deps: [categoryStates.isFetching],
178
- children: PostList
233
+ deps: [
234
+ categoryStates.isFetching || subcategoryStates.isFetching
235
+ ],
236
+ children: postList
179
237
  }
180
238
  )
181
- ] }) : PostList })
239
+ ] }) : postList })
182
240
  ] });
183
241
  };
184
242
  }
@@ -20,8 +20,9 @@ import 'zod';
20
20
  import 'sonner';
21
21
  import { useQuery } from '../../../../../../../../../../../core/client/infrastructure/react-query/use-query.js';
22
22
  import { getControlMeta } from '../../../../../../../../../applications/form/get-control-meta.js';
23
- import { PageHeader } from '../../../../../../../../components/ui/blocks/page-header/page-header.js';
24
23
  import 'lucide-react';
24
+ import '../../../../../../../../../../../core/domain/resources/admin/constants.js';
25
+ import { PageHeader } from '../../../../../../../../components/ui/blocks/page-header/page-header.js';
25
26
  import '@radix-ui/react-avatar';
26
27
  import '../../../../../../../../components/shadcn/badge.js';
27
28
  import '../../../../../../../../components/shadcn/button.js';
@@ -45,13 +46,20 @@ function createPostEditPage({
45
46
  postFindAction,
46
47
  postFindFullAction,
47
48
  postFindManyAction,
48
- renderPostEditContent
49
+ renderPostEditContent,
50
+ PostEditContent,
51
+ allowField
49
52
  }) {
50
53
  return function PostEditPage() {
51
54
  const { t, locale } = useTranslator();
52
55
  const { id, topicSlug } = useParams();
53
- const postType = staticTopics[topicSlug]?.postType;
54
- const categoryType = staticTopics[topicSlug]?.categoryType;
56
+ const allowFieldInTopic = (params) => allowField?.({ ...params, topicSlug: params.topicSlug ?? topicSlug }) ?? false;
57
+ const postType = POST_TYPES.POST;
58
+ const roles = staticTopics[topicSlug]?.roles ?? [];
59
+ const hasCategory = roles.includes(POST_TYPES.CATEGORY);
60
+ const hasSubcategory = roles.includes(POST_TYPES.SUBCATEGORY);
61
+ const categoryType = POST_TYPES.CATEGORY;
62
+ const subcategoryType = POST_TYPES.SUBCATEGORY;
55
63
  const { data: topic, isFetching: isFetchingTopic } = useQuery(
56
64
  () => postFindAction({ type: POST_TYPES.TOPIC, slug: topicSlug }),
57
65
  ["postFindAction", POST_TYPES.TOPIC, topicSlug],
@@ -91,10 +99,31 @@ function createPostEditPage({
91
99
  }
92
100
  }
93
101
  ),
94
- renderPostEditContent({
102
+ PostEditContent && allowField && /* @__PURE__ */ jsx(
103
+ PostEditContent,
104
+ {
105
+ post,
106
+ postType,
107
+ ...hasSubcategory ? {
108
+ parentType: subcategoryType,
109
+ isSubcategoryParent: true,
110
+ parentLabelKey: "resources.subcategory.text"
111
+ } : hasCategory ? {
112
+ parentType: categoryType,
113
+ isSubcategoryParent: false,
114
+ parentLabelKey: "resources.category.text"
115
+ } : {},
116
+ controlMeta,
117
+ isFetching: isFetchingTopic || isFetching || isFetchingControlMeta,
118
+ isNotFound,
119
+ allowField: allowFieldInTopic
120
+ }
121
+ ),
122
+ renderPostEditContent && renderPostEditContent({
95
123
  post,
96
124
  postType,
97
125
  categoryType,
126
+ subcategoryType,
98
127
  controlMeta,
99
128
  isFetching: isFetchingTopic || isFetching || isFetchingControlMeta,
100
129
  isNotFound
@@ -36,9 +36,9 @@ import 'next-themes';
36
36
  import 'sonner';
37
37
  import '@radix-ui/react-tabs';
38
38
  import '@radix-ui/react-tooltip';
39
+ import '../../../../../../../../../../core/domain/resources/admin/constants.js';
39
40
  import 'next/link';
40
41
  import { Badge } from '../../../../../../../components/ui/display/badge.js';
41
- import '../../../../../../../../../../core/domain/resources/admin/constants.js';
42
42
  import { ExternalLink } from '../../../../../../../components/ui/features/external-link.js';
43
43
  import 'next/image';
44
44
 
@@ -50,13 +50,20 @@ function createPostShowPage({
50
50
  postFindFullAction,
51
51
  postDeleteAction,
52
52
  SeoMetadataDialog,
53
- renderPostShowContent
53
+ renderPostShowContent,
54
+ PostShowContent,
55
+ allowField,
56
+ PostRelationsSection
54
57
  }) {
55
58
  return function PostShowPage() {
56
59
  const { t, locale } = useTranslator();
57
60
  const { id, topicSlug } = useParams();
58
61
  const router = useRouter();
59
- const postType = staticTopics[topicSlug]?.postType;
62
+ const postType = POST_TYPES.POST;
63
+ const isFieldAllowed = (type, field, fieldRuleKey) => allowField?.({ topicSlug, type, field, fieldRuleKey }) ?? false;
64
+ const subcategoryType = staticTopics[topicSlug]?.roles.includes(
65
+ POST_TYPES.SUBCATEGORY
66
+ ) ? POST_TYPES.SUBCATEGORY : void 0;
60
67
  const { data: topic, isFetching: isFetchingTopic } = useQuery(
61
68
  () => postFindAction({ type: POST_TYPES.TOPIC, slug: topicSlug }),
62
69
  ["postFindAction", POST_TYPES.TOPIC, topicSlug],
@@ -126,9 +133,33 @@ function createPostShowPage({
126
133
  isNotFound
127
134
  }
128
135
  ),
129
- renderPostShowContent({
136
+ PostShowContent && allowField && /* @__PURE__ */ jsx(
137
+ PostShowContent,
138
+ {
139
+ post,
140
+ isFetching,
141
+ isNotFound,
142
+ subcategoryType,
143
+ allowField,
144
+ children: isFieldAllowed(postType, "relatedPosts") && PostRelationsSection && /* @__PURE__ */ jsx(
145
+ PostRelationsSection,
146
+ {
147
+ post,
148
+ usableFields: [
149
+ ...isFieldAllowed(postType, "isActive") ? ["isActive"] : [],
150
+ ...isFieldAllowed(postType, "isIndexActive") ? ["isIndexActive"] : [],
151
+ ...isFieldAllowed(postType, "isSlugActive") ? ["isSlugActive"] : [],
152
+ ...isFieldAllowed(postType, "isFeatured") ? ["isFeatured"] : [],
153
+ ...isFieldAllowed(postType, "isShownOnHome") ? ["isShownOnHome"] : []
154
+ ]
155
+ }
156
+ )
157
+ }
158
+ ),
159
+ renderPostShowContent && renderPostShowContent({
130
160
  post,
131
161
  postType,
162
+ subcategoryType,
132
163
  isFetching,
133
164
  isNotFound
134
165
  })
@@ -20,8 +20,9 @@ import 'zod';
20
20
  import 'sonner';
21
21
  import { useQuery } from '../../../../../../../../../../core/client/infrastructure/react-query/use-query.js';
22
22
  import { getControlMeta } from '../../../../../../../../applications/form/get-control-meta.js';
23
- import { PageHeader } from '../../../../../../../components/ui/blocks/page-header/page-header.js';
24
23
  import 'lucide-react';
24
+ import '../../../../../../../../../../core/domain/resources/admin/constants.js';
25
+ import { PageHeader } from '../../../../../../../components/ui/blocks/page-header/page-header.js';
25
26
  import '@radix-ui/react-avatar';
26
27
  import '../../../../../../../components/shadcn/badge.js';
27
28
  import '../../../../../../../components/shadcn/button.js';
@@ -44,13 +45,20 @@ function createPostCreatePage({
44
45
  topics: staticTopics,
45
46
  postFindAction,
46
47
  postFindManyAction,
47
- renderPostCreateContent
48
+ renderPostCreateContent,
49
+ PostCreateContent,
50
+ allowField
48
51
  }) {
49
52
  return function PostCreatePage() {
50
53
  const { t, locale } = useTranslator();
51
54
  const { topicSlug } = useParams();
52
- const postType = staticTopics[topicSlug]?.postType;
53
- const categoryType = staticTopics[topicSlug]?.categoryType;
55
+ const allowFieldInTopic = (params) => allowField?.({ ...params, topicSlug: params.topicSlug ?? topicSlug }) ?? false;
56
+ const postType = POST_TYPES.POST;
57
+ const roles = staticTopics[topicSlug]?.roles ?? [];
58
+ const hasCategory = roles.includes(POST_TYPES.CATEGORY);
59
+ const hasSubcategory = roles.includes(POST_TYPES.SUBCATEGORY);
60
+ const categoryType = POST_TYPES.CATEGORY;
61
+ const subcategoryType = POST_TYPES.SUBCATEGORY;
54
62
  const returnHref = joinUrl(
55
63
  CMS_PATHS.content["content-management"].pathname,
56
64
  topicSlug
@@ -86,10 +94,31 @@ function createPostCreatePage({
86
94
  isNotFound
87
95
  }
88
96
  ),
89
- renderPostCreateContent({
97
+ PostCreateContent && allowField && /* @__PURE__ */ jsx(
98
+ PostCreateContent,
99
+ {
100
+ topic,
101
+ postType,
102
+ ...hasSubcategory ? {
103
+ parentType: subcategoryType,
104
+ isSubcategoryParent: true,
105
+ parentLabelKey: "resources.subcategory.text"
106
+ } : hasCategory ? {
107
+ parentType: categoryType,
108
+ isSubcategoryParent: false,
109
+ parentLabelKey: "resources.category.text"
110
+ } : {},
111
+ controlMeta,
112
+ isFetching: isFetchingTopic || isFetchingControlMeta,
113
+ allowField: allowFieldInTopic,
114
+ cancelButtonHref: returnHref
115
+ }
116
+ ),
117
+ renderPostCreateContent && renderPostCreateContent({
90
118
  topic,
91
119
  postType,
92
120
  categoryType,
121
+ subcategoryType,
93
122
  controlMeta,
94
123
  isFetching: isFetchingTopic || isFetchingControlMeta,
95
124
  cancelButtonHref: returnHref