@strapi/content-releases 0.0.0-experimental.d362bf200f5f9359a4bbd4a549603de5ee1f04ca → 0.0.0-experimental.d5b46d578a5c055b8dcc66939e1b5d540976fafb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/_chunks/{App-1LckaIGY.js → App-OP70yd5M.js} +210 -224
  2. package/dist/_chunks/App-OP70yd5M.js.map +1 -0
  3. package/dist/_chunks/{App-X01LBg5V.mjs → App-x6Tjj3HN.mjs} +202 -216
  4. package/dist/_chunks/App-x6Tjj3HN.mjs.map +1 -0
  5. package/dist/_chunks/{PurchaseContentReleases-Clm0iACO.mjs → PurchaseContentReleases-3tRbmbY3.mjs} +2 -2
  6. package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs.map +1 -0
  7. package/dist/_chunks/{PurchaseContentReleases-YhAPgpG9.js → PurchaseContentReleases-bpIYXOfu.js} +2 -2
  8. package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js.map +1 -0
  9. package/dist/_chunks/{en-faJDuv3q.js → en-3SGjiVyR.js} +10 -2
  10. package/dist/_chunks/en-3SGjiVyR.js.map +1 -0
  11. package/dist/_chunks/{en-RdapH-9X.mjs → en-bpHsnU0n.mjs} +10 -2
  12. package/dist/_chunks/en-bpHsnU0n.mjs.map +1 -0
  13. package/dist/_chunks/{index-OD9AlD-6.mjs → index-1ejXLtzt.mjs} +273 -103
  14. package/dist/_chunks/index-1ejXLtzt.mjs.map +1 -0
  15. package/dist/_chunks/{index-cYWov2wa.js → index-ydocdaZ0.js} +270 -100
  16. package/dist/_chunks/index-ydocdaZ0.js.map +1 -0
  17. package/dist/admin/index.js +15 -1
  18. package/dist/admin/index.js.map +1 -1
  19. package/dist/admin/index.mjs +16 -2
  20. package/dist/admin/index.mjs.map +1 -1
  21. package/dist/server/index.js +62 -60
  22. package/dist/server/index.js.map +1 -1
  23. package/dist/server/index.mjs +62 -61
  24. package/dist/server/index.mjs.map +1 -1
  25. package/package.json +28 -21
  26. package/dist/_chunks/App-1LckaIGY.js.map +0 -1
  27. package/dist/_chunks/App-X01LBg5V.mjs.map +0 -1
  28. package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs.map +0 -1
  29. package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js.map +0 -1
  30. package/dist/_chunks/en-RdapH-9X.mjs.map +0 -1
  31. package/dist/_chunks/en-faJDuv3q.js.map +0 -1
  32. package/dist/_chunks/index-OD9AlD-6.mjs.map +0 -1
  33. package/dist/_chunks/index-cYWov2wa.js.map +0 -1
  34. package/dist/admin/src/components/CMReleasesContainer.d.ts +0 -1
  35. package/dist/admin/src/components/RelativeTime.d.ts +0 -28
  36. package/dist/admin/src/components/ReleaseActionMenu.d.ts +0 -26
  37. package/dist/admin/src/components/ReleaseActionOptions.d.ts +0 -9
  38. package/dist/admin/src/components/ReleaseModal.d.ts +0 -16
  39. package/dist/admin/src/constants.d.ts +0 -58
  40. package/dist/admin/src/index.d.ts +0 -3
  41. package/dist/admin/src/pages/App.d.ts +0 -1
  42. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +0 -2
  43. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +0 -2
  44. package/dist/admin/src/pages/ReleasesPage.d.ts +0 -8
  45. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +0 -181
  46. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +0 -39
  47. package/dist/admin/src/pluginId.d.ts +0 -1
  48. package/dist/admin/src/services/axios.d.ts +0 -29
  49. package/dist/admin/src/services/release.d.ts +0 -369
  50. package/dist/admin/src/store/hooks.d.ts +0 -7
  51. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +0 -3
  52. package/dist/admin/src/utils/time.d.ts +0 -1
  53. package/dist/server/src/bootstrap.d.ts +0 -5
  54. package/dist/server/src/bootstrap.d.ts.map +0 -1
  55. package/dist/server/src/constants.d.ts +0 -12
  56. package/dist/server/src/constants.d.ts.map +0 -1
  57. package/dist/server/src/content-types/index.d.ts +0 -99
  58. package/dist/server/src/content-types/index.d.ts.map +0 -1
  59. package/dist/server/src/content-types/release/index.d.ts +0 -48
  60. package/dist/server/src/content-types/release/index.d.ts.map +0 -1
  61. package/dist/server/src/content-types/release/schema.d.ts +0 -47
  62. package/dist/server/src/content-types/release/schema.d.ts.map +0 -1
  63. package/dist/server/src/content-types/release-action/index.d.ts +0 -50
  64. package/dist/server/src/content-types/release-action/index.d.ts.map +0 -1
  65. package/dist/server/src/content-types/release-action/schema.d.ts +0 -49
  66. package/dist/server/src/content-types/release-action/schema.d.ts.map +0 -1
  67. package/dist/server/src/controllers/index.d.ts +0 -19
  68. package/dist/server/src/controllers/index.d.ts.map +0 -1
  69. package/dist/server/src/controllers/release-action.d.ts +0 -10
  70. package/dist/server/src/controllers/release-action.d.ts.map +0 -1
  71. package/dist/server/src/controllers/release.d.ts +0 -11
  72. package/dist/server/src/controllers/release.d.ts.map +0 -1
  73. package/dist/server/src/controllers/validation/release-action.d.ts +0 -8
  74. package/dist/server/src/controllers/validation/release-action.d.ts.map +0 -1
  75. package/dist/server/src/controllers/validation/release.d.ts +0 -2
  76. package/dist/server/src/controllers/validation/release.d.ts.map +0 -1
  77. package/dist/server/src/destroy.d.ts +0 -5
  78. package/dist/server/src/destroy.d.ts.map +0 -1
  79. package/dist/server/src/index.d.ts +0 -2095
  80. package/dist/server/src/index.d.ts.map +0 -1
  81. package/dist/server/src/migrations/index.d.ts +0 -13
  82. package/dist/server/src/migrations/index.d.ts.map +0 -1
  83. package/dist/server/src/register.d.ts +0 -5
  84. package/dist/server/src/register.d.ts.map +0 -1
  85. package/dist/server/src/routes/index.d.ts +0 -35
  86. package/dist/server/src/routes/index.d.ts.map +0 -1
  87. package/dist/server/src/routes/release-action.d.ts +0 -18
  88. package/dist/server/src/routes/release-action.d.ts.map +0 -1
  89. package/dist/server/src/routes/release.d.ts +0 -18
  90. package/dist/server/src/routes/release.d.ts.map +0 -1
  91. package/dist/server/src/services/index.d.ts +0 -1826
  92. package/dist/server/src/services/index.d.ts.map +0 -1
  93. package/dist/server/src/services/release.d.ts +0 -66
  94. package/dist/server/src/services/release.d.ts.map +0 -1
  95. package/dist/server/src/services/scheduling.d.ts +0 -18
  96. package/dist/server/src/services/scheduling.d.ts.map +0 -1
  97. package/dist/server/src/services/validation.d.ts +0 -18
  98. package/dist/server/src/services/validation.d.ts.map +0 -1
  99. package/dist/server/src/utils/index.d.ts +0 -14
  100. package/dist/server/src/utils/index.d.ts.map +0 -1
  101. package/dist/shared/contracts/release-actions.d.ts +0 -131
  102. package/dist/shared/contracts/release-actions.d.ts.map +0 -1
  103. package/dist/shared/contracts/releases.d.ts +0 -166
  104. package/dist/shared/contracts/releases.d.ts.map +0 -1
  105. package/dist/shared/types.d.ts +0 -24
  106. package/dist/shared/types.d.ts.map +0 -1
  107. package/dist/shared/validation-schemas.d.ts +0 -2
  108. package/dist/shared/validation-schemas.d.ts.map +0 -1
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- const strapiAdmin = require("@strapi/admin/strapi-admin");
4
+ const helperPlugin = require("@strapi/helper-plugin");
5
5
  const reactRouterDom = require("react-router-dom");
