@strapi/content-releases 0.0.0-experimental.e60ec1829240dae21c1e1d29076681c322288813 → 0.0.0-experimental.e86ac7192458208dc921b643405f97aeba7cccb9

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 (111) hide show
  1. package/LICENSE +17 -1
  2. package/dist/_chunks/{App-CXRpb2hi.js → App-dLXY5ei3.js} +228 -241
  3. package/dist/_chunks/App-dLXY5ei3.js.map +1 -0
  4. package/dist/_chunks/{App-BsUSTHVD.mjs → App-jrh58sXY.mjs} +211 -224
  5. package/dist/_chunks/App-jrh58sXY.mjs.map +1 -0
  6. package/dist/_chunks/{PurchaseContentReleases-_MxP6-Dt.mjs → PurchaseContentReleases-3tRbmbY3.mjs} +7 -8
  7. package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs.map +1 -0
  8. package/dist/_chunks/{PurchaseContentReleases-Be3acS2L.js → PurchaseContentReleases-bpIYXOfu.js} +6 -7
  9. package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js.map +1 -0
  10. package/dist/_chunks/{en-DtFJ5ViE.js → en-HrREghh3.js} +1 -1
  11. package/dist/_chunks/en-HrREghh3.js.map +1 -0
  12. package/dist/_chunks/{en-B9Ur3VsE.mjs → en-ltT1TlKQ.mjs} +1 -1
  13. package/dist/_chunks/en-ltT1TlKQ.mjs.map +1 -0
  14. package/dist/_chunks/{index-B6-lic1Q.js → index-CVO0Rqdm.js} +210 -135
  15. package/dist/_chunks/index-CVO0Rqdm.js.map +1 -0
  16. package/dist/_chunks/{index-DJLIZdZv.mjs → index-PiOGBETy.mjs} +211 -136
  17. package/dist/_chunks/index-PiOGBETy.mjs.map +1 -0
  18. package/dist/admin/index.js +15 -1
  19. package/dist/admin/index.js.map +1 -1
  20. package/dist/admin/index.mjs +16 -2
  21. package/dist/admin/index.mjs.map +1 -1
  22. package/dist/server/index.js +96 -86
  23. package/dist/server/index.js.map +1 -1
  24. package/dist/server/index.mjs +96 -87
  25. package/dist/server/index.mjs.map +1 -1
  26. package/package.json +34 -28
  27. package/dist/_chunks/App-BsUSTHVD.mjs.map +0 -1
  28. package/dist/_chunks/App-CXRpb2hi.js.map +0 -1
  29. package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +0 -1
  30. package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs.map +0 -1
  31. package/dist/_chunks/en-B9Ur3VsE.mjs.map +0 -1
  32. package/dist/_chunks/en-DtFJ5ViE.js.map +0 -1
  33. package/dist/_chunks/index-B6-lic1Q.js.map +0 -1
  34. package/dist/_chunks/index-DJLIZdZv.mjs.map +0 -1
  35. package/dist/admin/src/components/CMReleasesContainer.d.ts +0 -22
  36. package/dist/admin/src/components/RelativeTime.d.ts +0 -28
  37. package/dist/admin/src/components/ReleaseAction.d.ts +0 -3
  38. package/dist/admin/src/components/ReleaseActionMenu.d.ts +0 -26
  39. package/dist/admin/src/components/ReleaseActionOptions.d.ts +0 -9
  40. package/dist/admin/src/components/ReleaseListCell.d.ts +0 -0
  41. package/dist/admin/src/components/ReleaseModal.d.ts +0 -16
  42. package/dist/admin/src/constants.d.ts +0 -58
  43. package/dist/admin/src/index.d.ts +0 -3
  44. package/dist/admin/src/pages/App.d.ts +0 -1
  45. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +0 -2
  46. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +0 -2
  47. package/dist/admin/src/pages/ReleasesPage.d.ts +0 -8
  48. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +0 -181
  49. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +0 -39
  50. package/dist/admin/src/pluginId.d.ts +0 -1
  51. package/dist/admin/src/services/axios.d.ts +0 -29
  52. package/dist/admin/src/services/release.d.ts +0 -429
  53. package/dist/admin/src/store/hooks.d.ts +0 -7
  54. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +0 -3
  55. package/dist/admin/src/utils/time.d.ts +0 -1
  56. package/dist/server/src/bootstrap.d.ts +0 -5
  57. package/dist/server/src/bootstrap.d.ts.map +0 -1
  58. package/dist/server/src/constants.d.ts +0 -12
  59. package/dist/server/src/constants.d.ts.map +0 -1
  60. package/dist/server/src/content-types/index.d.ts +0 -99
  61. package/dist/server/src/content-types/index.d.ts.map +0 -1
  62. package/dist/server/src/content-types/release/index.d.ts +0 -48
  63. package/dist/server/src/content-types/release/index.d.ts.map +0 -1
  64. package/dist/server/src/content-types/release/schema.d.ts +0 -47
  65. package/dist/server/src/content-types/release/schema.d.ts.map +0 -1
  66. package/dist/server/src/content-types/release-action/index.d.ts +0 -50
  67. package/dist/server/src/content-types/release-action/index.d.ts.map +0 -1
  68. package/dist/server/src/content-types/release-action/schema.d.ts +0 -49
  69. package/dist/server/src/content-types/release-action/schema.d.ts.map +0 -1
  70. package/dist/server/src/controllers/index.d.ts +0 -20
  71. package/dist/server/src/controllers/index.d.ts.map +0 -1
  72. package/dist/server/src/controllers/release-action.d.ts +0 -10
  73. package/dist/server/src/controllers/release-action.d.ts.map +0 -1
  74. package/dist/server/src/controllers/release.d.ts +0 -12
  75. package/dist/server/src/controllers/release.d.ts.map +0 -1
  76. package/dist/server/src/controllers/validation/release-action.d.ts +0 -8
  77. package/dist/server/src/controllers/validation/release-action.d.ts.map +0 -1
  78. package/dist/server/src/controllers/validation/release.d.ts +0 -2
  79. package/dist/server/src/controllers/validation/release.d.ts.map +0 -1
  80. package/dist/server/src/destroy.d.ts +0 -5
  81. package/dist/server/src/destroy.d.ts.map +0 -1
  82. package/dist/server/src/index.d.ts +0 -2096
  83. package/dist/server/src/index.d.ts.map +0 -1
  84. package/dist/server/src/migrations/index.d.ts +0 -13
  85. package/dist/server/src/migrations/index.d.ts.map +0 -1
  86. package/dist/server/src/register.d.ts +0 -5
  87. package/dist/server/src/register.d.ts.map +0 -1
  88. package/dist/server/src/routes/index.d.ts +0 -35
  89. package/dist/server/src/routes/index.d.ts.map +0 -1
  90. package/dist/server/src/routes/release-action.d.ts +0 -18
  91. package/dist/server/src/routes/release-action.d.ts.map +0 -1
  92. package/dist/server/src/routes/release.d.ts +0 -18
  93. package/dist/server/src/routes/release.d.ts.map +0 -1
  94. package/dist/server/src/services/index.d.ts +0 -1826
  95. package/dist/server/src/services/index.d.ts.map +0 -1
  96. package/dist/server/src/services/release.d.ts +0 -66
  97. package/dist/server/src/services/release.d.ts.map +0 -1
  98. package/dist/server/src/services/scheduling.d.ts +0 -18
  99. package/dist/server/src/services/scheduling.d.ts.map +0 -1
  100. package/dist/server/src/services/validation.d.ts +0 -18
  101. package/dist/server/src/services/validation.d.ts.map +0 -1
  102. package/dist/server/src/utils/index.d.ts +0 -14
  103. package/dist/server/src/utils/index.d.ts.map +0 -1
  104. package/dist/shared/contracts/release-actions.d.ts +0 -131
  105. package/dist/shared/contracts/release-actions.d.ts.map +0 -1
  106. package/dist/shared/contracts/releases.d.ts +0 -182
  107. package/dist/shared/contracts/releases.d.ts.map +0 -1
  108. package/dist/shared/types.d.ts +0 -24
  109. package/dist/shared/types.d.ts.map +0 -1
  110. package/dist/shared/validation-schemas.d.ts +0 -2
  111. package/dist/shared/validation-schemas.d.ts.map +0 -1
