@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
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Modal, Button, Box, Flex, Typography } from '@strapi/design-system';
|
|
4
|
+
import { Cross } from '@strapi/icons';
|
|
5
|
+
import { useIntl } from 'react-intl';
|
|
6
|
+
import styled from 'styled-components';
|
|
7
|
+
import { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits.mjs';
|
|
8
|
+
import img from '../../../assets/images/free-trial.png.mjs';
|
|
9
|
+
import { usePersistentState } from '../../../hooks/usePersistentState.mjs';
|
|
10
|
+
|
|
11
|
+
const StyledModalContent = styled(Modal.Content)`
|
|
12
|
+
max-width: 51.6rem;
|
|
13
|
+
`;
|
|
14
|
+
const StyledModalBody = styled(Modal.Body)`
|
|
15
|
+
padding: 0;
|
|
16
|
+
position: relative;
|
|
17
|
+
|
|
18
|
+
> div {
|
|
19
|
+
padding: 0;
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
const StyledButton = styled(Button)`
|
|
23
|
+
border: 0;
|
|
24
|
+
border-radius: 50%;
|
|
25
|
+
|
|
26
|
+
> span {
|
|
27
|
+
line-height: 0;
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
30
|
+
const FreeTrialWelcomeModal = ()=>{
|
|
31
|
+
const { formatMessage } = useIntl();
|
|
32
|
+
const [open, setOpen] = useState(true);
|
|
33
|
+
const [previouslyOpen, setPreviouslyOpen] = usePersistentState('STRAPI_FREE_TRIAL_WELCOME_MODAL', false);
|
|
34
|
+
const { license } = useLicenseLimits();
|
|
35
|
+
const handleClose = ()=>{
|
|
36
|
+
setPreviouslyOpen(true);
|
|
37
|
+
setOpen(false);
|
|
38
|
+
};
|
|
39
|
+
const handleOnOpenChange = (isOpen)=>{
|
|
40
|
+
if (!isOpen) {
|
|
41
|
+
setPreviouslyOpen(true);
|
|
42
|
+
}
|
|
43
|
+
setOpen(isOpen);
|
|
44
|
+
};
|
|
45
|
+
if (previouslyOpen || !license?.isTrial) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return /*#__PURE__*/ jsx(Modal.Root, {
|
|
49
|
+
open: open,
|
|
50
|
+
onOpenChange: handleOnOpenChange,
|
|
51
|
+
children: /*#__PURE__*/ jsx(StyledModalContent, {
|
|
52
|
+
"aria-labelledby": "title",
|
|
53
|
+
children: /*#__PURE__*/ jsxs(StyledModalBody, {
|
|
54
|
+
children: [
|
|
55
|
+
/*#__PURE__*/ jsx(Box, {
|
|
56
|
+
position: "absolute",
|
|
57
|
+
top: 0,
|
|
58
|
+
right: 0,
|
|
59
|
+
padding: 2,
|
|
60
|
+
children: /*#__PURE__*/ jsx(StyledButton, {
|
|
61
|
+
"aria-label": formatMessage({
|
|
62
|
+
id: 'app.utils.close-label',
|
|
63
|
+
defaultMessage: 'Close'
|
|
64
|
+
}),
|
|
65
|
+
variant: "tertiary",
|
|
66
|
+
width: "2.4rem",
|
|
67
|
+
height: "2.4rem",
|
|
68
|
+
onClick: handleClose,
|
|
69
|
+
children: /*#__PURE__*/ jsx(Cross, {})
|
|
70
|
+
})
|
|
71
|
+
}),
|
|
72
|
+
/*#__PURE__*/ jsx("img", {
|
|
73
|
+
src: img,
|
|
74
|
+
alt: "free-trial",
|
|
75
|
+
width: "100%",
|
|
76
|
+
height: "100%"
|
|
77
|
+
}),
|
|
78
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
79
|
+
direction: "column",
|
|
80
|
+
alignItems: "start",
|
|
81
|
+
justifyContent: "stretch",
|
|
82
|
+
padding: 8,
|
|
83
|
+
gap: 4,
|
|
84
|
+
children: [
|
|
85
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
86
|
+
variant: "alpha",
|
|
87
|
+
fontWeight: "bold",
|
|
88
|
+
fontSize: 4,
|
|
89
|
+
id: "title",
|
|
90
|
+
children: formatMessage({
|
|
91
|
+
id: 'app.components.FreeTrialWelcomeModal.title',
|
|
92
|
+
defaultMessage: "We're glad to have you on board"
|
|
93
|
+
})
|
|
94
|
+
}),
|
|
95
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
96
|
+
children: formatMessage({
|
|
97
|
+
id: 'app.components.FreeTrialWelcomeModal.description1',
|
|
98
|
+
defaultMessage: 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.'
|
|
99
|
+
})
|
|
100
|
+
}),
|
|
101
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
102
|
+
children: formatMessage({
|
|
103
|
+
id: 'app.components.FreeTrialWelcomeModal.description2',
|
|
104
|
+
defaultMessage: 'Use this time to build, customize, and test your content workflows with complete flexibility!'
|
|
105
|
+
})
|
|
106
|
+
}),
|
|
107
|
+
/*#__PURE__*/ jsx(Box, {
|
|
108
|
+
marginTop: 4,
|
|
109
|
+
children: /*#__PURE__*/ jsx(Button, {
|
|
110
|
+
onClick: handleClose,
|
|
111
|
+
children: formatMessage({
|
|
112
|
+
id: 'app.components.FreeTrialWelcomeModal.button',
|
|
113
|
+
defaultMessage: 'Start exploring'
|
|
114
|
+
})
|
|
115
|
+
})
|
|
116
|
+
})
|
|
117
|
+
]
|
|
118
|
+
})
|
|
119
|
+
]
|
|
120
|
+
})
|
|
121
|
+
})
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
export { FreeTrialWelcomeModal };
|
|
126
|
+
//# sourceMappingURL=FreeTrialWelcomeModal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FreeTrialWelcomeModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/FreeTrialWelcomeModal.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport lightIllustration from '../../../assets/images/free-trial.png';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\n\nconst StyledModalContent = styled(Modal.Content)`\n max-width: 51.6rem;\n`;\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n position: relative;\n\n > div {\n padding: 0;\n }\n`;\n\nconst StyledButton = styled(Button)`\n border: 0;\n border-radius: 50%;\n\n > span {\n line-height: 0;\n }\n`;\n\nexport const FreeTrialWelcomeModal = () => {\n const { formatMessage } = useIntl();\n const [open, setOpen] = useState(true);\n const [previouslyOpen, setPreviouslyOpen] = usePersistentState(\n 'STRAPI_FREE_TRIAL_WELCOME_MODAL',\n false\n );\n const { license } = useLicenseLimits();\n\n const handleClose = () => {\n setPreviouslyOpen(true);\n setOpen(false);\n };\n\n const handleOnOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n setPreviouslyOpen(true);\n }\n\n setOpen(isOpen);\n };\n\n if (previouslyOpen || !license?.isTrial) {\n return null;\n }\n\n return (\n <Modal.Root open={open} onOpenChange={handleOnOpenChange}>\n <StyledModalContent aria-labelledby=\"title\">\n <StyledModalBody>\n <Box position=\"absolute\" top={0} right={0} padding={2}>\n <StyledButton\n aria-label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n variant=\"tertiary\"\n width=\"2.4rem\"\n height=\"2.4rem\"\n onClick={handleClose}\n >\n <Cross />\n </StyledButton>\n </Box>\n <img src={lightIllustration} alt=\"free-trial\" width=\"100%\" height=\"100%\" />\n <Flex direction=\"column\" alignItems=\"start\" justifyContent=\"stretch\" padding={8} gap={4}>\n <Typography variant=\"alpha\" fontWeight=\"bold\" fontSize={4} id=\"title\">\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.title',\n defaultMessage: \"We're glad to have you on board\",\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description1',\n defaultMessage:\n 'For the next 30 days, you will have full access to advanced features like Content History, Releases and Single Sign-On (SSO) – everything you need to explore the power of Strapi CMS.',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.description2',\n defaultMessage:\n 'Use this time to build, customize, and test your content workflows with complete flexibility!',\n })}\n </Typography>\n <Box marginTop={4}>\n <Button onClick={handleClose}>\n {formatMessage({\n id: 'app.components.FreeTrialWelcomeModal.button',\n defaultMessage: 'Start exploring',\n })}\n </Button>\n </Box>\n </Flex>\n </StyledModalBody>\n </StyledModalContent>\n </Modal.Root>\n );\n};\n"],"names":["StyledModalContent","styled","Modal","Content","StyledModalBody","Body","StyledButton","Button","FreeTrialWelcomeModal","formatMessage","useIntl","open","setOpen","useState","previouslyOpen","setPreviouslyOpen","usePersistentState","license","useLicenseLimits","handleClose","handleOnOpenChange","isOpen","isTrial","_jsx","Root","onOpenChange","aria-labelledby","_jsxs","Box","position","top","right","padding","aria-label","id","defaultMessage","variant","width","height","onClick","Cross","img","src","lightIllustration","alt","Flex","direction","alignItems","justifyContent","gap","Typography","fontWeight","fontSize","marginTop"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ var symbols = require('@strapi/icons/symbols');
|
|
|
7
7
|
var pluralize = require('pluralize');
|
|
8
8
|
var reactIntl = require('react-intl');
|
|
9
9
|
var semver = require('semver');
|
|
10
|
-
var
|
|
10
|
+
var styled = require('styled-components');
|
|
11
11
|
var logoStrapi2022 = require('../../../assets/images/logo-strapi-2022.svg.js');
|
|
12
12
|
var Notifications = require('../../../features/Notifications.js');
|
|
13
13
|
var Tracking = require('../../../features/Tracking.js');
|
|
@@ -33,7 +33,7 @@ function _interopNamespaceDefault(e) {
|
|
|
33
33
|
var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
|
|
34
34
|
|
|
35
35
|
// Custom component to have an ellipsis after the 2nd line
|
|
36
|
-
const EllipsisText =
|
|
36
|
+
const EllipsisText = styled.styled(designSystem.Typography)`
|
|
37
37
|
display: -webkit-box;
|
|
38
38
|
-webkit-box-orient: vertical;
|
|
39
39
|
-webkit-line-clamp: 2;
|
|
@@ -320,7 +320,7 @@ const PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType })=>{
|
|
|
320
320
|
]
|
|
321
321
|
});
|
|
322
322
|
};
|
|
323
|
-
const VerticalDivider =
|
|
323
|
+
const VerticalDivider = styled.styled(designSystem.Divider)`
|
|
324
324
|
width: 1.2rem;
|
|
325
325
|
transform: rotate(90deg);
|
|
326
326
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmPackageCard.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackageCard.tsx"],"sourcesContent":["import {\n Box,\n Flex,\n Tooltip,\n Typography,\n Divider,\n Button,\n LinkButton,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { CheckCircle, ExternalLink, Download, Star, Check, Duplicate } from '@strapi/icons';\nimport { GitHub } from '@strapi/icons/symbols';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\nimport * as semver from 'semver';\nimport { styled } from 'styled-components';\n\nimport StrapiLogo from '../../../assets/images/logo-strapi-2022.svg';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useClipboard } from '../../../hooks/useClipboard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType } from '../MarketplacePage';\n\n// Custom component to have an ellipsis after the 2nd line\nconst EllipsisText = styled<TypographyComponent<'p'>>(Typography)`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n`;\n\ninterface NpmPackageCardProps extends Pick<AppInfoContextValue, 'useYarn'> {\n npmPackage: Plugin | Provider;\n isInstalled: boolean;\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackageType: NpmPackageType;\n strapiAppVersion: AppInfoContextValue['strapiVersion'];\n}\n\nconst NpmPackageCard = ({\n npmPackage,\n isInstalled,\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n}: NpmPackageCardProps) => {\n const { attributes } = npmPackage;\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const commandToCopy = useYarn\n ? `yarn add ${attributes.npmPackageName}`\n : `npm install ${attributes.npmPackageName}`;\n\n const madeByStrapiMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.madeByStrapi',\n defaultMessage: 'Made by Strapi',\n });\n\n const npmPackageHref = `https://market.strapi.io/${pluralize.plural(npmPackageType)}/${\n attributes.slug\n }`;\n\n const versionRange = semver.validRange(attributes.strapiVersion);\n\n const isCompatible = versionRange\n ? semver.satisfies(strapiAppVersion ?? '', versionRange)\n : false;\n\n return (\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n paddingTop={4}\n paddingRight={4}\n paddingBottom={4}\n paddingLeft={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n alignItems=\"normal\"\n data-testid=\"npm-package-card\"\n >\n <Box>\n <Flex direction=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Box\n tag=\"img\"\n src={attributes.logo.url}\n alt={`${attributes.name} logo`}\n hasRadius\n width={11}\n height={11}\n />\n <PackageStats\n githubStars={attributes.githubStars}\n npmDownloads={attributes.npmDownloads}\n npmPackageType={npmPackageType}\n />\n </Flex>\n <Box paddingTop={4}>\n <Typography tag=\"h3\" variant=\"delta\">\n <Flex\n alignItems=\"center\"\n gap={attributes.validated && !attributes.madeByStrapi ? 2 : 1}\n >\n {attributes.name}\n {attributes.validated && !attributes.madeByStrapi && (\n <Tooltip\n description={formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.verified',\n defaultMessage: 'Plugin verified by Strapi',\n })}\n >\n <CheckCircle fill=\"success600\" />\n </Tooltip>\n )}\n {attributes.madeByStrapi && (\n <Tooltip description={madeByStrapiMessage}>\n <Box\n tag=\"img\"\n src={StrapiLogo}\n alt={madeByStrapiMessage}\n width={6}\n height=\"auto\"\n />\n </Tooltip>\n )}\n </Flex>\n </Typography>\n </Box>\n <Box paddingTop={2}>\n <EllipsisText tag=\"p\" variant=\"omega\" textColor=\"neutral600\">\n {attributes.description}\n </EllipsisText>\n </Box>\n </Box>\n\n <Flex gap={2} style={{ alignSelf: 'flex-end' }} paddingTop={6}>\n <LinkButton\n size=\"S\"\n href={npmPackageHref}\n isExternal\n endIcon={<ExternalLink />}\n aria-label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.info.label',\n defaultMessage: 'Learn more about {pluginName}',\n },\n { pluginName: attributes.name }\n )}\n variant=\"tertiary\"\n onClick={() => trackUsage('didPluginLearnMore')}\n >\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.info.text',\n defaultMessage: 'More',\n })}\n </LinkButton>\n <InstallPluginButton\n isInstalled={isInstalled}\n isInDevelopmentMode={isInDevelopmentMode}\n isCompatible={isCompatible}\n commandToCopy={commandToCopy}\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={attributes.strapiVersion}\n pluginName={attributes.name}\n />\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * InstallPluginButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface InstallPluginButtonProps\n extends Pick<NpmPackageCardProps, 'isInstalled' | 'isInDevelopmentMode' | 'strapiAppVersion'> {\n commandToCopy: string;\n pluginName: string;\n strapiPeerDepVersion?: string;\n isCompatible?: boolean;\n}\n\nconst InstallPluginButton = ({\n isInstalled,\n isInDevelopmentMode,\n isCompatible,\n commandToCopy,\n strapiAppVersion,\n strapiPeerDepVersion,\n pluginName,\n}: InstallPluginButtonProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { copy } = useClipboard();\n\n const handleCopy = async () => {\n const didCopy = await copy(commandToCopy);\n\n if (didCopy) {\n trackUsage('willInstallPlugin');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'admin.pages.MarketPlacePage.plugin.copy.success' }),\n });\n }\n };\n\n // Already installed\n if (isInstalled) {\n return (\n <Flex gap={2} paddingLeft={4}>\n <Check width=\"1.2rem\" height=\"1.2rem\" color=\"success600\" />\n <Typography variant=\"omega\" textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.installed',\n defaultMessage: 'Installed',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // In development, show install button\n if (isInDevelopmentMode && isCompatible !== false) {\n return (\n <CardButton\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={strapiPeerDepVersion}\n handleCopy={handleCopy}\n pluginName={pluginName}\n />\n );\n }\n\n // Not in development and plugin not installed already. Show nothing\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CardButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CardButtonProps\n extends Pick<NpmPackageCardProps, 'strapiAppVersion'>,\n Pick<InstallPluginButtonProps, 'strapiPeerDepVersion' | 'pluginName'> {\n handleCopy: () => void;\n}\n\nconst CardButton = ({\n strapiPeerDepVersion,\n strapiAppVersion,\n handleCopy,\n pluginName,\n}: CardButtonProps) => {\n const { formatMessage } = useIntl();\n const versionRange = semver.validRange(strapiPeerDepVersion);\n const isCompatible = semver.satisfies(strapiAppVersion ?? '', versionRange ?? '');\n\n const installMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.copy',\n defaultMessage: 'Copy install command',\n });\n\n // Only plugins receive a strapiAppVersion\n if (strapiAppVersion) {\n if (!versionRange || !isCompatible) {\n return (\n <Tooltip\n data-testid={`tooltip-${pluginName}`}\n label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.version',\n defaultMessage:\n 'Update your Strapi version: \"{strapiAppVersion}\" to: \"{versionRange}\"',\n },\n {\n strapiAppVersion,\n versionRange,\n }\n )}\n >\n <span>\n <Button\n size=\"S\"\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleCopy}\n disabled={!isCompatible}\n >\n {installMessage}\n </Button>\n </span>\n </Tooltip>\n );\n }\n }\n\n return (\n <Button size=\"S\" startIcon={<Duplicate />} variant=\"secondary\" onClick={handleCopy}>\n {installMessage}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PackageStats\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PackageStatsProps {\n githubStars?: number;\n npmDownloads?: number;\n npmPackageType: NpmPackageType;\n}\n\nconst PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }: PackageStatsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex gap={1}>\n {!!githubStars && (\n <>\n <GitHub height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <Star height=\"1.2rem\" width=\"1.2rem\" fill=\"warning500\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.githubStars`,\n defaultMessage: `This {package} was starred {starsCount} on GitHub`,\n },\n {\n starsCount: githubStars,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {githubStars}\n </Typography>\n </p>\n <VerticalDivider />\n </>\n )}\n <Download height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.downloads`,\n defaultMessage: `This {package} has {downloadsCount} weekly downloads`,\n },\n {\n downloadsCount: npmDownloads,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {npmDownloads}\n </Typography>\n </p>\n </Flex>\n );\n};\n\nconst VerticalDivider = styled(Divider)`\n width: 1.2rem;\n transform: rotate(90deg);\n`;\n\nexport { NpmPackageCard };\nexport type { NpmPackageCardProps };\n"],"names":["EllipsisText","styled","Typography","NpmPackageCard","npmPackage","isInstalled","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","attributes","formatMessage","useIntl","trackUsage","useTracking","commandToCopy","npmPackageName","madeByStrapiMessage","id","defaultMessage","npmPackageHref","pluralize","plural","slug","versionRange","semver","validRange","strapiVersion","isCompatible","satisfies","_jsxs","Flex","direction","justifyContent","paddingTop","paddingRight","paddingBottom","paddingLeft","hasRadius","background","shadow","height","alignItems","data-testid","Box","_jsx","tag","src","logo","url","alt","name","width","PackageStats","githubStars","npmDownloads","variant","gap","validated","madeByStrapi","Tooltip","description","CheckCircle","fill","StrapiLogo","textColor","style","alignSelf","LinkButton","size","href","isExternal","endIcon","ExternalLink","aria-label","pluginName","onClick","InstallPluginButton","strapiPeerDepVersion","toggleNotification","useNotification","copy","useClipboard","handleCopy","didCopy","type","message","Check","color","fontWeight","CardButton","installMessage","label","span","Button","startIcon","Duplicate","disabled","_Fragment","GitHub","aria-hidden","Star","p","starsCount","package","VerticalDivider","Download","downloadsCount","Divider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NpmPackageCard.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackageCard.tsx"],"sourcesContent":["import {\n Box,\n Flex,\n Tooltip,\n Typography,\n Divider,\n Button,\n LinkButton,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { CheckCircle, ExternalLink, Download, Star, Check, Duplicate } from '@strapi/icons';\nimport { GitHub } from '@strapi/icons/symbols';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\nimport * as semver from 'semver';\nimport { styled } from 'styled-components';\n\nimport StrapiLogo from '../../../assets/images/logo-strapi-2022.svg';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useClipboard } from '../../../hooks/useClipboard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType } from '../MarketplacePage';\n\n// Custom component to have an ellipsis after the 2nd line\nconst EllipsisText = styled<TypographyComponent<'p'>>(Typography)`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n`;\n\ninterface NpmPackageCardProps extends Pick<AppInfoContextValue, 'useYarn'> {\n npmPackage: Plugin | Provider;\n isInstalled: boolean;\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackageType: NpmPackageType;\n strapiAppVersion: AppInfoContextValue['strapiVersion'];\n}\n\nconst NpmPackageCard = ({\n npmPackage,\n isInstalled,\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n}: NpmPackageCardProps) => {\n const { attributes } = npmPackage;\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const commandToCopy = useYarn\n ? `yarn add ${attributes.npmPackageName}`\n : `npm install ${attributes.npmPackageName}`;\n\n const madeByStrapiMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.madeByStrapi',\n defaultMessage: 'Made by Strapi',\n });\n\n const npmPackageHref = `https://market.strapi.io/${pluralize.plural(npmPackageType)}/${\n attributes.slug\n }`;\n\n const versionRange = semver.validRange(attributes.strapiVersion);\n\n const isCompatible = versionRange\n ? semver.satisfies(strapiAppVersion ?? '', versionRange)\n : false;\n\n return (\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n paddingTop={4}\n paddingRight={4}\n paddingBottom={4}\n paddingLeft={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n alignItems=\"normal\"\n data-testid=\"npm-package-card\"\n >\n <Box>\n <Flex direction=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Box\n tag=\"img\"\n src={attributes.logo.url}\n alt={`${attributes.name} logo`}\n hasRadius\n width={11}\n height={11}\n />\n <PackageStats\n githubStars={attributes.githubStars}\n npmDownloads={attributes.npmDownloads}\n npmPackageType={npmPackageType}\n />\n </Flex>\n <Box paddingTop={4}>\n <Typography tag=\"h3\" variant=\"delta\">\n <Flex\n alignItems=\"center\"\n gap={attributes.validated && !attributes.madeByStrapi ? 2 : 1}\n >\n {attributes.name}\n {attributes.validated && !attributes.madeByStrapi && (\n <Tooltip\n description={formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.verified',\n defaultMessage: 'Plugin verified by Strapi',\n })}\n >\n <CheckCircle fill=\"success600\" />\n </Tooltip>\n )}\n {attributes.madeByStrapi && (\n <Tooltip description={madeByStrapiMessage}>\n <Box\n tag=\"img\"\n src={StrapiLogo}\n alt={madeByStrapiMessage}\n width={6}\n height=\"auto\"\n />\n </Tooltip>\n )}\n </Flex>\n </Typography>\n </Box>\n <Box paddingTop={2}>\n <EllipsisText tag=\"p\" variant=\"omega\" textColor=\"neutral600\">\n {attributes.description}\n </EllipsisText>\n </Box>\n </Box>\n\n <Flex gap={2} style={{ alignSelf: 'flex-end' }} paddingTop={6}>\n <LinkButton\n size=\"S\"\n href={npmPackageHref}\n isExternal\n endIcon={<ExternalLink />}\n aria-label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.info.label',\n defaultMessage: 'Learn more about {pluginName}',\n },\n { pluginName: attributes.name }\n )}\n variant=\"tertiary\"\n onClick={() => trackUsage('didPluginLearnMore')}\n >\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.info.text',\n defaultMessage: 'More',\n })}\n </LinkButton>\n <InstallPluginButton\n isInstalled={isInstalled}\n isInDevelopmentMode={isInDevelopmentMode}\n isCompatible={isCompatible}\n commandToCopy={commandToCopy}\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={attributes.strapiVersion}\n pluginName={attributes.name}\n />\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * InstallPluginButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface InstallPluginButtonProps\n extends Pick<NpmPackageCardProps, 'isInstalled' | 'isInDevelopmentMode' | 'strapiAppVersion'> {\n commandToCopy: string;\n pluginName: string;\n strapiPeerDepVersion?: string;\n isCompatible?: boolean;\n}\n\nconst InstallPluginButton = ({\n isInstalled,\n isInDevelopmentMode,\n isCompatible,\n commandToCopy,\n strapiAppVersion,\n strapiPeerDepVersion,\n pluginName,\n}: InstallPluginButtonProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { copy } = useClipboard();\n\n const handleCopy = async () => {\n const didCopy = await copy(commandToCopy);\n\n if (didCopy) {\n trackUsage('willInstallPlugin');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'admin.pages.MarketPlacePage.plugin.copy.success' }),\n });\n }\n };\n\n // Already installed\n if (isInstalled) {\n return (\n <Flex gap={2} paddingLeft={4}>\n <Check width=\"1.2rem\" height=\"1.2rem\" color=\"success600\" />\n <Typography variant=\"omega\" textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.installed',\n defaultMessage: 'Installed',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // In development, show install button\n if (isInDevelopmentMode && isCompatible !== false) {\n return (\n <CardButton\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={strapiPeerDepVersion}\n handleCopy={handleCopy}\n pluginName={pluginName}\n />\n );\n }\n\n // Not in development and plugin not installed already. Show nothing\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CardButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CardButtonProps\n extends Pick<NpmPackageCardProps, 'strapiAppVersion'>,\n Pick<InstallPluginButtonProps, 'strapiPeerDepVersion' | 'pluginName'> {\n handleCopy: () => void;\n}\n\nconst CardButton = ({\n strapiPeerDepVersion,\n strapiAppVersion,\n handleCopy,\n pluginName,\n}: CardButtonProps) => {\n const { formatMessage } = useIntl();\n const versionRange = semver.validRange(strapiPeerDepVersion);\n const isCompatible = semver.satisfies(strapiAppVersion ?? '', versionRange ?? '');\n\n const installMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.copy',\n defaultMessage: 'Copy install command',\n });\n\n // Only plugins receive a strapiAppVersion\n if (strapiAppVersion) {\n if (!versionRange || !isCompatible) {\n return (\n <Tooltip\n data-testid={`tooltip-${pluginName}`}\n label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.version',\n defaultMessage:\n 'Update your Strapi version: \"{strapiAppVersion}\" to: \"{versionRange}\"',\n },\n {\n strapiAppVersion,\n versionRange,\n }\n )}\n >\n <span>\n <Button\n size=\"S\"\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleCopy}\n disabled={!isCompatible}\n >\n {installMessage}\n </Button>\n </span>\n </Tooltip>\n );\n }\n }\n\n return (\n <Button size=\"S\" startIcon={<Duplicate />} variant=\"secondary\" onClick={handleCopy}>\n {installMessage}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PackageStats\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PackageStatsProps {\n githubStars?: number;\n npmDownloads?: number;\n npmPackageType: NpmPackageType;\n}\n\nconst PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }: PackageStatsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex gap={1}>\n {!!githubStars && (\n <>\n <GitHub height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <Star height=\"1.2rem\" width=\"1.2rem\" fill=\"warning500\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.githubStars`,\n defaultMessage: `This {package} was starred {starsCount} on GitHub`,\n },\n {\n starsCount: githubStars,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {githubStars}\n </Typography>\n </p>\n <VerticalDivider />\n </>\n )}\n <Download height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.downloads`,\n defaultMessage: `This {package} has {downloadsCount} weekly downloads`,\n },\n {\n downloadsCount: npmDownloads,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {npmDownloads}\n </Typography>\n </p>\n </Flex>\n );\n};\n\nconst VerticalDivider = styled(Divider)`\n width: 1.2rem;\n transform: rotate(90deg);\n`;\n\nexport { NpmPackageCard };\nexport type { NpmPackageCardProps };\n"],"names":["EllipsisText","styled","Typography","NpmPackageCard","npmPackage","isInstalled","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","attributes","formatMessage","useIntl","trackUsage","useTracking","commandToCopy","npmPackageName","madeByStrapiMessage","id","defaultMessage","npmPackageHref","pluralize","plural","slug","versionRange","semver","validRange","strapiVersion","isCompatible","satisfies","_jsxs","Flex","direction","justifyContent","paddingTop","paddingRight","paddingBottom","paddingLeft","hasRadius","background","shadow","height","alignItems","data-testid","Box","_jsx","tag","src","logo","url","alt","name","width","PackageStats","githubStars","npmDownloads","variant","gap","validated","madeByStrapi","Tooltip","description","CheckCircle","fill","StrapiLogo","textColor","style","alignSelf","LinkButton","size","href","isExternal","endIcon","ExternalLink","aria-label","pluginName","onClick","InstallPluginButton","strapiPeerDepVersion","toggleNotification","useNotification","copy","useClipboard","handleCopy","didCopy","type","message","Check","color","fontWeight","CardButton","installMessage","label","span","Button","startIcon","Duplicate","disabled","_Fragment","GitHub","aria-hidden","Star","p","starsCount","package","VerticalDivider","Download","downloadsCount","Divider"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var designSystem = require('@strapi/design-system');
|
|
5
5
|
var symbols = require('@strapi/icons/symbols');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
|
-
var
|
|
7
|
+
var styled = require('styled-components');
|
|
8
8
|
var Layout = require('../../../components/Layouts/Layout.js');
|
|
9
9
|
var PageHelpers = require('../../../components/PageHelpers.js');
|
|
10
10
|
var NpmPackageCard = require('./NpmPackageCard.js');
|
|
@@ -84,7 +84,7 @@ const NpmPackagesGrid = ({ status, npmPackages = [], installedPackageNames = [],
|
|
|
84
84
|
}, npmPackage.id))
|
|
85
85
|
});
|
|
86
86
|
};
|
|
87
|
-
const EmptyPluginCard =
|
|
87
|
+
const EmptyPluginCard = styled.styled(designSystem.Box)`
|
|
88
88
|
background: ${({ theme })=>`linear-gradient(180deg, rgba(234, 234, 239, 0) 0%, ${theme.colors.neutral150} 100%)`};
|
|
89
89
|
opacity: 0.33;
|
|
90
90
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmPackagesGrid.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackagesGrid.tsx"],"sourcesContent":["import { Box, BoxComponent, Flex, Grid, Typography } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { Page } from '../../../components/PageHelpers';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\n\nimport { NpmPackageCard, NpmPackageCardProps } from './NpmPackageCard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\n\ninterface NpmPackagesGridProps extends Pick<NpmPackageCardProps, 'npmPackageType' | 'useYarn'> {\n debouncedSearch: string;\n installedPackageNames: string[];\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackages?: Array<Plugin | Provider>;\n status: 'idle' | 'loading' | 'error' | 'success';\n strapiAppVersion?: NpmPackageCardProps['strapiAppVersion'];\n}\n\nconst NpmPackagesGrid = ({\n status,\n npmPackages = [],\n installedPackageNames = [],\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n debouncedSearch,\n}: NpmPackagesGridProps) => {\n const { formatMessage } = useIntl();\n\n if (status === 'error') {\n return <Page.Error />;\n }\n\n if (status === 'loading') {\n return <Page.Loading />;\n }\n\n const emptySearchMessage = formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.search.empty',\n defaultMessage: 'No result for \"{target}\"',\n },\n { target: debouncedSearch }\n );\n\n if (npmPackages.length === 0) {\n return (\n <Box position=\"relative\">\n <Layouts.Grid size=\"M\">\n {Array(12)\n .fill(null)\n .map((_, idx) => (\n <EmptyPluginCard key={idx} height=\"234px\" hasRadius />\n ))}\n </Layouts.Grid>\n <Box position=\"absolute\" top={11} width=\"100%\">\n <Flex alignItems=\"center\" justifyContent=\"center\" direction=\"column\">\n <EmptyDocuments width=\"160px\" height=\"88px\" />\n <Box paddingTop={6}>\n <Typography variant=\"delta\" tag=\"p\" textColor=\"neutral600\">\n {emptySearchMessage}\n </Typography>\n </Box>\n </Flex>\n </Box>\n </Box>\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {npmPackages.map((npmPackage) => (\n <Grid.Item\n col={4}\n s={6}\n xs={12}\n style={{ height: '100%' }}\n key={npmPackage.id}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <NpmPackageCard\n npmPackage={npmPackage}\n isInstalled={installedPackageNames.includes(npmPackage.attributes.npmPackageName)}\n useYarn={useYarn}\n isInDevelopmentMode={isInDevelopmentMode}\n npmPackageType={npmPackageType}\n strapiAppVersion={strapiAppVersion}\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\nconst EmptyPluginCard = styled<BoxComponent>(Box)`\n background: ${({ theme }) =>\n `linear-gradient(180deg, rgba(234, 234, 239, 0) 0%, ${theme.colors.neutral150} 100%)`};\n opacity: 0.33;\n`;\n\nexport { NpmPackagesGrid };\n"],"names":["NpmPackagesGrid","status","npmPackages","installedPackageNames","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","debouncedSearch","formatMessage","useIntl","_jsx","Page","Error","Loading","emptySearchMessage","id","defaultMessage","target","length","_jsxs","Box","position","Layouts","Grid","size","Array","fill","map","_","idx","EmptyPluginCard","height","hasRadius","top","width","Flex","alignItems","justifyContent","direction","EmptyDocuments","paddingTop","Typography","variant","tag","textColor","Root","gap","npmPackage","Item","col","s","xs","style","NpmPackageCard","isInstalled","includes","attributes","npmPackageName","styled","theme","colors","neutral150"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"NpmPackagesGrid.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackagesGrid.tsx"],"sourcesContent":["import { Box, BoxComponent, Flex, Grid, Typography } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { Page } from '../../../components/PageHelpers';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\n\nimport { NpmPackageCard, NpmPackageCardProps } from './NpmPackageCard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\n\ninterface NpmPackagesGridProps extends Pick<NpmPackageCardProps, 'npmPackageType' | 'useYarn'> {\n debouncedSearch: string;\n installedPackageNames: string[];\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackages?: Array<Plugin | Provider>;\n status: 'idle' | 'loading' | 'error' | 'success';\n strapiAppVersion?: NpmPackageCardProps['strapiAppVersion'];\n}\n\nconst NpmPackagesGrid = ({\n status,\n npmPackages = [],\n installedPackageNames = [],\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n debouncedSearch,\n}: NpmPackagesGridProps) => {\n const { formatMessage } = useIntl();\n\n if (status === 'error') {\n return <Page.Error />;\n }\n\n if (status === 'loading') {\n return <Page.Loading />;\n }\n\n const emptySearchMessage = formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.search.empty',\n defaultMessage: 'No result for \"{target}\"',\n },\n { target: debouncedSearch }\n );\n\n if (npmPackages.length === 0) {\n return (\n <Box position=\"relative\">\n <Layouts.Grid size=\"M\">\n {Array(12)\n .fill(null)\n .map((_, idx) => (\n <EmptyPluginCard key={idx} height=\"234px\" hasRadius />\n ))}\n </Layouts.Grid>\n <Box position=\"absolute\" top={11} width=\"100%\">\n <Flex alignItems=\"center\" justifyContent=\"center\" direction=\"column\">\n <EmptyDocuments width=\"160px\" height=\"88px\" />\n <Box paddingTop={6}>\n <Typography variant=\"delta\" tag=\"p\" textColor=\"neutral600\">\n {emptySearchMessage}\n </Typography>\n </Box>\n </Flex>\n </Box>\n </Box>\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {npmPackages.map((npmPackage) => (\n <Grid.Item\n col={4}\n s={6}\n xs={12}\n style={{ height: '100%' }}\n key={npmPackage.id}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <NpmPackageCard\n npmPackage={npmPackage}\n isInstalled={installedPackageNames.includes(npmPackage.attributes.npmPackageName)}\n useYarn={useYarn}\n isInDevelopmentMode={isInDevelopmentMode}\n npmPackageType={npmPackageType}\n strapiAppVersion={strapiAppVersion}\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\nconst EmptyPluginCard = styled<BoxComponent>(Box)`\n background: ${({ theme }) =>\n `linear-gradient(180deg, rgba(234, 234, 239, 0) 0%, ${theme.colors.neutral150} 100%)`};\n opacity: 0.33;\n`;\n\nexport { NpmPackagesGrid };\n"],"names":["NpmPackagesGrid","status","npmPackages","installedPackageNames","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","debouncedSearch","formatMessage","useIntl","_jsx","Page","Error","Loading","emptySearchMessage","id","defaultMessage","target","length","_jsxs","Box","position","Layouts","Grid","size","Array","fill","map","_","idx","EmptyPluginCard","height","hasRadius","top","width","Flex","alignItems","justifyContent","direction","EmptyDocuments","paddingTop","Typography","variant","tag","textColor","Root","gap","npmPackage","Item","col","s","xs","style","NpmPackageCard","isInstalled","includes","attributes","npmPackageName","styled","theme","colors","neutral150"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
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
|
|
|
8
8
|
const SORT_TYPES = {
|
|
9
9
|
'name:asc': {
|
|
@@ -73,7 +73,7 @@ const SortSelect = ({ sortQuery, handleSelectChange })=>{
|
|
|
73
73
|
})
|
|
74
74
|
});
|
|
75
75
|
};
|
|
76
|
-
const SelectWrapper =
|
|
76
|
+
const SelectWrapper = styled.styled(designSystem.Box)`
|
|
77
77
|
font-weight: ${({ theme })=>theme.fontWeights.semiBold};
|
|
78
78
|
|
|
79
79
|
span {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortSelect.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/SortSelect.tsx"],"sourcesContent":["import { Box, SingleSelectOption, SingleSelect, BoxComponent } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nconst SORT_TYPES = {\n 'name:asc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.alphabetical.selected',\n defaultMessage: 'Sort by alphabetical order',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.alphabetical',\n defaultMessage: 'Alphabetical order',\n },\n },\n 'submissionDate:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.newest.selected',\n defaultMessage: 'Sort by newest',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.newest',\n defaultMessage: 'Newest',\n },\n },\n 'githubStars:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.githubStars.selected',\n defaultMessage: 'Sort by GitHub stars',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.githubStars',\n defaultMessage: 'Number of GitHub stars',\n },\n },\n 'npmDownloads:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.npmDownloads.selected',\n defaultMessage: 'Sort by npm downloads',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.npmDownloads',\n defaultMessage: 'Number of downloads',\n },\n },\n} as const;\n\ninterface SortSelectProps {\n sortQuery: keyof typeof SORT_TYPES;\n handleSelectChange: (payload: { sort: string }) => void;\n}\n\nconst SortSelect = ({ sortQuery, handleSelectChange }: SortSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SelectWrapper>\n <SingleSelect\n value={sortQuery}\n customizeContent={() => formatMessage(SORT_TYPES[sortQuery].selected)}\n onChange={(sortName) => {\n // @ts-expect-error – in V2 design-system we'll only ever return strings.\n handleSelectChange({ sort: sortName });\n }}\n aria-label={formatMessage({\n id: 'admin.pages.MarketPlacePage.sort.label',\n defaultMessage: 'Sort by',\n })}\n size=\"S\"\n >\n {Object.entries(SORT_TYPES).map(([sortName, messages]) => {\n return (\n <SingleSelectOption key={sortName} value={sortName}>\n {formatMessage(messages.option)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n span {\n font-size: ${({ theme }) => theme.fontSizes[1]};\n }\n`;\n\nexport { SortSelect };\nexport type { SortSelectProps };\n"],"names":["SORT_TYPES","selected","id","defaultMessage","option","SortSelect","sortQuery","handleSelectChange","formatMessage","useIntl","_jsx","SelectWrapper","SingleSelect","value","customizeContent","onChange","sortName","sort","aria-label","size","Object","entries","map","messages","SingleSelectOption","styled","Box","theme","fontWeights","semiBold","fontSizes"],"mappings":";;;;;;;AAIA,MAAMA,UAAa,GAAA;IACjB,UAAY,EAAA;QACVC,QAAU,EAAA;YACRC,EAAI,EAAA,wDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,+CAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,qBAAuB,EAAA;QACrBF,QAAU,EAAA;YACRC,EAAI,EAAA,kDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,yCAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,kBAAoB,EAAA;QAClBF,QAAU,EAAA;YACRC,EAAI,EAAA,uDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,8CAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,mBAAqB,EAAA;QACnBF,QAAU,EAAA;YACRC,EAAI,EAAA,wDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,+CAAA;YACJC,cAAgB,EAAA;AAClB;AACF;AACF,CAAA;AAOA,MAAME,aAAa,CAAC,EAAEC,SAAS,EAAEC,kBAAkB,EAAmB,GAAA;IACpE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAACC,CAAAA,aAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAD,cAACE,CAAAA,yBAAAA,EAAAA;YACCC,KAAOP,EAAAA,SAAAA;AACPQ,YAAAA,gBAAAA,EAAkB,IAAMN,aAAcR,CAAAA,UAAU,CAACM,SAAAA,CAAU,CAACL,QAAQ,CAAA;AACpEc,YAAAA,QAAAA,EAAU,CAACC,QAAAA,GAAAA;;gBAETT,kBAAmB,CAAA;oBAAEU,IAAMD,EAAAA;AAAS,iBAAA,CAAA;AACtC,aAAA;AACAE,YAAAA,YAAAA,EAAYV,aAAc,CAAA;gBACxBN,EAAI,EAAA,wCAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAgB,IAAK,EAAA,GAAA;sBAEJC,MAAOC,CAAAA,OAAO,CAACrB,UAAYsB,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACN,UAAUO,QAAS,CAAA,GAAA;AACnD,gBAAA,qBACEb,cAACc,CAAAA,+BAAAA,EAAAA;oBAAkCX,KAAOG,EAAAA,QAAAA;AACvCR,oBAAAA,QAAAA,EAAAA,aAAAA,CAAce,SAASnB,MAAM;AADPY,iBAAAA,EAAAA,QAAAA,CAAAA;AAI7B,aAAA;;;AAIR;AAEA,MAAML,aAAAA,GAAgBc,
|
|
1
|
+
{"version":3,"file":"SortSelect.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/SortSelect.tsx"],"sourcesContent":["import { Box, SingleSelectOption, SingleSelect, BoxComponent } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nconst SORT_TYPES = {\n 'name:asc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.alphabetical.selected',\n defaultMessage: 'Sort by alphabetical order',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.alphabetical',\n defaultMessage: 'Alphabetical order',\n },\n },\n 'submissionDate:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.newest.selected',\n defaultMessage: 'Sort by newest',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.newest',\n defaultMessage: 'Newest',\n },\n },\n 'githubStars:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.githubStars.selected',\n defaultMessage: 'Sort by GitHub stars',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.githubStars',\n defaultMessage: 'Number of GitHub stars',\n },\n },\n 'npmDownloads:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.npmDownloads.selected',\n defaultMessage: 'Sort by npm downloads',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.npmDownloads',\n defaultMessage: 'Number of downloads',\n },\n },\n} as const;\n\ninterface SortSelectProps {\n sortQuery: keyof typeof SORT_TYPES;\n handleSelectChange: (payload: { sort: string }) => void;\n}\n\nconst SortSelect = ({ sortQuery, handleSelectChange }: SortSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SelectWrapper>\n <SingleSelect\n value={sortQuery}\n customizeContent={() => formatMessage(SORT_TYPES[sortQuery].selected)}\n onChange={(sortName) => {\n // @ts-expect-error – in V2 design-system we'll only ever return strings.\n handleSelectChange({ sort: sortName });\n }}\n aria-label={formatMessage({\n id: 'admin.pages.MarketPlacePage.sort.label',\n defaultMessage: 'Sort by',\n })}\n size=\"S\"\n >\n {Object.entries(SORT_TYPES).map(([sortName, messages]) => {\n return (\n <SingleSelectOption key={sortName} value={sortName}>\n {formatMessage(messages.option)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n span {\n font-size: ${({ theme }) => theme.fontSizes[1]};\n }\n`;\n\nexport { SortSelect };\nexport type { SortSelectProps };\n"],"names":["SORT_TYPES","selected","id","defaultMessage","option","SortSelect","sortQuery","handleSelectChange","formatMessage","useIntl","_jsx","SelectWrapper","SingleSelect","value","customizeContent","onChange","sortName","sort","aria-label","size","Object","entries","map","messages","SingleSelectOption","styled","Box","theme","fontWeights","semiBold","fontSizes"],"mappings":";;;;;;;AAIA,MAAMA,UAAa,GAAA;IACjB,UAAY,EAAA;QACVC,QAAU,EAAA;YACRC,EAAI,EAAA,wDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,+CAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,qBAAuB,EAAA;QACrBF,QAAU,EAAA;YACRC,EAAI,EAAA,kDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,yCAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,kBAAoB,EAAA;QAClBF,QAAU,EAAA;YACRC,EAAI,EAAA,uDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,8CAAA;YACJC,cAAgB,EAAA;AAClB;AACF,KAAA;IACA,mBAAqB,EAAA;QACnBF,QAAU,EAAA;YACRC,EAAI,EAAA,wDAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,MAAQ,EAAA;YACNF,EAAI,EAAA,+CAAA;YACJC,cAAgB,EAAA;AAClB;AACF;AACF,CAAA;AAOA,MAAME,aAAa,CAAC,EAAEC,SAAS,EAAEC,kBAAkB,EAAmB,GAAA;IACpE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAACC,CAAAA,aAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAD,cAACE,CAAAA,yBAAAA,EAAAA;YACCC,KAAOP,EAAAA,SAAAA;AACPQ,YAAAA,gBAAAA,EAAkB,IAAMN,aAAcR,CAAAA,UAAU,CAACM,SAAAA,CAAU,CAACL,QAAQ,CAAA;AACpEc,YAAAA,QAAAA,EAAU,CAACC,QAAAA,GAAAA;;gBAETT,kBAAmB,CAAA;oBAAEU,IAAMD,EAAAA;AAAS,iBAAA,CAAA;AACtC,aAAA;AACAE,YAAAA,YAAAA,EAAYV,aAAc,CAAA;gBACxBN,EAAI,EAAA,wCAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAgB,IAAK,EAAA,GAAA;sBAEJC,MAAOC,CAAAA,OAAO,CAACrB,UAAYsB,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACN,UAAUO,QAAS,CAAA,GAAA;AACnD,gBAAA,qBACEb,cAACc,CAAAA,+BAAAA,EAAAA;oBAAkCX,KAAOG,EAAAA,QAAAA;AACvCR,oBAAAA,QAAAA,EAAAA,aAAAA,CAAce,SAASnB,MAAM;AADPY,iBAAAA,EAAAA,QAAAA,CAAAA;AAI7B,aAAA;;;AAIR;AAEA,MAAML,aAAAA,GAAgBc,aAAqBC,CAAAA,gBAAAA,CAAI;eAChC,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,WAAW,CAACC,QAAQ,CAAC;;;eAG5C,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMG,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAC;;AAEnD,CAAC;;;;"}
|
|
@@ -5,23 +5,14 @@ var designSystem = require('@strapi/design-system');
|
|
|
5
5
|
var icons = require('@strapi/icons');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
7
|
var reactRouterDom = require('react-router-dom');
|
|
8
|
-
var
|
|
8
|
+
var styled = require('styled-components');
|
|
9
|
+
var SubNav = require('../../../components/SubNav.js');
|
|
9
10
|
var Tracking = require('../../../features/Tracking.js');
|
|
10
11
|
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
transform: translateY(50%);
|
|
16
|
-
|
|
17
|
-
path {
|
|
18
|
-
fill: ${({ theme })=>theme.colors.warning500};
|
|
19
|
-
}
|
|
20
|
-
`;
|
|
21
|
-
const Link = styledComponents.styled(designSystem.SubNavLink)`
|
|
22
|
-
&.active ${CustomIcon} {
|
|
23
|
-
right: 13px;
|
|
24
|
-
}
|
|
12
|
+
const StyledBadge = styled.styled(designSystem.Badge)`
|
|
13
|
+
border-radius: 50%;
|
|
14
|
+
padding: ${({ theme })=>theme.spaces[2]};
|
|
15
|
+
height: 2rem;
|
|
25
16
|
`;
|
|
26
17
|
const SettingsNav = ({ menu })=>{
|
|
27
18
|
const { formatMessage } = reactIntl.useIntl();
|
|
@@ -51,29 +42,39 @@ const SettingsNav = ({ menu })=>{
|
|
|
51
42
|
to: destination
|
|
52
43
|
});
|
|
53
44
|
};
|
|
54
|
-
return /*#__PURE__*/ jsxRuntime.jsxs(
|
|
45
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(SubNav.SubNav.Main, {
|
|
55
46
|
"aria-label": label,
|
|
56
47
|
children: [
|
|
57
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
48
|
+
/*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Header, {
|
|
58
49
|
label: label
|
|
59
50
|
}),
|
|
60
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.
|
|
61
|
-
|
|
51
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {
|
|
52
|
+
background: "neutral150",
|
|
53
|
+
marginBottom: 5
|
|
54
|
+
}),
|
|
55
|
+
/*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Sections, {
|
|
56
|
+
children: sections.map((section)=>/*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Section, {
|
|
62
57
|
label: formatMessage(section.intlLabel),
|
|
63
58
|
children: section.links.map((link)=>{
|
|
64
|
-
return /*#__PURE__*/ jsxRuntime.
|
|
65
|
-
tag: reactRouterDom.NavLink,
|
|
66
|
-
withBullet: link.hasNotification,
|
|
59
|
+
return /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Link, {
|
|
67
60
|
to: link.to,
|
|
68
61
|
onClick: handleClickOnLink(link.to),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
62
|
+
label: formatMessage(link.intlLabel),
|
|
63
|
+
endAction: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
64
|
+
children: [
|
|
65
|
+
link?.licenseOnly && /*#__PURE__*/ jsxRuntime.jsx(icons.Lightning, {
|
|
66
|
+
fill: "primary600",
|
|
67
|
+
width: "1.5rem",
|
|
68
|
+
height: "1.5rem"
|
|
69
|
+
}),
|
|
70
|
+
link?.hasNotification && /*#__PURE__*/ jsxRuntime.jsx(StyledBadge, {
|
|
71
|
+
"aria-label": "Notification",
|
|
72
|
+
backgroundColor: "primary600",
|
|
73
|
+
textColor: "neutral0",
|
|
74
|
+
children: "1"
|
|
75
|
+
})
|
|
76
|
+
]
|
|
77
|
+
})
|
|
77
78
|
}, link.id);
|
|
78
79
|
})
|
|
79
80
|
}, section.id))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } 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 { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" marginBottom={5} />\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning fill=\"primary600\" width=\"1.5rem\" height=\"1.5rem\" />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n />\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","menu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","filteredMenu","filter","section","links","every","link","isDisplayed","sections","map","title","intlLabel","name","id","label","defaultMessage","handleClickOnLink","destination","from","to","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","background","marginBottom","Sections","Section","Link","onClick","endAction","_Fragment","licenseOnly","Lightning","fill","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
|
|
@@ -1,25 +1,16 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { Badge, Divider } from '@strapi/design-system';
|
|
3
3
|
import { Lightning } from '@strapi/icons';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
|
-
import { useLocation
|
|
5
|
+
import { useLocation } from 'react-router-dom';
|
|
6
6
|
import { styled } from 'styled-components';
|
|
7
|
+
import { SubNav } from '../../../components/SubNav.mjs';
|
|
7
8
|
import { useTracking } from '../../../features/Tracking.mjs';
|
|
8
9
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
transform: translateY(50%);
|
|
14
|
-
|
|
15
|
-
path {
|
|
16
|
-
fill: ${({ theme })=>theme.colors.warning500};
|
|
17
|
-
}
|
|
18
|
-
`;
|
|
19
|
-
const Link = styled(SubNavLink)`
|
|
20
|
-
&.active ${CustomIcon} {
|
|
21
|
-
right: 13px;
|
|
22
|
-
}
|
|
10
|
+
const StyledBadge = styled(Badge)`
|
|
11
|
+
border-radius: 50%;
|
|
12
|
+
padding: ${({ theme })=>theme.spaces[2]};
|
|
13
|
+
height: 2rem;
|
|
23
14
|
`;
|
|
24
15
|
const SettingsNav = ({ menu })=>{
|
|
25
16
|
const { formatMessage } = useIntl();
|
|
@@ -49,29 +40,39 @@ const SettingsNav = ({ menu })=>{
|
|
|
49
40
|
to: destination
|
|
50
41
|
});
|
|
51
42
|
};
|
|
52
|
-
return /*#__PURE__*/ jsxs(SubNav, {
|
|
43
|
+
return /*#__PURE__*/ jsxs(SubNav.Main, {
|
|
53
44
|
"aria-label": label,
|
|
54
45
|
children: [
|
|
55
|
-
/*#__PURE__*/ jsx(
|
|
46
|
+
/*#__PURE__*/ jsx(SubNav.Header, {
|
|
56
47
|
label: label
|
|
57
48
|
}),
|
|
58
|
-
/*#__PURE__*/ jsx(
|
|
59
|
-
|
|
49
|
+
/*#__PURE__*/ jsx(Divider, {
|
|
50
|
+
background: "neutral150",
|
|
51
|
+
marginBottom: 5
|
|
52
|
+
}),
|
|
53
|
+
/*#__PURE__*/ jsx(SubNav.Sections, {
|
|
54
|
+
children: sections.map((section)=>/*#__PURE__*/ jsx(SubNav.Section, {
|
|
60
55
|
label: formatMessage(section.intlLabel),
|
|
61
56
|
children: section.links.map((link)=>{
|
|
62
|
-
return /*#__PURE__*/
|
|
63
|
-
tag: NavLink,
|
|
64
|
-
withBullet: link.hasNotification,
|
|
57
|
+
return /*#__PURE__*/ jsx(SubNav.Link, {
|
|
65
58
|
to: link.to,
|
|
66
59
|
onClick: handleClickOnLink(link.to),
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
60
|
+
label: formatMessage(link.intlLabel),
|
|
61
|
+
endAction: /*#__PURE__*/ jsxs(Fragment, {
|
|
62
|
+
children: [
|
|
63
|
+
link?.licenseOnly && /*#__PURE__*/ jsx(Lightning, {
|
|
64
|
+
fill: "primary600",
|
|
65
|
+
width: "1.5rem",
|
|
66
|
+
height: "1.5rem"
|
|
67
|
+
}),
|
|
68
|
+
link?.hasNotification && /*#__PURE__*/ jsx(StyledBadge, {
|
|
69
|
+
"aria-label": "Notification",
|
|
70
|
+
backgroundColor: "primary600",
|
|
71
|
+
textColor: "neutral0",
|
|
72
|
+
children: "1"
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
})
|
|
75
76
|
}, link.id);
|
|
76
77
|
})
|
|
77
78
|
}, section.id))
|