6
- const index = require("./index-cYWov2wa.js");
6
+ const index = require("./index-ydocdaZ0.js");
7
7
  const React = require("react");
8
+ const strapiAdmin = require("@strapi/admin/strapi-admin");
8
9
  const designSystem = require("@strapi/design-system");
9
10
  const v2 = require("@strapi/design-system/v2");
10
11
  const icons = require("@strapi/icons");
@@ -15,7 +16,10 @@ const styled = require("styled-components");
15
16
  const dateFns = require("date-fns");
16
17
  const formik = require("formik");
17
18
  const yup = require("yup");
18
- const reactRedux = require("react-redux");
19
+ require("@reduxjs/toolkit/query");
20
+ require("axios");
21
+ require("@reduxjs/toolkit/query/react");
22
+ require("react-redux");
19
23
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
20
24
  function _interopNamespace(e) {
21
25
  if (e && e.__esModule)
@@ -39,36 +43,6 @@ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
39
43
  const format__default = /* @__PURE__ */ _interopDefault(format);
40
44
  const styled__default = /* @__PURE__ */ _interopDefault(styled);
41
45
  const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
42
- const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
43
- const RelativeTime = React__namespace.forwardRef(
44
- ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {
45
- const { formatRelativeTime, formatDate, formatTime } = reactIntl.useIntl();
46
- const interval = dateFns.intervalToDuration({
47
- start: timestamp,
48
- end: Date.now()
49
- // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.
50
- });
51
- const unit = intervals.find((intervalUnit) => {
52
- return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
53
- });
54
- const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
55
- const customInterval = customIntervals.find(
56
- (custom) => interval[custom.unit] < custom.threshold
57
- );
58
- const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, { numeric: "auto" });
59
- return /* @__PURE__ */ jsxRuntime.jsx(
60
- "time",
61
- {
62
- ref: forwardedRef,
63
- dateTime: timestamp.toISOString(),
64
- role: "time",
65
- title: `${formatDate(timestamp)} ${formatTime(timestamp)}`,
66
- ...restProps,
67
- children: displayText
68
- }
69
- );
70
- }
71
- );
72
46
  const RELEASE_SCHEMA = yup__namespace.object().shape({
73
47
  name: yup__namespace.string().trim().required(),
74
48
  scheduledAt: yup__namespace.string().nullable(),
@@ -105,9 +79,8 @@ const ReleaseModal = ({
105
79
  const { date, time, timezone } = values;
106
80
  if (!date || !time || !timezone)
107
81
  return null;
108
- const formattedDate = dateFns.parse(time, "HH:mm", new Date(date));
109
82
  const timezoneWithoutOffset = timezone.split("&")[1];
110
- return dateFnsTz.zonedTimeToUtc(formattedDate, timezoneWithoutOffset);
83
+ return dateFnsTz.zonedTimeToUtc(`${date} ${time}`, timezoneWithoutOffset);
111
84
  };
112
85
  const getTimezoneWithOffset = () => {
113
86
  const currentTimezone = timezoneList.find(
@@ -307,12 +280,14 @@ const TimezoneComponent = ({ timezoneOptions }) => {
307
280
  }
308
281
  );
309
282
  };
310
- const useTypedDispatch = reactRedux.useDispatch;
311
283
  const LinkCard = styled__default.default(v2.Link)`
312
284
  display: block;
313
285
  `;
314
- const CapitalizeRelativeTime = styled__default.default(RelativeTime)`
315
- text-transform: capitalize;
286
+ const RelativeTime = styled__default.default(helperPlugin.RelativeTime)`
287
+ display: inline-block;
288
+ &::first-letter {
289
+ text-transform: uppercase;
290
+ }
316
291
  `;
317
292
  const getBadgeProps = (status) => {
318
293
  let color;
@@ -342,7 +317,7 @@ const getBadgeProps = (status) => {
342
317
  const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
343
318
  const { formatMessage } = reactIntl.useIntl();
344
319
  if (isError) {
345
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
320
+ return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.AnErrorOccurred, {});
346
321
  }
347
322
  if (releases?.length === 0) {
348
323
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -377,7 +352,7 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
377
352
  children: [
378
353
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "start", gap: 1, children: [
379
354
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { as: "h3", variant: "delta", fontWeight: "bold", children: name }),
380
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: scheduledAt ? /* @__PURE__ */ jsxRuntime.jsx(CapitalizeRelativeTime, { timestamp: new Date(scheduledAt) }) : formatMessage({
355
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: scheduledAt ? /* @__PURE__ */ jsxRuntime.jsx(RelativeTime, { timestamp: new Date(scheduledAt) }) : formatMessage({
381
356
  id: "content-releases.pages.Releases.not-scheduled",
382
357
  defaultMessage: "Not scheduled"
383
358
  }) })
@@ -407,26 +382,23 @@ const ReleasesPage = () => {
407
382
  const tabRef = React__namespace.useRef(null);
408
383
  const location = reactRouterDom.useLocation();
409
384
  const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
410
- const { toggleNotification } = strapiAdmin.useNotification();
385
+ const toggleNotification = helperPlugin.useNotification();
411
386
  const { formatMessage } = reactIntl.useIntl();
412
- const navigate = reactRouterDom.useNavigate();
413
- const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
414
- const [{ query }, setQuery] = strapiAdmin.useQueryParams();
387
+ const { push, replace } = reactRouterDom.useHistory();
388
+ const { formatAPIError } = helperPlugin.useAPIErrorHandler();
389
+ const [{ query }, setQuery] = helperPlugin.useQueryParams();
415
390
  const response = index.useGetReleasesQuery(query);
416
391
  const [createRelease, { isLoading: isSubmittingForm }] = index.useCreateReleaseMutation();
417
392
  const { getFeature } = strapiAdmin.useLicenseLimits();
418
393
  const { maximumReleases = 3 } = getFeature("cms-content-releases");
419
- const { trackUsage } = strapiAdmin.useTracking();
420
- const {
421
- allowedActions: { canCreate }
422
- } = strapiAdmin.useRBAC(index.PERMISSIONS);
394
+ const { trackUsage } = helperPlugin.useTracking();
423
395
  const { isLoading, isSuccess, isError } = response;
424
396
  const activeTab = response?.currentData?.meta?.activeTab || "pending";
425
397
  const activeTabIndex = ["pending", "done"].indexOf(activeTab);
426
398
  React__namespace.useEffect(() => {
427
399
  if (location?.state?.errors) {
428
400
  toggleNotification({
429
- type: "danger",
401
+ type: "warning",
430
402
  title: formatMessage({
431
403
  id: "content-releases.pages.Releases.notification.error.title",
432
404
  defaultMessage: "Your request could not be processed."
@@ -436,9 +408,9 @@ const ReleasesPage = () => {
436
408
  defaultMessage: "Please try again or open another release."
437
409
  })
438
410
  });
439
- navigate("", { replace: true, state: null });
411
+ replace({ state: null });
440
412
  }
441
- }, [formatMessage, location?.state?.errors, navigate, toggleNotification]);
413
+ }, [formatMessage, location?.state?.errors, replace, toggleNotification]);
442
414
  React__namespace.useEffect(() => {
443
415
  if (tabRef.current) {
444
416
  tabRef.current._handlers.setSelectedTabIndex(activeTabIndex);
@@ -448,7 +420,7 @@ const ReleasesPage = () => {
448
420
  setReleaseModalShown((prev) => !prev);
449
421
  };
450
422
  if (isLoading) {
451
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
423
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Main, { "aria-busy": isLoading, children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
452
424
  }
453
425
  const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
454
426
  const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;
@@ -479,15 +451,15 @@ const ReleasesPage = () => {
479
451
  })
480
452
  });
481
453
  trackUsage("didCreateRelease");
482
- navigate(response2.data.data.id.toString());
454
+ push(`/plugins/content-releases/${response2.data.data.id}`);
483
455
  } else if (index.isAxiosError(response2.error)) {
484
456
  toggleNotification({
485
- type: "danger",
457
+ type: "warning",
486
458
  message: formatAPIError(response2.error)
487
459
  });
488
460
  } else {
489
461
  toggleNotification({
490
- type: "danger",
462
+ type: "warning",
491
463
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
492
464
  });
493
465
  }
@@ -504,7 +476,7 @@ const ReleasesPage = () => {
504
476
  id: "content-releases.pages.Releases.header-subtitle",
505
477
  defaultMessage: "Create and manage content updates"
506
478
  }),
507
- primaryAction: canCreate ? /* @__PURE__ */ jsxRuntime.jsx(
479
+ primaryAction: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: index.PERMISSIONS.create, children: /* @__PURE__ */ jsxRuntime.jsx(
508
480
  designSystem.Button,
509
481
  {
510
482
  startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Plus, {}),
@@ -515,7 +487,7 @@ const ReleasesPage = () => {
515
487
  defaultMessage: "New release"
516
488
  })
517
489
  }
518
- ) : null
490
+ ) })
519
491
  }
520
492
  ),
521
493
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -594,17 +566,23 @@ const ReleasesPage = () => {
594
566
  ]
595
567
  }
596
568
  ),
597
- /* @__PURE__ */ jsxRuntime.jsxs(
598
- strapiAdmin.Pagination.Root,
599
- {
600
- ...response?.currentData?.meta?.pagination,
601
- defaultPageSize: response?.currentData?.meta?.pagination?.pageSize,
602
- children: [
603
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, { options: ["8", "16", "32", "64"] }),
604
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
605
- ]
606
- }
607
- )
569
+ response.currentData?.meta?.pagination?.total ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { paddingTop: 4, alignItems: "flex-end", justifyContent: "space-between", children: [
570
+ /* @__PURE__ */ jsxRuntime.jsx(
571
+ helperPlugin.PageSizeURLQuery,
572
+ {
573
+ options: ["8", "16", "32", "64"],
574
+ defaultValue: response?.currentData?.meta?.pagination?.pageSize.toString()
575
+ }
576
+ ),
577
+ /* @__PURE__ */ jsxRuntime.jsx(
578
+ helperPlugin.PaginationURLQuery,
579
+ {
580
+ pagination: {
581
+ pageCount: response?.currentData?.meta?.pagination?.pageCount || 0
582
+ }
583
+ }
584
+ )
585
+ ] }) : null
608
586
  ] }) }),
609
587
  releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
610
588
  ReleaseModal,
@@ -652,18 +630,14 @@ const TrashIcon = styled__default.default(icons.Trash)`
652
630
  const TypographyMaxWidth = styled__default.default(designSystem.Typography)`
653
631
  max-width: 300px;
654
632
  `;
655
- const EntryValidationText = ({ action, schema, entry }) => {
633
+ const EntryValidationText = ({ action, schema, components, entry }) => {
656
634
  const { formatMessage } = reactIntl.useIntl();
657
- const { validate } = strapiAdmin.unstable_useDocument(
658
- {
659
- collectionType: schema?.kind ?? "",
660
- model: schema?.uid ?? ""
661
- },
662
- {
663
- skip: !schema
664
- }
665
- );
666
- const errors = validate(entry) ?? {};
635
+ const { validate } = strapiAdmin.unstable_useDocument();
636
+ const { errors } = validate(entry, {
637
+ contentType: schema,
638
+ components,
639
+ isCreatingEntry: false
640
+ });
667
641
  if (Object.keys(errors).length > 0) {
668
642
  const validationErrorsMessages = Object.entries(errors).map(
669
643
  ([key, value]) => formatMessage(
@@ -711,22 +685,18 @@ const ReleaseDetailsLayout = ({
711
685
  isLoading: isLoadingDetails,
712
686
  isError,
713
687
  error
714
- } = index.useGetReleaseQuery(
715
- { id: releaseId },
716
- {
717
- skip: !releaseId
718
- }
719
- );
688
+ } = index.useGetReleaseQuery({ id: releaseId });
720
689
  const [publishRelease, { isLoading: isPublishing }] = index.usePublishReleaseMutation();
721
- const { toggleNotification } = strapiAdmin.useNotification();
722
- const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
723
- const { allowedActions } = strapiAdmin.useRBAC(index.PERMISSIONS);
724
- const { canUpdate, canDelete, canPublish } = allowedActions;
725
- const dispatch = useTypedDispatch();
726
- const { trackUsage } = strapiAdmin.useTracking();
690
+ const toggleNotification = helperPlugin.useNotification();
691
+ const { formatAPIError } = helperPlugin.useAPIErrorHandler();
692
+ const {
693
+ allowedActions: { canUpdate, canDelete }
694
+ } = helperPlugin.useRBAC(index.PERMISSIONS);
695
+ const dispatch = index.useTypedDispatch();
696
+ const { trackUsage } = helperPlugin.useTracking();
727
697
  const release = data?.data;
728
- const handlePublishRelease = (id) => async () => {
729
- const response = await publishRelease({ id });
698
+ const handlePublishRelease = async () => {
699
+ const response = await publishRelease({ id: releaseId });
730
700
  if ("data" in response) {
731
701
  toggleNotification({
732
702
  type: "success",
@@ -743,12 +713,12 @@ const ReleaseDetailsLayout = ({
743
713
  });
744
714
  } else if (index.isAxiosError(response.error)) {
745
715
  toggleNotification({
746
- type: "danger",
716
+ type: "warning",
747
717
  message: formatAPIError(response.error)
748
718
  });
749
719
  } else {
750
720
  toggleNotification({
751
- type: "danger",
721
+ type: "warning",
752
722
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
753
723
  });
754
724
  }
@@ -774,19 +744,21 @@ const ReleaseDetailsLayout = ({
774
744
  return release.createdBy.email;
775
745
  };
776
746
  if (isLoadingDetails) {
777
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
747
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Main, { "aria-busy": isLoadingDetails, children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
778
748
  }
779
749
  if (isError || !release) {
780
750
  return /* @__PURE__ */ jsxRuntime.jsx(
781
- reactRouterDom.Navigate,
751
+ reactRouterDom.Redirect,
782
752
  {
783
- to: "..",
784
- state: {
785
- errors: [
786
- {
787
- code: error?.code
788
- }
789
- ]
753
+ to: {
754
+ pathname: "/plugins/content-releases",
755
+ state: {
756
+ errors: [
757
+ {
758
+ code: error?.code
759
+ }
760
+ ]
761
+ }
790
762
  }
791
763
  }
792
764
  );
@@ -830,7 +802,10 @@ const ReleaseDetailsLayout = ({
830
802
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : "") }),
831
803
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { ...getBadgeProps(release.status), children: release.status })
832
804
  ] }),
833
- navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
805
+ navigationAction: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Link, { startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowLeft, {}), to: "/plugins/content-releases", children: formatMessage({
806
+ id: "global.back",
807
+ defaultMessage: "Back"
808
+ }) }),
834
809
  primaryAction: !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
835
810
  /* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
836
811
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -896,7 +871,7 @@ const ReleaseDetailsLayout = ({
896
871
  defaultMessage: "Created"
897
872
  }) }),
898
873
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", color: "neutral300", children: [
899
- /* @__PURE__ */ jsxRuntime.jsx(RelativeTime, { timestamp: new Date(release.createdAt) }),
874
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.RelativeTime, { timestamp: new Date(release.createdAt) }),
900
875
  formatMessage(
901
876
  {
902
877
  id: "content-releases.header.actions.created.description",
@@ -914,12 +889,12 @@ const ReleaseDetailsLayout = ({
914
889
  id: "content-releases.header.actions.refresh",
915
890
  defaultMessage: "Refresh"
916
891
  }) }),
917
- canPublish ? /* @__PURE__ */ jsxRuntime.jsx(
892
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: index.PERMISSIONS.publish, children: /* @__PURE__ */ jsxRuntime.jsx(
918
893
  designSystem.Button,
919
894
  {
920
895
  size: "S",
921
896
  variant: "default",
922
- onClick: handlePublishRelease(release.id.toString()),
897
+ onClick: handlePublishRelease,
923
898
  loading: isPublishing,
924
899
  disabled: release.actions.meta.count === 0,
925
900
  children: formatMessage({
@@ -927,7 +902,7 @@ const ReleaseDetailsLayout = ({
927
902
  defaultMessage: "Publish"
928
903
  })
929
904
  }
930
- ) : null
905
+ ) })
931
906
  ] })
932
907
  }
933
908
  ),
@@ -953,11 +928,12 @@ const getGroupByOptionLabel = (value) => {
953
928
  defaultMessage: "Content-Types"
954
929
  };
955
930
  };
956
- const ReleaseDetailsBody = ({ releaseId }) => {
931
+ const ReleaseDetailsBody = () => {
957
932
  const { formatMessage } = reactIntl.useIntl();
958
- const [{ query }, setQuery] = strapiAdmin.useQueryParams();
959
- const { toggleNotification } = strapiAdmin.useNotification();
960
- const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
933
+ const { releaseId } = reactRouterDom.useParams();
934
+ const [{ query }, setQuery] = helperPlugin.useQueryParams();
935
+ const toggleNotification = helperPlugin.useNotification();
936
+ const { formatAPIError } = helperPlugin.useAPIErrorHandler();
961
937
  const {
962
938
  data: releaseData,
963
939
  isLoading: isReleaseLoading,
@@ -966,7 +942,7 @@ const ReleaseDetailsBody = ({ releaseId }) => {
966
942
  } = index.useGetReleaseQuery({ id: releaseId });
967
943
  const {
968
944
  allowedActions: { canUpdate }
969
- } = strapiAdmin.useRBAC(index.PERMISSIONS);
945
+ } = helperPlugin.useRBAC(index.PERMISSIONS);
970
946
  const release = releaseData?.data;
971
947
  const selectedGroupBy = query?.groupBy || "contentType";
972
948
  const {
@@ -997,19 +973,19 @@ const ReleaseDetailsBody = ({ releaseId }) => {
997
973
  if ("error" in response) {
998
974
  if (index.isAxiosError(response.error)) {
999
975
  toggleNotification({
1000
- type: "danger",
976
+ type: "warning",
1001
977
  message: formatAPIError(response.error)
1002
978
  });
1003
979
  } else {
1004
980
  toggleNotification({
1005
- type: "danger",
981
+ type: "warning",
1006
982
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
1007
983
  });
1008
984
  }
1009
985
  }
1010
986
  };
1011
987
  if (isLoading || isReleaseLoading) {
1012
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
988
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
1013
989
  }
1014
990
  const releaseActions = data?.data;
1015
991
  const releaseMeta = data?.meta;
@@ -1028,22 +1004,28 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1028
1004
  });
1029
1005
  }
1030
1006
  return /* @__PURE__ */ jsxRuntime.jsx(
1031
- reactRouterDom.Navigate,
1007
+ reactRouterDom.Redirect,
1032
1008
  {
1033
- to: "..",
1034
- state: {
1035
- errors: errorsArray
1009
+ to: {
1010
+ pathname: "/plugins/content-releases",
1011
+ state: {
1012
+ errors: errorsArray
1013
+ }
1036
1014
  }
1037
1015
  }
1038
1016
  );
1039
1017
  }
1040
1018
  if (isError || !releaseActions) {
1041
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
1019
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.AnErrorOccurred, {}) });
1042
1020
  }