@@ -1,14 +1,14 @@
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-B6-lic1Q.js");
6
+ const index = require("./index-CVO0Rqdm.js");
7
7
  const React = require("react");
8
- const strapiAdmin$1 = require("@strapi/content-manager/strapi-admin");
8
+ const strapiAdmin = require("@strapi/admin/strapi-admin");
9
9
  const designSystem = require("@strapi/design-system");
10
+ const v2 = require("@strapi/design-system/v2");
10
11
  const icons = require("@strapi/icons");
11
- const symbols = require("@strapi/icons/symbols");
12
12
  const format = require("date-fns/format");
13
13
  const dateFnsTz = require("date-fns-tz");
14
14
  const reactIntl = require("react-intl");
@@ -16,8 +16,10 @@ const styled = require("styled-components");
16
16
  const dateFns = require("date-fns");
17
17
  const formik = require("formik");
18
18
  const yup = require("yup");
19
- const reactRedux = require("react-redux");
20
- const ee = require("@strapi/admin/strapi-admin/ee");
19
+ require("@reduxjs/toolkit/query");
20
+ require("axios");
21
+ require("@reduxjs/toolkit/query/react");
22
+ require("react-redux");
21
23
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
22
24
  function _interopNamespace(e) {
23
25
  if (e && e.__esModule)
@@ -41,36 +43,6 @@ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
41
43
  const format__default = /* @__PURE__ */ _interopDefault(format);
42
44
  const styled__default = /* @__PURE__ */ _interopDefault(styled);
43
45
  const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
44
- const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
45
- const RelativeTime$1 = React__namespace.forwardRef(
46
- ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {
47
- const { formatRelativeTime, formatDate, formatTime } = reactIntl.useIntl();
48
- const interval = dateFns.intervalToDuration({
49
- start: timestamp,
50
- end: Date.now()
51
- // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.
52
- });
53
- const unit = intervals.find((intervalUnit) => {
54
- return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
55
- });
56
- const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
57
- const customInterval = customIntervals.find(
58
- (custom) => interval[custom.unit] < custom.threshold
59
- );
60
- const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, { numeric: "auto" });
61
- return /* @__PURE__ */ jsxRuntime.jsx(
62
- "time",
63
- {
64
- ref: forwardedRef,
65
- dateTime: timestamp.toISOString(),
66
- role: "time",
67
- title: `${formatDate(timestamp)} ${formatTime(timestamp)}`,
68
- ...restProps,
69
- children: displayText
70
- }
71
- );
72
- }
73
- );
74
46
  const RELEASE_SCHEMA = yup__namespace.object().shape({
75
47
  name: yup__namespace.string().trim().required(),
76
48
  scheduledAt: yup__namespace.string().nullable(),
@@ -308,11 +280,10 @@ const TimezoneComponent = ({ timezoneOptions }) => {
308
280
  }
309
281
  );
310
282
  };
