@strapi/review-workflows 5.12.0-beta.1 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/admin/chunks/{Layout-COWXwu3C.js → Layout-C4ri_ldC.js} +2 -2
  2. package/dist/admin/chunks/{Layout-COWXwu3C.js.map → Layout-C4ri_ldC.js.map} +1 -1
  3. package/dist/admin/chunks/{Layout-CsShRydy.mjs → Layout-CF497D6H.mjs} +2 -2
  4. package/dist/admin/chunks/{Layout-CsShRydy.mjs.map → Layout-CF497D6H.mjs.map} +1 -1
  5. package/dist/admin/chunks/{id-D8zbh_Y8.js → id-DVOtqJqn.js} +3 -3
  6. package/dist/admin/chunks/{id-D8zbh_Y8.js.map → id-DVOtqJqn.js.map} +1 -1
  7. package/dist/admin/chunks/{id-afdVynVx.mjs → id-QD0V9dME.mjs} +3 -3
  8. package/dist/admin/chunks/{id-afdVynVx.mjs.map → id-QD0V9dME.mjs.map} +1 -1
  9. package/dist/admin/chunks/{index-7Tk-SHLf.js → index-CCx4kT-t.js} +3 -3
  10. package/dist/admin/chunks/{index-7Tk-SHLf.js.map → index-CCx4kT-t.js.map} +1 -1
  11. package/dist/admin/chunks/{index-CEABZUwQ.js → index-CzdEqFOm.js} +3 -3
  12. package/dist/admin/chunks/{index-CEABZUwQ.js.map → index-CzdEqFOm.js.map} +1 -1
  13. package/dist/admin/chunks/{index-2VGAYchq.mjs → index-DcEF47R4.mjs} +3 -3
  14. package/dist/admin/chunks/{index-2VGAYchq.mjs.map → index-DcEF47R4.mjs.map} +1 -1
  15. package/dist/admin/chunks/{index-BXlkcM4s.mjs → index-iChY7MsG.mjs} +3 -3
  16. package/dist/admin/chunks/{index-BXlkcM4s.mjs.map → index-iChY7MsG.mjs.map} +1 -1
  17. package/dist/admin/chunks/{purchase-review-workflows-BJkm1_Dd.mjs → purchase-review-workflows-4n0KXAeo.mjs} +73 -53
  18. package/dist/admin/chunks/{purchase-review-workflows-BJkm1_Dd.mjs.map → purchase-review-workflows-4n0KXAeo.mjs.map} +1 -1
  19. package/dist/admin/chunks/{purchase-review-workflows-BQL0PbmB.js → purchase-review-workflows-BDLncDcz.js} +72 -52
  20. package/dist/admin/chunks/{purchase-review-workflows-BQL0PbmB.js.map → purchase-review-workflows-BDLncDcz.js.map} +1 -1
  21. package/dist/admin/chunks/{router-Cc8VcSCc.js → router-ChVwf8TN.js} +3 -3
  22. package/dist/admin/chunks/{router-Cc8VcSCc.js.map → router-ChVwf8TN.js.map} +1 -1
  23. package/dist/admin/chunks/{router-JyFAzv9_.mjs → router-D-YCUzYy.mjs} +3 -3
  24. package/dist/admin/chunks/{router-JyFAzv9_.mjs.map → router-D-YCUzYy.mjs.map} +1 -1
  25. package/dist/admin/index.js +1 -1
  26. package/dist/admin/index.mjs +1 -1
  27. package/dist/server/index.js +1 -1
  28. package/dist/server/index.js.map +1 -1
  29. package/dist/server/index.mjs +1 -1
  30. package/dist/server/index.mjs.map +1 -1
  31. package/package.json +5 -5
@@ -6,8 +6,8 @@ import { LinkButton, TFooter, Typography, Flex, IconButton, Dialog } from '@stra
6
6
  import { Plus, Pencil, Trash } from '@strapi/icons';
7
7
  import { useIntl } from 'react-intl';
8
8
  import { useNavigate, NavLink, Link } from 'react-router-dom';
9
- import { a as useGetContentTypesQuery, u as useTypedSelector, C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, L as LimitsModal } from './index-2VGAYchq.mjs';
10
- import { u as useReviewWorkflows, H as Header, R as Root } from './Layout-CsShRydy.mjs';
9
+ import { a as useGetContentTypesQuery, u as useTypedSelector, C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, L as LimitsModal } from './index-DcEF47R4.mjs';
10
+ import { u as useReviewWorkflows, H as Header, R as Root } from './Layout-CF497D6H.mjs';
11
11
  import '@strapi/content-manager/strapi-admin';
12
12
  import 'react-redux';
13
13
  import 'styled-components';
@@ -268,4 +268,4 @@ const ProtectedListPage = ()=>{
268
268
  };
269
269
 
270
270
  export { ProtectedListPage, ReviewWorkflowsListView };