1043
1021
  if (Object.keys(releaseActions).length === 0) {
1044
1022
  return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(
1045
- designSystem.EmptyStateLayout,
1023
+ helperPlugin.NoContent,
1046
1024
  {
1025
+ content: {
1026
+ id: "content-releases.pages.Details.tab.emptyEntries",
1027
+ defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
1028
+ },
1047
1029
  action: /* @__PURE__ */ jsxRuntime.jsx(
1048
1030
  v2.LinkButton,
1049
1031
  {
@@ -1058,64 +1040,18 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1058
1040
  defaultMessage: "Open the Content Manager"
1059
1041
  })
1060
1042
  }
1061
- ),
1062
- icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" }),
1063
- content: formatMessage({
1064
- id: "content-releases.pages.Details.tab.emptyEntries",
1065
- defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
1066
- })
1043
+ )
1067
1044
  }
1068
1045
  ) });
1069
1046
  }
1070
- const groupByLabel = formatMessage({
1071
- id: "content-releases.pages.ReleaseDetails.groupBy.aria-label",
1072
- defaultMessage: "Group by"
1073
- });
1074
- const headers = [
1075
- {
1076
- label: formatMessage({
1077
- id: "content-releases.page.ReleaseDetails.table.header.label.name",
1078
- defaultMessage: "name"
1079
- }),
1080
- name: "name"
1081
- },
1082
- {
1083
- label: formatMessage({
1084
- id: "content-releases.page.ReleaseDetails.table.header.label.locale",
1085
- defaultMessage: "locale"
1086
- }),
1087
- name: "locale"
1088
- },
1089
- {
1090
- label: formatMessage({
1091
- id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
1092
- defaultMessage: "content-type"
1093
- }),
1094
- name: "content-type"
1095
- },
1096
- {
1097
- label: formatMessage({
1098
- id: "content-releases.page.ReleaseDetails.table.header.label.action",
1099
- defaultMessage: "action"
1100
- }),
1101
- name: "action"
1102
- },
1103
- ...!release.releasedAt ? [
1104
- {
1105
- label: formatMessage({
1106
- id: "content-releases.page.ReleaseDetails.table.header.label.status",
1107
- defaultMessage: "status"
1108
- }),
1109
- name: "status"
1110
- }
1111
- ] : []
1112
- ];
1113
1047
  return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