311
- const useTypedDispatch = reactRedux.useDispatch;
312
- const LinkCard = styled__default.default(designSystem.Link)`
283
+ const LinkCard = styled__default.default(v2.Link)`
313
284
  display: block;
314
285
  `;
315
- const RelativeTime = styled__default.default(RelativeTime$1)`
286
+ const RelativeTime = styled__default.default(helperPlugin.RelativeTime)`
316
287
  display: inline-block;
317
288
  &::first-letter {
318
289
  text-transform: uppercase;
@@ -346,7 +317,7 @@ const getBadgeProps = (status) => {
346
317
  const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
347
318
  const { formatMessage } = reactIntl.useIntl();
348
319
  if (isError) {
349
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
320
+ return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.AnErrorOccurred, {});
350
321
  }
351
322
  if (releases?.length === 0) {
352
323
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -361,7 +332,7 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
361
332
  target: sectionTitle
362
333
  }
363
334
  ),
364
- icon: /* @__PURE__ */ jsxRuntime.jsx(symbols.EmptyDocuments, { width: "16rem" })
335
+ icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" })
365
336
  }
366
337
  );
367
338
  }
@@ -411,26 +382,23 @@ const ReleasesPage = () => {
411
382
  const tabRef = React__namespace.useRef(null);
412
383
  const location = reactRouterDom.useLocation();
413
384
  const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
414
- const { toggleNotification } = strapiAdmin.useNotification();
385
+ const toggleNotification = helperPlugin.useNotification();
415
386
  const { formatMessage } = reactIntl.useIntl();
416
- const navigate = reactRouterDom.useNavigate();
417
- const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
418
- const [{ query }, setQuery] = strapiAdmin.useQueryParams();
387
+ const { push, replace } = reactRouterDom.useHistory();
388
+ const { formatAPIError } = helperPlugin.useAPIErrorHandler();
389
+ const [{ query }, setQuery] = helperPlugin.useQueryParams();
419
390
  const response = index.useGetReleasesQuery(query);
420
391
  const [createRelease, { isLoading: isSubmittingForm }] = index.useCreateReleaseMutation();
421
- const { getFeature } = ee.useLicenseLimits();
392
+ const { getFeature } = strapiAdmin.useLicenseLimits();
422
393
  const { maximumReleases = 3 } = getFeature("cms-content-releases");
423
- const { trackUsage } = strapiAdmin.useTracking();
424
- const {
425
- allowedActions: { canCreate }
426
- } = strapiAdmin.useRBAC(index.PERMISSIONS);
394
+ const { trackUsage } = helperPlugin.useTracking();
427
395
  const { isLoading, isSuccess, isError } = response;
428
396
  const activeTab = response?.currentData?.meta?.activeTab || "pending";
429
397
  const activeTabIndex = ["pending", "done"].indexOf(activeTab);
430
398
  React__namespace.useEffect(() => {
431
399
  if (location?.state?.errors) {
432
400
  toggleNotification({
433
- type: "danger",
401
+ type: "warning",
434
402
  title: formatMessage({
435
403
  id: "content-releases.pages.Releases.notification.error.title",
436
404
  defaultMessage: "Your request could not be processed."
@@ -440,9 +408,9 @@ const ReleasesPage = () => {
440
408
  defaultMessage: "Please try again or open another release."
441
409
  })
442
410
  });
443
- navigate("", { replace: true, state: null });
411
+ replace({ state: null });
444
412
  }
445
- }, [formatMessage, location?.state?.errors, navigate, toggleNotification]);
413
+ }, [formatMessage, location?.state?.errors, replace, toggleNotification]);
446
414
  React__namespace.useEffect(() => {
447
415
  if (tabRef.current) {
448
416
  tabRef.current._handlers.setSelectedTabIndex(activeTabIndex);
@@ -452,7 +420,7 @@ const ReleasesPage = () => {
452
420
  setReleaseModalShown((prev) => !prev);
453
421
  };
454
422
  if (isLoading) {
455
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
423
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Main, { "aria-busy": isLoading, children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
456
424
  }
457
425
  const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
458
426
  const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;
@@ -483,22 +451,22 @@ const ReleasesPage = () => {
483
451
  })
484
452
  });
485
453
  trackUsage("didCreateRelease");
486
- navigate(response2.data.data.id.toString());
454
+ push(`/plugins/content-releases/${response2.data.data.id}`);
487
455
  } else if (index.isAxiosError(response2.error)) {
488
456
  toggleNotification({
489
- type: "danger",
457
+ type: "warning",
490
458
  message: formatAPIError(response2.error)
491
459
  });
492
460
  } else {
493
461
  toggleNotification({
494
- type: "danger",
462
+ type: "warning",
495
463
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
496
464
  });
497
465
  }
498
466
  };
499
467
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": isLoading, children: [
500
468
  /* @__PURE__ */ jsxRuntime.jsx(
501
- strapiAdmin.Layouts.Header,
469
+ designSystem.HeaderLayout,
502
470
  {
503
471
  title: formatMessage({
504
472
  id: "content-releases.pages.Releases.title",
@@ -508,7 +476,7 @@ const ReleasesPage = () => {
508
476
  id: "content-releases.pages.Releases.header-subtitle",
509
477
  defaultMessage: "Create and manage content updates"
510
478
  }),
511
- primaryAction: canCreate ? /* @__PURE__ */ jsxRuntime.jsx(
479
+ primaryAction: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: index.PERMISSIONS.create, children: /* @__PURE__ */ jsxRuntime.jsx(
512
480
  designSystem.Button,
513
481
  {
514
482
  startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Plus, {}),
@@ -519,15 +487,15 @@ const ReleasesPage = () => {
519
487
  defaultMessage: "New release"
520
488
  })
521
489
  }
522
- ) : null
490
+ ) })
523
491
  }
524
492
  ),
525
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
493
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
526
494
  hasReachedMaximumPendingReleases && /* @__PURE__ */ jsxRuntime.jsx(
527
495
  StyledAlert,
528
496
  {
529
497
  marginBottom: 6,
530
- action: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Link, { href: "https://strapi.io/pricing-cloud", isExternal: true, children: formatMessage({
498
+ action: /* @__PURE__ */ jsxRuntime.jsx(v2.Link, { href: "https://strapi.io/pricing-cloud", isExternal: true, children: formatMessage({
531
499
  id: "content-releases.pages.Releases.max-limit-reached.action",
532
500
  defaultMessage: "Explore plans"
533
501
  }) }),
@@ -598,17 +566,23 @@ const ReleasesPage = () => {
598
566
  ]
599
567
  }
600
568
  ),
601
- /* @__PURE__ */ jsxRuntime.jsxs(
602
- strapiAdmin.Pagination.Root,
603
- {
604
- ...response?.currentData?.meta?.pagination,
605
- defaultPageSize: response?.currentData?.meta?.pagination?.pageSize,
606
- children: [
607
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, { options: ["8", "16", "32", "64"] }),
608
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
609
- ]
610
- }
611
- )
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
612
586
  ] }) }),
613
587
  releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
614
588
  ReleaseModal,
@@ -627,7 +601,7 @@ const ReleaseInfoWrapper = styled__default.default(designSystem.Flex)`
627
601
  border-bottom-left-radius: ${({ theme }) => theme.borderRadius};
