@strapi/admin 5.13.1 → 5.15.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/assets/images/free-trial.png.js +6 -0
- package/dist/admin/admin/src/assets/images/free-trial.png.js.map +1 -0
- package/dist/admin/admin/src/assets/images/free-trial.png.mjs +4 -0
- package/dist/admin/admin/src/assets/images/free-trial.png.mjs.map +1 -0
- package/dist/admin/admin/src/components/ConfirmDialog.js +2 -2
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.js +3 -3
- package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js +3 -3
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/GradientBadge.js +37 -0
- package/dist/admin/admin/src/components/GradientBadge.js.map +1 -0
- package/dist/admin/admin/src/components/GradientBadge.mjs +35 -0
- package/dist/admin/admin/src/components/GradientBadge.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Modal.js +3 -3
- package/dist/admin/admin/src/components/GuidedTour/Modal.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
- package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js +3 -3
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +7 -5
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +3 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
- package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js +3 -3
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +8 -8
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +114 -0
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -0
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +112 -0
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -0
- package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +269 -0
- package/dist/admin/admin/src/components/SubNav.js.map +1 -0
- package/dist/admin/admin/src/components/SubNav.mjs +267 -0
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -0
- package/dist/admin/admin/src/components/Table.js +2 -2
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Theme.js +2 -2
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +113 -0
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -0
- package/dist/admin/admin/src/components/UpsellBanner.mjs +111 -0
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -0
- package/dist/admin/admin/src/features/Auth.js +8 -2
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +8 -2
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js +7 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs +8 -2
- package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +2 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +2 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +2 -2
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +4 -0
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +4 -0
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +183 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +181 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +128 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +126 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js +3 -3
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js +2 -2
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js +2 -2
- package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +31 -30
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +33 -32
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -10
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/render.js +3 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +3 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/services/admin.js +13 -2
- package/dist/admin/admin/src/services/admin.js.map +1 -1
- package/dist/admin/admin/src/services/admin.mjs +13 -3
- package/dist/admin/admin/src/services/admin.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ar.json.js +1 -0
- package/dist/admin/admin/src/translations/ar.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ar.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ar.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ca.json.js +1 -0
- package/dist/admin/admin/src/translations/ca.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ca.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ca.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/de.json.js +1 -0
- package/dist/admin/admin/src/translations/de.json.js.map +1 -1
- package/dist/admin/admin/src/translations/de.json.mjs +1 -0
- package/dist/admin/admin/src/translations/de.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/dk.json.js +1 -0
- package/dist/admin/admin/src/translations/dk.json.js.map +1 -1
- package/dist/admin/admin/src/translations/dk.json.mjs +1 -0
- package/dist/admin/admin/src/translations/dk.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +19 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +19 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/es.json.js +1 -0
- package/dist/admin/admin/src/translations/es.json.js.map +1 -1
- package/dist/admin/admin/src/translations/es.json.mjs +1 -0
- package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/eu.json.js +1 -0
- package/dist/admin/admin/src/translations/eu.json.js.map +1 -1
- package/dist/admin/admin/src/translations/eu.json.mjs +1 -0
- package/dist/admin/admin/src/translations/eu.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.js +1 -0
- package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.mjs +1 -0
- package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/gu.json.js +1 -0
- package/dist/admin/admin/src/translations/gu.json.js.map +1 -1
- package/dist/admin/admin/src/translations/gu.json.mjs +1 -0
- package/dist/admin/admin/src/translations/gu.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/hi.json.js +1 -0
- package/dist/admin/admin/src/translations/hi.json.js.map +1 -1
- package/dist/admin/admin/src/translations/hi.json.mjs +1 -0
- package/dist/admin/admin/src/translations/hi.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/hu.json.js +1 -0
- package/dist/admin/admin/src/translations/hu.json.js.map +1 -1
- package/dist/admin/admin/src/translations/hu.json.mjs +1 -0
- package/dist/admin/admin/src/translations/hu.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.js +1 -0
- package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ko.json.js +1 -0
- package/dist/admin/admin/src/translations/ko.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ko.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ko.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ml.json.js +1 -0
- package/dist/admin/admin/src/translations/ml.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ml.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ml.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/nl.json.js +1 -0
- package/dist/admin/admin/src/translations/nl.json.js.map +1 -1
- package/dist/admin/admin/src/translations/nl.json.mjs +1 -0
- package/dist/admin/admin/src/translations/nl.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.js +1 -0
- package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.mjs +1 -0
- package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/pt-BR.json.js +1 -0
- package/dist/admin/admin/src/translations/pt-BR.json.js.map +1 -1
- package/dist/admin/admin/src/translations/pt-BR.json.mjs +1 -0
- package/dist/admin/admin/src/translations/pt-BR.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.js +1 -0
- package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/sa.json.js +1 -0
- package/dist/admin/admin/src/translations/sa.json.js.map +1 -1
- package/dist/admin/admin/src/translations/sa.json.mjs +1 -0
- package/dist/admin/admin/src/translations/sa.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/sk.json.js +1 -0
- package/dist/admin/admin/src/translations/sk.json.js.map +1 -1
- package/dist/admin/admin/src/translations/sk.json.mjs +1 -0
- package/dist/admin/admin/src/translations/sk.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/sv.json.js +1 -0
- package/dist/admin/admin/src/translations/sv.json.js.map +1 -1
- package/dist/admin/admin/src/translations/sv.json.mjs +1 -0
- package/dist/admin/admin/src/translations/sv.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/tr.json.js +1 -0
- package/dist/admin/admin/src/translations/tr.json.js.map +1 -1
- package/dist/admin/admin/src/translations/tr.json.mjs +1 -0
- package/dist/admin/admin/src/translations/tr.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/uk.json.js +1 -0
- package/dist/admin/admin/src/translations/uk.json.js.map +1 -1
- package/dist/admin/admin/src/translations/uk.json.mjs +1 -0
- package/dist/admin/admin/src/translations/uk.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/zh-Hans.json.js +1 -0
- package/dist/admin/admin/src/translations/zh-Hans.json.js.map +1 -1
- package/dist/admin/admin/src/translations/zh-Hans.json.mjs +1 -0
- package/dist/admin/admin/src/translations/zh-Hans.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/zh.json.js +1 -0
- package/dist/admin/admin/src/translations/zh.json.js.map +1 -1
- package/dist/admin/admin/src/translations/zh.json.mjs +1 -0
- package/dist/admin/admin/src/translations/zh.json.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +2 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs +2 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +7 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +7 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/index.js +4 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +2 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/GradientBadge.d.ts +4 -0
- package/dist/admin/src/components/MainNav/TrialCountdown.d.ts +2 -0
- package/dist/admin/src/components/SubNav.d.ts +33 -0
- package/dist/admin/src/components/UpsellBanner.d.ts +2 -0
- package/dist/admin/src/index.d.ts +2 -0
- package/dist/admin/src/pages/Home/components/FreeTrialEndedModal.d.ts +1 -0
- package/dist/admin/src/pages/Home/components/FreeTrialWelcomeModal.d.ts +1 -0
- package/dist/admin/src/services/admin.d.ts +8 -6
- package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +2 -0
- package/dist/ee/server/src/controllers/admin.d.ts +3 -0
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +3 -0
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +6 -0
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +2 -0
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +2 -0
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +6 -0
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +6 -0
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/routes/admin.js +10 -0
- package/dist/server/server/src/routes/admin.js.map +1 -1
- package/dist/server/server/src/routes/admin.mjs +10 -0
- package/dist/server/server/src/routes/admin.mjs.map +1 -1
- package/dist/server/server/src/services/content-type.js +10 -15
- package/dist/server/server/src/services/content-type.js.map +1 -1
- package/dist/server/server/src/services/content-type.mjs +11 -16
- package/dist/server/server/src/services/content-type.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts +3 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +3 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/content-type.d.ts +1 -1
- package/dist/server/src/services/content-type.d.ts.map +1 -1
- package/dist/server/src/validation/project-settings.d.ts +4 -4
- package/dist/shared/contracts/admin.d.ts +1 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","useOnce","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","useOnce","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
|
|
@@ -4,15 +4,15 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
require('react');
|
|
5
5
|
var designSystem = require('@strapi/design-system');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
|
-
var
|
|
7
|
+
var styled = require('styled-components');
|
|
8
8
|
var hooks = require('../core/store/hooks.js');
|
|
9
9
|
var reducer = require('../reducer.js');
|
|
10
10
|
|
|
11
|
-
const Wrapper =
|
|
11
|
+
const Wrapper = styled.styled(designSystem.Box)`
|
|
12
12
|
margin: 0 auto;
|
|
13
13
|
width: 552px;
|
|
14
14
|
`;
|
|
15
|
-
const Column =
|
|
15
|
+
const Column = styled.styled(designSystem.Flex)`
|
|
16
16
|
flex-direction: column;
|
|
17
17
|
`;
|
|
18
18
|
const LocaleToggle = ()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnauthenticatedLayout.js","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent"],"mappings":";;;;;;;;;;AAgBA,MAAMA,OAAAA,GAAUC,
|
|
1
|
+
{"version":3,"file":"UnauthenticatedLayout.js","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent"],"mappings":";;;;;;;;;;AAgBA,MAAMA,OAAAA,GAAUC,aAAqBC,CAAAA,gBAAAA,CAAI;;;AAGzC,CAAC;AAEYC,MAAAA,MAAAA,GAASF,aAAsBG,CAAAA,iBAAAA,CAAK;;AAEjD;AAEA,MAAMC,YAAe,GAAA,IAAA;IACnB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;AACpF,IAAA,MAAMK,QAAWC,GAAAA,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AAElC,IAAA,qBACEC,cAACC,CAAAA,yBAAAA,EAAAA;AACCC,QAAAA,YAAAA,EAAYL,aAAc,CAAA;YACxBM,EAAI,EAAA,2BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAOP,EAAAA,MAAAA;AACPQ,QAAAA,QAAAA,EAAU,CAACZ,QAAAA,GAAAA;AACTC,YAAAA,QAAAA,CAASY,iBAAUb,CAAAA,QAAAA,CAAAA,CAAAA;AACrB,SAAA;kBAECc,MAAOC,CAAAA,OAAO,CAACnB,WAAAA,CAAAA,CAAaoB,GAAG,CAAC,CAAC,CAAChB,QAAAA,EAAUiB,IAAK,CAAA,iBAChDX,cAACY,CAAAA,+BAAAA,EAAAA;gBAAkCP,KAAOX,EAAAA,QAAAA;AACvCiB,gBAAAA,QAAAA,EAAAA;AADsBjB,aAAAA,EAAAA,QAAAA,CAAAA;;AAMjC,CAAA;MAMamB,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAsB,iBAC5Dd,cAAChB,CAAAA,OAAAA,EAAAA;QACC+B,MAAO,EAAA,aAAA;QACPC,SAAS,EAAA,IAAA;QACTC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,EAAA;QACbC,YAAc,EAAA,EAAA;QACdC,UAAW,EAAA,UAAA;AAEVP,QAAAA,QAAAA,EAAAA;AAEH,KAAA;AAMWQ,MAAAA,qBAAAA,GAAwB,CAAC,EAAER,QAAQ,EAA8B,GAAA;AAC5E,IAAA,qBACES,eAACC,CAAAA,KAAAA,EAAAA;;0BACCxB,cAACZ,CAAAA,iBAAAA,EAAAA;gBAAKqC,GAAI,EAAA,QAAA;gBAASC,cAAe,EAAA,UAAA;AAChC,gBAAA,QAAA,gBAAA1B,cAACd,CAAAA,gBAAAA,EAAAA;oBAAI+B,UAAY,EAAA,CAAA;oBAAGG,YAAc,EAAA,CAAA;AAChC,oBAAA,QAAA,gBAAApB,cAACX,CAAAA,YAAAA,EAAAA,EAAAA;;;0BAGLW,cAACd,CAAAA,gBAAAA,EAAAA;gBAAI+B,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,EAAA;AAChCJ,gBAAAA,QAAAA,EAAAA;;;;AAIT;;;;;;"}
|
|
@@ -6,7 +6,7 @@ var designSystem = require('@strapi/design-system');
|
|
|
6
6
|
var omit = require('lodash/omit');
|
|
7
7
|
var reactIntl = require('react-intl');
|
|
8
8
|
var reactRouterDom = require('react-router-dom');
|
|
9
|
-
var
|
|
9
|
+
var styled = require('styled-components');
|
|
10
10
|
var yup = require('yup');
|
|
11
11
|
var Form = require('../../../components/Form.js');
|
|
12
12
|
var Renderer = require('../../../components/FormInputs/Renderer.js');
|
|
@@ -500,7 +500,7 @@ const Register = ({ hasAdmin })=>{
|
|
|
500
500
|
return acc;
|
|
501
501
|
}, {});
|
|
502
502
|
}
|
|
503
|
-
const A =
|
|
503
|
+
const A = styled.styled.a`
|
|
504
504
|
color: ${({ theme })=>theme.colors.primary600};
|
|
505
505
|
`;
|
|
506
506
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Register.js","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../../../components/GuidedTour/Provider';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const setSkipped = useGuidedTour('Register', (state) => state.setSkipped);\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n const { roles } = res.data.user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","matches","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","setSkipped","useGuidedTour","state","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","login","token","roles","user","isUserSuperAdmin","find","code","localStorage","setItem","JSON","stringify","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","col","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Register.js","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../../../components/GuidedTour/Provider';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const setSkipped = useGuidedTour('Register', (state) => state.setSkipped);\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n const { roles } = res.data.user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","matches","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","setSkipped","useGuidedTour","state","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","login","token","roles","user","isUserSuperAdmin","find","code","localStorage","setItem","JSON","stringify","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","col","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":"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"}
|
|
@@ -13,6 +13,8 @@ require('../../services/admin.js');
|
|
|
13
13
|
var useEnterprise = require('../../hooks/useEnterprise.js');
|
|
14
14
|
var Auth = require('../../features/Auth.js');
|
|
15
15
|
var StrapiApp = require('../../features/StrapiApp.js');
|
|
16
|
+
var FreeTrialEndedModal = require('./components/FreeTrialEndedModal.js');
|
|
17
|
+
var FreeTrialWelcomeModal = require('./components/FreeTrialWelcomeModal.js');
|
|
16
18
|
var GuidedTour = require('./components/GuidedTour.js');
|
|
17
19
|
|
|
18
20
|
function _interopNamespaceDefault(e) {
|
|
@@ -163,6 +165,8 @@ const WidgetRoot = ({ title, icon = icons.PuzzlePiece, permissions = [], childre
|
|
|
163
165
|
defaultMessage: 'Welcome to your administration panel'
|
|
164
166
|
})
|
|
165
167
|
}),
|
|
168
|
+
/*#__PURE__*/ jsxRuntime.jsx(FreeTrialWelcomeModal.FreeTrialWelcomeModal, {}),
|
|
169
|
+
/*#__PURE__*/ jsxRuntime.jsx(FreeTrialEndedModal.FreeTrialEndedModal, {}),
|
|
166
170
|
/*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
|
|
167
171
|
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
168
172
|
direction: "column",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomePage.js","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { GuidedTour } from './components/GuidedTour';\n\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n permissions = [],\n children,\n link,\n}: WidgetRootProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const [permissionStatus, setPermissionStatus] = React.useState<\n 'loading' | 'granted' | 'forbidden'\n >('loading');\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n React.useEffect(() => {\n const checkPermissions = async () => {\n const matchingPermissions = await checkUserHasPermissions(permissions);\n const shouldGrant = matchingPermissions.length >= permissions.length;\n setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');\n };\n\n if (!permissions || permissions.length === 0) {\n setPermissionStatus('granted');\n } else {\n checkPermissions();\n }\n }, [checkUserHasPermissions, permissions]);\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n to={link.href}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {permissionStatus === 'loading' && <Widget.Loading />}\n {permissionStatus === 'forbidden' && <Widget.NoPermissions />}\n {permissionStatus === 'granted' && children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n {getAllWidgets().map((widget) => {\n return (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n permissions={widget.permissions}\n link={widget.link}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","permissions","children","link","formatMessage","useIntl","id","React","useId","Icon","permissionStatus","setPermissionStatus","useState","checkUserHasPermissions","useAuth","state","useEffect","checkPermissions","matchingPermissions","shouldGrant","length","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","to","href","label","Box","height","overflow","Widget","Loading","NoPermissions","WidgetComponent","component","loadedComponent","setLoadedComponent","loadComponent","resolvedComponent","Component","HomePageCE","user","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HomePage.js","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\nimport { GuidedTour } from './components/GuidedTour';\n\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n permissions = [],\n children,\n link,\n}: WidgetRootProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const [permissionStatus, setPermissionStatus] = React.useState<\n 'loading' | 'granted' | 'forbidden'\n >('loading');\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n React.useEffect(() => {\n const checkPermissions = async () => {\n const matchingPermissions = await checkUserHasPermissions(permissions);\n const shouldGrant = matchingPermissions.length >= permissions.length;\n setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');\n };\n\n if (!permissions || permissions.length === 0) {\n setPermissionStatus('granted');\n } else {\n checkPermissions();\n }\n }, [checkUserHasPermissions, permissions]);\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n to={link.href}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {permissionStatus === 'loading' && <Widget.Loading />}\n {permissionStatus === 'forbidden' && <Widget.NoPermissions />}\n {permissionStatus === 'granted' && children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n {getAllWidgets().map((widget) => {\n return (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n permissions={widget.permissions}\n link={widget.link}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","permissions","children","link","formatMessage","useIntl","id","React","useId","Icon","permissionStatus","setPermissionStatus","useState","checkUserHasPermissions","useAuth","state","useEffect","checkPermissions","matchingPermissions","shouldGrant","length","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","to","href","label","Box","height","overflow","Widget","Loading","NoPermissions","WidgetComponent","component","loadedComponent","setLoadedComponent","loadComponent","resolvedComponent","Component","HomePageCE","user","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ import '../../services/admin.mjs';
|
|
|
11
11
|
import { useEnterprise } from '../../hooks/useEnterprise.mjs';
|
|
12
12
|
import { useAuth } from '../../features/Auth.mjs';
|
|
13
13
|
import { useStrapiApp } from '../../features/StrapiApp.mjs';
|
|
14
|
+
import { FreeTrialEndedModal } from './components/FreeTrialEndedModal.mjs';
|
|
15
|
+
import { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal.mjs';
|
|
14
16
|
import { GuidedTour } from './components/GuidedTour.mjs';
|
|
15
17
|
|
|
16
18
|
const WidgetRoot = ({ title, icon = PuzzlePiece, permissions = [], children, link })=>{
|
|
@@ -142,6 +144,8 @@ const WidgetRoot = ({ title, icon = PuzzlePiece, permissions = [], children, lin
|
|
|
142
144
|
defaultMessage: 'Welcome to your administration panel'
|
|
143
145
|
})
|
|
144
146
|
}),
|
|
147
|
+
/*#__PURE__*/ jsx(FreeTrialWelcomeModal, {}),
|
|
148
|
+
/*#__PURE__*/ jsx(FreeTrialEndedModal, {}),
|
|
145
149
|
/*#__PURE__*/ jsx(Layouts.Content, {
|
|
146
150
|
children: /*#__PURE__*/ jsxs(Flex, {
|
|
147
151
|
direction: "column",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomePage.mjs","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { GuidedTour } from './components/GuidedTour';\n\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n permissions = [],\n children,\n link,\n}: WidgetRootProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const [permissionStatus, setPermissionStatus] = React.useState<\n 'loading' | 'granted' | 'forbidden'\n >('loading');\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n React.useEffect(() => {\n const checkPermissions = async () => {\n const matchingPermissions = await checkUserHasPermissions(permissions);\n const shouldGrant = matchingPermissions.length >= permissions.length;\n setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');\n };\n\n if (!permissions || permissions.length === 0) {\n setPermissionStatus('granted');\n } else {\n checkPermissions();\n }\n }, [checkUserHasPermissions, permissions]);\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n to={link.href}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {permissionStatus === 'loading' && <Widget.Loading />}\n {permissionStatus === 'forbidden' && <Widget.NoPermissions />}\n {permissionStatus === 'granted' && children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n {getAllWidgets().map((widget) => {\n return (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n permissions={widget.permissions}\n link={widget.link}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","permissions","children","link","formatMessage","useIntl","id","React","useId","Icon","permissionStatus","setPermissionStatus","useState","checkUserHasPermissions","useAuth","state","useEffect","checkPermissions","matchingPermissions","shouldGrant","length","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","to","href","label","Box","height","overflow","Widget","Loading","NoPermissions","WidgetComponent","component","loadedComponent","setLoadedComponent","loadComponent","resolvedComponent","Component","HomePageCE","user","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HomePage.mjs","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\n\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\nimport { GuidedTour } from './components/GuidedTour';\n\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * WidgetRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WidgetRootProps extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link'> {\n children: React.ReactNode;\n}\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n permissions = [],\n children,\n link,\n}: WidgetRootProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const Icon = icon;\n\n const [permissionStatus, setPermissionStatus] = React.useState<\n 'loading' | 'granted' | 'forbidden'\n >('loading');\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n React.useEffect(() => {\n const checkPermissions = async () => {\n const matchingPermissions = await checkUserHasPermissions(permissions);\n const shouldGrant = matchingPermissions.length >= permissions.length;\n setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');\n };\n\n if (!permissions || permissions.length === 0) {\n setPermissionStatus('granted');\n } else {\n checkPermissions();\n }\n }, [checkUserHasPermissions, permissions]);\n\n return (\n <Flex\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n aria-labelledby={id}\n >\n <Flex direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\" tag=\"header\">\n <Flex gap={2}>\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={id}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n to={link.href}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n </Flex>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {permissionStatus === 'loading' && <Widget.Loading />}\n {permissionStatus === 'forbidden' && <Widget.NoPermissions />}\n {permissionStatus === 'granted' && children}\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nconst WidgetComponent = ({ component }: { component: () => Promise<React.ComponentType> }) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n\n return (\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n />\n <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTour />\n <Grid.Root gap={5}>\n {getAllWidgets().map((widget) => {\n return (\n <Grid.Item col={6} s={12} key={widget.uid}>\n <WidgetRoot\n title={widget.title}\n icon={widget.icon}\n permissions={widget.permissions}\n link={widget.link}\n >\n <WidgetComponent component={widget.component} />\n </WidgetRoot>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["WidgetRoot","title","icon","PuzzlePiece","permissions","children","link","formatMessage","useIntl","id","React","useId","Icon","permissionStatus","setPermissionStatus","useState","checkUserHasPermissions","useAuth","state","useEffect","checkPermissions","matchingPermissions","shouldGrant","length","_jsxs","Flex","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","aria-labelledby","justifyContent","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","style","textDecoration","to","href","label","Box","height","overflow","Widget","Loading","NoPermissions","WidgetComponent","component","loadedComponent","setLoadedComponent","loadComponent","resolvedComponent","Component","HomePageCE","user","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","Main","Page","Title","defaultMessage","Layouts","Header","name","subtitle","FreeTrialWelcomeModal","FreeTrialEndedModal","Content","paddingBottom","GuidedTour","Grid","Root","map","widget","Item","col","s","uid","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
|