@carlonicora/nextjs-jsonapi 6.32.2 → 6.33.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 (227) hide show
  1. package/dist/{BlockNoteEditor-KRNC6EAX.mjs → BlockNoteEditor-DCVT7YHE.mjs} +4 -4
  2. package/dist/{BlockNoteEditor-VXSVY6OY.js → BlockNoteEditor-ZVK5MD34.js} +24 -24
  3. package/dist/{BlockNoteEditor-VXSVY6OY.js.map → BlockNoteEditor-ZVK5MD34.js.map} +1 -1
  4. package/dist/{BlockNoteViewer-RQBYHBQL.js → BlockNoteViewer-2KPGZSTJ.js} +3 -3
  5. package/dist/{BlockNoteViewer-RQBYHBQL.js.map → BlockNoteViewer-2KPGZSTJ.js.map} +1 -1
  6. package/dist/{BlockNoteViewer-NVSR67X5.mjs → BlockNoteViewer-XDAC6AL7.mjs} +2 -2
  7. package/dist/billing/index.js +477 -469
  8. package/dist/billing/index.js.map +1 -1
  9. package/dist/billing/index.mjs +15 -7
  10. package/dist/billing/index.mjs.map +1 -1
  11. package/dist/{chunk-5H25LM2Z.js → chunk-576XHOYH.js} +5 -5
  12. package/dist/{chunk-5H25LM2Z.js.map → chunk-576XHOYH.js.map} +1 -1
  13. package/dist/{chunk-NPGX2GJD.js → chunk-CI64OTRX.js} +98 -75
  14. package/dist/chunk-CI64OTRX.js.map +1 -0
  15. package/dist/{chunk-AEBZ67JJ.mjs → chunk-ETU3AW2X.mjs} +2 -2
  16. package/dist/{chunk-4JVLLBRS.mjs → chunk-GUNH3THR.mjs} +24 -1
  17. package/dist/chunk-GUNH3THR.mjs.map +1 -0
  18. package/dist/{chunk-GPVLFNLB.js → chunk-KH4Y4FU4.js} +1411 -1187
  19. package/dist/chunk-KH4Y4FU4.js.map +1 -0
  20. package/dist/{chunk-PNCO3HMJ.js → chunk-TCAOU6NH.js} +3 -3
  21. package/dist/{chunk-PNCO3HMJ.js.map → chunk-TCAOU6NH.js.map} +1 -1
  22. package/dist/{chunk-4SXHRANW.mjs → chunk-V4NPMUZ2.mjs} +2627 -2403
  23. package/dist/chunk-V4NPMUZ2.mjs.map +1 -0
  24. package/dist/{chunk-AMQFKCAX.mjs → chunk-WPFEPIKP.mjs} +2 -2
  25. package/dist/client/index.js +6 -4
  26. package/dist/client/index.js.map +1 -1
  27. package/dist/client/index.mjs +5 -3
  28. package/dist/components/index.js +12 -4
  29. package/dist/components/index.js.map +1 -1
  30. package/dist/components/index.mjs +11 -3
  31. package/dist/components/tables/ContentListTable.d.ts +14 -0
  32. package/dist/components/tables/ContentListTable.d.ts.map +1 -1
  33. package/dist/components/tables/SortableHeader.d.ts +17 -0
  34. package/dist/components/tables/SortableHeader.d.ts.map +1 -0
  35. package/dist/components/tables/cells/cell.date.d.ts +4 -0
  36. package/dist/components/tables/cells/cell.date.d.ts.map +1 -1
  37. package/dist/components/tables/cells/cell.dateTime.d.ts +4 -0
  38. package/dist/components/tables/cells/cell.dateTime.d.ts.map +1 -1
  39. package/dist/components/tables/cells/cell.link.d.ts +4 -0
  40. package/dist/components/tables/cells/cell.link.d.ts.map +1 -1
  41. package/dist/components/tables/cells/cell.text.d.ts +4 -0
  42. package/dist/components/tables/cells/cell.text.d.ts.map +1 -1
  43. package/dist/components/tables/index.d.ts +2 -0
  44. package/dist/components/tables/index.d.ts.map +1 -1
  45. package/dist/components/tables/sorting.d.ts +24 -0
  46. package/dist/components/tables/sorting.d.ts.map +1 -0
  47. package/dist/contexts/index.js +4 -4
  48. package/dist/contexts/index.mjs +3 -3
  49. package/dist/core/index.js +2 -2
  50. package/dist/core/index.mjs +1 -1
  51. package/dist/email-automations/index.js +120 -115
  52. package/dist/email-automations/index.js.map +1 -1
  53. package/dist/email-automations/index.mjs +18 -13
  54. package/dist/email-automations/index.mjs.map +1 -1
  55. package/dist/features/analytics/index.js +114 -114
  56. package/dist/features/analytics/index.mjs +3 -3
  57. package/dist/features/analytics/server.js +4 -4
  58. package/dist/features/analytics/server.mjs +2 -2
  59. package/dist/features/billing/stripe-coupon/components/lists/CouponCodesList.d.ts.map +1 -1
  60. package/dist/features/billing/stripe-coupon/components/lists/CouponsList.d.ts.map +1 -1
  61. package/dist/features/billing/stripe-coupon/data/stripe-coupon-code.service.d.ts +2 -0
  62. package/dist/features/billing/stripe-coupon/data/stripe-coupon-code.service.d.ts.map +1 -1
  63. package/dist/features/billing/stripe-coupon/data/stripe-coupon.service.d.ts +1 -0
  64. package/dist/features/billing/stripe-coupon/data/stripe-coupon.service.d.ts.map +1 -1
  65. package/dist/features/billing/stripe-coupon/hooks/useStripeCouponCodeTableStructure.d.ts.map +1 -1
  66. package/dist/features/billing/stripe-coupon/hooks/useStripeCouponTableStructure.d.ts.map +1 -1
  67. package/dist/features/billing/stripe-price/components/lists/PricesList.d.ts.map +1 -1
  68. package/dist/features/billing/stripe-price/data/stripe-price.service.d.ts +2 -0
  69. package/dist/features/billing/stripe-price/data/stripe-price.service.d.ts.map +1 -1
  70. package/dist/features/billing/stripe-price/hooks/useStripePriceTableStructure.d.ts.map +1 -1
  71. package/dist/features/billing/stripe-product/components/lists/ProductsList.d.ts.map +1 -1
  72. package/dist/features/billing/stripe-product/data/stripe-product.service.d.ts +2 -0
  73. package/dist/features/billing/stripe-product/data/stripe-product.service.d.ts.map +1 -1
  74. package/dist/features/billing/stripe-product/hooks/useStripeProductTableStructure.d.ts.map +1 -1
  75. package/dist/features/blog/components/admin/BlogPostsList.d.ts.map +1 -1
  76. package/dist/features/blog/data/BlogPostService.d.ts +1 -0
  77. package/dist/features/blog/data/BlogPostService.d.ts.map +1 -1
  78. package/dist/features/blog/index.js +134 -132
  79. package/dist/features/blog/index.js.map +1 -1
  80. package/dist/features/blog/index.mjs +8 -6
  81. package/dist/features/blog/index.mjs.map +1 -1
  82. package/dist/features/blog/server.js +7 -7
  83. package/dist/features/blog/server.mjs +1 -1
  84. package/dist/features/company/components/lists/CompaniesList.d.ts.map +1 -1
  85. package/dist/features/company/data/company.service.d.ts +1 -0
  86. package/dist/features/company/data/company.service.d.ts.map +1 -1
  87. package/dist/features/content/data/content.service.d.ts +3 -0
  88. package/dist/features/content/data/content.service.d.ts.map +1 -1
  89. package/dist/features/email-automation/components/lists/EmailAutomationRecipientsList.d.ts.map +1 -1
  90. package/dist/features/email-automation/components/lists/EmailAutomationsList.d.ts.map +1 -1
  91. package/dist/features/email-automation/data/EmailAutomationService.d.ts +3 -0
  92. package/dist/features/email-automation/data/EmailAutomationService.d.ts.map +1 -1
  93. package/dist/features/email-automation/hooks/useEmailAutomationTableStructure.d.ts.map +1 -1
  94. package/dist/features/email-blast/components/lists/EmailBlastsList.d.ts.map +1 -1
  95. package/dist/features/email-blast/data/EmailBlastService.d.ts +1 -0
  96. package/dist/features/email-blast/data/EmailBlastService.d.ts.map +1 -1
  97. package/dist/features/email-blast/hooks/useEmailBlastTableStructure.d.ts.map +1 -1
  98. package/dist/features/help/index.js +37 -37
  99. package/dist/features/help/index.mjs +3 -3
  100. package/dist/features/how-to/components/lists/HowToList.d.ts.map +1 -1
  101. package/dist/features/how-to/data/HowToService.d.ts +2 -0
  102. package/dist/features/how-to/data/HowToService.d.ts.map +1 -1
  103. package/dist/features/notification/components/lists/NotificationsList.d.ts.map +1 -1
  104. package/dist/features/notification/data/notification.service.d.ts +2 -0
  105. package/dist/features/notification/data/notification.service.d.ts.map +1 -1
  106. package/dist/features/referral/components/containers/ReferralsAdminContainer.d.ts.map +1 -1
  107. package/dist/features/referral/data/ReferralAdminService.d.ts +1 -0
  108. package/dist/features/referral/data/ReferralAdminService.d.ts.map +1 -1
  109. package/dist/features/referral/hooks/useReferralAdminReferralTableStructure.d.ts.map +1 -1
  110. package/dist/features/role/components/lists/RolesList.d.ts.map +1 -1
  111. package/dist/features/role/components/lists/UserRolesList.d.ts.map +1 -1
  112. package/dist/features/role/data/role.service.d.ts +3 -0
  113. package/dist/features/role/data/role.service.d.ts.map +1 -1
  114. package/dist/features/tokenusage/index.js +114 -114
  115. package/dist/features/tokenusage/index.mjs +3 -3
  116. package/dist/features/user/components/lists/AdminUsersList.d.ts.map +1 -1
  117. package/dist/features/user/components/lists/CompanyUsersList.d.ts.map +1 -1
  118. package/dist/features/user/components/lists/PlatformUsersList.d.ts.map +1 -1
  119. package/dist/features/user/components/lists/RoleUsersList.d.ts.map +1 -1
  120. package/dist/features/user/components/lists/UsersListByContentIds.d.ts.map +1 -1
  121. package/dist/features/user/data/user.service.d.ts +11 -0
  122. package/dist/features/user/data/user.service.d.ts.map +1 -1
  123. package/dist/features/waitlist/components/lists/WaitlistList.d.ts.map +1 -1
  124. package/dist/features/waitlist/data/WaitlistService.d.ts +2 -0
  125. package/dist/features/waitlist/data/WaitlistService.d.ts.map +1 -1
  126. package/dist/hooks/index.d.ts +1 -0
  127. package/dist/hooks/index.d.ts.map +1 -1
  128. package/dist/hooks/useDataListRetriever.d.ts +13 -0
  129. package/dist/hooks/useDataListRetriever.d.ts.map +1 -1
  130. package/dist/hooks/useListSortParam.d.ts +23 -0
  131. package/dist/hooks/useListSortParam.d.ts.map +1 -0
  132. package/dist/index.js +3 -3
  133. package/dist/index.mjs +2 -2
  134. package/dist/server/index.js +3 -3
  135. package/dist/server/index.mjs +2 -2
  136. package/package.json +1 -1
  137. package/src/components/tables/ContentListTable.tsx +108 -10
  138. package/src/components/tables/SortableHeader.tsx +43 -0
  139. package/src/components/tables/__tests__/ContentListTable.rendering.spec.tsx +1 -0
  140. package/src/components/tables/__tests__/ContentListTable.sort.spec.tsx +273 -0
  141. package/src/components/tables/__tests__/sorting.spec.ts +61 -0
  142. package/src/components/tables/cells/cell.date.tsx +10 -2
  143. package/src/components/tables/cells/cell.dateTime.tsx +10 -2
  144. package/src/components/tables/cells/cell.link.tsx +6 -1
  145. package/src/components/tables/cells/cell.text.tsx +11 -2
  146. package/src/components/tables/index.ts +2 -0
  147. package/src/components/tables/sorting.ts +41 -0
  148. package/src/features/billing/stripe-coupon/components/lists/CouponCodesList.tsx +2 -0
  149. package/src/features/billing/stripe-coupon/components/lists/CouponsList.tsx +2 -0
  150. package/src/features/billing/stripe-coupon/data/stripe-coupon-code.service.ts +4 -0
  151. package/src/features/billing/stripe-coupon/data/stripe-coupon.service.ts +7 -1
  152. package/src/features/billing/stripe-coupon/hooks/__tests__/useStripeCouponCodeTableStructure.sort.spec.tsx +30 -0
  153. package/src/features/billing/stripe-coupon/hooks/__tests__/useStripeCouponTableStructure.sort.spec.tsx +33 -0
  154. package/src/features/billing/stripe-coupon/hooks/useStripeCouponCodeTableStructure.tsx +5 -4
  155. package/src/features/billing/stripe-coupon/hooks/useStripeCouponTableStructure.tsx +7 -4
  156. package/src/features/billing/stripe-price/components/lists/PricesList.tsx +2 -0
  157. package/src/features/billing/stripe-price/data/stripe-price.service.ts +4 -0
  158. package/src/features/billing/stripe-price/hooks/__tests__/useStripePriceTableStructure.sort.spec.tsx +29 -0
  159. package/src/features/billing/stripe-price/hooks/useStripePriceTableStructure.tsx +8 -5
  160. package/src/features/billing/stripe-product/components/lists/ProductsList.tsx +2 -0
  161. package/src/features/billing/stripe-product/data/stripe-product.service.ts +4 -0
  162. package/src/features/billing/stripe-product/hooks/__tests__/useStripeProductTableStructure.sort.spec.tsx +29 -0
  163. package/src/features/billing/stripe-product/hooks/useStripeProductTableStructure.tsx +3 -2
  164. package/src/features/blog/components/admin/BlogPostsList.tsx +2 -0
  165. package/src/features/blog/data/BlogPostService.ts +3 -1
  166. package/src/features/blog/hooks/__tests__/useBlogPostTableStructure.sort.spec.tsx +19 -0
  167. package/src/features/blog/hooks/useBlogPostTableStructure.tsx +2 -2
  168. package/src/features/company/components/lists/CompaniesList.tsx +2 -0
  169. package/src/features/company/data/company.service.ts +3 -1
  170. package/src/features/company/hooks/__tests__/useCompanyTableStructure.sort.spec.tsx +19 -0
  171. package/src/features/company/hooks/useCompanyTableStructure.tsx +1 -1
  172. package/src/features/content/data/content.service.ts +12 -1
  173. package/src/features/content/hooks/__tests__/useContentTableStructure.sort.spec.tsx +21 -0
  174. package/src/features/content/hooks/useContentTableStructure.tsx +1 -1
  175. package/src/features/email-automation/components/lists/EmailAutomationRecipientsList.tsx +2 -0
  176. package/src/features/email-automation/components/lists/EmailAutomationsList.tsx +2 -0
  177. package/src/features/email-automation/data/EmailAutomationService.ts +9 -1
  178. package/src/features/email-automation/hooks/__tests__/useEmailAutomationEnrollmentTableStructure.sort.spec.tsx +21 -0
  179. package/src/features/email-automation/hooks/__tests__/useEmailAutomationTableStructure.sort.spec.tsx +29 -0
  180. package/src/features/email-automation/hooks/useEmailAutomationEnrollmentTableStructure.tsx +4 -4
  181. package/src/features/email-automation/hooks/useEmailAutomationTableStructure.tsx +5 -4
  182. package/src/features/email-blast/components/lists/EmailBlastsList.tsx +2 -0
  183. package/src/features/email-blast/data/EmailBlastService.ts +5 -1
  184. package/src/features/email-blast/hooks/__tests__/useEmailBlastTableStructure.sort.spec.tsx +29 -0
  185. package/src/features/email-blast/hooks/useEmailBlastTableStructure.tsx +16 -8
  186. package/src/features/how-to/components/lists/HowToList.tsx +2 -0
  187. package/src/features/how-to/data/HowToService.ts +4 -0
  188. package/src/features/how-to/hooks/__tests__/useHowToTableStructure.sort.spec.tsx +18 -0
  189. package/src/features/how-to/hooks/useHowToTableStructure.tsx +1 -1
  190. package/src/features/notification/components/lists/NotificationsList.tsx +2 -0
  191. package/src/features/notification/data/notification.service.ts +4 -0
  192. package/src/features/notification/hooks/__tests__/useNotificationTableStructure.sort.spec.tsx +19 -0
  193. package/src/features/notification/hooks/useNotificationTableStructure.tsx +1 -1
  194. package/src/features/referral/components/containers/ReferralsAdminContainer.tsx +4 -2
  195. package/src/features/referral/data/ReferralAdminService.ts +6 -1
  196. package/src/features/referral/hooks/__tests__/useReferralAdminReferralTableStructure.sort.spec.tsx +35 -0
  197. package/src/features/referral/hooks/useReferralAdminReferralTableStructure.tsx +10 -5
  198. package/src/features/role/components/lists/RolesList.tsx +2 -0
  199. package/src/features/role/components/lists/UserRolesList.tsx +2 -0
  200. package/src/features/role/data/role.service.ts +7 -1
  201. package/src/features/role/hooks/__tests__/useRoleTableStructure.sort.spec.tsx +16 -0
  202. package/src/features/role/hooks/useRoleTableStructure.tsx +2 -2
  203. package/src/features/user/components/lists/AdminUsersList.tsx +2 -0
  204. package/src/features/user/components/lists/CompanyUsersList.tsx +4 -0
  205. package/src/features/user/components/lists/PlatformUsersList.tsx +2 -0
  206. package/src/features/user/components/lists/RoleUsersList.tsx +2 -0
  207. package/src/features/user/components/lists/UsersListByContentIds.tsx +2 -0
  208. package/src/features/user/data/user.service.ts +28 -1
  209. package/src/features/user/hooks/__tests__/useUserTableStructure.sort.spec.tsx +16 -0
  210. package/src/features/user/hooks/useUserTableStructure.tsx +2 -2
  211. package/src/features/waitlist/components/lists/WaitlistList.tsx +2 -0
  212. package/src/features/waitlist/data/WaitlistService.ts +4 -0
  213. package/src/features/waitlist/hooks/__tests__/useWaitlistTableStructure.sort.spec.tsx +17 -0
  214. package/src/features/waitlist/hooks/useWaitlistTableStructure.tsx +3 -3
  215. package/src/hooks/__tests__/useDataListRetriever.sort.spec.tsx +114 -0
  216. package/src/hooks/__tests__/useListSortParam.spec.tsx +91 -0
  217. package/src/hooks/index.ts +1 -0
  218. package/src/hooks/useDataListRetriever.ts +44 -4
  219. package/src/hooks/useListSortParam.ts +53 -0
  220. package/dist/chunk-4JVLLBRS.mjs.map +0 -1
  221. package/dist/chunk-4SXHRANW.mjs.map +0 -1
  222. package/dist/chunk-GPVLFNLB.js.map +0 -1
  223. package/dist/chunk-NPGX2GJD.js.map +0 -1
  224. /package/dist/{BlockNoteEditor-KRNC6EAX.mjs.map → BlockNoteEditor-DCVT7YHE.mjs.map} +0 -0
  225. /package/dist/{BlockNoteViewer-NVSR67X5.mjs.map → BlockNoteViewer-XDAC6AL7.mjs.map} +0 -0
  226. /package/dist/{chunk-AEBZ67JJ.mjs.map → chunk-ETU3AW2X.mjs.map} +0 -0
  227. /package/dist/{chunk-AMQFKCAX.mjs.map → chunk-WPFEPIKP.mjs.map} +0 -0