628
602
  border-top: 1px solid ${({ theme }) => theme.colors.neutral150};
629
603
  `;
630
- const StyledMenuItem = styled__default.default(designSystem.Menu.Item)`
604
+ const StyledMenuItem = styled__default.default(v2.Menu.Item)`
631
605
  svg path {
632
606
  fill: ${({ theme, disabled }) => disabled && theme.colors.neutral500};
633
607
  }
@@ -656,18 +630,14 @@ const TrashIcon = styled__default.default(icons.Trash)`
656
630
  const TypographyMaxWidth = styled__default.default(designSystem.Typography)`
657
631
  max-width: 300px;
658
632
  `;
659
- const EntryValidationText = ({ action, schema, entry }) => {
633
+ const EntryValidationText = ({ action, schema, components, entry }) => {
660
634
  const { formatMessage } = reactIntl.useIntl();
661
- const { validate } = strapiAdmin$1.unstable_useDocument(
662
- {
663
- collectionType: schema?.kind ?? "",
664
- model: schema?.uid ?? ""
665
- },
666
- {
667
- skip: !schema
668
- }
669
- );
670
- const errors = validate(entry) ?? {};
635
+ const { validate } = strapiAdmin.unstable_useDocument();
636
+ const { errors } = validate(entry, {
637
+ contentType: schema,
638
+ components,
639
+ isCreatingEntry: false
640
+ });
671
641
  if (Object.keys(errors).length > 0) {
672
642
  const validationErrorsMessages = Object.entries(errors).map(
673
643
  ([key, value]) => formatMessage(
@@ -676,13 +646,13 @@ const EntryValidationText = ({ action, schema, entry }) => {
676
646
  )
677
647
  ).join(" ");
678
648
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
679
- /* @__PURE__ */ jsxRuntime.jsx(icons.CrossCircle, { fill: "danger600" }),
649
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { color: "danger600", as: icons.CrossCircle }),
680
650
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { description: validationErrorsMessages, children: /* @__PURE__ */ jsxRuntime.jsx(TypographyMaxWidth, { textColor: "danger600", variant: "omega", fontWeight: "semiBold", ellipsis: true, children: validationErrorsMessages }) })
681
651
  ] });
682
652
  }
683
653
  if (action == "publish") {
684
654
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
685
- /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
655
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { color: "success600", as: icons.CheckCircle }),
686
656
  entry.publishedAt ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "success600", fontWeight: "bold", children: formatMessage({
687
657
  id: "content-releases.pages.ReleaseDetails.entry-validation.already-published",
688
658
  defaultMessage: "Already published"
@@ -693,7 +663,7 @@ const EntryValidationText = ({ action, schema, entry }) => {
693
663
  ] });
694
664
  }
