@strapi/admin 5.18.1 → 5.20.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.
- package/dist/admin/admin/src/components/Filters.js +10 -1
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +10 -1
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.js +22 -17
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.mjs +21 -16
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Overview.js +41 -15
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Overview.mjs +42 -16
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.js +33 -17
- package/dist/admin/admin/src/components/GuidedTour/Step.js.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.mjs +34 -18
- package/dist/admin/admin/src/components/GuidedTour/Step.mjs.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.js +41 -40
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.mjs +36 -35
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -0
- package/dist/admin/admin/src/components/LeftMenu.js +52 -29
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +52 -29
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js +4 -42
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs +4 -23
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/Providers.js +9 -10
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs +9 -10
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +18 -12
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +19 -13
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs +2 -2
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js +34 -16
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs +34 -16
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +34 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +34 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.js +10 -0
- package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.mjs +10 -1
- package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +1 -18
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +1 -18
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +0 -11
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +0 -11
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +2 -3
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +2 -3
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +2 -2
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +3 -3
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +2 -2
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +297 -254
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +297 -254
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +12 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +12 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +6 -6
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +6 -6
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +1 -7
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +2 -8
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +1 -8
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +1 -8
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +0 -2
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +0 -2
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +11 -3
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +11 -3
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/tests/utils.js +25 -28
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +25 -28
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/ee/admin/src/constants.js +4 -2
- package/dist/admin/ee/admin/src/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/constants.mjs +4 -2
- package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
- package/dist/admin/index.js +2 -4
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -2
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/Filters.d.ts +3 -1
- package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.d.ts +5 -3
- package/dist/admin/src/components/GuidedTour/Overview.d.ts +1 -0
- package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.d.ts +1 -1
- package/dist/admin/src/components/SubNav.d.ts +2 -1
- package/dist/admin/src/core/apis/Widgets.d.ts +8 -5
- package/dist/admin/src/features/Tracking.d.ts +22 -3
- package/dist/admin/src/hooks/usePersistentState.d.ts +2 -1
- package/dist/admin/src/index.d.ts +2 -3
- package/dist/admin/src/pages/Settings/components/Tokens/TokenBox.d.ts +1 -1
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +9 -8
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +9 -8
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/server/src/domain/user.js +3 -1
- package/dist/server/server/src/domain/user.js.map +1 -1
- package/dist/server/server/src/domain/user.mjs +3 -1
- package/dist/server/server/src/domain/user.mjs.map +1 -1
- package/dist/server/src/domain/user.d.ts.map +1 -1
- package/package.json +8 -9
- package/dist/admin/admin/src/components/GuidedTour/Homepage.js +0 -132
- package/dist/admin/admin/src/components/GuidedTour/Homepage.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Homepage.mjs +0 -130
- package/dist/admin/admin/src/components/GuidedTour/Homepage.mjs.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Modal.js +0 -278
- package/dist/admin/admin/src/components/GuidedTour/Modal.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Modal.mjs +0 -276
- package/dist/admin/admin/src/components/GuidedTour/Modal.mjs.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Ornaments.js +0 -54
- package/dist/admin/admin/src/components/GuidedTour/Ornaments.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Ornaments.mjs +0 -51
- package/dist/admin/admin/src/components/GuidedTour/Ornaments.mjs.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Provider.js +0 -206
- package/dist/admin/admin/src/components/GuidedTour/Provider.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Provider.mjs +0 -184
- package/dist/admin/admin/src/components/GuidedTour/Provider.mjs.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/constants.js +0 -167
- package/dist/admin/admin/src/components/GuidedTour/constants.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/constants.mjs +0 -164
- package/dist/admin/admin/src/components/GuidedTour/constants.mjs.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs.map +0 -1
- package/dist/admin/admin/src/pages/Home/components/GuidedTour.js +0 -19
- package/dist/admin/admin/src/pages/Home/components/GuidedTour.js.map +0 -1
- package/dist/admin/admin/src/pages/Home/components/GuidedTour.mjs +0 -17
- package/dist/admin/admin/src/pages/Home/components/GuidedTour.mjs.map +0 -1
- package/dist/admin/src/components/GuidedTour/Homepage.d.ts +0 -2
- package/dist/admin/src/components/GuidedTour/Modal.d.ts +0 -2
- package/dist/admin/src/components/GuidedTour/Ornaments.d.ts +0 -13
- package/dist/admin/src/components/GuidedTour/Provider.d.ts +0 -39
- package/dist/admin/src/components/GuidedTour/constants.d.ts +0 -165
- package/dist/admin/src/components/UnstableGuidedTour/Overview.d.ts +0 -1
- package/dist/admin/src/pages/Home/components/GuidedTour.d.ts +0 -1
- /package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.d.ts +0 -0
|
@@ -28,8 +28,8 @@ const StyledButton = styled(designSystem.Button)`
|
|
|
28
28
|
const FreeTrialEndedModal = ()=>{
|
|
29
29
|
const { formatMessage } = reactIntl.useIntl();
|
|
30
30
|
const [open, setOpen] = React.useState(true);
|
|
31
|
-
const [previouslyOpen, setPreviouslyOpen] = usePersistentState.
|
|
32
|
-
const [cachedTrialEndsAt] = usePersistentState.
|
|
31
|
+
const [previouslyOpen, setPreviouslyOpen] = usePersistentState.useScopedPersistentState('STRAPI_FREE_TRIAL_ENDED_MODAL', false);
|
|
32
|
+
const [cachedTrialEndsAt] = usePersistentState.useScopedPersistentState('STRAPI_FREE_TRIAL_ENDS_AT', undefined);
|
|
33
33
|
const { license } = useLicenseLimits.useLicenseLimits();
|
|
34
34
|
const sevenDaysAgo = dateFns.subDays(new Date(), 7);
|
|
35
35
|
// When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FreeTrialEndedModal.js","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialEndedModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, LinkButton, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n`;\n\nexport const FreeTrialEndedModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = usePersistentState(\n 'STRAPI_FREE_TRIAL_ENDED_MODAL',\n false\n );\n const [cachedTrialEndsAt] = usePersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const { license } = useLicenseLimits();\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (!previouslyOpen && isTrialEndedRecently) {\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"ghost\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <Flex\n direction=\"column\"\n alignItems=\"start\"\n justifyContent=\"stretch\"\n padding={8}\n gap={4}\n >\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.title',\n defaultMessage: 'Your trial has ended',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.description',\n defaultMessage:\n 'Your access to Growth plan features such as Content history, Releases and Single sign-On (SSO) has expired.',\n })}\n </Typography>\n <Box background=\"primary200\" padding={4} hasRadius>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.title',\n defaultMessage: 'Important to know:',\n })}\n </Typography>\n <ul style={{ listStyleType: 'disc', marginLeft: '1.5rem' }}>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item1',\n defaultMessage: 'Downgrading will remove access to the above features.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item2',\n defaultMessage: 'Document version history will be deleted.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item3',\n defaultMessage: 'All releases will be erased.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item4',\n defaultMessage:\n 'If you downgrade ensure to set a root admin password to keep access to the admin panel.',\n })}\n </Typography>\n </li>\n </ul>\n </Box>\n <Flex marginTop={4} gap={2}>\n <LinkButton href=\"https://strapi.chargebeeportal.com/\" target=\"_blank\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.upgrade',\n defaultMessage: 'Stay on the Growth plan',\n })}\n </LinkButton>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.downgrade',\n defaultMessage: 'Downgrade to Community',\n })}\n </Button>\n </Flex>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n }\n\n return null;\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialEndedModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","usePersistentState","cachedTrialEndsAt","undefined","license","useLicenseLimits","sevenDaysAgo","subDays","Date","isTrialEndedRecently","Boolean","isTrial","window","strapi","isEE","isAfter","handleClose","handleOnOpenChange","isOpen","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","background","hasRadius","ul","style","listStyleType","marginLeft","li","marginTop","LinkButton","href","target"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FreeTrialEndedModal.js","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialEndedModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, LinkButton, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n`;\n\nexport const FreeTrialEndedModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_ENDED_MODAL',\n false\n );\n const [cachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const { license } = useLicenseLimits();\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (!previouslyOpen && isTrialEndedRecently) {\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"ghost\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <Flex\n direction=\"column\"\n alignItems=\"start\"\n justifyContent=\"stretch\"\n padding={8}\n gap={4}\n >\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.title',\n defaultMessage: 'Your trial has ended',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.description',\n defaultMessage:\n 'Your access to Growth plan features such as Content history, Releases and Single sign-On (SSO) has expired.',\n })}\n </Typography>\n <Box background=\"primary200\" padding={4} hasRadius>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.title',\n defaultMessage: 'Important to know:',\n })}\n </Typography>\n <ul style={{ listStyleType: 'disc', marginLeft: '1.5rem' }}>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item1',\n defaultMessage: 'Downgrading will remove access to the above features.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item2',\n defaultMessage: 'Document version history will be deleted.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item3',\n defaultMessage: 'All releases will be erased.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item4',\n defaultMessage:\n 'If you downgrade ensure to set a root admin password to keep access to the admin panel.',\n })}\n </Typography>\n </li>\n </ul>\n </Box>\n <Flex marginTop={4} gap={2}>\n <LinkButton href=\"https://strapi.chargebeeportal.com/\" target=\"_blank\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.upgrade',\n defaultMessage: 'Stay on the Growth plan',\n })}\n </LinkButton>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.downgrade',\n defaultMessage: 'Downgrade to Community',\n })}\n </Button>\n </Flex>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n }\n\n return null;\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialEndedModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","cachedTrialEndsAt","undefined","license","useLicenseLimits","sevenDaysAgo","subDays","Date","isTrialEndedRecently","Boolean","isTrial","window","strapi","isEE","isAfter","handleClose","handleOnOpenChange","isOpen","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","background","hasRadius","ul","style","listStyleType","marginLeft","li","marginTop","LinkButton","href","target"],"mappings":";;;;;;;;;;;;AAWA,MAAMA,kBAAqBC,GAAAA,MAAAA,CAAOC,kBAAMC,CAAAA,OAAO,CAAC;;AAEhD,CAAC;AAED,MAAMC,eAAkBH,GAAAA,MAAAA,CAAOC,kBAAMG,CAAAA,IAAI,CAAC;;;;;;;AAO1C,CAAC;AAED,MAAMC,YAAAA,GAAeL,MAAOM,CAAAA,mBAAAA,CAAO;;;AAGnC,CAAC;MAEYC,mBAAsB,GAAA,IAAA;IACjC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAQ,CAAA,GAAGC,cAAS,CAAA,IAAA,CAAA;AACjC,IAAA,MAAM,CAACC,cAAAA,EAAgBC,iBAAkB,CAAA,GAAGC,4CAC1C,+BACA,EAAA,KAAA,CAAA;AAEF,IAAA,MAAM,CAACC,iBAAAA,CAAkB,GAAGD,2CAAAA,CAC1B,2BACAE,EAAAA,SAAAA,CAAAA;IAGF,MAAM,EAAEC,OAAO,EAAE,GAAGC,iCAAAA,EAAAA;IAEpB,MAAMC,YAAAA,GAAeC,eAAQ,CAAA,IAAIC,IAAQ,EAAA,EAAA,CAAA,CAAA;;;AAIzC,IAAA,MAAMC,oBAAuBC,GAAAA,OAAAA,CAC3B,CAACN,OAAAA,EAASO,WACR,CAACC,MAAAA,CAAOC,MAAM,CAACC,IAAI,IACnBZ,iBAAAA,IACAa,eAAQ,CAAA,IAAIP,KAAKN,iBAAoBI,CAAAA,EAAAA,YAAAA,CAAAA,CAAAA;AAGzC,IAAA,MAAMU,WAAc,GAAA,IAAA;QAClBhB,iBAAkB,CAAA,IAAA,CAAA;QAClBH,OAAQ,CAAA,KAAA,CAAA;AACV,KAAA;AAEA,IAAA,MAAMoB,qBAAqB,CAACC,MAAAA,GAAAA;AAC1B,QAAA,IAAI,CAACA,MAAQ,EAAA;YACXlB,iBAAkB,CAAA,IAAA,CAAA;AACpB;QAEAH,OAAQqB,CAAAA,MAAAA,CAAAA;AACV,KAAA;IAEA,IAAI,CAACnB,kBAAkBU,oBAAsB,EAAA;QAC3C,qBACEU,cAAA,CAAChC,mBAAMiC,IAAI,EAAA;YAACxB,IAAMA,EAAAA,IAAAA;YAAMyB,YAAcJ,EAAAA,kBAAAA;AACpC,YAAA,QAAA,gBAAAE,cAAClC,CAAAA,kBAAAA,EAAAA;gBAAmBqC,iBAAgB,EAAA,OAAA;AAClC,gBAAA,QAAA,gBAAAC,eAAClC,CAAAA,eAAAA,EAAAA;;sCACC8B,cAACK,CAAAA,gBAAAA,EAAAA;4BAAIC,QAAS,EAAA,UAAA;4BAAWC,GAAK,EAAA,CAAA;4BAAGC,KAAO,EAAA,CAAA;4BAAGC,OAAS,EAAA,CAAA;AAClD,4BAAA,QAAA,gBAAAT,cAAC5B,CAAAA,YAAAA,EAAAA;AACCsC,gCAAAA,YAAAA,EAAYnC,aAAc,CAAA;oCACxBoC,EAAI,EAAA,uBAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA,CAAA;gCACAC,OAAQ,EAAA,OAAA;gCACRC,KAAM,EAAA,QAAA;gCACNC,MAAO,EAAA,QAAA;gCACPC,OAASnB,EAAAA,WAAAA;AAET,gCAAA,QAAA,gBAAAG,cAACiB,CAAAA,WAAAA,EAAAA,EAAAA;;;sCAGLb,eAACc,CAAAA,iBAAAA,EAAAA;4BACCC,SAAU,EAAA,QAAA;4BACVC,UAAW,EAAA,OAAA;4BACXC,cAAe,EAAA,SAAA;4BACfZ,OAAS,EAAA,CAAA;4BACTa,GAAK,EAAA,CAAA;;8CAELtB,cAACuB,CAAAA,uBAAAA,EAAAA;oCAAWV,OAAQ,EAAA,OAAA;oCAAQW,UAAW,EAAA,MAAA;oCAAOC,QAAU,EAAA,CAAA;oCAAGd,EAAG,EAAA,OAAA;8CAC3DpC,aAAc,CAAA;wCACboC,EAAI,EAAA,0CAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;8CAEFZ,cAACuB,CAAAA,uBAAAA,EAAAA;8CACEhD,aAAc,CAAA;wCACboC,EAAI,EAAA,gDAAA;wCACJC,cACE,EAAA;AACJ,qCAAA;;8CAEFR,eAACC,CAAAA,gBAAAA,EAAAA;oCAAIqB,UAAW,EAAA,YAAA;oCAAajB,OAAS,EAAA,CAAA;oCAAGkB,SAAS,EAAA,IAAA;;sDAChD3B,cAACuB,CAAAA,uBAAAA,EAAAA;4CAAWC,UAAW,EAAA,MAAA;sDACpBjD,aAAc,CAAA;gDACboC,EAAI,EAAA,iDAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;sDAEFR,eAACwB,CAAAA,IAAAA,EAAAA;4CAAGC,KAAO,EAAA;gDAAEC,aAAe,EAAA,MAAA;gDAAQC,UAAY,EAAA;AAAS,6CAAA;;8DACvD/B,cAACgC,CAAAA,IAAAA,EAAAA;AACC,oDAAA,QAAA,gBAAAhC,cAACuB,CAAAA,uBAAAA,EAAAA;kEACEhD,aAAc,CAAA;4DACboC,EAAI,EAAA,iDAAA;4DACJC,cAAgB,EAAA;AAClB,yDAAA;;;8DAGJZ,cAACgC,CAAAA,IAAAA,EAAAA;AACC,oDAAA,QAAA,gBAAAhC,cAACuB,CAAAA,uBAAAA,EAAAA;kEACEhD,aAAc,CAAA;4DACboC,EAAI,EAAA,iDAAA;4DACJC,cAAgB,EAAA;AAClB,yDAAA;;;8DAGJZ,cAACgC,CAAAA,IAAAA,EAAAA;AACC,oDAAA,QAAA,gBAAAhC,cAACuB,CAAAA,uBAAAA,EAAAA;kEACEhD,aAAc,CAAA;4DACboC,EAAI,EAAA,iDAAA;4DACJC,cAAgB,EAAA;AAClB,yDAAA;;;8DAGJZ,cAACgC,CAAAA,IAAAA,EAAAA;AACC,oDAAA,QAAA,gBAAAhC,cAACuB,CAAAA,uBAAAA,EAAAA;kEACEhD,aAAc,CAAA;4DACboC,EAAI,EAAA,iDAAA;4DACJC,cACE,EAAA;AACJ,yDAAA;;;;;;;8CAKRR,eAACc,CAAAA,iBAAAA,EAAAA;oCAAKe,SAAW,EAAA,CAAA;oCAAGX,GAAK,EAAA,CAAA;;sDACvBtB,cAACkC,CAAAA,uBAAAA,EAAAA;4CAAWC,IAAK,EAAA,qCAAA;4CAAsCC,MAAO,EAAA,QAAA;sDAC3D7D,aAAc,CAAA;gDACboC,EAAI,EAAA,mDAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;sDAEFZ,cAAC3B,CAAAA,mBAAAA,EAAAA;4CAAOwC,OAAQ,EAAA,UAAA;4CAAWG,OAASnB,EAAAA,WAAAA;sDACjCtB,aAAc,CAAA;gDACboC,EAAI,EAAA,qDAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;;;;;;;;;AAQhB;IAEA,OAAO,IAAA;AACT;;;;"}
|
|
@@ -6,7 +6,7 @@ import { subDays, isAfter } from 'date-fns';
|
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import styled from 'styled-components';
|
|
8
8
|
import { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits.mjs';
|
|
9
|
-
import {
|
|
9
|
+
import { useScopedPersistentState } from '../../../hooks/usePersistentState.mjs';
|
|
10
10
|
|
|
11
11
|
const StyledModalContent = styled(Modal.Content)`
|
|
12
12
|
max-width: 51.6rem;
|
|
@@ -26,8 +26,8 @@ const StyledButton = styled(Button)`
|
|
|
26
26
|
const FreeTrialEndedModal = ()=>{
|
|
27
27
|
const { formatMessage } = useIntl();
|
|
28
28
|
const [open, setOpen] = useState(true);
|
|
29
|
-
const [previouslyOpen, setPreviouslyOpen] =
|
|
30
|
-
const [cachedTrialEndsAt] =
|
|
29
|
+
const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState('STRAPI_FREE_TRIAL_ENDED_MODAL', false);
|
|
30
|
+
const [cachedTrialEndsAt] = useScopedPersistentState('STRAPI_FREE_TRIAL_ENDS_AT', undefined);
|
|
31
31
|
const { license } = useLicenseLimits();
|
|
32
32
|
const sevenDaysAgo = subDays(new Date(), 7);
|
|
33
33
|
// When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FreeTrialEndedModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialEndedModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, LinkButton, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n`;\n\nexport const FreeTrialEndedModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = usePersistentState(\n 'STRAPI_FREE_TRIAL_ENDED_MODAL',\n false\n );\n const [cachedTrialEndsAt] = usePersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const { license } = useLicenseLimits();\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (!previouslyOpen && isTrialEndedRecently) {\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"ghost\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <Flex\n direction=\"column\"\n alignItems=\"start\"\n justifyContent=\"stretch\"\n padding={8}\n gap={4}\n >\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.title',\n defaultMessage: 'Your trial has ended',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.description',\n defaultMessage:\n 'Your access to Growth plan features such as Content history, Releases and Single sign-On (SSO) has expired.',\n })}\n </Typography>\n <Box background=\"primary200\" padding={4} hasRadius>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.title',\n defaultMessage: 'Important to know:',\n })}\n </Typography>\n <ul style={{ listStyleType: 'disc', marginLeft: '1.5rem' }}>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item1',\n defaultMessage: 'Downgrading will remove access to the above features.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item2',\n defaultMessage: 'Document version history will be deleted.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item3',\n defaultMessage: 'All releases will be erased.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item4',\n defaultMessage:\n 'If you downgrade ensure to set a root admin password to keep access to the admin panel.',\n })}\n </Typography>\n </li>\n </ul>\n </Box>\n <Flex marginTop={4} gap={2}>\n <LinkButton href=\"https://strapi.chargebeeportal.com/\" target=\"_blank\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.upgrade',\n defaultMessage: 'Stay on the Growth plan',\n })}\n </LinkButton>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.downgrade',\n defaultMessage: 'Downgrade to Community',\n })}\n </Button>\n </Flex>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n }\n\n return null;\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialEndedModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","usePersistentState","cachedTrialEndsAt","undefined","license","useLicenseLimits","sevenDaysAgo","subDays","Date","isTrialEndedRecently","Boolean","isTrial","window","strapi","isEE","isAfter","handleClose","handleOnOpenChange","isOpen","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","background","hasRadius","ul","style","listStyleType","marginLeft","li","marginTop","LinkButton","href","target"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FreeTrialEndedModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialEndedModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, LinkButton, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { isAfter, subDays } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n`;\n\nexport const FreeTrialEndedModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_ENDED_MODAL',\n false\n );\n const [cachedTrialEndsAt] = useScopedPersistentState<string | undefined>(\n 'STRAPI_FREE_TRIAL_ENDS_AT',\n undefined\n );\n\n const { license } = useLicenseLimits();\n\n const sevenDaysAgo = subDays(new Date(), 7);\n\n // When the license is not a trial + not EE, and the cached trial end date is found in the localstorage, that means the trial has ended\n // We show the banner to encourage the user to upgrade (for 7 days after the trial ends)\n const isTrialEndedRecently = Boolean(\n !license?.isTrial &&\n !window.strapi.isEE &&\n cachedTrialEndsAt &&\n isAfter(new Date(cachedTrialEndsAt), sevenDaysAgo)\n );\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (!previouslyOpen && isTrialEndedRecently) {\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"ghost\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <Flex\n direction=\"column\"\n alignItems=\"start\"\n justifyContent=\"stretch\"\n padding={8}\n gap={4}\n >\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.title',\n defaultMessage: 'Your trial has ended',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.description',\n defaultMessage:\n 'Your access to Growth plan features such as Content history, Releases and Single sign-On (SSO) has expired.',\n })}\n </Typography>\n <Box background=\"primary200\" padding={4} hasRadius>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.title',\n defaultMessage: 'Important to know:',\n })}\n </Typography>\n <ul style={{ listStyleType: 'disc', marginLeft: '1.5rem' }}>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item1',\n defaultMessage: 'Downgrading will remove access to the above features.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item2',\n defaultMessage: 'Document version history will be deleted.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item3',\n defaultMessage: 'All releases will be erased.',\n })}\n </Typography>\n </li>\n <li>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.notice.item4',\n defaultMessage:\n 'If you downgrade ensure to set a root admin password to keep access to the admin panel.',\n })}\n </Typography>\n </li>\n </ul>\n </Box>\n <Flex marginTop={4} gap={2}>\n <LinkButton href=\"https://strapi.chargebeeportal.com/\" target=\"_blank\">\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.upgrade',\n defaultMessage: 'Stay on the Growth plan',\n })}\n </LinkButton>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialEndedModal.button.downgrade',\n defaultMessage: 'Downgrade to Community',\n })}\n </Button>\n </Flex>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n }\n\n return null;\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialEndedModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","cachedTrialEndsAt","undefined","license","useLicenseLimits","sevenDaysAgo","subDays","Date","isTrialEndedRecently","Boolean","isTrial","window","strapi","isEE","isAfter","handleClose","handleOnOpenChange","isOpen","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","background","hasRadius","ul","style","listStyleType","marginLeft","li","marginTop","LinkButton","href","target"],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ const StyledButton = styled(designSystem.Button)`
|
|
|
32
32
|
const FreeTrialWelcomeModal = ()=>{
|
|
33
33
|
const { formatMessage } = reactIntl.useIntl();
|
|
34
34
|
const [open, setOpen] = React.useState(true);
|
|
35
|
-
const [previouslyOpen, setPreviouslyOpen] = usePersistentState.
|
|
35
|
+
const [previouslyOpen, setPreviouslyOpen] = usePersistentState.useScopedPersistentState('STRAPI_FREE_TRIAL_WELCOME_MODAL', false);
|
|
36
36
|
const { license } = useLicenseLimits.useLicenseLimits();
|
|
37
37
|
const handleClose = ()=>{
|
|
38
38
|
setPreviouslyOpen(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FreeTrialWelcomeModal.js","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport {
|
|
1
|
+
{"version":3,"file":"FreeTrialWelcomeModal.js","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n\n > span {\n line-height: 0;\n }\n`;\n\nexport const FreeTrialWelcomeModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_WELCOME_MODAL',\n false\n );\n const { license } = useLicenseLimits();\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (previouslyOpen || !license?.isTrial) {\n return null;\n }\n\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"tertiary\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <img src={lightIllustration} alt=\"free-trial\" width=\"100%\" height=\"100%\" />\n <Flex direction=\"column\" alignItems=\"start\" justifyContent=\"stretch\" padding={8} gap={4}>\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.title',\n defaultMessage: \"We're glad to have you on board\",\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description1',\n defaultMessage:\n 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description2',\n defaultMessage:\n 'Use this time to build, customize, and test your content workflows with complete flexibility!',\n })}\n </Typography>\n <Box marginTop={4}>\n <Button onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.button',\n defaultMessage: 'Start exploring',\n })}\n </Button>\n </Box>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialWelcomeModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","license","useLicenseLimits","handleClose","handleOnOpenChange","isOpen","isTrial","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","img","src","lightIllustration","alt","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","marginTop"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { useIntl } from 'react-intl';
|
|
|
6
6
|
import styled from 'styled-components';
|
|
7
7
|
import { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits.mjs';
|
|
8
8
|
import img from '../../../assets/images/free-trial.png.mjs';
|
|
9
|
-
import {
|
|
9
|
+
import { useScopedPersistentState } from '../../../hooks/usePersistentState.mjs';
|
|
10
10
|
|
|
11
11
|
const StyledModalContent = styled(Modal.Content)`
|
|
12
12
|
max-width: 51.6rem;
|
|
@@ -30,7 +30,7 @@ const StyledButton = styled(Button)`
|
|
|
30
30
|
const FreeTrialWelcomeModal = ()=>{
|
|
31
31
|
const { formatMessage } = useIntl();
|
|
32
32
|
const [open, setOpen] = useState(true);
|
|
33
|
-
const [previouslyOpen, setPreviouslyOpen] =
|
|
33
|
+
const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState('STRAPI_FREE_TRIAL_WELCOME_MODAL', false);
|
|
34
34
|
const { license } = useLicenseLimits();
|
|
35
35
|
const handleClose = ()=>{
|
|
36
36
|
setPreviouslyOpen(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FreeTrialWelcomeModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport {
|
|
1
|
+
{"version":3,"file":"FreeTrialWelcomeModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport { useScopedPersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n\n > span {\n line-height: 0;\n }\n`;\n\nexport const FreeTrialWelcomeModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = useScopedPersistentState(\n 'STRAPI_FREE_TRIAL_WELCOME_MODAL',\n false\n );\n const { license } = useLicenseLimits();\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (previouslyOpen || !license?.isTrial) {\n return null;\n }\n\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"tertiary\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <img src={lightIllustration} alt=\"free-trial\" width=\"100%\" height=\"100%\" />\n <Flex direction=\"column\" alignItems=\"start\" justifyContent=\"stretch\" padding={8} gap={4}>\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.title',\n defaultMessage: \"We're glad to have you on board\",\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description1',\n defaultMessage:\n 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description2',\n defaultMessage:\n 'Use this time to build, customize, and test your content workflows with complete flexibility!',\n })}\n </Typography>\n <Box marginTop={4}>\n <Button onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.button',\n defaultMessage: 'Start exploring',\n })}\n </Button>\n </Box>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialWelcomeModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","useScopedPersistentState","license","useLicenseLimits","handleClose","handleOnOpenChange","isOpen","isTrial","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","img","src","lightIllustration","alt","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","marginTop"],"mappings":"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"}
|