@@ -37,12 +37,12 @@
37
37
 
38
38
 
39
39
 
40
- var _chunkGPVLFNLBjs = require('../../chunk-GPVLFNLB.js');
40
+ var _chunkKH4Y4FU4js = require('../../chunk-KH4Y4FU4.js');
41
41
 
42
42
 
43
43
  var _chunkSYMI4IDWjs = require('../../chunk-SYMI4IDW.js');
44
44
  require('../../chunk-3EPNHTMH.js');
45
- require('../../chunk-PNCO3HMJ.js');
45
+ require('../../chunk-TCAOU6NH.js');
46
46
  require('../../chunk-G4JR3SFV.js');
47
47
 
48
48
 
@@ -64,7 +64,7 @@ require('../../chunk-G4JR3SFV.js');
64
64
 
65
65
 
66
66
 
67
- var _chunkNPGX2GJDjs = require('../../chunk-NPGX2GJD.js');
67
+ var _chunkCI64OTRXjs = require('../../chunk-CI64OTRX.js');
68
68
  require('../../chunk-HROKKUBQ.js');
69
69
  require('../../chunk-DGN3PR2F.js');
70
70
 
@@ -119,7 +119,7 @@ var dropzone = {
119
119
  };
120
120
  async function uploadBlogImage(params) {
121
121
  if (!params.selection || !params.key) return;
122
- await _chunkNPGX2GJDjs.S3Service.upload({
122
+ await _chunkCI64OTRXjs.S3Service.upload({
123
123
  key: params.key,
124
124
  contentType: params.selection.contentType,
125
125
  file: params.selection.file,
@@ -149,8 +149,8 @@ function BlogCoverImageField({
149
149
  };
150
150
  }, [previewUrl]);
151
151
  const src = _nullishCoalesce(previewUrl, () => ( currentUrl));
152
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormFieldWrapper, { form, name: id, label, children: (field) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
153
- _chunkGPVLFNLBjs.FileUploader,
152
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormFieldWrapper, { form, name: id, label, children: (field) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
153
+ _chunkKH4Y4FU4js.FileUploader,
154
154
  {
155
155
  value: files,
156
156
  onValueChange: (value) => {
@@ -163,7 +163,7 @@ function BlogCoverImageField({
163
163
  },
164
164
  dropzoneOptions: dropzone,
165
165
  className: "w-full",
166
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FileInput, { className: "text-muted-foreground/50 rounded-lg outline-1 outline-dashed", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full flex-col items-center justify-center p-4", children: src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
166
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FileInput, { className: "text-muted-foreground/50 rounded-lg outline-1 outline-dashed", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full flex-col items-center justify-center p-4", children: src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
167
167
  _image2.default,
168
168
  {
169
169
  src,
@@ -171,7 +171,7 @@ function BlogCoverImageField({
171
171
  width: 320,
172
172
  height: 180,
173
173
  className: "h-auto max-h-48 w-auto max-w-full rounded-md object-cover",
174
- unoptimized: _chunkNPGX2GJDjs.isRemoteImageSrc.call(void 0, previewUrl ? void 0 : currentUrl)
174
+ unoptimized: _chunkCI64OTRXjs.isRemoteImageSrc.call(void 0, previewUrl ? void 0 : currentUrl)
175
175
  }
176
176
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
177
177
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.UploadIcon, { className: "my-4 h-8 w-8" }),
@@ -225,7 +225,7 @@ function BlogTranslationStatus({ aiStatus, onRetranslate }) {
225
225
  const [isRetrying, setIsRetrying] = _react.useState.call(void 0, false);
226
226
  if (aiStatus === "completed") return null;
227
227
  if (aiStatus === "pending" || aiStatus === "in_progress") {
228
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-x-2", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGPVLFNLBjs.Badge, { variant: "softBlue", children: [
228
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-x-2", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKH4Y4FU4js.Badge, { variant: "softBlue", children: [
229
229
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.LoaderCircleIcon, { className: "animate-spin" }),
230
230
  aiStatus === "pending" ? t("blog.translation.pending") : t("blog.translation.translating")
231
231
  ] }) });
@@ -236,14 +236,14 @@ function BlogTranslationStatus({ aiStatus, onRetranslate }) {
236
236
  try {
237
237
  await onRetranslate();
238
238
  } catch (error) {
239
- _chunkGPVLFNLBjs.errorToast.call(void 0, { title: t("common.errors.error"), error });
239
+ _chunkKH4Y4FU4js.errorToast.call(void 0, { title: t("common.errors.error"), error });
240
240
  } finally {
241
241
  setIsRetrying(false);
242
242
  }
243
243
  }, "retranslate");
244
244
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-2", children: [
245
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Badge, { variant: "softRed", children: t("blog.translation.failed") }),
246
- onRetranslate && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGPVLFNLBjs.Button, { type: "button", size: "sm", variant: "outline", onClick: () => void retranslate(), disabled: isRetrying, children: [
245
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Badge, { variant: "softRed", children: t("blog.translation.failed") }),
246
+ onRetranslate && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKH4Y4FU4js.Button, { type: "button", size: "sm", variant: "outline", onClick: () => void retranslate(), disabled: isRetrying, children: [
247
247
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.RotateCcwIcon, {}),
248
248
  t("blog.actions.translateAgain")
249
249
  ] })
@@ -304,7 +304,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
304
304
  defaultValues: getDefaultValues()
305
305
  });
306
306
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
307
- _chunkGPVLFNLBjs.EditorSheet,
307
+ _chunkKH4Y4FU4js.EditorSheet,
308
308
  {
309
309
  form,
310
310
  entityType: t("blog.entities.category"),
@@ -317,7 +317,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
317
317
  if (values.image && image) await uploadBlogImage({ key: values.image, selection: image });
318
318
  const imageKey = values.image && image ? values.image : void 0;
319
319
  if (!category) {
320
- return _chunkNPGX2GJDjs.BlogCategoryService.create({
320
+ return _chunkCI64OTRXjs.BlogCategoryService.create({
321
321
  id: values.id,
322
322
  originalLanguage: values.originalLanguage,
323
323
  name: values.name,
@@ -331,7 +331,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
331
331
  { id: defaults.id, name: defaults.name, slug: defaults.slug, description: defaults.description }
332
332
  );
333
333
  if (originalChanged) {
334
- await _chunkNPGX2GJDjs.BlogCategoryService.update({
334
+ await _chunkCI64OTRXjs.BlogCategoryService.update({
335
335
  id: values.id,
336
336
  originalLanguage: _optionalChain([category, 'optionalAccess', _16 => _16.originalLanguage]),
337
337
  name: values.name,
@@ -343,7 +343,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
343
343
  for (const translation of values.translations) {
344
344
  const before = defaults.translations.find((candidate) => candidate.id === translation.id);
345
345
  if (sameTranslation(translation, before)) continue;
346
- await _chunkNPGX2GJDjs.BlogCategoryTranslationService.update({
346
+ await _chunkCI64OTRXjs.BlogCategoryTranslationService.update({
347
347
  id: translation.id,
348
348
  name: translation.name,
349
349
  slug: translation.slug || void 0,
@@ -361,7 +361,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
361
361
  trigger,
362
362
  children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-y-4", children: [
363
363
  !category && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
364
- _chunkGPVLFNLBjs.FormSelect,
364
+ _chunkKH4Y4FU4js.FormSelect,
365
365
  {
366
366
  form,
367
367
  id: "originalLanguage",
@@ -370,16 +370,16 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
370
370
  isRequired: true
371
371
  }
372
372
  ),
373
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormInput, { form, id: "name", name: t("blog.fields.name"), isRequired: true }),
374
- category && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormInput, { form, id: "slug", name: t("blog.fields.slug"), description: t("blog.fields.slugHelp") }),
375
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormTextarea, { form, id: "description", name: t("blog.fields.description") }),
373
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormInput, { form, id: "name", name: t("blog.fields.name"), isRequired: true }),
374
+ category && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormInput, { form, id: "slug", name: t("blog.fields.slug"), description: t("blog.fields.slugHelp") }),
375
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormTextarea, { form, id: "description", name: t("blog.fields.description") }),
376
376
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
377
377
  BlogCoverImageField,
378
378
  {
379
379
  form,
380
380
  id: "image",
381
381
  label: t("blog.fields.image"),
382
- keyPrefix: _chunkNPGX2GJDjs.BLOG_CATEGORY_UPLOAD_PREFIX,
382
+ keyPrefix: _chunkCI64OTRXjs.BLOG_CATEGORY_UPLOAD_PREFIX,
383
383
  entityId: form.getValues("id"),
384
384
  currentUrl: _optionalChain([category, 'optionalAccess', _17 => _17.image]),
385
385
  selection: image,
@@ -387,29 +387,29 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
387
387
  }
388
388
  ),
389
389
  translations.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-2", children: [
390
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.SectionHeader, { className: "mt-2", children: t("blog.fields.languages") }),
391
- translations.map((translation, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGPVLFNLBjs.Collapsible, { className: "rounded-md border", children: [
392
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGPVLFNLBjs.CollapsibleTrigger, { className: "flex w-full items-center justify-between gap-x-2 px-3 py-2 text-start", children: [
390
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.SectionHeader, { className: "mt-2", children: t("blog.fields.languages") }),
391
+ translations.map((translation, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKH4Y4FU4js.Collapsible, { className: "rounded-md border", children: [
392
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKH4Y4FU4js.CollapsibleTrigger, { className: "flex w-full items-center justify-between gap-x-2 px-3 py-2 text-start", children: [
393
393
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-x-2 text-sm font-medium", children: [
394
394
  languageName(translation.language),
395
395
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogTranslationStatus, { aiStatus: translation.aiStatus })
396
396
  ] }),
397
397
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronDownIcon, { className: "text-muted-foreground size-4" })
398
398
  ] }),
399
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGPVLFNLBjs.CollapsibleContent, { className: "flex flex-col gap-y-4 border-t p-3", children: [
399
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKH4Y4FU4js.CollapsibleContent, { className: "flex flex-col gap-y-4 border-t p-3", children: [
400
400
  translation.aiStatus === "failed" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
401
401
  BlogTranslationStatus,
402
402
  {
403
403
  aiStatus: translation.aiStatus,
404
404
  onRetranslate: async () => {
405
- await _chunkNPGX2GJDjs.BlogCategoryTranslationService.retranslate({ id: translation.id });
405
+ await _chunkCI64OTRXjs.BlogCategoryTranslationService.retranslate({ id: translation.id });
406
406
  await _optionalChain([onSuccess, 'optionalCall', _18 => _18()]);
407
407
  }
408
408
  }
409
409
  ),
410
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormInput, { form, id: `translations.${index}.name`, name: t("blog.fields.name"), isRequired: true }),
410
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormInput, { form, id: `translations.${index}.name`, name: t("blog.fields.name"), isRequired: true }),
411
411
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
412
- _chunkGPVLFNLBjs.FormInput,
412
+ _chunkKH4Y4FU4js.FormInput,
413
413
  {
414
414
  form,
415
415
  id: `translations.${index}.slug`,
@@ -418,7 +418,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
418
418
  }
419
419
  ),
420
420
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
421
- _chunkGPVLFNLBjs.FormTextarea,
421
+ _chunkKH4Y4FU4js.FormTextarea,
422
422
  {
423
423
  form,
424
424
  id: `translations.${index}.description`,
@@ -491,14 +491,14 @@ var useBlogCategoryTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call
491
491
  }, [params.fields, fieldColumnMap, t, refresh]);
492
492
  return _react.useMemo.call(void 0, () => ({ data: tableData, columns }), [tableData, columns]);
493
493
  }, "useBlogCategoryTableStructure");
494
- _chunkGPVLFNLBjs.registerTableGenerator.call(void 0, "blog-categories", useBlogCategoryTableStructure);
494
+ _chunkKH4Y4FU4js.registerTableGenerator.call(void 0, "blog-categories", useBlogCategoryTableStructure);
495
495
 
496
496
  // src/features/blog/components/admin/BlogCategoriesList.tsx
497
497
 
498
498
  function BlogCategoriesList({ fullWidth } = {}) {
499
499
  const t = _nextintl.useTranslations.call(void 0, );
500
- const data = _chunkGPVLFNLBjs.useDataListRetriever.call(void 0, {
501
- retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) => _chunkNPGX2GJDjs.BlogCategoryService.findMany(params), "retriever"),
500
+ const data = _chunkKH4Y4FU4js.useDataListRetriever.call(void 0, {
501
+ retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) => _chunkCI64OTRXjs.BlogCategoryService.findMany(params), "retriever"),
502
502
  retrieverParams: {},
503
503
  module: _chunkZ6T2575Ajs.Modules.BlogCategory
504
504
  });
@@ -507,13 +507,13 @@ function BlogCategoriesList({ fullWidth } = {}) {
507
507
  BlogCategoryEditor,
508
508
  {
509
509
  onSuccess: data.refresh,
510
- trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Button, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}), nativeButton: false, size: "sm", variant: "outline", children: t("blog.admin.newCategory") })
510
+ trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Button, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}), nativeButton: false, size: "sm", variant: "outline", children: t("blog.admin.newCategory") })
511
511
  },
512
512
  "create-blog-category"
513
513
  )
