@strapi/admin 5.18.1 → 5.19.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 (77) hide show
  1. package/dist/admin/admin/src/components/LeftMenu.js +52 -29
  2. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  3. package/dist/admin/admin/src/components/LeftMenu.mjs +52 -29
  4. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/MainNav/NavLink.js +4 -42
  6. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  7. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +4 -23
  8. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/NpsSurvey.js +1 -1
  10. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  11. package/dist/admin/admin/src/components/NpsSurvey.mjs +1 -1
  12. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/SubNav.js +17 -11
  14. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  15. package/dist/admin/admin/src/components/SubNav.mjs +18 -12
  16. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js +30 -0
  18. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js.map +1 -1
  19. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs +30 -0
  20. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js +32 -10
  22. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js.map +1 -1
  23. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs +32 -10
  24. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js +28 -12
  26. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js.map +1 -1
  27. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs +28 -12
  28. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js +31 -24
  30. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js.map +1 -1
  31. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs +25 -18
  32. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/UpsellBanner.js +1 -1
  34. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  35. package/dist/admin/admin/src/components/UpsellBanner.mjs +2 -2
  36. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  37. package/dist/admin/admin/src/features/Tracking.js +34 -1
  38. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  39. package/dist/admin/admin/src/features/Tracking.mjs +34 -1
  40. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  41. package/dist/admin/admin/src/hooks/usePersistentState.js +10 -0
  42. package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
  43. package/dist/admin/admin/src/hooks/usePersistentState.mjs +10 -1
  44. package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
  45. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +2 -2
  46. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  47. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +3 -3
  48. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  49. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +1 -1
  50. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  51. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +2 -2
  52. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
  53. package/dist/admin/admin/src/pages/ProfilePage.js +297 -254
  54. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  55. package/dist/admin/admin/src/pages/ProfilePage.mjs +297 -254
  56. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  57. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +12 -1
  58. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  59. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +12 -1
  60. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  61. package/dist/admin/admin/src/pages/UseCasePage.js +1 -1
  62. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  63. package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -1
  64. package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
  65. package/dist/admin/admin/src/translations/en.json.js +4 -0
  66. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  67. package/dist/admin/admin/src/translations/en.json.mjs +4 -0
  68. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  69. package/dist/admin/ee/admin/src/constants.js +4 -2
  70. package/dist/admin/ee/admin/src/constants.js.map +1 -1
  71. package/dist/admin/ee/admin/src/constants.mjs +4 -2
  72. package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
  73. package/dist/admin/src/components/SubNav.d.ts +2 -1
  74. package/dist/admin/src/components/UnstableGuidedTour/Context.d.ts +2 -0
  75. package/dist/admin/src/features/Tracking.d.ts +22 -3
  76. package/dist/admin/src/hooks/usePersistentState.d.ts +2 -1
  77. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"usePersistentState.mjs","sources":["../../../../../admin/src/hooks/usePersistentState.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nconst usePersistentState = <T>(key: string, defaultValue: T) => {\n const [value, setValue] = useState<T>(() => {\n const stickyValue = window.localStorage.getItem(key);\n\n if (stickyValue !== null) {\n try {\n return JSON.parse(stickyValue);\n } catch {\n // JSON.parse fails when the stored value is a primitive\n return stickyValue;\n }\n }\n\n return defaultValue;\n });\n\n useEffect(() => {\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n};\n\nexport { usePersistentState };\n"],"names":["usePersistentState","key","defaultValue","value","setValue","useState","stickyValue","window","localStorage","getItem","JSON","parse","useEffect","setItem","stringify"],"mappings":";;AAEMA,MAAAA,kBAAAA,GAAqB,CAAIC,GAAaC,EAAAA,YAAAA,GAAAA;AAC1C,IAAA,MAAM,CAACC,KAAAA,EAAOC,QAAS,CAAA,GAAGC,QAAY,CAAA,IAAA;AACpC,QAAA,MAAMC,WAAcC,GAAAA,MAAAA,CAAOC,YAAY,CAACC,OAAO,CAACR,GAAAA,CAAAA;AAEhD,QAAA,IAAIK,gBAAgB,IAAM,EAAA;YACxB,IAAI;gBACF,OAAOI,IAAAA,CAAKC,KAAK,CAACL,WAAAA,CAAAA;AACpB,aAAA,CAAE,OAAM;;gBAEN,OAAOA,WAAAA;AACT;AACF;QAEA,OAAOJ,YAAAA;AACT,KAAA,CAAA;IAEAU,SAAU,CAAA,IAAA;AACRL,QAAAA,MAAAA,CAAOC,YAAY,CAACK,OAAO,CAACZ,GAAKS,EAAAA,IAAAA,CAAKI,SAAS,CAACX,KAAAA,CAAAA,CAAAA;KAC/C,EAAA;AAACF,QAAAA,GAAAA;AAAKE,QAAAA;AAAM,KAAA,CAAA;IAEf,OAAO;AAACA,QAAAA,KAAAA;AAAOC,QAAAA;AAAS,KAAA;AAC1B;;;;"}