271
- //# sourceMappingURL=index-BXlkcM4s.mjs.map
271
+ //# sourceMappingURL=index-iChY7MsG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BXlkcM4s.mjs","sources":["../../../admin/src/routes/settings/index.tsx"],"sourcesContent":["/* eslint-disable check-file/no-index */\n/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useTracking, ConfirmDialog, useRBAC, Table } from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Flex, IconButton, TFooter, Typography, LinkButton, Dialog } from '@strapi/design-system';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Link, useNavigate } from 'react-router-dom';\n\nimport { LimitsModal } from '../../components/LimitsModal';\nimport { CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME } from '../../constants';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { ContentType, useGetContentTypesQuery } from '../../services/content-manager';\n\nimport * as Layout from './components/Layout';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\n\nexport const ReviewWorkflowsListView = () => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const [workflowToDelete, setWorkflowToDelete] = React.useState<string | null>(null);\n const [showLimitModal, setShowLimitModal] = React.useState<boolean>(false);\n const { data, isLoading: isLoadingModels } = useGetContentTypesQuery();\n const { meta, workflows, isLoading, delete: deleteAction } = useReviewWorkflows();\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['review-workflows']\n );\n const {\n allowedActions: { canCreate, canRead, canUpdate, canDelete },\n } = useRBAC(permissions);\n\n const limits = getFeature('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] as string;\n\n const handleDeleteWorkflow = (workflowId: string) => {\n setWorkflowToDelete(workflowId);\n };\n\n const toggleConfirmDeleteDialog = () => {\n setWorkflowToDelete(null);\n };\n\n const handleConfirmDeleteDialog = async () => {\n if (!workflowToDelete) return;\n\n await deleteAction(workflowToDelete);\n\n setWorkflowToDelete(null);\n };\n\n const handleCreateClick: React.MouseEventHandler<HTMLAnchorElement> &\n ((event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void) = (event) => {\n event.preventDefault();\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit. If so,\n * prevent the navigation and show the limits overlay.\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (numberOfWorkflows && meta && meta?.workflowCount >= parseInt(numberOfWorkflows, 10)) {\n event.preventDefault();\n setShowLimitModal(true);\n } else {\n navigate('create');\n trackUsage('willCreateWorkflow');\n }\n };\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoading && !isLicenseLoading) {\n if (numberOfWorkflows && meta && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal(true);\n }\n }\n }, [isLicenseLoading, isLoading, meta, meta?.workflowCount, numberOfWorkflows]);\n\n const headers = [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.name.title',\n defaultMessage: 'Name',\n }),\n name: 'name',\n },\n {\n label: formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.stages.title',\n defaultMessage: 'Stages',\n }),\n name: 'stages',\n },\n {\n label: formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.contentTypes.title',\n defaultMessage: 'Content Types',\n }),\n name: 'content-types',\n },\n ];\n\n if (isLoading || isLoadingModels) {\n return <Page.Loading />;\n }\n\n const contentTypes = Object.values(data ?? {}).reduce<ContentType[]>((acc, curr) => {\n acc.push(...curr);\n return acc;\n }, []);\n\n return (\n <>\n <Layout.Header\n primaryAction={\n canCreate ? (\n <LinkButton\n startIcon={<Plus />}\n size=\"S\"\n tag={NavLink}\n to=\"create\"\n onClick={handleCreateClick}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </LinkButton>\n ) : null\n }\n subtitle={formatMessage({\n id: 'Settings.review-workflows.list.page.subtitle',\n defaultMessage: 'Manage your content review process',\n })}\n title={formatMessage({\n id: 'Settings.review-workflows.list.page.title',\n defaultMessage: 'Review Workflows',\n })}\n />\n\n <Layout.Root>\n <Table.Root\n isLoading={isLoading}\n rows={workflows}\n footer={\n canCreate ? (\n <TFooter cursor=\"pointer\" icon={<Plus />} onClick={handleCreateClick}>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </TFooter>\n ) : null\n }\n headers={headers}\n >\n <Table.Content>\n <Table.Head>\n {headers.map((head) => (\n <Table.HeaderCell key={head.name} {...head} />\n ))}\n </Table.Head>\n\n <Table.Body>\n {workflows.map((workflow) => (\n <Table.Row\n onClick={() => {\n navigate(`${workflow.id}`);\n }}\n key={workflow.id}\n >\n <Table.Cell width=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {workflow.name}\n </Typography>\n </Table.Cell>\n <Table.Cell>\n <Typography textColor=\"neutral800\">{workflow.stages.length}</Typography>\n </Table.Cell>\n <Table.Cell>\n <Typography textColor=\"neutral800\">\n {workflow.contentTypes\n .map((uid: string) => {\n const contentType = contentTypes.find(\n (contentType) => contentType.uid === uid\n );\n\n return contentType?.info.displayName ?? '';\n })\n .join(', ')}\n </Typography>\n </Table.Cell>\n <Table.Cell>\n <Flex alignItems=\"center\" justifyContent=\"end\">\n {canRead || canUpdate ? (\n <IconButton\n tag={Link}\n to={workflow.id.toString()}\n label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.edit.label',\n defaultMessage: 'Edit {name}',\n },\n { name: workflow.name }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n ) : null}\n {workflows.length > 1 && canDelete ? (\n <IconButton\n withTooltip={false}\n label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.delete.label',\n defaultMessage: 'Delete {name}',\n },\n { name: 'Default workflow' }\n )}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n handleDeleteWorkflow(String(workflow.id));\n }}\n >\n <Trash />\n </IconButton>\n ) : null}\n </Flex>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n\n <Dialog.Root open={!!workflowToDelete} onOpenChange={toggleConfirmDeleteDialog}>\n <ConfirmDialog onConfirm={handleConfirmDeleteDialog}>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.delete.confirm.body',\n defaultMessage:\n 'If you remove this worfklow, all stage-related information will be removed for this content-type. Are you sure you want to remove it?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n\n <LimitsModal.Root open={showLimitModal} onOpenChange={() => setShowLimitModal(false)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </Layout.Root>\n </>\n );\n};\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['review-workflows']?.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ReviewWorkflowsListView />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage };\n"],"names":["ReviewWorkflowsListView","formatMessage","useIntl","navigate","useNavigate","trackUsage","useTracking","workflowToDelete","setWorkflowToDelete","React","useState","showLimitModal","setShowLimitModal","data","isLoading","isLoadingModels","useGetContentTypesQuery","meta","workflows","delete","deleteAction","useReviewWorkflows","getFeature","isLicenseLoading","useLicenseLimits","permissions","useTypedSelector","state","admin_app","settings","allowedActions","canCreate","canRead","canUpdate","canDelete","useRBAC","limits","numberOfWorkflows","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","handleDeleteWorkflow","workflowId","toggleConfirmDeleteDialog","handleConfirmDeleteDialog","handleCreateClick","event","preventDefault","workflowCount","parseInt","useEffect","headers","label","id","defaultMessage","name","_jsx","Page","Loading","contentTypes","Object","values","reduce","acc","curr","push","_jsxs","_Fragment","Layout","primaryAction","LinkButton","startIcon","Plus","size","tag","NavLink","to","onClick","subtitle","title","Table","Root","rows","footer","TFooter","cursor","icon","Content","Head","map","head","HeaderCell","Body","workflow","Row","Cell","width","Typography","textColor","fontWeight","ellipsis","stages","length","uid","contentType","find","info","displayName","join","Flex","alignItems","justifyContent","IconButton","Link","toString","variant","Pencil","withTooltip","e","stopPropagation","String","Trash","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","LimitsModal","Title","ProtectedListPage","main","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"index-iChY7MsG.mjs","sources":["../../../admin/src/routes/settings/index.tsx"],"sourcesContent":["/* eslint-disable check-file/no-index */\n/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useTracking, ConfirmDialog, useRBAC, Table } from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Flex, IconButton, TFooter, Typography, LinkButton, Dialog } from '@strapi/design-system';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Link, useNavigate } from 'react-router-dom';\n\nimport { LimitsModal } from '../../components/LimitsModal';\nimport { CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME } from '../../constants';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { ContentType, useGetContentTypesQuery } from '../../services/content-manager';\n\nimport * as Layout from './components/Layout';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\n\nexport const ReviewWorkflowsListView = () => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const [workflowToDelete, setWorkflowToDelete] = React.useState<string | null>(null);\n const [showLimitModal, setShowLimitModal] = React.useState<boolean>(false);\n const { data, isLoading: isLoadingModels } = useGetContentTypesQuery();\n const { meta, workflows, isLoading, delete: deleteAction } = useReviewWorkflows();\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['review-workflows']\n );\n const {\n allowedActions: { canCreate, canRead, canUpdate, canDelete },\n } = useRBAC(permissions);\n\n const limits = getFeature('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] as string;\n\n const handleDeleteWorkflow = (workflowId: string) => {\n setWorkflowToDelete(workflowId);\n };\n\n const toggleConfirmDeleteDialog = () => {\n setWorkflowToDelete(null);\n };\n\n const handleConfirmDeleteDialog = async () => {\n if (!workflowToDelete) return;\n\n await deleteAction(workflowToDelete);\n\n setWorkflowToDelete(null);\n };\n\n const handleCreateClick: React.MouseEventHandler<HTMLAnchorElement> &\n ((event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void) = (event) => {\n event.preventDefault();\n /**\n * If the current license has a workflow limit:\n * check if the total count of workflows exceeds that limit. If so,\n * prevent the navigation and show the limits overlay.\n *\n * If the current license does not have a limit (e.g. offline license):\n * allow the user to navigate to the create-view. In case they exceed the\n * current hard-limit of 200 they will see an error thrown by the API.\n */\n\n if (numberOfWorkflows && meta && meta?.workflowCount >= parseInt(numberOfWorkflows, 10)) {\n event.preventDefault();\n setShowLimitModal(true);\n } else {\n navigate('create');\n trackUsage('willCreateWorkflow');\n }\n };\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoading && !isLicenseLoading) {\n if (numberOfWorkflows && meta && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal(true);\n }\n }\n }, [isLicenseLoading, isLoading, meta, meta?.workflowCount, numberOfWorkflows]);\n\n const headers = [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.name.title',\n defaultMessage: 'Name',\n }),\n name: 'name',\n },\n {\n label: formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.stages.title',\n defaultMessage: 'Stages',\n }),\n name: 'stages',\n },\n {\n label: formatMessage({\n id: 'Settings.review-workflows.list.page.list.column.contentTypes.title',\n defaultMessage: 'Content Types',\n }),\n name: 'content-types',\n },\n ];\n\n if (isLoading || isLoadingModels) {\n return <Page.Loading />;\n }\n\n const contentTypes = Object.values(data ?? {}).reduce<ContentType[]>((acc, curr) => {\n acc.push(...curr);\n return acc;\n }, []);\n\n return (\n <>\n <Layout.Header\n primaryAction={\n canCreate ? (\n <LinkButton\n startIcon={<Plus />}\n size=\"S\"\n tag={NavLink}\n to=\"create\"\n onClick={handleCreateClick}\n >\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </LinkButton>\n ) : null\n }\n subtitle={formatMessage({\n id: 'Settings.review-workflows.list.page.subtitle',\n defaultMessage: 'Manage your content review process',\n })}\n title={formatMessage({\n id: 'Settings.review-workflows.list.page.title',\n defaultMessage: 'Review Workflows',\n })}\n />\n\n <Layout.Root>\n <Table.Root\n isLoading={isLoading}\n rows={workflows}\n footer={\n canCreate ? (\n <TFooter cursor=\"pointer\" icon={<Plus />} onClick={handleCreateClick}>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.create',\n defaultMessage: 'Create new workflow',\n })}\n </TFooter>\n ) : null\n }\n headers={headers}\n >\n <Table.Content>\n <Table.Head>\n {headers.map((head) => (\n <Table.HeaderCell key={head.name} {...head} />\n ))}\n </Table.Head>\n\n <Table.Body>\n {workflows.map((workflow) => (\n <Table.Row\n onClick={() => {\n navigate(`${workflow.id}`);\n }}\n key={workflow.id}\n >\n <Table.Cell width=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {workflow.name}\n </Typography>\n </Table.Cell>\n <Table.Cell>\n <Typography textColor=\"neutral800\">{workflow.stages.length}</Typography>\n </Table.Cell>\n <Table.Cell>\n <Typography textColor=\"neutral800\">\n {workflow.contentTypes\n .map((uid: string) => {\n const contentType = contentTypes.find(\n (contentType) => contentType.uid === uid\n );\n\n return contentType?.info.displayName ?? '';\n })\n .join(', ')}\n </Typography>\n </Table.Cell>\n <Table.Cell>\n <Flex alignItems=\"center\" justifyContent=\"end\">\n {canRead || canUpdate ? (\n <IconButton\n tag={Link}\n to={workflow.id.toString()}\n label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.edit.label',\n defaultMessage: 'Edit {name}',\n },\n { name: workflow.name }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n ) : null}\n {workflows.length > 1 && canDelete ? (\n <IconButton\n withTooltip={false}\n label={formatMessage(\n {\n id: 'Settings.review-workflows.list.page.list.column.actions.delete.label',\n defaultMessage: 'Delete {name}',\n },\n { name: 'Default workflow' }\n )}\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation();\n handleDeleteWorkflow(String(workflow.id));\n }}\n >\n <Trash />\n </IconButton>\n ) : null}\n </Flex>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n\n <Dialog.Root open={!!workflowToDelete} onOpenChange={toggleConfirmDeleteDialog}>\n <ConfirmDialog onConfirm={handleConfirmDeleteDialog}>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.delete.confirm.body',\n defaultMessage:\n 'If you remove this worfklow, all stage-related information will be removed for this content-type. Are you sure you want to remove it?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n\n <LimitsModal.Root open={showLimitModal} onOpenChange={() => setShowLimitModal(false)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.list.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </Layout.Root>\n </>\n );\n};\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['review-workflows']?.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ReviewWorkflowsListView />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage };\n"],"names":["ReviewWorkflowsListView","formatMessage","useIntl","navigate","useNavigate","trackUsage","useTracking","workflowToDelete","setWorkflowToDelete","React","useState","showLimitModal","setShowLimitModal","data","isLoading","isLoadingModels","useGetContentTypesQuery","meta","workflows","delete","deleteAction","useReviewWorkflows","getFeature","isLicenseLoading","useLicenseLimits","permissions","useTypedSelector","state","admin_app","settings","allowedActions","canCreate","canRead","canUpdate","canDelete","useRBAC","limits","numberOfWorkflows","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","handleDeleteWorkflow","workflowId","toggleConfirmDeleteDialog","handleConfirmDeleteDialog","handleCreateClick","event","preventDefault","workflowCount","parseInt","useEffect","headers","label","id","defaultMessage","name","_jsx","Page","Loading","contentTypes","Object","values","reduce","acc","curr","push","_jsxs","_Fragment","Layout","primaryAction","LinkButton","startIcon","Plus","size","tag","NavLink","to","onClick","subtitle","title","Table","Root","rows","footer","TFooter","cursor","icon","Content","Head","map","head","HeaderCell","Body","workflow","Row","Cell","width","Typography","textColor","fontWeight","ellipsis","stages","length","uid","contentType","find","info","displayName","join","Flex","alignItems","justifyContent","IconButton","Link","toString","variant","Pencil","withTooltip","e","stopPropagation","String","Trash","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","LimitsModal","Title","ProtectedListPage","main","Protect"],"mappings":";;;;;;;;;;;;;;;MAmBaA,uBAA0B,GAAA,IAAA;IACrC,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAWC,GAAAA,WAAAA,EAAAA;IACjB,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,CAACC,gBAAkBC,EAAAA,mBAAAA,CAAoB,GAAGC,KAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;AAC9E,IAAA,MAAM,CAACC,cAAgBC,EAAAA,iBAAAA,CAAkB,GAAGH,KAAAA,CAAMC,QAAQ,CAAU,KAAA,CAAA;AACpE,IAAA,MAAM,EAAEG,IAAI,EAAEC,SAAWC,EAAAA,eAAe,EAAE,GAAGC,uBAAAA,EAAAA;IAC7C,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAEJ,SAAS,EAAEK,MAAAA,EAAQC,YAAY,EAAE,GAAGC,kBAAAA,EAAAA;AAC7D,IAAA,MAAM,EAAEC,UAAU,EAAER,SAAWS,EAAAA,gBAAgB,EAAE,GAAGC,gBAAAA,EAAAA;AACpD,IAAA,MAAMC,WAAcC,GAAAA,gBAAAA,CAClB,CAACC,KAAAA,GAAUA,KAAMC,CAAAA,SAAS,CAACH,WAAW,CAACI,QAAQ,GAAG,kBAAmB,CAAA,CAAA;AAEvE,IAAA,MAAM,EACJC,cAAAA,EAAgB,EAAEC,SAAS,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,EAAE,EAC7D,GAAGC,OAAQV,CAAAA,WAAAA,CAAAA;AAEZ,IAAA,MAAMW,SAASd,UAAW,CAAA,kBAAA,CAAA;IAC1B,MAAMe,iBAAAA,GAAoBD,MAAQ,GAACE,mCAAoC,CAAA;AAEvE,IAAA,MAAMC,uBAAuB,CAACC,UAAAA,GAAAA;QAC5BhC,mBAAoBgC,CAAAA,UAAAA,CAAAA;AACtB,KAAA;AAEA,IAAA,MAAMC,yBAA4B,GAAA,IAAA;QAChCjC,mBAAoB,CAAA,IAAA,CAAA;AACtB,KAAA;AAEA,IAAA,MAAMkC,yBAA4B,GAAA,UAAA;AAChC,QAAA,IAAI,CAACnC,gBAAkB,EAAA;AAEvB,QAAA,MAAMa,YAAab,CAAAA,gBAAAA,CAAAA;QAEnBC,mBAAoB,CAAA,IAAA,CAAA;AACtB,KAAA;AAEA,IAAA,MAAMmC,oBACiE,CAACC,KAAAA,GAAAA;AACtEA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;AACpB;;;;;;;;AAQC,QAED,IAAIR,iBAAqBpB,IAAAA,IAAAA,IAAQA,MAAM6B,aAAiBC,IAAAA,QAAAA,CAASV,mBAAmB,EAAK,CAAA,EAAA;AACvFO,YAAAA,KAAAA,CAAMC,cAAc,EAAA;YACpBjC,iBAAkB,CAAA,IAAA,CAAA;SACb,MAAA;YACLT,QAAS,CAAA,QAAA,CAAA;YACTE,UAAW,CAAA,oBAAA,CAAA;AACb;AACF,KAAA;AAEA;;;;;;;;;;;MAYAI,KAAAA,CAAMuC,SAAS,CAAC,IAAA;QACd,IAAI,CAAClC,SAAa,IAAA,CAACS,gBAAkB,EAAA;AACnC,YAAA,IAAIc,qBAAqBpB,IAAQA,IAAAA,IAAAA,EAAM6B,aAAgBC,GAAAA,QAAAA,CAASV,mBAAmB,EAAK,CAAA,EAAA;gBACtFzB,iBAAkB,CAAA,IAAA,CAAA;AACpB;AACF;KACC,EAAA;AAACW,QAAAA,gBAAAA;AAAkBT,QAAAA,SAAAA;AAAWG,QAAAA,IAAAA;QAAMA,IAAM6B,EAAAA,aAAAA;AAAeT,QAAAA;AAAkB,KAAA,CAAA;AAE9E,IAAA,MAAMY,OAAU,GAAA;AACd,QAAA;AACEC,YAAAA,KAAAA,EAAOjD,aAAc,CAAA;gBACnBkD,EAAI,EAAA,4DAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAC,IAAM,EAAA;AACR,SAAA;AACA,QAAA;AACEH,YAAAA,KAAAA,EAAOjD,aAAc,CAAA;gBACnBkD,EAAI,EAAA,8DAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAC,IAAM,EAAA;AACR,SAAA;AACA,QAAA;AACEH,YAAAA,KAAAA,EAAOjD,aAAc,CAAA;gBACnBkD,EAAI,EAAA,oEAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAC,IAAM,EAAA;AACR;AACD,KAAA;AAED,IAAA,IAAIvC,aAAaC,eAAiB,EAAA;QAChC,qBAAOuC,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,MAAMC,YAAAA,GAAeC,MAAOC,CAAAA,MAAM,CAAC9C,IAAAA,IAAQ,EAAI+C,CAAAA,CAAAA,MAAM,CAAgB,CAACC,GAAKC,EAAAA,IAAAA,GAAAA;AACzED,QAAAA,GAAAA,CAAIE,IAAI,CAAID,GAAAA,IAAAA,CAAAA;QACZ,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAE,CAAA;IAEL,qBACEG,IAAA,CAAAC,QAAA,EAAA;;AACE,0BAAAX,GAAA,CAACY,MAAa,EAAA;AACZC,gBAAAA,aAAAA,EACEpC,0BACEuB,GAACc,CAAAA,UAAAA,EAAAA;AACCC,oBAAAA,SAAAA,gBAAWf,GAACgB,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA;oBACZC,IAAK,EAAA,GAAA;oBACLC,GAAKC,EAAAA,OAAAA;oBACLC,EAAG,EAAA,QAAA;oBACHC,OAAShC,EAAAA,iBAAAA;8BAER1C,aAAc,CAAA;wBACbkD,EAAI,EAAA,4CAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;AAEA,iBAAA,CAAA,GAAA,IAAA;AAENwB,gBAAAA,QAAAA,EAAU3E,aAAc,CAAA;oBACtBkD,EAAI,EAAA,8CAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAyB,gBAAAA,KAAAA,EAAO5E,aAAc,CAAA;oBACnBkD,EAAI,EAAA,2CAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;AAGF,0BAAAY,IAAA,CAACE,IAAW,EAAA;;AACV,kCAAAZ,GAAA,CAACwB,MAAMC,IAAI,EAAA;wBACTjE,SAAWA,EAAAA,SAAAA;wBACXkE,IAAM9D,EAAAA,SAAAA;AACN+D,wBAAAA,MAAAA,EACElD,0BACEuB,GAAC4B,CAAAA,OAAAA,EAAAA;4BAAQC,MAAO,EAAA,SAAA;AAAUC,4BAAAA,IAAAA,gBAAM9B,GAACgB,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA;4BAASK,OAAShC,EAAAA,iBAAAA;sCAChD1C,aAAc,CAAA;gCACbkD,EAAI,EAAA,4CAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;AAEA,yBAAA,CAAA,GAAA,IAAA;wBAENH,OAASA,EAAAA,OAAAA;gDAETe,IAAA,CAACc,MAAMO,OAAO,EAAA;;AACZ,8CAAA/B,GAAA,CAACwB,MAAMQ,IAAI,EAAA;AACRrC,oCAAAA,QAAAA,EAAAA,OAAAA,CAAQsC,GAAG,CAAC,CAACC,IACZ,iBAAAlC,GAAA,CAACwB,MAAMW,UAAU,EAAA;AAAkB,4CAAA,GAAGD;AAAfA,yCAAAA,EAAAA,IAAAA,CAAKnC,IAAI,CAAA;;AAIpC,8CAAAC,GAAA,CAACwB,MAAMY,IAAI,EAAA;AACRxE,oCAAAA,QAAAA,EAAAA,SAAAA,CAAUqE,GAAG,CAAC,CAACI,QACd,iBAAA3B,IAAA,CAACc,MAAMc,GAAG,EAAA;4CACRjB,OAAS,EAAA,IAAA;AACPxE,gDAAAA,QAAAA,CAAS,CAAC,EAAEwF,QAASxC,CAAAA,EAAE,CAAC,CAAC,CAAA;AAC3B,6CAAA;;AAGA,8DAAAG,GAAA,CAACwB,MAAMe,IAAI,EAAA;oDAACC,KAAM,EAAA,OAAA;AAChB,oDAAA,QAAA,gBAAAxC,GAACyC,CAAAA,UAAAA,EAAAA;wDAAWC,SAAU,EAAA,YAAA;wDAAaC,UAAW,EAAA,MAAA;wDAAOC,QAAQ,EAAA,IAAA;AAC1DP,wDAAAA,QAAAA,EAAAA,QAAAA,CAAStC;;;AAGd,8DAAAC,GAAA,CAACwB,MAAMe,IAAI,EAAA;AACT,oDAAA,QAAA,gBAAAvC,GAACyC,CAAAA,UAAAA,EAAAA;wDAAWC,SAAU,EAAA,YAAA;kEAAcL,QAASQ,CAAAA,MAAM,CAACC;;;AAEtD,8DAAA9C,GAAA,CAACwB,MAAMe,IAAI,EAAA;AACT,oDAAA,QAAA,gBAAAvC,GAACyC,CAAAA,UAAAA,EAAAA;wDAAWC,SAAU,EAAA,YAAA;AACnBL,wDAAAA,QAAAA,EAAAA,QAAAA,CAASlC,YAAY,CACnB8B,GAAG,CAAC,CAACc,GAAAA,GAAAA;4DACJ,MAAMC,WAAAA,GAAc7C,aAAa8C,IAAI,CACnC,CAACD,WAAgBA,GAAAA,WAAAA,CAAYD,GAAG,KAAKA,GAAAA,CAAAA;4DAGvC,OAAOC,WAAAA,EAAaE,KAAKC,WAAe,IAAA,EAAA;AAC1C,yDAAA,CAAA,CACCC,IAAI,CAAC,IAAA;;;AAGZ,8DAAApD,GAAA,CAACwB,MAAMe,IAAI,EAAA;AACT,oDAAA,QAAA,gBAAA7B,IAAC2C,CAAAA,IAAAA,EAAAA;wDAAKC,UAAW,EAAA,QAAA;wDAASC,cAAe,EAAA,KAAA;;AACtC7E,4DAAAA,OAAAA,IAAWC,0BACVqB,GAACwD,CAAAA,UAAAA,EAAAA;gEACCtC,GAAKuC,EAAAA,IAAAA;gEACLrC,EAAIiB,EAAAA,QAAAA,CAASxC,EAAE,CAAC6D,QAAQ,EAAA;AACxB9D,gEAAAA,KAAAA,EAAOjD,aACL,CAAA;oEACEkD,EAAI,EAAA,oEAAA;oEACJC,cAAgB,EAAA;iEAElB,EAAA;AAAEC,oEAAAA,IAAAA,EAAMsC,SAAStC;AAAK,iEAAA,CAAA;gEAExB4D,OAAQ,EAAA,OAAA;AAER,gEAAA,QAAA,gBAAA3D,GAAC4D,CAAAA,MAAAA,EAAAA,EAAAA;AAED,6DAAA,CAAA,GAAA,IAAA;AACHhG,4DAAAA,SAAAA,CAAUkF,MAAM,GAAG,CAAKlE,IAAAA,SAAAA,iBACvBoB,GAACwD,CAAAA,UAAAA,EAAAA;gEACCK,WAAa,EAAA,KAAA;AACbjE,gEAAAA,KAAAA,EAAOjD,aACL,CAAA;oEACEkD,EAAI,EAAA,sEAAA;oEACJC,cAAgB,EAAA;iEAElB,EAAA;oEAAEC,IAAM,EAAA;AAAmB,iEAAA,CAAA;gEAE7B4D,OAAQ,EAAA,OAAA;AACRtC,gEAAAA,OAAAA,EAAS,CAACyC,CAAAA,GAAAA;AACRA,oEAAAA,CAAAA,CAAEC,eAAe,EAAA;oEACjB9E,oBAAqB+E,CAAAA,MAAAA,CAAO3B,SAASxC,EAAE,CAAA,CAAA;AACzC,iEAAA;AAEA,gEAAA,QAAA,gBAAAG,GAACiE,CAAAA,KAAAA,EAAAA,EAAAA;AAED,6DAAA,CAAA,GAAA;;;;;AA3DH5B,yCAAAA,EAAAA,QAAAA,CAASxC,EAAE,CAAA;;;;;AAoE1B,kCAAAG,GAAA,CAACkE,OAAOzC,IAAI,EAAA;AAAC0C,wBAAAA,IAAAA,EAAM,CAAC,CAAClH,gBAAAA;wBAAkBmH,YAAcjF,EAAAA,yBAAAA;AACnD,wBAAA,QAAA,gBAAAa,GAACqE,CAAAA,aAAAA,EAAAA;4BAAcC,SAAWlF,EAAAA,yBAAAA;sCACvBzC,aAAc,CAAA;gCACbkD,EAAI,EAAA,yDAAA;gCACJC,cACE,EAAA;AACJ,6BAAA;;;AAIJ,kCAAAY,IAAA,CAAC6D,YAAY9C,IAAI,EAAA;wBAAC0C,IAAM9G,EAAAA,cAAAA;AAAgB+G,wBAAAA,YAAAA,EAAc,IAAM9G,iBAAkB,CAAA,KAAA,CAAA;;AAC5E,0CAAA0C,GAAA,CAACuE,YAAYC,KAAK,EAAA;0CACf7H,aAAc,CAAA;oCACbkD,EAAI,EAAA,2DAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;AAGF,0CAAAE,GAAA,CAACuE,YAAYnC,IAAI,EAAA;0CACdzF,aAAc,CAAA;oCACbkD,EAAI,EAAA,0DAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;;;;;AAMZ;AAEA,MAAM2E,iBAAoB,GAAA,IAAA;AACxB,IAAA,MAAMtG,WAAcC,GAAAA,gBAAAA,CAClB,CAACC,KAAAA,GAAUA,KAAMC,CAAAA,SAAS,CAACH,WAAW,CAACI,QAAQ,GAAG,mBAAmB,EAAEmG,IAAAA,CAAAA;IAGzE,qBACE1E,GAAA,CAACC,KAAK0E,OAAO,EAAA;QAACxG,WAAaA,EAAAA,WAAAA;AACzB,QAAA,QAAA,gBAAA6B,GAACtD,CAAAA,uBAAAA,EAAAA,EAAAA;;AAGP;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { Layouts } from '@strapi/admin/strapi-admin';
3
3
  import { Main, Box, Grid, Flex, Typography, LinkButton } from '@strapi/design-system';