514
514
  ];
515
515
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
516
- _chunkGPVLFNLBjs.ContentListTable,
516
+ _chunkKH4Y4FU4js.ContentListTable,
517
517
  {
518
518
  data,
519
519
  fields: ["name" /* name */, "languages" /* languages */],
@@ -521,7 +521,7 @@ function BlogCategoriesList({ fullWidth } = {}) {
521
521
  functions,
522
522
  fullWidth,
523
523
  title: t("blog.entities.categories"),
524
- emptyState: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.EmptyState, { icon: _lucidereact.TagIcon, title: t("blog.admin.emptyCategories") })
524
+ emptyState: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.EmptyState, { icon: _lucidereact.TagIcon, title: t("blog.admin.emptyCategories") })
525
525
  }
526
526
  );
527
527
  }
@@ -537,7 +537,7 @@ function BlogLayoutSetting() {
537
537
  const [saving, setSaving] = _react.useState.call(void 0, false);
538
538
  _react.useEffect.call(void 0, () => {
539
539
  let active = true;
540
- _chunkNPGX2GJDjs.BlogSettingsService.get().then((settings) => {
540
+ _chunkCI64OTRXjs.BlogSettingsService.get().then((settings) => {
541
541
  if (active) setLayout(_nullishCoalesce(_optionalChain([settings, 'optionalAccess', _23 => _23.listLayout]), () => ( "featured")));
542
542
  }).catch(() => {
543
543
  if (active) setLayout("featured");
@@ -556,19 +556,19 @@ function BlogLayoutSetting() {
556
556
  setLayout(next);
557
557
  setSaving(true);
558
558
  try {
559
- await _chunkNPGX2GJDjs.BlogSettingsService.save({ id: _chunkNPGX2GJDjs.BLOG_SETTINGS_ID, listLayout: next });
560
- _chunkNPGX2GJDjs.showToast.call(void 0, t("blog.layout.saved"));
559
+ await _chunkCI64OTRXjs.BlogSettingsService.save({ id: _chunkCI64OTRXjs.BLOG_SETTINGS_ID, listLayout: next });
560
+ _chunkCI64OTRXjs.showToast.call(void 0, t("blog.layout.saved"));
561
561
  } catch (error) {
562
562
  setLayout(previous);
563
- _chunkGPVLFNLBjs.errorToast.call(void 0, { title: t("common.errors.error"), error });
563
+ _chunkKH4Y4FU4js.errorToast.call(void 0, { title: t("common.errors.error"), error });
564
564
  } finally {
565
565
  setSaving(false);
566
566
  }
567
567
  }, "save");
568
568
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full max-w-3xl flex-col gap-y-4 p-4", children: [
569
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.SectionHeader, { children: t("blog.layout.title") }),
569
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.SectionHeader, { children: t("blog.layout.title") }),
570
570
  layout && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
571
- _chunkGPVLFNLBjs.RadioGroup,
571
+ _chunkKH4Y4FU4js.RadioGroup,
572
572
  {
573
573
  value: layout,
574
574
  onValueChange: (value) => {
@@ -577,13 +577,13 @@ function BlogLayoutSetting() {
577
577
  },
578
578
  disabled: saving,
579
579
  className: "grid grid-cols-1 gap-3 md:grid-cols-3",
580
- children: _chunkNPGX2GJDjs.BLOG_LIST_LAYOUTS.map((option) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
580
+ children: _chunkCI64OTRXjs.BLOG_LIST_LAYOUTS.map((option) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
581
581
  "label",
582
582
  {
583
583
  htmlFor: `blog-layout-${option}`,
584
584
  className: "has-data-checked:border-primary flex cursor-pointer items-start gap-x-3 rounded-lg border p-4",
585
585
  children: [
586
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.RadioGroupItem, { value: option, id: `blog-layout-${option}`, className: "mt-0.5" }),
586
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.RadioGroupItem, { value: option, id: `blog-layout-${option}`, className: "mt-0.5" }),
587
587
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col gap-y-1", children: [
588
588
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium", children: options[option].label }),
589
589
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs/relaxed", children: options[option].description })
@@ -612,7 +612,7 @@ function useBlogCategoryNames() {
612
612
  const [names, setNames] = _react.useState.call(void 0, {});
613
613
  _react.useEffect.call(void 0, () => {
614
614
  let cancelled = false;
615
- _chunkNPGX2GJDjs.BlogCategoryService.findMany({ fetchAll: true }).then((categories) => {
615
+ _chunkCI64OTRXjs.BlogCategoryService.findMany({ fetchAll: true }).then((categories) => {
616
616
  if (cancelled) return;
617
617
  setNames(Object.fromEntries(categories.map((category) => [category.id, blogCategoryAdminName(category)])));
618
618
  }).catch(() => {
@@ -630,7 +630,7 @@ _chunk7QVYU63Ejs.__name.call(void 0, useBlogCategoryNames, "useBlogCategoryNames
630
630
  var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) => {
631
631
  const t = _nextintl.useTranslations.call(void 0, );
632
632
  const dates = _chunkSYMI4IDWjs.useDateFormatter.call(void 0, );
633
- const generateUrl = _chunkGPVLFNLBjs.usePageUrlGenerator.call(void 0, );
633
+ const generateUrl = _chunkKH4Y4FU4js.usePageUrlGenerator.call(void 0, );
634
634
  const categoryName = useBlogCategoryNames();
635
635
  const tableData = _react.useMemo.call(void 0, () => {
636
636
  return params.data.map((post) => {
@@ -648,7 +648,7 @@ var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(voi
648
648
  header: t("blog.fields.title"),
649
649
  cell: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, ({ row }) => {
650
650
  const post = row.original.jsonApiData;
651
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Link, { href: generateUrl({ page: _chunkZ6T2575Ajs.Modules.BlogPost, id: post.id }), children: _nullishCoalesce(_nullishCoalesce(_optionalChain([post, 'access', _24 => _24.original, 'optionalAccess', _25 => _25.title]), () => ( post.title)), () => ( post.id)) });
651
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Link, { href: generateUrl({ page: _chunkZ6T2575Ajs.Modules.BlogPost, id: post.id }), children: _nullishCoalesce(_nullishCoalesce(_optionalChain([post, 'access', _24 => _24.original, 'optionalAccess', _25 => _25.title]), () => ( post.title)), () => ( post.id)) });
652
652
  }, "cell"),
653
653
  enableSorting: false,
654
654
  enableHiding: false
@@ -664,9 +664,9 @@ var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(voi
664
664
  published: t("blog.status.published"),
665
665
  unpublished: t("blog.status.unpublished")
666
666
  }[post.status];
667
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Badge, { variant: _nullishCoalesce(BLOG_STATUS_BADGE[post.status], () => ( "softGray")), children: _nullishCoalesce(label, () => ( post.status)) });
667
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Badge, { variant: _nullishCoalesce(BLOG_STATUS_BADGE[post.status], () => ( "softGray")), children: _nullishCoalesce(label, () => ( post.status)) });
668
668
  }, "cell"),
669
- enableSorting: false,
669
+ enableSorting: true,
670
670
  enableHiding: false
671
671
  }),
672
672
  ["categories" /* categories */]: () => ({
@@ -691,7 +691,7 @@ var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(voi
691
691
  if (!post.publishedAt) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: "\u2014" });
692
692
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs tabular-nums", children: dates.format(post.publishedAt, "dateMedium") });
693
693
  }, "cell"),
694
- enableSorting: false,
694
+ enableSorting: true,
695
695
  enableHiding: false
696
696
  }),
697
697
  ["languages" /* languages */]: () => ({
@@ -718,7 +718,7 @@ var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(voi
718
718
  }, [params.fields, fieldColumnMap, t, generateUrl, dates, categoryName]);
719
719
  return _react.useMemo.call(void 0, () => ({ data: tableData, columns }), [tableData, columns]);
720
720
  }, "useBlogPostTableStructure");
721
- _chunkGPVLFNLBjs.registerTableGenerator.call(void 0, "blog-posts", useBlogPostTableStructure);
721
+ _chunkKH4Y4FU4js.registerTableGenerator.call(void 0, "blog-posts", useBlogPostTableStructure);
722
722
 
723
723
  // src/features/blog/components/admin/BlogPostEditor.tsx
724
724
 
@@ -783,7 +783,7 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
783
783
  return Object.keys(dirty).length > 0;
784
784
  }, [dirtyFields, isBodyEmptyState]);
785
785
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
786
- _chunkGPVLFNLBjs.EditorSheet,
786
+ _chunkKH4Y4FU4js.EditorSheet,
787
787
  {
788
788
  form,
789
789
  entityType: t("blog.entities.post"),
@@ -807,13 +807,13 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
807
807
  categoryIds: values.categories.map((category) => category.id)
808
808
  };
809
809
  if (post) {
810
- return _chunkNPGX2GJDjs.BlogPostService.update({
810
+ return _chunkCI64OTRXjs.BlogPostService.update({
811
811
  ...payload,
812
812
  originalLanguage: post.originalLanguage,
813
813
  slug: values.slug || void 0
814
814
  });
815
815
  }
816
- return _chunkNPGX2GJDjs.BlogPostService.create({ ...payload, originalLanguage: values.originalLanguage });
816
+ return _chunkCI64OTRXjs.BlogPostService.create({ ...payload, originalLanguage: values.originalLanguage });
817
817
  },
818
818
  onReset: () => {
819
819
  setCover(null);
@@ -825,7 +825,7 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
825
825
  trigger,
826
826
  children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full min-h-0 w-full flex-col gap-y-4", children: [
827
827
  !post && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
828
- _chunkGPVLFNLBjs.FormSelect,
828
+ _chunkKH4Y4FU4js.FormSelect,
829
829
  {
830
830
  form,
831
831
  id: "originalLanguage",
@@ -834,24 +834,24 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
834
834
  isRequired: true
835
835
  }
836
836
  ),
837
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormInput, { form, id: "title", name: t("blog.fields.title"), isRequired: true }),
837
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormInput, { form, id: "title", name: t("blog.fields.title"), isRequired: true }),
838
838
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
839
839
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-4", children: [
840
- post && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormInput, { form, id: "slug", name: t("blog.fields.slug"), description: t("blog.fields.slugHelp") }),
840
+ post && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormInput, { form, id: "slug", name: t("blog.fields.slug"), description: t("blog.fields.slugHelp") }),
841
841
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
842
- _chunkGPVLFNLBjs.EntityMultiSelector,
842
+ _chunkKH4Y4FU4js.EntityMultiSelector,
843
843
  {
844
844
  id: "categories",
845
845
  form,
846
846
  label: t("blog.fields.categories"),
847
- retriever: (params) => _chunkNPGX2GJDjs.BlogCategoryService.findMany(params),
847
+ retriever: (params) => _chunkCI64OTRXjs.BlogCategoryService.findMany(params),
848
848
  module: _chunkZ6T2575Ajs.Modules.BlogCategory,
849
849
  getLabel: blogCategoryAdminName,
850
850
  getFormValueLabel: (value) => value.name || categoryName(value.id)
851
851
  }
852
852
  ),
853
853
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
854
- _chunkGPVLFNLBjs.FormTextarea,
854
+ _chunkKH4Y4FU4js.FormTextarea,
855
855
  {
856
856
  form,
857
857
  id: "summary",
@@ -868,7 +868,7 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
868
868
  form,
869
869
  id: "coverImage",
870
870
  label: t("blog.fields.coverImage"),
871
- keyPrefix: _chunkNPGX2GJDjs.BLOG_POST_UPLOAD_PREFIX,
871
+ keyPrefix: _chunkCI64OTRXjs.BLOG_POST_UPLOAD_PREFIX,
872
872
  entityId: form.getValues("id"),
873
873
  currentUrl: _optionalChain([post, 'optionalAccess', _40 => _40.coverImage]),
874
874
  alt: _optionalChain([original, 'optionalAccess', _41 => _41.coverImageAlt]),
@@ -876,13 +876,13 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
876
876
  onSelectionChange: setCover
877
877
  }
878
878
  ),
879
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormInput, { form, id: "coverImageAlt", name: t("blog.fields.coverImageAlt") })
879
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormInput, { form, id: "coverImageAlt", name: t("blog.fields.coverImageAlt") })
880
880
  ] })