695
665
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
696
- /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { fill: "success600" }),
666
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { color: "success600", as: icons.CheckCircle }),
697
667
  !entry.publishedAt ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "success600", fontWeight: "bold", children: formatMessage({
698
668
  id: "content-releases.pages.ReleaseDetails.entry-validation.already-unpublished",
699
669
  defaultMessage: "Already unpublished"
@@ -715,22 +685,18 @@ const ReleaseDetailsLayout = ({
715
685
  isLoading: isLoadingDetails,
716
686
  isError,
717
687
  error
718
- } = index.useGetReleaseQuery(
719
- { id: releaseId },
720
- {
721
- skip: !releaseId
722
- }
723
- );
688
+ } = index.useGetReleaseQuery({ id: releaseId });
724
689
  const [publishRelease, { isLoading: isPublishing }] = index.usePublishReleaseMutation();
725
- const { toggleNotification } = strapiAdmin.useNotification();
726
- const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
727
- const { allowedActions } = strapiAdmin.useRBAC(index.PERMISSIONS);
728
- const { canUpdate, canDelete, canPublish } = allowedActions;
729
- const dispatch = useTypedDispatch();
730
- 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();
731
697
  const release = data?.data;
732
- const handlePublishRelease = (id) => async () => {
733
- const response = await publishRelease({ id });
698
+ const handlePublishRelease = async () => {
699
+ const response = await publishRelease({ id: releaseId });
734
700
  if ("data" in response) {
735
701
  toggleNotification({
736
702
  type: "success",
@@ -747,12 +713,12 @@ const ReleaseDetailsLayout = ({
747
713
  });
748
714
  } else if (index.isAxiosError(response.error)) {
749
715
  toggleNotification({
750
- type: "danger",
716
+ type: "warning",
751
717
  message: formatAPIError(response.error)
752
718
  });
753
719
  } else {
754
720
  toggleNotification({
755
- type: "danger",
721
+ type: "warning",
756
722
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
757
723
  });
758
724
  }
@@ -778,19 +744,21 @@ const ReleaseDetailsLayout = ({
778
744
  return release.createdBy.email;
779
745
  };
780
746
  if (isLoadingDetails) {
781
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
747
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Main, { "aria-busy": isLoadingDetails, children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
782
748
  }
783
749
  if (isError || !release) {
784
750
  return /* @__PURE__ */ jsxRuntime.jsx(
785
- reactRouterDom.Navigate,
751
+ reactRouterDom.Redirect,
786
752
  {
787
- to: "..",
788
- state: {
789
- errors: [
790
- {
791
- code: error?.code
792
- }
793
- ]
753
+ to: {
754
+ pathname: "/plugins/content-releases",
755
+ state: {
756
+ errors: [
757
+ {
758
+ code: error?.code
759
+ }
760
+ ]
761
+ }
794
762
  }
795
763
  }
796
764
  );
@@ -827,18 +795,21 @@ const ReleaseDetailsLayout = ({
827
795
  ) : "";
828
796
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": isLoadingDetails, children: [
829
797
  /* @__PURE__ */ jsxRuntime.jsx(
830
- strapiAdmin.Layouts.Header,
798
+ designSystem.HeaderLayout,
831
799
  {
832
800
  title: release.name,
833
801
  subtitle: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, lineHeight: 6, children: [
834
802
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : "") }),
835
803
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { ...getBadgeProps(release.status), children: release.status })
836
804
  ] }),
837
- 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
+ }) }),
838
809
  primaryAction: !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
839
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Root, { children: [
810
+ /* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
840
811
  /* @__PURE__ */ jsxRuntime.jsx(
841
- designSystem.Menu.Trigger,
812
+ v2.Menu.Trigger,
842
813
  {
843
814
  as: designSystem.IconButton,
844
815
  paddingLeft: 2,
@@ -851,7 +822,7 @@ const ReleaseDetailsLayout = ({
851
822
  variant: "tertiary"
852
823
  }
853
824
  ),
854
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Menu.Content, { top: 1, popoverPlacement: "bottom-end", maxHeight: void 0, children: [
825
+ /* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Content, { top: 1, popoverPlacement: "bottom-end", children: [
855
826
  /* @__PURE__ */ jsxRuntime.jsxs(
856
827
  designSystem.Flex,
857
828
  {
@@ -900,7 +871,7 @@ const ReleaseDetailsLayout = ({
900
871
  defaultMessage: "Created"
901
872
  }) }),
902
873
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", color: "neutral300", children: [
903
- /* @__PURE__ */ jsxRuntime.jsx(RelativeTime$1, { timestamp: new Date(release.createdAt) }),
874
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.RelativeTime, { timestamp: new Date(release.createdAt) }),
904
875
  formatMessage(
905
876
  {
906
877
  id: "content-releases.header.actions.created.description",
@@ -918,12 +889,12 @@ const ReleaseDetailsLayout = ({
918
889
  id: "content-releases.header.actions.refresh",
919
890
  defaultMessage: "Refresh"
920
891
  }) }),
921
- canPublish ? /* @__PURE__ */ jsxRuntime.jsx(
892
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: index.PERMISSIONS.publish, children: /* @__PURE__ */ jsxRuntime.jsx(
922
893
  designSystem.Button,
923
894
  {
924
895
  size: "S",
925
896
  variant: "default",
926
- onClick: handlePublishRelease(release.id.toString()),
897
+ onClick: handlePublishRelease,
927
898
  loading: isPublishing,
928
899
  disabled: release.actions.meta.count === 0,
929
900
  children: formatMessage({
@@ -931,7 +902,7 @@ const ReleaseDetailsLayout = ({
931
902
  defaultMessage: "Publish"
932
903
  })
933
904
  }
934
- ) : null
905
+ ) })
935
906
  ] })
936
907
  }
937
908
  ),
@@ -958,11 +929,27 @@ const getGroupByOptionLabel = (value) => {
958
929
  defaultMessage: "Content-Types"
959
930
  };
960
931
  };
961
- const ReleaseDetailsBody = ({ releaseId }) => {
932
+ const DEFAULT_RELEASE_DETAILS_HEADER = [
933
+ {
934
+ key: "__name__",
935
+ fieldSchema: { type: "string" },
936
+ metadatas: {
937
+ label: {
938
+ id: "content-releases.page.ReleaseDetails.table.header.label.name",
939
+ defaultMessage: "name"
940
+ },
941
+ searchable: false,
942
+ sortable: false
943
+ },
944
+ name: "name"
945
+ }
946
+ ];
947
+ const ReleaseDetailsBody = () => {
962
948
  const { formatMessage } = reactIntl.useIntl();
963
- const [{ query }, setQuery] = strapiAdmin.useQueryParams();
964
- const { toggleNotification } = strapiAdmin.useNotification();
965
- const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
949
+ const { releaseId } = reactRouterDom.useParams();
950
+ const [{ query }, setQuery] = helperPlugin.useQueryParams();
951
+ const toggleNotification = helperPlugin.useNotification();
952
+ const { formatAPIError } = helperPlugin.useAPIErrorHandler();
966
953
  const {
967
954
  data: releaseData,
968
955
  isLoading: isReleaseLoading,
@@ -971,18 +958,15 @@ const ReleaseDetailsBody = ({ releaseId }) => {
971
958
  } = index.useGetReleaseQuery({ id: releaseId });
972
959
  const {
973
960
  allowedActions: { canUpdate }
974
- } = strapiAdmin.useRBAC(index.PERMISSIONS);
975
- const runHookWaterfall = strapiAdmin.useStrapiApp("ReleaseDetailsPage", (state) => state.runHookWaterfall);
976
- const { hasI18nEnabled } = runHookWaterfall(
961
+ } = helperPlugin.useRBAC(index.PERMISSIONS);
962
+ const { runHookWaterfall } = helperPlugin.useStrapiApp();
963
+ const {
964
+ displayedHeaders,
965
+ hasI18nEnabled
966
+ } = runHookWaterfall(
977
967
  "ContentReleases/pages/ReleaseDetails/add-locale-in-releases",
978
968
  {
979
- displayedHeaders: {
980
- label: formatMessage({
981
- id: "content-releases.page.ReleaseDetails.table.header.label.locale",
982
- defaultMessage: "locale"
983
- }),
984
- name: "locale"
985
- },
969
+ displayedHeaders: DEFAULT_RELEASE_DETAILS_HEADER,
986
970
  hasI18nEnabled: false
987
971
  }
988
972
  );
@@ -1016,19 +1000,19 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1016
1000
  if ("error" in response) {
1017
1001
  if (index.isAxiosError(response.error)) {
1018
1002
  toggleNotification({
1019
- type: "danger",
1003
+ type: "warning",
1020
1004
  message: formatAPIError(response.error)
1021
1005
  });
1022
1006
  } else {
1023
1007
  toggleNotification({
1024
- type: "danger",
1008
+ type: "warning",
1025
1009
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
1026
1010
  });
1027
1011
  }
1028
1012
  }
1029
1013
  };
1030
1014
  if (isLoading || isReleaseLoading) {
1031
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
1015
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
1032
1016
  }
1033
1017
  const releaseActions = data?.data;
1034
1018
  const releaseMeta = data?.meta;
@@ -1047,24 +1031,30 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1047
1031
  });
1048
1032
  }
1049
1033
  return /* @__PURE__ */ jsxRuntime.jsx(
1050
- reactRouterDom.Navigate,
1034
+ reactRouterDom.Redirect,
1051
1035
  {
1052
- to: "..",
1053
- state: {
1054
- errors: errorsArray
1036
+ to: {
1037
+ pathname: "/plugins/content-releases",
1038
+ state: {
1039
+ errors: errorsArray
1040
+ }
1055
1041
  }
1056
1042
  }
1057
1043
  );
1058
1044
  }
1059
1045
  if (isError || !releaseActions) {
1060
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
1046
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.AnErrorOccurred, {}) });
1061
1047
  }