1114
1048
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { children: /* @__PURE__ */ jsxRuntime.jsx(
1115
1049
  designSystem.SingleSelect,
1116
1050
  {
1117
- placeholder: groupByLabel,
1118
- "aria-label": groupByLabel,
1051
+ "aria-label": formatMessage({
1052
+ id: "content-releases.pages.ReleaseDetails.groupBy.aria-label",
1053
+ defaultMessage: "Group by"
1054
+ }),
1119
1055
  customizeContent: (value) => formatMessage(
1120
1056
  {
1121
1057
  id: `content-releases.pages.ReleaseDetails.groupBy.label`,
@@ -1133,18 +1069,75 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1133
1069
  Object.keys(releaseActions).map((key) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
1134
1070
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { role: "separator", "aria-label": key, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { children: key }) }),
1135
1071
  /* @__PURE__ */ jsxRuntime.jsx(
1136
- strapiAdmin.Table.Root,
1072
+ helperPlugin.Table.Root,
1137
1073
  {
1138
1074
  rows: releaseActions[key].map((item) => ({
1139
1075
  ...item,
1140
1076
  id: Number(item.entry.id)
1141
1077
  })),
1142
- headers,
1143
- isLoading: isLoading || isFetching,
1144
- children: /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Content, { children: [
1145
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Head, { children: headers.map((header) => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, { ...header }, header.name)) }),
1146
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
1147
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Body, { children: releaseActions[key].map(
1078
+ colCount: releaseActions[key].length,
1079
+ isLoading,
1080
+ isFetching,
1081
+ children: /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Table.Content, { children: [
1082
+ /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Table.Head, { children: [
1083
+ /* @__PURE__ */ jsxRuntime.jsx(
1084
+ helperPlugin.Table.HeaderCell,
1085
+ {
1086
+ fieldSchemaType: "string",
1087
+ label: formatMessage({
1088
+ id: "content-releases.page.ReleaseDetails.table.header.label.name",
1089
+ defaultMessage: "name"
1090
+ }),
1091
+ name: "name"
1092
+ }
1093
+ ),
1094
+ /* @__PURE__ */ jsxRuntime.jsx(
1095
+ helperPlugin.Table.HeaderCell,
1096
+ {
1097
+ fieldSchemaType: "string",
1098
+ label: formatMessage({
1099
+ id: "content-releases.page.ReleaseDetails.table.header.label.locale",
1100
+ defaultMessage: "locale"
1101
+ }),
1102
+ name: "locale"
1103
+ }
1104
+ ),
1105
+ /* @__PURE__ */ jsxRuntime.jsx(
1106
+ helperPlugin.Table.HeaderCell,
1107
+ {
1108
+ fieldSchemaType: "string",
1109
+ label: formatMessage({
1110
+ id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
1111
+ defaultMessage: "content-type"
1112
+ }),
1113
+ name: "content-type"
1114
+ }
1115
+ ),
1116
+ /* @__PURE__ */ jsxRuntime.jsx(
1117
+ helperPlugin.Table.HeaderCell,
1118
+ {
1119
+ fieldSchemaType: "string",
1120
+ label: formatMessage({
1121
+ id: "content-releases.page.ReleaseDetails.table.header.label.action",
1122
+ defaultMessage: "action"
1123
+ }),
1124
+ name: "action"
1125
+ }
1126
+ ),
1127
+ !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsx(
1128
+ helperPlugin.Table.HeaderCell,
1129
+ {
1130
+ fieldSchemaType: "string",
1131
+ label: formatMessage({
1132
+ id: "content-releases.page.ReleaseDetails.table.header.label.status",
1133
+ defaultMessage: "status"
1134
+ }),
1135
+ name: "status"
1136
+ }
1137
+ )
1138
+ ] }),
1139
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.LoadingBody, {}),
1140
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.Body, { children: releaseActions[key].map(
1148
1141
  ({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
1149
1142
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
1150
1143
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "10%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
@@ -1201,39 +1194,34 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1201
1194
  }
1202
1195
  )
1203
1196
  ] }, `releases-group-${key}`)),
1204
- /* @__PURE__ */ jsxRuntime.jsxs(
1205
- strapiAdmin.Pagination.Root,
1206
- {
1207
- ...releaseMeta?.pagination,
1208
- defaultPageSize: releaseMeta?.pagination?.pageSize,
1209
- children: [
1210
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, {}),
1211
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
1212
- ]
1213
- }
1214
- )
1197
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { paddingTop: 4, alignItems: "flex-end", justifyContent: "space-between", children: [
1198
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.PageSizeURLQuery, { defaultValue: releaseMeta?.pagination?.pageSize.toString() }),
1199
+ /* @__PURE__ */ jsxRuntime.jsx(
1200
+ helperPlugin.PaginationURLQuery,
1201
+ {
1202
+ pagination: {
1203
+ pageCount: releaseMeta?.pagination?.pageCount || 0
1204
+ }
1205
+ }
1206
+ )
1207
+ ] })
1215
1208
  ] }) });