881
881
  ] }),
882
882
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
883
- _chunkGPVLFNLBjs.FormBlockNote,
883
+ _chunkKH4Y4FU4js.FormBlockNote,
884
884
  {
885
- uploadKeyPrefix: _chunkNPGX2GJDjs.BLOG_POST_UPLOAD_PREFIX,
885
+ uploadKeyPrefix: _chunkCI64OTRXjs.BLOG_POST_UPLOAD_PREFIX,
886
886
  form,
887
887
  id: "body",
888
888
  name: t("blog.fields.body"),
@@ -903,22 +903,24 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostEditor, "BlogPostEditor");
903
903
 
904
904
  function BlogPostsList({ fullWidth } = {}) {
905
905
  const t = _nextintl.useTranslations.call(void 0, );
906
- const data = _chunkGPVLFNLBjs.useDataListRetriever.call(void 0, {
907
- retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) => _chunkNPGX2GJDjs.BlogPostService.findMany(params), "retriever"),
906
+ const data = _chunkKH4Y4FU4js.useDataListRetriever.call(void 0, {
907
+ retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) => _chunkCI64OTRXjs.BlogPostService.findMany(params), "retriever"),
908
908
  retrieverParams: {},
909
- module: _chunkZ6T2575Ajs.Modules.BlogPost
909
+ module: _chunkZ6T2575Ajs.Modules.BlogPost,
910
+ // Display only (call C8): the server's own order when no sort is chosen.
911
+ defaultSort: "-updatedAt"
910
912
  });
