@strapi/content-releases 0.0.0-next.10e62155f737fd6e63fc8a032ef377bdbf764e76 → 0.0.0-next.1153e05e6e54eead0bff0656c85335cef8e9ccf0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs.map +1 -0
- package/dist/admin/pages/PurchaseContentReleases.js +4 -4
- package/dist/admin/pages/PurchaseContentReleases.js.map +1 -1
- package/dist/admin/pages/PurchaseContentReleases.mjs +4 -4
- package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -1
- package/dist/admin/pages/ReleasesPage.js +1 -0
- package/dist/admin/pages/ReleasesPage.js.map +1 -1
- package/dist/admin/pages/ReleasesPage.mjs +1 -0
- package/dist/admin/pages/ReleasesPage.mjs.map +1 -1
- package/dist/admin/pages/ReleasesSettingsPage.js +2 -1
- package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -1
- package/dist/admin/pages/ReleasesSettingsPage.mjs +2 -1
- package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -1
- package/package.json +14 -14
- package/dist/admin/assets/purchase-page-illustration-dark.svg.js +0 -6
- package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +0 -1
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +0 -4
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +0 -1
- package/dist/admin/assets/purchase-page-illustration-light.svg.js +0 -6
- package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +0 -1
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +0 -4
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PurchaseContentReleases.js","sources":["../../../admin/src/pages/PurchaseContentReleases.tsx"],"sourcesContent":["import { Layouts, RESPONSIVE_DEFAULT_SPACING } from '@strapi/admin/strapi-admin';\nimport { Box, Main, Flex, Typography, Grid, LinkButton } from '@strapi/design-system';\nimport { ExternalLink, Check, PaperPlane } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport darkIllustration from '../assets/purchase-page-illustration-dark.svg';\nimport lightIllustration from '../assets/purchase-page-illustration-light.svg';\nimport { useTypedSelector } from '../modules/hooks';\n\nconst PurchaseContentReleases = () => {\n const { formatMessage } = useIntl();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n\n const illustration = currentTheme === 'light' ? lightIllustration : darkIllustration;\n return (\n <Layouts.Root>\n <Main>\n <Layouts.Header\n title={formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n })}\n />\n <Box\n marginLeft={RESPONSIVE_DEFAULT_SPACING}\n marginRight={RESPONSIVE_DEFAULT_SPACING}\n shadow=\"filterShadow\"\n hasRadius\n background=\"neutral0\"\n borderColor={'neutral150'}\n overflow={'hidden'}\n >\n <Grid.Root>\n <Grid.Item col={6} s={12} alignItems={'flex-start'}>\n <Flex direction=\"column\" alignItems=\"flex-start\" padding={7} width={'100%'}>\n <Flex>\n <PaperPlane fill=\"primary600\" width={`24px`} height={`24px`} />\n </Flex>\n <Flex paddingTop={3} paddingBottom={4}>\n <Typography variant=\"beta\" fontWeight=\"bold\">\n {formatMessage({\n id: 'pages.PurchaseRelease.description',\n defaultMessage: 'Group content and publish updates together',\n })}\n </Typography>\n </Flex>\n\n <Flex direction=\"column\" alignItems={'flex-start'} gap={2}>\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks1',\n defaultMessage: 'Add many entries to releases',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks2',\n defaultMessage: 'Quickly identify entries containing errors',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks3',\n defaultMessage: 'Schedule their publication, or publish them manually',\n })}\n </Typography>\n </Flex>\n </Flex>\n\n <Flex gap={2} marginTop={7}>\n <LinkButton\n variant=\"default\"\n href=\"https://strapi.io/pricing-self-hosted?utm_campaign=In-Product-CTA&utm_source=Releases\"\n >\n {formatMessage({\n id: 'Settings.page.purchase.upgrade.cta',\n defaultMessage: 'Upgrade',\n })}\n </LinkButton>\n <LinkButton\n variant=\"tertiary\"\n endIcon={<ExternalLink />}\n href=\"https://strapi.io/features/releases?utm_campaign=In-Product-CTA&utm_source=Releases\"\n >\n {formatMessage({\n id: 'Settings.page.purchase.learn-more.cta',\n defaultMessage: 'Learn more',\n })}\n </LinkButton>\n </Flex>\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} s={12} background=\"primary100\" minHeight={'280px'}>\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n <img\n src={illustration}\n alt=\"purchase-page-content-releases-illustration\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n objectPosition: 'top left',\n }}\n />\n </div>\n </Grid.Item>\n </Grid.Root>\n </Box>\n </Main>\n </Layouts.Root>\n );\n};\n\nexport { PurchaseContentReleases };\n"],"names":["PurchaseContentReleases","formatMessage","useIntl","currentTheme","useTypedSelector","state","admin_app","theme","illustration","lightIllustration","darkIllustration","_jsx","Layouts","Root","_jsxs","Main","Header","title","id","defaultMessage","Box","marginLeft","RESPONSIVE_DEFAULT_SPACING","marginRight","shadow","hasRadius","background","borderColor","overflow","Grid","Item","col","s","alignItems","Flex","direction","padding","width","PaperPlane","fill","height","paddingTop","paddingBottom","Typography","variant","fontWeight","gap","Check","style","flexShrink","textColor","marginTop","LinkButton","href","endIcon","ExternalLink","minHeight","div","position","img","src","alt","top","left","objectFit","objectPosition"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PurchaseContentReleases.js","sources":["../../../admin/src/pages/PurchaseContentReleases.tsx"],"sourcesContent":["import { Layouts, RESPONSIVE_DEFAULT_SPACING } from '@strapi/admin/strapi-admin';\nimport { Box, Main, Flex, Typography, Grid, LinkButton } from '@strapi/design-system';\nimport { ExternalLink, Check, PaperPlane } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport darkIllustration from '../assets/purchase-page-illustration-dark.jpg';\nimport lightIllustration from '../assets/purchase-page-illustration-light.jpg';\nimport { useTypedSelector } from '../modules/hooks';\n\nconst PurchaseContentReleases = () => {\n const { formatMessage } = useIntl();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n\n const illustration = currentTheme === 'light' ? lightIllustration : darkIllustration;\n return (\n <Layouts.Root>\n <Main>\n <Layouts.Header\n title={formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n })}\n />\n <Box\n marginLeft={RESPONSIVE_DEFAULT_SPACING}\n marginRight={RESPONSIVE_DEFAULT_SPACING}\n shadow=\"filterShadow\"\n hasRadius\n background=\"neutral0\"\n borderColor={'neutral150'}\n overflow={'hidden'}\n >\n <Grid.Root>\n <Grid.Item col={6} xs={12} alignItems={'flex-start'}>\n <Flex direction=\"column\" alignItems=\"flex-start\" padding={7} width={'100%'}>\n <Flex>\n <PaperPlane fill=\"primary600\" width={`24px`} height={`24px`} />\n </Flex>\n <Flex paddingTop={3} paddingBottom={4}>\n <Typography variant=\"beta\" fontWeight=\"bold\">\n {formatMessage({\n id: 'pages.PurchaseRelease.description',\n defaultMessage: 'Group content and publish updates together',\n })}\n </Typography>\n </Flex>\n\n <Flex direction=\"column\" alignItems={'flex-start'} gap={2}>\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks1',\n defaultMessage: 'Add many entries to releases',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks2',\n defaultMessage: 'Quickly identify entries containing errors',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks3',\n defaultMessage: 'Schedule their publication, or publish them manually',\n })}\n </Typography>\n </Flex>\n </Flex>\n\n <Flex gap={2} marginTop={7}>\n <LinkButton\n variant=\"default\"\n href=\"https://strapi.io/pricing-self-hosted?utm_campaign=In-Product-CTA&utm_source=Releases\"\n >\n {formatMessage({\n id: 'Settings.page.purchase.upgrade.cta',\n defaultMessage: 'Upgrade',\n })}\n </LinkButton>\n <LinkButton\n variant=\"tertiary\"\n endIcon={<ExternalLink />}\n href=\"https://strapi.io/features/releases?utm_campaign=In-Product-CTA&utm_source=Releases\"\n >\n {formatMessage({\n id: 'Settings.page.purchase.learn-more.cta',\n defaultMessage: 'Learn more',\n })}\n </LinkButton>\n </Flex>\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} xs={12} background=\"primary100\" minHeight={'280px'}>\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n <img\n src={illustration}\n alt=\"purchase-page-content-releases-illustration\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n objectPosition: 'top left',\n }}\n />\n </div>\n </Grid.Item>\n </Grid.Root>\n </Box>\n </Main>\n </Layouts.Root>\n );\n};\n\nexport { PurchaseContentReleases };\n"],"names":["PurchaseContentReleases","formatMessage","useIntl","currentTheme","useTypedSelector","state","admin_app","theme","illustration","lightIllustration","darkIllustration","_jsx","Layouts","Root","_jsxs","Main","Header","title","id","defaultMessage","Box","marginLeft","RESPONSIVE_DEFAULT_SPACING","marginRight","shadow","hasRadius","background","borderColor","overflow","Grid","Item","col","xs","alignItems","Flex","direction","padding","width","PaperPlane","fill","height","paddingTop","paddingBottom","Typography","variant","fontWeight","gap","Check","style","flexShrink","textColor","marginTop","LinkButton","href","endIcon","ExternalLink","minHeight","div","position","img","src","alt","top","left","objectFit","objectPosition"],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { Layouts, RESPONSIVE_DEFAULT_SPACING } from '@strapi/admin/strapi-admin'
|
|
|
3
3
|
import { Main, Box, Grid, Flex, Typography, LinkButton } from '@strapi/design-system';
|
|
4
4
|
import { PaperPlane, Check, ExternalLink } from '@strapi/icons';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
|
-
import img$1 from '../assets/purchase-page-illustration-dark.
|
|
7
|
-
import img from '../assets/purchase-page-illustration-light.
|
|
6
|
+
import img$1 from '../assets/purchase-page-illustration-dark.jpg.mjs';
|
|
7
|
+
import img from '../assets/purchase-page-illustration-light.jpg.mjs';
|
|
8
8
|
import { useTypedSelector } from '../modules/hooks.mjs';
|
|
9
9
|
|
|
10
10
|
const PurchaseContentReleases = ()=>{
|
|
@@ -32,7 +32,7 @@ const PurchaseContentReleases = ()=>{
|
|
|
32
32
|
children: [
|
|
33
33
|
/*#__PURE__*/ jsx(Grid.Item, {
|
|
34
34
|
col: 6,
|
|
35
|
-
|
|
35
|
+
xs: 12,
|
|
36
36
|
alignItems: 'flex-start',
|
|
37
37
|
children: /*#__PURE__*/ jsxs(Flex, {
|
|
38
38
|
direction: "column",
|
|
@@ -154,7 +154,7 @@ const PurchaseContentReleases = ()=>{
|
|
|
154
154
|
}),
|
|
155
155
|
/*#__PURE__*/ jsx(Grid.Item, {
|
|
156
156
|
col: 6,
|
|
157
|
-
|
|
157
|
+
xs: 12,
|
|
158
158
|
background: "primary100",
|
|
159
159
|
minHeight: '280px',
|
|
160
160
|
children: /*#__PURE__*/ jsx("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PurchaseContentReleases.mjs","sources":["../../../admin/src/pages/PurchaseContentReleases.tsx"],"sourcesContent":["import { Layouts, RESPONSIVE_DEFAULT_SPACING } from '@strapi/admin/strapi-admin';\nimport { Box, Main, Flex, Typography, Grid, LinkButton } from '@strapi/design-system';\nimport { ExternalLink, Check, PaperPlane } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport darkIllustration from '../assets/purchase-page-illustration-dark.svg';\nimport lightIllustration from '../assets/purchase-page-illustration-light.svg';\nimport { useTypedSelector } from '../modules/hooks';\n\nconst PurchaseContentReleases = () => {\n const { formatMessage } = useIntl();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n\n const illustration = currentTheme === 'light' ? lightIllustration : darkIllustration;\n return (\n <Layouts.Root>\n <Main>\n <Layouts.Header\n title={formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n })}\n />\n <Box\n marginLeft={RESPONSIVE_DEFAULT_SPACING}\n marginRight={RESPONSIVE_DEFAULT_SPACING}\n shadow=\"filterShadow\"\n hasRadius\n background=\"neutral0\"\n borderColor={'neutral150'}\n overflow={'hidden'}\n >\n <Grid.Root>\n <Grid.Item col={6} s={12} alignItems={'flex-start'}>\n <Flex direction=\"column\" alignItems=\"flex-start\" padding={7} width={'100%'}>\n <Flex>\n <PaperPlane fill=\"primary600\" width={`24px`} height={`24px`} />\n </Flex>\n <Flex paddingTop={3} paddingBottom={4}>\n <Typography variant=\"beta\" fontWeight=\"bold\">\n {formatMessage({\n id: 'pages.PurchaseRelease.description',\n defaultMessage: 'Group content and publish updates together',\n })}\n </Typography>\n </Flex>\n\n <Flex direction=\"column\" alignItems={'flex-start'} gap={2}>\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks1',\n defaultMessage: 'Add many entries to releases',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks2',\n defaultMessage: 'Quickly identify entries containing errors',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks3',\n defaultMessage: 'Schedule their publication, or publish them manually',\n })}\n </Typography>\n </Flex>\n </Flex>\n\n <Flex gap={2} marginTop={7}>\n <LinkButton\n variant=\"default\"\n href=\"https://strapi.io/pricing-self-hosted?utm_campaign=In-Product-CTA&utm_source=Releases\"\n >\n {formatMessage({\n id: 'Settings.page.purchase.upgrade.cta',\n defaultMessage: 'Upgrade',\n })}\n </LinkButton>\n <LinkButton\n variant=\"tertiary\"\n endIcon={<ExternalLink />}\n href=\"https://strapi.io/features/releases?utm_campaign=In-Product-CTA&utm_source=Releases\"\n >\n {formatMessage({\n id: 'Settings.page.purchase.learn-more.cta',\n defaultMessage: 'Learn more',\n })}\n </LinkButton>\n </Flex>\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} s={12} background=\"primary100\" minHeight={'280px'}>\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n <img\n src={illustration}\n alt=\"purchase-page-content-releases-illustration\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n objectPosition: 'top left',\n }}\n />\n </div>\n </Grid.Item>\n </Grid.Root>\n </Box>\n </Main>\n </Layouts.Root>\n );\n};\n\nexport { PurchaseContentReleases };\n"],"names":["PurchaseContentReleases","formatMessage","useIntl","currentTheme","useTypedSelector","state","admin_app","theme","illustration","lightIllustration","darkIllustration","_jsx","Layouts","Root","_jsxs","Main","Header","title","id","defaultMessage","Box","marginLeft","RESPONSIVE_DEFAULT_SPACING","marginRight","shadow","hasRadius","background","borderColor","overflow","Grid","Item","col","s","alignItems","Flex","direction","padding","width","PaperPlane","fill","height","paddingTop","paddingBottom","Typography","variant","fontWeight","gap","Check","style","flexShrink","textColor","marginTop","LinkButton","href","endIcon","ExternalLink","minHeight","div","position","img","src","alt","top","left","objectFit","objectPosition"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PurchaseContentReleases.mjs","sources":["../../../admin/src/pages/PurchaseContentReleases.tsx"],"sourcesContent":["import { Layouts, RESPONSIVE_DEFAULT_SPACING } from '@strapi/admin/strapi-admin';\nimport { Box, Main, Flex, Typography, Grid, LinkButton } from '@strapi/design-system';\nimport { ExternalLink, Check, PaperPlane } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport darkIllustration from '../assets/purchase-page-illustration-dark.jpg';\nimport lightIllustration from '../assets/purchase-page-illustration-light.jpg';\nimport { useTypedSelector } from '../modules/hooks';\n\nconst PurchaseContentReleases = () => {\n const { formatMessage } = useIntl();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n\n const illustration = currentTheme === 'light' ? lightIllustration : darkIllustration;\n return (\n <Layouts.Root>\n <Main>\n <Layouts.Header\n title={formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n })}\n />\n <Box\n marginLeft={RESPONSIVE_DEFAULT_SPACING}\n marginRight={RESPONSIVE_DEFAULT_SPACING}\n shadow=\"filterShadow\"\n hasRadius\n background=\"neutral0\"\n borderColor={'neutral150'}\n overflow={'hidden'}\n >\n <Grid.Root>\n <Grid.Item col={6} xs={12} alignItems={'flex-start'}>\n <Flex direction=\"column\" alignItems=\"flex-start\" padding={7} width={'100%'}>\n <Flex>\n <PaperPlane fill=\"primary600\" width={`24px`} height={`24px`} />\n </Flex>\n <Flex paddingTop={3} paddingBottom={4}>\n <Typography variant=\"beta\" fontWeight=\"bold\">\n {formatMessage({\n id: 'pages.PurchaseRelease.description',\n defaultMessage: 'Group content and publish updates together',\n })}\n </Typography>\n </Flex>\n\n <Flex direction=\"column\" alignItems={'flex-start'} gap={2}>\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks1',\n defaultMessage: 'Add many entries to releases',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks2',\n defaultMessage: 'Quickly identify entries containing errors',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={2}>\n <Check\n fill=\"success500\"\n width={`16px`}\n height={`16px`}\n style={{ flexShrink: 0 }}\n />\n <Typography textColor=\"neutral700\">\n {formatMessage({\n id: 'pages.PurchaseRelease.perks3',\n defaultMessage: 'Schedule their publication, or publish them manually',\n })}\n </Typography>\n </Flex>\n </Flex>\n\n <Flex gap={2} marginTop={7}>\n <LinkButton\n variant=\"default\"\n href=\"https://strapi.io/pricing-self-hosted?utm_campaign=In-Product-CTA&utm_source=Releases\"\n >\n {formatMessage({\n id: 'Settings.page.purchase.upgrade.cta',\n defaultMessage: 'Upgrade',\n })}\n </LinkButton>\n <LinkButton\n variant=\"tertiary\"\n endIcon={<ExternalLink />}\n href=\"https://strapi.io/features/releases?utm_campaign=In-Product-CTA&utm_source=Releases\"\n >\n {formatMessage({\n id: 'Settings.page.purchase.learn-more.cta',\n defaultMessage: 'Learn more',\n })}\n </LinkButton>\n </Flex>\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} xs={12} background=\"primary100\" minHeight={'280px'}>\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n <img\n src={illustration}\n alt=\"purchase-page-content-releases-illustration\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n objectPosition: 'top left',\n }}\n />\n </div>\n </Grid.Item>\n </Grid.Root>\n </Box>\n </Main>\n </Layouts.Root>\n );\n};\n\nexport { PurchaseContentReleases };\n"],"names":["PurchaseContentReleases","formatMessage","useIntl","currentTheme","useTypedSelector","state","admin_app","theme","illustration","lightIllustration","darkIllustration","_jsx","Layouts","Root","_jsxs","Main","Header","title","id","defaultMessage","Box","marginLeft","RESPONSIVE_DEFAULT_SPACING","marginRight","shadow","hasRadius","background","borderColor","overflow","Grid","Item","col","xs","alignItems","Flex","direction","padding","width","PaperPlane","fill","height","paddingTop","paddingBottom","Typography","variant","fontWeight","gap","Check","style","flexShrink","textColor","marginTop","LinkButton","href","endIcon","ExternalLink","minHeight","div","position","img","src","alt","top","left","objectFit","objectPosition"],"mappings":"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"}
|
|
@@ -282,6 +282,7 @@ const ReleasesPage = ()=>{
|
|
|
282
282
|
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
|
|
283
283
|
onClick: toggleAddReleaseModal,
|
|
284
284
|
disabled: hasReachedMaximumPendingReleases,
|
|
285
|
+
fullWidth: true,
|
|
285
286
|
children: formatMessage({
|
|
286
287
|
id: 'content-releases.header.actions.add-release',
|
|
287
288
|
defaultMessage: 'New release'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReleasesPage.js","sources":["../../../admin/src/pages/ReleasesPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n useTracking,\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport {\n Alert,\n Badge,\n Box,\n Button,\n Divider,\n EmptyStateLayout,\n Flex,\n Grid,\n Main,\n Tabs,\n Typography,\n Link,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { format } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useLocation, NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetReleases, type Release } from '../../../shared/contracts/releases';\nimport { RelativeTime as BaseRelativeTime } from '../components/RelativeTime';\nimport { ReleaseModal, FormValues } from '../components/ReleaseModal';\nimport { PERMISSIONS } from '../constants';\nimport {\n useGetReleasesQuery,\n useGetReleaseSettingsQuery,\n GetReleasesQueryParams,\n useCreateReleaseMutation,\n} from '../services/release';\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesGrid\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleasesGridProps {\n sectionTitle: 'pending' | 'done';\n releases?: GetReleases.Response['data'];\n isError?: boolean;\n}\n\nconst LinkCard = styled(Link)`\n display: block;\n`;\n\nconst RelativeTime = styled(BaseRelativeTime)`\n display: inline-block;\n &::first-letter {\n text-transform: uppercase;\n }\n`;\n\nconst getBadgeProps = (status: Release['status']) => {\n let color;\n switch (status) {\n case 'ready':\n color = 'success';\n break;\n case 'blocked':\n color = 'warning';\n break;\n case 'failed':\n color = 'danger';\n break;\n case 'done':\n color = 'primary';\n break;\n case 'empty':\n default:\n color = 'neutral';\n }\n\n return {\n textColor: `${color}600`,\n backgroundColor: `${color}100`,\n borderColor: `${color}200`,\n };\n};\n\nconst ReleasesGrid = ({ sectionTitle, releases = [], isError = false }: ReleasesGridProps) => {\n const { formatMessage } = useIntl();\n\n if (isError) {\n return <Page.Error />;\n }\n\n if (releases?.length === 0) {\n return (\n <EmptyStateLayout\n content={formatMessage(\n {\n id: 'content-releases.page.Releases.tab.emptyEntries',\n defaultMessage: 'No releases',\n },\n {\n target: sectionTitle,\n }\n )}\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {releases.map(({ id, name, scheduledAt, status }) => (\n <Grid.Item col={3} s={6} xs={12} key={id} direction=\"column\" alignItems=\"stretch\">\n <LinkCard tag={NavLink} to={`${id}`} isExternal={false}>\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n padding={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n width=\"100%\"\n alignItems=\"start\"\n gap={4}\n >\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography textColor=\"neutral800\" tag=\"h3\" variant=\"delta\" fontWeight=\"bold\">\n {name}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {scheduledAt ? (\n <RelativeTime timestamp={new Date(scheduledAt)} />\n ) : (\n formatMessage({\n id: 'content-releases.pages.Releases.not-scheduled',\n defaultMessage: 'Not scheduled',\n })\n )}\n </Typography>\n </Flex>\n <Badge {...getBadgeProps(status)}>{status}</Badge>\n </Flex>\n </LinkCard>\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledAlert = styled(Alert)`\n button {\n display: none;\n }\n p + div {\n margin-left: auto;\n }\n`;\n\nconst INITIAL_FORM_VALUES = {\n name: '',\n date: format(new Date(), 'yyyy-MM-dd'),\n time: '',\n isScheduled: true,\n scheduledAt: null,\n timezone: null,\n} satisfies FormValues;\n\nconst ReleasesPage = () => {\n const location = useLocation();\n const [releaseModalShown, setReleaseModalShown] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }, setQuery] = useQueryParams<GetReleasesQueryParams>();\n const response = useGetReleasesQuery(query);\n const { data, isLoading: isLoadingSettings } = useGetReleaseSettingsQuery();\n const [createRelease, { isLoading: isSubmittingForm }] = useCreateReleaseMutation();\n const { getFeature } = useLicenseLimits();\n const { maximumReleases = 3 } = getFeature('cms-content-releases') as {\n maximumReleases: number;\n };\n const { trackUsage } = useTracking();\n const {\n allowedActions: { canCreate },\n } = useRBAC(PERMISSIONS);\n\n const { isLoading: isLoadingReleases, isSuccess, isError } = response;\n const activeTab = response?.currentData?.meta?.activeTab || 'pending';\n\n // Check if we have some errors and show a notification to the user to explain the error\n React.useEffect(() => {\n if (location?.state?.errors) {\n toggleNotification({\n type: 'danger',\n title: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.title',\n defaultMessage: 'Your request could not be processed.',\n }),\n message: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.message',\n defaultMessage: 'Please try again or open another release.',\n }),\n });\n navigate('', { replace: true, state: null });\n }\n }, [formatMessage, location?.state?.errors, navigate, toggleNotification]);\n\n const toggleAddReleaseModal = () => {\n setReleaseModalShown((prev) => !prev);\n };\n\n if (isLoadingReleases || isLoadingSettings) {\n return <Page.Loading />;\n }\n\n const totalPendingReleases = (isSuccess && response.currentData?.meta?.pendingReleasesCount) || 0;\n const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;\n\n const handleTabChange = (tabValue: string) => {\n setQuery({\n ...query,\n page: 1,\n pageSize: response?.currentData?.meta?.pagination?.pageSize || 16,\n filters: {\n releasedAt: {\n $notNull: tabValue !== 'pending',\n },\n },\n });\n };\n\n const handleAddRelease = async ({ name, scheduledAt, timezone }: FormValues) => {\n const response = await createRelease({\n name,\n scheduledAt,\n timezone,\n });\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.modal.release-created-notification-success',\n defaultMessage: 'Release created.',\n }),\n });\n\n trackUsage('didCreateRelease');\n navigate(response.data.data.id.toString());\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Layouts.Root>\n <Main aria-busy={isLoadingReleases || isLoadingSettings}>\n <Layouts.Header\n title={formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={formatMessage({\n id: 'content-releases.pages.Releases.header-subtitle',\n defaultMessage: 'Create and manage content updates',\n })}\n primaryAction={\n canCreate ? (\n <Button\n startIcon={<Plus />}\n onClick={toggleAddReleaseModal}\n disabled={hasReachedMaximumPendingReleases}\n >\n {formatMessage({\n id: 'content-releases.header.actions.add-release',\n defaultMessage: 'New release',\n })}\n </Button>\n ) : null\n }\n />\n <Layouts.Content>\n <>\n {hasReachedMaximumPendingReleases && (\n <StyledAlert\n marginBottom={6}\n action={\n <Link href=\"https://strapi.io/pricing-cloud\" isExternal>\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.action',\n defaultMessage: 'Explore plans',\n })}\n </Link>\n }\n title={formatMessage(\n {\n id: 'content-releases.pages.Releases.max-limit-reached.title',\n defaultMessage:\n 'You have reached the {number} pending {number, plural, one {release} other {releases}} limit.',\n },\n { number: maximumReleases }\n )}\n onClose={() => {}}\n closeLabel=\"\"\n >\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.message',\n defaultMessage: 'Upgrade to manage an unlimited number of releases.',\n })}\n </StyledAlert>\n )}\n <Tabs.Root variant=\"simple\" onValueChange={handleTabChange} value={activeTab}>\n <Box paddingBottom={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'content-releases.pages.Releases.tab-group.label',\n defaultMessage: 'Releases list',\n })}\n >\n <Tabs.Trigger value=\"pending\">\n {formatMessage(\n {\n id: 'content-releases.pages.Releases.tab.pending',\n defaultMessage: 'Pending ({count})',\n },\n {\n count: totalPendingReleases,\n }\n )}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"done\">\n {formatMessage({\n id: 'content-releases.pages.Releases.tab.done',\n defaultMessage: 'Done',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n <Divider />\n </Box>\n {/* Pending releases */}\n <Tabs.Content value=\"pending\">\n <ReleasesGrid\n sectionTitle=\"pending\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n {/* Done releases */}\n <Tabs.Content value=\"done\">\n <ReleasesGrid\n sectionTitle=\"done\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n </Tabs.Root>\n <Pagination.Root\n {...response?.currentData?.meta?.pagination}\n defaultPageSize={response?.currentData?.meta?.pagination?.pageSize}\n >\n <Pagination.PageSize options={['8', '16', '32', '64']} />\n <Pagination.Links />\n </Pagination.Root>\n </>\n </Layouts.Content>\n <ReleaseModal\n open={releaseModalShown}\n handleClose={toggleAddReleaseModal}\n handleSubmit={handleAddRelease}\n isLoading={isSubmittingForm}\n initialValues={{\n ...INITIAL_FORM_VALUES,\n timezone: data?.data.defaultTimezone ? data.data.defaultTimezone.split('&')[1] : null,\n }}\n />\n </Main>\n </Layouts.Root>\n );\n};\n\nexport { ReleasesPage, getBadgeProps };\n"],"names":["LinkCard","styled","Link","RelativeTime","BaseRelativeTime","getBadgeProps","status","color","textColor","backgroundColor","borderColor","ReleasesGrid","sectionTitle","releases","isError","formatMessage","useIntl","_jsx","Page","Error","length","EmptyStateLayout","content","id","defaultMessage","target","icon","EmptyDocuments","width","Grid","Root","gap","map","name","scheduledAt","Item","col","s","xs","direction","alignItems","tag","NavLink","to","isExternal","_jsxs","Flex","justifyContent","padding","hasRadius","background","shadow","height","Typography","variant","fontWeight","timestamp","Date","Badge","StyledAlert","Alert","INITIAL_FORM_VALUES","date","format","time","isScheduled","timezone","ReleasesPage","location","useLocation","releaseModalShown","setReleaseModalShown","React","useState","toggleNotification","useNotification","navigate","useNavigate","formatAPIError","useAPIErrorHandler","query","setQuery","useQueryParams","response","useGetReleasesQuery","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","createRelease","isSubmittingForm","useCreateReleaseMutation","getFeature","useLicenseLimits","maximumReleases","trackUsage","useTracking","allowedActions","canCreate","useRBAC","PERMISSIONS","isLoadingReleases","isSuccess","activeTab","currentData","meta","useEffect","state","errors","type","title","message","replace","toggleAddReleaseModal","prev","Loading","totalPendingReleases","pendingReleasesCount","hasReachedMaximumPendingReleases","handleTabChange","tabValue","page","pageSize","pagination","filters","releasedAt","$notNull","handleAddRelease","toString","isFetchError","error","Layouts","Main","aria-busy","Header","secondaryAction","GradientBadge","label","subtitle","primaryAction","Button","startIcon","Plus","onClick","disabled","Content","_Fragment","marginBottom","action","href","number","onClose","closeLabel","Tabs","onValueChange","value","Box","paddingBottom","List","aria-label","Trigger","count","Divider","Pagination","defaultPageSize","PageSize","options","Links","ReleaseModal","open","handleClose","handleSubmit","initialValues","defaultTimezone","split"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReleasesPage.js","sources":["../../../admin/src/pages/ReleasesPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n useTracking,\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport {\n Alert,\n Badge,\n Box,\n Button,\n Divider,\n EmptyStateLayout,\n Flex,\n Grid,\n Main,\n Tabs,\n Typography,\n Link,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { format } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useLocation, NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetReleases, type Release } from '../../../shared/contracts/releases';\nimport { RelativeTime as BaseRelativeTime } from '../components/RelativeTime';\nimport { ReleaseModal, FormValues } from '../components/ReleaseModal';\nimport { PERMISSIONS } from '../constants';\nimport {\n useGetReleasesQuery,\n useGetReleaseSettingsQuery,\n GetReleasesQueryParams,\n useCreateReleaseMutation,\n} from '../services/release';\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesGrid\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleasesGridProps {\n sectionTitle: 'pending' | 'done';\n releases?: GetReleases.Response['data'];\n isError?: boolean;\n}\n\nconst LinkCard = styled(Link)`\n display: block;\n`;\n\nconst RelativeTime = styled(BaseRelativeTime)`\n display: inline-block;\n &::first-letter {\n text-transform: uppercase;\n }\n`;\n\nconst getBadgeProps = (status: Release['status']) => {\n let color;\n switch (status) {\n case 'ready':\n color = 'success';\n break;\n case 'blocked':\n color = 'warning';\n break;\n case 'failed':\n color = 'danger';\n break;\n case 'done':\n color = 'primary';\n break;\n case 'empty':\n default:\n color = 'neutral';\n }\n\n return {\n textColor: `${color}600`,\n backgroundColor: `${color}100`,\n borderColor: `${color}200`,\n };\n};\n\nconst ReleasesGrid = ({ sectionTitle, releases = [], isError = false }: ReleasesGridProps) => {\n const { formatMessage } = useIntl();\n\n if (isError) {\n return <Page.Error />;\n }\n\n if (releases?.length === 0) {\n return (\n <EmptyStateLayout\n content={formatMessage(\n {\n id: 'content-releases.page.Releases.tab.emptyEntries',\n defaultMessage: 'No releases',\n },\n {\n target: sectionTitle,\n }\n )}\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {releases.map(({ id, name, scheduledAt, status }) => (\n <Grid.Item col={3} s={6} xs={12} key={id} direction=\"column\" alignItems=\"stretch\">\n <LinkCard tag={NavLink} to={`${id}`} isExternal={false}>\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n padding={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n width=\"100%\"\n alignItems=\"start\"\n gap={4}\n >\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography textColor=\"neutral800\" tag=\"h3\" variant=\"delta\" fontWeight=\"bold\">\n {name}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {scheduledAt ? (\n <RelativeTime timestamp={new Date(scheduledAt)} />\n ) : (\n formatMessage({\n id: 'content-releases.pages.Releases.not-scheduled',\n defaultMessage: 'Not scheduled',\n })\n )}\n </Typography>\n </Flex>\n <Badge {...getBadgeProps(status)}>{status}</Badge>\n </Flex>\n </LinkCard>\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledAlert = styled(Alert)`\n button {\n display: none;\n }\n p + div {\n margin-left: auto;\n }\n`;\n\nconst INITIAL_FORM_VALUES = {\n name: '',\n date: format(new Date(), 'yyyy-MM-dd'),\n time: '',\n isScheduled: true,\n scheduledAt: null,\n timezone: null,\n} satisfies FormValues;\n\nconst ReleasesPage = () => {\n const location = useLocation();\n const [releaseModalShown, setReleaseModalShown] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }, setQuery] = useQueryParams<GetReleasesQueryParams>();\n const response = useGetReleasesQuery(query);\n const { data, isLoading: isLoadingSettings } = useGetReleaseSettingsQuery();\n const [createRelease, { isLoading: isSubmittingForm }] = useCreateReleaseMutation();\n const { getFeature } = useLicenseLimits();\n const { maximumReleases = 3 } = getFeature('cms-content-releases') as {\n maximumReleases: number;\n };\n const { trackUsage } = useTracking();\n const {\n allowedActions: { canCreate },\n } = useRBAC(PERMISSIONS);\n\n const { isLoading: isLoadingReleases, isSuccess, isError } = response;\n const activeTab = response?.currentData?.meta?.activeTab || 'pending';\n\n // Check if we have some errors and show a notification to the user to explain the error\n React.useEffect(() => {\n if (location?.state?.errors) {\n toggleNotification({\n type: 'danger',\n title: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.title',\n defaultMessage: 'Your request could not be processed.',\n }),\n message: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.message',\n defaultMessage: 'Please try again or open another release.',\n }),\n });\n navigate('', { replace: true, state: null });\n }\n }, [formatMessage, location?.state?.errors, navigate, toggleNotification]);\n\n const toggleAddReleaseModal = () => {\n setReleaseModalShown((prev) => !prev);\n };\n\n if (isLoadingReleases || isLoadingSettings) {\n return <Page.Loading />;\n }\n\n const totalPendingReleases = (isSuccess && response.currentData?.meta?.pendingReleasesCount) || 0;\n const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;\n\n const handleTabChange = (tabValue: string) => {\n setQuery({\n ...query,\n page: 1,\n pageSize: response?.currentData?.meta?.pagination?.pageSize || 16,\n filters: {\n releasedAt: {\n $notNull: tabValue !== 'pending',\n },\n },\n });\n };\n\n const handleAddRelease = async ({ name, scheduledAt, timezone }: FormValues) => {\n const response = await createRelease({\n name,\n scheduledAt,\n timezone,\n });\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.modal.release-created-notification-success',\n defaultMessage: 'Release created.',\n }),\n });\n\n trackUsage('didCreateRelease');\n navigate(response.data.data.id.toString());\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Layouts.Root>\n <Main aria-busy={isLoadingReleases || isLoadingSettings}>\n <Layouts.Header\n title={formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={formatMessage({\n id: 'content-releases.pages.Releases.header-subtitle',\n defaultMessage: 'Create and manage content updates',\n })}\n primaryAction={\n canCreate ? (\n <Button\n startIcon={<Plus />}\n onClick={toggleAddReleaseModal}\n disabled={hasReachedMaximumPendingReleases}\n fullWidth\n >\n {formatMessage({\n id: 'content-releases.header.actions.add-release',\n defaultMessage: 'New release',\n })}\n </Button>\n ) : null\n }\n />\n <Layouts.Content>\n <>\n {hasReachedMaximumPendingReleases && (\n <StyledAlert\n marginBottom={6}\n action={\n <Link href=\"https://strapi.io/pricing-cloud\" isExternal>\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.action',\n defaultMessage: 'Explore plans',\n })}\n </Link>\n }\n title={formatMessage(\n {\n id: 'content-releases.pages.Releases.max-limit-reached.title',\n defaultMessage:\n 'You have reached the {number} pending {number, plural, one {release} other {releases}} limit.',\n },\n { number: maximumReleases }\n )}\n onClose={() => {}}\n closeLabel=\"\"\n >\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.message',\n defaultMessage: 'Upgrade to manage an unlimited number of releases.',\n })}\n </StyledAlert>\n )}\n <Tabs.Root variant=\"simple\" onValueChange={handleTabChange} value={activeTab}>\n <Box paddingBottom={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'content-releases.pages.Releases.tab-group.label',\n defaultMessage: 'Releases list',\n })}\n >\n <Tabs.Trigger value=\"pending\">\n {formatMessage(\n {\n id: 'content-releases.pages.Releases.tab.pending',\n defaultMessage: 'Pending ({count})',\n },\n {\n count: totalPendingReleases,\n }\n )}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"done\">\n {formatMessage({\n id: 'content-releases.pages.Releases.tab.done',\n defaultMessage: 'Done',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n <Divider />\n </Box>\n {/* Pending releases */}\n <Tabs.Content value=\"pending\">\n <ReleasesGrid\n sectionTitle=\"pending\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n {/* Done releases */}\n <Tabs.Content value=\"done\">\n <ReleasesGrid\n sectionTitle=\"done\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n </Tabs.Root>\n <Pagination.Root\n {...response?.currentData?.meta?.pagination}\n defaultPageSize={response?.currentData?.meta?.pagination?.pageSize}\n >\n <Pagination.PageSize options={['8', '16', '32', '64']} />\n <Pagination.Links />\n </Pagination.Root>\n </>\n </Layouts.Content>\n <ReleaseModal\n open={releaseModalShown}\n handleClose={toggleAddReleaseModal}\n handleSubmit={handleAddRelease}\n isLoading={isSubmittingForm}\n initialValues={{\n ...INITIAL_FORM_VALUES,\n timezone: data?.data.defaultTimezone ? data.data.defaultTimezone.split('&')[1] : null,\n }}\n />\n </Main>\n </Layouts.Root>\n );\n};\n\nexport { ReleasesPage, getBadgeProps };\n"],"names":["LinkCard","styled","Link","RelativeTime","BaseRelativeTime","getBadgeProps","status","color","textColor","backgroundColor","borderColor","ReleasesGrid","sectionTitle","releases","isError","formatMessage","useIntl","_jsx","Page","Error","length","EmptyStateLayout","content","id","defaultMessage","target","icon","EmptyDocuments","width","Grid","Root","gap","map","name","scheduledAt","Item","col","s","xs","direction","alignItems","tag","NavLink","to","isExternal","_jsxs","Flex","justifyContent","padding","hasRadius","background","shadow","height","Typography","variant","fontWeight","timestamp","Date","Badge","StyledAlert","Alert","INITIAL_FORM_VALUES","date","format","time","isScheduled","timezone","ReleasesPage","location","useLocation","releaseModalShown","setReleaseModalShown","React","useState","toggleNotification","useNotification","navigate","useNavigate","formatAPIError","useAPIErrorHandler","query","setQuery","useQueryParams","response","useGetReleasesQuery","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","createRelease","isSubmittingForm","useCreateReleaseMutation","getFeature","useLicenseLimits","maximumReleases","trackUsage","useTracking","allowedActions","canCreate","useRBAC","PERMISSIONS","isLoadingReleases","isSuccess","activeTab","currentData","meta","useEffect","state","errors","type","title","message","replace","toggleAddReleaseModal","prev","Loading","totalPendingReleases","pendingReleasesCount","hasReachedMaximumPendingReleases","handleTabChange","tabValue","page","pageSize","pagination","filters","releasedAt","$notNull","handleAddRelease","toString","isFetchError","error","Layouts","Main","aria-busy","Header","secondaryAction","GradientBadge","label","subtitle","primaryAction","Button","startIcon","Plus","onClick","disabled","fullWidth","Content","_Fragment","marginBottom","action","href","number","onClose","closeLabel","Tabs","onValueChange","value","Box","paddingBottom","List","aria-label","Trigger","count","Divider","Pagination","defaultPageSize","PageSize","options","Links","ReleaseModal","open","handleClose","handleSubmit","initialValues","defaultTimezone","split"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,MAAMA,QAAAA,GAAWC,uBAAOC,CAAAA,iBAAAA,CAAK;;AAE7B,CAAC;AAED,MAAMC,YAAAA,GAAeF,uBAAOG,CAAAA,2BAAAA,CAAiB;;;;;AAK7C,CAAC;AAED,MAAMC,gBAAgB,CAACC,MAAAA,GAAAA;IACrB,IAAIC,KAAAA;IACJ,OAAQD,MAAAA;QACN,KAAK,OAAA;YACHC,KAAQ,GAAA,SAAA;AACR,YAAA;QACF,KAAK,SAAA;YACHA,KAAQ,GAAA,SAAA;AACR,YAAA;QACF,KAAK,QAAA;YACHA,KAAQ,GAAA,QAAA;AACR,YAAA;QACF,KAAK,MAAA;YACHA,KAAQ,GAAA,SAAA;AACR,YAAA;QACF,KAAK,OAAA;AACL,QAAA;YACEA,KAAQ,GAAA,SAAA;AACZ;IAEA,OAAO;QACLC,SAAW,EAAA,CAAA,EAAGD,KAAM,CAAA,GAAG,CAAC;QACxBE,eAAiB,EAAA,CAAA,EAAGF,KAAM,CAAA,GAAG,CAAC;QAC9BG,WAAa,EAAA,CAAA,EAAGH,KAAM,CAAA,GAAG;AAC3B,KAAA;AACF;AAEA,MAAMI,YAAAA,GAAe,CAAC,EAAEC,YAAY,EAAEC,WAAW,EAAE,EAAEC,OAAU,GAAA,KAAK,EAAqB,GAAA;IACvF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,IAAIF,OAAS,EAAA;QACX,qBAAOG,cAAA,CAACC,iBAAKC,KAAK,EAAA,EAAA,CAAA;AACpB;IAEA,IAAIN,QAAAA,EAAUO,WAAW,CAAG,EAAA;AAC1B,QAAA,qBACEH,cAACI,CAAAA,6BAAAA,EAAAA;AACCC,YAAAA,OAAAA,EAASP,aACP,CAAA;gBACEQ,EAAI,EAAA,iDAAA;gBACJC,cAAgB,EAAA;aAElB,EAAA;gBACEC,MAAQb,EAAAA;AACV,aAAA,CAAA;AAEFc,YAAAA,IAAAA,gBAAMT,cAACU,CAAAA,sBAAAA,EAAAA;gBAAeC,KAAM,EAAA;;;AAGlC;IAEA,qBACEX,cAAA,CAACY,kBAAKC,IAAI,EAAA;QAACC,GAAK,EAAA,CAAA;AACblB,QAAAA,QAAAA,EAAAA,QAAAA,CAASmB,GAAG,CAAC,CAAC,EAAET,EAAE,EAAEU,IAAI,EAAEC,WAAW,EAAE5B,MAAM,EAAE,iBAC9CW,cAAA,CAACY,kBAAKM,IAAI,EAAA;gBAACC,GAAK,EAAA,CAAA;gBAAGC,CAAG,EAAA,CAAA;gBAAGC,EAAI,EAAA,EAAA;gBAAaC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;AACtE,gBAAA,QAAA,gBAAAvB,cAACjB,CAAAA,QAAAA,EAAAA;oBAASyC,GAAKC,EAAAA,sBAAAA;AAASC,oBAAAA,EAAAA,EAAI,GAAGpB,EAAI,CAAA,CAAA;oBAAEqB,UAAY,EAAA,KAAA;AAC/C,oBAAA,QAAA,gBAAAC,eAACC,CAAAA,iBAAAA,EAAAA;wBACCP,SAAU,EAAA,QAAA;wBACVQ,cAAe,EAAA,eAAA;wBACfC,OAAS,EAAA,CAAA;wBACTC,SAAS,EAAA,IAAA;wBACTC,UAAW,EAAA,UAAA;wBACXC,MAAO,EAAA,aAAA;wBACPC,MAAO,EAAA,MAAA;wBACPxB,KAAM,EAAA,MAAA;wBACNY,UAAW,EAAA,OAAA;wBACXT,GAAK,EAAA,CAAA;;0CAELc,eAACC,CAAAA,iBAAAA,EAAAA;gCAAKP,SAAU,EAAA,QAAA;gCAASC,UAAW,EAAA,OAAA;gCAAQT,GAAK,EAAA,CAAA;;kDAC/Cd,cAACoC,CAAAA,uBAAAA,EAAAA;wCAAW7C,SAAU,EAAA,YAAA;wCAAaiC,GAAI,EAAA,IAAA;wCAAKa,OAAQ,EAAA,OAAA;wCAAQC,UAAW,EAAA,MAAA;AACpEtB,wCAAAA,QAAAA,EAAAA;;kDAEHhB,cAACoC,CAAAA,uBAAAA,EAAAA;wCAAWC,OAAQ,EAAA,IAAA;wCAAK9C,SAAU,EAAA,YAAA;AAChC0B,wCAAAA,QAAAA,EAAAA,WAAAA,iBACCjB,cAACd,CAAAA,YAAAA,EAAAA;AAAaqD,4CAAAA,SAAAA,EAAW,IAAIC,IAAKvB,CAAAA,WAAAA;6CAElCnB,aAAc,CAAA;4CACZQ,EAAI,EAAA,+CAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;;;0CAINP,cAACyC,CAAAA,kBAAAA,EAAAA;AAAO,gCAAA,GAAGrD,cAAcC,MAAO,CAAA;AAAGA,gCAAAA,QAAAA,EAAAA;;;;;AA7BHiB,aAAAA,EAAAA,EAAAA,CAAAA;;AAoC9C,CAAA;AAEA;;AAEkG,qGAElG,MAAMoC,WAAAA,GAAc1D,uBAAO2D,CAAAA,kBAAAA,CAAM;;;;;;;AAOjC,CAAC;AAED,MAAMC,mBAAsB,GAAA;IAC1B5B,IAAM,EAAA,EAAA;IACN6B,IAAMC,EAAAA,cAAAA,CAAO,IAAIN,IAAQ,EAAA,EAAA,YAAA,CAAA;IACzBO,IAAM,EAAA,EAAA;IACNC,WAAa,EAAA,IAAA;IACb/B,WAAa,EAAA,IAAA;IACbgC,QAAU,EAAA;AACZ,CAAA;AAEA,MAAMC,YAAe,GAAA,IAAA;AACnB,IAAA,MAAMC,QAAWC,GAAAA,0BAAAA,EAAAA;AACjB,IAAA,MAAM,CAACC,iBAAmBC,EAAAA,oBAAAA,CAAqB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACjE,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;IAC/B,MAAM,EAAE5D,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM4D,QAAWC,GAAAA,0BAAAA,EAAAA;IACjB,MAAM,EAAEC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;AAC3B,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,0BAAAA,EAAAA;AAC9B,IAAA,MAAMC,WAAWC,2BAAoBJ,CAAAA,KAAAA,CAAAA;AACrC,IAAA,MAAM,EAAEK,IAAI,EAAEC,SAAWC,EAAAA,iBAAiB,EAAE,GAAGC,kCAAAA,EAAAA;AAC/C,IAAA,MAAM,CAACC,aAAe,EAAA,EAAEH,WAAWI,gBAAgB,EAAE,CAAC,GAAGC,gCAAAA,EAAAA;IACzD,MAAM,EAAEC,UAAU,EAAE,GAAGC,mBAAAA,EAAAA;AACvB,IAAA,MAAM,EAAEC,eAAAA,GAAkB,CAAC,EAAE,GAAGF,UAAW,CAAA,sBAAA,CAAA;IAG3C,MAAM,EAAEG,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AACvB,IAAA,MAAM,EACJC,cAAgB,EAAA,EAAEC,SAAS,EAAE,EAC9B,GAAGC,mBAAQC,CAAAA,qBAAAA,CAAAA;IAEZ,MAAM,EAAEd,WAAWe,iBAAiB,EAAEC,SAAS,EAAExF,OAAO,EAAE,GAAGqE,QAAAA;AAC7D,IAAA,MAAMoB,SAAYpB,GAAAA,QAAAA,EAAUqB,WAAaC,EAAAA,IAAAA,EAAMF,SAAa,IAAA,SAAA;;AAG5D/B,IAAAA,gBAAAA,CAAMkC,SAAS,CAAC,IAAA;QACd,IAAItC,QAAAA,EAAUuC,OAAOC,MAAQ,EAAA;YAC3BlC,kBAAmB,CAAA;gBACjBmC,IAAM,EAAA,QAAA;AACNC,gBAAAA,KAAAA,EAAO/F,aAAc,CAAA;oBACnBQ,EAAI,EAAA,0DAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAuF,gBAAAA,OAAAA,EAAShG,aAAc,CAAA;oBACrBQ,EAAI,EAAA,4DAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;AACAoD,YAAAA,QAAAA,CAAS,EAAI,EAAA;gBAAEoC,OAAS,EAAA,IAAA;gBAAML,KAAO,EAAA;AAAK,aAAA,CAAA;AAC5C;KACC,EAAA;AAAC5F,QAAAA,aAAAA;AAAeqD,QAAAA,QAAAA,EAAUuC,KAAOC,EAAAA,MAAAA;AAAQhC,QAAAA,QAAAA;AAAUF,QAAAA;AAAmB,KAAA,CAAA;AAEzE,IAAA,MAAMuC,qBAAwB,GAAA,IAAA;QAC5B1C,oBAAqB,CAAA,CAAC2C,OAAS,CAACA,IAAAA,CAAAA;AAClC,KAAA;AAEA,IAAA,IAAIb,qBAAqBd,iBAAmB,EAAA;QAC1C,qBAAOtE,cAAA,CAACC,iBAAKiG,OAAO,EAAA,EAAA,CAAA;AACtB;AAEA,IAAA,MAAMC,uBAAuB,SAACd,IAAanB,SAASqB,WAAW,EAAEC,MAAMY,oBAAyB,IAAA,CAAA;AAChG,IAAA,MAAMC,mCAAmCF,oBAAwBtB,IAAAA,eAAAA;AAEjE,IAAA,MAAMyB,kBAAkB,CAACC,QAAAA,GAAAA;QACvBvC,QAAS,CAAA;AACP,YAAA,GAAGD,KAAK;YACRyC,IAAM,EAAA,CAAA;AACNC,YAAAA,QAAAA,EAAUvC,QAAUqB,EAAAA,WAAAA,EAAaC,IAAMkB,EAAAA,UAAAA,EAAYD,QAAY,IAAA,EAAA;YAC/DE,OAAS,EAAA;gBACPC,UAAY,EAAA;AACVC,oBAAAA,QAAAA,EAAUN,QAAa,KAAA;AACzB;AACF;AACF,SAAA,CAAA;AACF,KAAA;IAEA,MAAMO,gBAAAA,GAAmB,OAAO,EAAE9F,IAAI,EAAEC,WAAW,EAAEgC,QAAQ,EAAc,GAAA;QACzE,MAAMiB,QAAAA,GAAW,MAAMM,aAAc,CAAA;AACnCxD,YAAAA,IAAAA;AACAC,YAAAA,WAAAA;AACAgC,YAAAA;AACF,SAAA,CAAA;AACA,QAAA,IAAI,UAAUiB,QAAU,EAAA;;YAEtBT,kBAAmB,CAAA;gBACjBmC,IAAM,EAAA,SAAA;AACNE,gBAAAA,OAAAA,EAAShG,aAAc,CAAA;oBACrBQ,EAAI,EAAA,6DAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;YAEAuE,UAAW,CAAA,kBAAA,CAAA;AACXnB,YAAAA,QAAAA,CAASO,SAASE,IAAI,CAACA,IAAI,CAAC9D,EAAE,CAACyG,QAAQ,EAAA,CAAA;AACzC,SAAA,MAAO,IAAIC,wBAAAA,CAAa9C,QAAS+C,CAAAA,KAAK,CAAG,EAAA;;YAEvCxD,kBAAmB,CAAA;gBACjBmC,IAAM,EAAA,QAAA;gBACNE,OAASjC,EAAAA,cAAAA,CAAeK,SAAS+C,KAAK;AACxC,aAAA,CAAA;SACK,MAAA;;YAELxD,kBAAmB,CAAA;gBACjBmC,IAAM,EAAA,QAAA;AACNE,gBAAAA,OAAAA,EAAShG,aAAc,CAAA;oBAAEQ,EAAI,EAAA,oBAAA;oBAAsBC,cAAgB,EAAA;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,qBACEP,cAAA,CAACkH,oBAAQrG,IAAI,EAAA;AACX,QAAA,QAAA,gBAAAe,eAACuF,CAAAA,iBAAAA,EAAAA;AAAKC,YAAAA,WAAAA,EAAWhC,iBAAqBd,IAAAA,iBAAAA;;AACpC,8BAAAtE,cAAA,CAACkH,oBAAQG,MAAM,EAAA;AACbxB,oBAAAA,KAAAA,EAAO/F,aAAc,CAAA;wBACnBQ,EAAI,EAAA,uCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;AACA+G,oBAAAA,eAAAA,gBACEtH,cAACuH,CAAAA,yBAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAO1H,aAAc,CAAA;4BACnBQ,EAAI,EAAA,iCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;AAGJkH,oBAAAA,QAAAA,EAAU3H,aAAc,CAAA;wBACtBQ,EAAI,EAAA,iDAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;AACAmH,oBAAAA,aAAAA,EACEzC,0BACEjF,cAAC2H,CAAAA,mBAAAA,EAAAA;AACCC,wBAAAA,SAAAA,gBAAW5H,cAAC6H,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;wBACZC,OAAS9B,EAAAA,qBAAAA;wBACT+B,QAAU1B,EAAAA,gCAAAA;wBACV2B,SAAS,EAAA,IAAA;kCAERlI,aAAc,CAAA;4BACbQ,EAAI,EAAA,6CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;AAEA,qBAAA,CAAA,GAAA;;AAGR,8BAAAP,cAAA,CAACkH,oBAAQe,OAAO,EAAA;4CACdrG,eAAA,CAAAsG,mBAAA,EAAA;;AACG7B,4BAAAA,gCAAAA,kBACCrG,cAAC0C,CAAAA,WAAAA,EAAAA;gCACCyF,YAAc,EAAA,CAAA;AACdC,gCAAAA,MAAAA,gBACEpI,cAACf,CAAAA,iBAAAA,EAAAA;oCAAKoJ,IAAK,EAAA,iCAAA;oCAAkC1G,UAAU,EAAA,IAAA;8CACpD7B,aAAc,CAAA;wCACbQ,EAAI,EAAA,0DAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;AAGJsF,gCAAAA,KAAAA,EAAO/F,aACL,CAAA;oCACEQ,EAAI,EAAA,yDAAA;oCACJC,cACE,EAAA;iCAEJ,EAAA;oCAAE+H,MAAQzD,EAAAA;AAAgB,iCAAA,CAAA;AAE5B0D,gCAAAA,OAAAA,EAAS,IAAO,EAAA;gCAChBC,UAAW,EAAA,EAAA;0CAEV1I,aAAc,CAAA;oCACbQ,EAAI,EAAA,2DAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;AAGJ,0CAAAqB,eAAA,CAAC6G,kBAAK5H,IAAI,EAAA;gCAACwB,OAAQ,EAAA,QAAA;gCAASqG,aAAepC,EAAAA,eAAAA;gCAAiBqC,KAAOrD,EAAAA,SAAAA;;kDACjE1D,eAACgH,CAAAA,gBAAAA,EAAAA;wCAAIC,aAAe,EAAA,CAAA;;AAClB,0DAAAjH,eAAA,CAAC6G,kBAAKK,IAAI,EAAA;AACRC,gDAAAA,YAAAA,EAAYjJ,aAAc,CAAA;oDACxBQ,EAAI,EAAA,iDAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA,CAAA;;AAEA,kEAAAP,cAAA,CAACyI,kBAAKO,OAAO,EAAA;wDAACL,KAAM,EAAA,SAAA;kEACjB7I,aACC,CAAA;4DACEQ,EAAI,EAAA,6CAAA;4DACJC,cAAgB,EAAA;yDAElB,EAAA;4DACE0I,KAAO9C,EAAAA;AACT,yDAAA;;AAGJ,kEAAAnG,cAAA,CAACyI,kBAAKO,OAAO,EAAA;wDAACL,KAAM,EAAA,MAAA;kEACjB7I,aAAc,CAAA;4DACbQ,EAAI,EAAA,0CAAA;4DACJC,cAAgB,EAAA;AAClB,yDAAA;;;;0DAGJP,cAACkJ,CAAAA,oBAAAA,EAAAA,EAAAA;;;AAGH,kDAAAlJ,cAAA,CAACyI,kBAAKR,OAAO,EAAA;wCAACU,KAAM,EAAA,SAAA;AAClB,wCAAA,QAAA,gBAAA3I,cAACN,CAAAA,YAAAA,EAAAA;4CACCC,YAAa,EAAA,SAAA;AACbC,4CAAAA,QAAAA,EAAUsE,UAAUqB,WAAanB,EAAAA,IAAAA;4CACjCvE,OAASA,EAAAA;;;AAIb,kDAAAG,cAAA,CAACyI,kBAAKR,OAAO,EAAA;wCAACU,KAAM,EAAA,MAAA;AAClB,wCAAA,QAAA,gBAAA3I,cAACN,CAAAA,YAAAA,EAAAA;4CACCC,YAAa,EAAA,MAAA;AACbC,4CAAAA,QAAAA,EAAUsE,UAAUqB,WAAanB,EAAAA,IAAAA;4CACjCvE,OAASA,EAAAA;;;;;AAIf,0CAAA+B,eAAA,CAACuH,uBAAWtI,IAAI,EAAA;gCACb,GAAGqD,QAAAA,EAAUqB,WAAaC,EAAAA,IAAAA,EAAMkB,UAAU;gCAC3C0C,eAAiBlF,EAAAA,QAAAA,EAAUqB,WAAaC,EAAAA,IAAAA,EAAMkB,UAAYD,EAAAA,QAAAA;;AAE1D,kDAAAzG,cAAA,CAACmJ,uBAAWE,QAAQ,EAAA;wCAACC,OAAS,EAAA;AAAC,4CAAA,GAAA;AAAK,4CAAA,IAAA;AAAM,4CAAA,IAAA;AAAM,4CAAA;AAAK;;AACrD,kDAAAtJ,cAAA,CAACmJ,uBAAWI,KAAK,EAAA,EAAA;;;;;;8BAIvBvJ,cAACwJ,CAAAA,yBAAAA,EAAAA;oBACCC,IAAMpG,EAAAA,iBAAAA;oBACNqG,WAAa1D,EAAAA,qBAAAA;oBACb2D,YAAc7C,EAAAA,gBAAAA;oBACdzC,SAAWI,EAAAA,gBAAAA;oBACXmF,aAAe,EAAA;AACb,wBAAA,GAAGhH,mBAAmB;AACtBK,wBAAAA,QAAAA,EAAUmB,IAAMA,EAAAA,IAAAA,CAAKyF,eAAkBzF,GAAAA,IAAAA,CAAKA,IAAI,CAACyF,eAAe,CAACC,KAAK,CAAC,GAAI,CAAA,CAAC,EAAE,GAAG;AACnF;;;;;AAKV;;;;;"}
|
|
@@ -261,6 +261,7 @@ const ReleasesPage = ()=>{
|
|
|
261
261
|
startIcon: /*#__PURE__*/ jsx(Plus, {}),
|
|
262
262
|
onClick: toggleAddReleaseModal,
|
|
263
263
|
disabled: hasReachedMaximumPendingReleases,
|
|
264
|
+
fullWidth: true,
|
|
264
265
|
children: formatMessage({
|
|
265
266
|
id: 'content-releases.header.actions.add-release',
|
|
266
267
|
defaultMessage: 'New release'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReleasesPage.mjs","sources":["../../../admin/src/pages/ReleasesPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n useTracking,\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport {\n Alert,\n Badge,\n Box,\n Button,\n Divider,\n EmptyStateLayout,\n Flex,\n Grid,\n Main,\n Tabs,\n Typography,\n Link,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { format } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useLocation, NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetReleases, type Release } from '../../../shared/contracts/releases';\nimport { RelativeTime as BaseRelativeTime } from '../components/RelativeTime';\nimport { ReleaseModal, FormValues } from '../components/ReleaseModal';\nimport { PERMISSIONS } from '../constants';\nimport {\n useGetReleasesQuery,\n useGetReleaseSettingsQuery,\n GetReleasesQueryParams,\n useCreateReleaseMutation,\n} from '../services/release';\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesGrid\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleasesGridProps {\n sectionTitle: 'pending' | 'done';\n releases?: GetReleases.Response['data'];\n isError?: boolean;\n}\n\nconst LinkCard = styled(Link)`\n display: block;\n`;\n\nconst RelativeTime = styled(BaseRelativeTime)`\n display: inline-block;\n &::first-letter {\n text-transform: uppercase;\n }\n`;\n\nconst getBadgeProps = (status: Release['status']) => {\n let color;\n switch (status) {\n case 'ready':\n color = 'success';\n break;\n case 'blocked':\n color = 'warning';\n break;\n case 'failed':\n color = 'danger';\n break;\n case 'done':\n color = 'primary';\n break;\n case 'empty':\n default:\n color = 'neutral';\n }\n\n return {\n textColor: `${color}600`,\n backgroundColor: `${color}100`,\n borderColor: `${color}200`,\n };\n};\n\nconst ReleasesGrid = ({ sectionTitle, releases = [], isError = false }: ReleasesGridProps) => {\n const { formatMessage } = useIntl();\n\n if (isError) {\n return <Page.Error />;\n }\n\n if (releases?.length === 0) {\n return (\n <EmptyStateLayout\n content={formatMessage(\n {\n id: 'content-releases.page.Releases.tab.emptyEntries',\n defaultMessage: 'No releases',\n },\n {\n target: sectionTitle,\n }\n )}\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {releases.map(({ id, name, scheduledAt, status }) => (\n <Grid.Item col={3} s={6} xs={12} key={id} direction=\"column\" alignItems=\"stretch\">\n <LinkCard tag={NavLink} to={`${id}`} isExternal={false}>\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n padding={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n width=\"100%\"\n alignItems=\"start\"\n gap={4}\n >\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography textColor=\"neutral800\" tag=\"h3\" variant=\"delta\" fontWeight=\"bold\">\n {name}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {scheduledAt ? (\n <RelativeTime timestamp={new Date(scheduledAt)} />\n ) : (\n formatMessage({\n id: 'content-releases.pages.Releases.not-scheduled',\n defaultMessage: 'Not scheduled',\n })\n )}\n </Typography>\n </Flex>\n <Badge {...getBadgeProps(status)}>{status}</Badge>\n </Flex>\n </LinkCard>\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledAlert = styled(Alert)`\n button {\n display: none;\n }\n p + div {\n margin-left: auto;\n }\n`;\n\nconst INITIAL_FORM_VALUES = {\n name: '',\n date: format(new Date(), 'yyyy-MM-dd'),\n time: '',\n isScheduled: true,\n scheduledAt: null,\n timezone: null,\n} satisfies FormValues;\n\nconst ReleasesPage = () => {\n const location = useLocation();\n const [releaseModalShown, setReleaseModalShown] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }, setQuery] = useQueryParams<GetReleasesQueryParams>();\n const response = useGetReleasesQuery(query);\n const { data, isLoading: isLoadingSettings } = useGetReleaseSettingsQuery();\n const [createRelease, { isLoading: isSubmittingForm }] = useCreateReleaseMutation();\n const { getFeature } = useLicenseLimits();\n const { maximumReleases = 3 } = getFeature('cms-content-releases') as {\n maximumReleases: number;\n };\n const { trackUsage } = useTracking();\n const {\n allowedActions: { canCreate },\n } = useRBAC(PERMISSIONS);\n\n const { isLoading: isLoadingReleases, isSuccess, isError } = response;\n const activeTab = response?.currentData?.meta?.activeTab || 'pending';\n\n // Check if we have some errors and show a notification to the user to explain the error\n React.useEffect(() => {\n if (location?.state?.errors) {\n toggleNotification({\n type: 'danger',\n title: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.title',\n defaultMessage: 'Your request could not be processed.',\n }),\n message: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.message',\n defaultMessage: 'Please try again or open another release.',\n }),\n });\n navigate('', { replace: true, state: null });\n }\n }, [formatMessage, location?.state?.errors, navigate, toggleNotification]);\n\n const toggleAddReleaseModal = () => {\n setReleaseModalShown((prev) => !prev);\n };\n\n if (isLoadingReleases || isLoadingSettings) {\n return <Page.Loading />;\n }\n\n const totalPendingReleases = (isSuccess && response.currentData?.meta?.pendingReleasesCount) || 0;\n const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;\n\n const handleTabChange = (tabValue: string) => {\n setQuery({\n ...query,\n page: 1,\n pageSize: response?.currentData?.meta?.pagination?.pageSize || 16,\n filters: {\n releasedAt: {\n $notNull: tabValue !== 'pending',\n },\n },\n });\n };\n\n const handleAddRelease = async ({ name, scheduledAt, timezone }: FormValues) => {\n const response = await createRelease({\n name,\n scheduledAt,\n timezone,\n });\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.modal.release-created-notification-success',\n defaultMessage: 'Release created.',\n }),\n });\n\n trackUsage('didCreateRelease');\n navigate(response.data.data.id.toString());\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Layouts.Root>\n <Main aria-busy={isLoadingReleases || isLoadingSettings}>\n <Layouts.Header\n title={formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={formatMessage({\n id: 'content-releases.pages.Releases.header-subtitle',\n defaultMessage: 'Create and manage content updates',\n })}\n primaryAction={\n canCreate ? (\n <Button\n startIcon={<Plus />}\n onClick={toggleAddReleaseModal}\n disabled={hasReachedMaximumPendingReleases}\n >\n {formatMessage({\n id: 'content-releases.header.actions.add-release',\n defaultMessage: 'New release',\n })}\n </Button>\n ) : null\n }\n />\n <Layouts.Content>\n <>\n {hasReachedMaximumPendingReleases && (\n <StyledAlert\n marginBottom={6}\n action={\n <Link href=\"https://strapi.io/pricing-cloud\" isExternal>\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.action',\n defaultMessage: 'Explore plans',\n })}\n </Link>\n }\n title={formatMessage(\n {\n id: 'content-releases.pages.Releases.max-limit-reached.title',\n defaultMessage:\n 'You have reached the {number} pending {number, plural, one {release} other {releases}} limit.',\n },\n { number: maximumReleases }\n )}\n onClose={() => {}}\n closeLabel=\"\"\n >\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.message',\n defaultMessage: 'Upgrade to manage an unlimited number of releases.',\n })}\n </StyledAlert>\n )}\n <Tabs.Root variant=\"simple\" onValueChange={handleTabChange} value={activeTab}>\n <Box paddingBottom={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'content-releases.pages.Releases.tab-group.label',\n defaultMessage: 'Releases list',\n })}\n >\n <Tabs.Trigger value=\"pending\">\n {formatMessage(\n {\n id: 'content-releases.pages.Releases.tab.pending',\n defaultMessage: 'Pending ({count})',\n },\n {\n count: totalPendingReleases,\n }\n )}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"done\">\n {formatMessage({\n id: 'content-releases.pages.Releases.tab.done',\n defaultMessage: 'Done',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n <Divider />\n </Box>\n {/* Pending releases */}\n <Tabs.Content value=\"pending\">\n <ReleasesGrid\n sectionTitle=\"pending\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n {/* Done releases */}\n <Tabs.Content value=\"done\">\n <ReleasesGrid\n sectionTitle=\"done\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n </Tabs.Root>\n <Pagination.Root\n {...response?.currentData?.meta?.pagination}\n defaultPageSize={response?.currentData?.meta?.pagination?.pageSize}\n >\n <Pagination.PageSize options={['8', '16', '32', '64']} />\n <Pagination.Links />\n </Pagination.Root>\n </>\n </Layouts.Content>\n <ReleaseModal\n open={releaseModalShown}\n handleClose={toggleAddReleaseModal}\n handleSubmit={handleAddRelease}\n isLoading={isSubmittingForm}\n initialValues={{\n ...INITIAL_FORM_VALUES,\n timezone: data?.data.defaultTimezone ? data.data.defaultTimezone.split('&')[1] : null,\n }}\n />\n </Main>\n </Layouts.Root>\n );\n};\n\nexport { ReleasesPage, getBadgeProps };\n"],"names":["LinkCard","styled","Link","RelativeTime","BaseRelativeTime","getBadgeProps","status","color","textColor","backgroundColor","borderColor","ReleasesGrid","sectionTitle","releases","isError","formatMessage","useIntl","_jsx","Page","Error","length","EmptyStateLayout","content","id","defaultMessage","target","icon","EmptyDocuments","width","Grid","Root","gap","map","name","scheduledAt","Item","col","s","xs","direction","alignItems","tag","NavLink","to","isExternal","_jsxs","Flex","justifyContent","padding","hasRadius","background","shadow","height","Typography","variant","fontWeight","timestamp","Date","Badge","StyledAlert","Alert","INITIAL_FORM_VALUES","date","format","time","isScheduled","timezone","ReleasesPage","location","useLocation","releaseModalShown","setReleaseModalShown","React","useState","toggleNotification","useNotification","navigate","useNavigate","formatAPIError","useAPIErrorHandler","query","setQuery","useQueryParams","response","useGetReleasesQuery","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","createRelease","isSubmittingForm","useCreateReleaseMutation","getFeature","useLicenseLimits","maximumReleases","trackUsage","useTracking","allowedActions","canCreate","useRBAC","PERMISSIONS","isLoadingReleases","isSuccess","activeTab","currentData","meta","useEffect","state","errors","type","title","message","replace","toggleAddReleaseModal","prev","Loading","totalPendingReleases","pendingReleasesCount","hasReachedMaximumPendingReleases","handleTabChange","tabValue","page","pageSize","pagination","filters","releasedAt","$notNull","handleAddRelease","toString","isFetchError","error","Layouts","Main","aria-busy","Header","secondaryAction","GradientBadge","label","subtitle","primaryAction","Button","startIcon","Plus","onClick","disabled","Content","_Fragment","marginBottom","action","href","number","onClose","closeLabel","Tabs","onValueChange","value","Box","paddingBottom","List","aria-label","Trigger","count","Divider","Pagination","defaultPageSize","PageSize","options","Links","ReleaseModal","open","handleClose","handleSubmit","initialValues","defaultTimezone","split"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReleasesPage.mjs","sources":["../../../admin/src/pages/ReleasesPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n useTracking,\n useAPIErrorHandler,\n useNotification,\n useQueryParams,\n useRBAC,\n isFetchError,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport {\n Alert,\n Badge,\n Box,\n Button,\n Divider,\n EmptyStateLayout,\n Flex,\n Grid,\n Main,\n Tabs,\n Typography,\n Link,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { format } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useLocation, NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetReleases, type Release } from '../../../shared/contracts/releases';\nimport { RelativeTime as BaseRelativeTime } from '../components/RelativeTime';\nimport { ReleaseModal, FormValues } from '../components/ReleaseModal';\nimport { PERMISSIONS } from '../constants';\nimport {\n useGetReleasesQuery,\n useGetReleaseSettingsQuery,\n GetReleasesQueryParams,\n useCreateReleaseMutation,\n} from '../services/release';\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesGrid\n * -----------------------------------------------------------------------------------------------*/\ninterface ReleasesGridProps {\n sectionTitle: 'pending' | 'done';\n releases?: GetReleases.Response['data'];\n isError?: boolean;\n}\n\nconst LinkCard = styled(Link)`\n display: block;\n`;\n\nconst RelativeTime = styled(BaseRelativeTime)`\n display: inline-block;\n &::first-letter {\n text-transform: uppercase;\n }\n`;\n\nconst getBadgeProps = (status: Release['status']) => {\n let color;\n switch (status) {\n case 'ready':\n color = 'success';\n break;\n case 'blocked':\n color = 'warning';\n break;\n case 'failed':\n color = 'danger';\n break;\n case 'done':\n color = 'primary';\n break;\n case 'empty':\n default:\n color = 'neutral';\n }\n\n return {\n textColor: `${color}600`,\n backgroundColor: `${color}100`,\n borderColor: `${color}200`,\n };\n};\n\nconst ReleasesGrid = ({ sectionTitle, releases = [], isError = false }: ReleasesGridProps) => {\n const { formatMessage } = useIntl();\n\n if (isError) {\n return <Page.Error />;\n }\n\n if (releases?.length === 0) {\n return (\n <EmptyStateLayout\n content={formatMessage(\n {\n id: 'content-releases.page.Releases.tab.emptyEntries',\n defaultMessage: 'No releases',\n },\n {\n target: sectionTitle,\n }\n )}\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {releases.map(({ id, name, scheduledAt, status }) => (\n <Grid.Item col={3} s={6} xs={12} key={id} direction=\"column\" alignItems=\"stretch\">\n <LinkCard tag={NavLink} to={`${id}`} isExternal={false}>\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n padding={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n width=\"100%\"\n alignItems=\"start\"\n gap={4}\n >\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography textColor=\"neutral800\" tag=\"h3\" variant=\"delta\" fontWeight=\"bold\">\n {name}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {scheduledAt ? (\n <RelativeTime timestamp={new Date(scheduledAt)} />\n ) : (\n formatMessage({\n id: 'content-releases.pages.Releases.not-scheduled',\n defaultMessage: 'Not scheduled',\n })\n )}\n </Typography>\n </Flex>\n <Badge {...getBadgeProps(status)}>{status}</Badge>\n </Flex>\n </LinkCard>\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleasesPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledAlert = styled(Alert)`\n button {\n display: none;\n }\n p + div {\n margin-left: auto;\n }\n`;\n\nconst INITIAL_FORM_VALUES = {\n name: '',\n date: format(new Date(), 'yyyy-MM-dd'),\n time: '',\n isScheduled: true,\n scheduledAt: null,\n timezone: null,\n} satisfies FormValues;\n\nconst ReleasesPage = () => {\n const location = useLocation();\n const [releaseModalShown, setReleaseModalShown] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { formatAPIError } = useAPIErrorHandler();\n const [{ query }, setQuery] = useQueryParams<GetReleasesQueryParams>();\n const response = useGetReleasesQuery(query);\n const { data, isLoading: isLoadingSettings } = useGetReleaseSettingsQuery();\n const [createRelease, { isLoading: isSubmittingForm }] = useCreateReleaseMutation();\n const { getFeature } = useLicenseLimits();\n const { maximumReleases = 3 } = getFeature('cms-content-releases') as {\n maximumReleases: number;\n };\n const { trackUsage } = useTracking();\n const {\n allowedActions: { canCreate },\n } = useRBAC(PERMISSIONS);\n\n const { isLoading: isLoadingReleases, isSuccess, isError } = response;\n const activeTab = response?.currentData?.meta?.activeTab || 'pending';\n\n // Check if we have some errors and show a notification to the user to explain the error\n React.useEffect(() => {\n if (location?.state?.errors) {\n toggleNotification({\n type: 'danger',\n title: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.title',\n defaultMessage: 'Your request could not be processed.',\n }),\n message: formatMessage({\n id: 'content-releases.pages.Releases.notification.error.message',\n defaultMessage: 'Please try again or open another release.',\n }),\n });\n navigate('', { replace: true, state: null });\n }\n }, [formatMessage, location?.state?.errors, navigate, toggleNotification]);\n\n const toggleAddReleaseModal = () => {\n setReleaseModalShown((prev) => !prev);\n };\n\n if (isLoadingReleases || isLoadingSettings) {\n return <Page.Loading />;\n }\n\n const totalPendingReleases = (isSuccess && response.currentData?.meta?.pendingReleasesCount) || 0;\n const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;\n\n const handleTabChange = (tabValue: string) => {\n setQuery({\n ...query,\n page: 1,\n pageSize: response?.currentData?.meta?.pagination?.pageSize || 16,\n filters: {\n releasedAt: {\n $notNull: tabValue !== 'pending',\n },\n },\n });\n };\n\n const handleAddRelease = async ({ name, scheduledAt, timezone }: FormValues) => {\n const response = await createRelease({\n name,\n scheduledAt,\n timezone,\n });\n if ('data' in response) {\n // When the response returns an object with 'data', handle success\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.modal.release-created-notification-success',\n defaultMessage: 'Release created.',\n }),\n });\n\n trackUsage('didCreateRelease');\n navigate(response.data.data.id.toString());\n } else if (isFetchError(response.error)) {\n // When the response returns an object with 'error', handle fetch error\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n // Otherwise, the response returns an object with 'error', handle a generic error\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Layouts.Root>\n <Main aria-busy={isLoadingReleases || isLoadingSettings}>\n <Layouts.Header\n title={formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={formatMessage({\n id: 'content-releases.pages.Releases.header-subtitle',\n defaultMessage: 'Create and manage content updates',\n })}\n primaryAction={\n canCreate ? (\n <Button\n startIcon={<Plus />}\n onClick={toggleAddReleaseModal}\n disabled={hasReachedMaximumPendingReleases}\n fullWidth\n >\n {formatMessage({\n id: 'content-releases.header.actions.add-release',\n defaultMessage: 'New release',\n })}\n </Button>\n ) : null\n }\n />\n <Layouts.Content>\n <>\n {hasReachedMaximumPendingReleases && (\n <StyledAlert\n marginBottom={6}\n action={\n <Link href=\"https://strapi.io/pricing-cloud\" isExternal>\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.action',\n defaultMessage: 'Explore plans',\n })}\n </Link>\n }\n title={formatMessage(\n {\n id: 'content-releases.pages.Releases.max-limit-reached.title',\n defaultMessage:\n 'You have reached the {number} pending {number, plural, one {release} other {releases}} limit.',\n },\n { number: maximumReleases }\n )}\n onClose={() => {}}\n closeLabel=\"\"\n >\n {formatMessage({\n id: 'content-releases.pages.Releases.max-limit-reached.message',\n defaultMessage: 'Upgrade to manage an unlimited number of releases.',\n })}\n </StyledAlert>\n )}\n <Tabs.Root variant=\"simple\" onValueChange={handleTabChange} value={activeTab}>\n <Box paddingBottom={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'content-releases.pages.Releases.tab-group.label',\n defaultMessage: 'Releases list',\n })}\n >\n <Tabs.Trigger value=\"pending\">\n {formatMessage(\n {\n id: 'content-releases.pages.Releases.tab.pending',\n defaultMessage: 'Pending ({count})',\n },\n {\n count: totalPendingReleases,\n }\n )}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"done\">\n {formatMessage({\n id: 'content-releases.pages.Releases.tab.done',\n defaultMessage: 'Done',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n <Divider />\n </Box>\n {/* Pending releases */}\n <Tabs.Content value=\"pending\">\n <ReleasesGrid\n sectionTitle=\"pending\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n {/* Done releases */}\n <Tabs.Content value=\"done\">\n <ReleasesGrid\n sectionTitle=\"done\"\n releases={response?.currentData?.data}\n isError={isError}\n />\n </Tabs.Content>\n </Tabs.Root>\n <Pagination.Root\n {...response?.currentData?.meta?.pagination}\n defaultPageSize={response?.currentData?.meta?.pagination?.pageSize}\n >\n <Pagination.PageSize options={['8', '16', '32', '64']} />\n <Pagination.Links />\n </Pagination.Root>\n </>\n </Layouts.Content>\n <ReleaseModal\n open={releaseModalShown}\n handleClose={toggleAddReleaseModal}\n handleSubmit={handleAddRelease}\n isLoading={isSubmittingForm}\n initialValues={{\n ...INITIAL_FORM_VALUES,\n timezone: data?.data.defaultTimezone ? data.data.defaultTimezone.split('&')[1] : null,\n }}\n />\n </Main>\n </Layouts.Root>\n );\n};\n\nexport { ReleasesPage, getBadgeProps };\n"],"names":["LinkCard","styled","Link","RelativeTime","BaseRelativeTime","getBadgeProps","status","color","textColor","backgroundColor","borderColor","ReleasesGrid","sectionTitle","releases","isError","formatMessage","useIntl","_jsx","Page","Error","length","EmptyStateLayout","content","id","defaultMessage","target","icon","EmptyDocuments","width","Grid","Root","gap","map","name","scheduledAt","Item","col","s","xs","direction","alignItems","tag","NavLink","to","isExternal","_jsxs","Flex","justifyContent","padding","hasRadius","background","shadow","height","Typography","variant","fontWeight","timestamp","Date","Badge","StyledAlert","Alert","INITIAL_FORM_VALUES","date","format","time","isScheduled","timezone","ReleasesPage","location","useLocation","releaseModalShown","setReleaseModalShown","React","useState","toggleNotification","useNotification","navigate","useNavigate","formatAPIError","useAPIErrorHandler","query","setQuery","useQueryParams","response","useGetReleasesQuery","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","createRelease","isSubmittingForm","useCreateReleaseMutation","getFeature","useLicenseLimits","maximumReleases","trackUsage","useTracking","allowedActions","canCreate","useRBAC","PERMISSIONS","isLoadingReleases","isSuccess","activeTab","currentData","meta","useEffect","state","errors","type","title","message","replace","toggleAddReleaseModal","prev","Loading","totalPendingReleases","pendingReleasesCount","hasReachedMaximumPendingReleases","handleTabChange","tabValue","page","pageSize","pagination","filters","releasedAt","$notNull","handleAddRelease","toString","isFetchError","error","Layouts","Main","aria-busy","Header","secondaryAction","GradientBadge","label","subtitle","primaryAction","Button","startIcon","Plus","onClick","disabled","fullWidth","Content","_Fragment","marginBottom","action","href","number","onClose","closeLabel","Tabs","onValueChange","value","Box","paddingBottom","List","aria-label","Trigger","count","Divider","Pagination","defaultPageSize","PageSize","options","Links","ReleaseModal","open","handleClose","handleSubmit","initialValues","defaultTimezone","split"],"mappings":";;;;;;;;;;;;;;;;AAwDA,MAAMA,QAAAA,GAAWC,MAAOC,CAAAA,IAAAA,CAAK;;AAE7B,CAAC;AAED,MAAMC,YAAAA,GAAeF,MAAOG,CAAAA,cAAAA,CAAiB;;;;;AAK7C,CAAC;AAED,MAAMC,gBAAgB,CAACC,MAAAA,GAAAA;IACrB,IAAIC,KAAAA;IACJ,OAAQD,MAAAA;QACN,KAAK,OAAA;YACHC,KAAQ,GAAA,SAAA;AACR,YAAA;QACF,KAAK,SAAA;YACHA,KAAQ,GAAA,SAAA;AACR,YAAA;QACF,KAAK,QAAA;YACHA,KAAQ,GAAA,QAAA;AACR,YAAA;QACF,KAAK,MAAA;YACHA,KAAQ,GAAA,SAAA;AACR,YAAA;QACF,KAAK,OAAA;AACL,QAAA;YACEA,KAAQ,GAAA,SAAA;AACZ;IAEA,OAAO;QACLC,SAAW,EAAA,CAAA,EAAGD,KAAM,CAAA,GAAG,CAAC;QACxBE,eAAiB,EAAA,CAAA,EAAGF,KAAM,CAAA,GAAG,CAAC;QAC9BG,WAAa,EAAA,CAAA,EAAGH,KAAM,CAAA,GAAG;AAC3B,KAAA;AACF;AAEA,MAAMI,YAAAA,GAAe,CAAC,EAAEC,YAAY,EAAEC,WAAW,EAAE,EAAEC,OAAU,GAAA,KAAK,EAAqB,GAAA;IACvF,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,IAAIF,OAAS,EAAA;QACX,qBAAOG,GAAA,CAACC,KAAKC,KAAK,EAAA,EAAA,CAAA;AACpB;IAEA,IAAIN,QAAAA,EAAUO,WAAW,CAAG,EAAA;AAC1B,QAAA,qBACEH,GAACI,CAAAA,gBAAAA,EAAAA;AACCC,YAAAA,OAAAA,EAASP,aACP,CAAA;gBACEQ,EAAI,EAAA,iDAAA;gBACJC,cAAgB,EAAA;aAElB,EAAA;gBACEC,MAAQb,EAAAA;AACV,aAAA,CAAA;AAEFc,YAAAA,IAAAA,gBAAMT,GAACU,CAAAA,cAAAA,EAAAA;gBAAeC,KAAM,EAAA;;;AAGlC;IAEA,qBACEX,GAAA,CAACY,KAAKC,IAAI,EAAA;QAACC,GAAK,EAAA,CAAA;AACblB,QAAAA,QAAAA,EAAAA,QAAAA,CAASmB,GAAG,CAAC,CAAC,EAAET,EAAE,EAAEU,IAAI,EAAEC,WAAW,EAAE5B,MAAM,EAAE,iBAC9CW,GAAA,CAACY,KAAKM,IAAI,EAAA;gBAACC,GAAK,EAAA,CAAA;gBAAGC,CAAG,EAAA,CAAA;gBAAGC,EAAI,EAAA,EAAA;gBAAaC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;AACtE,gBAAA,QAAA,gBAAAvB,GAACjB,CAAAA,QAAAA,EAAAA;oBAASyC,GAAKC,EAAAA,OAAAA;AAASC,oBAAAA,EAAAA,EAAI,GAAGpB,EAAI,CAAA,CAAA;oBAAEqB,UAAY,EAAA,KAAA;AAC/C,oBAAA,QAAA,gBAAAC,IAACC,CAAAA,IAAAA,EAAAA;wBACCP,SAAU,EAAA,QAAA;wBACVQ,cAAe,EAAA,eAAA;wBACfC,OAAS,EAAA,CAAA;wBACTC,SAAS,EAAA,IAAA;wBACTC,UAAW,EAAA,UAAA;wBACXC,MAAO,EAAA,aAAA;wBACPC,MAAO,EAAA,MAAA;wBACPxB,KAAM,EAAA,MAAA;wBACNY,UAAW,EAAA,OAAA;wBACXT,GAAK,EAAA,CAAA;;0CAELc,IAACC,CAAAA,IAAAA,EAAAA;gCAAKP,SAAU,EAAA,QAAA;gCAASC,UAAW,EAAA,OAAA;gCAAQT,GAAK,EAAA,CAAA;;kDAC/Cd,GAACoC,CAAAA,UAAAA,EAAAA;wCAAW7C,SAAU,EAAA,YAAA;wCAAaiC,GAAI,EAAA,IAAA;wCAAKa,OAAQ,EAAA,OAAA;wCAAQC,UAAW,EAAA,MAAA;AACpEtB,wCAAAA,QAAAA,EAAAA;;kDAEHhB,GAACoC,CAAAA,UAAAA,EAAAA;wCAAWC,OAAQ,EAAA,IAAA;wCAAK9C,SAAU,EAAA,YAAA;AAChC0B,wCAAAA,QAAAA,EAAAA,WAAAA,iBACCjB,GAACd,CAAAA,YAAAA,EAAAA;AAAaqD,4CAAAA,SAAAA,EAAW,IAAIC,IAAKvB,CAAAA,WAAAA;6CAElCnB,aAAc,CAAA;4CACZQ,EAAI,EAAA,+CAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;;;0CAINP,GAACyC,CAAAA,KAAAA,EAAAA;AAAO,gCAAA,GAAGrD,cAAcC,MAAO,CAAA;AAAGA,gCAAAA,QAAAA,EAAAA;;;;;AA7BHiB,aAAAA,EAAAA,EAAAA,CAAAA;;AAoC9C,CAAA;AAEA;;AAEkG,qGAElG,MAAMoC,WAAAA,GAAc1D,MAAO2D,CAAAA,KAAAA,CAAM;;;;;;;AAOjC,CAAC;AAED,MAAMC,mBAAsB,GAAA;IAC1B5B,IAAM,EAAA,EAAA;IACN6B,IAAMC,EAAAA,MAAAA,CAAO,IAAIN,IAAQ,EAAA,EAAA,YAAA,CAAA;IACzBO,IAAM,EAAA,EAAA;IACNC,WAAa,EAAA,IAAA;IACb/B,WAAa,EAAA,IAAA;IACbgC,QAAU,EAAA;AACZ,CAAA;AAEA,MAAMC,YAAe,GAAA,IAAA;AACnB,IAAA,MAAMC,QAAWC,GAAAA,WAAAA,EAAAA;AACjB,IAAA,MAAM,CAACC,iBAAmBC,EAAAA,oBAAAA,CAAqB,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACjE,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAE5D,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM4D,QAAWC,GAAAA,WAAAA,EAAAA;IACjB,MAAM,EAAEC,cAAc,EAAE,GAAGC,kBAAAA,EAAAA;AAC3B,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,cAAAA,EAAAA;AAC9B,IAAA,MAAMC,WAAWC,mBAAoBJ,CAAAA,KAAAA,CAAAA;AACrC,IAAA,MAAM,EAAEK,IAAI,EAAEC,SAAWC,EAAAA,iBAAiB,EAAE,GAAGC,0BAAAA,EAAAA;AAC/C,IAAA,MAAM,CAACC,aAAe,EAAA,EAAEH,WAAWI,gBAAgB,EAAE,CAAC,GAAGC,wBAAAA,EAAAA;IACzD,MAAM,EAAEC,UAAU,EAAE,GAAGC,gBAAAA,EAAAA;AACvB,IAAA,MAAM,EAAEC,eAAAA,GAAkB,CAAC,EAAE,GAAGF,UAAW,CAAA,sBAAA,CAAA;IAG3C,MAAM,EAAEG,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,EACJC,cAAgB,EAAA,EAAEC,SAAS,EAAE,EAC9B,GAAGC,OAAQC,CAAAA,WAAAA,CAAAA;IAEZ,MAAM,EAAEd,WAAWe,iBAAiB,EAAEC,SAAS,EAAExF,OAAO,EAAE,GAAGqE,QAAAA;AAC7D,IAAA,MAAMoB,SAAYpB,GAAAA,QAAAA,EAAUqB,WAAaC,EAAAA,IAAAA,EAAMF,SAAa,IAAA,SAAA;;AAG5D/B,IAAAA,KAAAA,CAAMkC,SAAS,CAAC,IAAA;QACd,IAAItC,QAAAA,EAAUuC,OAAOC,MAAQ,EAAA;YAC3BlC,kBAAmB,CAAA;gBACjBmC,IAAM,EAAA,QAAA;AACNC,gBAAAA,KAAAA,EAAO/F,aAAc,CAAA;oBACnBQ,EAAI,EAAA,0DAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAuF,gBAAAA,OAAAA,EAAShG,aAAc,CAAA;oBACrBQ,EAAI,EAAA,4DAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;AACAoD,YAAAA,QAAAA,CAAS,EAAI,EAAA;gBAAEoC,OAAS,EAAA,IAAA;gBAAML,KAAO,EAAA;AAAK,aAAA,CAAA;AAC5C;KACC,EAAA;AAAC5F,QAAAA,aAAAA;AAAeqD,QAAAA,QAAAA,EAAUuC,KAAOC,EAAAA,MAAAA;AAAQhC,QAAAA,QAAAA;AAAUF,QAAAA;AAAmB,KAAA,CAAA;AAEzE,IAAA,MAAMuC,qBAAwB,GAAA,IAAA;QAC5B1C,oBAAqB,CAAA,CAAC2C,OAAS,CAACA,IAAAA,CAAAA;AAClC,KAAA;AAEA,IAAA,IAAIb,qBAAqBd,iBAAmB,EAAA;QAC1C,qBAAOtE,GAAA,CAACC,KAAKiG,OAAO,EAAA,EAAA,CAAA;AACtB;AAEA,IAAA,MAAMC,uBAAuB,SAACd,IAAanB,SAASqB,WAAW,EAAEC,MAAMY,oBAAyB,IAAA,CAAA;AAChG,IAAA,MAAMC,mCAAmCF,oBAAwBtB,IAAAA,eAAAA;AAEjE,IAAA,MAAMyB,kBAAkB,CAACC,QAAAA,GAAAA;QACvBvC,QAAS,CAAA;AACP,YAAA,GAAGD,KAAK;YACRyC,IAAM,EAAA,CAAA;AACNC,YAAAA,QAAAA,EAAUvC,QAAUqB,EAAAA,WAAAA,EAAaC,IAAMkB,EAAAA,UAAAA,EAAYD,QAAY,IAAA,EAAA;YAC/DE,OAAS,EAAA;gBACPC,UAAY,EAAA;AACVC,oBAAAA,QAAAA,EAAUN,QAAa,KAAA;AACzB;AACF;AACF,SAAA,CAAA;AACF,KAAA;IAEA,MAAMO,gBAAAA,GAAmB,OAAO,EAAE9F,IAAI,EAAEC,WAAW,EAAEgC,QAAQ,EAAc,GAAA;QACzE,MAAMiB,QAAAA,GAAW,MAAMM,aAAc,CAAA;AACnCxD,YAAAA,IAAAA;AACAC,YAAAA,WAAAA;AACAgC,YAAAA;AACF,SAAA,CAAA;AACA,QAAA,IAAI,UAAUiB,QAAU,EAAA;;YAEtBT,kBAAmB,CAAA;gBACjBmC,IAAM,EAAA,SAAA;AACNE,gBAAAA,OAAAA,EAAShG,aAAc,CAAA;oBACrBQ,EAAI,EAAA,6DAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;YAEAuE,UAAW,CAAA,kBAAA,CAAA;AACXnB,YAAAA,QAAAA,CAASO,SAASE,IAAI,CAACA,IAAI,CAAC9D,EAAE,CAACyG,QAAQ,EAAA,CAAA;AACzC,SAAA,MAAO,IAAIC,YAAAA,CAAa9C,QAAS+C,CAAAA,KAAK,CAAG,EAAA;;YAEvCxD,kBAAmB,CAAA;gBACjBmC,IAAM,EAAA,QAAA;gBACNE,OAASjC,EAAAA,cAAAA,CAAeK,SAAS+C,KAAK;AACxC,aAAA,CAAA;SACK,MAAA;;YAELxD,kBAAmB,CAAA;gBACjBmC,IAAM,EAAA,QAAA;AACNE,gBAAAA,OAAAA,EAAShG,aAAc,CAAA;oBAAEQ,EAAI,EAAA,oBAAA;oBAAsBC,cAAgB,EAAA;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,qBACEP,GAAA,CAACkH,QAAQrG,IAAI,EAAA;AACX,QAAA,QAAA,gBAAAe,IAACuF,CAAAA,IAAAA,EAAAA;AAAKC,YAAAA,WAAAA,EAAWhC,iBAAqBd,IAAAA,iBAAAA;;AACpC,8BAAAtE,GAAA,CAACkH,QAAQG,MAAM,EAAA;AACbxB,oBAAAA,KAAAA,EAAO/F,aAAc,CAAA;wBACnBQ,EAAI,EAAA,uCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;AACA+G,oBAAAA,eAAAA,gBACEtH,GAACuH,CAAAA,aAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAO1H,aAAc,CAAA;4BACnBQ,EAAI,EAAA,iCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;AAGJkH,oBAAAA,QAAAA,EAAU3H,aAAc,CAAA;wBACtBQ,EAAI,EAAA,iDAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;AACAmH,oBAAAA,aAAAA,EACEzC,0BACEjF,GAAC2H,CAAAA,MAAAA,EAAAA;AACCC,wBAAAA,SAAAA,gBAAW5H,GAAC6H,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA;wBACZC,OAAS9B,EAAAA,qBAAAA;wBACT+B,QAAU1B,EAAAA,gCAAAA;wBACV2B,SAAS,EAAA,IAAA;kCAERlI,aAAc,CAAA;4BACbQ,EAAI,EAAA,6CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;AAEA,qBAAA,CAAA,GAAA;;AAGR,8BAAAP,GAAA,CAACkH,QAAQe,OAAO,EAAA;4CACdrG,IAAA,CAAAsG,QAAA,EAAA;;AACG7B,4BAAAA,gCAAAA,kBACCrG,GAAC0C,CAAAA,WAAAA,EAAAA;gCACCyF,YAAc,EAAA,CAAA;AACdC,gCAAAA,MAAAA,gBACEpI,GAACf,CAAAA,IAAAA,EAAAA;oCAAKoJ,IAAK,EAAA,iCAAA;oCAAkC1G,UAAU,EAAA,IAAA;8CACpD7B,aAAc,CAAA;wCACbQ,EAAI,EAAA,0DAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;AAGJsF,gCAAAA,KAAAA,EAAO/F,aACL,CAAA;oCACEQ,EAAI,EAAA,yDAAA;oCACJC,cACE,EAAA;iCAEJ,EAAA;oCAAE+H,MAAQzD,EAAAA;AAAgB,iCAAA,CAAA;AAE5B0D,gCAAAA,OAAAA,EAAS,IAAO,EAAA;gCAChBC,UAAW,EAAA,EAAA;0CAEV1I,aAAc,CAAA;oCACbQ,EAAI,EAAA,2DAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;AAGJ,0CAAAqB,IAAA,CAAC6G,KAAK5H,IAAI,EAAA;gCAACwB,OAAQ,EAAA,QAAA;gCAASqG,aAAepC,EAAAA,eAAAA;gCAAiBqC,KAAOrD,EAAAA,SAAAA;;kDACjE1D,IAACgH,CAAAA,GAAAA,EAAAA;wCAAIC,aAAe,EAAA,CAAA;;AAClB,0DAAAjH,IAAA,CAAC6G,KAAKK,IAAI,EAAA;AACRC,gDAAAA,YAAAA,EAAYjJ,aAAc,CAAA;oDACxBQ,EAAI,EAAA,iDAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA,CAAA;;AAEA,kEAAAP,GAAA,CAACyI,KAAKO,OAAO,EAAA;wDAACL,KAAM,EAAA,SAAA;kEACjB7I,aACC,CAAA;4DACEQ,EAAI,EAAA,6CAAA;4DACJC,cAAgB,EAAA;yDAElB,EAAA;4DACE0I,KAAO9C,EAAAA;AACT,yDAAA;;AAGJ,kEAAAnG,GAAA,CAACyI,KAAKO,OAAO,EAAA;wDAACL,KAAM,EAAA,MAAA;kEACjB7I,aAAc,CAAA;4DACbQ,EAAI,EAAA,0CAAA;4DACJC,cAAgB,EAAA;AAClB,yDAAA;;;;0DAGJP,GAACkJ,CAAAA,OAAAA,EAAAA,EAAAA;;;AAGH,kDAAAlJ,GAAA,CAACyI,KAAKR,OAAO,EAAA;wCAACU,KAAM,EAAA,SAAA;AAClB,wCAAA,QAAA,gBAAA3I,GAACN,CAAAA,YAAAA,EAAAA;4CACCC,YAAa,EAAA,SAAA;AACbC,4CAAAA,QAAAA,EAAUsE,UAAUqB,WAAanB,EAAAA,IAAAA;4CACjCvE,OAASA,EAAAA;;;AAIb,kDAAAG,GAAA,CAACyI,KAAKR,OAAO,EAAA;wCAACU,KAAM,EAAA,MAAA;AAClB,wCAAA,QAAA,gBAAA3I,GAACN,CAAAA,YAAAA,EAAAA;4CACCC,YAAa,EAAA,MAAA;AACbC,4CAAAA,QAAAA,EAAUsE,UAAUqB,WAAanB,EAAAA,IAAAA;4CACjCvE,OAASA,EAAAA;;;;;AAIf,0CAAA+B,IAAA,CAACuH,WAAWtI,IAAI,EAAA;gCACb,GAAGqD,QAAAA,EAAUqB,WAAaC,EAAAA,IAAAA,EAAMkB,UAAU;gCAC3C0C,eAAiBlF,EAAAA,QAAAA,EAAUqB,WAAaC,EAAAA,IAAAA,EAAMkB,UAAYD,EAAAA,QAAAA;;AAE1D,kDAAAzG,GAAA,CAACmJ,WAAWE,QAAQ,EAAA;wCAACC,OAAS,EAAA;AAAC,4CAAA,GAAA;AAAK,4CAAA,IAAA;AAAM,4CAAA,IAAA;AAAM,4CAAA;AAAK;;AACrD,kDAAAtJ,GAAA,CAACmJ,WAAWI,KAAK,EAAA,EAAA;;;;;;8BAIvBvJ,GAACwJ,CAAAA,YAAAA,EAAAA;oBACCC,IAAMpG,EAAAA,iBAAAA;oBACNqG,WAAa1D,EAAAA,qBAAAA;oBACb2D,YAAc7C,EAAAA,gBAAAA;oBACdzC,SAAWI,EAAAA,gBAAAA;oBACXmF,aAAe,EAAA;AACb,wBAAA,GAAGhH,mBAAmB;AACtBK,wBAAAA,QAAAA,EAAUmB,IAAMA,EAAAA,IAAAA,CAAKyF,eAAkBzF,GAAAA,IAAAA,CAAKA,IAAI,CAACyF,eAAe,CAACC,KAAK,CAAC,GAAI,CAAA,CAAC,EAAE,GAAG;AACnF;;;;;AAKV;;;;"}
|
|
@@ -112,6 +112,7 @@ const ReleasesSettingsPage = ()=>{
|
|
|
112
112
|
loading: isSubmitting,
|
|
113
113
|
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
|
|
114
114
|
type: "submit",
|
|
115
|
+
fullWidth: true,
|
|
115
116
|
children: formatMessage({
|
|
116
117
|
id: 'global.save',
|
|
117
118
|
defaultMessage: 'Save'
|
|
@@ -150,7 +151,7 @@ const ReleasesSettingsPage = ()=>{
|
|
|
150
151
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Root, {
|
|
151
152
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
|
|
152
153
|
col: 6,
|
|
153
|
-
|
|
154
|
+
xs: 12,
|
|
154
155
|
direction: "column",
|
|
155
156
|
alignItems: "stretch",
|
|
156
157
|
children: /*#__PURE__*/ jsxRuntime.jsx(TimezoneDropdown, {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReleasesSettingsPage.js","sources":["../../../admin/src/pages/ReleasesSettingsPage.tsx"],"sourcesContent":["import {\n Form,\n Layouts,\n Page,\n useAPIErrorHandler,\n isFetchError,\n GradientBadge,\n useNotification,\n useField,\n useRBAC,\n FormHelpers,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Combobox,\n ComboboxOption,\n Field,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTypedSelector } from '../modules/hooks';\nimport { useGetReleaseSettingsQuery, useUpdateReleaseSettingsMutation } from '../services/release';\nimport { getTimezones } from '../utils/time';\nimport { SETTINGS_SCHEMA } from '../validation/schemas';\n\nimport type { UpdateSettings } from '../../../shared/contracts/settings';\n\ninterface UpdateDefaultTimezone {\n defaultTimezone: string;\n}\n\nconst ReleasesSettingsPage = () => {\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const { data, isLoading: isLoadingSettings } = useGetReleaseSettingsQuery();\n const [updateReleaseSettings, { isLoading: isSubmittingForm }] =\n useUpdateReleaseSettingsMutation();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['releases']\n );\n const {\n allowedActions: { canUpdate },\n } = useRBAC(permissions);\n\n const { timezoneList } = getTimezones(new Date());\n\n const handleSubmit = async (\n body: UpdateSettings.Request['body'],\n { setErrors }: FormHelpers<UpdateDefaultTimezone>\n ) => {\n const { defaultTimezone } = body;\n const formattedDefaultTimezone = defaultTimezone;\n const isBodyTimezoneValid = timezoneList.some(\n (timezone) => timezone.value === formattedDefaultTimezone\n );\n\n if (!isBodyTimezoneValid && defaultTimezone) {\n const errorMessage = formatMessage({\n id: 'components.Input.error.validation.combobox.invalid',\n defaultMessage: 'The value provided is not valid',\n });\n setErrors({\n defaultTimezone: errorMessage,\n });\n toggleNotification({\n type: 'danger',\n message: errorMessage,\n });\n return;\n }\n\n const newBody =\n !defaultTimezone || !isBodyTimezoneValid\n ? { defaultTimezone: null }\n : { defaultTimezone: formattedDefaultTimezone };\n\n try {\n const response = await updateReleaseSettings(newBody);\n\n if ('data' in response) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.pages.Settings.releases.setting.default-timezone-notification-success',\n defaultMessage: 'Default timezone updated.',\n }),\n });\n } else if (isFetchError(response.error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n if (isLoadingSettings) {\n return <Page.Loading />;\n }\n\n const releasePageTitle = formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n });\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: releasePageTitle,\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isLoadingSettings} tabIndex={-1}>\n <Form\n method=\"PUT\"\n initialValues={{\n defaultTimezone: data?.data.defaultTimezone,\n }}\n onSubmit={handleSubmit}\n validationSchema={SETTINGS_SCHEMA}\n >\n {({ modified, isSubmitting }: { modified: boolean; isSubmitting: boolean }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n canUpdate ? (\n <Button\n disabled={!modified || isSubmittingForm}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n title={releasePageTitle}\n subtitle={formatMessage({\n id: 'content-releases.pages.Settings.releases.description',\n defaultMessage: 'Create and manage content updates',\n })}\n />\n <Layouts.Content>\n <Flex\n direction=\"column\"\n background=\"neutral0\"\n alignItems=\"stretch\"\n padding={6}\n gap={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'content-releases.pages.Settings.releases.preferences.title',\n defaultMessage: 'Preferences',\n })}\n </Typography>\n <Grid.Root>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <TimezoneDropdown />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n </>\n );\n};\n\nconst TimezoneDropdown = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['releases']\n );\n const {\n allowedActions: { canUpdate },\n } = useRBAC(permissions);\n const { formatMessage } = useIntl();\n const { timezoneList } = getTimezones(new Date());\n const field = useField('defaultTimezone');\n return (\n <Field.Root\n name=\"defaultTimezone\"\n hint={formatMessage({\n id: 'content-releases.pages.Settings.releases.timezone.hint',\n defaultMessage: 'The timezone of every release can still be changed individually.',\n })}\n error={field.error}\n >\n <Field.Label>\n {formatMessage({\n id: 'content-releases.pages.Settings.releases.timezone.label',\n defaultMessage: 'Default timezone',\n })}\n </Field.Label>\n <Combobox\n autocomplete={{ type: 'list', filter: 'contains' }}\n onTextValueChange={(value) => field.onChange('defaultTimezone', value)}\n onChange={(value) => {\n if ((field.value && value) || !field.value) {\n field.onChange('defaultTimezone', value);\n }\n }}\n onClear={() => field.onChange('defaultTimezone', '')}\n value={field.value}\n disabled={!canUpdate}\n >\n {timezoneList.map((timezone) => (\n <ComboboxOption key={timezone.value} value={timezone.value}>\n {timezone.value.replace(/&/, ' ')}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedSettingsPage\n * -----------------------------------------------------------------------------------------------*/\n\nexport const ProtectedReleasesSettingsPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['releases']?.read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ReleasesSettingsPage />\n </Page.Protect>\n );\n};\n"],"names":["ReleasesSettingsPage","formatMessage","useIntl","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","updateReleaseSettings","isSubmittingForm","useUpdateReleaseSettingsMutation","permissions","useTypedSelector","state","admin_app","allowedActions","canUpdate","useRBAC","timezoneList","getTimezones","Date","handleSubmit","body","setErrors","defaultTimezone","formattedDefaultTimezone","isBodyTimezoneValid","some","timezone","value","errorMessage","id","defaultMessage","type","message","newBody","response","isFetchError","error","_jsx","Page","Loading","releasePageTitle","_jsxs","_Fragment","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","Layouts","Header","primaryAction","Button","disabled","loading","startIcon","Check","secondaryAction","GradientBadge","label","title","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Root","Item","col","s","TimezoneDropdown","field","useField","Field","hint","Label","Combobox","autocomplete","filter","onTextValueChange","onChange","onClear","map","ComboboxOption","replace","Hint","Error","ProtectedReleasesSettingsPage","read","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReleasesSettingsPage.js","sources":["../../../admin/src/pages/ReleasesSettingsPage.tsx"],"sourcesContent":["import {\n Form,\n Layouts,\n Page,\n useAPIErrorHandler,\n isFetchError,\n GradientBadge,\n useNotification,\n useField,\n useRBAC,\n FormHelpers,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Combobox,\n ComboboxOption,\n Field,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTypedSelector } from '../modules/hooks';\nimport { useGetReleaseSettingsQuery, useUpdateReleaseSettingsMutation } from '../services/release';\nimport { getTimezones } from '../utils/time';\nimport { SETTINGS_SCHEMA } from '../validation/schemas';\n\nimport type { UpdateSettings } from '../../../shared/contracts/settings';\n\ninterface UpdateDefaultTimezone {\n defaultTimezone: string;\n}\n\nconst ReleasesSettingsPage = () => {\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const { data, isLoading: isLoadingSettings } = useGetReleaseSettingsQuery();\n const [updateReleaseSettings, { isLoading: isSubmittingForm }] =\n useUpdateReleaseSettingsMutation();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['releases']\n );\n const {\n allowedActions: { canUpdate },\n } = useRBAC(permissions);\n\n const { timezoneList } = getTimezones(new Date());\n\n const handleSubmit = async (\n body: UpdateSettings.Request['body'],\n { setErrors }: FormHelpers<UpdateDefaultTimezone>\n ) => {\n const { defaultTimezone } = body;\n const formattedDefaultTimezone = defaultTimezone;\n const isBodyTimezoneValid = timezoneList.some(\n (timezone) => timezone.value === formattedDefaultTimezone\n );\n\n if (!isBodyTimezoneValid && defaultTimezone) {\n const errorMessage = formatMessage({\n id: 'components.Input.error.validation.combobox.invalid',\n defaultMessage: 'The value provided is not valid',\n });\n setErrors({\n defaultTimezone: errorMessage,\n });\n toggleNotification({\n type: 'danger',\n message: errorMessage,\n });\n return;\n }\n\n const newBody =\n !defaultTimezone || !isBodyTimezoneValid\n ? { defaultTimezone: null }\n : { defaultTimezone: formattedDefaultTimezone };\n\n try {\n const response = await updateReleaseSettings(newBody);\n\n if ('data' in response) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-releases.pages.Settings.releases.setting.default-timezone-notification-success',\n defaultMessage: 'Default timezone updated.',\n }),\n });\n } else if (isFetchError(response.error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(response.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n if (isLoadingSettings) {\n return <Page.Loading />;\n }\n\n const releasePageTitle = formatMessage({\n id: 'content-releases.pages.Releases.title',\n defaultMessage: 'Releases',\n });\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: releasePageTitle,\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isLoadingSettings} tabIndex={-1}>\n <Form\n method=\"PUT\"\n initialValues={{\n defaultTimezone: data?.data.defaultTimezone,\n }}\n onSubmit={handleSubmit}\n validationSchema={SETTINGS_SCHEMA}\n >\n {({ modified, isSubmitting }: { modified: boolean; isSubmitting: boolean }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n canUpdate ? (\n <Button\n disabled={!modified || isSubmittingForm}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n title={releasePageTitle}\n subtitle={formatMessage({\n id: 'content-releases.pages.Settings.releases.description',\n defaultMessage: 'Create and manage content updates',\n })}\n />\n <Layouts.Content>\n <Flex\n direction=\"column\"\n background=\"neutral0\"\n alignItems=\"stretch\"\n padding={6}\n gap={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'content-releases.pages.Settings.releases.preferences.title',\n defaultMessage: 'Preferences',\n })}\n </Typography>\n <Grid.Root>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TimezoneDropdown />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n </>\n );\n};\n\nconst TimezoneDropdown = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['releases']\n );\n const {\n allowedActions: { canUpdate },\n } = useRBAC(permissions);\n const { formatMessage } = useIntl();\n const { timezoneList } = getTimezones(new Date());\n const field = useField('defaultTimezone');\n return (\n <Field.Root\n name=\"defaultTimezone\"\n hint={formatMessage({\n id: 'content-releases.pages.Settings.releases.timezone.hint',\n defaultMessage: 'The timezone of every release can still be changed individually.',\n })}\n error={field.error}\n >\n <Field.Label>\n {formatMessage({\n id: 'content-releases.pages.Settings.releases.timezone.label',\n defaultMessage: 'Default timezone',\n })}\n </Field.Label>\n <Combobox\n autocomplete={{ type: 'list', filter: 'contains' }}\n onTextValueChange={(value) => field.onChange('defaultTimezone', value)}\n onChange={(value) => {\n if ((field.value && value) || !field.value) {\n field.onChange('defaultTimezone', value);\n }\n }}\n onClear={() => field.onChange('defaultTimezone', '')}\n value={field.value}\n disabled={!canUpdate}\n >\n {timezoneList.map((timezone) => (\n <ComboboxOption key={timezone.value} value={timezone.value}>\n {timezone.value.replace(/&/, ' ')}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedSettingsPage\n * -----------------------------------------------------------------------------------------------*/\n\nexport const ProtectedReleasesSettingsPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['releases']?.read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ReleasesSettingsPage />\n </Page.Protect>\n );\n};\n"],"names":["ReleasesSettingsPage","formatMessage","useIntl","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","data","isLoading","isLoadingSettings","useGetReleaseSettingsQuery","updateReleaseSettings","isSubmittingForm","useUpdateReleaseSettingsMutation","permissions","useTypedSelector","state","admin_app","allowedActions","canUpdate","useRBAC","timezoneList","getTimezones","Date","handleSubmit","body","setErrors","defaultTimezone","formattedDefaultTimezone","isBodyTimezoneValid","some","timezone","value","errorMessage","id","defaultMessage","type","message","newBody","response","isFetchError","error","_jsx","Page","Loading","releasePageTitle","_jsxs","_Fragment","Title","name","Main","aria-busy","tabIndex","Form","method","initialValues","onSubmit","validationSchema","SETTINGS_SCHEMA","modified","isSubmitting","Layouts","Header","primaryAction","Button","disabled","loading","startIcon","Check","fullWidth","secondaryAction","GradientBadge","label","title","subtitle","Content","Flex","direction","background","alignItems","padding","gap","shadow","hasRadius","Typography","variant","tag","Grid","Root","Item","col","xs","TimezoneDropdown","field","useField","Field","hint","Label","Combobox","autocomplete","filter","onTextValueChange","onChange","onClear","map","ComboboxOption","replace","Hint","Error","ProtectedReleasesSettingsPage","read","Protect"],"mappings":"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"}
|
|
@@ -110,6 +110,7 @@ const ReleasesSettingsPage = ()=>{
|
|
|
110
110
|
loading: isSubmitting,
|
|
111
111
|
startIcon: /*#__PURE__*/ jsx(Check, {}),
|
|
112
112
|
type: "submit",
|
|
113
|
+
fullWidth: true,
|
|
113
114
|
children: formatMessage({
|
|
114
115
|
id: 'global.save',
|
|
115
116
|
defaultMessage: 'Save'
|
|
@@ -148,7 +149,7 @@ const ReleasesSettingsPage = ()=>{
|
|
|
148
149
|
/*#__PURE__*/ jsx(Grid.Root, {
|
|
149
150
|
children: /*#__PURE__*/ jsx(Grid.Item, {
|
|
150
151
|
col: 6,
|
|
151
|
-
|
|
152
|
+
xs: 12,
|
|
152
153
|
direction: "column",
|
|
153
154
|
alignItems: "stretch",
|
|
154
155
|
children: /*#__PURE__*/ jsx(TimezoneDropdown, {})
|