1216
1209
  };
1217
1210
  const ReleaseDetailsPage = () => {
1218
1211
  const { formatMessage } = reactIntl.useIntl();
1219
1212
  const { releaseId } = reactRouterDom.useParams();
1220
- const { toggleNotification } = strapiAdmin.useNotification();
1221
- const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
1222
- const navigate = reactRouterDom.useNavigate();
1213
+ const toggleNotification = helperPlugin.useNotification();
1214
+ const { formatAPIError } = helperPlugin.useAPIErrorHandler();
1215
+ const { replace } = reactRouterDom.useHistory();
1223
1216
  const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
1224
1217
  const [showWarningSubmit, setWarningSubmit] = React__namespace.useState(false);
1225
1218
  const {
1226
1219
  isLoading: isLoadingDetails,
1227
1220
  data,
1228
1221
  isSuccess: isSuccessDetails
1229
- } = index.useGetReleaseQuery(
1230
- { id: releaseId },
1231
- {
1232
- skip: !releaseId
1233
- }
1234
- );
1222
+ } = index.useGetReleaseQuery({ id: releaseId });
1235
1223
  const [updateRelease, { isLoading: isSubmittingForm }] = index.useUpdateReleaseMutation();
1236
- const [deleteRelease] = index.useDeleteReleaseMutation();
1224
+ const [deleteRelease, { isLoading: isDeletingRelease }] = index.useDeleteReleaseMutation();
1237
1225
  const toggleEditReleaseModal = () => {
1238
1226
  setReleaseModalShown((prev) => !prev);
1239
1227
  };