911
913
  const functions = [
912
914
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
913
915
  BlogPostEditor,
914
916
  {
915
- trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Button, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}), nativeButton: false, size: "sm", variant: "outline", children: t("blog.admin.newPost") })
917
+ trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Button, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}), nativeButton: false, size: "sm", variant: "outline", children: t("blog.admin.newPost") })
916
918
  },
917
919
  "create-blog-post"
918
920
  )
919
921
  ];
920
922
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
921
- _chunkGPVLFNLBjs.ContentListTable,
923
+ _chunkKH4Y4FU4js.ContentListTable,
922
924
  {
923
925
  data,
924
926
  fields: [
@@ -932,7 +934,7 @@ function BlogPostsList({ fullWidth } = {}) {
932
934
  functions,
933
935
  fullWidth,
934
936
  title: t("blog.entities.posts"),
935
- emptyState: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.EmptyState, { icon: _lucidereact.NewspaperIcon, title: t("blog.admin.empty") })
937
+ emptyState: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.EmptyState, { icon: _lucidereact.NewspaperIcon, title: t("blog.admin.empty") })
936
938
  }
937
939
  );
938
940
  }
@@ -943,8 +945,8 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostsList, "BlogPostsList");
943
945
  function BlogAdminContainer() {
944
946
  const t = _nextintl.useTranslations.call(void 0, );
945
947
  const breadcrumbs = [{ name: t("blog.admin.title") }];
946
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.SharedProvider, { value: { breadcrumbs, title: { type: t("blog.admin.title") } }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
947
- _chunkGPVLFNLBjs.RoundPageContainer,
948
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.SharedProvider, { value: { breadcrumbs, title: { type: t("blog.admin.title") } }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
949
+ _chunkKH4Y4FU4js.RoundPageContainer,
948
950
  {
949
951
  module: _chunkZ6T2575Ajs.Modules.BlogPost,
950
952
  tabs: [
@@ -969,7 +971,7 @@ var BlogPostContext = _react.createContext.call(void 0, void 0);
969
971
  var BlogPostProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, ({ postId, children }) => {
970
972
  const [post, setPost] = _react.useState.call(void 0, void 0);
971
973
  const reload = _react.useCallback.call(void 0, async () => {
972
- const loaded = await _chunkNPGX2GJDjs.BlogPostService.findOne({ id: postId });
974
+ const loaded = await _chunkCI64OTRXjs.BlogPostService.findOne({ id: postId });
973
975
  setPost(loaded);
974
976
  }, [postId]);
975
977
  _react.useEffect.call(void 0, () => {
@@ -1005,18 +1007,18 @@ var useBlogPost = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
1005
1007
 
1006
1008
  function BlogPostDeleter() {
1007
1009
  const t = _nextintl.useTranslations.call(void 0, );
1008
- const generateUrl = _chunkGPVLFNLBjs.usePageUrlGenerator.call(void 0, );
1010
+ const generateUrl = _chunkKH4Y4FU4js.usePageUrlGenerator.call(void 0, );
1009
1011
  const { post } = useBlogPost();
1010
1012
  if (!post) return null;
1011
1013
  const type = t("blog.entities.post");
1012
1014
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1013
- _chunkGPVLFNLBjs.CommonDeleter,
1015
+ _chunkKH4Y4FU4js.CommonDeleter,
1014
1016
  {
1015
1017
  title: t("common.delete.title", { type }),
1016
1018
  subtitle: t("common.delete.subtitle", { type }),
1017
1019
  description: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-destructive p-4 text-sm", children: t("common.delete.description", { type }) }),
1018
1020
  showLabel: true,
1019
- deleteFunction: () => _chunkNPGX2GJDjs.BlogPostService.delete({ id: post.id }),
1021
+ deleteFunction: () => _chunkCI64OTRXjs.BlogPostService.delete({ id: post.id }),
1020
1022
  redirectTo: generateUrl({ page: _chunkZ6T2575Ajs.Modules.BlogPost })
1021
1023
  }
1022
1024
  );
@@ -1037,17 +1039,17 @@ function BlogPostPublishButton() {
1037
1039
  const toggle = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, async () => {
1038
1040
  setSaving(true);
1039
1041
  try {
1040
- if (isPublished) await _chunkNPGX2GJDjs.BlogPostService.unpublish({ id: post.id });
1041
- else await _chunkNPGX2GJDjs.BlogPostService.publish({ id: post.id });
1042
+ if (isPublished) await _chunkCI64OTRXjs.BlogPostService.unpublish({ id: post.id });
1043
+ else await _chunkCI64OTRXjs.BlogPostService.publish({ id: post.id });
1042
1044
  await reload();
1043
1045
  } catch (error) {
1044
- _chunkGPVLFNLBjs.errorToast.call(void 0, { title: t("common.errors.error"), error });
1046
+ _chunkKH4Y4FU4js.errorToast.call(void 0, { title: t("common.errors.error"), error });
1045
1047
  } finally {
1046
1048
  setSaving(false);
1047
1049
  }
1048
1050
  }, "toggle");
1049
1051
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1050
- _chunkGPVLFNLBjs.Button,
1052
+ _chunkKH4Y4FU4js.Button,
1051
1053
  {
1052
1054
  type: "button",
1053
1055
  size: "sm",
@@ -1075,11 +1077,11 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostPublishButton, "BlogPostPublishButt
1075
1077
  function BlogPostTranslationFields({ translation }) {
1076
1078
  const t = _nextintl.useTranslations.call(void 0, );
1077
1079
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-4", children: [
1078
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.DetailField, { label: t("blog.fields.title"), value: translation.title }),
1079
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.DetailField, { label: t("blog.fields.slug"), value: translation.slug }),
1080
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.DetailField, { label: t("blog.fields.summary"), value: translation.summary }),
1081
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.DetailField, { label: t("blog.fields.coverImageAlt"), value: translation.coverImageAlt }),
1082
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.DetailField, { label: t("blog.fields.body"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.BlockNoteEditorContainer, { id: translation.id, type: "blog-post", initialContent: translation.body }) })
1080
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.DetailField, { label: t("blog.fields.title"), value: translation.title }),
1081
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.DetailField, { label: t("blog.fields.slug"), value: translation.slug }),
1082
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.DetailField, { label: t("blog.fields.summary"), value: translation.summary }),
1083
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.DetailField, { label: t("blog.fields.coverImageAlt"), value: translation.coverImageAlt }),
1084
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.DetailField, { label: t("blog.fields.body"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.BlockNoteEditorContainer, { id: translation.id, type: "blog-post", initialContent: translation.body }) })
1083
1085
  ] });