1062
1048
  if (Object.keys(releaseActions).length === 0) {
1063
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(
1064
- designSystem.EmptyStateLayout,
1049
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(
1050
+ helperPlugin.NoContent,
1065
1051
  {
1052
+ content: {
1053
+ id: "content-releases.pages.Details.tab.emptyEntries",
1054
+ defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
1055
+ },
1066
1056
  action: /* @__PURE__ */ jsxRuntime.jsx(
1067
- designSystem.LinkButton,
1057
+ v2.LinkButton,
1068
1058
  {
1069
1059
  as: reactRouterDom.Link,
1070
1060
  to: {
@@ -1077,59 +1067,19 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1077
1067
  defaultMessage: "Open the Content Manager"
1078
1068
  })
1079
1069
  }
1080
- ),
1081
- icon: /* @__PURE__ */ jsxRuntime.jsx(symbols.EmptyDocuments, { width: "16rem" }),
1082
- content: formatMessage({
1083
- id: "content-releases.pages.Details.tab.emptyEntries",
1084
- defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
1085
- })
1070
+ )
1086
1071
  }
1087
1072
  ) });
1088
1073
  }
1089
- const groupByLabel = formatMessage({
1090
- id: "content-releases.pages.ReleaseDetails.groupBy.aria-label",
1091
- defaultMessage: "Group by"
1092
- });
1093
- const headers = [
1094
- // ...displayedHeaders,
1095
- {
1096
- label: formatMessage({
1097
- id: "content-releases.page.ReleaseDetails.table.header.label.name",
1098
- defaultMessage: "name"
1099
- }),
1100
- name: "name"
1101
- },
1102
- {
1103
- label: formatMessage({
1104
- id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
1105
- defaultMessage: "content-type"
1106
- }),
1107
- name: "content-type"
1108
- },
1109
- {
1110
- label: formatMessage({
1111
- id: "content-releases.page.ReleaseDetails.table.header.label.action",
1112
- defaultMessage: "action"
1113
- }),
1114
- name: "action"
1115
- },
1116
- ...!release.releasedAt ? [
1117
- {
1118
- label: formatMessage({
1119
- id: "content-releases.page.ReleaseDetails.table.header.label.status",
1120
- defaultMessage: "status"
1121
- }),
1122
- name: "status"
1123
- }
1124
- ] : []
1125
- ];
1126
1074
  const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;
