@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.
- package/dist/{BlockNoteEditor-KRNC6EAX.mjs → BlockNoteEditor-DCVT7YHE.mjs} +4 -4
- package/dist/{BlockNoteEditor-VXSVY6OY.js → BlockNoteEditor-ZVK5MD34.js} +24 -24
- package/dist/{BlockNoteEditor-VXSVY6OY.js.map → BlockNoteEditor-ZVK5MD34.js.map} +1 -1
- package/dist/{BlockNoteViewer-RQBYHBQL.js → BlockNoteViewer-2KPGZSTJ.js} +3 -3
- package/dist/{BlockNoteViewer-RQBYHBQL.js.map → BlockNoteViewer-2KPGZSTJ.js.map} +1 -1
- package/dist/{BlockNoteViewer-NVSR67X5.mjs → BlockNoteViewer-XDAC6AL7.mjs} +2 -2
- package/dist/billing/index.js +477 -469
- package/dist/billing/index.js.map +1 -1
- package/dist/billing/index.mjs +15 -7
- package/dist/billing/index.mjs.map +1 -1
- package/dist/{chunk-5H25LM2Z.js → chunk-576XHOYH.js} +5 -5
- package/dist/{chunk-5H25LM2Z.js.map → chunk-576XHOYH.js.map} +1 -1
- package/dist/{chunk-NPGX2GJD.js → chunk-CI64OTRX.js} +98 -75
- package/dist/chunk-CI64OTRX.js.map +1 -0
- package/dist/{chunk-AEBZ67JJ.mjs → chunk-ETU3AW2X.mjs} +2 -2
- package/dist/{chunk-4JVLLBRS.mjs → chunk-GUNH3THR.mjs} +24 -1
- package/dist/chunk-GUNH3THR.mjs.map +1 -0
- package/dist/{chunk-GPVLFNLB.js → chunk-KH4Y4FU4.js} +1411 -1187
- package/dist/chunk-KH4Y4FU4.js.map +1 -0
- package/dist/{chunk-PNCO3HMJ.js → chunk-TCAOU6NH.js} +3 -3
- package/dist/{chunk-PNCO3HMJ.js.map → chunk-TCAOU6NH.js.map} +1 -1
- package/dist/{chunk-4SXHRANW.mjs → chunk-V4NPMUZ2.mjs} +2627 -2403
- package/dist/chunk-V4NPMUZ2.mjs.map +1 -0
- package/dist/{chunk-AMQFKCAX.mjs → chunk-WPFEPIKP.mjs} +2 -2
- package/dist/client/index.js +6 -4
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +5 -3
- package/dist/components/index.js +12 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +11 -3
- package/dist/components/tables/ContentListTable.d.ts +14 -0
- package/dist/components/tables/ContentListTable.d.ts.map +1 -1
- package/dist/components/tables/SortableHeader.d.ts +17 -0
- package/dist/components/tables/SortableHeader.d.ts.map +1 -0
- package/dist/components/tables/cells/cell.date.d.ts +4 -0
- package/dist/components/tables/cells/cell.date.d.ts.map +1 -1
- package/dist/components/tables/cells/cell.dateTime.d.ts +4 -0
- package/dist/components/tables/cells/cell.dateTime.d.ts.map +1 -1
- package/dist/components/tables/cells/cell.link.d.ts +4 -0
- package/dist/components/tables/cells/cell.link.d.ts.map +1 -1
- package/dist/components/tables/cells/cell.text.d.ts +4 -0
- package/dist/components/tables/cells/cell.text.d.ts.map +1 -1
- package/dist/components/tables/index.d.ts +2 -0
- package/dist/components/tables/index.d.ts.map +1 -1
- package/dist/components/tables/sorting.d.ts +24 -0
- package/dist/components/tables/sorting.d.ts.map +1 -0
- package/dist/contexts/index.js +4 -4
- package/dist/contexts/index.mjs +3 -3
- package/dist/core/index.js +2 -2
- package/dist/core/index.mjs +1 -1
- package/dist/email-automations/index.js +120 -115
- package/dist/email-automations/index.js.map +1 -1
- package/dist/email-automations/index.mjs +18 -13
- package/dist/email-automations/index.mjs.map +1 -1
- package/dist/features/analytics/index.js +114 -114
- package/dist/features/analytics/index.mjs +3 -3
- package/dist/features/analytics/server.js +4 -4
- package/dist/features/analytics/server.mjs +2 -2
- package/dist/features/billing/stripe-coupon/components/lists/CouponCodesList.d.ts.map +1 -1
- package/dist/features/billing/stripe-coupon/components/lists/CouponsList.d.ts.map +1 -1
- package/dist/features/billing/stripe-coupon/data/stripe-coupon-code.service.d.ts +2 -0
- package/dist/features/billing/stripe-coupon/data/stripe-coupon-code.service.d.ts.map +1 -1
- package/dist/features/billing/stripe-coupon/data/stripe-coupon.service.d.ts +1 -0
- package/dist/features/billing/stripe-coupon/data/stripe-coupon.service.d.ts.map +1 -1
- package/dist/features/billing/stripe-coupon/hooks/useStripeCouponCodeTableStructure.d.ts.map +1 -1
- package/dist/features/billing/stripe-coupon/hooks/useStripeCouponTableStructure.d.ts.map +1 -1
- package/dist/features/billing/stripe-price/components/lists/PricesList.d.ts.map +1 -1
- package/dist/features/billing/stripe-price/data/stripe-price.service.d.ts +2 -0
- package/dist/features/billing/stripe-price/data/stripe-price.service.d.ts.map +1 -1
- package/dist/features/billing/stripe-price/hooks/useStripePriceTableStructure.d.ts.map +1 -1
- package/dist/features/billing/stripe-product/components/lists/ProductsList.d.ts.map +1 -1
- package/dist/features/billing/stripe-product/data/stripe-product.service.d.ts +2 -0
- package/dist/features/billing/stripe-product/data/stripe-product.service.d.ts.map +1 -1
- package/dist/features/billing/stripe-product/hooks/useStripeProductTableStructure.d.ts.map +1 -1
- package/dist/features/blog/components/admin/BlogPostsList.d.ts.map +1 -1
- package/dist/features/blog/data/BlogPostService.d.ts +1 -0
- package/dist/features/blog/data/BlogPostService.d.ts.map +1 -1
- package/dist/features/blog/index.js +134 -132
- package/dist/features/blog/index.js.map +1 -1
- package/dist/features/blog/index.mjs +8 -6
- package/dist/features/blog/index.mjs.map +1 -1
- package/dist/features/blog/server.js +7 -7
- package/dist/features/blog/server.mjs +1 -1
- package/dist/features/company/components/lists/CompaniesList.d.ts.map +1 -1
- package/dist/features/company/data/company.service.d.ts +1 -0
- package/dist/features/company/data/company.service.d.ts.map +1 -1
- package/dist/features/content/data/content.service.d.ts +3 -0
- package/dist/features/content/data/content.service.d.ts.map +1 -1
- package/dist/features/email-automation/components/lists/EmailAutomationRecipientsList.d.ts.map +1 -1
- package/dist/features/email-automation/components/lists/EmailAutomationsList.d.ts.map +1 -1
- package/dist/features/email-automation/data/EmailAutomationService.d.ts +3 -0
- package/dist/features/email-automation/data/EmailAutomationService.d.ts.map +1 -1
- package/dist/features/email-automation/hooks/useEmailAutomationTableStructure.d.ts.map +1 -1
- package/dist/features/email-blast/components/lists/EmailBlastsList.d.ts.map +1 -1
- package/dist/features/email-blast/data/EmailBlastService.d.ts +1 -0
- package/dist/features/email-blast/data/EmailBlastService.d.ts.map +1 -1
- package/dist/features/email-blast/hooks/useEmailBlastTableStructure.d.ts.map +1 -1
- package/dist/features/help/index.js +37 -37
- package/dist/features/help/index.mjs +3 -3
- package/dist/features/how-to/components/lists/HowToList.d.ts.map +1 -1
- package/dist/features/how-to/data/HowToService.d.ts +2 -0
- package/dist/features/how-to/data/HowToService.d.ts.map +1 -1
- package/dist/features/notification/components/lists/NotificationsList.d.ts.map +1 -1
- package/dist/features/notification/data/notification.service.d.ts +2 -0
- package/dist/features/notification/data/notification.service.d.ts.map +1 -1
- package/dist/features/referral/components/containers/ReferralsAdminContainer.d.ts.map +1 -1
- package/dist/features/referral/data/ReferralAdminService.d.ts +1 -0
- package/dist/features/referral/data/ReferralAdminService.d.ts.map +1 -1
- package/dist/features/referral/hooks/useReferralAdminReferralTableStructure.d.ts.map +1 -1
- package/dist/features/role/components/lists/RolesList.d.ts.map +1 -1
- package/dist/features/role/components/lists/UserRolesList.d.ts.map +1 -1
- package/dist/features/role/data/role.service.d.ts +3 -0
- package/dist/features/role/data/role.service.d.ts.map +1 -1
- package/dist/features/tokenusage/index.js +114 -114
- package/dist/features/tokenusage/index.mjs +3 -3
- package/dist/features/user/components/lists/AdminUsersList.d.ts.map +1 -1
- package/dist/features/user/components/lists/CompanyUsersList.d.ts.map +1 -1
- package/dist/features/user/components/lists/PlatformUsersList.d.ts.map +1 -1
- package/dist/features/user/components/lists/RoleUsersList.d.ts.map +1 -1
- package/dist/features/user/components/lists/UsersListByContentIds.d.ts.map +1 -1
- package/dist/features/user/data/user.service.d.ts +11 -0
- package/dist/features/user/data/user.service.d.ts.map +1 -1
- package/dist/features/waitlist/components/lists/WaitlistList.d.ts.map +1 -1
- package/dist/features/waitlist/data/WaitlistService.d.ts +2 -0
- package/dist/features/waitlist/data/WaitlistService.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useDataListRetriever.d.ts +13 -0
- package/dist/hooks/useDataListRetriever.d.ts.map +1 -1
- package/dist/hooks/useListSortParam.d.ts +23 -0
- package/dist/hooks/useListSortParam.d.ts.map +1 -0
- package/dist/index.js +3 -3
- package/dist/index.mjs +2 -2
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- package/package.json +1 -1
- package/src/components/tables/ContentListTable.tsx +108 -10
- package/src/components/tables/SortableHeader.tsx +43 -0
- package/src/components/tables/__tests__/ContentListTable.rendering.spec.tsx +1 -0
- package/src/components/tables/__tests__/ContentListTable.sort.spec.tsx +273 -0
- package/src/components/tables/__tests__/sorting.spec.ts +61 -0
- package/src/components/tables/cells/cell.date.tsx +10 -2
- package/src/components/tables/cells/cell.dateTime.tsx +10 -2
- package/src/components/tables/cells/cell.link.tsx +6 -1
- package/src/components/tables/cells/cell.text.tsx +11 -2
- package/src/components/tables/index.ts +2 -0
- package/src/components/tables/sorting.ts +41 -0
- package/src/features/billing/stripe-coupon/components/lists/CouponCodesList.tsx +2 -0
- package/src/features/billing/stripe-coupon/components/lists/CouponsList.tsx +2 -0
- package/src/features/billing/stripe-coupon/data/stripe-coupon-code.service.ts +4 -0
- package/src/features/billing/stripe-coupon/data/stripe-coupon.service.ts +7 -1
- package/src/features/billing/stripe-coupon/hooks/__tests__/useStripeCouponCodeTableStructure.sort.spec.tsx +30 -0
- package/src/features/billing/stripe-coupon/hooks/__tests__/useStripeCouponTableStructure.sort.spec.tsx +33 -0
- package/src/features/billing/stripe-coupon/hooks/useStripeCouponCodeTableStructure.tsx +5 -4
- package/src/features/billing/stripe-coupon/hooks/useStripeCouponTableStructure.tsx +7 -4
- package/src/features/billing/stripe-price/components/lists/PricesList.tsx +2 -0
- package/src/features/billing/stripe-price/data/stripe-price.service.ts +4 -0
- package/src/features/billing/stripe-price/hooks/__tests__/useStripePriceTableStructure.sort.spec.tsx +29 -0
- package/src/features/billing/stripe-price/hooks/useStripePriceTableStructure.tsx +8 -5
- package/src/features/billing/stripe-product/components/lists/ProductsList.tsx +2 -0
- package/src/features/billing/stripe-product/data/stripe-product.service.ts +4 -0
- package/src/features/billing/stripe-product/hooks/__tests__/useStripeProductTableStructure.sort.spec.tsx +29 -0
- package/src/features/billing/stripe-product/hooks/useStripeProductTableStructure.tsx +3 -2
- package/src/features/blog/components/admin/BlogPostsList.tsx +2 -0
- package/src/features/blog/data/BlogPostService.ts +3 -1
- package/src/features/blog/hooks/__tests__/useBlogPostTableStructure.sort.spec.tsx +19 -0
- package/src/features/blog/hooks/useBlogPostTableStructure.tsx +2 -2
- package/src/features/company/components/lists/CompaniesList.tsx +2 -0
- package/src/features/company/data/company.service.ts +3 -1
- package/src/features/company/hooks/__tests__/useCompanyTableStructure.sort.spec.tsx +19 -0
- package/src/features/company/hooks/useCompanyTableStructure.tsx +1 -1
- package/src/features/content/data/content.service.ts +12 -1
- package/src/features/content/hooks/__tests__/useContentTableStructure.sort.spec.tsx +21 -0
- package/src/features/content/hooks/useContentTableStructure.tsx +1 -1
- package/src/features/email-automation/components/lists/EmailAutomationRecipientsList.tsx +2 -0
- package/src/features/email-automation/components/lists/EmailAutomationsList.tsx +2 -0
- package/src/features/email-automation/data/EmailAutomationService.ts +9 -1
- package/src/features/email-automation/hooks/__tests__/useEmailAutomationEnrollmentTableStructure.sort.spec.tsx +21 -0
- package/src/features/email-automation/hooks/__tests__/useEmailAutomationTableStructure.sort.spec.tsx +29 -0
- package/src/features/email-automation/hooks/useEmailAutomationEnrollmentTableStructure.tsx +4 -4
- package/src/features/email-automation/hooks/useEmailAutomationTableStructure.tsx +5 -4
- package/src/features/email-blast/components/lists/EmailBlastsList.tsx +2 -0
- package/src/features/email-blast/data/EmailBlastService.ts +5 -1
- package/src/features/email-blast/hooks/__tests__/useEmailBlastTableStructure.sort.spec.tsx +29 -0
- package/src/features/email-blast/hooks/useEmailBlastTableStructure.tsx +16 -8
- package/src/features/how-to/components/lists/HowToList.tsx +2 -0
- package/src/features/how-to/data/HowToService.ts +4 -0
- package/src/features/how-to/hooks/__tests__/useHowToTableStructure.sort.spec.tsx +18 -0
- package/src/features/how-to/hooks/useHowToTableStructure.tsx +1 -1
- package/src/features/notification/components/lists/NotificationsList.tsx +2 -0
- package/src/features/notification/data/notification.service.ts +4 -0
- package/src/features/notification/hooks/__tests__/useNotificationTableStructure.sort.spec.tsx +19 -0
- package/src/features/notification/hooks/useNotificationTableStructure.tsx +1 -1
- package/src/features/referral/components/containers/ReferralsAdminContainer.tsx +4 -2
- package/src/features/referral/data/ReferralAdminService.ts +6 -1
- package/src/features/referral/hooks/__tests__/useReferralAdminReferralTableStructure.sort.spec.tsx +35 -0
- package/src/features/referral/hooks/useReferralAdminReferralTableStructure.tsx +10 -5
- package/src/features/role/components/lists/RolesList.tsx +2 -0
- package/src/features/role/components/lists/UserRolesList.tsx +2 -0
- package/src/features/role/data/role.service.ts +7 -1
- package/src/features/role/hooks/__tests__/useRoleTableStructure.sort.spec.tsx +16 -0
- package/src/features/role/hooks/useRoleTableStructure.tsx +2 -2
- package/src/features/user/components/lists/AdminUsersList.tsx +2 -0
- package/src/features/user/components/lists/CompanyUsersList.tsx +4 -0
- package/src/features/user/components/lists/PlatformUsersList.tsx +2 -0
- package/src/features/user/components/lists/RoleUsersList.tsx +2 -0
- package/src/features/user/components/lists/UsersListByContentIds.tsx +2 -0
- package/src/features/user/data/user.service.ts +28 -1
- package/src/features/user/hooks/__tests__/useUserTableStructure.sort.spec.tsx +16 -0
- package/src/features/user/hooks/useUserTableStructure.tsx +2 -2
- package/src/features/waitlist/components/lists/WaitlistList.tsx +2 -0
- package/src/features/waitlist/data/WaitlistService.ts +4 -0
- package/src/features/waitlist/hooks/__tests__/useWaitlistTableStructure.sort.spec.tsx +17 -0
- package/src/features/waitlist/hooks/useWaitlistTableStructure.tsx +3 -3
- package/src/hooks/__tests__/useDataListRetriever.sort.spec.tsx +114 -0
- package/src/hooks/__tests__/useListSortParam.spec.tsx +91 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useDataListRetriever.ts +44 -4
- package/src/hooks/useListSortParam.ts +53 -0
- package/dist/chunk-4JVLLBRS.mjs.map +0 -1
- package/dist/chunk-4SXHRANW.mjs.map +0 -1
- package/dist/chunk-GPVLFNLB.js.map +0 -1
- package/dist/chunk-NPGX2GJD.js.map +0 -1
- /package/dist/{BlockNoteEditor-KRNC6EAX.mjs.map → BlockNoteEditor-DCVT7YHE.mjs.map} +0 -0
- /package/dist/{BlockNoteViewer-NVSR67X5.mjs.map → BlockNoteViewer-XDAC6AL7.mjs.map} +0 -0
- /package/dist/{chunk-AEBZ67JJ.mjs.map → chunk-ETU3AW2X.mjs.map} +0 -0
- /package/dist/{chunk-AMQFKCAX.mjs.map → chunk-WPFEPIKP.mjs.map} +0 -0
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
var
|
|
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-
|
|
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
|
|
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
|
|
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,
|
|
153
|
-
|
|
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,
|
|
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:
|
|
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,
|
|
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
|
-
|
|
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,
|
|
246
|
-
onRetranslate && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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,
|
|
374
|
-
category && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
375
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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:
|
|
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,
|
|
391
|
-
translations.map((translation, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
392
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
501
|
-
retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) =>
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
|
560
|
-
|
|
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
|
-
|
|
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,
|
|
569
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKH4Y4FU4js.SectionHeader, { children: t("blog.layout.title") }),
|
|
570
570
|
layout && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
571
|
-
|
|
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:
|
|
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,
|
|
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
|
-
|
|
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 =
|
|
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,
|
|
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,
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
842
|
+
_chunkKH4Y4FU4js.EntityMultiSelector,
|
|
843
843
|
{
|
|
844
844
|
id: "categories",
|
|
845
845
|
form,
|
|
846
846
|
label: t("blog.fields.categories"),
|
|
847
|
-
retriever: (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
|
-
|
|
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:
|
|
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,
|
|
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
|
-
|
|
883
|
+
_chunkKH4Y4FU4js.FormBlockNote,
|
|
884
884
|
{
|
|
885
|
-
uploadKeyPrefix:
|
|
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 =
|
|
907
|
-
retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) =>
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
947
|
-
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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: () =>
|
|
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
|
|
1041
|
-
else await
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
1079
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1080
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1081
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1082
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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,
|
|
1093
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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,
|
|
1100
|
-
translation.source === "manual" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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
|
-
|
|
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) =>
|
|
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,
|
|
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,
|
|
1181
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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,
|
|
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
|
-
|
|
1188
|
+
_chunkKH4Y4FU4js.FormBlockNote,
|
|
1187
1189
|
{
|
|
1188
|
-
uploadKeyPrefix:
|
|
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,
|
|
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,
|
|
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:
|
|
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,
|
|
1244
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
1406
|
+
_chunkKH4Y4FU4js.Badge,
|
|
1405
1407
|
{
|
|
1406
1408
|
variant: item.active ? "default" : inactiveVariant,
|
|
1407
|
-
render: /* @__PURE__ */ _jsxruntime.jsx.call(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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
1443
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|
|
1506
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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,
|
|
1573
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 =
|
|
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
|