1084
1086
  }
1085
1087
  _chunk7QVYU63Ejs.__name.call(void 0, BlogPostTranslationFields, "BlogPostTranslationFields");
@@ -1089,15 +1091,15 @@ function BlogPostComparison({ original, translation }) {
1089
1091
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
1090
1092
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-muted/40 flex flex-col gap-y-4 rounded-lg border p-4", children: [
1091
1093
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-2", children: [
1092
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.MicroLabel, { as: "h3", children: languageName(original.language) }),
1093
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Badge, { variant: "softGray", children: t("blog.translation.original") })
1094
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.MicroLabel, { as: "h3", children: languageName(original.language) }),
1095
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Badge, { variant: "softGray", children: t("blog.translation.original") })
1094
1096
  ] }),
1095
1097
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostTranslationFields, { translation: original })
1096
1098
  ] }),
1097
1099
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-4 rounded-lg border p-4", children: [
1098
1100
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-2", children: [
1099
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.MicroLabel, { as: "h3", children: languageName(translation.language) }),
1100
- translation.source === "manual" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Badge, { variant: "softAmber", children: t("blog.translation.editedByHand") })
1101
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.MicroLabel, { as: "h3", children: languageName(translation.language) }),
1102
+ translation.source === "manual" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Badge, { variant: "softAmber", children: t("blog.translation.editedByHand") })
1101
1103
  ] }),
1102
1104
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostTranslationFields, { translation })
1103
1105
  ] })
@@ -1148,7 +1150,7 @@ function BlogPostTranslationEditor({ translation, trigger, onSuccess }) {
1148
1150
  return Object.keys(dirty).length > 0;
1149
1151
  }, [dirtyFields, isBodyEmptyState]);
1150
1152
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1151
- _chunkGPVLFNLBjs.EditorSheet,
1153
+ _chunkKH4Y4FU4js.EditorSheet,
1152
1154
  {
1153
1155
  form,
1154
1156
  entityType: t("blog.entities.post"),
@@ -1158,7 +1160,7 @@ function BlogPostTranslationEditor({ translation, trigger, onSuccess }) {
1158
1160
  module: _chunkZ6T2575Ajs.Modules.BlogPostTranslation,
1159
1161
  size: "lg",
1160
1162
  isFormDirty,
1161
- onSubmit: async (values) => _chunkNPGX2GJDjs.BlogPostTranslationService.update({
1163
+ onSubmit: async (values) => _chunkCI64OTRXjs.BlogPostTranslationService.update({
1162
1164
  id: values.id,
1163
1165
  title: values.title,
1164
1166
  slug: values.slug || void 0,
@@ -1174,18 +1176,18 @@ function BlogPostTranslationEditor({ translation, trigger, onSuccess }) {
1174
1176
  }))),
1175
1177
  trigger,
1176
1178
  children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full min-h-0 w-full flex-col gap-y-4", children: [
1177
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormInput, { form, id: "title", name: t("blog.fields.title"), isRequired: true }),
1179
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormInput, { form, id: "title", name: t("blog.fields.title"), isRequired: true }),
1178
1180
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
1179
1181
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-4", children: [
1180
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormInput, { form, id: "slug", name: t("blog.fields.slug"), description: t("blog.fields.slugHelp") }),
1181
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormTextarea, { form, id: "summary", name: t("blog.fields.summary"), className: "min-h-24" })
1182
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormInput, { form, id: "slug", name: t("blog.fields.slug"), description: t("blog.fields.slugHelp") }),
1183
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormTextarea, { form, id: "summary", name: t("blog.fields.summary"), className: "min-h-24" })
1182
1184
  ] }),
1183
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-y-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.FormInput, { form, id: "coverImageAlt", name: t("blog.fields.coverImageAlt") }) })
1185
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-y-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.FormInput, { form, id: "coverImageAlt", name: t("blog.fields.coverImageAlt") }) })
1184
1186
  ] }),
1185
1187
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1186
- _chunkGPVLFNLBjs.FormBlockNote,
1188
+ _chunkKH4Y4FU4js.FormBlockNote,
1187
1189
  {
1188
- uploadKeyPrefix: _chunkNPGX2GJDjs.BLOG_POST_UPLOAD_PREFIX,
1190
+ uploadKeyPrefix: _chunkCI64OTRXjs.BLOG_POST_UPLOAD_PREFIX,
1189
1191
  form,
1190
1192
  id: "body",
1191
1193
  name: t("blog.fields.body"),
@@ -1213,7 +1215,7 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
1213
1215
  const original = post.original;
1214
1216
  const reload = _nullishCoalesce(onChanged, () => ( (async () => {
1215
1217
  })));
1216
- const editTrigger = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGPVLFNLBjs.Button, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}), nativeButton: false, size: "sm", variant: "outline", children: [
1218
+ const editTrigger = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKH4Y4FU4js.Button, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}), nativeButton: false, size: "sm", variant: "outline", children: [
1217
1219
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.PencilIcon, {}),
1218
1220
  t("blog.actions.edit")
1219
1221
  ] });
@@ -1225,7 +1227,7 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
1225
1227
  }[post.status];
1226
1228
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-y-6 p-4", children: [
1227
1229
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-x-4", children: [
1228
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Badge, { variant: "softGray", children: t("blog.translation.original") }),
1230
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Badge, { variant: "softGray", children: t("blog.translation.original") }),
1229
1231
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostEditor, { post, trigger: editTrigger, onSuccess: reload })
1230
1232
  ] }),
1231
1233
  post.coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1236,14 +1238,14 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
1236
1238
  width: 640,
1237
1239
  height: 360,
1238
1240
  className: "h-auto max-h-72 w-auto rounded-lg object-cover",
1239
- unoptimized: _chunkNPGX2GJDjs.isRemoteImageSrc.call(void 0, post.coverImage)
1241
+ unoptimized: _chunkCI64OTRXjs.isRemoteImageSrc.call(void 0, post.coverImage)
1240
1242
  }
1241
1243
  ),
1242
1244
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 md:grid-cols-3", children: [
1243
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.DetailField, { label: t("blog.fields.status"), value: statusLabel }),
1244
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.DetailField, { label: t("blog.fields.publishedAt"), value: formatDate(post.publishedAt) || "\u2014" }),
1245
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.DetailField, { label: t("blog.fields.status"), value: statusLabel }),
1246
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.DetailField, { label: t("blog.fields.publishedAt"), value: formatDate(post.publishedAt) || "\u2014" }),
1245
1247
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1246
- _chunkGPVLFNLBjs.DetailField,
1248
+ _chunkKH4Y4FU4js.DetailField,
1247
1249
  {
1248
1250
  label: t("blog.fields.categories"),
1249
1251
  value: post.categories.map((category) => categoryName(category.id)).filter(Boolean).join(", ") || "\u2014"
@@ -1255,16 +1257,16 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
1255
1257
  }
1256
1258
  const isWorking = translation.aiStatus === "pending" || translation.aiStatus === "in_progress";