1127
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
1075
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
1128
1076
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { children: /* @__PURE__ */ jsxRuntime.jsx(
1129
1077
  designSystem.SingleSelect,
1130
1078
  {
1131
- placeholder: groupByLabel,
1132
- "aria-label": groupByLabel,
1079
+ "aria-label": formatMessage({
1080
+ id: "content-releases.pages.ReleaseDetails.groupBy.aria-label",
1081
+ defaultMessage: "Group by"
1082
+ }),
1133
1083
  customizeContent: (value) => formatMessage(
1134
1084
  {
1135
1085
  id: `content-releases.pages.ReleaseDetails.groupBy.label`,
@@ -1147,18 +1097,62 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1147
1097
  Object.keys(releaseActions).map((key) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
1148
1098
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { role: "separator", "aria-label": key, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { children: key }) }),
1149
1099
  /* @__PURE__ */ jsxRuntime.jsx(
1150
- strapiAdmin.Table.Root,
1100
+ helperPlugin.Table.Root,
1151
1101
  {
1152
1102
  rows: releaseActions[key].map((item) => ({
1153
1103
  ...item,
1154
1104
  id: Number(item.entry.id)
1155
1105
  })),
1156
- headers,
1157
- isLoading: isLoading || isFetching,
1158
- children: /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Content, { children: [
1159
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Head, { children: headers.map((header) => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, { ...header }, header.name)) }),
1160
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
1161
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Body, { children: releaseActions[key].map(
1106
+ colCount: releaseActions[key].length,
1107
+ isLoading,
1108
+ isFetching,
1109
+ children: /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Table.Content, { children: [
1110
+ /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Table.Head, { children: [
1111
+ displayedHeaders.map(({ key: key2, fieldSchema, metadatas, name }) => /* @__PURE__ */ jsxRuntime.jsx(
1112
+ helperPlugin.Table.HeaderCell,
1113
+ {
1114
+ fieldSchemaType: fieldSchema.type,
1115
+ label: formatMessage(metadatas.label),
1116
+ name
1117
+ },
1118
+ key2
1119
+ )),
1120
+ /* @__PURE__ */ jsxRuntime.jsx(
1121
+ helperPlugin.Table.HeaderCell,
1122
+ {
1123
+ fieldSchemaType: "string",
1124
+ label: formatMessage({
1125
+ id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
1126
+ defaultMessage: "content-type"
1127
+ }),
1128
+ name: "content-type"
1129
+ }
1130
+ ),
1131
+ /* @__PURE__ */ jsxRuntime.jsx(
1132
+ helperPlugin.Table.HeaderCell,
1133
+ {
1134
+ fieldSchemaType: "string",
1135
+ label: formatMessage({
1136
+ id: "content-releases.page.ReleaseDetails.table.header.label.action",
1137
+ defaultMessage: "action"
1138
+ }),
1139
+ name: "action"
1140
+ }
1141
+ ),
1142
+ !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsx(
1143
+ helperPlugin.Table.HeaderCell,
1144
+ {
1145
+ fieldSchemaType: "string",
1146
+ label: formatMessage({
1147
+ id: "content-releases.page.ReleaseDetails.table.header.label.status",
1148
+ defaultMessage: "status"
1149
+ }),
1150
+ name: "status"
1151
+ }
1152
+ )
1153
+ ] }),
1154
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.LoadingBody, {}),
1155
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.Body, { children: releaseActions[key].map(
1162
1156
  ({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
1163
1157
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
1164
1158
  hasI18nEnabled && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "10%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
@@ -1215,39 +1209,34 @@ const ReleaseDetailsBody = ({ releaseId }) => {
1215
1209
  }
1216
1210
  )
1217
1211
  ] }, `releases-group-${key}`)),
1218
- /* @__PURE__ */ jsxRuntime.jsxs(
1219
- strapiAdmin.Pagination.Root,
1220
- {
1221
- ...releaseMeta?.pagination,
1222
- defaultPageSize: releaseMeta?.pagination?.pageSize,
1223
- children: [
1224
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, {}),
1225
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
1226
- ]
1227
- }
1228
- )
1212
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { paddingTop: 4, alignItems: "flex-end", justifyContent: "space-between", children: [
1213
+ /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.PageSizeURLQuery, { defaultValue: releaseMeta?.pagination?.pageSize.toString() }),
1214
+ /* @__PURE__ */ jsxRuntime.jsx(
1215
+ helperPlugin.PaginationURLQuery,
1216
+ {
1217
+ pagination: {
1218
+ pageCount: releaseMeta?.pagination?.pageCount || 0
1219
+ }
1220
+ }
1221
+ )
1222
+ ] })
1229
1223
  ] }) });
1230
1224
  };