@@ -1244,18 +1232,15 @@ const ReleaseDetailsPage = () => {
1244
1232
  {
1245
1233
  toggleEditReleaseModal,
1246
1234
  toggleWarningSubmit,
1247
- children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {})
1235
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) })
1248
1236
  }
1249
1237
  );
1250
1238
  }
1251
- if (!releaseId) {
1252
- return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: ".." });
1253
- }
1254
1239
  const releaseData = isSuccessDetails && data?.data || null;
1255
1240
  const title = releaseData?.name || "";
1256
1241
  const timezone = releaseData?.timezone ?? null;
1257
1242
  const scheduledAt = releaseData?.scheduledAt && timezone ? dateFnsTz.utcToZonedTime(releaseData.scheduledAt, timezone) : null;
1258
- const date = scheduledAt ? new Date(format__default.default(scheduledAt, "yyyy-MM-dd")) : null;
1243
+ const date = scheduledAt ? format__default.default(scheduledAt, "yyyy-MM-dd") : null;
1259
1244
  const time = scheduledAt ? format__default.default(scheduledAt, "HH:mm") : "";
1260
1245
  const handleEditRelease = async (values) => {
1261
1246
  const response = await updateRelease({
@@ -1272,33 +1257,33 @@ const ReleaseDetailsPage = () => {
1272
1257
  defaultMessage: "Release updated."
1273
1258
  })
1274
1259
  });