4
- import { Lightning, Check, ExternalLink } from '@strapi/icons';
4
+ import { SealCheck, Check, ExternalLink } from '@strapi/icons';
5
5
  import { useIntl } from 'react-intl';
6
- import { u as useTypedSelector } from './index-2VGAYchq.mjs';
6
+ import { u as useTypedSelector } from './index-DcEF47R4.mjs';
7
7
  import '@strapi/content-manager/strapi-admin';
8
8
  import 'react-router-dom';
9
9
  import 'react';
@@ -34,26 +34,29 @@ const PurchaseReviewWorkflows = ()=>{
34
34
  shadow: "filterShadow",
35
35
  hasRadius: true,
36
36
  background: "neutral0",
37
+ borderColor: 'neutral150',
38
+ overflow: 'hidden',
37
39
  children: /*#__PURE__*/ jsxs(Grid.Root, {
38
40
  children: [
39
41
  /*#__PURE__*/ jsx(Grid.Item, {
40
42
  col: 6,
41
43
  s: 12,
44
+ alignItems: 'flex-start',
42
45
  children: /*#__PURE__*/ jsxs(Flex, {
43
46
  direction: "column",
44
47
  alignItems: "flex-start",
45
48
  padding: 7,
46
- gap: 2,
49
+ width: '100%',
47
50
  children: [
48
51
  /*#__PURE__*/ jsx(Flex, {
49
- children: /*#__PURE__*/ jsx(Lightning, {
52
+ children: /*#__PURE__*/ jsx(SealCheck, {
50
53
  fill: "primary600",
51
54
  width: `24px`,
52
55
  height: `24px`
53
56
  })
54
57
  }),
55
58
  /*#__PURE__*/ jsx(Flex, {
56
- paddingTop: 2,
59
+ paddingTop: 3,
57
60
  paddingBottom: 4,
58
61
  children: /*#__PURE__*/ jsx(Typography, {
59
62
  variant: "beta",
@@ -65,53 +68,69 @@ const PurchaseReviewWorkflows = ()=>{
65
68
  })
66
69
  }),
67
70
  /*#__PURE__*/ jsxs(Flex, {
71
+ direction: "column",
72
+ alignItems: 'flex-start',
68
73
  gap: 2,
69
74
  children: [
70
- /*#__PURE__*/ jsx(Check, {
71
- fill: "success500",
72
- width: `16px`,
73
- height: `16px`
75
+ /*#__PURE__*/ jsxs(Flex, {
76
+ gap: 2,
77
+ children: [
78
+ /*#__PURE__*/ jsx(Check, {
79
+ fill: "success500",
80
+ width: `16px`,
81
+ height: `16px`,
82
+ style: {
83
+ flexShrink: 0
84
+ }
85
+ }),
86
+ /*#__PURE__*/ jsx(Typography, {
87
+ textColor: "neutral700",
88
+ children: formatMessage({
89
+ id: 'settings.page.purchase.perks1',
90
+ defaultMessage: 'Customizable review stages'
91
+ })
92
+ })
93
+ ]
74
94
  }),
75
- /*#__PURE__*/ jsx(Typography, {
76
- textColor: "neutral700",
77
- children: formatMessage({
78
- id: 'settings.page.purchase.perks1',
79
- defaultMessage: 'Customizable review stages'
80
- })
81
- })
82
- ]
83
- }),
84
- /*#__PURE__*/ jsxs(Flex, {
85
- gap: 2,
86
- children: [
87
- /*#__PURE__*/ jsx(Check, {
88
- fill: "success500",
89
- width: `16px`,
90
- height: `16px`
95
+ /*#__PURE__*/ jsxs(Flex, {
96
+ gap: 2,
97
+ children: [
98
+ /*#__PURE__*/ jsx(Check, {
99
+ fill: "success500",
100
+ width: `16px`,
101
+ height: `16px`,
102
+ style: {
103
+ flexShrink: 0
104
+ }
105
+ }),
106
+ /*#__PURE__*/ jsx(Typography, {
107
+ textColor: "neutral700",
108
+ children: formatMessage({
109
+ id: 'settings.page.purchase.perks2',
110
+ defaultMessage: 'Manage user permissions'
111
+ })
112
+ })
113
+ ]
91
114
  }),
92
- /*#__PURE__*/ jsx(Typography, {
93
- textColor: "neutral700",
94
- children: formatMessage({
95
- id: 'settings.page.purchase.perks2',
96
- defaultMessage: 'Manage user permissions'
97
- })
98
- })
99
- ]
100
- }),
101
- /*#__PURE__*/ jsxs(Flex, {
102
- gap: 2,
103
- children: [
104
- /*#__PURE__*/ jsx(Check, {
105
- fill: "success500",
106
- width: `16px`,
107
- height: `16px`
108
- }),
109
- /*#__PURE__*/ jsx(Typography, {
110
- textColor: "neutral700",
111
- children: formatMessage({
112
- id: 'settings.page.purchase.perks3',
113
- defaultMessage: 'Support for webhooks'
114
- })
115
+ /*#__PURE__*/ jsxs(Flex, {
116
+ gap: 2,
117
+ children: [
118
+ /*#__PURE__*/ jsx(Check, {
119
+ fill: "success500",
120
+ width: `16px`,
121
+ height: `16px`,
122
+ style: {
123
+ flexShrink: 0
124
+ }
125
+ }),
126
+ /*#__PURE__*/ jsx(Typography, {
127
+ textColor: "neutral700",
128
+ children: formatMessage({
129
+ id: 'settings.page.purchase.perks3',
130
+ defaultMessage: 'Support for webhooks'
131
+ })
132
+ })
133
+ ]
115
134
  })
116
135
  ]
117
136
  }),
@@ -123,7 +142,7 @@ const PurchaseReviewWorkflows = ()=>{
123
142
  variant: "default",
124
143
  href: "https://strapi.io/pricing-self-hosted?utm_campaign=In-Product-CTA&utm_source=Review%20Workflows",
125
144
  children: formatMessage({
126
- id: 'Settings.purchase.page.upgrade.cta',
145
+ id: 'Settings.page.purchase.upgrade.cta',
127
146
  defaultMessage: 'Upgrade'
128
147
  })
129
148
  }),
@@ -132,7 +151,7 @@ const PurchaseReviewWorkflows = ()=>{
132
151
  endIcon: /*#__PURE__*/ jsx(ExternalLink, {}),
133
152
  href: "https://strapi.io/features/review-workflow?utm_campaign=In-Product-CTA&utm_source=Review%20Workflows",
134
153
  children: formatMessage({
135
- id: 'Settings.purchase.page.learn-more.cta',
154
+ id: 'Settings.page.purchase.learn-more.cta',
136
155
  defaultMessage: 'Learn more'
137
156
  })
138
157
  })
@@ -145,11 +164,12 @@ const PurchaseReviewWorkflows = ()=>{
145
164
  col: 6,
146
165
  s: 12,
147
166
  background: "primary100",
167
+ minHeight: '280px',
148
168
  children: /*#__PURE__*/ jsx("div", {
149
169
  style: {
150
170
  position: 'relative',
151
171
  width: '100%',
152
- paddingTop: '56.25%'
172
+ height: '100%'
153
173
  },
154
174
  children: /*#__PURE__*/ jsx("img", {
155
175
  src: illustration,
@@ -163,7 +183,7 @@ const PurchaseReviewWorkflows = ()=>{
163
183
  width: '100%',
164
184
  height: '100%',
165
185
  objectFit: 'cover',
166
- objectPosition: 'top left'
186
+ objectPosition: 'bottom left'
167
187
  }
168
188
  })
169
189
  })
@@ -177,4 +197,4 @@ const PurchaseReviewWorkflows = ()=>{
177
197
  };
178
198
 
179
199
  export { PurchaseReviewWorkflows };
180
- //# sourceMappingURL=purchase-review-workflows-BJkm1_Dd.mjs.map
200
+ //# sourceMappingURL=purchase-review-workflows-4n0KXAeo.mjs.map