1
+ {"version":3,"file":"usePersistentState.mjs","sources":["../../../../../admin/src/hooks/usePersistentState.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useInitQuery } from '../services/admin';\n\nconst usePersistentState = <T>(key: string, defaultValue: T) => {\n const [value, setValue] = useState<T>(() => {\n const stickyValue = window.localStorage.getItem(key);\n\n if (stickyValue !== null) {\n try {\n return JSON.parse(stickyValue);\n } catch {\n // JSON.parse fails when the stored value is a primitive\n return stickyValue;\n }\n }\n\n return defaultValue;\n });\n\n useEffect(() => {\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n};\n\n// Same as usePersistentState, but scoped to the current instance of Strapi\n// useful for storing state that should not be shared across different instances of Strapi running on localhost\nconst useScopedPersistentState = <T>(key: string, defaultValue: T) => {\n const { data: initData } = useInitQuery();\n const { uuid } = initData ?? {};\n\n const namespacedKey = `${key}:${uuid}`;\n return usePersistentState<T>(namespacedKey, defaultValue);\n};\n\nexport { usePersistentState, useScopedPersistentState };\n"],"names":["usePersistentState","key","defaultValue","value","setValue","useState","stickyValue","window","localStorage","getItem","JSON","parse","useEffect","setItem","stringify","useScopedPersistentState","data","initData","useInitQuery","uuid","namespacedKey"],"mappings":";;;AAIMA,MAAAA,kBAAAA,GAAqB,CAAIC,GAAaC,EAAAA,YAAAA,GAAAA;AAC1C,IAAA,MAAM,CAACC,KAAAA,EAAOC,QAAS,CAAA,GAAGC,QAAY,CAAA,IAAA;AACpC,QAAA,MAAMC,WAAcC,GAAAA,MAAAA,CAAOC,YAAY,CAACC,OAAO,CAACR,GAAAA,CAAAA;AAEhD,QAAA,IAAIK,gBAAgB,IAAM,EAAA;YACxB,IAAI;gBACF,OAAOI,IAAAA,CAAKC,KAAK,CAACL,WAAAA,CAAAA;AACpB,aAAA,CAAE,OAAM;;gBAEN,OAAOA,WAAAA;AACT;AACF;QAEA,OAAOJ,YAAAA;AACT,KAAA,CAAA;IAEAU,SAAU,CAAA,IAAA;AACRL,QAAAA,MAAAA,CAAOC,YAAY,CAACK,OAAO,CAACZ,GAAKS,EAAAA,IAAAA,CAAKI,SAAS,CAACX,KAAAA,CAAAA,CAAAA;KAC/C,EAAA;AAACF,QAAAA,GAAAA;AAAKE,QAAAA;AAAM,KAAA,CAAA;IAEf,OAAO;AAACA,QAAAA,KAAAA;AAAOC,QAAAA;AAAS,KAAA;AAC1B;AAEA;AACA;AACMW,MAAAA,wBAAAA,GAA2B,CAAId,GAAaC,EAAAA,YAAAA,GAAAA;AAChD,IAAA,MAAM,EAAEc,IAAAA,EAAMC,QAAQ,EAAE,GAAGC,YAAAA,EAAAA;AAC3B,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGF,YAAY,EAAC;AAE9B,IAAA,MAAMG,gBAAgB,CAAC,EAAEnB,IAAI,CAAC,EAAEkB,KAAK,CAAC;AACtC,IAAA,OAAOnB,mBAAsBoB,aAAelB,EAAAA,YAAAA,CAAAA;AAC9C;;;;"}
@@ -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.usePersistentState('STRAPI_FREE_TRIAL_ENDED_MODAL', false);
32
- const [cachedTrialEndsAt] = usePersistentState.usePersistentState('STRAPI_FREE_TRIAL_ENDS_AT', undefined);
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":"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"}
@@ -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 { usePersistentState } from '../../../hooks/usePersistentState.mjs';
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] = usePersistentState('STRAPI_FREE_TRIAL_ENDED_MODAL', false);
30
- const [cachedTrialEndsAt] = usePersistentState('STRAPI_FREE_TRIAL_ENDS_AT', undefined);
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.usePersistentState('STRAPI_FREE_TRIAL_WELCOME_MODAL', false);
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 { 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 > 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] = usePersistentState(\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","usePersistentState","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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"}
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":";;;;;;;;;;;;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;;;;;;;AAOnC,CAAC;MAEYC,qBAAwB,GAAA,IAAA;IACnC,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,iCACA,EAAA,KAAA,CAAA;IAEF,MAAM,EAAEC,OAAO,EAAE,GAAGC,iCAAAA,EAAAA;AAEpB,IAAA,MAAMC,WAAc,GAAA,IAAA;QAClBJ,iBAAkB,CAAA,IAAA,CAAA;QAClBH,OAAQ,CAAA,KAAA,CAAA;AACV,KAAA;AAEA,IAAA,MAAMQ,qBAAqB,CAACC,MAAAA,GAAAA;AAC1B,QAAA,IAAI,CAACA,MAAQ,EAAA;YACXN,iBAAkB,CAAA,IAAA,CAAA;AACpB;QAEAH,OAAQS,CAAAA,MAAAA,CAAAA;AACV,KAAA;IAEA,IAAIP,cAAAA,IAAkB,CAACG,OAAAA,EAASK,OAAS,EAAA;QACvC,OAAO,IAAA;AACT;IAEA,qBACEC,cAAA,CAACrB,mBAAMsB,IAAI,EAAA;QAACb,IAAMA,EAAAA,IAAAA;QAAMc,YAAcL,EAAAA,kBAAAA;AACpC,QAAA,QAAA,gBAAAG,cAACvB,CAAAA,kBAAAA,EAAAA;YAAmB0B,iBAAgB,EAAA,OAAA;AAClC,YAAA,QAAA,gBAAAC,eAACvB,CAAAA,eAAAA,EAAAA;;kCACCmB,cAACK,CAAAA,gBAAAA,EAAAA;wBAAIC,QAAS,EAAA,UAAA;wBAAWC,GAAK,EAAA,CAAA;wBAAGC,KAAO,EAAA,CAAA;wBAAGC,OAAS,EAAA,CAAA;AAClD,wBAAA,QAAA,gBAAAT,cAACjB,CAAAA,YAAAA,EAAAA;AACC2B,4BAAAA,YAAAA,EAAYxB,aAAc,CAAA;gCACxByB,EAAI,EAAA,uBAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA,CAAA;4BACAC,OAAQ,EAAA,UAAA;4BACRC,KAAM,EAAA,QAAA;4BACNC,MAAO,EAAA,QAAA;4BACPC,OAASpB,EAAAA,WAAAA;AAET,4BAAA,QAAA,gBAAAI,cAACiB,CAAAA,WAAAA,EAAAA,EAAAA;;;kCAGLjB,cAACkB,CAAAA,KAAAA,EAAAA;wBAAIC,GAAKC,EAAAA,SAAAA;wBAAmBC,GAAI,EAAA,YAAA;wBAAaP,KAAM,EAAA,MAAA;wBAAOC,MAAO,EAAA;;kCAClEX,eAACkB,CAAAA,iBAAAA,EAAAA;wBAAKC,SAAU,EAAA,QAAA;wBAASC,UAAW,EAAA,OAAA;wBAAQC,cAAe,EAAA,SAAA;wBAAUhB,OAAS,EAAA,CAAA;wBAAGiB,GAAK,EAAA,CAAA;;0CACpF1B,cAAC2B,CAAAA,uBAAAA,EAAAA;gCAAWd,OAAQ,EAAA,OAAA;gCAAQe,UAAW,EAAA,MAAA;gCAAOC,QAAU,EAAA,CAAA;gCAAGlB,EAAG,EAAA,OAAA;0CAC3DzB,aAAc,CAAA;oCACbyB,EAAI,EAAA,4CAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;0CAEFZ,cAAC2B,CAAAA,uBAAAA,EAAAA;0CACEzC,aAAc,CAAA;oCACbyB,EAAI,EAAA,mDAAA;oCACJC,cACE,EAAA;AACJ,iCAAA;;0CAEFZ,cAAC2B,CAAAA,uBAAAA,EAAAA;0CACEzC,aAAc,CAAA;oCACbyB,EAAI,EAAA,mDAAA;oCACJC,cACE,EAAA;AACJ,iCAAA;;0CAEFZ,cAACK,CAAAA,gBAAAA,EAAAA;gCAAIyB,SAAW,EAAA,CAAA;AACd,gCAAA,QAAA,gBAAA9B,cAAChB,CAAAA,mBAAAA,EAAAA;oCAAOgC,OAASpB,EAAAA,WAAAA;8CACdV,aAAc,CAAA;wCACbyB,EAAI,EAAA,6CAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;;;;;;;;AAQhB;;;;"}
@@ -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 { usePersistentState } from '../../../hooks/usePersistentState.mjs';
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] = usePersistentState('STRAPI_FREE_TRIAL_WELCOME_MODAL', false);
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 { 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 > 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] = usePersistentState(\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","usePersistentState","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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"}
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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"}