1260
+ toggleEditReleaseModal();
1275
1261
  } else if (index.isAxiosError(response.error)) {
1276
1262
  toggleNotification({
1277
- type: "danger",
1263
+ type: "warning",
1278
1264
  message: formatAPIError(response.error)
1279
1265
  });
1280
1266
  } else {
1281
1267
  toggleNotification({
1282
- type: "danger",
1268
+ type: "warning",
1283
1269
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
1284
1270
  });
1285
1271
  }
1286
- toggleEditReleaseModal();
1287
1272
  };
1288
1273
  const handleDeleteRelease = async () => {
1289
1274
  const response = await deleteRelease({
1290
1275
  id: releaseId
1291
1276
  });
1292
1277
  if ("data" in response) {
1293
- navigate("..");
1278
+ replace("/plugins/content-releases");
1294
1279
  } else if (index.isAxiosError(response.error)) {
1295
1280
  toggleNotification({
1296
- type: "danger",
1281
+ type: "warning",
1297
1282
  message: formatAPIError(response.error)
1298
1283
  });
1299
1284
  } else {
1300
1285
  toggleNotification({
1301
- type: "danger",
1286
+ type: "warning",
1302
1287
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
1303
1288
  });
1304
1289
  }
@@ -1309,7 +1294,7 @@ const ReleaseDetailsPage = () => {
1309
1294
  toggleEditReleaseModal,
1310
1295
  toggleWarningSubmit,
1311
1296
  children: [
1312
- /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, { releaseId }),
1297
+ /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, {}),
1313
1298
  releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
1314
1299
  ReleaseModal,
1315
1300
  {
@@ -1327,15 +1312,16 @@ const ReleaseDetailsPage = () => {
1327
1312
  }
1328
1313
  ),
1329
1314
  /* @__PURE__ */ jsxRuntime.jsx(
1330
- strapiAdmin.ConfirmDialog,
1315
+ helperPlugin.ConfirmDialog,
1331
1316
  {
1332
- isOpen: showWarningSubmit,
1333
- onClose: toggleWarningSubmit,
1334
- onConfirm: handleDeleteRelease,
1335
- children: formatMessage({
1317
+ bodyText: {
1336
1318
  id: "content-releases.dialog.confirmation-message",
1337
1319
  defaultMessage: "Are you sure you want to delete this release?"
1338
- })
1320
+ },
1321
+ isOpen: showWarningSubmit,
1322
+ isConfirmButtonLoading: isDeletingRelease,
1323
+ onToggleDialog: toggleWarningSubmit,
1324
+ onConfirm: handleDeleteRelease
1339
1325
  }
1340
1326
  )
1341
1327
  ]
@@ -1343,10 +1329,10 @@ const ReleaseDetailsPage = () => {
1343
1329
  );
1344
1330
  };
1345
1331
  const App = () => {
1346
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Routes, { children: [
1347
- /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { index: true, element: /* @__PURE__ */ jsxRuntime.jsx(ReleasesPage, {}) }),
1348
- /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: ":releaseId", element: /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsPage, {}) })
1332
+ return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Switch, { children: [
1333
+ /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { exact: true, path: `/plugins/${index.pluginId}`, component: ReleasesPage }),
1334
+ /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { exact: true, path: `/plugins/${index.pluginId}/:releaseId`, component: ReleaseDetailsPage })
1349
1335
  ] }) });
1350
1336
  };
1351
1337
  exports.App = App;
1352
- //# sourceMappingURL=App-1LckaIGY.js.map
1338
+ //# sourceMappingURL=App-OP70yd5M.js.map