@strapi/content-releases 0.0.0-experimental.e9144fc8a193f9875a2c0832d689c14001c79f00 → 0.0.0-experimental.eb2d102c03f0984bece7258f6e0e8ab9ee39c82d

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 (42) hide show
  1. package/dist/admin/chunks/{App-CZiJBsId.js → App-BEyv0kMo.mjs} +3 -3
  2. package/dist/admin/chunks/App-BEyv0kMo.mjs.map +1 -0
  3. package/dist/admin/chunks/{App-B9yCdSLJ.js → App-BG-3LItb.js} +2 -2
  4. package/dist/admin/chunks/{App-B9yCdSLJ.js.map → App-BG-3LItb.js.map} +1 -1
  5. package/dist/admin/chunks/PurchaseContentReleases-U5sGMPgR.mjs +173 -0
  6. package/dist/admin/chunks/PurchaseContentReleases-U5sGMPgR.mjs.map +1 -0
  7. package/dist/admin/chunks/PurchaseContentReleases-hRg6ejD7.js +175 -0
  8. package/dist/admin/chunks/PurchaseContentReleases-hRg6ejD7.js.map +1 -0
  9. package/dist/admin/chunks/{ReleasesSettingsPage-DFVGppsl.js → ReleasesSettingsPage-DV_y1NJZ.js} +7 -8
  10. package/dist/admin/chunks/ReleasesSettingsPage-DV_y1NJZ.js.map +1 -0
  11. package/dist/admin/chunks/{ReleasesSettingsPage-Csq9aGu9.js → ReleasesSettingsPage-lky_0-wG.mjs} +5 -6
  12. package/dist/admin/chunks/ReleasesSettingsPage-lky_0-wG.mjs.map +1 -0
  13. package/dist/admin/chunks/{en-BzpFfVeO.js → en-BOpqX2t_.js} +6 -1
  14. package/dist/admin/chunks/{en-BzpFfVeO.js.map → en-BOpqX2t_.js.map} +1 -1
  15. package/dist/admin/chunks/{en-B2EeDoOz.js → en-aQo8Bn_U.mjs} +6 -1
  16. package/dist/admin/chunks/en-aQo8Bn_U.mjs.map +1 -0
  17. package/dist/admin/chunks/hooks-CFk_8Q0b.mjs +6 -0
  18. package/dist/admin/chunks/hooks-CFk_8Q0b.mjs.map +1 -0
  19. package/dist/admin/chunks/hooks-DA5VbUAp.js +8 -0
  20. package/dist/admin/chunks/hooks-DA5VbUAp.js.map +1 -0
  21. package/dist/admin/chunks/{index-1nn-zHX-.js → index-BZaFIG8z.js} +6 -5
  22. package/dist/admin/chunks/{index-1nn-zHX-.js.map → index-BZaFIG8z.js.map} +1 -1
  23. package/dist/admin/chunks/{index-BexsXldu.js → index-DEy-8PzZ.mjs} +6 -5
  24. package/dist/admin/chunks/index-DEy-8PzZ.mjs.map +1 -0
  25. package/dist/admin/chunks/{schemas-DMt8h1z-.js → schemas-DMt8h1z-.mjs} +1 -1
  26. package/dist/admin/chunks/schemas-DMt8h1z-.mjs.map +1 -0
  27. package/dist/admin/chunks/uk-9T9su-bj.js +103 -0
  28. package/dist/admin/chunks/{en-B2EeDoOz.js.map → uk-9T9su-bj.js.map} +1 -1
  29. package/dist/admin/chunks/uk-Bp9HotPq.mjs +101 -0
  30. package/dist/admin/chunks/uk-Bp9HotPq.mjs.map +1 -0
  31. package/dist/admin/index.js +1 -1
  32. package/dist/admin/index.mjs +1 -1
  33. package/package.json +10 -10
  34. package/dist/admin/chunks/App-CZiJBsId.js.map +0 -1
  35. package/dist/admin/chunks/PurchaseContentReleases-BCME5SQU.js +0 -55
  36. package/dist/admin/chunks/PurchaseContentReleases-BCME5SQU.js.map +0 -1
  37. package/dist/admin/chunks/PurchaseContentReleases-S1ccDSwp.js +0 -53
  38. package/dist/admin/chunks/PurchaseContentReleases-S1ccDSwp.js.map +0 -1
  39. package/dist/admin/chunks/ReleasesSettingsPage-Csq9aGu9.js.map +0 -1
  40. package/dist/admin/chunks/ReleasesSettingsPage-DFVGppsl.js.map +0 -1
  41. package/dist/admin/chunks/index-BexsXldu.js.map +0 -1
  42. package/dist/admin/chunks/schemas-DMt8h1z-.js.map +0 -1