1257
1259
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-y-6 p-4", children: [
1258
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Alert, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGPVLFNLBjs.AlertDescription, { className: "flex flex-col gap-y-2", children: [
1260
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Alert, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKH4Y4FU4js.AlertDescription, { className: "flex flex-col gap-y-2", children: [
1259
1261
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
1260
- translation.source === "manual" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Badge, { variant: "softAmber", children: t("blog.translation.editedByHand") }),
1262
+ translation.source === "manual" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Badge, { variant: "softAmber", children: t("blog.translation.editedByHand") }),
1261
1263
  original && translation.translatedAt && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: t("blog.translation.translatedFrom", {
1262
1264
  language: languageName(original.language),
1263
1265
  date: formatDate(translation.translatedAt)
1264
1266
  }) })
1265
1267
  ] }),
1266
1268
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: t("blog.translation.overwriteWarning") }),
1267
- original && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Button, { type: "button", size: "sm", variant: "ghost", onClick: () => setIsComparing((value) => !value), children: isComparing ? t("blog.actions.hideComparison") : t("blog.actions.compareWithOriginal") }) })
1269
+ original && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Button, { type: "button", size: "sm", variant: "ghost", onClick: () => setIsComparing((value) => !value), children: isComparing ? t("blog.actions.hideComparison") : t("blog.actions.compareWithOriginal") }) })
1268
1270
  ] }) }),
1269
1271
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-x-4", children: [
1270
1272
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1272,7 +1274,7 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
1272
1274
  {
1273
1275
  aiStatus: translation.aiStatus,
1274
1276
  onRetranslate: async () => {
1275
- await _chunkNPGX2GJDjs.BlogPostTranslationService.retranslate({ id: translation.id });
1277
+ await _chunkCI64OTRXjs.BlogPostTranslationService.retranslate({ id: translation.id });
1276
1278
  await reload();
1277
1279
  }
1278
1280
  }
@@ -1292,7 +1294,7 @@ function BlogPostContainer({ postId }) {
1292
1294
  _chunk7QVYU63Ejs.__name.call(void 0, BlogPostContainer, "BlogPostContainer");
1293
1295
  function BlogPostShell() {
1294
1296
  const t = _nextintl.useTranslations.call(void 0, );
1295
- const generateUrl = _chunkGPVLFNLBjs.usePageUrlGenerator.call(void 0, );
1297
+ const generateUrl = _chunkKH4Y4FU4js.usePageUrlGenerator.call(void 0, );
1296
1298
  const languageName = useBlogLanguageName();
1297
1299
  const { post, reload } = useBlogPost();
1298
1300
  const translations = _react.useMemo.call(void 0, () => {
@@ -1322,7 +1324,7 @@ function BlogPostShell() {
1322
1324
  return parts.join(" \xB7 ");
1323
1325
  }, "tabLabel");
1324
1326
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1325
- _chunkGPVLFNLBjs.SharedProvider,
1327
+ _chunkKH4Y4FU4js.SharedProvider,
1326
1328
  {
1327
1329
  value: {
1328
1330
  breadcrumbs,
@@ -1330,14 +1332,14 @@ function BlogPostShell() {
1330
1332
  type: t("blog.admin.title"),
1331
1333
  element: title,
1332
1334
  functions: [
1333
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Badge, { variant: BLOG_STATUS_BADGE[post.status], children: statusLabel }, "blogPostStatus"),
1335
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Badge, { variant: BLOG_STATUS_BADGE[post.status], children: statusLabel }, "blogPostStatus"),
1334
1336
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostPublishButton, {}, "blogPostPublish"),
1335
1337
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostDeleter, {}, "blogPostDeleter")
1336
1338
  ]
1337
1339
  }
1338
1340
  },
1339
1341
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1340
- _chunkGPVLFNLBjs.RoundPageContainer,
1342
+ _chunkKH4Y4FU4js.RoundPageContainer,
1341
1343
  {
1342
1344
  module: _chunkZ6T2575Ajs.Modules.BlogPost,
1343
1345
  id: post.id,
@@ -1401,10 +1403,10 @@ function BlogCategoryChips(props) {
1401
1403
  ];
1402
1404
  const inactiveVariant = variant === "chips" ? "outline" : "ghost";
1403
1405
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { "aria-label": t("blog.entities.categories"), className, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { className: variant === "chips" ? "flex flex-wrap items-center gap-2" : "flex flex-col items-start gap-2", children: items.map((item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1404
- _chunkGPVLFNLBjs.Badge,
1406
+ _chunkKH4Y4FU4js.Badge,
1405
1407
  {
1406
1408
  variant: item.active ? "default" : inactiveVariant,
1407
- render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Link, { href: item.href, "aria-current": item.active ? "page" : void 0 }),
1409
+ render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Link, { href: item.href, "aria-current": item.active ? "page" : void 0 }),
1408
1410
  children: item.label
1409
1411
  }
1410
1412
  ) }, item.key)) }) });
@@ -1419,12 +1421,12 @@ function BlogListHeader(props) {
1419
1421
  const t = _nextintl.useTranslations.call(void 0, );
1420
1422
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "header", { className: align === "center" ? "text-center" : void 0, children: [
1421
1423
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1422
- _chunkGPVLFNLBjs.ContentTitle,
1424
+ _chunkKH4Y4FU4js.ContentTitle,
1423
1425
  {
1424
1426
  type: t("blog.public.eyebrow"),
1425
1427
  element: t("blog.public.title"),
1426
1428
  headingLevel: 1,
1427
- className: _chunkNPGX2GJDjs.cn.call(void 0, "mb-0", align === "center" && "[&_div]:justify-center")
1429
+ className: _chunkCI64OTRXjs.cn.call(void 0, "mb-0", align === "center" && "[&_div]:justify-center")
1428
1430
  }
1429
1431
  ),
1430
1432
  showSubtitle ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground mt-3 text-sm leading-relaxed", children: t("blog.public.subtitle") }) : null
@@ -1433,18 +1435,18 @@ function BlogListHeader(props) {
1433
1435
  _chunk7QVYU63Ejs.__name.call(void 0, BlogListHeader, "BlogListHeader");
1434
1436
  function BlogListEmpty(props) {
1435
1437
  const t = _nextintl.useTranslations.call(void 0, );
1436
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkNPGX2GJDjs.cn.call(void 0, "text-muted-foreground py-12 text-center text-sm", props.className), children: props.query ? t("blog.public.noResults") : t("blog.public.empty") });
1438
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkCI64OTRXjs.cn.call(void 0, "text-muted-foreground py-12 text-center text-sm", props.className), children: props.query ? t("blog.public.noResults") : t("blog.public.empty") });
1437
1439
  }
1438
1440
  _chunk7QVYU63Ejs.__name.call(void 0, BlogListEmpty, "BlogListEmpty");
1439
1441
  function BlogLoadMore(props) {
1440
1442
  const { basePath, page, activeCategorySlug, query, className } = props;
1441
1443
  const t = _nextintl.useTranslations.call(void 0, );
1442
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkNPGX2GJDjs.cn.call(void 0, "flex justify-center", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1443
- _chunkGPVLFNLBjs.Link,
1444
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkCI64OTRXjs.cn.call(void 0, "flex justify-center", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1445
+ _chunkKH4Y4FU4js.Link,
1444
1446
  {
1445
1447
  href: blogListHref(basePath, { category: activeCategorySlug, q: query, page: page + 1 }),
1446
1448
  scroll: false,
1447
- className: _chunkGPVLFNLBjs.buttonVariants.call(void 0, { variant: "outline" }),
1449
+ className: _chunkKH4Y4FU4js.buttonVariants.call(void 0, { variant: "outline" }),
1448
1450
  children: t("blog.public.loadMore")
1449
1451
  }
1450
1452
  ) });
@@ -1471,7 +1473,7 @@ function BlogPostMeta(props) {
1471
1473
  parts.push(t("blog.public.updated", { date: dates.format(post.updatedAt, "dateMedium") }));
1472
1474
  }
1473
1475
  parts.push(t("blog.public.readingTime", { minutes: post.readingMinutes }));
1474
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkNPGX2GJDjs.cn.call(void 0, "text-muted-foreground text-xs", className), children: parts.map((part, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
1476
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkCI64OTRXjs.cn.call(void 0, "text-muted-foreground text-xs", className), children: parts.map((part, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
1475
1477
  index > 0 ? " \xB7 " : null,
1476
1478
  part
1477
1479
  ] }, index)) });
@@ -1482,7 +1484,7 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostMeta, "BlogPostMeta");
1482
1484
 
1483
1485
  function BlogPostCover(props) {
1484
1486
  const { src, alt, sizes, priority, className } = props;
1485
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkNPGX2GJDjs.cn.call(void 0, "border-border bg-primary/10 relative overflow-hidden rounded-lg border", className), children: src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1487
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkCI64OTRXjs.cn.call(void 0, "border-border bg-primary/10 relative overflow-hidden rounded-lg border", className), children: src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1486
1488
  _image2.default,
1487
1489
  {
1488
1490
  src,
@@ -1491,7 +1493,7 @@ function BlogPostCover(props) {
1491
1493
  sizes,
1492
1494
  priority,
1493
1495
  className: "object-cover",
1494
- unoptimized: _chunkNPGX2GJDjs.isRemoteImageSrc.call(void 0, src)
1496
+ unoptimized: _chunkCI64OTRXjs.isRemoteImageSrc.call(void 0, src)
1495
1497
  }
1496
1498
  ) : null });
1497
1499
  }
@@ -1502,8 +1504,8 @@ function BlogPostCard(props) {
1502
1504
  const isProminent = variant === "hero" || variant === "large";
1503
1505
  const eyebrow = _optionalChain([category, 'optionalAccess', _46 => _46.name]);
1504
1506
  const text = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col", children: [
1505
- eyebrow ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.MicroLabel, { as: "span", children: eyebrow }) : null,
1506
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.SectionHeader, { level: headingLevel === "h3" ? 3 : 2, className: "mt-1.5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.Link, { href: blogPostHref(basePath, post.slug), className: "after:absolute after:inset-0", children: post.title }) }),
1507
+ eyebrow ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.MicroLabel, { as: "span", children: eyebrow }) : null,
1508
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.SectionHeader, { level: headingLevel === "h3" ? 3 : 2, className: "mt-1.5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.Link, { href: blogPostHref(basePath, post.slug), className: "after:absolute after:inset-0", children: post.title }) }),
1507
1509
  post.summary ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground mt-2 text-sm leading-relaxed", children: post.summary }) : null,
1508
1510
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostMeta, { post, showAuthor: isProminent, className: "mt-3" })
1509
1511
  ] });
