@carlonicora/nextjs-jsonapi 6.24.0 → 6.26.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-MONT74RQ.js → BlockNoteEditor-JHXDOCS5.js} +28 -25
- package/dist/BlockNoteEditor-JHXDOCS5.js.map +1 -0
- package/dist/{BlockNoteEditor-ENDOVTAW.mjs → BlockNoteEditor-RVDSB6TF.mjs} +13 -10
- package/dist/{BlockNoteEditor-ENDOVTAW.mjs.map → BlockNoteEditor-RVDSB6TF.mjs.map} +1 -1
- package/dist/{BlockNoteViewer-2TJZ6JET.mjs → BlockNoteViewer-76CKL6W5.mjs} +8 -6
- package/dist/{BlockNoteViewer-2TJZ6JET.mjs.map → BlockNoteViewer-76CKL6W5.mjs.map} +1 -1
- package/dist/{BlockNoteViewer-K2HBF3IP.js → BlockNoteViewer-B25WKYQP.js} +9 -7
- package/dist/BlockNoteViewer-B25WKYQP.js.map +1 -0
- package/dist/JsonApiRequest-OKNQZLS6.js +26 -0
- package/dist/{JsonApiRequest-KC6DOHKT.js.map → JsonApiRequest-OKNQZLS6.js.map} +1 -1
- package/dist/{JsonApiRequest-ADLBJ5RX.mjs → JsonApiRequest-WNPDS356.mjs} +2 -2
- package/dist/billing/index.js +504 -517
- package/dist/billing/index.js.map +1 -1
- package/dist/billing/index.mjs +20 -33
- package/dist/billing/index.mjs.map +1 -1
- package/dist/{chunk-VNUT2D27.mjs → chunk-2PWYG2WJ.mjs} +2 -2
- package/dist/{chunk-W4ML6D2X.mjs → chunk-3U7YJ73T.mjs} +7 -7
- package/dist/{chunk-BQ2WAG4K.js → chunk-3VNDFKT7.js} +19 -19
- package/dist/{chunk-BQ2WAG4K.js.map → chunk-3VNDFKT7.js.map} +1 -1
- package/dist/{chunk-BE6UMM5X.mjs → chunk-47HNJQ7U.mjs} +3 -3
- package/dist/chunk-5T2AQMQ2.mjs +90 -0
- package/dist/chunk-5T2AQMQ2.mjs.map +1 -0
- package/dist/{chunk-A5M3MORY.js → chunk-5WM72MLE.js} +3 -3
- package/dist/{chunk-A5M3MORY.js.map → chunk-5WM72MLE.js.map} +1 -1
- package/dist/{chunk-OZADFYE7.mjs → chunk-64REWDSK.mjs} +308 -241
- package/dist/chunk-64REWDSK.mjs.map +1 -0
- package/dist/{chunk-S7SPAC6X.mjs → chunk-73NKUBMP.mjs} +3 -3
- package/dist/chunk-743M4TIB.mjs +76 -0
- package/dist/chunk-743M4TIB.mjs.map +1 -0
- package/dist/{chunk-HN7L6RRW.js → chunk-77JC2UCF.js} +903 -955
- package/dist/chunk-77JC2UCF.js.map +1 -0
- package/dist/{chunk-7OIWOPM5.mjs → chunk-7MGXQIEP.mjs} +4 -3
- package/dist/chunk-7MGXQIEP.mjs.map +1 -0
- package/dist/{chunk-YTDGYI62.mjs → chunk-DWPHHUMV.mjs} +3 -3
- package/dist/{chunk-SO3YUCL6.js → chunk-F3EVYBMA.js} +6 -5
- package/dist/chunk-F3EVYBMA.js.map +1 -0
- package/dist/{chunk-53SD4YRF.js → chunk-FBHUUPRV.js} +5 -5
- package/dist/{chunk-53SD4YRF.js.map → chunk-FBHUUPRV.js.map} +1 -1
- package/dist/{chunk-T6G2F2BK.mjs → chunk-FJUKLVVX.mjs} +16 -68
- package/dist/chunk-FJUKLVVX.mjs.map +1 -0
- package/dist/chunk-HROKKUBQ.js +156 -0
- package/dist/chunk-HROKKUBQ.js.map +1 -0
- package/dist/{chunk-BDWV4KYR.js → chunk-JE6QWCNE.js} +1386 -1319
- package/dist/chunk-JE6QWCNE.js.map +1 -0
- package/dist/{chunk-RCOKQ3R4.js → chunk-LNO2JLU3.js} +2 -2
- package/dist/{chunk-RCOKQ3R4.js.map → chunk-LNO2JLU3.js.map} +1 -1
- package/dist/{chunk-TMV7TL7O.mjs → chunk-M7YK5CCE.mjs} +8 -6
- package/dist/{chunk-TMV7TL7O.mjs.map → chunk-M7YK5CCE.mjs.map} +1 -1
- package/dist/{chunk-GMMDXINC.js → chunk-N3NQS7X6.js} +12 -12
- package/dist/{chunk-GMMDXINC.js.map → chunk-N3NQS7X6.js.map} +1 -1
- package/dist/chunk-NP3AFULU.js +76 -0
- package/dist/chunk-NP3AFULU.js.map +1 -0
- package/dist/{chunk-TNTCLVUR.js → chunk-ONU4WCDG.js} +17 -15
- package/dist/chunk-ONU4WCDG.js.map +1 -0
- package/dist/{chunk-YSE2Z4RB.js → chunk-PQQFOONG.js} +12 -12
- package/dist/{chunk-YSE2Z4RB.js.map → chunk-PQQFOONG.js.map} +1 -1
- package/dist/chunk-RW6XZGZG.mjs +156 -0
- package/dist/chunk-RW6XZGZG.mjs.map +1 -0
- package/dist/chunk-SYMI4IDW.js +90 -0
- package/dist/chunk-SYMI4IDW.js.map +1 -0
- package/dist/{chunk-N2BFT7KI.mjs → chunk-W7U6O3OE.mjs} +2 -71
- package/dist/chunk-W7U6O3OE.mjs.map +1 -0
- package/dist/{chunk-YMCL3JXZ.mjs → chunk-YPBIPE2B.mjs} +2 -2
- package/dist/{chunk-P7L6OFX5.js → chunk-Z6T2575A.js} +12 -81
- package/dist/chunk-Z6T2575A.js.map +1 -0
- package/dist/client/index.js +13 -10
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +17 -14
- package/dist/components/forms/DatePickerPopover.d.ts.map +1 -1
- package/dist/components/forms/DateRangeSelector.d.ts.map +1 -1
- package/dist/components/forms/FormDate.d.ts.map +1 -1
- package/dist/components/forms/FormDateTime.d.ts.map +1 -1
- package/dist/components/forms/time-cycle.d.ts +14 -0
- package/dist/components/forms/time-cycle.d.ts.map +1 -0
- package/dist/components/index.js +11 -8
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +10 -7
- package/dist/components/tables/cells/cell.date.d.ts.map +1 -1
- package/dist/components/tables/cells/cell.dateTime.d.ts.map +1 -1
- package/dist/contexts/DateLocaleContext.d.ts +56 -0
- package/dist/contexts/DateLocaleContext.d.ts.map +1 -0
- package/dist/contexts/index.d.ts +1 -0
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/contexts/index.js +24 -8
- package/dist/contexts/index.js.map +1 -1
- package/dist/contexts/index.mjs +23 -7
- package/dist/core/index.js +17 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +19 -8
- package/dist/date-locale/index.d.ts +2 -0
- package/dist/date-locale/index.d.ts.map +1 -0
- package/dist/date-locale/index.js +21 -0
- package/dist/date-locale/index.js.map +1 -0
- package/dist/date-locale/index.mjs +21 -0
- package/dist/email-automations/index.js +131 -123
- package/dist/email-automations/index.js.map +1 -1
- package/dist/email-automations/index.mjs +23 -15
- package/dist/email-automations/index.mjs.map +1 -1
- package/dist/features/account-deletion/components/AccountDeletionAdminTrigger.d.ts.map +1 -1
- package/dist/features/analytics/components/AnalyticsJourneyContainer.d.ts.map +1 -1
- package/dist/features/analytics/components/AnalyticsSessionsTable.d.ts.map +1 -1
- package/dist/features/analytics/index.js +154 -147
- package/dist/features/analytics/index.js.map +1 -1
- package/dist/features/analytics/index.mjs +32 -25
- package/dist/features/analytics/index.mjs.map +1 -1
- package/dist/features/analytics/server.js +11 -9
- package/dist/features/analytics/server.js.map +1 -1
- package/dist/features/analytics/server.mjs +9 -7
- package/dist/features/analytics/server.mjs.map +1 -1
- package/dist/features/billing/components/utils/date.d.ts +3 -3
- package/dist/features/billing/components/utils/format-options.d.ts +6 -4
- package/dist/features/billing/components/utils/format-options.d.ts.map +1 -1
- package/dist/features/billing/components/utils/useBillingFormatOptions.d.ts +5 -1
- package/dist/features/billing/components/utils/useBillingFormatOptions.d.ts.map +1 -1
- package/dist/features/billing/stripe-usage/components/details/UsageSummaryCard.d.ts.map +1 -1
- package/dist/features/billing/stripe-usage/components/lists/UsageHistoryTable.d.ts.map +1 -1
- package/dist/features/blog/components/admin/BlogTranslationStatus.d.ts.map +1 -1
- package/dist/features/blog/components/public/BlogPostMeta.d.ts.map +1 -1
- package/dist/features/blog/hooks/useBlogPostTableStructure.d.ts.map +1 -1
- package/dist/features/blog/index.js +168 -162
- package/dist/features/blog/index.js.map +1 -1
- package/dist/features/blog/index.mjs +25 -19
- package/dist/features/blog/index.mjs.map +1 -1
- package/dist/features/blog/server.js +29 -27
- package/dist/features/blog/server.js.map +1 -1
- package/dist/features/blog/server.mjs +8 -6
- package/dist/features/blog/server.mjs.map +1 -1
- package/dist/features/email-automation/hooks/useEmailAutomationEnrollmentTableStructure.d.ts.map +1 -1
- package/dist/features/handbook/components/parts/HandbookIndexStatus.d.ts.map +1 -1
- package/dist/features/help/components/HelpArticleBody.d.ts.map +1 -1
- package/dist/features/help/index.js +48 -43
- package/dist/features/help/index.js.map +1 -1
- package/dist/features/help/index.mjs +15 -10
- package/dist/features/help/index.mjs.map +1 -1
- package/dist/features/notification/components/notifications/Notification.d.ts +2 -1
- package/dist/features/notification/components/notifications/Notification.d.ts.map +1 -1
- package/dist/features/notification/contexts/NotificationContext.d.ts.map +1 -1
- package/dist/features/notification/hooks/useNotificationTableStructure.d.ts.map +1 -1
- package/dist/features/oauth/components/OAuthClientCard.d.ts.map +1 -1
- package/dist/features/oauth/components/OAuthClientDetail.d.ts.map +1 -1
- package/dist/features/tokenusage/index.js +133 -130
- package/dist/features/tokenusage/index.js.map +1 -1
- package/dist/features/tokenusage/index.mjs +10 -7
- package/dist/features/tokenusage/index.mjs.map +1 -1
- package/dist/features/tokenusage/lib/formatters.d.ts +6 -3
- package/dist/features/tokenusage/lib/formatters.d.ts.map +1 -1
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +23 -11
- package/dist/local-transport-AT4TE264.js +15 -0
- package/dist/{local-transport-MJPOKPTU.js.map → local-transport-AT4TE264.js.map} +1 -1
- package/dist/{local-transport-RVD4FZGA.mjs → local-transport-KWEUZ4GX.mjs} +5 -5
- package/dist/offline/index.js +56 -54
- package/dist/offline/index.js.map +1 -1
- package/dist/offline/index.mjs +23 -21
- package/dist/offline/index.mjs.map +1 -1
- package/dist/{request-4AWGPIGH.mjs → request-6GAIWWTG.mjs} +2 -2
- package/dist/{request-H5FZBZA2.js → request-BWO4Y434.js} +3 -3
- package/dist/{request-H5FZBZA2.js.map → request-BWO4Y434.js.map} +1 -1
- package/dist/server/ServerSession.d.ts +2 -0
- package/dist/server/ServerSession.d.ts.map +1 -1
- package/dist/server/index.js +10 -8
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +9 -7
- package/dist/utils/date-formatter.d.ts +45 -4
- package/dist/utils/date-formatter.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/toast.d.ts +2 -0
- package/dist/utils/toast.d.ts.map +1 -1
- package/dist/write-through-KNRI5L4V.mjs +15 -0
- package/dist/write-through-KNRI5L4V.mjs.map +1 -0
- package/dist/write-through-MYHQ6GJU.js +15 -0
- package/dist/{write-through-HE2QSOVI.js.map → write-through-MYHQ6GJU.js.map} +1 -1
- package/messages/en.json +1 -0
- package/messages/it.json +1 -0
- package/package.json +6 -1
- package/src/components/forms/DatePickerPopover.tsx +5 -3
- package/src/components/forms/DateRangeSelector.tsx +9 -7
- package/src/components/forms/FormDate.tsx +5 -3
- package/src/components/forms/FormDateTime.tsx +75 -39
- package/src/components/forms/__tests__/time-cycle.spec.ts +37 -0
- package/src/components/forms/time-cycle.ts +27 -0
- package/src/components/tables/cells/cell.date.tsx +3 -5
- package/src/components/tables/cells/cell.dateTime.tsx +3 -7
- package/src/contexts/DateLocaleContext.tsx +106 -0
- package/src/contexts/__tests__/DateLocaleContext.spec.tsx +175 -0
- package/src/contexts/index.ts +1 -0
- package/src/date-locale/index.ts +12 -0
- package/src/features/account-deletion/components/AccountDeletionAdminTrigger.tsx +3 -4
- package/src/features/analytics/components/AnalyticsJourneyContainer.tsx +8 -8
- package/src/features/analytics/components/AnalyticsSessionsTable.tsx +4 -6
- package/src/features/auth/components/two-factor/PasskeyList.tsx +3 -3
- package/src/features/auth/components/two-factor/TotpAuthenticatorList.tsx +3 -3
- package/src/features/billing/components/utils/__tests__/billing-formatters.spec.ts +14 -6
- package/src/features/billing/components/utils/date.ts +5 -5
- package/src/features/billing/components/utils/format-options.ts +6 -4
- package/src/features/billing/components/utils/useBillingFormatOptions.ts +8 -2
- package/src/features/billing/stripe-usage/components/details/UsageSummaryCard.tsx +4 -12
- package/src/features/billing/stripe-usage/components/lists/UsageHistoryTable.tsx +4 -17
- package/src/features/blog/components/admin/BlogTranslationStatus.tsx +3 -2
- package/src/features/blog/components/public/BlogPostMeta.tsx +5 -4
- package/src/features/blog/components/public/__tests__/BlogList.spec.tsx +1 -2
- package/src/features/blog/components/public/__tests__/BlogPostView.spec.tsx +2 -3
- package/src/features/blog/hooks/useBlogPostTableStructure.tsx +4 -8
- package/src/features/email-automation/hooks/useEmailAutomationEnrollmentTableStructure.tsx +11 -5
- package/src/features/email-blast/components/containers/EmailBlastContainer.tsx +3 -3
- package/src/features/email-blast/hooks/useEmailBlastTableStructure.tsx +4 -4
- package/src/features/handbook/components/parts/HandbookIndexStatus.tsx +4 -3
- package/src/features/help/components/HelpArticleBody.tsx +4 -3
- package/src/features/notification/components/notifications/Notification.tsx +38 -7
- package/src/features/notification/contexts/NotificationContext.tsx +6 -3
- package/src/features/notification/hooks/useNotificationTableStructure.tsx +6 -5
- package/src/features/oauth/components/OAuthClientCard.tsx +8 -5
- package/src/features/oauth/components/OAuthClientDetail.tsx +3 -6
- package/src/features/tokenusage/lib/__tests__/formatters.spec.ts +19 -0
- package/src/features/tokenusage/lib/formatters.ts +11 -6
- package/src/features/waitlist/hooks/useWaitlistTableStructure.tsx +5 -5
- package/src/server/ServerSession.ts +3 -0
- package/src/server/__tests__/ServerSession.read.spec.ts +18 -1
- package/src/utils/__tests__/date-formatter.spec.ts +134 -10
- package/src/utils/__tests__/toast.spec.ts +39 -0
- package/src/utils/date-formatter.ts +200 -44
- package/src/utils/index.ts +11 -1
- package/src/utils/toast.ts +2 -0
- package/dist/BlockNoteEditor-MONT74RQ.js.map +0 -1
- package/dist/BlockNoteViewer-K2HBF3IP.js.map +0 -1
- package/dist/JsonApiRequest-KC6DOHKT.js +0 -26
- package/dist/chunk-7OIWOPM5.mjs.map +0 -1
- package/dist/chunk-BDWV4KYR.js.map +0 -1
- package/dist/chunk-HN7L6RRW.js.map +0 -1
- package/dist/chunk-N2BFT7KI.mjs.map +0 -1
- package/dist/chunk-OZADFYE7.mjs.map +0 -1
- package/dist/chunk-P7L6OFX5.js.map +0 -1
- package/dist/chunk-SO3YUCL6.js.map +0 -1
- package/dist/chunk-T6G2F2BK.mjs.map +0 -1
- package/dist/chunk-TNTCLVUR.js.map +0 -1
- package/dist/local-transport-MJPOKPTU.js +0 -15
- package/dist/write-through-7I3LA2WN.mjs +0 -15
- package/dist/write-through-HE2QSOVI.js +0 -15
- /package/dist/{JsonApiRequest-ADLBJ5RX.mjs.map → JsonApiRequest-WNPDS356.mjs.map} +0 -0
- /package/dist/{chunk-VNUT2D27.mjs.map → chunk-2PWYG2WJ.mjs.map} +0 -0
- /package/dist/{chunk-W4ML6D2X.mjs.map → chunk-3U7YJ73T.mjs.map} +0 -0
- /package/dist/{chunk-BE6UMM5X.mjs.map → chunk-47HNJQ7U.mjs.map} +0 -0
- /package/dist/{chunk-S7SPAC6X.mjs.map → chunk-73NKUBMP.mjs.map} +0 -0
- /package/dist/{chunk-YTDGYI62.mjs.map → chunk-DWPHHUMV.mjs.map} +0 -0
- /package/dist/{chunk-YMCL3JXZ.mjs.map → chunk-YPBIPE2B.mjs.map} +0 -0
- /package/dist/{local-transport-RVD4FZGA.mjs.map → date-locale/index.mjs.map} +0 -0
- /package/dist/{request-4AWGPIGH.mjs.map → local-transport-KWEUZ4GX.mjs.map} +0 -0
- /package/dist/{write-through-7I3LA2WN.mjs.map → request-6GAIWWTG.mjs.map} +0 -0
|
@@ -37,9 +37,12 @@
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
var
|
|
40
|
+
var _chunkJE6QWCNEjs = require('../../chunk-JE6QWCNE.js');
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
var _chunkSYMI4IDWjs = require('../../chunk-SYMI4IDW.js');
|
|
41
44
|
require('../../chunk-3EPNHTMH.js');
|
|
42
|
-
require('../../chunk-
|
|
45
|
+
require('../../chunk-ONU4WCDG.js');
|
|
43
46
|
require('../../chunk-G4JR3SFV.js');
|
|
44
47
|
|
|
45
48
|
|
|
@@ -61,19 +64,22 @@ require('../../chunk-G4JR3SFV.js');
|
|
|
61
64
|
|
|
62
65
|
|
|
63
66
|
|
|
64
|
-
var
|
|
67
|
+
var _chunk77JC2UCFjs = require('../../chunk-77JC2UCF.js');
|
|
68
|
+
require('../../chunk-HROKKUBQ.js');
|
|
65
69
|
require('../../chunk-DGN3PR2F.js');
|
|
66
70
|
|
|
67
71
|
|
|
72
|
+
var _chunkZ6T2575Ajs = require('../../chunk-Z6T2575A.js');
|
|
73
|
+
require('../../chunk-3VNDFKT7.js');
|
|
74
|
+
require('../../chunk-5WM72MLE.js');
|
|
75
|
+
require('../../chunk-WUNSG3IN.js');
|
|
76
|
+
require('../../chunk-LNO2JLU3.js');
|
|
77
|
+
require('../../chunk-LXKSUWAV.js');
|
|
68
78
|
|
|
69
79
|
|
|
70
80
|
|
|
71
|
-
|
|
72
|
-
require('../../chunk-
|
|
73
|
-
require('../../chunk-A5M3MORY.js');
|
|
74
|
-
require('../../chunk-WUNSG3IN.js');
|
|
75
|
-
require('../../chunk-RCOKQ3R4.js');
|
|
76
|
-
require('../../chunk-LXKSUWAV.js');
|
|
81
|
+
|
|
82
|
+
var _chunkNP3AFULUjs = require('../../chunk-NP3AFULU.js');
|
|
77
83
|
|
|
78
84
|
|
|
79
85
|
var _chunk7QVYU63Ejs = require('../../chunk-7QVYU63E.js');
|
|
@@ -113,7 +119,7 @@ var dropzone = {
|
|
|
113
119
|
};
|
|
114
120
|
async function uploadBlogImage(params) {
|
|
115
121
|
if (!params.selection || !params.key) return;
|
|
116
|
-
await
|
|
122
|
+
await _chunk77JC2UCFjs.S3Service.upload({
|
|
117
123
|
key: params.key,
|
|
118
124
|
contentType: params.selection.contentType,
|
|
119
125
|
file: params.selection.file,
|
|
@@ -143,8 +149,8 @@ function BlogCoverImageField({
|
|
|
143
149
|
};
|
|
144
150
|
}, [previewUrl]);
|
|
145
151
|
const src = _nullishCoalesce(previewUrl, () => ( currentUrl));
|
|
146
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
147
|
-
|
|
152
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormFieldWrapper, { form, name: id, label, children: (field) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
153
|
+
_chunkJE6QWCNEjs.FileUploader,
|
|
148
154
|
{
|
|
149
155
|
value: files,
|
|
150
156
|
onValueChange: (value) => {
|
|
@@ -157,7 +163,7 @@ function BlogCoverImageField({
|
|
|
157
163
|
},
|
|
158
164
|
dropzoneOptions: dropzone,
|
|
159
165
|
className: "w-full",
|
|
160
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
166
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.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,
|
|
161
167
|
_image2.default,
|
|
162
168
|
{
|
|
163
169
|
src,
|
|
@@ -165,7 +171,7 @@ function BlogCoverImageField({
|
|
|
165
171
|
width: 320,
|
|
166
172
|
height: 180,
|
|
167
173
|
className: "h-auto max-h-48 w-auto max-w-full rounded-md object-cover",
|
|
168
|
-
unoptimized:
|
|
174
|
+
unoptimized: _chunk77JC2UCFjs.isRemoteImageSrc.call(void 0, previewUrl ? void 0 : currentUrl)
|
|
169
175
|
}
|
|
170
176
|
) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
171
177
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.UploadIcon, { className: "my-4 h-8 w-8" }),
|
|
@@ -191,7 +197,7 @@ function blogCategoryAdminName(category) {
|
|
|
191
197
|
}
|
|
192
198
|
_chunk7QVYU63Ejs.__name.call(void 0, blogCategoryAdminName, "blogCategoryAdminName");
|
|
193
199
|
function useBlogLanguageName() {
|
|
194
|
-
const locale =
|
|
200
|
+
const locale = _chunkNP3AFULUjs.useI18nLocale.call(void 0, );
|
|
195
201
|
const names = _react.useMemo.call(void 0, () => {
|
|
196
202
|
try {
|
|
197
203
|
return new Intl.DisplayNames([locale], { type: "language" });
|
|
@@ -210,8 +216,8 @@ function useBlogLanguageName() {
|
|
|
210
216
|
}
|
|
211
217
|
_chunk7QVYU63Ejs.__name.call(void 0, useBlogLanguageName, "useBlogLanguageName");
|
|
212
218
|
function useBlogDateFormatter() {
|
|
213
|
-
const
|
|
214
|
-
return _react.useCallback.call(void 0, (date) =>
|
|
219
|
+
const dates = _chunkSYMI4IDWjs.useDateFormatter.call(void 0, );
|
|
220
|
+
return _react.useCallback.call(void 0, (date) => dates.format(date, "dateMedium"), [dates]);
|
|
215
221
|
}
|
|
216
222
|
_chunk7QVYU63Ejs.__name.call(void 0, useBlogDateFormatter, "useBlogDateFormatter");
|
|
217
223
|
function BlogTranslationStatus({ aiStatus, onRetranslate }) {
|
|
@@ -219,7 +225,7 @@ function BlogTranslationStatus({ aiStatus, onRetranslate }) {
|
|
|
219
225
|
const [isRetrying, setIsRetrying] = _react.useState.call(void 0, false);
|
|
220
226
|
if (aiStatus === "completed") return null;
|
|
221
227
|
if (aiStatus === "pending" || aiStatus === "in_progress") {
|
|
222
|
-
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, _chunkJE6QWCNEjs.Badge, { variant: "softBlue", children: [
|
|
223
229
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.LoaderCircleIcon, { className: "animate-spin" }),
|
|
224
230
|
aiStatus === "pending" ? t("blog.translation.pending") : t("blog.translation.translating")
|
|
225
231
|
] }) });
|
|
@@ -230,14 +236,14 @@ function BlogTranslationStatus({ aiStatus, onRetranslate }) {
|
|
|
230
236
|
try {
|
|
231
237
|
await onRetranslate();
|
|
232
238
|
} catch (error) {
|
|
233
|
-
|
|
239
|
+
_chunkJE6QWCNEjs.errorToast.call(void 0, { title: t("common.errors.error"), error });
|
|
234
240
|
} finally {
|
|
235
241
|
setIsRetrying(false);
|
|
236
242
|
}
|
|
237
243
|
}, "retranslate");
|
|
238
244
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-2", children: [
|
|
239
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
240
|
-
onRetranslate && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
245
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Badge, { variant: "softRed", children: t("blog.translation.failed") }),
|
|
246
|
+
onRetranslate && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJE6QWCNEjs.Button, { type: "button", size: "sm", variant: "outline", onClick: () => void retranslate(), disabled: isRetrying, children: [
|
|
241
247
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.RotateCcwIcon, {}),
|
|
242
248
|
t("blog.actions.translateAgain")
|
|
243
249
|
] })
|
|
@@ -266,10 +272,10 @@ var sameTranslation = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (a, b
|
|
|
266
272
|
function BlogCategoryEditor({ category, trigger, onSuccess }) {
|
|
267
273
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
268
274
|
const formSchema = _react.useMemo.call(void 0, () => buildFormSchema(t), [t]);
|
|
269
|
-
const locale =
|
|
275
|
+
const locale = _chunkNP3AFULUjs.useI18nLocale.call(void 0, );
|
|
270
276
|
const languageName = useBlogLanguageName();
|
|
271
277
|
const [image, setImage] = _react.useState.call(void 0, null);
|
|
272
|
-
const languages = _react.useMemo.call(void 0, () =>
|
|
278
|
+
const languages = _react.useMemo.call(void 0, () => _chunkNP3AFULUjs.getI18nSupportedLocales.call(void 0, ), []);
|
|
273
279
|
const original = _optionalChain([category, 'optionalAccess', _6 => _6.original]);
|
|
274
280
|
const translations = _react.useMemo.call(void 0,
|
|
275
281
|
() => (_nullishCoalesce(_optionalChain([category, 'optionalAccess', _7 => _7.translations]), () => ( []))).filter((translation) => !translation.isOriginal),
|
|
@@ -298,20 +304,20 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
|
|
|
298
304
|
defaultValues: getDefaultValues()
|
|
299
305
|
});
|
|
300
306
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
301
|
-
|
|
307
|
+
_chunkJE6QWCNEjs.EditorSheet,
|
|
302
308
|
{
|
|
303
309
|
form,
|
|
304
310
|
entityType: t("blog.entities.category"),
|
|
305
311
|
entityName: _nullishCoalesce(_optionalChain([original, 'optionalAccess', _14 => _14.name]), () => ( _optionalChain([category, 'optionalAccess', _15 => _15.name]))),
|
|
306
312
|
title: category ? t("blog.admin.editCategory") : t("blog.admin.newCategory"),
|
|
307
313
|
isEdit: !!category,
|
|
308
|
-
module:
|
|
314
|
+
module: _chunkZ6T2575Ajs.Modules.BlogCategory,
|
|
309
315
|
size: "md",
|
|
310
316
|
onSubmit: async (values) => {
|
|
311
317
|
if (values.image && image) await uploadBlogImage({ key: values.image, selection: image });
|
|
312
318
|
const imageKey = values.image && image ? values.image : void 0;
|
|
313
319
|
if (!category) {
|
|
314
|
-
return
|
|
320
|
+
return _chunk77JC2UCFjs.BlogCategoryService.create({
|
|
315
321
|
id: values.id,
|
|
316
322
|
originalLanguage: values.originalLanguage,
|
|
317
323
|
name: values.name,
|
|
@@ -325,7 +331,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
|
|
|
325
331
|
{ id: defaults.id, name: defaults.name, slug: defaults.slug, description: defaults.description }
|
|
326
332
|
);
|
|
327
333
|
if (originalChanged) {
|
|
328
|
-
await
|
|
334
|
+
await _chunk77JC2UCFjs.BlogCategoryService.update({
|
|
329
335
|
id: values.id,
|
|
330
336
|
originalLanguage: _optionalChain([category, 'optionalAccess', _16 => _16.originalLanguage]),
|
|
331
337
|
name: values.name,
|
|
@@ -337,7 +343,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
|
|
|
337
343
|
for (const translation of values.translations) {
|
|
338
344
|
const before = defaults.translations.find((candidate) => candidate.id === translation.id);
|
|
339
345
|
if (sameTranslation(translation, before)) continue;
|
|
340
|
-
await
|
|
346
|
+
await _chunk77JC2UCFjs.BlogCategoryTranslationService.update({
|
|
341
347
|
id: translation.id,
|
|
342
348
|
name: translation.name,
|
|
343
349
|
slug: translation.slug || void 0,
|
|
@@ -355,7 +361,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
|
|
|
355
361
|
trigger,
|
|
356
362
|
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-y-4", children: [
|
|
357
363
|
!category && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
358
|
-
|
|
364
|
+
_chunkJE6QWCNEjs.FormSelect,
|
|
359
365
|
{
|
|
360
366
|
form,
|
|
361
367
|
id: "originalLanguage",
|
|
@@ -364,16 +370,16 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
|
|
|
364
370
|
isRequired: true
|
|
365
371
|
}
|
|
366
372
|
),
|
|
367
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
368
|
-
category && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
369
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
373
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormInput, { form, id: "name", name: t("blog.fields.name"), isRequired: true }),
|
|
374
|
+
category && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormInput, { form, id: "slug", name: t("blog.fields.slug"), description: t("blog.fields.slugHelp") }),
|
|
375
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormTextarea, { form, id: "description", name: t("blog.fields.description") }),
|
|
370
376
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
371
377
|
BlogCoverImageField,
|
|
372
378
|
{
|
|
373
379
|
form,
|
|
374
380
|
id: "image",
|
|
375
381
|
label: t("blog.fields.image"),
|
|
376
|
-
keyPrefix:
|
|
382
|
+
keyPrefix: _chunk77JC2UCFjs.BLOG_CATEGORY_UPLOAD_PREFIX,
|
|
377
383
|
entityId: form.getValues("id"),
|
|
378
384
|
currentUrl: _optionalChain([category, 'optionalAccess', _17 => _17.image]),
|
|
379
385
|
selection: image,
|
|
@@ -381,29 +387,29 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
|
|
|
381
387
|
}
|
|
382
388
|
),
|
|
383
389
|
translations.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-2", children: [
|
|
384
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
385
|
-
translations.map((translation, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
386
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
390
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.SectionHeader, { className: "mt-2", children: t("blog.fields.languages") }),
|
|
391
|
+
translations.map((translation, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJE6QWCNEjs.Collapsible, { className: "rounded-md border", children: [
|
|
392
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJE6QWCNEjs.CollapsibleTrigger, { className: "flex w-full items-center justify-between gap-x-2 px-3 py-2 text-start", children: [
|
|
387
393
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-x-2 text-sm font-medium", children: [
|
|
388
394
|
languageName(translation.language),
|
|
389
395
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogTranslationStatus, { aiStatus: translation.aiStatus })
|
|
390
396
|
] }),
|
|
391
397
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronDownIcon, { className: "text-muted-foreground size-4" })
|
|
392
398
|
] }),
|
|
393
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
399
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJE6QWCNEjs.CollapsibleContent, { className: "flex flex-col gap-y-4 border-t p-3", children: [
|
|
394
400
|
translation.aiStatus === "failed" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
395
401
|
BlogTranslationStatus,
|
|
396
402
|
{
|
|
397
403
|
aiStatus: translation.aiStatus,
|
|
398
404
|
onRetranslate: async () => {
|
|
399
|
-
await
|
|
405
|
+
await _chunk77JC2UCFjs.BlogCategoryTranslationService.retranslate({ id: translation.id });
|
|
400
406
|
await _optionalChain([onSuccess, 'optionalCall', _18 => _18()]);
|
|
401
407
|
}
|
|
402
408
|
}
|
|
403
409
|
),
|
|
404
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
410
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormInput, { form, id: `translations.${index}.name`, name: t("blog.fields.name"), isRequired: true }),
|
|
405
411
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
406
|
-
|
|
412
|
+
_chunkJE6QWCNEjs.FormInput,
|
|
407
413
|
{
|
|
408
414
|
form,
|
|
409
415
|
id: `translations.${index}.slug`,
|
|
@@ -412,7 +418,7 @@ function BlogCategoryEditor({ category, trigger, onSuccess }) {
|
|
|
412
418
|
}
|
|
413
419
|
),
|
|
414
420
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
415
|
-
|
|
421
|
+
_chunkJE6QWCNEjs.FormTextarea,
|
|
416
422
|
{
|
|
417
423
|
form,
|
|
418
424
|
id: `translations.${index}.description`,
|
|
@@ -485,37 +491,37 @@ var useBlogCategoryTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call
|
|
|
485
491
|
}, [params.fields, fieldColumnMap, t, refresh]);
|
|
486
492
|
return _react.useMemo.call(void 0, () => ({ data: tableData, columns }), [tableData, columns]);
|
|
487
493
|
}, "useBlogCategoryTableStructure");
|
|
488
|
-
|
|
494
|
+
_chunkJE6QWCNEjs.registerTableGenerator.call(void 0, "blog-categories", useBlogCategoryTableStructure);
|
|
489
495
|
|
|
490
496
|
// src/features/blog/components/admin/BlogCategoriesList.tsx
|
|
491
497
|
|
|
492
498
|
function BlogCategoriesList({ fullWidth } = {}) {
|
|
493
499
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
494
|
-
const data =
|
|
495
|
-
retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) =>
|
|
500
|
+
const data = _chunkJE6QWCNEjs.useDataListRetriever.call(void 0, {
|
|
501
|
+
retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) => _chunk77JC2UCFjs.BlogCategoryService.findMany(params), "retriever"),
|
|
496
502
|
retrieverParams: {},
|
|
497
|
-
module:
|
|
503
|
+
module: _chunkZ6T2575Ajs.Modules.BlogCategory
|
|
498
504
|
});
|
|
499
505
|
const functions = [
|
|
500
506
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
501
507
|
BlogCategoryEditor,
|
|
502
508
|
{
|
|
503
509
|
onSuccess: data.refresh,
|
|
504
|
-
trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
510
|
+
trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Button, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}), nativeButton: false, size: "sm", variant: "outline", children: t("blog.admin.newCategory") })
|
|
505
511
|
},
|
|
506
512
|
"create-blog-category"
|
|
507
513
|
)
|
|
508
514
|
];
|
|
509
515
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
510
|
-
|
|
516
|
+
_chunkJE6QWCNEjs.ContentListTable,
|
|
511
517
|
{
|
|
512
518
|
data,
|
|
513
519
|
fields: ["name" /* name */, "languages" /* languages */],
|
|
514
|
-
tableGeneratorType:
|
|
520
|
+
tableGeneratorType: _chunkZ6T2575Ajs.Modules.BlogCategory,
|
|
515
521
|
functions,
|
|
516
522
|
fullWidth,
|
|
517
523
|
title: t("blog.entities.categories"),
|
|
518
|
-
emptyState: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
524
|
+
emptyState: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.EmptyState, { icon: _lucidereact.TagIcon, title: t("blog.admin.emptyCategories") })
|
|
519
525
|
}
|
|
520
526
|
);
|
|
521
527
|
}
|
|
@@ -531,7 +537,7 @@ function BlogLayoutSetting() {
|
|
|
531
537
|
const [saving, setSaving] = _react.useState.call(void 0, false);
|
|
532
538
|
_react.useEffect.call(void 0, () => {
|
|
533
539
|
let active = true;
|
|
534
|
-
|
|
540
|
+
_chunk77JC2UCFjs.BlogSettingsService.get().then((settings) => {
|
|
535
541
|
if (active) setLayout(_nullishCoalesce(_optionalChain([settings, 'optionalAccess', _23 => _23.listLayout]), () => ( "featured")));
|
|
536
542
|
}).catch(() => {
|
|
537
543
|
if (active) setLayout("featured");
|
|
@@ -550,19 +556,19 @@ function BlogLayoutSetting() {
|
|
|
550
556
|
setLayout(next);
|
|
551
557
|
setSaving(true);
|
|
552
558
|
try {
|
|
553
|
-
await
|
|
554
|
-
|
|
559
|
+
await _chunk77JC2UCFjs.BlogSettingsService.save({ id: _chunk77JC2UCFjs.BLOG_SETTINGS_ID, listLayout: next });
|
|
560
|
+
_chunk77JC2UCFjs.showToast.call(void 0, t("blog.layout.saved"));
|
|
555
561
|
} catch (error) {
|
|
556
562
|
setLayout(previous);
|
|
557
|
-
|
|
563
|
+
_chunkJE6QWCNEjs.errorToast.call(void 0, { title: t("common.errors.error"), error });
|
|
558
564
|
} finally {
|
|
559
565
|
setSaving(false);
|
|
560
566
|
}
|
|
561
567
|
}, "save");
|
|
562
568
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full max-w-3xl flex-col gap-y-4 p-4", children: [
|
|
563
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
569
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.SectionHeader, { children: t("blog.layout.title") }),
|
|
564
570
|
layout && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
565
|
-
|
|
571
|
+
_chunkJE6QWCNEjs.RadioGroup,
|
|
566
572
|
{
|
|
567
573
|
value: layout,
|
|
568
574
|
onValueChange: (value) => {
|
|
@@ -571,13 +577,13 @@ function BlogLayoutSetting() {
|
|
|
571
577
|
},
|
|
572
578
|
disabled: saving,
|
|
573
579
|
className: "grid grid-cols-1 gap-3 md:grid-cols-3",
|
|
574
|
-
children:
|
|
580
|
+
children: _chunk77JC2UCFjs.BLOG_LIST_LAYOUTS.map((option) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
575
581
|
"label",
|
|
576
582
|
{
|
|
577
583
|
htmlFor: `blog-layout-${option}`,
|
|
578
584
|
className: "has-data-checked:border-primary flex cursor-pointer items-start gap-x-3 rounded-lg border p-4",
|
|
579
585
|
children: [
|
|
580
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
586
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.RadioGroupItem, { value: option, id: `blog-layout-${option}`, className: "mt-0.5" }),
|
|
581
587
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col gap-y-1", children: [
|
|
582
588
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium", children: options[option].label }),
|
|
583
589
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs/relaxed", children: options[option].description })
|
|
@@ -606,7 +612,7 @@ function useBlogCategoryNames() {
|
|
|
606
612
|
const [names, setNames] = _react.useState.call(void 0, {});
|
|
607
613
|
_react.useEffect.call(void 0, () => {
|
|
608
614
|
let cancelled = false;
|
|
609
|
-
|
|
615
|
+
_chunk77JC2UCFjs.BlogCategoryService.findMany({ fetchAll: true }).then((categories) => {
|
|
610
616
|
if (cancelled) return;
|
|
611
617
|
setNames(Object.fromEntries(categories.map((category) => [category.id, blogCategoryAdminName(category)])));
|
|
612
618
|
}).catch(() => {
|
|
@@ -623,8 +629,8 @@ _chunk7QVYU63Ejs.__name.call(void 0, useBlogCategoryNames, "useBlogCategoryNames
|
|
|
623
629
|
|
|
624
630
|
var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) => {
|
|
625
631
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
626
|
-
const
|
|
627
|
-
const generateUrl =
|
|
632
|
+
const dates = _chunkSYMI4IDWjs.useDateFormatter.call(void 0, );
|
|
633
|
+
const generateUrl = _chunkJE6QWCNEjs.usePageUrlGenerator.call(void 0, );
|
|
628
634
|
const categoryName = useBlogCategoryNames();
|
|
629
635
|
const tableData = _react.useMemo.call(void 0, () => {
|
|
630
636
|
return params.data.map((post) => {
|
|
@@ -642,7 +648,7 @@ var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(voi
|
|
|
642
648
|
header: t("blog.fields.title"),
|
|
643
649
|
cell: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, ({ row }) => {
|
|
644
650
|
const post = row.original.jsonApiData;
|
|
645
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
651
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.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)) });
|
|
646
652
|
}, "cell"),
|
|
647
653
|
enableSorting: false,
|
|
648
654
|
enableHiding: false
|
|
@@ -658,7 +664,7 @@ var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(voi
|
|
|
658
664
|
published: t("blog.status.published"),
|
|
659
665
|
unpublished: t("blog.status.unpublished")
|
|
660
666
|
}[post.status];
|
|
661
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
667
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Badge, { variant: _nullishCoalesce(BLOG_STATUS_BADGE[post.status], () => ( "softGray")), children: _nullishCoalesce(label, () => ( post.status)) });
|
|
662
668
|
}, "cell"),
|
|
663
669
|
enableSorting: false,
|
|
664
670
|
enableHiding: false
|
|
@@ -683,7 +689,7 @@ var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(voi
|
|
|
683
689
|
cell: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, ({ row }) => {
|
|
684
690
|
const post = row.original.jsonApiData;
|
|
685
691
|
if (!post.publishedAt) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: "\u2014" });
|
|
686
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs tabular-nums", children: post.publishedAt
|
|
692
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs tabular-nums", children: dates.format(post.publishedAt, "dateMedium") });
|
|
687
693
|
}, "cell"),
|
|
688
694
|
enableSorting: false,
|
|
689
695
|
enableHiding: false
|
|
@@ -709,10 +715,10 @@ var useBlogPostTableStructure = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(voi
|
|
|
709
715
|
};
|
|
710
716
|
const columns = _react.useMemo.call(void 0, () => {
|
|
711
717
|
return params.fields.map((field) => _optionalChain([fieldColumnMap, 'access', _26 => _26[field], 'optionalCall', _27 => _27()])).filter((col) => col !== void 0);
|
|
712
|
-
}, [params.fields, fieldColumnMap, t, generateUrl,
|
|
718
|
+
}, [params.fields, fieldColumnMap, t, generateUrl, dates, categoryName]);
|
|
713
719
|
return _react.useMemo.call(void 0, () => ({ data: tableData, columns }), [tableData, columns]);
|
|
714
720
|
}, "useBlogPostTableStructure");
|
|
715
|
-
|
|
721
|
+
_chunkJE6QWCNEjs.registerTableGenerator.call(void 0, "blog-posts", useBlogPostTableStructure);
|
|
716
722
|
|
|
717
723
|
// src/features/blog/components/admin/BlogPostEditor.tsx
|
|
718
724
|
|
|
@@ -726,13 +732,13 @@ var isBodyEmpty = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (body) =>
|
|
|
726
732
|
function BlogPostEditor({ post, trigger, onSuccess }) {
|
|
727
733
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
728
734
|
const categoryName = useBlogCategoryNames();
|
|
729
|
-
const router =
|
|
730
|
-
const locale =
|
|
735
|
+
const router = _chunkNP3AFULUjs.useI18nRouter.call(void 0, );
|
|
736
|
+
const locale = _chunkNP3AFULUjs.useI18nLocale.call(void 0, );
|
|
731
737
|
const languageName = useBlogLanguageName();
|
|
732
738
|
const original = _optionalChain([post, 'optionalAccess', _28 => _28.original]);
|
|
733
739
|
const [cover, setCover] = _react.useState.call(void 0, null);
|
|
734
740
|
const [isBodyEmptyState, setIsBodyEmptyState] = _react.useState.call(void 0, isBodyEmpty(_optionalChain([original, 'optionalAccess', _29 => _29.body])));
|
|
735
|
-
const languages = _react.useMemo.call(void 0, () =>
|
|
741
|
+
const languages = _react.useMemo.call(void 0, () => _chunkNP3AFULUjs.getI18nSupportedLocales.call(void 0, ), []);
|
|
736
742
|
const formSchema = _react.useMemo.call(void 0,
|
|
737
743
|
() => _zod3.z.object({
|
|
738
744
|
id: _zod3.z.string().uuid(),
|
|
@@ -777,14 +783,14 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
|
|
|
777
783
|
return Object.keys(dirty).length > 0;
|
|
778
784
|
}, [dirtyFields, isBodyEmptyState]);
|
|
779
785
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
780
|
-
|
|
786
|
+
_chunkJE6QWCNEjs.EditorSheet,
|
|
781
787
|
{
|
|
782
788
|
form,
|
|
783
789
|
entityType: t("blog.entities.post"),
|
|
784
790
|
entityName: _optionalChain([original, 'optionalAccess', _38 => _38.title]),
|
|
785
791
|
title: post ? t("blog.admin.editPost") : t("blog.admin.newPost"),
|
|
786
792
|
isEdit: !!post,
|
|
787
|
-
module:
|
|
793
|
+
module: _chunkZ6T2575Ajs.Modules.BlogPost,
|
|
788
794
|
size: "lg",
|
|
789
795
|
isFormDirty,
|
|
790
796
|
onSubmit: async (values) => {
|
|
@@ -801,13 +807,13 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
|
|
|
801
807
|
categoryIds: values.categories.map((category) => category.id)
|
|
802
808
|
};
|
|
803
809
|
if (post) {
|
|
804
|
-
return
|
|
810
|
+
return _chunk77JC2UCFjs.BlogPostService.update({
|
|
805
811
|
...payload,
|
|
806
812
|
originalLanguage: post.originalLanguage,
|
|
807
813
|
slug: values.slug || void 0
|
|
808
814
|
});
|
|
809
815
|
}
|
|
810
|
-
return
|
|
816
|
+
return _chunk77JC2UCFjs.BlogPostService.create({ ...payload, originalLanguage: values.originalLanguage });
|
|
811
817
|
},
|
|
812
818
|
onReset: () => {
|
|
813
819
|
setCover(null);
|
|
@@ -819,7 +825,7 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
|
|
|
819
825
|
trigger,
|
|
820
826
|
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full min-h-0 w-full flex-col gap-y-4", children: [
|
|
821
827
|
!post && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
822
|
-
|
|
828
|
+
_chunkJE6QWCNEjs.FormSelect,
|
|
823
829
|
{
|
|
824
830
|
form,
|
|
825
831
|
id: "originalLanguage",
|
|
@@ -828,24 +834,24 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
|
|
|
828
834
|
isRequired: true
|
|
829
835
|
}
|
|
830
836
|
),
|
|
831
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
837
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormInput, { form, id: "title", name: t("blog.fields.title"), isRequired: true }),
|
|
832
838
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
833
839
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-4", children: [
|
|
834
|
-
post && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
840
|
+
post && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormInput, { form, id: "slug", name: t("blog.fields.slug"), description: t("blog.fields.slugHelp") }),
|
|
835
841
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
836
|
-
|
|
842
|
+
_chunkJE6QWCNEjs.EntityMultiSelector,
|
|
837
843
|
{
|
|
838
844
|
id: "categories",
|
|
839
845
|
form,
|
|
840
846
|
label: t("blog.fields.categories"),
|
|
841
|
-
retriever: (params) =>
|
|
842
|
-
module:
|
|
847
|
+
retriever: (params) => _chunk77JC2UCFjs.BlogCategoryService.findMany(params),
|
|
848
|
+
module: _chunkZ6T2575Ajs.Modules.BlogCategory,
|
|
843
849
|
getLabel: blogCategoryAdminName,
|
|
844
850
|
getFormValueLabel: (value) => value.name || categoryName(value.id)
|
|
845
851
|
}
|
|
846
852
|
),
|
|
847
853
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
848
|
-
|
|
854
|
+
_chunkJE6QWCNEjs.FormTextarea,
|
|
849
855
|
{
|
|
850
856
|
form,
|
|
851
857
|
id: "summary",
|
|
@@ -862,7 +868,7 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
|
|
|
862
868
|
form,
|
|
863
869
|
id: "coverImage",
|
|
864
870
|
label: t("blog.fields.coverImage"),
|
|
865
|
-
keyPrefix:
|
|
871
|
+
keyPrefix: _chunk77JC2UCFjs.BLOG_POST_UPLOAD_PREFIX,
|
|
866
872
|
entityId: form.getValues("id"),
|
|
867
873
|
currentUrl: _optionalChain([post, 'optionalAccess', _40 => _40.coverImage]),
|
|
868
874
|
alt: _optionalChain([original, 'optionalAccess', _41 => _41.coverImageAlt]),
|
|
@@ -870,13 +876,13 @@ function BlogPostEditor({ post, trigger, onSuccess }) {
|
|
|
870
876
|
onSelectionChange: setCover
|
|
871
877
|
}
|
|
872
878
|
),
|
|
873
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
879
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormInput, { form, id: "coverImageAlt", name: t("blog.fields.coverImageAlt") })
|
|
874
880
|
] })
|
|
875
881
|
] }),
|
|
876
882
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
877
|
-
|
|
883
|
+
_chunkJE6QWCNEjs.FormBlockNote,
|
|
878
884
|
{
|
|
879
|
-
uploadKeyPrefix:
|
|
885
|
+
uploadKeyPrefix: _chunk77JC2UCFjs.BLOG_POST_UPLOAD_PREFIX,
|
|
880
886
|
form,
|
|
881
887
|
id: "body",
|
|
882
888
|
name: t("blog.fields.body"),
|
|
@@ -897,22 +903,22 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostEditor, "BlogPostEditor");
|
|
|
897
903
|
|
|
898
904
|
function BlogPostsList({ fullWidth } = {}) {
|
|
899
905
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
900
|
-
const data =
|
|
901
|
-
retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) =>
|
|
906
|
+
const data = _chunkJE6QWCNEjs.useDataListRetriever.call(void 0, {
|
|
907
|
+
retriever: /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (params) => _chunk77JC2UCFjs.BlogPostService.findMany(params), "retriever"),
|
|
902
908
|
retrieverParams: {},
|
|
903
|
-
module:
|
|
909
|
+
module: _chunkZ6T2575Ajs.Modules.BlogPost
|
|
904
910
|
});
|
|
905
911
|
const functions = [
|
|
906
912
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
907
913
|
BlogPostEditor,
|
|
908
914
|
{
|
|
909
|
-
trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
915
|
+
trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Button, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}), nativeButton: false, size: "sm", variant: "outline", children: t("blog.admin.newPost") })
|
|
910
916
|
},
|
|
911
917
|
"create-blog-post"
|
|
912
918
|
)
|
|
913
919
|
];
|
|
914
920
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
915
|
-
|
|
921
|
+
_chunkJE6QWCNEjs.ContentListTable,
|
|
916
922
|
{
|
|
917
923
|
data,
|
|
918
924
|
fields: [
|
|
@@ -922,11 +928,11 @@ function BlogPostsList({ fullWidth } = {}) {
|
|
|
922
928
|
"publishedAt" /* publishedAt */,
|
|
923
929
|
"languages" /* languages */
|
|
924
930
|
],
|
|
925
|
-
tableGeneratorType:
|
|
931
|
+
tableGeneratorType: _chunkZ6T2575Ajs.Modules.BlogPost,
|
|
926
932
|
functions,
|
|
927
933
|
fullWidth,
|
|
928
934
|
title: t("blog.entities.posts"),
|
|
929
|
-
emptyState: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
935
|
+
emptyState: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.EmptyState, { icon: _lucidereact.NewspaperIcon, title: t("blog.admin.empty") })
|
|
930
936
|
}
|
|
931
937
|
);
|
|
932
938
|
}
|
|
@@ -937,10 +943,10 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostsList, "BlogPostsList");
|
|
|
937
943
|
function BlogAdminContainer() {
|
|
938
944
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
939
945
|
const breadcrumbs = [{ name: t("blog.admin.title") }];
|
|
940
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
941
|
-
|
|
946
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.SharedProvider, { value: { breadcrumbs, title: { type: t("blog.admin.title") } }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
947
|
+
_chunkJE6QWCNEjs.RoundPageContainer,
|
|
942
948
|
{
|
|
943
|
-
module:
|
|
949
|
+
module: _chunkZ6T2575Ajs.Modules.BlogPost,
|
|
944
950
|
tabs: [
|
|
945
951
|
{ sectionKey: "posts", label: t("blog.tabs.posts"), content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostsList, {}) },
|
|
946
952
|
{ sectionKey: "categories", label: t("blog.tabs.categories"), content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogCategoriesList, {}) },
|
|
@@ -963,7 +969,7 @@ var BlogPostContext = _react.createContext.call(void 0, void 0);
|
|
|
963
969
|
var BlogPostProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, ({ postId, children }) => {
|
|
964
970
|
const [post, setPost] = _react.useState.call(void 0, void 0);
|
|
965
971
|
const reload = _react.useCallback.call(void 0, async () => {
|
|
966
|
-
const loaded = await
|
|
972
|
+
const loaded = await _chunk77JC2UCFjs.BlogPostService.findOne({ id: postId });
|
|
967
973
|
setPost(loaded);
|
|
968
974
|
}, [postId]);
|
|
969
975
|
_react.useEffect.call(void 0, () => {
|
|
@@ -999,19 +1005,19 @@ var useBlogPost = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
|
|
|
999
1005
|
|
|
1000
1006
|
function BlogPostDeleter() {
|
|
1001
1007
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1002
|
-
const generateUrl =
|
|
1008
|
+
const generateUrl = _chunkJE6QWCNEjs.usePageUrlGenerator.call(void 0, );
|
|
1003
1009
|
const { post } = useBlogPost();
|
|
1004
1010
|
if (!post) return null;
|
|
1005
1011
|
const type = t("blog.entities.post");
|
|
1006
1012
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1007
|
-
|
|
1013
|
+
_chunkJE6QWCNEjs.CommonDeleter,
|
|
1008
1014
|
{
|
|
1009
1015
|
title: t("common.delete.title", { type }),
|
|
1010
1016
|
subtitle: t("common.delete.subtitle", { type }),
|
|
1011
1017
|
description: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-destructive p-4 text-sm", children: t("common.delete.description", { type }) }),
|
|
1012
1018
|
showLabel: true,
|
|
1013
|
-
deleteFunction: () =>
|
|
1014
|
-
redirectTo: generateUrl({ page:
|
|
1019
|
+
deleteFunction: () => _chunk77JC2UCFjs.BlogPostService.delete({ id: post.id }),
|
|
1020
|
+
redirectTo: generateUrl({ page: _chunkZ6T2575Ajs.Modules.BlogPost })
|
|
1015
1021
|
}
|
|
1016
1022
|
);
|
|
1017
1023
|
}
|
|
@@ -1031,17 +1037,17 @@ function BlogPostPublishButton() {
|
|
|
1031
1037
|
const toggle = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, async () => {
|
|
1032
1038
|
setSaving(true);
|
|
1033
1039
|
try {
|
|
1034
|
-
if (isPublished) await
|
|
1035
|
-
else await
|
|
1040
|
+
if (isPublished) await _chunk77JC2UCFjs.BlogPostService.unpublish({ id: post.id });
|
|
1041
|
+
else await _chunk77JC2UCFjs.BlogPostService.publish({ id: post.id });
|
|
1036
1042
|
await reload();
|
|
1037
1043
|
} catch (error) {
|
|
1038
|
-
|
|
1044
|
+
_chunkJE6QWCNEjs.errorToast.call(void 0, { title: t("common.errors.error"), error });
|
|
1039
1045
|
} finally {
|
|
1040
1046
|
setSaving(false);
|
|
1041
1047
|
}
|
|
1042
1048
|
}, "toggle");
|
|
1043
1049
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1044
|
-
|
|
1050
|
+
_chunkJE6QWCNEjs.Button,
|
|
1045
1051
|
{
|
|
1046
1052
|
type: "button",
|
|
1047
1053
|
size: "sm",
|
|
@@ -1069,11 +1075,11 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostPublishButton, "BlogPostPublishButt
|
|
|
1069
1075
|
function BlogPostTranslationFields({ translation }) {
|
|
1070
1076
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1071
1077
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-4", children: [
|
|
1072
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1073
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1074
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1075
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1076
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1078
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.DetailField, { label: t("blog.fields.title"), value: translation.title }),
|
|
1079
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.DetailField, { label: t("blog.fields.slug"), value: translation.slug }),
|
|
1080
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.DetailField, { label: t("blog.fields.summary"), value: translation.summary }),
|
|
1081
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.DetailField, { label: t("blog.fields.coverImageAlt"), value: translation.coverImageAlt }),
|
|
1082
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.DetailField, { label: t("blog.fields.body"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.BlockNoteEditorContainer, { id: translation.id, type: "blog-post", initialContent: translation.body }) })
|
|
1077
1083
|
] });
|
|
1078
1084
|
}
|
|
1079
1085
|
_chunk7QVYU63Ejs.__name.call(void 0, BlogPostTranslationFields, "BlogPostTranslationFields");
|
|
@@ -1083,15 +1089,15 @@ function BlogPostComparison({ original, translation }) {
|
|
|
1083
1089
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
1084
1090
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-muted/40 flex flex-col gap-y-4 rounded-lg border p-4", children: [
|
|
1085
1091
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-2", children: [
|
|
1086
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1087
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1092
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.MicroLabel, { as: "h3", children: languageName(original.language) }),
|
|
1093
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Badge, { variant: "softGray", children: t("blog.translation.original") })
|
|
1088
1094
|
] }),
|
|
1089
1095
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostTranslationFields, { translation: original })
|
|
1090
1096
|
] }),
|
|
1091
1097
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-4 rounded-lg border p-4", children: [
|
|
1092
1098
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-x-2", children: [
|
|
1093
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1094
|
-
translation.source === "manual" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1099
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.MicroLabel, { as: "h3", children: languageName(translation.language) }),
|
|
1100
|
+
translation.source === "manual" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Badge, { variant: "softAmber", children: t("blog.translation.editedByHand") })
|
|
1095
1101
|
] }),
|
|
1096
1102
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostTranslationFields, { translation })
|
|
1097
1103
|
] })
|
|
@@ -1142,17 +1148,17 @@ function BlogPostTranslationEditor({ translation, trigger, onSuccess }) {
|
|
|
1142
1148
|
return Object.keys(dirty).length > 0;
|
|
1143
1149
|
}, [dirtyFields, isBodyEmptyState]);
|
|
1144
1150
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1145
|
-
|
|
1151
|
+
_chunkJE6QWCNEjs.EditorSheet,
|
|
1146
1152
|
{
|
|
1147
1153
|
form,
|
|
1148
1154
|
entityType: t("blog.entities.post"),
|
|
1149
1155
|
entityName: translation.title,
|
|
1150
1156
|
title: `${t("blog.admin.editPost")} \xB7 ${languageName(translation.language)}`,
|
|
1151
1157
|
isEdit: true,
|
|
1152
|
-
module:
|
|
1158
|
+
module: _chunkZ6T2575Ajs.Modules.BlogPostTranslation,
|
|
1153
1159
|
size: "lg",
|
|
1154
1160
|
isFormDirty,
|
|
1155
|
-
onSubmit: async (values) =>
|
|
1161
|
+
onSubmit: async (values) => _chunk77JC2UCFjs.BlogPostTranslationService.update({
|
|
1156
1162
|
id: values.id,
|
|
1157
1163
|
title: values.title,
|
|
1158
1164
|
slug: values.slug || void 0,
|
|
@@ -1168,18 +1174,18 @@ function BlogPostTranslationEditor({ translation, trigger, onSuccess }) {
|
|
|
1168
1174
|
}))),
|
|
1169
1175
|
trigger,
|
|
1170
1176
|
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full min-h-0 w-full flex-col gap-y-4", children: [
|
|
1171
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1177
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormInput, { form, id: "title", name: t("blog.fields.title"), isRequired: true }),
|
|
1172
1178
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
1173
1179
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-y-4", children: [
|
|
1174
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1175
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1180
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormInput, { form, id: "slug", name: t("blog.fields.slug"), description: t("blog.fields.slugHelp") }),
|
|
1181
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormTextarea, { form, id: "summary", name: t("blog.fields.summary"), className: "min-h-24" })
|
|
1176
1182
|
] }),
|
|
1177
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-y-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1183
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-y-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.FormInput, { form, id: "coverImageAlt", name: t("blog.fields.coverImageAlt") }) })
|
|
1178
1184
|
] }),
|
|
1179
1185
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1180
|
-
|
|
1186
|
+
_chunkJE6QWCNEjs.FormBlockNote,
|
|
1181
1187
|
{
|
|
1182
|
-
uploadKeyPrefix:
|
|
1188
|
+
uploadKeyPrefix: _chunk77JC2UCFjs.BLOG_POST_UPLOAD_PREFIX,
|
|
1183
1189
|
form,
|
|
1184
1190
|
id: "body",
|
|
1185
1191
|
name: t("blog.fields.body"),
|
|
@@ -1207,7 +1213,7 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
|
|
|
1207
1213
|
const original = post.original;
|
|
1208
1214
|
const reload = _nullishCoalesce(onChanged, () => ( (async () => {
|
|
1209
1215
|
})));
|
|
1210
|
-
const editTrigger = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1216
|
+
const editTrigger = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJE6QWCNEjs.Button, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}), nativeButton: false, size: "sm", variant: "outline", children: [
|
|
1211
1217
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.PencilIcon, {}),
|
|
1212
1218
|
t("blog.actions.edit")
|
|
1213
1219
|
] });
|
|
@@ -1219,7 +1225,7 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
|
|
|
1219
1225
|
}[post.status];
|
|
1220
1226
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-y-6 p-4", children: [
|
|
1221
1227
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-x-4", children: [
|
|
1222
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1228
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Badge, { variant: "softGray", children: t("blog.translation.original") }),
|
|
1223
1229
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostEditor, { post, trigger: editTrigger, onSuccess: reload })
|
|
1224
1230
|
] }),
|
|
1225
1231
|
post.coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -1230,14 +1236,14 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
|
|
|
1230
1236
|
width: 640,
|
|
1231
1237
|
height: 360,
|
|
1232
1238
|
className: "h-auto max-h-72 w-auto rounded-lg object-cover",
|
|
1233
|
-
unoptimized:
|
|
1239
|
+
unoptimized: _chunk77JC2UCFjs.isRemoteImageSrc.call(void 0, post.coverImage)
|
|
1234
1240
|
}
|
|
1235
1241
|
),
|
|
1236
1242
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 md:grid-cols-3", children: [
|
|
1237
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1238
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1243
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.DetailField, { label: t("blog.fields.status"), value: statusLabel }),
|
|
1244
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.DetailField, { label: t("blog.fields.publishedAt"), value: formatDate(post.publishedAt) || "\u2014" }),
|
|
1239
1245
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1240
|
-
|
|
1246
|
+
_chunkJE6QWCNEjs.DetailField,
|
|
1241
1247
|
{
|
|
1242
1248
|
label: t("blog.fields.categories"),
|
|
1243
1249
|
value: post.categories.map((category) => categoryName(category.id)).filter(Boolean).join(", ") || "\u2014"
|
|
@@ -1249,16 +1255,16 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
|
|
|
1249
1255
|
}
|
|
1250
1256
|
const isWorking = translation.aiStatus === "pending" || translation.aiStatus === "in_progress";
|
|
1251
1257
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-y-6 p-4", children: [
|
|
1252
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1258
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Alert, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJE6QWCNEjs.AlertDescription, { className: "flex flex-col gap-y-2", children: [
|
|
1253
1259
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
1254
|
-
translation.source === "manual" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1260
|
+
translation.source === "manual" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Badge, { variant: "softAmber", children: t("blog.translation.editedByHand") }),
|
|
1255
1261
|
original && translation.translatedAt && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: t("blog.translation.translatedFrom", {
|
|
1256
1262
|
language: languageName(original.language),
|
|
1257
1263
|
date: formatDate(translation.translatedAt)
|
|
1258
1264
|
}) })
|
|
1259
1265
|
] }),
|
|
1260
1266
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: t("blog.translation.overwriteWarning") }),
|
|
1261
|
-
original && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1267
|
+
original && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Button, { type: "button", size: "sm", variant: "ghost", onClick: () => setIsComparing((value) => !value), children: isComparing ? t("blog.actions.hideComparison") : t("blog.actions.compareWithOriginal") }) })
|
|
1262
1268
|
] }) }),
|
|
1263
1269
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-x-4", children: [
|
|
1264
1270
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -1266,7 +1272,7 @@ function BlogPostTranslationPanel({ post, translation, onChanged }) {
|
|
|
1266
1272
|
{
|
|
1267
1273
|
aiStatus: translation.aiStatus,
|
|
1268
1274
|
onRetranslate: async () => {
|
|
1269
|
-
await
|
|
1275
|
+
await _chunk77JC2UCFjs.BlogPostTranslationService.retranslate({ id: translation.id });
|
|
1270
1276
|
await reload();
|
|
1271
1277
|
}
|
|
1272
1278
|
}
|
|
@@ -1286,7 +1292,7 @@ function BlogPostContainer({ postId }) {
|
|
|
1286
1292
|
_chunk7QVYU63Ejs.__name.call(void 0, BlogPostContainer, "BlogPostContainer");
|
|
1287
1293
|
function BlogPostShell() {
|
|
1288
1294
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1289
|
-
const generateUrl =
|
|
1295
|
+
const generateUrl = _chunkJE6QWCNEjs.usePageUrlGenerator.call(void 0, );
|
|
1290
1296
|
const languageName = useBlogLanguageName();
|
|
1291
1297
|
const { post, reload } = useBlogPost();
|
|
1292
1298
|
const translations = _react.useMemo.call(void 0, () => {
|
|
@@ -1299,7 +1305,7 @@ function BlogPostShell() {
|
|
|
1299
1305
|
if (!post) return null;
|
|
1300
1306
|
const title = _nullishCoalesce(_nullishCoalesce(_optionalChain([post, 'access', _44 => _44.original, 'optionalAccess', _45 => _45.title]), () => ( post.title)), () => ( ""));
|
|
1301
1307
|
const breadcrumbs = [
|
|
1302
|
-
{ name: t("blog.admin.title"), href: generateUrl({ page:
|
|
1308
|
+
{ name: t("blog.admin.title"), href: generateUrl({ page: _chunkZ6T2575Ajs.Modules.BlogPost }) },
|
|
1303
1309
|
{ name: title }
|
|
1304
1310
|
];
|
|
1305
1311
|
const statusLabel = {
|
|
@@ -1316,7 +1322,7 @@ function BlogPostShell() {
|
|
|
1316
1322
|
return parts.join(" \xB7 ");
|
|
1317
1323
|
}, "tabLabel");
|
|
1318
1324
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1319
|
-
|
|
1325
|
+
_chunkJE6QWCNEjs.SharedProvider,
|
|
1320
1326
|
{
|
|
1321
1327
|
value: {
|
|
1322
1328
|
breadcrumbs,
|
|
@@ -1324,16 +1330,16 @@ function BlogPostShell() {
|
|
|
1324
1330
|
type: t("blog.admin.title"),
|
|
1325
1331
|
element: title,
|
|
1326
1332
|
functions: [
|
|
1327
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1333
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Badge, { variant: BLOG_STATUS_BADGE[post.status], children: statusLabel }, "blogPostStatus"),
|
|
1328
1334
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostPublishButton, {}, "blogPostPublish"),
|
|
1329
1335
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostDeleter, {}, "blogPostDeleter")
|
|
1330
1336
|
]
|
|
1331
1337
|
}
|
|
1332
1338
|
},
|
|
1333
1339
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1334
|
-
|
|
1340
|
+
_chunkJE6QWCNEjs.RoundPageContainer,
|
|
1335
1341
|
{
|
|
1336
|
-
module:
|
|
1342
|
+
module: _chunkZ6T2575Ajs.Modules.BlogPost,
|
|
1337
1343
|
id: post.id,
|
|
1338
1344
|
forceHeader: true,
|
|
1339
1345
|
tabs: translations.map((translation) => ({
|
|
@@ -1395,10 +1401,10 @@ function BlogCategoryChips(props) {
|
|
|
1395
1401
|
];
|
|
1396
1402
|
const inactiveVariant = variant === "chips" ? "outline" : "ghost";
|
|
1397
1403
|
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,
|
|
1398
|
-
|
|
1404
|
+
_chunkJE6QWCNEjs.Badge,
|
|
1399
1405
|
{
|
|
1400
1406
|
variant: item.active ? "default" : inactiveVariant,
|
|
1401
|
-
render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1407
|
+
render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Link, { href: item.href, "aria-current": item.active ? "page" : void 0 }),
|
|
1402
1408
|
children: item.label
|
|
1403
1409
|
}
|
|
1404
1410
|
) }, item.key)) }) });
|
|
@@ -1413,12 +1419,12 @@ function BlogListHeader(props) {
|
|
|
1413
1419
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1414
1420
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "header", { className: align === "center" ? "text-center" : void 0, children: [
|
|
1415
1421
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1416
|
-
|
|
1422
|
+
_chunkJE6QWCNEjs.ContentTitle,
|
|
1417
1423
|
{
|
|
1418
1424
|
type: t("blog.public.eyebrow"),
|
|
1419
1425
|
element: t("blog.public.title"),
|
|
1420
1426
|
headingLevel: 1,
|
|
1421
|
-
className:
|
|
1427
|
+
className: _chunk77JC2UCFjs.cn.call(void 0, "mb-0", align === "center" && "[&_div]:justify-center")
|
|
1422
1428
|
}
|
|
1423
1429
|
),
|
|
1424
1430
|
showSubtitle ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground mt-3 text-sm leading-relaxed", children: t("blog.public.subtitle") }) : null
|
|
@@ -1427,18 +1433,18 @@ function BlogListHeader(props) {
|
|
|
1427
1433
|
_chunk7QVYU63Ejs.__name.call(void 0, BlogListHeader, "BlogListHeader");
|
|
1428
1434
|
function BlogListEmpty(props) {
|
|
1429
1435
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1430
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className:
|
|
1436
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk77JC2UCFjs.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") });
|
|
1431
1437
|
}
|
|
1432
1438
|
_chunk7QVYU63Ejs.__name.call(void 0, BlogListEmpty, "BlogListEmpty");
|
|
1433
1439
|
function BlogLoadMore(props) {
|
|
1434
1440
|
const { basePath, page, activeCategorySlug, query, className } = props;
|
|
1435
1441
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1436
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className:
|
|
1437
|
-
|
|
1442
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk77JC2UCFjs.cn.call(void 0, "flex justify-center", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1443
|
+
_chunkJE6QWCNEjs.Link,
|
|
1438
1444
|
{
|
|
1439
1445
|
href: blogListHref(basePath, { category: activeCategorySlug, q: query, page: page + 1 }),
|
|
1440
1446
|
scroll: false,
|
|
1441
|
-
className:
|
|
1447
|
+
className: _chunkJE6QWCNEjs.buttonVariants.call(void 0, { variant: "outline" }),
|
|
1442
1448
|
children: t("blog.public.loadMore")
|
|
1443
1449
|
}
|
|
1444
1450
|
) });
|
|
@@ -1455,17 +1461,17 @@ var ONE_DAY_MS = 24 * 60 * 60 * 1e3;
|
|
|
1455
1461
|
function BlogPostMeta(props) {
|
|
1456
1462
|
const { post, showAuthor, showDate, showUpdated, className } = props;
|
|
1457
1463
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1458
|
-
const
|
|
1464
|
+
const dates = _chunkSYMI4IDWjs.useDateFormatter.call(void 0, );
|
|
1459
1465
|
const parts = [];
|
|
1460
1466
|
if (showAuthor && post.authorName) parts.push(t("blog.public.by", { author: post.authorName }));
|
|
1461
1467
|
if (showDate && post.publishedAt) {
|
|
1462
|
-
parts.push(format
|
|
1468
|
+
parts.push(dates.format(post.publishedAt, "dateMedium"));
|
|
1463
1469
|
}
|
|
1464
1470
|
if (showUpdated && post.publishedAt && post.updatedAt && new Date(post.updatedAt).getTime() - new Date(post.publishedAt).getTime() > ONE_DAY_MS) {
|
|
1465
|
-
parts.push(t("blog.public.updated", { date: format
|
|
1471
|
+
parts.push(t("blog.public.updated", { date: dates.format(post.updatedAt, "dateMedium") }));
|
|
1466
1472
|
}
|
|
1467
1473
|
parts.push(t("blog.public.readingTime", { minutes: post.readingMinutes }));
|
|
1468
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className:
|
|
1474
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk77JC2UCFjs.cn.call(void 0, "text-muted-foreground text-xs", className), children: parts.map((part, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
|
|
1469
1475
|
index > 0 ? " \xB7 " : null,
|
|
1470
1476
|
part
|
|
1471
1477
|
] }, index)) });
|
|
@@ -1476,7 +1482,7 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostMeta, "BlogPostMeta");
|
|
|
1476
1482
|
|
|
1477
1483
|
function BlogPostCover(props) {
|
|
1478
1484
|
const { src, alt, sizes, priority, className } = props;
|
|
1479
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className:
|
|
1485
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk77JC2UCFjs.cn.call(void 0, "border-border bg-primary/10 relative overflow-hidden rounded-lg border", className), children: src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1480
1486
|
_image2.default,
|
|
1481
1487
|
{
|
|
1482
1488
|
src,
|
|
@@ -1485,7 +1491,7 @@ function BlogPostCover(props) {
|
|
|
1485
1491
|
sizes,
|
|
1486
1492
|
priority,
|
|
1487
1493
|
className: "object-cover",
|
|
1488
|
-
unoptimized:
|
|
1494
|
+
unoptimized: _chunk77JC2UCFjs.isRemoteImageSrc.call(void 0, src)
|
|
1489
1495
|
}
|
|
1490
1496
|
) : null });
|
|
1491
1497
|
}
|
|
@@ -1496,8 +1502,8 @@ function BlogPostCard(props) {
|
|
|
1496
1502
|
const isProminent = variant === "hero" || variant === "large";
|
|
1497
1503
|
const eyebrow = _optionalChain([category, 'optionalAccess', _46 => _46.name]);
|
|
1498
1504
|
const text = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col", children: [
|
|
1499
|
-
eyebrow ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1500
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1505
|
+
eyebrow ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.MicroLabel, { as: "span", children: eyebrow }) : null,
|
|
1506
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.SectionHeader, { level: headingLevel === "h3" ? 3 : 2, className: "mt-1.5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.Link, { href: blogPostHref(basePath, post.slug), className: "after:absolute after:inset-0", children: post.title }) }),
|
|
1501
1507
|
post.summary ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground mt-2 text-sm leading-relaxed", children: post.summary }) : null,
|
|
1502
1508
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostMeta, { post, showAuthor: isProminent, className: "mt-3" })
|
|
1503
1509
|
] });
|
|
@@ -1555,7 +1561,7 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostCard, "BlogPostCard");
|
|
|
1555
1561
|
function BlogSearchBox(props) {
|
|
1556
1562
|
const { basePath, query, activeCategorySlug, className } = props;
|
|
1557
1563
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1558
|
-
const router =
|
|
1564
|
+
const router = _chunkNP3AFULUjs.useI18nRouter.call(void 0, );
|
|
1559
1565
|
const [value, setValue] = _react.useState.call(void 0, _nullishCoalesce(query, () => ( "")));
|
|
1560
1566
|
_react.useEffect.call(void 0, () => setValue(_nullishCoalesce(query, () => ( ""))), [query]);
|
|
1561
1567
|
const onSubmit = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (event) => {
|
|
@@ -1563,10 +1569,10 @@ function BlogSearchBox(props) {
|
|
|
1563
1569
|
const q = value.trim();
|
|
1564
1570
|
router.push(blogListHref(basePath, { category: activeCategorySlug, q: q || void 0 }));
|
|
1565
1571
|
}, "onSubmit");
|
|
1566
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "form", { role: "search", onSubmit, className, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1567
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1572
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "form", { role: "search", onSubmit, className, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJE6QWCNEjs.InputGroup, { children: [
|
|
1573
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.InputGroupAddon, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.SearchIcon, {}) }),
|
|
1568
1574
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1569
|
-
|
|
1575
|
+
_chunkJE6QWCNEjs.InputGroupInput,
|
|
1570
1576
|
{
|
|
1571
1577
|
type: "search",
|
|
1572
1578
|
name: "q",
|
|
@@ -1678,7 +1684,7 @@ function BlogListRail(props) {
|
|
|
1678
1684
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogListHeader, { showSubtitle: false }),
|
|
1679
1685
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogSearchBox, { basePath, query, activeCategorySlug }),
|
|
1680
1686
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
|
|
1681
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1687
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.MicroLabel, { as: "span", className: "block", children: t("blog.entities.categories") }),
|
|
1682
1688
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1683
1689
|
BlogCategoryChips,
|
|
1684
1690
|
{
|
|
@@ -1736,12 +1742,12 @@ function BlogPostView(props) {
|
|
|
1736
1742
|
const more = related.slice(0, 3);
|
|
1737
1743
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: "px-4 pt-12 pb-20 md:pt-16", children: [
|
|
1738
1744
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mx-auto max-w-3xl", children: [
|
|
1739
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1745
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJE6QWCNEjs.Link, { href: basePath, className: "inline-flex items-center gap-1.5", children: [
|
|
1740
1746
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ArrowLeftIcon, { className: "size-4 rtl:rotate-180" }),
|
|
1741
1747
|
t("blog.public.back")
|
|
1742
1748
|
] }),
|
|
1743
1749
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "header", { className: "mt-8", children: [
|
|
1744
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1750
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.ContentTitle, { type: _optionalChain([category, 'optionalAccess', _47 => _47.name]), element: post.title, headingLevel: 1, className: "mb-0" }),
|
|
1745
1751
|
post.summary ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground mt-3 text-sm leading-relaxed", children: post.summary }) : null,
|
|
1746
1752
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogPostMeta, { post, showAuthor: true, className: "mt-4" })
|
|
1747
1753
|
] }),
|
|
@@ -1755,10 +1761,10 @@ function BlogPostView(props) {
|
|
|
1755
1761
|
className: "mt-8 aspect-[16/9]"
|
|
1756
1762
|
}
|
|
1757
1763
|
) : null,
|
|
1758
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-8", children: _nullishCoalesce(body, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1764
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-8", children: _nullishCoalesce(body, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.BlockNoteEditorContainer, { id: post.id, type: "blog-post", initialContent: post.body }))) })
|
|
1759
1765
|
] }),
|
|
1760
1766
|
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: [
|
|
1761
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1767
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJE6QWCNEjs.SectionHeader, { level: 2, children: t("blog.public.moreIn", { category: _nullishCoalesce(_optionalChain([category, 'optionalAccess', _48 => _48.name]), () => ( "")) }) }),
|
|
1762
1768
|
/* @__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,
|
|
1763
1769
|
BlogPostCard,
|
|
1764
1770
|
{
|
|
@@ -1811,5 +1817,5 @@ _chunk7QVYU63Ejs.__name.call(void 0, BlogPostView, "BlogPostView");
|
|
|
1811
1817
|
|
|
1812
1818
|
|
|
1813
1819
|
|
|
1814
|
-
exports.BLOG_ACTION =
|
|
1820
|
+
exports.BLOG_ACTION = _chunk77JC2UCFjs.BLOG_ACTION; exports.BLOG_CATEGORY_UPLOAD_PREFIX = _chunk77JC2UCFjs.BLOG_CATEGORY_UPLOAD_PREFIX; exports.BLOG_LIST_LAYOUTS = _chunk77JC2UCFjs.BLOG_LIST_LAYOUTS; exports.BLOG_MODULE_ID = _chunk77JC2UCFjs.BLOG_MODULE_ID; exports.BLOG_POST_STATUSES = _chunk77JC2UCFjs.BLOG_POST_STATUSES; exports.BLOG_POST_UPLOAD_PREFIX = _chunk77JC2UCFjs.BLOG_POST_UPLOAD_PREFIX; exports.BLOG_PUBLIC_PREFIX = _chunk77JC2UCFjs.BLOG_PUBLIC_PREFIX; exports.BLOG_SETTINGS_ID = _chunk77JC2UCFjs.BLOG_SETTINGS_ID; exports.BLOG_STATUS_BADGE = BLOG_STATUS_BADGE; exports.BLOG_TRANSLATION_SOURCES = _chunk77JC2UCFjs.BLOG_TRANSLATION_SOURCES; exports.BLOG_UPLOAD_ROOT = _chunk77JC2UCFjs.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;
|
|
1815
1821
|
//# sourceMappingURL=index.js.map
|