1231
1225
  const ReleaseDetailsPage = () => {
1232
1226
  const { formatMessage } = reactIntl.useIntl();
1233
1227
  const { releaseId } = reactRouterDom.useParams();
1234
- const { toggleNotification } = strapiAdmin.useNotification();
1235
- const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
1236
- const navigate = reactRouterDom.useNavigate();
1228
+ const toggleNotification = helperPlugin.useNotification();
1229
+ const { formatAPIError } = helperPlugin.useAPIErrorHandler();
1230
+ const { replace } = reactRouterDom.useHistory();
1237
1231
  const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
1238
1232
  const [showWarningSubmit, setWarningSubmit] = React__namespace.useState(false);
1239
1233
  const {
1240
1234
  isLoading: isLoadingDetails,
1241
1235
  data,
1242
1236
  isSuccess: isSuccessDetails
1243
- } = index.useGetReleaseQuery(
1244
- { id: releaseId },
1245
- {
1246
- skip: !releaseId
1247
- }
1248
- );
1237
+ } = index.useGetReleaseQuery({ id: releaseId });
1249
1238
  const [updateRelease, { isLoading: isSubmittingForm }] = index.useUpdateReleaseMutation();
1250
- const [deleteRelease] = index.useDeleteReleaseMutation();
1239
+ const [deleteRelease, { isLoading: isDeletingRelease }] = index.useDeleteReleaseMutation();
1251
1240
  const toggleEditReleaseModal = () => {
1252
1241
  setReleaseModalShown((prev) => !prev);
1253
1242
  };
@@ -1258,13 +1247,10 @@ const ReleaseDetailsPage = () => {
1258
1247
  {
1259
1248
  toggleEditReleaseModal,
1260
1249
  toggleWarningSubmit,
1261
- children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {})
1250
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) })
1262
1251
  }
1263
1252
  );
1264
1253
  }
1265
- if (!releaseId) {
1266
- return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: ".." });
1267
- }
1268
1254
  const releaseData = isSuccessDetails && data?.data || null;
1269
1255
  const title = releaseData?.name || "";
1270
1256
  const timezone = releaseData?.timezone ?? null;
@@ -1289,12 +1275,12 @@ const ReleaseDetailsPage = () => {
1289
1275
  toggleEditReleaseModal();
1290
1276
  } else if (index.isAxiosError(response.error)) {
1291
1277
  toggleNotification({
1292
- type: "danger",
1278
+ type: "warning",
1293
1279
  message: formatAPIError(response.error)
1294
1280
  });
1295
1281
  } else {
1296
1282
  toggleNotification({
1297
- type: "danger",
1283
+ type: "warning",
1298
1284
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
1299
1285
  });
1300
1286
  }
@@ -1304,15 +1290,15 @@ const ReleaseDetailsPage = () => {
1304
1290
  id: releaseId
1305
1291
  });
1306
1292
  if ("data" in response) {
1307
- navigate("..");
1293
+ replace("/plugins/content-releases");
1308
1294
  } else if (index.isAxiosError(response.error)) {
1309
1295
  toggleNotification({
1310
- type: "danger",
1296
+ type: "warning",
1311
1297
  message: formatAPIError(response.error)
1312
1298
  });
1313
1299
  } else {
1314
1300
  toggleNotification({
1315
- type: "danger",
1301
+ type: "warning",
1316
1302
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
1317
1303
  });
1318
1304
  }
@@ -1323,7 +1309,7 @@ const ReleaseDetailsPage = () => {
1323
1309
  toggleEditReleaseModal,
1324
1310
  toggleWarningSubmit,
1325
1311
  children: [
1326
- /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, { releaseId }),
1312
+ /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, {}),
1327
1313
  releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
1328
1314
  ReleaseModal,
1329
1315
  {
@@ -1341,15 +1327,16 @@ const ReleaseDetailsPage = () => {
1341
1327
  }
1342
1328
  ),
1343
1329
  /* @__PURE__ */ jsxRuntime.jsx(
1344
- strapiAdmin.ConfirmDialog,
1330
+ helperPlugin.ConfirmDialog,
1345
1331
  {
1346
- isOpen: showWarningSubmit,
1347
- onClose: toggleWarningSubmit,
1348
- onConfirm: handleDeleteRelease,
1349
- children: formatMessage({
1332
+ bodyText: {
1350
1333
  id: "content-releases.dialog.confirmation-message",
1351
1334
  defaultMessage: "Are you sure you want to delete this release?"
1352
- })
1335
+ },
1336
+ isOpen: showWarningSubmit,
1337
+ isConfirmButtonLoading: isDeletingRelease,
1338
+ onToggleDialog: toggleWarningSubmit,
1339
+ onConfirm: handleDeleteRelease
1353
1340
  }
1354
1341
  )
1355
1342
  ]
@@ -1357,10 +1344,10 @@ const ReleaseDetailsPage = () => {
1357
1344
  );
1358
1345
  };
1359
1346
  const App = () => {
1360
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Routes, { children: [
1361
- /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { index: true, element: /* @__PURE__ */ jsxRuntime.jsx(ReleasesPage, {}) }),
1362
- /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: ":releaseId", element: /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsPage, {}) })
1347
+ return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Switch, { children: [
1348
+ /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { exact: true, path: `/plugins/${index.pluginId}`, component: ReleasesPage }),
1349
+ /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { exact: true, path: `/plugins/${index.pluginId}/:releaseId`, component: ReleaseDetailsPage })
1363
1350
  ] }) });
1364
1351
  };
1365
1352
  exports.App = App;
1366
- //# sourceMappingURL=App-CXRpb2hi.js.map
1353
+ //# sourceMappingURL=App-dLXY5ei3.js.map