@@ -1569,10 +1571,10 @@ function BlogSearchBox(props) {
1569
1571
  const q = value.trim();
1570
1572
  router.push(blogListHref(basePath, { category: activeCategorySlug, q: q || void 0 }));
1571
1573
  }, "onSubmit");
1572
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "form", { role: "search", onSubmit, className, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGPVLFNLBjs.InputGroup, { children: [
1573
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.InputGroupAddon, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.SearchIcon, {}) }),
1574
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "form", { role: "search", onSubmit, className, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKH4Y4FU4js.InputGroup, { children: [
1575
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.InputGroupAddon, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.SearchIcon, {}) }),
1574
1576
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1575
- _chunkGPVLFNLBjs.InputGroupInput,
1577
+ _chunkKH4Y4FU4js.InputGroupInput,
1576
1578
  {
1577
1579
  type: "search",
1578
1580
  name: "q",
@@ -1684,7 +1686,7 @@ function BlogListRail(props) {
1684
1686
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogListHeader, { showSubtitle: false }),
1685
1687
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogSearchBox, { basePath, query, activeCategorySlug }),
1686
1688
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
1687
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.MicroLabel, { as: "span", className: "block", children: t("blog.entities.categories") }),
1689
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.MicroLabel, { as: "span", className: "block", children: t("blog.entities.categories") }),
1688
1690
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1689
1691
  BlogCategoryChips,
1690
1692
  {
@@ -1742,12 +1744,12 @@ function BlogPostView(props) {
1742
1744
  const more = related.slice(0, 3);
1743
1745
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: "px-4 pt-12 pb-20 md:pt-16", children: [
1744
1746
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mx-auto max-w-3xl", children: [
1745
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkGPVLFNLBjs.Link, { href: basePath, className: "inline-flex items-center gap-1.5", children: [
1747
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKH4Y4FU4js.Link, { href: basePath, className: "inline-flex items-center gap-1.5", children: [
1746
1748
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ArrowLeftIcon, { className: "size-4 rtl:rotate-180" }),
1747
1749
  t("blog.public.back")
1748
1750
  ] }),
1749
1751
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "header", { className: "mt-8", children: [
1750
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.ContentTitle, { type: _optionalChain([category, 'optionalAccess', _47 => _47.name]), element: post.title, headingLevel: 1, className: "mb-0" }),
1752
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.ContentTitle, { type: _optionalChain([category, 'optionalAccess', _47 => _47.name]), element: post.title, headingLevel: 1, className: "mb-0" }),
1751
1753
  post.summary ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground mt-3 text-sm leading-relaxed", children: post.summary }) : null,
1752
1754
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostMeta, { post, showAuthor: true, className: "mt-4" })
1753
1755
  ] }),
@@ -1761,10 +1763,10 @@ function BlogPostView(props) {
1761
1763
  className: "mt-8 aspect-[16/9]"
1762
1764
  }
1763
1765
  ) : null,
1764
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-8", children: _nullishCoalesce(body, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.BlockNoteEditorContainer, { id: post.id, type: "blog-post", initialContent: post.body }))) })
1766
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-8", children: _nullishCoalesce(body, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.BlockNoteEditorContainer, { id: post.id, type: "blog-post", initialContent: post.body }))) })
1765
1767
  ] }),
1766
1768
  more.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "section", { className: "mx-auto mt-16 max-w-5xl", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "border-border border-t pt-10", children: [
1767
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPVLFNLBjs.SectionHeader, { level: 2, children: t("blog.public.moreIn", { category: _nullishCoalesce(_optionalChain([category, 'optionalAccess', _48 => _48.name]), () => ( "")) }) }),
1769
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.SectionHeader, { level: 2, children: t("blog.public.moreIn", { category: _nullishCoalesce(_optionalChain([category, 'optionalAccess', _48 => _48.name]), () => ( "")) }) }),
1768
1770
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-6 grid gap-x-6 gap-y-10 sm:grid-cols-2 lg:grid-cols-3", children: more.map((relatedPost) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1769
1771
  BlogPostCard,
1770
1772
  {
@@ -1817,5 +1819,5 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostView, "BlogPostView");
1817
1819
 
1818
1820
 
1819
1821
 
1820
- exports.BLOG_ACTION = _chunkNPGX2GJDjs.BLOG_ACTION; exports.BLOG_CATEGORY_UPLOAD_PREFIX = _chunkNPGX2GJDjs.BLOG_CATEGORY_UPLOAD_PREFIX; exports.BLOG_LIST_LAYOUTS = _chunkNPGX2GJDjs.BLOG_LIST_LAYOUTS; exports.BLOG_MODULE_ID = _chunkNPGX2GJDjs.BLOG_MODULE_ID; exports.BLOG_POST_STATUSES = _chunkNPGX2GJDjs.BLOG_POST_STATUSES; exports.BLOG_POST_UPLOAD_PREFIX = _chunkNPGX2GJDjs.BLOG_POST_UPLOAD_PREFIX; exports.BLOG_PUBLIC_PREFIX = _chunkNPGX2GJDjs.BLOG_PUBLIC_PREFIX; exports.BLOG_SETTINGS_ID = _chunkNPGX2GJDjs.BLOG_SETTINGS_ID; exports.BLOG_STATUS_BADGE = BLOG_STATUS_BADGE; exports.BLOG_TRANSLATION_SOURCES = _chunkNPGX2GJDjs.BLOG_TRANSLATION_SOURCES; exports.BLOG_UPLOAD_ROOT = _chunkNPGX2GJDjs.BLOG_UPLOAD_ROOT; exports.BlogAdminContainer = BlogAdminContainer; exports.BlogCategoriesList = BlogCategoriesList; exports.BlogCategoryEditor = BlogCategoryEditor; exports.BlogCoverImageField = BlogCoverImageField; exports.BlogLayoutSetting = BlogLayoutSetting; exports.BlogList = BlogList; exports.BlogPostComparison = BlogPostComparison; exports.BlogPostContainer = BlogPostContainer; exports.BlogPostDeleter = BlogPostDeleter; exports.BlogPostEditor = BlogPostEditor; exports.BlogPostProvider = BlogPostProvider; exports.BlogPostPublishButton = BlogPostPublishButton; exports.BlogPostTranslationEditor = BlogPostTranslationEditor; exports.BlogPostTranslationFields = BlogPostTranslationFields; exports.BlogPostTranslationPanel = BlogPostTranslationPanel; exports.BlogPostView = BlogPostView; exports.BlogPostsList = BlogPostsList; exports.BlogTranslationStatus = BlogTranslationStatus; exports.blogCategoryAdminName = blogCategoryAdminName; exports.uploadBlogImage = uploadBlogImage; exports.useBlogCategoryNames = useBlogCategoryNames; exports.useBlogCategoryTableStructure = useBlogCategoryTableStructure; exports.useBlogDateFormatter = useBlogDateFormatter; exports.useBlogLanguageName = useBlogLanguageName; exports.useBlogPost = useBlogPost; exports.useBlogPostTableStructure = useBlogPostTableStructure;
1822
+ exports.BLOG_ACTION = _chunkCI64OTRXjs.BLOG_ACTION; exports.BLOG_CATEGORY_UPLOAD_PREFIX = _chunkCI64OTRXjs.BLOG_CATEGORY_UPLOAD_PREFIX; exports.BLOG_LIST_LAYOUTS = _chunkCI64OTRXjs.BLOG_LIST_LAYOUTS; exports.BLOG_MODULE_ID = _chunkCI64OTRXjs.BLOG_MODULE_ID; exports.BLOG_POST_STATUSES = _chunkCI64OTRXjs.BLOG_POST_STATUSES; exports.BLOG_POST_UPLOAD_PREFIX = _chunkCI64OTRXjs.BLOG_POST_UPLOAD_PREFIX; exports.BLOG_PUBLIC_PREFIX = _chunkCI64OTRXjs.BLOG_PUBLIC_PREFIX; exports.BLOG_SETTINGS_ID = _chunkCI64OTRXjs.BLOG_SETTINGS_ID; exports.BLOG_STATUS_BADGE = BLOG_STATUS_BADGE; exports.BLOG_TRANSLATION_SOURCES = _chunkCI64OTRXjs.BLOG_TRANSLATION_SOURCES; exports.BLOG_UPLOAD_ROOT = _chunkCI64OTRXjs.BLOG_UPLOAD_ROOT; exports.BlogAdminContainer = BlogAdminContainer; exports.BlogCategoriesList = BlogCategoriesList; exports.BlogCategoryEditor = BlogCategoryEditor; exports.BlogCoverImageField = BlogCoverImageField; exports.BlogLayoutSetting = BlogLayoutSetting; exports.BlogList = BlogList; exports.BlogPostComparison = BlogPostComparison; exports.BlogPostContainer = BlogPostContainer; exports.BlogPostDeleter = BlogPostDeleter; exports.BlogPostEditor = BlogPostEditor; exports.BlogPostProvider = BlogPostProvider; exports.BlogPostPublishButton = BlogPostPublishButton; exports.BlogPostTranslationEditor = BlogPostTranslationEditor; exports.BlogPostTranslationFields = BlogPostTranslationFields; exports.BlogPostTranslationPanel = BlogPostTranslationPanel; exports.BlogPostView = BlogPostView; exports.BlogPostsList = BlogPostsList; exports.BlogTranslationStatus = BlogTranslationStatus; exports.blogCategoryAdminName = blogCategoryAdminName; exports.uploadBlogImage = uploadBlogImage; exports.useBlogCategoryNames = useBlogCategoryNames; exports.useBlogCategoryTableStructure = useBlogCategoryTableStructure; exports.useBlogDateFormatter = useBlogDateFormatter; exports.useBlogLanguageName = useBlogLanguageName; exports.useBlogPost = useBlogPost; exports.useBlogPostTableStructure = useBlogPostTableStructure;
1821
1823
  //# sourceMappingURL=index.js.map