@strapi/admin 5.14.0 → 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 +6 -6
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- 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/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 +3 -3
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +1 -1
- 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 +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -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/UpsellBanner.d.ts +2 -0
- package/dist/admin/src/index.d.ts +1 -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/shared/contracts/admin.d.ts +1 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -6,7 +6,7 @@ var designSystem = require('@strapi/design-system');
|
|
|
6
6
|
var icons = require('@strapi/icons');
|
|
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 Auth = require('../features/Auth.js');
|
|
11
11
|
var Tracking = require('../features/Tracking.js');
|
|
12
12
|
var users = require('../utils/users.js');
|
|
@@ -14,6 +14,7 @@ var MainNav = require('./MainNav/MainNav.js');
|
|
|
14
14
|
var NavBrand = require('./MainNav/NavBrand.js');
|
|
15
15
|
var NavLink = require('./MainNav/NavLink.js');
|
|
16
16
|
var NavUser = require('./MainNav/NavUser.js');
|
|
17
|
+
var TrialCountdown = require('./MainNav/TrialCountdown.js');
|
|
17
18
|
|
|
18
19
|
const sortLinks = (links)=>{
|
|
19
20
|
return links.sort((a, b)=>{
|
|
@@ -27,15 +28,15 @@ const sortLinks = (links)=>{
|
|
|
27
28
|
}
|
|
28
29
|
});
|
|
29
30
|
};
|
|
30
|
-
const NavLinkBadgeCounter =
|
|
31
|
+
const NavLinkBadgeCounter = styled.styled(NavLink.NavLink.Badge)`
|
|
31
32
|
span {
|
|
32
33
|
color: ${({ theme })=>theme.colors.neutral0};
|
|
33
34
|
}
|
|
34
35
|
`;
|
|
35
|
-
const NavLinkBadgeLock =
|
|
36
|
+
const NavLinkBadgeLock = styled.styled(NavLink.NavLink.Badge)`
|
|
36
37
|
background-color: transparent;
|
|
37
38
|
`;
|
|
38
|
-
const NavListWrapper =
|
|
39
|
+
const NavListWrapper = styled.styled(designSystem.Flex)`
|
|
39
40
|
overflow-y: auto;
|
|
40
41
|
`;
|
|
41
42
|
const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks })=>{
|
|
@@ -73,7 +74,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks })=>{
|
|
|
73
74
|
children: listLinks.length > 0 ? listLinks.map((link)=>{
|
|
74
75
|
const LinkIcon = link.icon;
|
|
75
76
|
const badgeContentLock = link?.licenseOnly ? /*#__PURE__*/ jsxRuntime.jsx(icons.Lightning, {
|
|
76
|
-
fill: "
|
|
77
|
+
fill: "primary600"
|
|
77
78
|
}) : undefined;
|
|
78
79
|
const badgeContentNumeric = link.notificationsCount && link.notificationsCount > 0 ? link.notificationsCount.toString() : undefined;
|
|
79
80
|
const labelValue = formatMessage(link.intlLabel);
|
|
@@ -113,6 +114,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks })=>{
|
|
|
113
114
|
}, link.to);
|
|
114
115
|
}) : null
|
|
115
116
|
}),
|
|
117
|
+
/*#__PURE__*/ jsxRuntime.jsx(TrialCountdown.TrialCountdown, {}),
|
|
116
118
|
/*#__PURE__*/ jsxRuntime.jsx(NavUser.NavUser, {
|
|
117
119
|
initials: initials,
|
|
118
120
|
children: userDisplayName
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftMenu.js","sources":["../../../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Divider, Flex, FlexComponent, useCollator } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../features/Auth';\nimport { useTracking } from '../features/Tracking';\nimport { Menu, MenuItem } from '../hooks/useMenu';\nimport { getDisplayName } from '../utils/users';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavLink } from './MainNav/NavLink';\nimport { NavUser } from './MainNav/NavUser';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavLinkBadgeCounter = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\nconst NavLinkBadgeLock = styled(NavLink.Badge)`\n background-color: transparent;\n`;\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n overflow-y: auto;\n`;\n\ninterface LeftMenuProps extends Pick<Menu, 'generalSectionLinks' | 'pluginsSectionLinks'> {}\n\nconst LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }: LeftMenuProps) => {\n const user = useAuth('AuthenticatedApp', (state) => state.user);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const userDisplayName = getDisplayName(user);\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const initials = userDisplayName\n .split(' ')\n .map((name) => name.substring(0, 1))\n .join('')\n .substring(0, 2);\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n return (\n <MainNav>\n <NavBrand />\n\n <Divider />\n\n <NavListWrapper tag=\"ul\" gap={3} direction=\"column\" flex={1} paddingTop={3} paddingBottom={3}>\n {listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? (\n <Lightning fill=\"
|
|
1
|
+
{"version":3,"file":"LeftMenu.js","sources":["../../../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Divider, Flex, FlexComponent, useCollator } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../features/Auth';\nimport { useTracking } from '../features/Tracking';\nimport { Menu, MenuItem } from '../hooks/useMenu';\nimport { getDisplayName } from '../utils/users';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavLink } from './MainNav/NavLink';\nimport { NavUser } from './MainNav/NavUser';\nimport { TrialCountdown } from './MainNav/TrialCountdown';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavLinkBadgeCounter = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\nconst NavLinkBadgeLock = styled(NavLink.Badge)`\n background-color: transparent;\n`;\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n overflow-y: auto;\n`;\n\ninterface LeftMenuProps extends Pick<Menu, 'generalSectionLinks' | 'pluginsSectionLinks'> {}\n\nconst LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }: LeftMenuProps) => {\n const user = useAuth('AuthenticatedApp', (state) => state.user);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const userDisplayName = getDisplayName(user);\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const initials = userDisplayName\n .split(' ')\n .map((name) => name.substring(0, 1))\n .join('')\n .substring(0, 2);\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n return (\n <MainNav>\n <NavBrand />\n\n <Divider />\n\n <NavListWrapper tag=\"ul\" gap={3} direction=\"column\" flex={1} paddingTop={3} paddingBottom={3}>\n {listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? (\n <Lightning fill=\"primary600\" />\n ) : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n return (\n <Flex tag=\"li\" key={link.to}>\n <NavLink.Tooltip label={labelValue}>\n <NavLink.Link\n to={link.to}\n onClick={() => handleClickOnLink(link.to)}\n aria-label={labelValue}\n >\n <NavLink.Icon label={labelValue}>\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </NavLink.Icon>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </NavLink.Link>\n </NavLink.Tooltip>\n </Flex>\n );\n })\n : null}\n </NavListWrapper>\n <TrialCountdown />\n <NavUser initials={initials}>{userDisplayName}</NavUser>\n </MainNav>\n );\n};\n\nexport { LeftMenu };\n"],"names":["sortLinks","links","sort","a","b","positionA","position","positionB","NavLinkBadgeCounter","styled","NavLink","Badge","theme","colors","neutral0","NavLinkBadgeLock","NavListWrapper","Flex","LeftMenu","generalSectionLinks","pluginsSectionLinks","user","useAuth","state","trackUsage","useTracking","pathname","useLocation","userDisplayName","getDisplayName","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","initials","split","map","name","substring","join","handleClickOnLink","destination","from","to","listLinksAlphabeticallySorted","compare","intlLabel","listLinks","_jsxs","MainNav","_jsx","NavBrand","Divider","tag","gap","direction","flex","paddingTop","paddingBottom","length","link","LinkIcon","icon","badgeContentLock","licenseOnly","Lightning","fill","undefined","badgeContentNumeric","notificationsCount","toString","labelValue","Tooltip","label","Link","onClick","aria-label","Icon","width","height","textColor","paddingLeft","paddingRight","backgroundColor","color","TrialCountdown","NavUser"],"mappings":";;;;;;;;;;;;;;;;;;AAmBA,MAAMA,YAAY,CAACC,KAAAA,GAAAA;AACjB,IAAA,OAAOA,KAAMC,CAAAA,IAAI,CAAC,CAACC,CAAGC,EAAAA,CAAAA,GAAAA;;QAEpB,MAAMC,SAAAA,GAAYF,CAAEG,CAAAA,QAAQ,IAAI,CAAA;QAChC,MAAMC,SAAAA,GAAYH,CAAEE,CAAAA,QAAQ,IAAI,CAAA;AAEhC,QAAA,IAAID,YAAYE,SAAW,EAAA;AACzB,YAAA,OAAO,CAAC,CAAA;SACH,MAAA;YACL,OAAO,CAAA;AACT;AACF,KAAA,CAAA;AACF,CAAA;AAEA,MAAMC,mBAAsBC,GAAAA,aAAAA,CAAOC,eAAQC,CAAAA,KAAK,CAAC;;WAEtC,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,QAAQ,CAAC;;AAElD,CAAC;AAED,MAAMC,gBAAmBN,GAAAA,aAAAA,CAAOC,eAAQC,CAAAA,KAAK,CAAC;;AAE9C,CAAC;AAED,MAAMK,cAAAA,GAAiBP,aAA4BQ,CAAAA,iBAAAA,CAAK;;AAExD,CAAC;AAID,MAAMC,WAAW,CAAC,EAAEC,mBAAmB,EAAEC,mBAAmB,EAAiB,GAAA;AAC3E,IAAA,MAAMC,OAAOC,YAAQ,CAAA,kBAAA,EAAoB,CAACC,KAAAA,GAAUA,MAAMF,IAAI,CAAA;IAC9D,MAAM,EAAEG,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,QAAQ,EAAE,GAAGC,0BAAAA,EAAAA;AACrB,IAAA,MAAMC,kBAAkBC,oBAAeR,CAAAA,IAAAA,CAAAA;AACvC,IAAA,MAAM,EAAES,aAAa,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;IAClC,MAAMC,SAAAA,GAAYC,yBAAYH,MAAQ,EAAA;QACpCI,WAAa,EAAA;AACf,KAAA,CAAA;AAEA,IAAA,MAAMC,WAAWR,eACdS,CAAAA,KAAK,CAAC,GACNC,CAAAA,CAAAA,GAAG,CAAC,CAACC,IAAAA,GAASA,KAAKC,SAAS,CAAC,GAAG,CAChCC,CAAAA,CAAAA,CAAAA,IAAI,CAAC,EACLD,CAAAA,CAAAA,SAAS,CAAC,CAAG,EAAA,CAAA,CAAA;AAEhB,IAAA,MAAME,oBAAoB,CAACC,WAAAA,GAAAA;AACzBnB,QAAAA,UAAAA,CAAW,cAAgB,EAAA;YAAEoB,IAAMlB,EAAAA,QAAAA;YAAUmB,EAAIF,EAAAA;AAAY,SAAA,CAAA;AAC/D,KAAA;AAEA,IAAA,MAAMG,6BAAgC,GAAA;AAAI1B,QAAAA,GAAAA,mBAAAA;AAAwBD,QAAAA,GAAAA;AAAoB,KAAA,CAACjB,IAAI,CACzF,CAACC,CAAAA,EAAGC,IAAM6B,SAAUc,CAAAA,OAAO,CAACjB,aAAAA,CAAc3B,CAAE6C,CAAAA,SAAS,CAAGlB,EAAAA,aAAAA,CAAc1B,EAAE4C,SAAS,CAAA,CAAA,CAAA;AAEnF,IAAA,MAAMC,YAAYjD,SAAU8C,CAAAA,6BAAAA,CAAAA;AAE5B,IAAA,qBACEI,eAACC,CAAAA,eAAAA,EAAAA;;0BACCC,cAACC,CAAAA,iBAAAA,EAAAA,EAAAA,CAAAA;0BAEDD,cAACE,CAAAA,oBAAAA,EAAAA,EAAAA,CAAAA;0BAEDF,cAACpC,CAAAA,cAAAA,EAAAA;gBAAeuC,GAAI,EAAA,IAAA;gBAAKC,GAAK,EAAA,CAAA;gBAAGC,SAAU,EAAA,QAAA;gBAASC,IAAM,EAAA,CAAA;gBAAGC,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,CAAA;AACxFX,gBAAAA,QAAAA,EAAAA,SAAAA,CAAUY,MAAM,GAAG,CAAA,GAChBZ,SAAUX,CAAAA,GAAG,CAAC,CAACwB,IAAAA,GAAAA;oBACb,MAAMC,QAAAA,GAAWD,KAAKE,IAAI;oBAC1B,MAAMC,gBAAAA,GAAmBH,IAAMI,EAAAA,WAAAA,iBAC7Bd,cAACe,CAAAA,eAAAA,EAAAA;wBAAUC,IAAK,EAAA;AACdC,qBAAAA,CAAAA,GAAAA,SAAAA;AAEJ,oBAAA,MAAMC,mBACJR,GAAAA,IAAAA,CAAKS,kBAAkB,IAAIT,IAAKS,CAAAA,kBAAkB,GAAG,CAAA,GACjDT,IAAKS,CAAAA,kBAAkB,CAACC,QAAQ,EAChCH,GAAAA,SAAAA;oBAEN,MAAMI,UAAAA,GAAa3C,aAAcgC,CAAAA,IAAAA,CAAKd,SAAS,CAAA;AAC/C,oBAAA,qBACEI,cAACnC,CAAAA,iBAAAA,EAAAA;wBAAKsC,GAAI,EAAA,IAAA;gDACRH,cAAA,CAAC1C,gBAAQgE,OAAO,EAAA;4BAACC,KAAOF,EAAAA,UAAAA;oDACtBvB,eAAA,CAACxC,gBAAQkE,IAAI,EAAA;AACX/B,gCAAAA,EAAAA,EAAIiB,KAAKjB,EAAE;gCACXgC,OAAS,EAAA,IAAMnC,iBAAkBoB,CAAAA,IAAAA,CAAKjB,EAAE,CAAA;gCACxCiC,YAAYL,EAAAA,UAAAA;;AAEZ,kDAAArB,cAAA,CAAC1C,gBAAQqE,IAAI,EAAA;wCAACJ,KAAOF,EAAAA,UAAAA;AACnB,wCAAA,QAAA,gBAAArB,cAACW,CAAAA,QAAAA,EAAAA;4CAASiB,KAAM,EAAA,IAAA;4CAAKC,MAAO,EAAA,IAAA;4CAAKb,IAAK,EAAA;;;AAEvCH,oCAAAA,gBAAAA,iBACCb,cAACrC,CAAAA,gBAAAA,EAAAA;wCACC4D,KAAM,EAAA,QAAA;wCACNO,SAAU,EAAA,YAAA;wCACVC,WAAa,EAAA,CAAA;wCACbC,YAAc,EAAA,CAAA;AAEbnB,wCAAAA,QAAAA,EAAAA;AAEDK,qCAAAA,CAAAA,GAAAA,mBAAAA,iBACFlB,cAAC5C,CAAAA,mBAAAA,EAAAA;wCACCmE,KAAOL,EAAAA,mBAAAA;wCACPe,eAAgB,EAAA,YAAA;wCAChBL,KAAM,EAAA,QAAA;wCACNM,KAAM,EAAA,UAAA;AAELhB,wCAAAA,QAAAA,EAAAA;AAED,qCAAA,CAAA,GAAA;;;;AA5BUR,qBAAAA,EAAAA,IAAAA,CAAKjB,EAAE,CAAA;iBAkC/B,CAAA,GAAA;;0BAENO,cAACmC,CAAAA,6BAAAA,EAAAA,EAAAA,CAAAA;0BACDnC,cAACoC,CAAAA,eAAAA,EAAAA;gBAAQpD,QAAUA,EAAAA,QAAAA;AAAWR,gBAAAA,QAAAA,EAAAA;;;;AAGpC;;;;"}
|
|
@@ -12,6 +12,7 @@ import { MainNav } from './MainNav/MainNav.mjs';
|
|
|
12
12
|
import { NavBrand } from './MainNav/NavBrand.mjs';
|
|
13
13
|
import { NavLink } from './MainNav/NavLink.mjs';
|
|
14
14
|
import { NavUser } from './MainNav/NavUser.mjs';
|
|
15
|
+
import { TrialCountdown } from './MainNav/TrialCountdown.mjs';
|
|
15
16
|
|
|
16
17
|
const sortLinks = (links)=>{
|
|
17
18
|
return links.sort((a, b)=>{
|
|
@@ -71,7 +72,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks })=>{
|
|
|
71
72
|
children: listLinks.length > 0 ? listLinks.map((link)=>{
|
|
72
73
|
const LinkIcon = link.icon;
|
|
73
74
|
const badgeContentLock = link?.licenseOnly ? /*#__PURE__*/ jsx(Lightning, {
|
|
74
|
-
fill: "
|
|
75
|
+
fill: "primary600"
|
|
75
76
|
}) : undefined;
|
|
76
77
|
const badgeContentNumeric = link.notificationsCount && link.notificationsCount > 0 ? link.notificationsCount.toString() : undefined;
|
|
77
78
|
const labelValue = formatMessage(link.intlLabel);
|
|
@@ -111,6 +112,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks })=>{
|
|
|
111
112
|
}, link.to);
|
|
112
113
|
}) : null
|
|
113
114
|
}),
|
|
115
|
+
/*#__PURE__*/ jsx(TrialCountdown, {}),
|
|
114
116
|
/*#__PURE__*/ jsx(NavUser, {
|
|
115
117
|
initials: initials,
|
|
116
118
|
children: userDisplayName
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftMenu.mjs","sources":["../../../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Divider, Flex, FlexComponent, useCollator } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../features/Auth';\nimport { useTracking } from '../features/Tracking';\nimport { Menu, MenuItem } from '../hooks/useMenu';\nimport { getDisplayName } from '../utils/users';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavLink } from './MainNav/NavLink';\nimport { NavUser } from './MainNav/NavUser';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavLinkBadgeCounter = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\nconst NavLinkBadgeLock = styled(NavLink.Badge)`\n background-color: transparent;\n`;\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n overflow-y: auto;\n`;\n\ninterface LeftMenuProps extends Pick<Menu, 'generalSectionLinks' | 'pluginsSectionLinks'> {}\n\nconst LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }: LeftMenuProps) => {\n const user = useAuth('AuthenticatedApp', (state) => state.user);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const userDisplayName = getDisplayName(user);\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const initials = userDisplayName\n .split(' ')\n .map((name) => name.substring(0, 1))\n .join('')\n .substring(0, 2);\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n return (\n <MainNav>\n <NavBrand />\n\n <Divider />\n\n <NavListWrapper tag=\"ul\" gap={3} direction=\"column\" flex={1} paddingTop={3} paddingBottom={3}>\n {listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? (\n <Lightning fill=\"
|
|
1
|
+
{"version":3,"file":"LeftMenu.mjs","sources":["../../../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Divider, Flex, FlexComponent, useCollator } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../features/Auth';\nimport { useTracking } from '../features/Tracking';\nimport { Menu, MenuItem } from '../hooks/useMenu';\nimport { getDisplayName } from '../utils/users';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavLink } from './MainNav/NavLink';\nimport { NavUser } from './MainNav/NavUser';\nimport { TrialCountdown } from './MainNav/TrialCountdown';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavLinkBadgeCounter = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\nconst NavLinkBadgeLock = styled(NavLink.Badge)`\n background-color: transparent;\n`;\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n overflow-y: auto;\n`;\n\ninterface LeftMenuProps extends Pick<Menu, 'generalSectionLinks' | 'pluginsSectionLinks'> {}\n\nconst LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }: LeftMenuProps) => {\n const user = useAuth('AuthenticatedApp', (state) => state.user);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const userDisplayName = getDisplayName(user);\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const initials = userDisplayName\n .split(' ')\n .map((name) => name.substring(0, 1))\n .join('')\n .substring(0, 2);\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n return (\n <MainNav>\n <NavBrand />\n\n <Divider />\n\n <NavListWrapper tag=\"ul\" gap={3} direction=\"column\" flex={1} paddingTop={3} paddingBottom={3}>\n {listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? (\n <Lightning fill=\"primary600\" />\n ) : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n return (\n <Flex tag=\"li\" key={link.to}>\n <NavLink.Tooltip label={labelValue}>\n <NavLink.Link\n to={link.to}\n onClick={() => handleClickOnLink(link.to)}\n aria-label={labelValue}\n >\n <NavLink.Icon label={labelValue}>\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </NavLink.Icon>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </NavLink.Link>\n </NavLink.Tooltip>\n </Flex>\n );\n })\n : null}\n </NavListWrapper>\n <TrialCountdown />\n <NavUser initials={initials}>{userDisplayName}</NavUser>\n </MainNav>\n );\n};\n\nexport { LeftMenu };\n"],"names":["sortLinks","links","sort","a","b","positionA","position","positionB","NavLinkBadgeCounter","styled","NavLink","Badge","theme","colors","neutral0","NavLinkBadgeLock","NavListWrapper","Flex","LeftMenu","generalSectionLinks","pluginsSectionLinks","user","useAuth","state","trackUsage","useTracking","pathname","useLocation","userDisplayName","getDisplayName","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","initials","split","map","name","substring","join","handleClickOnLink","destination","from","to","listLinksAlphabeticallySorted","compare","intlLabel","listLinks","_jsxs","MainNav","_jsx","NavBrand","Divider","tag","gap","direction","flex","paddingTop","paddingBottom","length","link","LinkIcon","icon","badgeContentLock","licenseOnly","Lightning","fill","undefined","badgeContentNumeric","notificationsCount","toString","labelValue","Tooltip","label","Link","onClick","aria-label","Icon","width","height","textColor","paddingLeft","paddingRight","backgroundColor","color","TrialCountdown","NavUser"],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var designSystem = require('@strapi/design-system');
|
|
5
|
-
var
|
|
5
|
+
var styled = require('styled-components');
|
|
6
6
|
|
|
7
|
-
const MainNavWrapper =
|
|
7
|
+
const MainNavWrapper = styled.styled(designSystem.Flex)`
|
|
8
8
|
border-right: 1px solid ${({ theme })=>theme.colors.neutral150};
|
|
9
9
|
`;
|
|
10
10
|
const MainNav = (props)=>/*#__PURE__*/ jsxRuntime.jsx(MainNavWrapper, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainNav.js","sources":["../../../../../../admin/src/components/MainNav/MainNav.tsx"],"sourcesContent":["import { Flex, FlexComponent, FlexProps } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst MainNavWrapper = styled<FlexComponent<'nav'>>(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst MainNav = (props: FlexProps<'nav'>) => (\n <MainNavWrapper\n alignItems=\"normal\"\n tag=\"nav\"\n background=\"neutral0\"\n direction=\"column\"\n height=\"100vh\"\n position=\"sticky\"\n top={0}\n zIndex={2}\n width={10}\n {...props}\n />\n);\n\nexport { MainNav };\n"],"names":["MainNavWrapper","styled","Flex","theme","colors","neutral150","MainNav","props","_jsx","alignItems","tag","background","direction","height","position","top","zIndex","width"],"mappings":";;;;;;AAGA,MAAMA,cAAAA,GAAiBC,
|
|
1
|
+
{"version":3,"file":"MainNav.js","sources":["../../../../../../admin/src/components/MainNav/MainNav.tsx"],"sourcesContent":["import { Flex, FlexComponent, FlexProps } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst MainNavWrapper = styled<FlexComponent<'nav'>>(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst MainNav = (props: FlexProps<'nav'>) => (\n <MainNavWrapper\n alignItems=\"normal\"\n tag=\"nav\"\n background=\"neutral0\"\n direction=\"column\"\n height=\"100vh\"\n position=\"sticky\"\n top={0}\n zIndex={2}\n width={10}\n {...props}\n />\n);\n\nexport { MainNav };\n"],"names":["MainNavWrapper","styled","Flex","theme","colors","neutral150","MainNav","props","_jsx","alignItems","tag","background","direction","height","position","top","zIndex","width"],"mappings":";;;;;;AAGA,MAAMA,cAAAA,GAAiBC,aAA6BC,CAAAA,iBAAAA,CAAK;0BAC/B,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;AACnE,CAAC;AAEKC,MAAAA,OAAAA,GAAU,CAACC,KAAAA,iBACfC,cAACR,CAAAA,cAAAA,EAAAA;QACCS,UAAW,EAAA,QAAA;QACXC,GAAI,EAAA,KAAA;QACJC,UAAW,EAAA,UAAA;QACXC,SAAU,EAAA,QAAA;QACVC,MAAO,EAAA,OAAA;QACPC,QAAS,EAAA,QAAA;QACTC,GAAK,EAAA,CAAA;QACLC,MAAQ,EAAA,CAAA;QACRC,KAAO,EAAA,EAAA;AACN,QAAA,GAAGV;;;;;"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var designSystem = require('@strapi/design-system');
|
|
5
5
|
var reactIntl = require('react-intl');
|
|
6
|
-
var
|
|
6
|
+
var styled = require('styled-components');
|
|
7
7
|
var Configuration = require('../../features/Configuration.js');
|
|
8
8
|
|
|
9
|
-
const BrandIconWrapper =
|
|
9
|
+
const BrandIconWrapper = styled.styled(designSystem.Flex)`
|
|
10
10
|
svg,
|
|
11
11
|
img {
|
|
12
12
|
border-radius: ${({ theme })=>theme.borderRadius};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavBrand.js","sources":["../../../../../../admin/src/components/MainNav/NavBrand.tsx"],"sourcesContent":["import { Box, Flex, type FlexComponent, VisuallyHidden } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useConfiguration } from '../../features/Configuration';\n\nconst BrandIconWrapper = styled<FlexComponent>(Flex)`\n svg,\n img {\n border-radius: ${({ theme }) => theme.borderRadius};\n object-fit: contain;\n height: 2.4rem;\n width: 2.4rem;\n }\n`;\n\nexport const NavBrand = () => {\n const { formatMessage } = useIntl();\n const {\n logos: { menu },\n } = useConfiguration('LeftMenu');\n return (\n <Box padding={3}>\n <BrandIconWrapper direction=\"column\" justifyContent=\"center\" width=\"3.2rem\" height=\"3.2rem\">\n <img\n src={menu.custom?.url || menu.default}\n alt={formatMessage({\n id: 'app.components.LeftMenu.logo.alt',\n defaultMessage: 'Application logo',\n })}\n width=\"100%\"\n height=\"100%\"\n />\n <VisuallyHidden>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.title',\n defaultMessage: 'Strapi Dashboard',\n })}\n </span>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.workplace',\n defaultMessage: 'Workplace',\n })}\n </span>\n </VisuallyHidden>\n </BrandIconWrapper>\n </Box>\n );\n};\n"],"names":["BrandIconWrapper","styled","Flex","theme","borderRadius","NavBrand","formatMessage","useIntl","logos","menu","useConfiguration","_jsx","Box","padding","_jsxs","direction","justifyContent","width","height","img","src","custom","url","default","alt","id","defaultMessage","VisuallyHidden","span"],"mappings":";;;;;;;;AAMA,MAAMA,gBAAAA,GAAmBC,
|
|
1
|
+
{"version":3,"file":"NavBrand.js","sources":["../../../../../../admin/src/components/MainNav/NavBrand.tsx"],"sourcesContent":["import { Box, Flex, type FlexComponent, VisuallyHidden } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useConfiguration } from '../../features/Configuration';\n\nconst BrandIconWrapper = styled<FlexComponent>(Flex)`\n svg,\n img {\n border-radius: ${({ theme }) => theme.borderRadius};\n object-fit: contain;\n height: 2.4rem;\n width: 2.4rem;\n }\n`;\n\nexport const NavBrand = () => {\n const { formatMessage } = useIntl();\n const {\n logos: { menu },\n } = useConfiguration('LeftMenu');\n return (\n <Box padding={3}>\n <BrandIconWrapper direction=\"column\" justifyContent=\"center\" width=\"3.2rem\" height=\"3.2rem\">\n <img\n src={menu.custom?.url || menu.default}\n alt={formatMessage({\n id: 'app.components.LeftMenu.logo.alt',\n defaultMessage: 'Application logo',\n })}\n width=\"100%\"\n height=\"100%\"\n />\n <VisuallyHidden>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.title',\n defaultMessage: 'Strapi Dashboard',\n })}\n </span>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.workplace',\n defaultMessage: 'Workplace',\n })}\n </span>\n </VisuallyHidden>\n </BrandIconWrapper>\n </Box>\n );\n};\n"],"names":["BrandIconWrapper","styled","Flex","theme","borderRadius","NavBrand","formatMessage","useIntl","logos","menu","useConfiguration","_jsx","Box","padding","_jsxs","direction","justifyContent","width","height","img","src","custom","url","default","alt","id","defaultMessage","VisuallyHidden","span"],"mappings":";;;;;;;;AAMA,MAAMA,gBAAAA,GAAmBC,aAAsBC,CAAAA,iBAAAA,CAAK;;;AAGjC,mBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;;;;;AAKvD,CAAC;MAEYC,QAAW,GAAA,IAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EACJC,KAAO,EAAA,EAAEC,IAAI,EAAE,EAChB,GAAGC,8BAAiB,CAAA,UAAA,CAAA;AACrB,IAAA,qBACEC,cAACC,CAAAA,gBAAAA,EAAAA;QAAIC,OAAS,EAAA,CAAA;AACZ,QAAA,QAAA,gBAAAC,eAACd,CAAAA,gBAAAA,EAAAA;YAAiBe,SAAU,EAAA,QAAA;YAASC,cAAe,EAAA,QAAA;YAASC,KAAM,EAAA,QAAA;YAASC,MAAO,EAAA,QAAA;;8BACjFP,cAACQ,CAAAA,KAAAA,EAAAA;AACCC,oBAAAA,GAAAA,EAAKX,IAAKY,CAAAA,MAAM,EAAEC,GAAAA,IAAOb,KAAKc,OAAO;AACrCC,oBAAAA,GAAAA,EAAKlB,aAAc,CAAA;wBACjBmB,EAAI,EAAA,kCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAT,KAAM,EAAA,MAAA;oBACNC,MAAO,EAAA;;8BAETJ,eAACa,CAAAA,2BAAAA,EAAAA;;sCACChB,cAACiB,CAAAA,MAAAA,EAAAA;sCACEtB,aAAc,CAAA;gCACbmB,EAAI,EAAA,wCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFf,cAACiB,CAAAA,MAAAA,EAAAA;sCACEtB,aAAc,CAAA;gCACbmB,EAAI,EAAA,4CAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;;;;AAMZ;;;;"}
|
|
@@ -4,11 +4,11 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
require('react');
|
|
5
5
|
var designSystem = require('@strapi/design-system');
|
|
6
6
|
var reactRouterDom = require('react-router-dom');
|
|
7
|
-
var
|
|
7
|
+
var styled = require('styled-components');
|
|
8
8
|
|
|
9
9
|
/* -------------------------------------------------------------------------------------------------
|
|
10
10
|
* Link
|
|
11
|
-
* -----------------------------------------------------------------------------------------------*/ const MainNavLinkWrapper =
|
|
11
|
+
* -----------------------------------------------------------------------------------------------*/ const MainNavLinkWrapper = styled.styled(reactRouterDom.NavLink)`
|
|
12
12
|
text-decoration: none;
|
|
13
13
|
display: flex;
|
|
14
14
|
border-radius: ${({ theme })=>theme.borderRadius};
|
|
@@ -64,7 +64,7 @@ const LinkImpl = ({ children, ...props })=>{
|
|
|
64
64
|
};
|
|
65
65
|
/* -------------------------------------------------------------------------------------------------
|
|
66
66
|
* Badge
|
|
67
|
-
* -----------------------------------------------------------------------------------------------*/ const CustomBadge =
|
|
67
|
+
* -----------------------------------------------------------------------------------------------*/ const CustomBadge = styled.styled(designSystem.Badge)`
|
|
68
68
|
/* override default badge styles to change the border radius of the Base element in the Design System */
|
|
69
69
|
border-radius: ${({ theme })=>theme.spaces[10]};
|
|
70
70
|
height: 2rem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavLink.js","sources":["../../../../../../admin/src/components/MainNav/NavLink.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Tooltip,\n TooltipProps as DSTooltipProps,\n Badge,\n BadgeProps,\n AccessibleIcon,\n} from '@strapi/design-system';\nimport { NavLink as RouterLink, LinkProps } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Link\n * -----------------------------------------------------------------------------------------------*/\nconst MainNavLinkWrapper = styled(RouterLink)`\n text-decoration: none;\n display: flex;\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral500};\n position: relative;\n width: fit-content;\n padding-block: 0.6rem;\n padding-inline: 0.6rem;\n\n &:hover {\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n &.active {\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n background: ${({ theme }) => theme.colors.primary100};\n }\n`;\n\nconst LinkImpl = ({ children, ...props }: LinkProps) => {\n return <MainNavLinkWrapper {...props}>{children}</MainNavLinkWrapper>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tooltip\n * -----------------------------------------------------------------------------------------------*/\nconst TooltipImpl = ({ children, label, position = 'right' }: NavLink.TooltipProps) => {\n return (\n <Tooltip side={position} label={label} delayDuration={0}>\n <span>{children}</span>\n </Tooltip>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Icon\n * -----------------------------------------------------------------------------------------------*/\nconst IconImpl = ({ label, children }: { label: string; children: React.ReactNode }) => {\n if (!children) {\n return null;\n }\n return <AccessibleIcon label={label}>{children}</AccessibleIcon>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Badge\n * -----------------------------------------------------------------------------------------------*/\nconst CustomBadge = styled(Badge)`\n /* override default badge styles to change the border radius of the Base element in the Design System */\n border-radius: ${({ theme }) => theme.spaces[10]};\n height: 2rem;\n`;\n\nconst BadgeImpl = ({ children, label, ...props }: NavLink.NavBadgeProps) => {\n if (!children) {\n return null;\n }\n return (\n <CustomBadge\n position=\"absolute\"\n top=\"-0.8rem\"\n left=\"1.7rem\"\n aria-label={label}\n active={false}\n {...props}\n >\n {children}\n </CustomBadge>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst NavLink = {\n Link: LinkImpl,\n Tooltip: TooltipImpl,\n Icon: IconImpl,\n Badge: BadgeImpl,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace NavLink {\n export interface NavBadgeProps extends BadgeProps {\n children: React.ReactNode;\n label: string;\n }\n\n export interface TooltipProps {\n children: React.ReactNode;\n label?: string;\n position?: DSTooltipProps['side'];\n }\n}\n\nexport { NavLink };\n"],"names":["MainNavLinkWrapper","styled","RouterLink","theme","borderRadius","colors","neutral0","neutral500","neutral600","neutral100","primary600","primary100","LinkImpl","children","props","_jsx","TooltipImpl","label","position","Tooltip","side","delayDuration","span","IconImpl","AccessibleIcon","CustomBadge","Badge","spaces","BadgeImpl","top","left","aria-label","active","NavLink","Link","Icon"],"mappings":";;;;;;;;AAYA;;AAEkG,qGAClG,MAAMA,kBAAAA,GAAqBC,
|
|
1
|
+
{"version":3,"file":"NavLink.js","sources":["../../../../../../admin/src/components/MainNav/NavLink.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Tooltip,\n TooltipProps as DSTooltipProps,\n Badge,\n BadgeProps,\n AccessibleIcon,\n} from '@strapi/design-system';\nimport { NavLink as RouterLink, LinkProps } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Link\n * -----------------------------------------------------------------------------------------------*/\nconst MainNavLinkWrapper = styled(RouterLink)`\n text-decoration: none;\n display: flex;\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral500};\n position: relative;\n width: fit-content;\n padding-block: 0.6rem;\n padding-inline: 0.6rem;\n\n &:hover {\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n &.active {\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n background: ${({ theme }) => theme.colors.primary100};\n }\n`;\n\nconst LinkImpl = ({ children, ...props }: LinkProps) => {\n return <MainNavLinkWrapper {...props}>{children}</MainNavLinkWrapper>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tooltip\n * -----------------------------------------------------------------------------------------------*/\nconst TooltipImpl = ({ children, label, position = 'right' }: NavLink.TooltipProps) => {\n return (\n <Tooltip side={position} label={label} delayDuration={0}>\n <span>{children}</span>\n </Tooltip>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Icon\n * -----------------------------------------------------------------------------------------------*/\nconst IconImpl = ({ label, children }: { label: string; children: React.ReactNode }) => {\n if (!children) {\n return null;\n }\n return <AccessibleIcon label={label}>{children}</AccessibleIcon>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Badge\n * -----------------------------------------------------------------------------------------------*/\nconst CustomBadge = styled(Badge)`\n /* override default badge styles to change the border radius of the Base element in the Design System */\n border-radius: ${({ theme }) => theme.spaces[10]};\n height: 2rem;\n`;\n\nconst BadgeImpl = ({ children, label, ...props }: NavLink.NavBadgeProps) => {\n if (!children) {\n return null;\n }\n return (\n <CustomBadge\n position=\"absolute\"\n top=\"-0.8rem\"\n left=\"1.7rem\"\n aria-label={label}\n active={false}\n {...props}\n >\n {children}\n </CustomBadge>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst NavLink = {\n Link: LinkImpl,\n Tooltip: TooltipImpl,\n Icon: IconImpl,\n Badge: BadgeImpl,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace NavLink {\n export interface NavBadgeProps extends BadgeProps {\n children: React.ReactNode;\n label: string;\n }\n\n export interface TooltipProps {\n children: React.ReactNode;\n label?: string;\n position?: DSTooltipProps['side'];\n }\n}\n\nexport { NavLink };\n"],"names":["MainNavLinkWrapper","styled","RouterLink","theme","borderRadius","colors","neutral0","neutral500","neutral600","neutral100","primary600","primary100","LinkImpl","children","props","_jsx","TooltipImpl","label","position","Tooltip","side","delayDuration","span","IconImpl","AccessibleIcon","CustomBadge","Badge","spaces","BadgeImpl","top","left","aria-label","active","NavLink","Link","Icon"],"mappings":";;;;;;;;AAYA;;AAEkG,qGAClG,MAAMA,kBAAAA,GAAqBC,aAAOC,CAAAA,sBAAAA,CAAW;;;AAG5B,iBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;cACvC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,QAAQ,CAAC;SAC5C,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACE,UAAU,CAAC;;;;;;;;YAQtC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACG,UAAU,CAAC;;gBAErC,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACI,UAAU,CAAC;;;;;YAK7C,EAAE,CAAC,EAAEN,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACK,UAAU,CAAC;;gBAErC,EAAE,CAAC,EAAEP,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACM,UAAU,CAAC;;AAEzD,CAAC;AAED,MAAMC,WAAW,CAAC,EAAEC,QAAQ,EAAE,GAAGC,KAAkB,EAAA,GAAA;AACjD,IAAA,qBAAOC,cAACf,CAAAA,kBAAAA,EAAAA;AAAoB,QAAA,GAAGc,KAAK;AAAGD,QAAAA,QAAAA,EAAAA;;AACzC,CAAA;AAEA;;qGAGA,MAAMG,WAAc,GAAA,CAAC,EAAEH,QAAQ,EAAEI,KAAK,EAAEC,QAAW,GAAA,OAAO,EAAwB,GAAA;AAChF,IAAA,qBACEH,cAACI,CAAAA,oBAAAA,EAAAA;QAAQC,IAAMF,EAAAA,QAAAA;QAAUD,KAAOA,EAAAA,KAAAA;QAAOI,aAAe,EAAA,CAAA;AACpD,QAAA,QAAA,gBAAAN,cAACO,CAAAA,MAAAA,EAAAA;AAAMT,YAAAA,QAAAA,EAAAA;;;AAGb,CAAA;AAEA;;AAEkG,qGAClG,MAAMU,QAAW,GAAA,CAAC,EAAEN,KAAK,EAAEJ,QAAQ,EAAgD,GAAA;AACjF,IAAA,IAAI,CAACA,QAAU,EAAA;QACb,OAAO,IAAA;AACT;AACA,IAAA,qBAAOE,cAACS,CAAAA,2BAAAA,EAAAA;QAAeP,KAAOA,EAAAA,KAAAA;AAAQJ,QAAAA,QAAAA,EAAAA;;AACxC,CAAA;AAEA;;AAEkG,qGAClG,MAAMY,WAAAA,GAAcxB,aAAOyB,CAAAA,kBAAAA,CAAM;;iBAEhB,EAAE,CAAC,EAAEvB,KAAK,EAAE,GAAKA,KAAMwB,CAAAA,MAAM,CAAC,EAAA,CAAG,CAAC;;AAEnD,CAAC;AAED,MAAMC,SAAAA,GAAY,CAAC,EAAEf,QAAQ,EAAEI,KAAK,EAAE,GAAGH,KAA8B,EAAA,GAAA;AACrE,IAAA,IAAI,CAACD,QAAU,EAAA;QACb,OAAO,IAAA;AACT;AACA,IAAA,qBACEE,cAACU,CAAAA,WAAAA,EAAAA;QACCP,QAAS,EAAA,UAAA;QACTW,GAAI,EAAA,SAAA;QACJC,IAAK,EAAA,QAAA;QACLC,YAAYd,EAAAA,KAAAA;QACZe,MAAQ,EAAA,KAAA;AACP,QAAA,GAAGlB,KAAK;AAERD,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA;;AAEkG,2GAE5FoB,OAAU,GAAA;IACdC,IAAMtB,EAAAA,QAAAA;IACNO,OAASH,EAAAA,WAAAA;IACTmB,IAAMZ,EAAAA,QAAAA;IACNG,KAAOE,EAAAA;AACT;;;;"}
|
|
@@ -5,10 +5,10 @@ require('react');
|
|
|
5
5
|
var designSystem = require('@strapi/design-system');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
7
|
var reactRouterDom = require('react-router-dom');
|
|
8
|
-
var
|
|
8
|
+
var styled = require('styled-components');
|
|
9
9
|
var Auth = require('../../features/Auth.js');
|
|
10
10
|
|
|
11
|
-
const MenuTrigger =
|
|
11
|
+
const MenuTrigger = styled.styled(designSystem.Menu.Trigger)`
|
|
12
12
|
height: ${({ theme })=>theme.spaces[7]};
|
|
13
13
|
width: ${({ theme })=>theme.spaces[7]};
|
|
14
14
|
border: none;
|
|
@@ -16,27 +16,27 @@ const MenuTrigger = styledComponents.styled(designSystem.Menu.Trigger)`
|
|
|
16
16
|
padding: 0;
|
|
17
17
|
overflow: hidden;
|
|
18
18
|
`;
|
|
19
|
-
const MenuContent =
|
|
19
|
+
const MenuContent = styled.styled(designSystem.Menu.Content)`
|
|
20
20
|
max-height: fit-content;
|
|
21
21
|
width: 200px;
|
|
22
22
|
`;
|
|
23
|
-
const UserInfo =
|
|
23
|
+
const UserInfo = styled.styled(designSystem.Flex)`
|
|
24
24
|
&& {
|
|
25
25
|
padding: ${({ theme })=>theme.spaces[3]};
|
|
26
26
|
}
|
|
27
27
|
align-items: flex-start;
|
|
28
28
|
`;
|
|
29
|
-
const BadgeWrapper =
|
|
29
|
+
const BadgeWrapper = styled.styled(designSystem.Flex)`
|
|
30
30
|
display: flex;
|
|
31
31
|
flex-wrap: wrap;
|
|
32
32
|
gap: ${({ theme })=>theme.spaces[1]};
|
|
33
33
|
|
|
34
34
|
width: 100%;
|
|
35
35
|
`;
|
|
36
|
-
const StyledTypography =
|
|
36
|
+
const StyledTypography = styled.styled(designSystem.Typography)`
|
|
37
37
|
margin-bottom: ${({ theme })=>theme.spaces[3]};
|
|
38
38
|
`;
|
|
39
|
-
const MenuItem =
|
|
39
|
+
const MenuItem = styled.styled(designSystem.Menu.Item)`
|
|
40
40
|
& > span {
|
|
41
41
|
width: 100%;
|
|
42
42
|
display: flex;
|
|
@@ -44,7 +44,7 @@ const MenuItem = styledComponents.styled(designSystem.Menu.Item)`
|
|
|
44
44
|
gap: ${({ theme })=>theme.spaces[3]};
|
|
45
45
|
}
|
|
46
46
|
`;
|
|
47
|
-
const MenuItemDanger =
|
|
47
|
+
const MenuItemDanger = styled.styled(MenuItem)`
|
|
48
48
|
&:hover {
|
|
49
49
|
background: ${({ theme })=>theme.colors.danger100};
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavUser.js","sources":["../../../../../../admin/src/components/MainNav/NavUser.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Menu, VisuallyHidden, Avatar, Typography, Badge } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../../features/Auth';\n\nconst MenuTrigger = styled(Menu.Trigger)`\n height: ${({ theme }) => theme.spaces[7]};\n width: ${({ theme }) => theme.spaces[7]};\n border: none;\n border-radius: 50%;\n padding: 0;\n overflow: hidden;\n`;\n\nconst MenuContent = styled(Menu.Content)`\n max-height: fit-content;\n width: 200px;\n`;\n\nconst UserInfo = styled(Flex)`\n && {\n padding: ${({ theme }) => theme.spaces[3]};\n }\n align-items: flex-start;\n`;\n\nconst BadgeWrapper = styled(Flex)`\n display: flex;\n flex-wrap: wrap;\n gap: ${({ theme }) => theme.spaces[1]};\n\n width: 100%;\n`;\nconst StyledTypography = styled(Typography)`\n margin-bottom: ${({ theme }) => theme.spaces[3]};\n`;\n\nconst MenuItem = styled(Menu.Item)`\n & > span {\n width: 100%;\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst MenuItemDanger = styled(MenuItem)`\n &:hover {\n background: ${({ theme }) => theme.colors.danger100};\n }\n`;\n\nexport interface NavUserProps {\n initials: string;\n children: React.ReactNode;\n}\n\nexport const NavUser = ({ children, initials, ...props }: NavUserProps) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const user = useAuth('User', (state) => state.user);\n const logout = useAuth('Logout', (state) => state.logout);\n\n const handleProfile = () => {\n navigate('/me');\n };\n\n const handleLogout = () => {\n logout();\n navigate('/auth/login');\n };\n\n return (\n <Flex\n justifyContent=\"center\"\n padding={3}\n borderStyle=\"solid\"\n borderWidth=\"1px 0 0 0\"\n borderColor=\"neutral150\"\n {...props}\n >\n <Menu.Root>\n <MenuTrigger endIcon={null} fullWidth justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials} />\n <VisuallyHidden tag=\"span\">{children}</VisuallyHidden>\n </MenuTrigger>\n\n <MenuContent popoverPlacement=\"top-start\" zIndex={3}>\n <UserInfo direction=\"column\" gap={0} alignItems=\"flex-start\">\n <Typography variant=\"omega\" fontWeight=\"bold\" textTransform=\"none\">\n {children}\n </Typography>\n <StyledTypography variant=\"pi\" textColor=\"neutral600\">\n {user?.email}\n </StyledTypography>\n <BadgeWrapper>\n {user?.roles?.map((role) => <Badge key={role.id}>{role.name}</Badge>)}\n </BadgeWrapper>\n </UserInfo>\n\n <Menu.Separator />\n\n <MenuItem onSelect={handleProfile}>\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile settings',\n })}\n </MenuItem>\n\n <MenuItemDanger onSelect={handleLogout} color=\"danger600\">\n {formatMessage({\n id: 'app.components.LeftMenu.logout',\n defaultMessage: 'Log out',\n })}\n </MenuItemDanger>\n </MenuContent>\n </Menu.Root>\n </Flex>\n );\n};\n"],"names":["MenuTrigger","styled","Menu","Trigger","theme","spaces","MenuContent","Content","UserInfo","Flex","BadgeWrapper","StyledTypography","Typography","MenuItem","Item","MenuItemDanger","colors","danger100","NavUser","children","initials","props","formatMessage","useIntl","navigate","useNavigate","user","useAuth","state","logout","handleProfile","handleLogout","_jsx","justifyContent","padding","borderStyle","borderWidth","borderColor","_jsxs","Root","endIcon","fullWidth","Avatar","delayMs","fallback","VisuallyHidden","tag","popoverPlacement","zIndex","direction","gap","alignItems","variant","fontWeight","textTransform","textColor","email","roles","map","role","Badge","name","id","Separator","onSelect","defaultMessage","color"],"mappings":";;;;;;;;;;AASA,MAAMA,WAAcC,GAAAA,
|
|
1
|
+
{"version":3,"file":"NavUser.js","sources":["../../../../../../admin/src/components/MainNav/NavUser.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Menu, VisuallyHidden, Avatar, Typography, Badge } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../../features/Auth';\n\nconst MenuTrigger = styled(Menu.Trigger)`\n height: ${({ theme }) => theme.spaces[7]};\n width: ${({ theme }) => theme.spaces[7]};\n border: none;\n border-radius: 50%;\n padding: 0;\n overflow: hidden;\n`;\n\nconst MenuContent = styled(Menu.Content)`\n max-height: fit-content;\n width: 200px;\n`;\n\nconst UserInfo = styled(Flex)`\n && {\n padding: ${({ theme }) => theme.spaces[3]};\n }\n align-items: flex-start;\n`;\n\nconst BadgeWrapper = styled(Flex)`\n display: flex;\n flex-wrap: wrap;\n gap: ${({ theme }) => theme.spaces[1]};\n\n width: 100%;\n`;\nconst StyledTypography = styled(Typography)`\n margin-bottom: ${({ theme }) => theme.spaces[3]};\n`;\n\nconst MenuItem = styled(Menu.Item)`\n & > span {\n width: 100%;\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst MenuItemDanger = styled(MenuItem)`\n &:hover {\n background: ${({ theme }) => theme.colors.danger100};\n }\n`;\n\nexport interface NavUserProps {\n initials: string;\n children: React.ReactNode;\n}\n\nexport const NavUser = ({ children, initials, ...props }: NavUserProps) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const user = useAuth('User', (state) => state.user);\n const logout = useAuth('Logout', (state) => state.logout);\n\n const handleProfile = () => {\n navigate('/me');\n };\n\n const handleLogout = () => {\n logout();\n navigate('/auth/login');\n };\n\n return (\n <Flex\n justifyContent=\"center\"\n padding={3}\n borderStyle=\"solid\"\n borderWidth=\"1px 0 0 0\"\n borderColor=\"neutral150\"\n {...props}\n >\n <Menu.Root>\n <MenuTrigger endIcon={null} fullWidth justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials} />\n <VisuallyHidden tag=\"span\">{children}</VisuallyHidden>\n </MenuTrigger>\n\n <MenuContent popoverPlacement=\"top-start\" zIndex={3}>\n <UserInfo direction=\"column\" gap={0} alignItems=\"flex-start\">\n <Typography variant=\"omega\" fontWeight=\"bold\" textTransform=\"none\">\n {children}\n </Typography>\n <StyledTypography variant=\"pi\" textColor=\"neutral600\">\n {user?.email}\n </StyledTypography>\n <BadgeWrapper>\n {user?.roles?.map((role) => <Badge key={role.id}>{role.name}</Badge>)}\n </BadgeWrapper>\n </UserInfo>\n\n <Menu.Separator />\n\n <MenuItem onSelect={handleProfile}>\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile settings',\n })}\n </MenuItem>\n\n <MenuItemDanger onSelect={handleLogout} color=\"danger600\">\n {formatMessage({\n id: 'app.components.LeftMenu.logout',\n defaultMessage: 'Log out',\n })}\n </MenuItemDanger>\n </MenuContent>\n </Menu.Root>\n </Flex>\n );\n};\n"],"names":["MenuTrigger","styled","Menu","Trigger","theme","spaces","MenuContent","Content","UserInfo","Flex","BadgeWrapper","StyledTypography","Typography","MenuItem","Item","MenuItemDanger","colors","danger100","NavUser","children","initials","props","formatMessage","useIntl","navigate","useNavigate","user","useAuth","state","logout","handleProfile","handleLogout","_jsx","justifyContent","padding","borderStyle","borderWidth","borderColor","_jsxs","Root","endIcon","fullWidth","Avatar","delayMs","fallback","VisuallyHidden","tag","popoverPlacement","zIndex","direction","gap","alignItems","variant","fontWeight","textTransform","textColor","email","roles","map","role","Badge","name","id","Separator","onSelect","defaultMessage","color"],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var ee = require('@strapi/admin/strapi-admin/ee');
|
|
5
|
+
var designSystem = require('@strapi/design-system');
|
|
6
|
+
var dateFns = require('date-fns');
|
|
7
|
+
var reactIntl = require('react-intl');
|
|
8
|
+
var styled = require('styled-components');
|
|
9
|
+
var admin = require('../../services/admin.js');
|
|
10
|
+
|
|
11
|
+
const CircleProgressBar = ({ percentage })=>{
|
|
12
|
+
const theme = styled.useTheme();
|
|
13
|
+
const radius = 45;
|
|
14
|
+
const circumference = 2 * Math.PI * radius;
|
|
15
|
+
const offset = circumference * (1 - percentage / 100);
|
|
16
|
+
return /*#__PURE__*/ jsxRuntime.jsxs("svg", {
|
|
17
|
+
width: "32",
|
|
18
|
+
height: "32",
|
|
19
|
+
viewBox: "0 0 100 100",
|
|
20
|
+
children: [
|
|
21
|
+
/*#__PURE__*/ jsxRuntime.jsx("defs", {
|
|
22
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs("linearGradient", {
|
|
23
|
+
id: "progressGradient",
|
|
24
|
+
x1: "0%",
|
|
25
|
+
y1: "0%",
|
|
26
|
+
x2: "100%",
|
|
27
|
+
y2: "0%",
|
|
28
|
+
children: [
|
|
29
|
+
/*#__PURE__*/ jsxRuntime.jsx("stop", {
|
|
30
|
+
offset: "0%",
|
|
31
|
+
stopColor: theme.colors.primary600
|
|
32
|
+
}),
|
|
33
|
+
/*#__PURE__*/ jsxRuntime.jsx("stop", {
|
|
34
|
+
offset: "100%",
|
|
35
|
+
stopColor: theme.colors.alternative600
|
|
36
|
+
})
|
|
37
|
+
]
|
|
38
|
+
})
|
|
39
|
+
}),
|
|
40
|
+
/*#__PURE__*/ jsxRuntime.jsx("circle", {
|
|
41
|
+
cx: "50",
|
|
42
|
+
cy: "50",
|
|
43
|
+
r: radius,
|
|
44
|
+
stroke: "#ccc",
|
|
45
|
+
strokeWidth: "10",
|
|
46
|
+
fill: "none"
|
|
47
|
+
}),
|
|
48
|
+
/*#__PURE__*/ jsxRuntime.jsx("circle", {
|
|
49
|
+
cx: "50",
|
|
50
|
+
cy: "50",
|
|
51
|
+
r: radius,
|
|
52
|
+
stroke: "url(#progressGradient)",
|
|
53
|
+
strokeWidth: "10",
|
|
54
|
+
fill: "none",
|
|
55
|
+
strokeDasharray: circumference,
|
|
56
|
+
strokeDashoffset: offset,
|
|
57
|
+
transform: "rotate(-90 50 50)",
|
|
58
|
+
strokeLinecap: "round"
|
|
59
|
+
}),
|
|
60
|
+
/*#__PURE__*/ jsxRuntime.jsx("svg", {
|
|
61
|
+
x: "35",
|
|
62
|
+
y: "25",
|
|
63
|
+
width: "50",
|
|
64
|
+
height: "50",
|
|
65
|
+
viewBox: "0 0 32 32",
|
|
66
|
+
children: /*#__PURE__*/ jsxRuntime.jsx("path", {
|
|
67
|
+
fill: "url(#progressGradient)",
|
|
68
|
+
d: "m21.731 14.683-14 15a1 1 0 0 1-1.711-.875l1.832-9.167L.65 16.936a1 1 0 0 1-.375-1.625l14-15a1 1 0 0 1 1.71.875l-1.837 9.177 7.204 2.7a1 1 0 0 1 .375 1.62z"
|
|
69
|
+
})
|
|
70
|
+
})
|
|
71
|
+
]
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
const TrialCountdown = ()=>{
|
|
75
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
76
|
+
const { license, isError, isLoading } = ee.useLicenseLimits();
|
|
77
|
+
const timeLeftData = admin.useGetLicenseTrialTimeLeftQuery(undefined, {
|
|
78
|
+
skip: !license?.isTrial
|
|
79
|
+
});
|
|
80
|
+
if (isError || isLoading || !license?.isTrial || timeLeftData.isLoading || timeLeftData.isError || !timeLeftData.data || !timeLeftData.data.trialEndsAt) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const targetDate = new Date(timeLeftData.data.trialEndsAt);
|
|
84
|
+
const now = new Date();
|
|
85
|
+
const isTargetDateInPast = dateFns.isBefore(targetDate, dateFns.startOfToday());
|
|
86
|
+
const millisecondsPerDay = 1000 * 60 * 60 * 24;
|
|
87
|
+
const timeDifference = targetDate.getTime() - now.getTime();
|
|
88
|
+
const daysLeft = Math.ceil(timeDifference / millisecondsPerDay) <= 0 ? 0 : Math.ceil(timeDifference / millisecondsPerDay);
|
|
89
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
90
|
+
justifyContent: "center",
|
|
91
|
+
padding: 3,
|
|
92
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
|
|
93
|
+
label: formatMessage(isTargetDateInPast ? {
|
|
94
|
+
id: 'app.components.LeftMenu.trialCountdown.endedAt',
|
|
95
|
+
defaultMessage: 'Your trial ended on {date}'
|
|
96
|
+
} : {
|
|
97
|
+
id: 'app.components.LeftMenu.trialCountdown.endsAt',
|
|
98
|
+
defaultMessage: 'Your trial ends on {date}'
|
|
99
|
+
}, {
|
|
100
|
+
date: dateFns.format(new Date(timeLeftData.data.trialEndsAt), 'PPP')
|
|
101
|
+
}),
|
|
102
|
+
side: "right",
|
|
103
|
+
children: /*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
104
|
+
"data-testid": "trial-countdown",
|
|
105
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(CircleProgressBar, {
|
|
106
|
+
percentage: (30 - daysLeft) * 100 / 30
|
|
107
|
+
})
|
|
108
|
+
})
|
|
109
|
+
})
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
exports.TrialCountdown = TrialCountdown;
|
|
114
|
+
//# sourceMappingURL=TrialCountdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrialCountdown.js","sources":["../../../../../../admin/src/components/MainNav/TrialCountdown.tsx"],"sourcesContent":["import { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Flex, Tooltip } from '@strapi/design-system';\nimport { format, isBefore, startOfToday } from 'date-fns';\nimport { useIntl } from 'react-intl';\nimport { useTheme } from 'styled-components';\n\nimport { useGetLicenseTrialTimeLeftQuery } from '../../../src/services/admin';\n\ntype CircleProgressBarProps = {\n percentage: number;\n};\n\nconst CircleProgressBar = ({ percentage }: CircleProgressBarProps) => {\n const theme = useTheme();\n\n const radius = 45;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference * (1 - percentage / 100);\n\n return (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 100 100\">\n <defs>\n <linearGradient id=\"progressGradient\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor={theme.colors.primary600} />\n <stop offset=\"100%\" stopColor={theme.colors.alternative600} />\n </linearGradient>\n </defs>\n <circle cx=\"50\" cy=\"50\" r={radius} stroke=\"#ccc\" strokeWidth=\"10\" fill=\"none\" />\n <circle\n cx=\"50\"\n cy=\"50\"\n r={radius}\n stroke=\"url(#progressGradient)\"\n strokeWidth=\"10\"\n fill=\"none\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n transform=\"rotate(-90 50 50)\"\n strokeLinecap=\"round\"\n />\n <svg x=\"35\" y=\"25\" width=\"50\" height=\"50\" viewBox=\"0 0 32 32\">\n <path\n fill=\"url(#progressGradient)\"\n d=\"m21.731 14.683-14 15a1 1 0 0 1-1.711-.875l1.832-9.167L.65 16.936a1 1 0 0 1-.375-1.625l14-15a1 1 0 0 1 1.71.875l-1.837 9.177 7.204 2.7a1 1 0 0 1 .375 1.62z\"\n />\n </svg>\n </svg>\n );\n};\n\nconst TrialCountdown = () => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n\n const timeLeftData = useGetLicenseTrialTimeLeftQuery(undefined, {\n skip: !license?.isTrial,\n });\n\n if (\n isError ||\n isLoading ||\n !license?.isTrial ||\n timeLeftData.isLoading ||\n timeLeftData.isError ||\n !timeLeftData.data ||\n !timeLeftData.data.trialEndsAt\n ) {\n return null;\n }\n\n const targetDate = new Date(timeLeftData.data.trialEndsAt);\n const now = new Date();\n const isTargetDateInPast = isBefore(targetDate, startOfToday());\n\n const millisecondsPerDay = 1000 * 60 * 60 * 24;\n const timeDifference = targetDate.getTime() - now.getTime();\n\n const daysLeft =\n Math.ceil(timeDifference / millisecondsPerDay) <= 0\n ? 0\n : Math.ceil(timeDifference / millisecondsPerDay);\n\n return (\n <Flex justifyContent=\"center\" padding={3}>\n <Tooltip\n label={formatMessage(\n isTargetDateInPast\n ? {\n id: 'app.components.LeftMenu.trialCountdown.endedAt',\n defaultMessage: 'Your trial ended on {date}',\n }\n : {\n id: 'app.components.LeftMenu.trialCountdown.endsAt',\n defaultMessage: 'Your trial ends on {date}',\n },\n {\n date: format(new Date(timeLeftData.data.trialEndsAt), 'PPP'),\n }\n )}\n side=\"right\"\n >\n <div data-testid=\"trial-countdown\">\n <CircleProgressBar percentage={((30 - daysLeft) * 100) / 30} />\n </div>\n </Tooltip>\n </Flex>\n );\n};\n\nexport { TrialCountdown };\n"],"names":["CircleProgressBar","percentage","theme","useTheme","radius","circumference","Math","PI","offset","_jsxs","svg","width","height","viewBox","_jsx","defs","linearGradient","id","x1","y1","x2","y2","stop","stopColor","colors","primary600","alternative600","circle","cx","cy","r","stroke","strokeWidth","fill","strokeDasharray","strokeDashoffset","transform","strokeLinecap","x","y","path","d","TrialCountdown","formatMessage","useIntl","license","isError","isLoading","useLicenseLimits","timeLeftData","useGetLicenseTrialTimeLeftQuery","undefined","skip","isTrial","data","trialEndsAt","targetDate","Date","now","isTargetDateInPast","isBefore","startOfToday","millisecondsPerDay","timeDifference","getTime","daysLeft","ceil","Flex","justifyContent","padding","Tooltip","label","defaultMessage","date","format","side","div","data-testid"],"mappings":"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"}
|