@@ -1506,7 +1506,8 @@ const prefixPluginTranslations = (trad, pluginId)=>{
1506
1506
 
1507
1507
  function __variableDynamicImportRuntime3__(path) {
1508
1508
  switch (path) {
1509
- case './translations/en.json': return import('./en-B2EeDoOz.js');
1509
+ case './translations/en.json': return import('./en-aQo8Bn_U.mjs');
1510
+ case './translations/uk.json': return import('./uk-Bp9HotPq.mjs');
1510
1511
  default: return new Promise(function(resolve, reject) {
1511
1512
  (typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)(
1512
1513
  reject.bind(null, new Error("Unknown variable dynamic import: " + path))
@@ -1531,7 +1532,7 @@ const admin = {
1531
1532
  id: `${pluginId}.plugin.name`,
1532
1533
  defaultMessage: 'Releases'
1533
1534
  },
1534
- Component: ()=>import('./App-CZiJBsId.js').then((mod)=>({
1535
+ Component: ()=>import('./App-BEyv0kMo.mjs').then((mod)=>({
1535
1536
  default: mod.App
1536
1537
  })),
1537
1538
  permissions: PERMISSIONS.main,
@@ -1561,7 +1562,7 @@ const admin = {
1561
1562
  },
1562
1563
  permissions: [],
1563
1564
  async Component () {
1564
- const { ProtectedReleasesSettingsPage } = await import('./ReleasesSettingsPage-Csq9aGu9.js');
1565
+ const { ProtectedReleasesSettingsPage } = await import('./ReleasesSettingsPage-lky_0-wG.mjs');
1565
1566
  return {
1566
1567
  default: ProtectedReleasesSettingsPage
1567
1568
  };
@@ -1587,7 +1588,7 @@ const admin = {
1587
1588
  },
1588
1589
  permissions: [],
1589
1590
  async Component () {
1590
- const { PurchaseContentReleases } = await import('./PurchaseContentReleases-S1ccDSwp.js');
1591
+ const { PurchaseContentReleases } = await import('./PurchaseContentReleases-U5sGMPgR.mjs');
1591
1592
  return {
1592
1593
  default: PurchaseContentReleases
1593
1594
  };
@@ -1615,4 +1616,4 @@ const admin = {
1615
1616
  };
1616
1617
 
1617
1618
  export { PERMISSIONS as P, ReleaseActionOptions as R, useGetReleaseSettingsQuery as a, useCreateReleaseMutation as b, useGetReleaseQuery as c, useUpdateReleaseMutation as d, useDeleteReleaseMutation as e, usePublishReleaseMutation as f, getTimezones as g, getTimezoneOffset as h, useGetReleaseActionsQuery as i, useUpdateReleaseActionMutation as j, ReleaseActionMenu as k, useUpdateReleaseSettingsMutation as l, admin as m, pluginId as p, releaseApi as r, useGetReleasesQuery as u };
1618
- //# sourceMappingURL=index-BexsXldu.js.map
1619
+ //# sourceMappingURL=index-DEy-8PzZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DEy-8PzZ.mjs","sources":["../../../admin/src/constants.ts","../../../admin/src/services/release.ts","../../../admin/src/components/ReleaseActionOptions.tsx","../../../admin/src/components/ReleaseActionModal.tsx","../../../admin/src/components/ReleaseAction.tsx","../../../admin/src/components/ReleaseListCell.tsx","../../../admin/src/utils/time.ts","../../../admin/src/components/ReleaseActionMenu.tsx","../../../admin/src/components/ReleasesPanel.tsx","../../../admin/src/pluginId.ts","../../../admin/src/utils/prefixPluginTranslations.ts","../../../admin/src/index.ts"],"sourcesContent":["import type { Permission as StrapiPermission } from '@strapi/admin/strapi-admin';\n\nexport const PERMISSIONS = {\n main: [\n {\n action: 'plugin::content-releases.read',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n create: [\n {\n action: 'plugin::content-releases.create',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n update: [\n {\n action: 'plugin::content-releases.update',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n delete: [\n {\n action: 'plugin::content-releases.delete',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n createAction: [\n {\n action: 'plugin::content-releases.create-action',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n deleteAction: [\n {\n action: 'plugin::content-releases.delete-action',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n publish: [\n {\n action: 'plugin::content-releases.publish',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n} satisfies Record<string, StrapiPermission[]>;\n\nexport const PERMISSIONS_SETTINGS = {\n read: [\n {\n action: 'plugin::content-releases.settings.read',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n update: [\n {\n action: 'plugin::content-releases.settings.update',\n subject: null,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n} satisfies Record<string, StrapiPermission[]>;\n","import { adminApi } from '@strapi/admin/strapi-admin';\n\nimport {\n CreateReleaseAction,\n CreateManyReleaseActions,\n DeleteReleaseAction,\n} from '../../../shared/contracts/release-actions';\n\nimport type {\n GetReleaseActions,\n UpdateReleaseAction,\n ReleaseActionGroupBy,\n} from '../../../shared/contracts/release-actions';\nimport type {\n CreateRelease,\n DeleteRelease,\n GetReleases,\n GetReleasesByDocumentAttached,\n UpdateRelease,\n GetRelease,\n PublishRelease,\n MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { GetSettings, UpdateSettings } from '../../../shared/contracts/settings';\nimport type { EndpointDefinition } from '@reduxjs/toolkit/query';\n\nexport interface GetReleasesQueryParams {\n page?: number;\n pageSize?: number;\n filters?: {\n releasedAt?: {\n // TODO: this should be a boolean, find a way to avoid strings\n $notNull?: boolean | 'true' | 'false';\n };\n };\n}\n\nexport interface GetReleaseActionsQueryParams {\n page?: number;\n pageSize?: number;\n groupBy?: ReleaseActionGroupBy;\n}\n\ntype GetReleasesTabResponse = GetReleases.Response & {\n meta: {\n activeTab: 'pending' | 'done';\n };\n};\n\ntype AnyEndpointDefinition = EndpointDefinition<any, any, any, any>;\n\n// TODO: move this into the admin code & expose an improved version of enhanceEndpoints or a new function\nconst extendInvalidatesTags = (\n endpoint: AnyEndpointDefinition,\n extraTags: string[] | { type: string; id: string }[]\n) => {\n if (!endpoint) {\n return;\n }\n\n const originalInvalidatesTags = endpoint.invalidatesTags;\n\n const newInvalidatesTags: AnyEndpointDefinition['invalidatesTags'] = (\n result,\n err,\n args,\n meta\n ) => {\n const originalTags =\n typeof originalInvalidatesTags === 'function'\n ? originalInvalidatesTags(result, err, args, meta)\n : originalInvalidatesTags;\n\n return [...(originalTags ?? []), ...extraTags];\n };\n\n Object.assign(endpoint, { invalidatesTags: newInvalidatesTags });\n};\n\nconst releaseApi = adminApi\n .enhanceEndpoints({\n addTagTypes: ['Release', 'ReleaseAction', 'EntriesInRelease', 'ReleaseSettings', 'Document'],\n endpoints: {\n updateDocument(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n deleteDocument(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n deleteManyDocuments(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n discardDocument(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n createWorkflow(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n updateWorkflow(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n deleteWorkflow(endpoint: AnyEndpointDefinition) {\n extendInvalidatesTags(endpoint, [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ]);\n },\n },\n })\n .injectEndpoints({\n endpoints: (build) => {\n return {\n getReleasesForEntry: build.query<\n GetReleasesByDocumentAttached.Response,\n Partial<GetReleasesByDocumentAttached.Request['query']>\n >({\n query(params) {\n return {\n url: '/content-releases/getByDocumentAttached',\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: (result) =>\n result\n ? [\n ...result.data.map(({ id }) => ({ type: 'Release' as const, id })),\n { type: 'Release', id: 'LIST' },\n ]\n : [],\n }),\n getReleases: build.query<GetReleasesTabResponse, GetReleasesQueryParams | void>({\n query(\n { page, pageSize, filters } = {\n page: 1,\n pageSize: 16,\n filters: {\n releasedAt: {\n $notNull: false,\n },\n },\n }\n ) {\n return {\n url: '/content-releases',\n method: 'GET',\n config: {\n params: {\n page: page || 1,\n pageSize: pageSize || 16,\n filters: filters || {\n releasedAt: {\n $notNull: false,\n },\n },\n },\n },\n };\n },\n transformResponse(response: GetReleasesTabResponse, meta, arg) {\n const releasedAtValue = arg?.filters?.releasedAt?.$notNull;\n const isActiveDoneTab = releasedAtValue === 'true';\n const newResponse: GetReleasesTabResponse = {\n ...response,\n meta: {\n ...response.meta,\n activeTab: isActiveDoneTab ? 'done' : 'pending',\n },\n };\n\n return newResponse;\n },\n providesTags: (result) =>\n result\n ? [\n ...result.data.map(({ id }) => ({ type: 'Release' as const, id })),\n { type: 'Release', id: 'LIST' },\n ]\n : [{ type: 'Release', id: 'LIST' }],\n }),\n getRelease: build.query<GetRelease.Response, GetRelease.Request['params']>({\n query({ id }) {\n return {\n url: `/content-releases/${id}`,\n method: 'GET',\n };\n },\n providesTags: (result, error, arg) => [\n { type: 'Release', id: 'LIST' },\n { type: 'Release' as const, id: arg.id },\n ],\n }),\n getReleaseActions: build.query<\n GetReleaseActions.Response,\n GetReleaseActions.Request['params'] & GetReleaseActions.Request['query']\n >({\n query({ releaseId, ...params }) {\n return {\n url: `/content-releases/${releaseId}/actions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: [{ type: 'ReleaseAction', id: 'LIST' }],\n }),\n createRelease: build.mutation<CreateRelease.Response, CreateRelease.Request['body']>({\n query(data) {\n return {\n url: '/content-releases',\n method: 'POST',\n data,\n };\n },\n invalidatesTags: [{ type: 'Release', id: 'LIST' }],\n }),\n updateRelease: build.mutation<\n void,\n UpdateRelease.Request['params'] & UpdateRelease.Request['body']\n >({\n query({ id, ...data }) {\n return {\n url: `/content-releases/${id}`,\n method: 'PUT',\n data,\n };\n },\n invalidatesTags: (result, error, arg) => [{ type: 'Release', id: arg.id }],\n }),\n createReleaseAction: build.mutation<\n CreateReleaseAction.Response,\n CreateReleaseAction.Request\n >({\n query({ body, params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions`,\n method: 'POST',\n data: body,\n };\n },\n invalidatesTags: [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n ],\n }),\n createManyReleaseActions: build.mutation<\n CreateManyReleaseActions.Response,\n CreateManyReleaseActions.Request\n >({\n query({ body, params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions/bulk`,\n method: 'POST',\n data: body,\n };\n },\n invalidatesTags: [\n { type: 'Release', id: 'LIST' },\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'EntriesInRelease' },\n ],\n }),\n updateReleaseAction: build.mutation<\n UpdateReleaseAction.Response,\n UpdateReleaseAction.Request & { query: GetReleaseActions.Request['query'] } & {\n actionPath: [string, number];\n }\n >({\n query({ body, params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (res, error, arg) => [\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'Release', id: 'LIST' },\n { type: 'Release', id: arg.params.releaseId },\n ],\n async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {\n // We need to mimic the same params received by the getReleaseActions query\n const paramsWithoutActionId = {\n releaseId: params.releaseId,\n ...query,\n };\n\n const patchResult = dispatch(\n releaseApi.util.updateQueryData(\n 'getReleaseActions',\n paramsWithoutActionId,\n (draft) => {\n const [key, index] = actionPath;\n const action = draft.data[key][index];\n\n if (action) {\n action.type = body.type;\n }\n }\n )\n );\n\n try {\n await queryFulfilled;\n } catch {\n patchResult.undo();\n }\n },\n }),\n deleteReleaseAction: build.mutation<\n DeleteReleaseAction.Response,\n DeleteReleaseAction.Request\n >({\n query({ params }) {\n return {\n url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,\n method: 'DELETE',\n };\n },\n invalidatesTags: (result, error, arg) => [\n { type: 'Release', id: 'LIST' },\n { type: 'Release', id: arg.params.releaseId },\n { type: 'ReleaseAction', id: 'LIST' },\n { type: 'EntriesInRelease' },\n ],\n }),\n publishRelease: build.mutation<PublishRelease.Response, PublishRelease.Request['params']>({\n query({ id }) {\n return {\n url: `/content-releases/${id}/publish`,\n method: 'POST',\n };\n },\n invalidatesTags: (result, error, arg) => [\n { type: 'Release', id: arg.id },\n { type: 'Document', id: `ALL_LIST` },\n ],\n }),\n deleteRelease: build.mutation<DeleteRelease.Response, DeleteRelease.Request['params']>({\n query({ id }) {\n return {\n url: `/content-releases/${id}`,\n method: 'DELETE',\n };\n },\n invalidatesTags: () => [{ type: 'Release', id: 'LIST' }, { type: 'EntriesInRelease' }],\n }),\n getMappedEntriesInReleases: build.query<\n MapEntriesToReleases.Response['data'],\n MapEntriesToReleases.Request['query']\n >({\n query(params) {\n return {\n url: '/content-releases/mapEntriesToReleases',\n method: 'GET',\n config: {\n params,\n },\n };\n },\n transformResponse(response: MapEntriesToReleases.Response) {\n return response.data;\n },\n providesTags: [{ type: 'EntriesInRelease' }],\n }),\n getReleaseSettings: build.query<GetSettings.Response, GetSettings.Request | void>({\n query: () => '/content-releases/settings',\n providesTags: [{ type: 'ReleaseSettings' }],\n }),\n updateReleaseSettings: build.mutation<void, UpdateSettings.Request['body']>({\n query(data) {\n return {\n url: '/content-releases/settings',\n method: 'PUT',\n data,\n };\n },\n invalidatesTags: [{ type: 'ReleaseSettings' }],\n }),\n };\n },\n });\n\nconst {\n useGetReleasesQuery,\n useGetReleasesForEntryQuery,\n useGetReleaseQuery,\n useGetReleaseActionsQuery,\n useCreateReleaseMutation,\n useCreateReleaseActionMutation,\n useCreateManyReleaseActionsMutation,\n useUpdateReleaseMutation,\n useUpdateReleaseActionMutation,\n usePublishReleaseMutation,\n useDeleteReleaseActionMutation,\n useDeleteReleaseMutation,\n useGetMappedEntriesInReleasesQuery,\n useGetReleaseSettingsQuery,\n useUpdateReleaseSettingsMutation,\n} = releaseApi;\n\nexport {\n useGetReleasesQuery,\n useGetReleasesForEntryQuery,\n useGetReleaseQuery,\n useGetReleaseActionsQuery,\n useCreateReleaseMutation,\n useCreateReleaseActionMutation,\n useCreateManyReleaseActionsMutation,\n useUpdateReleaseMutation,\n useUpdateReleaseActionMutation,\n usePublishReleaseMutation,\n useDeleteReleaseActionMutation,\n useDeleteReleaseMutation,\n useGetMappedEntriesInReleasesQuery,\n useGetReleaseSettingsQuery,\n useUpdateReleaseSettingsMutation,\n releaseApi,\n};\n","import * as React from 'react';\n\nimport { VisuallyHidden, Field, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface FieldWrapperProps extends Field.Props {\n actionType: 'publish' | 'unpublish';\n}\n\nconst getBorderLeftRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 1 : 0;\n};\n\nconst getBorderRightRadiusValue = (actionType: FieldWrapperProps['actionType']) => {\n return actionType === 'publish' ? 0 : 1;\n};\n\nconst FieldWrapper = styled(Field.Root)<{\n $actionType: 'publish' | 'unpublish';\n}>`\n border-top-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-bottom-left-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderLeftRadiusValue($actionType)]};\n border-top-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n border-bottom-right-radius: ${({ $actionType, theme }) =>\n theme.spaces[getBorderRightRadiusValue($actionType)]};\n\n > label {\n color: inherit;\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[3]}`};\n text-align: center;\n vertical-align: middle;\n text-transform: capitalize;\n }\n\n &[data-checked='true'] {\n color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n background-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary100 : theme.colors.danger100};\n border-color: ${({ theme, $actionType }) =>\n $actionType === 'publish' ? theme.colors.primary700 : theme.colors.danger600};\n }\n\n &[data-checked='false'] {\n border-left: ${({ $actionType }) => $actionType === 'unpublish' && 'none'};\n border-right: ${({ $actionType }) => $actionType === 'publish' && 'none'};\n }\n\n &[data-checked='false'][data-disabled='false']:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n background-color: ${({ theme }) => theme.colors.neutral100};\n border-color: ${({ theme }) => theme.colors.neutral200};\n\n & > label {\n cursor: pointer;\n }\n }\n\n &[data-disabled='true'] {\n color: ${({ theme }) => theme.colors.neutral600};\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-color: ${({ theme }) => theme.colors.neutral300};\n }\n`;\n\ninterface ActionOptionProps {\n selected: 'publish' | 'unpublish';\n handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n name: string;\n disabled?: boolean;\n}\n\ninterface OptionProps extends ActionOptionProps {\n actionType: 'publish' | 'unpublish';\n}\n\nconst ActionOption = ({\n selected,\n actionType,\n handleChange,\n name,\n disabled = false,\n}: OptionProps) => {\n return (\n <FieldWrapper\n $actionType={actionType}\n background=\"primary0\"\n borderColor=\"neutral200\"\n color={selected === actionType ? 'primary600' : 'neutral600'}\n position=\"relative\"\n cursor=\"pointer\"\n data-checked={selected === actionType}\n data-disabled={disabled && selected !== actionType}\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n name={name}\n checked={selected === actionType}\n onChange={handleChange}\n value={actionType}\n disabled={disabled}\n />\n </VisuallyHidden>\n {actionType}\n </Field.Label>\n </FieldWrapper>\n );\n};\n\nexport const ReleaseActionOptions = ({\n selected,\n handleChange,\n name,\n disabled = false,\n}: ActionOptionProps) => {\n return (\n <Flex>\n <ActionOption\n actionType=\"publish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n <ActionOption\n actionType=\"unpublish\"\n selected={selected}\n handleChange={handleChange}\n name={name}\n disabled={disabled}\n />\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { unstable_useDocumentLayout as useDocumentLayout } from '@strapi/content-manager/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n SingleSelect,\n SingleSelectOption,\n EmptyStateLayout,\n LinkButton,\n Field,\n Modal,\n} from '@strapi/design-system';\nimport { PaperPlane } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useFormik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { CreateReleaseAction } from '../../../shared/contracts/release-actions';\nimport { PERMISSIONS } from '../constants';\nimport { useCreateReleaseActionMutation, useGetReleasesForEntryQuery } from '../services/release';\n\nimport { ReleaseActionOptions } from './ReleaseActionOptions';\n\nimport type {\n DocumentActionComponent,\n DocumentActionProps,\n} from '@strapi/content-manager/strapi-admin';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * AddActionToReleaseModal\n * -----------------------------------------------------------------------------------------------*/\nexport const RELEASE_ACTION_FORM_SCHEMA = yup.object().shape({\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n releaseId: yup.string().required(),\n});\n\nexport interface FormValues {\n type: CreateReleaseAction.Request['body']['type'];\n releaseId: CreateReleaseAction.Request['params']['releaseId'];\n}\n\nexport const INITIAL_VALUES = {\n type: 'publish',\n releaseId: '',\n} satisfies FormValues;\n\ninterface AddActionToReleaseModalProps {\n contentType: string;\n documentId?: string;\n onInputChange: (field: keyof FormValues, value: string | number) => void;\n values: FormValues;\n}\n\nexport const NoReleases = () => {\n const { formatMessage } = useIntl();\n return (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.no-releases-message',\n defaultMessage:\n 'No available releases. Open the list of releases and create a new one from there.',\n })}\n action={\n <LinkButton\n to={{\n pathname: '/plugins/content-releases',\n }}\n tag={ReactRouterLink}\n variant=\"secondary\"\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.redirect-button',\n defaultMessage: 'Open the list of releases',\n })}\n </LinkButton>\n }\n shadow=\"none\"\n />\n );\n};\n\nconst AddActionToReleaseModal = ({\n contentType,\n documentId,\n onInputChange,\n values,\n}: AddActionToReleaseModalProps) => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const locale = query.plugins?.i18n?.locale;\n\n // Get all 'pending' releases that do not have the entry attached\n const response = useGetReleasesForEntryQuery({\n contentType,\n entryDocumentId: documentId,\n hasEntryAttached: false,\n locale,\n });\n\n const releases = response.data?.data;\n\n if (releases?.length === 0) {\n return <NoReleases />;\n }\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingBottom={6}>\n <Field.Root required>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.select-label',\n defaultMessage: 'Select a release',\n })}\n </Field.Label>\n <SingleSelect\n required\n placeholder={formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.select-placeholder',\n defaultMessage: 'Select',\n })}\n name=\"releaseId\"\n onChange={(value) => onInputChange('releaseId', value)}\n value={values.releaseId}\n >\n {releases?.map((release) => (\n <SingleSelectOption key={release.id} value={release.id}>\n {release.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.action-type-label',\n defaultMessage: 'What do you want to do with this entry?',\n })}\n </Field.Label>\n <ReleaseActionOptions\n selected={values.type}\n handleChange={(e) => onInputChange('type', e.target.value)}\n name=\"type\"\n />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionModalForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ReleaseActionModalForm: DocumentActionComponent = ({\n documentId,\n document,\n model,\n collectionType,\n}: DocumentActionProps) => {\n const { formatMessage } = useIntl();\n const { allowedActions } = useRBAC(PERMISSIONS);\n const { canCreateAction } = allowedActions;\n const [createReleaseAction, { isLoading }] = useCreateReleaseActionMutation();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const locale = query.plugins?.i18n?.locale;\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>, onClose: () => void) => {\n try {\n await formik.handleSubmit(e);\n onClose();\n } catch (error) {\n if (isFetchError(error)) {\n // Handle axios error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n }\n };\n\n const formik = useFormik({\n initialValues: INITIAL_VALUES,\n validationSchema: RELEASE_ACTION_FORM_SCHEMA,\n onSubmit: async (values: FormValues) => {\n if (collectionType === 'collection-types' && !documentId) {\n throw new Error('Document id is required');\n }\n\n const response = await createReleaseAction({\n body: {\n type: values.type,\n contentType: model as UID.ContentType,\n entryDocumentId: documentId,\n locale,\n },\n params: { releaseId: values.releaseId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.notification.success',\n defaultMessage: 'Entry added to release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n throw response.error;\n }\n },\n });\n\n const {\n edit: { options },\n } = useDocumentLayout(model);\n\n // Project is not EE or contentType does not have draftAndPublish enabled\n if (!window.strapi.isEE || !options?.draftAndPublish || !canCreateAction) {\n return null;\n }\n\n if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {\n return null;\n }\n\n return {\n label: formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release',\n defaultMessage: 'Add to release',\n }),\n icon: <PaperPlane />,\n // Entry is creating so we don't want to allow adding it to a release\n disabled: !document,\n position: ['panel', 'table-row'],\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release',\n defaultMessage: 'Add to release',\n }),\n content: (\n <AddActionToReleaseModal\n contentType={model}\n documentId={documentId}\n onInputChange={formik.setFieldValue}\n values={formik.values}\n />\n ),\n footer: ({ onClose }) => (\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.cancel-button',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button\n type=\"submit\"\n // @ts-expect-error - formik ReactEvent types don't match button onClick types as they expect a MouseEvent\n onClick={(e) => handleSubmit(e, onClose)}\n disabled={!formik.values.releaseId}\n loading={isLoading}\n >\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.add-to-release.continue-button',\n defaultMessage: 'Continue',\n })}\n </Button>\n </Modal.Footer>\n ),\n },\n };\n};\n\nexport { ReleaseActionModalForm };\n","import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Modal,\n Field,\n} from '@strapi/design-system';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { CreateManyReleaseActions } from '../../../shared/contracts/release-actions';\nimport { PERMISSIONS as releasePermissions } from '../constants';\nimport { useCreateManyReleaseActionsMutation, useGetReleasesQuery } from '../services/release';\n\nimport {\n type FormValues,\n INITIAL_VALUES,\n RELEASE_ACTION_FORM_SCHEMA,\n NoReleases,\n} from './ReleaseActionModal';\nimport { ReleaseActionOptions } from './ReleaseActionOptions';\n\nimport type { BulkActionComponent } from '@strapi/content-manager/strapi-admin';\nimport type { UID } from '@strapi/types';\n\nconst getContentPermissions = (subject: string) => {\n const permissions = {\n publish: [\n {\n action: 'plugin::content-manager.explorer.publish',\n subject,\n id: '',\n actionParameters: {},\n properties: {},\n conditions: [],\n },\n ],\n };\n\n return permissions;\n};\n\nconst ReleaseAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const contentPermissions = getContentPermissions(model);\n const {\n allowedActions: { canPublish },\n } = useRBAC(contentPermissions);\n const {\n allowedActions: { canCreate },\n } = useRBAC(releasePermissions);\n\n // Get all the releases not published\n const response = useGetReleasesQuery();\n const releases = response.data?.data;\n const [createManyReleaseActions, { isLoading }] = useCreateManyReleaseActionsMutation();\n const documentIds = documents.map((doc) => doc.documentId);\n\n const handleSubmit = async (values: FormValues) => {\n const locale = query.plugins?.i18n?.locale;\n\n const releaseActionEntries: CreateManyReleaseActions.Request['body'] = documentIds.map(\n (entryDocumentId) => ({\n type: values.type,\n contentType: model as UID.ContentType,\n entryDocumentId,\n locale,\n })\n );\n\n const response = await createManyReleaseActions({\n body: releaseActionEntries,\n params: { releaseId: values.releaseId },\n });\n\n if ('data' in response) {\n // Handle success\n\n const notificationMessage = formatMessage(\n {\n id: 'content-releases.content-manager-list-view.add-to-release.notification.success.message',\n defaultMessage:\n '{entriesAlreadyInRelease} out of {totalEntries} entries were already in the release.',\n },\n {\n entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,\n totalEntries: response.data.meta.totalEntries,\n }\n );\n\n const notification = {\n type: 'success' as const,\n title: formatMessage(\n {\n id: 'content-releases.content-manager-list-view.add-to-release.notification.success.title',\n defaultMessage: 'Successfully added to release.',\n },\n {\n entriesAlreadyInRelease: response.data.meta.entriesAlreadyInRelease,\n totalEntries: response.data.meta.totalEntries,\n }\n ),\n message: response.data.meta.entriesAlreadyInRelease ? notificationMessage : '',\n };\n\n toggleNotification(notification);\n\n return true;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'warning',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'warning',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canCreate || !canPublish) return null;\n\n return {\n actionType: 'release',\n variant: 'tertiary',\n label: formatMessage({\n id: 'content-manager-list-view.add-to-release',\n defaultMessage: 'Add to Release',\n }),\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager-list-view.add-to-release',\n defaultMessage: 'Add to Release',\n }),\n content: ({ onClose }) => {\n return (\n <Formik\n onSubmit={async (values) => {\n const data = await handleSubmit(values);\n if (data) {\n return onClose();\n }\n }}\n validationSchema={RELEASE_ACTION_FORM_SCHEMA}\n initialValues={INITIAL_VALUES}\n >\n {({ values, setFieldValue }) => (\n <Form>\n {releases?.length === 0 ? (\n <NoReleases />\n ) : (\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingBottom={6}>\n <Field.Root required>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.select-label',\n defaultMessage: 'Select a release',\n })}\n </Field.Label>\n <SingleSelect\n placeholder={formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.select-placeholder',\n defaultMessage: 'Select',\n })}\n onChange={(value) => setFieldValue('releaseId', value)}\n value={values.releaseId}\n >\n {releases?.map((release) => (\n <SingleSelectOption key={release.id} value={release.id}>\n {release.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Field.Label>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.action-type-label',\n defaultMessage: 'What do you want to do with these entries?',\n })}\n </Field.Label>\n <ReleaseActionOptions\n selected={values.type}\n handleChange={(e) => setFieldValue('type', e.target.value)}\n name=\"type\"\n />\n </Flex>\n </Modal.Body>\n )}\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.cancel-button',\n defaultMessage: 'Cancel',\n })}\n </Button>\n {/** * TODO: Ideally we would use isValid from Formik to disable the button,\n however currently it always returns true * for yup.string().required(), even when\n the value is falsy (including empty string) */}\n <Button type=\"submit\" disabled={!values.releaseId} loading={isLoading}>\n {formatMessage({\n id: 'content-releases.content-manager-list-view.add-to-release.continue-button',\n defaultMessage: 'Continue',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n },\n },\n };\n};\n\nexport { ReleaseAction };\n","import * as React from 'react';\n\nimport { useTable, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { ListFieldLayout, ListLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Popover, Typography, Button, Link } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useGetMappedEntriesInReleasesQuery } from '../services/release';\n\nimport type { Modules, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useReleasesList\n * -----------------------------------------------------------------------------------------------*/\ninterface QueryParams {\n plugins?: {\n i18n?: {\n locale: string;\n };\n };\n}\n\nconst useReleasesList = (contentTypeUid: UID.ContentType, documentId: Modules.Documents.ID) => {\n const listViewData = useTable('ListView', (state) => state.rows);\n const documentIds = listViewData.map((entry) => entry.documentId);\n const [{ query }] = useQueryParams();\n const locale = (query as QueryParams)?.plugins?.i18n?.locale || undefined;\n\n const response = useGetMappedEntriesInReleasesQuery(\n { contentTypeUid, documentIds, locale },\n { skip: !documentIds || !contentTypeUid || documentIds.length === 0 }\n );\n\n const mappedEntriesInReleases = response.data || {};\n\n return mappedEntriesInReleases?.[documentId] || [];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addColumnToTableHook\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AddColumnToTableHookArgs {\n layout: ListLayout;\n displayedHeaders: ListFieldLayout[];\n}\n\nconst addColumnToTableHook = ({ displayedHeaders, layout }: AddColumnToTableHookArgs) => {\n const { options } = layout;\n\n if (!options?.draftAndPublish) {\n return { displayedHeaders, layout };\n }\n\n return {\n displayedHeaders: [\n ...displayedHeaders,\n {\n searchable: false,\n sortable: false,\n name: 'releases',\n label: {\n id: 'content-releases.content-manager.list-view.releases.header',\n defaultMessage: 'To be released in',\n },\n cellFormatter: (\n props: Modules.Documents.AnyDocument,\n _: any,\n { model }: { model: UID.ContentType }\n ) => <ReleaseListCell {...props} model={model} />,\n },\n ],\n layout,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseListCell\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ReleaseListCellProps extends Modules.Documents.AnyDocument {\n documentId: Modules.Documents.ID;\n model: UID.ContentType;\n}\n\nconst ReleaseListCell = ({ documentId, model }: ReleaseListCellProps) => {\n const releases = useReleasesList(model, documentId);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button\n variant=\"ghost\"\n onClick={(e: React.MouseEvent<HTMLElement>) => e.stopPropagation()}\n // TODO: find a way in the DS to define the widht and height of the icon\n endIcon={releases.length > 0 ? <CaretDown width=\"1.2rem\" height=\"1.2rem\" /> : null}\n >\n <Typography\n style={{ maxWidth: '252px', cursor: 'pointer' }}\n textColor=\"neutral800\"\n fontWeight=\"regular\"\n >\n {releases.length > 0\n ? formatMessage(\n {\n id: 'content-releases.content-manager.list-view.releases-number',\n defaultMessage: '{number} {number, plural, one {release} other {releases}}',\n },\n {\n number: releases.length,\n }\n )\n : '-'}\n </Typography>\n </Button>\n </Popover.Trigger>\n <Popover.Content>\n <ul>\n {releases.map(({ id, name }) => (\n <Box key={id} padding={3} tag=\"li\">\n <Link href={`/admin/plugins/content-releases/${id}`} isExternal={false}>\n {name}\n </Link>\n </Box>\n ))}\n </ul>\n </Popover.Content>\n </Popover.Root>\n );\n};\n\nexport { ReleaseListCell, addColumnToTableHook };\nexport type { ReleaseListCellProps };\n","export const getTimezoneOffset = (timezone: string, date: Date) => {\n try {\n const offsetPart = new Intl.DateTimeFormat('en', {\n timeZone: timezone,\n timeZoneName: 'longOffset',\n })\n .formatToParts(date)\n .find((part) => part.type === 'timeZoneName');\n\n const offset = offsetPart ? offsetPart.value : '';\n\n // We want to show time based on UTC, not GMT so we swap that.\n let utcOffset = offset.replace('GMT', 'UTC');\n\n // For perfect UTC (UTC+0:00) we only get the string UTC, So we need to append the 0's.\n if (!utcOffset.includes('+') && !utcOffset.includes('-')) {\n utcOffset = `${utcOffset}+00:00`;\n }\n\n return utcOffset;\n } catch (error) {\n // When timezone is invalid we catch the error and return empty to don't break the app\n return '';\n }\n};\n\ninterface ITimezoneOption {\n offset: string;\n value: string;\n}\n\nexport const getTimezones = (selectedDate: Date) => {\n const timezoneList: ITimezoneOption[] = Intl.supportedValuesOf('timeZone').map((timezone) => {\n // Timezone will be in the format GMT${OFFSET} where offset could be nothing,\n // a four digit string e.g. +05:00 or -08:00\n const utcOffset = getTimezoneOffset(timezone, selectedDate);\n\n // Offset and timezone are concatenated with '&', so to split and save the required timezone in DB\n return { offset: utcOffset, value: `${utcOffset}&${timezone}` } satisfies ITimezoneOption;\n });\n\n const systemTimezone = timezoneList.find(\n (timezone) => timezone.value.split('&')[1] === Intl.DateTimeFormat().resolvedOptions().timeZone\n );\n\n return { timezoneList, systemTimezone };\n};\n","import * as React from 'react';\n\nimport {\n useAPIErrorHandler,\n useNotification,\n useAuth,\n useRBAC,\n isFetchError,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography, Menu, AccessibleIcon } from '@strapi/design-system';\nimport { Cross, More, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { DeleteReleaseAction, ReleaseAction } from '../../../shared/contracts/release-actions';\nimport { Release } from '../../../shared/contracts/releases';\nimport { PERMISSIONS } from '../constants';\nimport { useDeleteReleaseActionMutation } from '../services/release';\n\nconst StyledMenuItem = styled(Menu.Item)<{ $variant?: 'neutral' | 'danger' }>`\n &:hover {\n background: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}100`]};\n\n svg {\n fill: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}600`]};\n }\n\n a {\n color: ${({ theme }) => theme.colors.neutral800};\n }\n }\n\n svg {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}500`]};\n }\n\n span {\n color: ${({ theme, $variant = 'neutral' }) => theme.colors[`${$variant}800`]};\n }\n\n span,\n a {\n width: 100%;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteReleaseActionItemProps\n * -----------------------------------------------------------------------------------------------*/\ninterface DeleteReleaseActionItemProps {\n releaseId: DeleteReleaseAction.Request['params']['releaseId'];\n actionId: DeleteReleaseAction.Request['params']['actionId'];\n}\n\nconst DeleteReleaseActionItem = ({ releaseId, actionId }: DeleteReleaseActionItemProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const [deleteReleaseAction] = useDeleteReleaseActionMutation();\n const {\n allowedActions: { canDeleteAction },\n } = useRBAC(PERMISSIONS);\n\n const handleDeleteAction = async () => {\n const response = await deleteReleaseAction({\n params: { releaseId, actionId },\n });\n\n if ('data' in response) {\n // Handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release.notification.success',\n defaultMessage: 'Entry removed from release',\n }),\n });\n\n return;\n }\n\n if ('error' in response) {\n if (isFetchError(response.error)) {\n // Handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Handle generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n }\n };\n\n if (!canDeleteAction) {\n return null;\n }\n\n return (\n <StyledMenuItem $variant=\"danger\" onSelect={handleDeleteAction}>\n <Flex gap={2}>\n <Cross width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"danger600\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.remove-from-release',\n defaultMessage: 'Remove from release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseActionEntryLinkItem\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleaseActionEntryLinkItemProps {\n contentTypeUid: ReleaseAction['contentType'];\n documentId: ReleaseAction['entry']['documentId'];\n locale: ReleaseAction['locale'];\n}\n\nconst ReleaseActionEntryLinkItem = ({\n contentTypeUid,\n documentId,\n locale,\n}: ReleaseActionEntryLinkItemProps) => {\n const { formatMessage } = useIntl();\n const userPermissions = useAuth('ReleaseActionEntryLinkItem', (state) => state.permissions);\n\n // Confirm user has permissions to access the entry for the given locale\n const canUpdateEntryForLocale = React.useMemo(() => {\n const updatePermissions = userPermissions.find(\n (permission) =>\n permission.subject === contentTypeUid &&\n permission.action === 'plugin::content-manager.explorer.update'\n );\n\n if (!updatePermissions) {\n return false;\n }\n\n return Boolean(!locale || updatePermissions.properties?.locales?.includes(locale));\n }, [contentTypeUid, locale, userPermissions]);\n\n const {\n allowedActions: { canUpdate: canUpdateContentType },\n } = useRBAC({\n updateContentType: [\n {\n action: 'plugin::content-manager.explorer.update',\n subject: contentTypeUid,\n },\n ],\n });\n\n if (!canUpdateContentType || !canUpdateEntryForLocale) {\n return null;\n }\n\n return (\n <StyledMenuItem\n /* @ts-expect-error inference isn't working in DS */\n tag={NavLink}\n isLink\n to={{\n pathname: `/content-manager/collection-types/${contentTypeUid}/${documentId}`,\n search: locale && `?plugins[i18n][locale]=${locale}`,\n }}\n >\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-entry',\n defaultMessage: 'Edit entry',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditReleaseItem\n * -----------------------------------------------------------------------------------------------*/\ninterface EditReleaseItemProps {\n releaseId: Release['id'];\n}\n\nconst EditReleaseItem = ({ releaseId }: EditReleaseItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n /* @ts-expect-error inference isn't working in DS */\n <StyledMenuItem tag={NavLink} isLink to={`/plugins/content-releases/${releaseId}`}>\n <Flex gap={2}>\n <Pencil width=\"1.6rem\" height=\"1.6rem\" />\n <Typography textColor=\"neutral800\" variant=\"omega\">\n {formatMessage({\n id: 'content-releases.content-manager-edit-view.edit-release',\n defaultMessage: 'Edit release',\n })}\n </Typography>\n </Flex>\n </StyledMenuItem>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n hasTriggerBorder?: boolean;\n}\n\nconst Root = ({ children }: RootProps) => {\n const { formatMessage } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n\n return (\n // A user can access the dropdown if they have permissions to delete a release-action OR update a release\n allowedActions.canDeleteAction || allowedActions.canUpdate ? (\n <Menu.Root>\n <StyledMoreButton variant=\"tertiary\" endIcon={null} paddingLeft=\"7px\" paddingRight=\"7px\">\n <AccessibleIcon\n label={formatMessage({\n id: 'content-releases.content-manager-edit-view.release-action-menu',\n defaultMessage: 'Release action options',\n })}\n >\n <More />\n </AccessibleIcon>\n </StyledMoreButton>\n <Menu.Content top={1} popoverPlacement=\"bottom-end\">\n {children}\n </Menu.Content>\n </Menu.Root>\n ) : null\n );\n};\n\nconst StyledMoreButton = styled(Menu.Trigger)`\n & > span {\n display: flex;\n }\n`;\n\nexport const ReleaseActionMenu = {\n Root,\n EditReleaseItem,\n DeleteReleaseActionItem,\n ReleaseActionEntryLinkItem,\n};\n","import { useRBAC, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { unstable_useDocumentLayout as useDocumentLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { PERMISSIONS } from '../constants';\nimport { useGetReleasesForEntryQuery } from '../services/release';\nimport { getTimezoneOffset } from '../utils/time';\n\nimport { ReleaseActionMenu } from './ReleaseActionMenu';\n\nimport type { PanelComponent, PanelComponentProps } from '@strapi/content-manager/strapi-admin';\n\nconst Panel: PanelComponent = ({\n model,\n document,\n documentId,\n collectionType,\n}: PanelComponentProps) => {\n const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n const locale = query.plugins?.i18n?.locale;\n\n const {\n edit: { options },\n } = useDocumentLayout(model);\n const { formatMessage, formatDate, formatTime } = useIntl();\n\n const { allowedActions } = useRBAC(PERMISSIONS);\n const { canRead, canDeleteAction } = allowedActions;\n\n const response = useGetReleasesForEntryQuery(\n {\n contentType: model,\n entryDocumentId: documentId,\n locale,\n hasEntryAttached: true,\n },\n {\n skip: !document,\n }\n );\n const releases = response.data?.data;\n\n const getReleaseColorVariant = (\n actionType: 'publish' | 'unpublish',\n shade: '100' | '200' | '600'\n ) => {\n if (actionType === 'unpublish') {\n return `secondary${shade}`;\n }\n\n return `success${shade}`;\n };\n\n // Project is not EE or contentType does not have draftAndPublish enabled\n if (!window.strapi.isEE || !options?.draftAndPublish || !canRead) {\n return null;\n }\n\n if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {\n return null;\n }\n\n if (!releases || releases.length === 0) {\n return null;\n }\n\n return {\n title: formatMessage({\n id: 'content-releases.plugin.name',\n defaultMessage: 'Releases',\n }),\n content: (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3} width=\"100%\">\n {releases?.map((release) => (\n <Flex\n key={release.id}\n direction=\"column\"\n alignItems=\"start\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={getReleaseColorVariant(release.actions[0].type, '200')}\n overflow=\"hidden\"\n hasRadius\n >\n <Box\n paddingTop={3}\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n background={getReleaseColorVariant(release.actions[0].type, '100')}\n width=\"100%\"\n >\n <Typography\n fontSize={1}\n variant=\"pi\"\n textColor={getReleaseColorVariant(release.actions[0].type, '600')}\n >\n {formatMessage(\n {\n id: 'content-releases.content-manager-edit-view.list-releases.title',\n defaultMessage:\n '{isPublish, select, true {Will be published in} other {Will be unpublished in}}',\n },\n { isPublish: release.actions[0].type === 'publish' }\n )}\n </Typography>\n </Box>\n <Flex padding={4} direction=\"column\" gap={2} width=\"100%\" alignItems=\"flex-start\">\n <Typography fontSize={2} fontWeight=\"bold\" variant=\"omega\" textColor=\"neutral700\">\n {release.name}\n </Typography>\n {release.scheduledAt && release.timezone && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-releases.content-manager-edit-view.scheduled.date',\n defaultMessage: '{date} at {time} ({offset})',\n },\n {\n date: formatDate(new Date(release.scheduledAt), {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n timeZone: release.timezone,\n }),\n time: formatTime(new Date(release.scheduledAt), {\n hourCycle: 'h23',\n timeZone: release.timezone,\n }),\n offset: getTimezoneOffset(release.timezone, new Date(release.scheduledAt)),\n }\n )}\n </Typography>\n )}\n {canDeleteAction ? (\n <ReleaseActionMenu.Root hasTriggerBorder>\n <ReleaseActionMenu.EditReleaseItem releaseId={release.id} />\n <ReleaseActionMenu.DeleteReleaseActionItem\n releaseId={release.id}\n actionId={release.actions[0].id}\n />\n </ReleaseActionMenu.Root>\n ) : null}\n </Flex>\n </Flex>\n ))}\n </Flex>\n ),\n };\n};\n\nexport { Panel };\n","export const pluginId = 'content-releases';\n","type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n","import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n async Component() {\n const { ProtectedReleasesSettingsPage } = await import('./pages/ReleasesSettingsPage');\n return { default: ProtectedReleasesSettingsPage };\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: '/plugins/purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n async Component() {\n const { PurchaseContentReleases } = await import('./pages/PurchaseContentReleases');\n return { default: PurchaseContentReleases };\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["PERMISSIONS","main","action","subject","id","actionParameters","properties","conditions","create","update","delete","createAction","deleteAction","publish","extendInvalidatesTags","endpoint","extraTags","originalInvalidatesTags","invalidatesTags","newInvalidatesTags","result","err","args","meta","originalTags","Object","assign","releaseApi","adminApi","enhanceEndpoints","addTagTypes","endpoints","updateDocument","type","deleteDocument","deleteManyDocuments","discardDocument","createWorkflow","updateWorkflow","deleteWorkflow","injectEndpoints","build","getReleasesForEntry","query","params","url","method","config","providesTags","data","map","getReleases","page","pageSize","filters","releasedAt","$notNull","transformResponse","response","arg","releasedAtValue","isActiveDoneTab","newResponse","activeTab","getRelease","error","getReleaseActions","releaseId","createRelease","mutation","updateRelease","createReleaseAction","body","createManyReleaseActions","updateReleaseAction","actionId","res","onQueryStarted","actionPath","dispatch","queryFulfilled","paramsWithoutActionId","patchResult","util","updateQueryData","draft","key","index","undo","deleteReleaseAction","publishRelease","deleteRelease","getMappedEntriesInReleases","getReleaseSettings","updateReleaseSettings","useGetReleasesQuery","useGetReleasesForEntryQuery","useGetReleaseQuery","useGetReleaseActionsQuery","useCreateReleaseMutation","useCreateReleaseActionMutation","useCreateManyReleaseActionsMutation","useUpdateReleaseMutation","useUpdateReleaseActionMutation","usePublishReleaseMutation","useDeleteReleaseActionMutation","useDeleteReleaseMutation","useGetMappedEntriesInReleasesQuery","useGetReleaseSettingsQuery","useUpdateReleaseSettingsMutation","getBorderLeftRadiusValue","actionType","getBorderRightRadiusValue","FieldWrapper","styled","Field","Root","$actionType","theme","spaces","colors","primary700","danger600","primary100","danger100","neutral700","neutral100","neutral200","neutral600","neutral150","neutral300","ActionOption","selected","handleChange","name","disabled","_jsx","background","borderColor","color","position","cursor","data-checked","data-disabled","_jsxs","Label","VisuallyHidden","Input","checked","onChange","value","ReleaseActionOptions","Flex","RELEASE_ACTION_FORM_SCHEMA","yup","object","shape","string","oneOf","required","INITIAL_VALUES","NoReleases","formatMessage","useIntl","EmptyStateLayout","icon","EmptyDocuments","width","content","defaultMessage","LinkButton","to","pathname","tag","ReactRouterLink","variant","shadow","AddActionToReleaseModal","contentType","documentId","onInputChange","values","useQueryParams","locale","plugins","i18n","entryDocumentId","hasEntryAttached","releases","length","direction","alignItems","gap","Box","paddingBottom","SingleSelect","placeholder","release","SingleSelectOption","e","target","ReleaseActionModalForm","document","model","collectionType","allowedActions","useRBAC","canCreateAction","isLoading","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","handleSubmit","onClose","formik","isFetchError","message","useFormik","initialValues","validationSchema","onSubmit","Error","edit","options","useDocumentLayout","window","strapi","isEE","draftAndPublish","label","PaperPlane","dialog","title","setFieldValue","footer","Modal","Footer","Button","onClick","loading","getContentPermissions","permissions","ReleaseAction","documents","contentPermissions","canPublish","canCreate","releasePermissions","documentIds","doc","releaseActionEntries","notificationMessage","entriesAlreadyInRelease","totalEntries","notification","Formik","Form","Body","useReleasesList","contentTypeUid","listViewData","useTable","state","rows","entry","undefined","skip","mappedEntriesInReleases","addColumnToTableHook","displayedHeaders","layout","searchable","sortable","cellFormatter","props","_","ReleaseListCell","Popover","Trigger","stopPropagation","endIcon","CaretDown","height","Typography","style","maxWidth","textColor","fontWeight","number","Content","ul","padding","Link","href","isExternal","getTimezoneOffset","timezone","date","offsetPart","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","find","part","offset","utcOffset","replace","includes","getTimezones","selectedDate","timezoneList","supportedValuesOf","systemTimezone","split","resolvedOptions","StyledMenuItem","Menu","Item","$variant","neutral800","DeleteReleaseActionItem","canDeleteAction","handleDeleteAction","onSelect","Cross","ReleaseActionEntryLinkItem","userPermissions","useAuth","canUpdateEntryForLocale","React","useMemo","updatePermissions","permission","Boolean","locales","canUpdate","canUpdateContentType","updateContentType","NavLink","isLink","search","Pencil","EditReleaseItem","children","StyledMoreButton","paddingLeft","paddingRight","AccessibleIcon","More","top","popoverPlacement","ReleaseActionMenu","Panel","formatDate","formatTime","canRead","getReleaseColorVariant","shade","borderWidth","borderStyle","actions","overflow","hasRadius","paddingTop","fontSize","isPublish","scheduledAt","Date","day","month","year","time","hourCycle","hasTriggerBorder","pluginId","prefixPluginTranslations","trad","keys","reduce","acc","current","admin","register","app","createHook","features","isEnabled","addMenuLink","intlLabel","Component","then","mod","default","App","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","indexOfDeleteAction","findIndex","splice","addSettingsLink","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","registerHook","flags","promoteEE","PurchaseContentReleases","licenseOnly","registerTrads","importedTrads","Promise","all","catch","resolve"],"mappings":"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"}
@@ -40,4 +40,4 @@ const SETTINGS_SCHEMA = yup.object().shape({
40
40
  }).required().noUnknown();
41
41
 
42
42
  export { RELEASE_SCHEMA as R, SETTINGS_SCHEMA as S };
43
- //# sourceMappingURL=schemas-DMt8h1z-.js.map
43
+ //# sourceMappingURL=schemas-DMt8h1z-.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas-DMt8h1z-.mjs","sources":["../../../admin/src/validation/schemas.ts"],"sourcesContent":["import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport { zonedTimeToUtc } from 'date-fns-tz';\nimport * as yup from 'yup';\n\n/**\n * FormikErrors type enforce us to always return a string as error.\n * We need these errors to be translated, so we need to create a hook to be able to use the formatMessage function.\n */\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(translatedErrors.required.id).nullable(),\n scheduledAt: yup.string().nullable(),\n isScheduled: yup.boolean().optional(),\n time: yup\n .string()\n .when('isScheduled', {\n is: true,\n then: yup.string().trim().required(translatedErrors.required.id),\n otherwise: yup.string().nullable(),\n })\n .test(\n 'time-in-future-if-today',\n 'content-releases.modal.form.time.has-passed',\n function (time) {\n const { date, timezone } = this.parent;\n\n if (!date || !timezone || !time) {\n return true;\n }\n\n // Timezone is in format \"UTC&Europe/Paris\", so we get the region part for the dates functions\n const region = timezone.split('&')[1];\n\n const selectedTime = zonedTimeToUtc(`${date} ${time}`, region);\n const now = new Date();\n\n return selectedTime > now;\n }\n ),\n timezone: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n date: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nexport const SETTINGS_SCHEMA = yup\n .object()\n .shape({\n defaultTimezone: yup.string().nullable().default(null),\n })\n .required()\n .noUnknown();\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","translatedErrors","id","nullable","scheduledAt","isScheduled","boolean","optional","time","when","is","then","otherwise","test","date","timezone","parent","region","split","selectedTime","zonedTimeToUtc","now","Date","noUnknown","SETTINGS_SCHEMA","defaultTimezone","default"],"mappings":";;;;AAIA;;;AAGC,IACYA,MAAAA,cAAAA,GAAiBC,IAC3BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,GAAII,CAAAA,MAAM,EAAGC,CAAAA,IAAI,EAAGC,CAAAA,QAAQ,CAACC,gBAAAA,CAAiBD,QAAQ,CAACE,EAAE,CAAA,CAAEC,QAAQ,EAAA;IACzEC,WAAaV,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ,EAAA;IAClCE,WAAaX,EAAAA,GAAAA,CAAIY,OAAO,EAAA,CAAGC,QAAQ,EAAA;AACnCC,IAAAA,IAAAA,EAAMd,GACHI,CAAAA,MAAM,EACNW,CAAAA,IAAI,CAAC,aAAe,EAAA;QACnBC,EAAI,EAAA,IAAA;QACJC,IAAMjB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,EAAA,CAAGC,QAAQ,CAACC,gBAAAA,CAAiBD,QAAQ,CAACE,EAAE,CAAA;QAC/DU,SAAWlB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ;AAClC,KAAA,CAAA,CACCU,IAAI,CACH,yBACA,EAAA,6CAAA,EACA,SAAUL,IAAI,EAAA;QACZ,MAAM,EAAEM,IAAI,EAAEC,QAAQ,EAAE,GAAG,IAAI,CAACC,MAAM;AAEtC,QAAA,IAAI,CAACF,IAAAA,IAAQ,CAACC,QAAAA,IAAY,CAACP,IAAM,EAAA;YAC/B,OAAO,IAAA;AACT;;AAGA,QAAA,MAAMS,SAASF,QAASG,CAAAA,KAAK,CAAC,GAAA,CAAI,CAAC,CAAE,CAAA;QAErC,MAAMC,YAAAA,GAAeC,eAAe,CAAC,EAAEN,KAAK,CAAC,EAAEN,IAAK,CAAA,CAAC,EAAES,MAAAA,CAAAA;AACvD,QAAA,MAAMI,MAAM,IAAIC,IAAAA,EAAAA;AAEhB,QAAA,OAAOH,YAAeE,GAAAA,GAAAA;AACxB,KAAA,CAAA;AAEJN,IAAAA,QAAAA,EAAUrB,GAAII,CAAAA,MAAM,EAAGW,CAAAA,IAAI,CAAC,aAAe,EAAA;QACzCC,EAAI,EAAA,IAAA;QACJC,IAAMjB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,CAACC,iBAAiBD,QAAQ,CAACE,EAAE,CAAA,CAAEC,QAAQ,EAAA;QAClES,SAAWlB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ;AAClC,KAAA,CAAA;AACAW,IAAAA,IAAAA,EAAMpB,GAAII,CAAAA,MAAM,EAAGW,CAAAA,IAAI,CAAC,aAAe,EAAA;QACrCC,EAAI,EAAA,IAAA;QACJC,IAAMjB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,CAACC,iBAAiBD,QAAQ,CAACE,EAAE,CAAA,CAAEC,QAAQ,EAAA;QAClES,SAAWlB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ;AAClC,KAAA;AACF,CACCH,CAAAA,CAAAA,QAAQ,EACRuB,CAAAA,SAAS;MAECC,eAAkB9B,GAAAA,GAAAA,CAC5BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACL6B,IAAAA,eAAAA,EAAiB/B,IAAII,MAAM,EAAA,CAAGK,QAAQ,EAAA,CAAGuB,OAAO,CAAC,IAAA;AACnD,CACC1B,CAAAA,CAAAA,QAAQ,EACRuB,CAAAA,SAAS;;;;"}
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+
3
+ var uk = {
4
+ "content-manager-edit-view.add-to-release.select-label": "Виберіть реліз",
5
+ "content-manager-edit-view.add-to-release.select-placeholder": "Виберіть",
6
+ "content-manager-edit-view.add-to-release.action-type-label": "Що ви хочете зробити з цим записом?",
7
+ "content-manager-edit-view.add-to-release.cancel-button": "Скасувати",
8
+ "content-manager-edit-view.add-to-release.continue-button": "Продовжити",
9
+ "content-manager-edit-view.add-to-release": "Додати до релізу",
10
+ "content-manager-edit-view.add-to-release.notification.success": "Запис додано до релізу",
11
+ "content-manager-edit-view.add-to-release.no-releases-message": "Немає доступних релізів. Відкрийте список релізів і створіть новий звідти.",
12
+ "content-manager-edit-view.add-to-release.redirect-button": "Відкрити список релізів",
13
+ "content-manager-edit-view.list-releases.title": "{isPublish, select, true {Буде опубліковано в} other {Буде скасовано публікацію в}}",
14
+ "content-manager-edit-view.remove-from-release": "Видалити з релізу",
15
+ "content-manager-edit-view.scheduled.date": "{date} о {time} ({offset})",
16
+ "content-manager-edit-view.edit-release": "Редагувати реліз",
17
+ "content-releases.content-manager-edit-view.edit-entry": "Редагувати запис",
18
+ "content-manager-edit-view.remove-from-release.notification.success": "Запис видалено з релізу",
19
+ "content-manager-edit-view.release-action-menu": "Опції дій релізу",
20
+ "content-manager.list-view.releases.header": "Буде випущено в",
21
+ "content-manager-list-view.add-to-release": "Додати до релізу",
22
+ "content-manager-list-view.add-to-release.cancel-button": "Скасувати",
23
+ "content-manager-list-view.add-to-release.continue-button": "Продовжити",
24
+ "content-manager-list-view.add-to-release.select-label": "Виберіть реліз",
25
+ "content-manager-list-view.add-to-release.select-placeholder": "Виберіть",
26
+ "content-manager-list-view.add-to-release.action-type-label": "Що ви хочете зробити з цими записами?",
27
+ "content-manager-list-view.add-to-release.notification.success.title": "Успішно додано до релізу.",
28
+ "content-manager-list-view.add-to-release.notification.success.message": "{entriesAlreadyInRelease} з {totalEntries} записів вже були в релізі.",
29
+ "content-manager.notification.entry-error": "Не вдалося отримати дані запису",
30
+ "content-manager.list-view.releases-number": "{number} {number, plural, one {реліз} other {релізи}}",
31
+ "plugin.name": "Релізи",
32
+ "pages.Releases.title": "Релізи",
33
+ "pages.Releases.header-subtitle": "Створюйте та керуйте оновленнями вмісту",
34
+ "pages.Releases.max-limit-reached.title": "Ви досягли ліміту {number} очікуючих {number, plural, one {реліз} other {релізів}}.",
35
+ "pages.Releases.max-limit-reached.message": "Оновіть план, щоб керувати необмеженою кількістю релізів.",
36
+ "pages.Releases.max-limit-reached.action": "Досліджуйте плани",
37
+ "pages.PurchaseRelease.subTitle": "Керуйте оновленнями вмісту та релізами.",
38
+ "pages.PurchaseRelease.not-available": "Релізи доступні лише в рамках платного плану. Оновіть план, щоб створювати та керувати релізами.",
39
+ "header.actions.add-release": "Новий реліз",
40
+ "header.actions.refresh": "Оновити",
41
+ "header.actions.publish": "Опублікувати",
42
+ "header.actions.open-release-actions": "Меню редагування та видалення релізу",
43
+ "header.actions.edit": "Редагувати",
44
+ "header.actions.delete": "Видалити",
45
+ "header.actions.created": "Створено",
46
+ "header.actions.created.description": "{hasCreatedByUser, select, true { автор: {createdBy}} other { автор: видалений користувач}}",
47
+ "modal.release-created-notification-success": "Реліз створено",
48
+ "modal.release-updated-notification-success": "Реліз оновлено",
49
+ "modal.title": "{isCreatingRelease, select, true {Новий реліз} other {Редагувати реліз}}",
50
+ "modal.form.input.label.release-name": "Назва",
51
+ "modal.form.input.label.schedule-release": "Запланувати реліз",
52
+ "modal.form.input.label.date": "Дата",
53
+ "modal.form.input.label.time": "Час",
54
+ "modal.form.input.label.timezone": "Часовий пояс",
55
+ "modal.form.input.clearLabel": "Очистити",
56
+ "modal.form.button.submit": "{isCreatingRelease, select, true {Продовжити} other {Зберегти}}",
57
+ "modal.form.time.has-passed": "Вибраний час вже минув.",
58
+ "pages.Details.header-subtitle": "{number, plural, =0 {Немає записів} one {# запис} other {# записів}}",
59
+ "pages.Releases.tab-group.label": "Список релізів",
60
+ "pages.Releases.tab.pending": "Очікує ({count})",
61
+ "pages.Releases.tab.done": "Завершено",
62
+ "page.Releases.tab.emptyEntries": "Немає релізів",
63
+ "pages.Details.tab.emptyEntries": "Цей реліз порожній. Відкрийте Менеджер вмісту, виберіть запис і додайте його до релізу.",
64
+ "page.ReleaseDetails.table.header.label.name": "назва",
65
+ "page.ReleaseDetails.table.header.label.locale": "локаль",
66
+ "page.ReleaseDetails.table.header.label.content-type": "тип вмісту",
67
+ "page.ReleaseDetails.table.header.label.action": "дія",
68
+ "content-releases.page.ReleaseDetails.table.header.label.status": "статус",
69
+ "page.ReleaseDetails.table.action-published": "Цей запис: <b>{isPublish, select, true {опубліковано} other {скасовано публікацію}}</b>.",
70
+ "pages.ReleaseDetails.publish-notification-success": "Реліз успішно опубліковано.",
71
+ "dialog.confirmation-message": "Ви впевнені, що хочете видалити цей реліз?",
72
+ "page.Details.button.openContentManager": "Відкрити Менеджер вмісту",
73
+ "pages.Releases.notification.error.title": "Ваш запит не може бути оброблений.",
74
+ "pages.Releases.notification.error.message": "Будь ласка, спробуйте ще раз або відкрийте інший реліз.",
75
+ "pages.Releases.not-scheduled": "Не заплановано",
76
+ "pages.ReleaseDetails.groupBy.label": "Групувати за {groupBy}",
77
+ "pages.ReleaseDetails.groupBy.aria-label": "Групувати за",
78
+ "pages.ReleaseDetails.entry-validation.already-published": "Вже опубліковано",
79
+ "pages.ReleaseDetails.entry-validation.ready-to-publish": "Готово до публікації",
80
+ "pages.ReleaseDetails.entry-validation.modified": "Готово до публікації змін",
81
+ "pages.ReleaseDetails.entry-validation.already-unpublished": "Вже скасовано публікацію",
82
+ "pages.ReleaseDetails.entry-validation.ready-to-unpublish": "Готово до скасування публікації",
83
+ "pages.ReleaseDetails.entry-validation.not-ready": "Не готово до публікації",
84
+ "pages.ReleaseDetails.groupBy.option.content-type": "Типи вмісту",
85
+ "pages.ReleaseDetails.groupBy.option.locales": "Локалі",
86
+ "pages.ReleaseDetails.groupBy.option.actions": "Дії",
87
+ "pages.ReleaseDetails.header-subtitle.scheduled": "Заплановано на {date} о {time} ({offset})",
88
+ "pages.ReleaseDetails.entry-validation.fields": "Поля",
89
+ "pages.Settings.releases.title": "Релізи",
90
+ "pages.Settings.releases.description": "Створюйте та керуйте оновленнями вмісту",
91
+ "pages.Settings.releases.timezone.label": "Часовий пояс за замовчуванням",
92
+ "pages.Settings.releases.setting.default-timezone-notification-success": "Часовий пояс за замовчуванням оновлено.",
93
+ "pages.ReleaseDetails.entry-validation.fields.error": "{errors} помилок у полях.",
94
+ "pages.ReleaseDetails.entry-validation.fields.success": "Всі поля заповнені правильно.",
95
+ "pages.ReleaseDetails.entry-validation.fields.see-errors": "Переглянути помилки",
96
+ "pages.ReleaseDetails.entry-validation.review-stage.not-enabled": "Цей запис не пов'язаний з жодним робочим процесом.",
97
+ "pages.ReleaseDetails.entry-validation.review-stage.not-ready": "Цей запис не на необхідному етапі для публікації. ({stageName})",
98
+ "pages.ReleaseDetails.entry-validation.review-stage.ready": "Цей запис на необхідному етапі для публікації. ({stageName})",
99
+ "pages.ReleaseDetails.entry-validation.review-stage.stage-not-required": "Необхідний етап для публікації відсутній."
100
+ };
101
+
102
+ exports.default = uk;
103
+ //# sourceMappingURL=uk-9T9su-bj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"en-B2EeDoOz.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"uk-9T9su-bj.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,101 @@
1
+ var uk = {
2
+ "content-manager-edit-view.add-to-release.select-label": "Виберіть реліз",
3
+ "content-manager-edit-view.add-to-release.select-placeholder": "Виберіть",
4
+ "content-manager-edit-view.add-to-release.action-type-label": "Що ви хочете зробити з цим записом?",
5
+ "content-manager-edit-view.add-to-release.cancel-button": "Скасувати",
6
+ "content-manager-edit-view.add-to-release.continue-button": "Продовжити",
7
+ "content-manager-edit-view.add-to-release": "Додати до релізу",
8
+ "content-manager-edit-view.add-to-release.notification.success": "Запис додано до релізу",
9
+ "content-manager-edit-view.add-to-release.no-releases-message": "Немає доступних релізів. Відкрийте список релізів і створіть новий звідти.",
10
+ "content-manager-edit-view.add-to-release.redirect-button": "Відкрити список релізів",
11
+ "content-manager-edit-view.list-releases.title": "{isPublish, select, true {Буде опубліковано в} other {Буде скасовано публікацію в}}",
12
+ "content-manager-edit-view.remove-from-release": "Видалити з релізу",
13
+ "content-manager-edit-view.scheduled.date": "{date} о {time} ({offset})",
14
+ "content-manager-edit-view.edit-release": "Редагувати реліз",
15
+ "content-releases.content-manager-edit-view.edit-entry": "Редагувати запис",
16
+ "content-manager-edit-view.remove-from-release.notification.success": "Запис видалено з релізу",
17
+ "content-manager-edit-view.release-action-menu": "Опції дій релізу",
18
+ "content-manager.list-view.releases.header": "Буде випущено в",
19
+ "content-manager-list-view.add-to-release": "Додати до релізу",
20
+ "content-manager-list-view.add-to-release.cancel-button": "Скасувати",
21
+ "content-manager-list-view.add-to-release.continue-button": "Продовжити",
22
+ "content-manager-list-view.add-to-release.select-label": "Виберіть реліз",
23
+ "content-manager-list-view.add-to-release.select-placeholder": "Виберіть",
24
+ "content-manager-list-view.add-to-release.action-type-label": "Що ви хочете зробити з цими записами?",
25
+ "content-manager-list-view.add-to-release.notification.success.title": "Успішно додано до релізу.",
26
+ "content-manager-list-view.add-to-release.notification.success.message": "{entriesAlreadyInRelease} з {totalEntries} записів вже були в релізі.",
27
+ "content-manager.notification.entry-error": "Не вдалося отримати дані запису",
28
+ "content-manager.list-view.releases-number": "{number} {number, plural, one {реліз} other {релізи}}",
29
+ "plugin.name": "Релізи",
30
+ "pages.Releases.title": "Релізи",
31
+ "pages.Releases.header-subtitle": "Створюйте та керуйте оновленнями вмісту",
32
+ "pages.Releases.max-limit-reached.title": "Ви досягли ліміту {number} очікуючих {number, plural, one {реліз} other {релізів}}.",
33
+ "pages.Releases.max-limit-reached.message": "Оновіть план, щоб керувати необмеженою кількістю релізів.",
34
+ "pages.Releases.max-limit-reached.action": "Досліджуйте плани",
35
+ "pages.PurchaseRelease.subTitle": "Керуйте оновленнями вмісту та релізами.",
36
+ "pages.PurchaseRelease.not-available": "Релізи доступні лише в рамках платного плану. Оновіть план, щоб створювати та керувати релізами.",
37
+ "header.actions.add-release": "Новий реліз",
38
+ "header.actions.refresh": "Оновити",
39
+ "header.actions.publish": "Опублікувати",
40
+ "header.actions.open-release-actions": "Меню редагування та видалення релізу",
41
+ "header.actions.edit": "Редагувати",
42
+ "header.actions.delete": "Видалити",
43
+ "header.actions.created": "Створено",
44
+ "header.actions.created.description": "{hasCreatedByUser, select, true { автор: {createdBy}} other { автор: видалений користувач}}",
45
+ "modal.release-created-notification-success": "Реліз створено",
46
+ "modal.release-updated-notification-success": "Реліз оновлено",
47
+ "modal.title": "{isCreatingRelease, select, true {Новий реліз} other {Редагувати реліз}}",
48
+ "modal.form.input.label.release-name": "Назва",
49
+ "modal.form.input.label.schedule-release": "Запланувати реліз",
50
+ "modal.form.input.label.date": "Дата",
51
+ "modal.form.input.label.time": "Час",
52
+ "modal.form.input.label.timezone": "Часовий пояс",
53
+ "modal.form.input.clearLabel": "Очистити",
54
+ "modal.form.button.submit": "{isCreatingRelease, select, true {Продовжити} other {Зберегти}}",
55
+ "modal.form.time.has-passed": "Вибраний час вже минув.",
56
+ "pages.Details.header-subtitle": "{number, plural, =0 {Немає записів} one {# запис} other {# записів}}",
57
+ "pages.Releases.tab-group.label": "Список релізів",
58
+ "pages.Releases.tab.pending": "Очікує ({count})",
59
+ "pages.Releases.tab.done": "Завершено",
60
+ "page.Releases.tab.emptyEntries": "Немає релізів",
61
+ "pages.Details.tab.emptyEntries": "Цей реліз порожній. Відкрийте Менеджер вмісту, виберіть запис і додайте його до релізу.",
62
+ "page.ReleaseDetails.table.header.label.name": "назва",
63
+ "page.ReleaseDetails.table.header.label.locale": "локаль",
64
+ "page.ReleaseDetails.table.header.label.content-type": "тип вмісту",
65
+ "page.ReleaseDetails.table.header.label.action": "дія",
66
+ "content-releases.page.ReleaseDetails.table.header.label.status": "статус",
67
+ "page.ReleaseDetails.table.action-published": "Цей запис: <b>{isPublish, select, true {опубліковано} other {скасовано публікацію}}</b>.",
68
+ "pages.ReleaseDetails.publish-notification-success": "Реліз успішно опубліковано.",
69
+ "dialog.confirmation-message": "Ви впевнені, що хочете видалити цей реліз?",
70
+ "page.Details.button.openContentManager": "Відкрити Менеджер вмісту",
71
+ "pages.Releases.notification.error.title": "Ваш запит не може бути оброблений.",
72
+ "pages.Releases.notification.error.message": "Будь ласка, спробуйте ще раз або відкрийте інший реліз.",
73
+ "pages.Releases.not-scheduled": "Не заплановано",
74
+ "pages.ReleaseDetails.groupBy.label": "Групувати за {groupBy}",
75
+ "pages.ReleaseDetails.groupBy.aria-label": "Групувати за",
76
+ "pages.ReleaseDetails.entry-validation.already-published": "Вже опубліковано",
77
+ "pages.ReleaseDetails.entry-validation.ready-to-publish": "Готово до публікації",
78
+ "pages.ReleaseDetails.entry-validation.modified": "Готово до публікації змін",
79
+ "pages.ReleaseDetails.entry-validation.already-unpublished": "Вже скасовано публікацію",
80
+ "pages.ReleaseDetails.entry-validation.ready-to-unpublish": "Готово до скасування публікації",
81
+ "pages.ReleaseDetails.entry-validation.not-ready": "Не готово до публікації",
82
+ "pages.ReleaseDetails.groupBy.option.content-type": "Типи вмісту",
83
+ "pages.ReleaseDetails.groupBy.option.locales": "Локалі",
84
+ "pages.ReleaseDetails.groupBy.option.actions": "Дії",
85
+ "pages.ReleaseDetails.header-subtitle.scheduled": "Заплановано на {date} о {time} ({offset})",
86
+ "pages.ReleaseDetails.entry-validation.fields": "Поля",
87
+ "pages.Settings.releases.title": "Релізи",
88
+ "pages.Settings.releases.description": "Створюйте та керуйте оновленнями вмісту",
89
+ "pages.Settings.releases.timezone.label": "Часовий пояс за замовчуванням",
90
+ "pages.Settings.releases.setting.default-timezone-notification-success": "Часовий пояс за замовчуванням оновлено.",
91
+ "pages.ReleaseDetails.entry-validation.fields.error": "{errors} помилок у полях.",
92
+ "pages.ReleaseDetails.entry-validation.fields.success": "Всі поля заповнені правильно.",
93
+ "pages.ReleaseDetails.entry-validation.fields.see-errors": "Переглянути помилки",
94
+ "pages.ReleaseDetails.entry-validation.review-stage.not-enabled": "Цей запис не пов'язаний з жодним робочим процесом.",
95
+ "pages.ReleaseDetails.entry-validation.review-stage.not-ready": "Цей запис не на необхідному етапі для публікації. ({stageName})",
96
+ "pages.ReleaseDetails.entry-validation.review-stage.ready": "Цей запис на необхідному етапі для публікації. ({stageName})",
97
+ "pages.ReleaseDetails.entry-validation.review-stage.stage-not-required": "Необхідний етап для публікації відсутній."
98
+ };
99
+
100
+ export { uk as default };
101
+ //# sourceMappingURL=uk-Bp9HotPq.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uk-Bp9HotPq.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  require('@strapi/icons');
4
- var index = require('./chunks/index-1nn-zHX-.js');
4
+ var index = require('./chunks/index-BZaFIG8z.js');
5
5
  require('react/jsx-runtime');
6
6
  require('react');
7
7
  require('@strapi/admin/strapi-admin');
@@ -1,5 +1,5 @@
1
1
  import '@strapi/icons';
2
- export { m as default } from './chunks/index-BexsXldu.js';
2
+ export { m as default } from './chunks/index-DEy-8PzZ.mjs';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
5
5
  import '@strapi/admin/strapi-admin';