@strapi/admin 5.25.0 → 5.27.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/App.js +6 -2
- package/dist/admin/admin/src/App.js.map +1 -1
- package/dist/admin/admin/src/App.mjs +7 -3
- package/dist/admin/admin/src/App.mjs.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js +10 -3
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.mjs +10 -3
- package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js +26 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs +26 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js +15 -0
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs +13 -0
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Overview.js +2 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +2 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +162 -25
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +164 -27
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +28 -9
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs +30 -11
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js +2 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs +2 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js +3 -2
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs +3 -2
- package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.js +3 -2
- package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs +3 -2
- package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +65 -32
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +66 -33
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js +29 -6
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.mjs +30 -7
- package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +147 -92
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +131 -95
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js +20 -6
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.mjs +20 -6
- package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +157 -0
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -0
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +154 -0
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +65 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +63 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavLink.js +2 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +39 -22
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +39 -22
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +8 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +9 -2
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +161 -120
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +162 -121
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/Providers.js +2 -4
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs +2 -4
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +98 -33
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +99 -34
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +3 -2
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs +3 -2
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/constants/theme.js +12 -0
- package/dist/admin/admin/src/constants/theme.js.map +1 -0
- package/dist/admin/admin/src/constants/theme.mjs +9 -0
- package/dist/admin/admin/src/constants/theme.mjs.map +1 -0
- package/dist/admin/admin/src/features/Notifications.js +14 -7
- package/dist/admin/admin/src/features/Notifications.js.map +1 -1
- package/dist/admin/admin/src/features/Notifications.mjs +15 -8
- package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +7 -2
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +7 -2
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useAIAvailability.js +13 -0
- package/dist/admin/admin/src/hooks/useAIAvailability.js.map +1 -0
- package/dist/admin/admin/src/hooks/useAIAvailability.mjs +11 -0
- package/dist/admin/admin/src/hooks/useAIAvailability.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useDeviceType.js +43 -0
- package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -0
- package/dist/admin/admin/src/hooks/useDeviceType.mjs +22 -0
- package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.js +70 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.mjs +46 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useMenu.js +19 -0
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.mjs +19 -0
- package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +15 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +11 -7
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +11 -7
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js +3 -0
- package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs +3 -0
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +56 -54
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +56 -54
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +54 -51
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +55 -52
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.js +42 -6
- package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.mjs +43 -7
- package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +44 -32
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +45 -33
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +13 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +14 -3
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs +5 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs +5 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs +5 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +36 -32
- 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/ContentTypeCollapses.mjs +36 -32
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +6 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +6 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/services/api.js +2 -1
- package/dist/admin/admin/src/services/api.js.map +1 -1
- package/dist/admin/admin/src/services/api.mjs +2 -1
- package/dist/admin/admin/src/services/api.mjs.map +1 -1
- package/dist/admin/admin/src/services/auth.js +13 -2
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs +12 -3
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +3 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +3 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/GlobalNotifications.js +11 -0
- package/dist/admin/ee/admin/src/components/GlobalNotifications.js.map +1 -0
- package/dist/admin/ee/admin/src/components/GlobalNotifications.mjs +9 -0
- package/dist/admin/ee/admin/src/components/GlobalNotifications.mjs.map +1 -0
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js +11 -0
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -0
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs +9 -0
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -0
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js +82 -0
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js.map +1 -0
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs +80 -0
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +102 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +100 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -1
- 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 +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.js +33 -0
- package/dist/admin/ee/admin/src/services/ai.js.map +1 -0
- package/dist/admin/ee/admin/src/services/ai.mjs +29 -0
- package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -0
- package/dist/admin/ee.js +4 -0
- package/dist/admin/ee.js.map +1 -1
- package/dist/admin/ee.mjs +2 -0
- package/dist/admin/ee.mjs.map +1 -1
- package/dist/admin/index.js +13 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +5 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/GuidedTour/Context.d.ts +11 -0
- package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +6 -0
- package/dist/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.d.ts +7 -16
- package/dist/admin/src/components/GuidedTour/Tours.d.ts +1 -22
- package/dist/admin/src/components/LeftMenu.d.ts +2 -2
- package/dist/admin/src/components/MainNav/MainNavLinks.d.ts +11 -0
- package/dist/admin/src/components/MainNav/NavBurgerMenu.d.ts +9 -0
- package/dist/admin/src/components/MainNav/NavUser.d.ts +5 -4
- package/dist/admin/src/components/SubNav.d.ts +18 -5
- package/dist/admin/src/constants/theme.d.ts +7 -0
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/store/hooks.d.ts +2 -2
- package/dist/admin/src/ee.d.ts +2 -0
- package/dist/admin/src/features/Tracking.d.ts +21 -2
- package/dist/admin/src/hooks/useAIAvailability.d.ts +5 -0
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/hooks/useDeviceType.d.ts +6 -0
- package/dist/admin/src/hooks/useMediaQuery.d.ts +21 -0
- package/dist/admin/src/hooks/useMenu.d.ts +9 -1
- package/dist/admin/src/index.d.ts +6 -0
- package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +2 -2
- package/dist/admin/src/pages/Settings/components/SettingsNav.d.ts +3 -6
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
- package/dist/admin/src/selectors.d.ts +2 -2
- package/dist/admin/src/services/admin.d.ts +7 -6
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/apiTokens.d.ts +1 -1
- package/dist/admin/src/services/auth.d.ts +21 -12
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/contentManager.d.ts +1 -1
- package/dist/admin/src/services/homepage.d.ts +3 -3
- package/dist/admin/src/services/transferTokens.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +8 -8
- package/dist/admin/src/services/webhooks.d.ts +2 -2
- package/dist/admin/tests/utils.d.ts +1 -1
- package/dist/ee/admin/src/components/GlobalNotifications.d.ts +1 -0
- package/dist/ee/admin/src/hooks/useAIAvailability.d.ts +1 -0
- package/dist/ee/admin/src/hooks/useAIUsageWarning.d.ts +5 -0
- package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +1 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +1 -0
- package/dist/ee/admin/src/services/ai.d.ts +9 -0
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/ee/server/src/ai/controllers/ai.d.ts +7 -0
- package/dist/ee/server/src/ai/controllers/ai.d.ts.map +1 -0
- package/dist/ee/server/src/ai/routes/ai.d.ts +13 -0
- package/dist/ee/server/src/ai/routes/ai.d.ts.map +1 -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 +15 -187
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.js +218 -0
- package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -0
- package/dist/server/ee/server/src/ai/controllers/ai.mjs +216 -0
- package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -0
- package/dist/server/ee/server/src/ai/routes/ai.js +32 -0
- package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -0
- package/dist/server/ee/server/src/ai/routes/ai.mjs +30 -0
- package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -0
- package/dist/server/ee/server/src/controllers/admin.js +4 -1
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +4 -1
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +37 -23
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +37 -23
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +5 -1
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +5 -1
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.js +15 -0
- package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.mjs +15 -0
- package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
- package/dist/server/server/src/routes/users.js +10 -0
- package/dist/server/server/src/routes/users.js.map +1 -1
- package/dist/server/server/src/routes/users.mjs +10 -0
- package/dist/server/server/src/routes/users.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +113 -1
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +113 -1
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts +2 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/authenticated-user.d.ts +1 -0
- package/dist/server/src/controllers/authenticated-user.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 +7 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/users.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts +4 -0
- package/dist/server/src/services/user.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/dist/shared/contracts/ai.d.ts +40 -0
- package/dist/shared/contracts/ai.d.ts.map +1 -0
- package/dist/shared/contracts/users.d.ts +32 -0
- package/dist/shared/contracts/users.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import 'react';
|
|
3
|
+
import { Box, ScrollArea } from '@strapi/design-system';
|
|
4
|
+
import { styled } from 'styled-components';
|
|
5
|
+
import { HEIGHT_TOP_NAVIGATION } from '../../constants/theme.mjs';
|
|
6
|
+
import { MainNavBurgerMenuLinks } from './MainNavLinks.mjs';
|
|
7
|
+
import { NavUser } from './NavUser.mjs';
|
|
8
|
+
|
|
9
|
+
const NavBurgerMenuWrapper = styled(Box)`
|
|
10
|
+
position: fixed;
|
|
11
|
+
top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);
|
|
12
|
+
left: 0;
|
|
13
|
+
right: 0;
|
|
14
|
+
bottom: 0;
|
|
15
|
+
z-index: 3;
|
|
16
|
+
background-color: ${({ theme })=>theme.colors.neutral0};
|
|
17
|
+
transform: ${({ $isShown })=>$isShown ? 'translateY(0)' : 'translateY(-100%)'};
|
|
18
|
+
transition: transform 0.2s ease-in-out;
|
|
19
|
+
|
|
20
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
21
|
+
display: none;
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
const NavBurgerMenu = ({ isShown, handleClickOnLink, listLinks })=>/*#__PURE__*/ jsx(NavBurgerMenuWrapper, {
|
|
25
|
+
$isShown: isShown,
|
|
26
|
+
children: /*#__PURE__*/ jsx(ScrollArea, {
|
|
27
|
+
children: /*#__PURE__*/ jsxs(Box, {
|
|
28
|
+
tag: "ul",
|
|
29
|
+
paddingLeft: {
|
|
30
|
+
initial: 4,
|
|
31
|
+
medium: 6
|
|
32
|
+
},
|
|
33
|
+
paddingRight: {
|
|
34
|
+
initial: 4,
|
|
35
|
+
medium: 6
|
|
36
|
+
},
|
|
37
|
+
paddingTop: {
|
|
38
|
+
initial: 1,
|
|
39
|
+
medium: 3
|
|
40
|
+
},
|
|
41
|
+
paddingBottom: {
|
|
42
|
+
initial: 4,
|
|
43
|
+
medium: 6
|
|
44
|
+
},
|
|
45
|
+
children: [
|
|
46
|
+
/*#__PURE__*/ jsx(MainNavBurgerMenuLinks, {
|
|
47
|
+
listLinks: listLinks,
|
|
48
|
+
handleClickOnLink: handleClickOnLink
|
|
49
|
+
}),
|
|
50
|
+
/*#__PURE__*/ jsx(Box, {
|
|
51
|
+
paddingTop: 4,
|
|
52
|
+
tag: "li",
|
|
53
|
+
children: /*#__PURE__*/ jsx(NavUser, {
|
|
54
|
+
showDisplayName: true
|
|
55
|
+
})
|
|
56
|
+
})
|
|
57
|
+
]
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
export { NavBurgerMenu };
|
|
63
|
+
//# sourceMappingURL=NavBurgerMenu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavBurgerMenu.mjs","sources":["../../../../../../admin/src/components/MainNav/NavBurgerMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, ScrollArea } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { HEIGHT_TOP_NAVIGATION } from '../../constants/theme';\nimport { MenuItem } from '../../core/apis/router';\n\nimport { MainNavBurgerMenuLinks } from './MainNavLinks';\nimport { NavUser } from './NavUser';\n\ninterface NavBurgerMenuProps {\n isShown: boolean;\n listLinks: MenuItem[];\n handleClickOnLink: (value: string) => void;\n mobile?: boolean;\n}\n\nconst NavBurgerMenuWrapper = styled(Box)<{ $isShown: boolean }>`\n position: fixed;\n top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n background-color: ${({ theme }) => theme.colors.neutral0};\n transform: ${({ $isShown }) => ($isShown ? 'translateY(0)' : 'translateY(-100%)')};\n transition: transform 0.2s ease-in-out;\n\n ${({ theme }) => theme.breakpoints.large} {\n display: none;\n }\n`;\n\nconst NavBurgerMenu = ({ isShown, handleClickOnLink, listLinks }: NavBurgerMenuProps) => (\n <NavBurgerMenuWrapper $isShown={isShown}>\n <ScrollArea>\n <Box\n tag=\"ul\"\n paddingLeft={{\n initial: 4,\n medium: 6,\n }}\n paddingRight={{\n initial: 4,\n medium: 6,\n }}\n paddingTop={{\n initial: 1,\n medium: 3,\n }}\n paddingBottom={{\n initial: 4,\n medium: 6,\n }}\n >\n <MainNavBurgerMenuLinks listLinks={listLinks} handleClickOnLink={handleClickOnLink} />\n <Box paddingTop={4} tag=\"li\">\n <NavUser showDisplayName />\n </Box>\n </Box>\n </ScrollArea>\n </NavBurgerMenuWrapper>\n);\n\nexport { NavBurgerMenu };\n"],"names":["NavBurgerMenuWrapper","styled","Box","HEIGHT_TOP_NAVIGATION","theme","colors","neutral0","$isShown","breakpoints","large","NavBurgerMenu","isShown","handleClickOnLink","listLinks","_jsx","ScrollArea","_jsxs","tag","paddingLeft","initial","medium","paddingRight","paddingTop","paddingBottom","MainNavBurgerMenuLinks","NavUser","showDisplayName"],"mappings":";;;;;;;;AAkBA,MAAMA,oBAAAA,GAAuBC,MAAOC,CAAAA,GAAAA,CAA2B;;AAEnD,YAAA,EAAEC,qBAAsB,CAAA;;;;;oBAKhB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,QAAQ,CAAC;AAC9C,aAAA,EAAE,CAAC,EAAEC,QAAQ,EAAE,GAAMA,QAAAA,GAAW,kBAAkB,mBAAqB,CAAA;;;EAGlF,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAMI,CAAAA,WAAW,CAACC,KAAK,CAAC;;;AAG3C,CAAC;AAEKC,MAAAA,aAAAA,GAAgB,CAAC,EAAEC,OAAO,EAAEC,iBAAiB,EAAEC,SAAS,EAAsB,iBAClFC,GAACd,CAAAA,oBAAAA,EAAAA;QAAqBO,QAAUI,EAAAA,OAAAA;AAC9B,QAAA,QAAA,gBAAAG,GAACC,CAAAA,UAAAA,EAAAA;AACC,YAAA,QAAA,gBAAAC,IAACd,CAAAA,GAAAA,EAAAA;gBACCe,GAAI,EAAA,IAAA;gBACJC,WAAa,EAAA;oBACXC,OAAS,EAAA,CAAA;oBACTC,MAAQ,EAAA;AACV,iBAAA;gBACAC,YAAc,EAAA;oBACZF,OAAS,EAAA,CAAA;oBACTC,MAAQ,EAAA;AACV,iBAAA;gBACAE,UAAY,EAAA;oBACVH,OAAS,EAAA,CAAA;oBACTC,MAAQ,EAAA;AACV,iBAAA;gBACAG,aAAe,EAAA;oBACbJ,OAAS,EAAA,CAAA;oBACTC,MAAQ,EAAA;AACV,iBAAA;;kCAEAN,GAACU,CAAAA,sBAAAA,EAAAA;wBAAuBX,SAAWA,EAAAA,SAAAA;wBAAWD,iBAAmBA,EAAAA;;kCACjEE,GAACZ,CAAAA,GAAAA,EAAAA;wBAAIoB,UAAY,EAAA,CAAA;wBAAGL,GAAI,EAAA,IAAA;AACtB,wBAAA,QAAA,gBAAAH,GAACW,CAAAA,OAAAA,EAAAA;4BAAQC,eAAe,EAAA;;;;;;;;;;"}
|
|
@@ -11,11 +11,12 @@ var styled = require('styled-components');
|
|
|
11
11
|
* -----------------------------------------------------------------------------------------------*/ const MainNavLinkWrapper = styled.styled(reactRouterDom.NavLink)`
|
|
12
12
|
text-decoration: none;
|
|
13
13
|
display: flex;
|
|
14
|
+
align-items: center;
|
|
14
15
|
border-radius: ${({ theme })=>theme.borderRadius};
|
|
15
16
|
background: ${({ theme })=>theme.colors.neutral0};
|
|
16
17
|
color: ${({ theme })=>theme.colors.neutral500};
|
|
17
18
|
position: relative;
|
|
18
|
-
width:
|
|
19
|
+
width: 100%;
|
|
19
20
|
padding-block: 0.6rem;
|
|
20
21
|
padding-inline: 0.6rem;
|
|
21
22
|
|
|
@@ -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 * 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:
|
|
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 * Link\n * -----------------------------------------------------------------------------------------------*/\nconst MainNavLinkWrapper = styled(RouterLink)`\n text-decoration: none;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral500};\n position: relative;\n width: 100%;\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 <MainNavLinkWrapper {...props}>{children}</MainNavLinkWrapper>\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":";;;;;;;;AAWA;;AAEkG,qGAClG,MAAMA,kBAAAA,GAAqBC,aAAOC,CAAAA,sBAAAA,CAAW;;;;AAI5B,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,QAAAA,GAAW,CAAC,EAAEC,QAAQ,EAAE,GAAGC,KAAAA,EAAkB,iBACjDC,cAACf,CAAAA,kBAAAA,EAAAA;AAAoB,QAAA,GAAGc,KAAK;AAAGD,QAAAA,QAAAA,EAAAA;;AAElC;;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;;;;"}
|
|
@@ -9,11 +9,12 @@ import { styled } from 'styled-components';
|
|
|
9
9
|
* -----------------------------------------------------------------------------------------------*/ const MainNavLinkWrapper = styled(NavLink$1)`
|
|
10
10
|
text-decoration: none;
|
|
11
11
|
display: flex;
|
|
12
|
+
align-items: center;
|
|
12
13
|
border-radius: ${({ theme })=>theme.borderRadius};
|
|
13
14
|
background: ${({ theme })=>theme.colors.neutral0};
|
|
14
15
|
color: ${({ theme })=>theme.colors.neutral500};
|
|
15
16
|
position: relative;
|
|
16
|
-
width:
|
|
17
|
+
width: 100%;
|
|
17
18
|
padding-block: 0.6rem;
|
|
18
19
|
padding-inline: 0.6rem;
|
|
19
20
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavLink.mjs","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 * 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:
|
|
1
|
+
{"version":3,"file":"NavLink.mjs","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 * Link\n * -----------------------------------------------------------------------------------------------*/\nconst MainNavLinkWrapper = styled(RouterLink)`\n text-decoration: none;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral500};\n position: relative;\n width: 100%;\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 <MainNavLinkWrapper {...props}>{children}</MainNavLinkWrapper>\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":";;;;;;AAWA;;AAEkG,qGAClG,MAAMA,kBAAAA,GAAqBC,MAAOC,CAAAA,SAAAA,CAAW;;;;AAI5B,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,QAAAA,GAAW,CAAC,EAAEC,QAAQ,EAAE,GAAGC,KAAAA,EAAkB,iBACjDC,GAACf,CAAAA,kBAAAA,EAAAA;AAAoB,QAAA,GAAGc,KAAK;AAAGD,QAAAA,QAAAA,EAAAA;;AAElC;;qGAGA,MAAMG,WAAc,GAAA,CAAC,EAAEH,QAAQ,EAAEI,KAAK,EAAEC,QAAW,GAAA,OAAO,EAAwB,GAAA;AAChF,IAAA,qBACEH,GAACI,CAAAA,OAAAA,EAAAA;QAAQC,IAAMF,EAAAA,QAAAA;QAAUD,KAAOA,EAAAA,KAAAA;QAAOI,aAAe,EAAA,CAAA;AACpD,QAAA,QAAA,gBAAAN,GAACO,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,GAACS,CAAAA,cAAAA,EAAAA;QAAeP,KAAOA,EAAAA,KAAAA;AAAQJ,QAAAA,QAAAA,EAAAA;;AACxC,CAAA;AAEA;;AAEkG,qGAClG,MAAMY,WAAAA,GAAcxB,MAAOyB,CAAAA,KAAAA,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,GAACU,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;;;;"}
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
require('react');
|
|
5
4
|
var designSystem = require('@strapi/design-system');
|
|
6
5
|
var reactIntl = require('react-intl');
|
|
7
6
|
var reactRouterDom = require('react-router-dom');
|
|
8
7
|
var styled = require('styled-components');
|
|
9
8
|
var Auth = require('../../features/Auth.js');
|
|
9
|
+
var users = require('../../utils/users.js');
|
|
10
10
|
|
|
11
11
|
const MenuTrigger = styled.styled(designSystem.Menu.Trigger)`
|
|
12
|
+
padding: 0;
|
|
13
|
+
|
|
14
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
15
|
+
width: 4rem;
|
|
16
|
+
height: 4rem;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
const MenuIcon = styled.styled(designSystem.Flex)`
|
|
12
21
|
height: ${({ theme })=>theme.spaces[7]};
|
|
13
22
|
width: ${({ theme })=>theme.spaces[7]};
|
|
14
23
|
border: none;
|
|
@@ -37,41 +46,49 @@ const StyledTypography = styled.styled(designSystem.Typography)`
|
|
|
37
46
|
word-break: break-word;
|
|
38
47
|
margin-bottom: ${({ theme })=>theme.spaces[3]};
|
|
39
48
|
`;
|
|
40
|
-
const NavUser = ({
|
|
49
|
+
const NavUser = ({ initials, showDisplayName = false, children, ...props })=>{
|
|
41
50
|
const { formatMessage } = reactIntl.useIntl();
|
|
42
51
|
const navigate = reactRouterDom.useNavigate();
|
|
43
52
|
const user = Auth.useAuth('User', (state)=>state.user);
|
|
44
53
|
const logout = Auth.useAuth('Logout', (state)=>state.logout);
|
|
54
|
+
const userDisplayName = users.getDisplayName(user);
|
|
45
55
|
const handleProfile = ()=>{
|
|
46
|
-
|
|
56
|
+
const redirection = '/me';
|
|
57
|
+
navigate(redirection);
|
|
47
58
|
};
|
|
48
59
|
const handleLogout = ()=>{
|
|
60
|
+
const redirection = '/auth/login';
|
|
49
61
|
logout();
|
|
50
|
-
navigate(
|
|
62
|
+
navigate(redirection);
|
|
51
63
|
};
|
|
52
64
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
53
|
-
justifyContent: "center",
|
|
54
|
-
padding: 3,
|
|
55
|
-
borderStyle: "solid",
|
|
56
|
-
borderWidth: "1px 0 0 0",
|
|
57
|
-
borderColor: "neutral150",
|
|
58
65
|
...props,
|
|
59
66
|
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Menu.Root, {
|
|
60
67
|
children: [
|
|
61
|
-
/*#__PURE__*/ jsxRuntime.
|
|
68
|
+
/*#__PURE__*/ jsxRuntime.jsx(MenuTrigger, {
|
|
62
69
|
endIcon: null,
|
|
63
70
|
fullWidth: true,
|
|
64
|
-
justifyContent: "
|
|
65
|
-
children:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
justifyContent: "flex-start",
|
|
72
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
73
|
+
alignItems: "center",
|
|
74
|
+
gap: 3,
|
|
75
|
+
children: [
|
|
76
|
+
/*#__PURE__*/ jsxRuntime.jsx(MenuIcon, {
|
|
77
|
+
justifyContent: "center",
|
|
78
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Avatar.Item, {
|
|
79
|
+
delayMs: 0,
|
|
80
|
+
fallback: initials || users.getInitials(user)
|
|
81
|
+
})
|
|
82
|
+
}),
|
|
83
|
+
showDisplayName ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
84
|
+
variant: "omega",
|
|
85
|
+
children: children || userDisplayName
|
|
86
|
+
}) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.VisuallyHidden, {
|
|
87
|
+
tag: "span",
|
|
88
|
+
children: children || userDisplayName
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
})
|
|
75
92
|
}),
|
|
76
93
|
/*#__PURE__*/ jsxRuntime.jsxs(MenuContent, {
|
|
77
94
|
popoverPlacement: "top-start",
|
|
@@ -86,7 +103,7 @@ const NavUser = ({ children, initials, ...props })=>{
|
|
|
86
103
|
variant: "omega",
|
|
87
104
|
fontWeight: "bold",
|
|
88
105
|
textTransform: "none",
|
|
89
|
-
children: children
|
|
106
|
+
children: children || userDisplayName
|
|
90
107
|
}),
|
|
91
108
|
/*#__PURE__*/ jsxRuntime.jsx(StyledTypography, {
|
|
92
109
|
variant: "pi",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavUser.js","sources":["../../../../../../admin/src/components/MainNav/NavUser.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"NavUser.js","sources":["../../../../../../admin/src/components/MainNav/NavUser.tsx"],"sourcesContent":["import { 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';\nimport { getInitials, getDisplayName } from '../../utils/users';\n\nconst MenuTrigger = styled(Menu.Trigger)`\n padding: 0;\n\n ${({ theme }) => theme.breakpoints.large} {\n width: 4rem;\n height: 4rem;\n justify-content: center;\n }\n`;\n\nconst MenuIcon = styled(Flex)`\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 word-break: break-word;\n margin-bottom: ${({ theme }) => theme.spaces[3]};\n`;\n\nexport interface NavUserProps {\n initials?: string;\n children?: React.ReactNode;\n showDisplayName?: boolean;\n}\n\nexport const NavUser = ({\n initials,\n showDisplayName = false,\n children,\n ...props\n}: 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 const userDisplayName = getDisplayName(user);\n\n const handleProfile = () => {\n const redirection = '/me';\n navigate(redirection);\n };\n\n const handleLogout = () => {\n const redirection = '/auth/login';\n logout();\n navigate(redirection);\n };\n\n return (\n <Flex {...props}>\n <Menu.Root>\n <MenuTrigger endIcon={null} fullWidth justifyContent=\"flex-start\">\n <Flex alignItems=\"center\" gap={3}>\n <MenuIcon justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials || getInitials(user)} />\n </MenuIcon>\n {showDisplayName ? (\n <Typography variant=\"omega\">{children || userDisplayName}</Typography>\n ) : (\n <VisuallyHidden tag=\"span\">{children || userDisplayName}</VisuallyHidden>\n )}\n </Flex>\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 || userDisplayName}\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 <Menu.Item onSelect={handleProfile}>\n {formatMessage({\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n })}\n </Menu.Item>\n\n <Menu.Item variant=\"danger\" onSelect={handleLogout} color=\"danger600\">\n {formatMessage({\n id: 'app.components.LeftMenu.logout',\n defaultMessage: 'Log out',\n })}\n </Menu.Item>\n </MenuContent>\n </Menu.Root>\n </Flex>\n );\n};\n"],"names":["MenuTrigger","styled","Menu","Trigger","theme","breakpoints","large","MenuIcon","Flex","spaces","MenuContent","Content","UserInfo","BadgeWrapper","StyledTypography","Typography","NavUser","initials","showDisplayName","children","props","formatMessage","useIntl","navigate","useNavigate","user","useAuth","state","logout","userDisplayName","getDisplayName","handleProfile","redirection","handleLogout","_jsx","_jsxs","Root","endIcon","fullWidth","justifyContent","alignItems","gap","Avatar","Item","delayMs","fallback","getInitials","variant","VisuallyHidden","tag","popoverPlacement","zIndex","direction","fontWeight","textTransform","textColor","email","roles","map","role","Badge","name","id","Separator","onSelect","defaultMessage","color"],"mappings":"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"}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import 'react';
|
|
3
2
|
import { Menu, Flex, Typography, Avatar, VisuallyHidden, Badge } from '@strapi/design-system';
|
|
4
3
|
import { useIntl } from 'react-intl';
|
|
5
4
|
import { useNavigate } from 'react-router-dom';
|
|
6
5
|
import { styled } from 'styled-components';
|
|
7
6
|
import { useAuth } from '../../features/Auth.mjs';
|
|
7
|
+
import { getInitials, getDisplayName } from '../../utils/users.mjs';
|
|
8
8
|
|
|
9
9
|
const MenuTrigger = styled(Menu.Trigger)`
|
|
10
|
+
padding: 0;
|
|
11
|
+
|
|
12
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
13
|
+
width: 4rem;
|
|
14
|
+
height: 4rem;
|
|
15
|
+
justify-content: center;
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
const MenuIcon = styled(Flex)`
|
|
10
19
|
height: ${({ theme })=>theme.spaces[7]};
|
|
11
20
|
width: ${({ theme })=>theme.spaces[7]};
|
|
12
21
|
border: none;
|
|
@@ -35,41 +44,49 @@ const StyledTypography = styled(Typography)`
|
|
|
35
44
|
word-break: break-word;
|
|
36
45
|
margin-bottom: ${({ theme })=>theme.spaces[3]};
|
|
37
46
|
`;
|
|
38
|
-
const NavUser = ({
|
|
47
|
+
const NavUser = ({ initials, showDisplayName = false, children, ...props })=>{
|
|
39
48
|
const { formatMessage } = useIntl();
|
|
40
49
|
const navigate = useNavigate();
|
|
41
50
|
const user = useAuth('User', (state)=>state.user);
|
|
42
51
|
const logout = useAuth('Logout', (state)=>state.logout);
|
|
52
|
+
const userDisplayName = getDisplayName(user);
|
|
43
53
|
const handleProfile = ()=>{
|
|
44
|
-
|
|
54
|
+
const redirection = '/me';
|
|
55
|
+
navigate(redirection);
|
|
45
56
|
};
|
|
46
57
|
const handleLogout = ()=>{
|
|
58
|
+
const redirection = '/auth/login';
|
|
47
59
|
logout();
|
|
48
|
-
navigate(
|
|
60
|
+
navigate(redirection);
|
|
49
61
|
};
|
|
50
62
|
return /*#__PURE__*/ jsx(Flex, {
|
|
51
|
-
justifyContent: "center",
|
|
52
|
-
padding: 3,
|
|
53
|
-
borderStyle: "solid",
|
|
54
|
-
borderWidth: "1px 0 0 0",
|
|
55
|
-
borderColor: "neutral150",
|
|
56
63
|
...props,
|
|
57
64
|
children: /*#__PURE__*/ jsxs(Menu.Root, {
|
|
58
65
|
children: [
|
|
59
|
-
/*#__PURE__*/
|
|
66
|
+
/*#__PURE__*/ jsx(MenuTrigger, {
|
|
60
67
|
endIcon: null,
|
|
61
68
|
fullWidth: true,
|
|
62
|
-
justifyContent: "
|
|
63
|
-
children:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
justifyContent: "flex-start",
|
|
70
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
|
71
|
+
alignItems: "center",
|
|
72
|
+
gap: 3,
|
|
73
|
+
children: [
|
|
74
|
+
/*#__PURE__*/ jsx(MenuIcon, {
|
|
75
|
+
justifyContent: "center",
|
|
76
|
+
children: /*#__PURE__*/ jsx(Avatar.Item, {
|
|
77
|
+
delayMs: 0,
|
|
78
|
+
fallback: initials || getInitials(user)
|
|
79
|
+
})
|
|
80
|
+
}),
|
|
81
|
+
showDisplayName ? /*#__PURE__*/ jsx(Typography, {
|
|
82
|
+
variant: "omega",
|
|
83
|
+
children: children || userDisplayName
|
|
84
|
+
}) : /*#__PURE__*/ jsx(VisuallyHidden, {
|
|
85
|
+
tag: "span",
|
|
86
|
+
children: children || userDisplayName
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
})
|
|
73
90
|
}),
|
|
74
91
|
/*#__PURE__*/ jsxs(MenuContent, {
|
|
75
92
|
popoverPlacement: "top-start",
|
|
@@ -84,7 +101,7 @@ const NavUser = ({ children, initials, ...props })=>{
|
|
|
84
101
|
variant: "omega",
|
|
85
102
|
fontWeight: "bold",
|
|
86
103
|
textTransform: "none",
|
|
87
|
-
children: children
|
|
104
|
+
children: children || userDisplayName
|
|
88
105
|
}),
|
|
89
106
|
/*#__PURE__*/ jsx(StyledTypography, {
|
|
90
107
|
variant: "pi",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavUser.mjs","sources":["../../../../../../admin/src/components/MainNav/NavUser.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"NavUser.mjs","sources":["../../../../../../admin/src/components/MainNav/NavUser.tsx"],"sourcesContent":["import { 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';\nimport { getInitials, getDisplayName } from '../../utils/users';\n\nconst MenuTrigger = styled(Menu.Trigger)`\n padding: 0;\n\n ${({ theme }) => theme.breakpoints.large} {\n width: 4rem;\n height: 4rem;\n justify-content: center;\n }\n`;\n\nconst MenuIcon = styled(Flex)`\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 word-break: break-word;\n margin-bottom: ${({ theme }) => theme.spaces[3]};\n`;\n\nexport interface NavUserProps {\n initials?: string;\n children?: React.ReactNode;\n showDisplayName?: boolean;\n}\n\nexport const NavUser = ({\n initials,\n showDisplayName = false,\n children,\n ...props\n}: 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 const userDisplayName = getDisplayName(user);\n\n const handleProfile = () => {\n const redirection = '/me';\n navigate(redirection);\n };\n\n const handleLogout = () => {\n const redirection = '/auth/login';\n logout();\n navigate(redirection);\n };\n\n return (\n <Flex {...props}>\n <Menu.Root>\n <MenuTrigger endIcon={null} fullWidth justifyContent=\"flex-start\">\n <Flex alignItems=\"center\" gap={3}>\n <MenuIcon justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials || getInitials(user)} />\n </MenuIcon>\n {showDisplayName ? (\n <Typography variant=\"omega\">{children || userDisplayName}</Typography>\n ) : (\n <VisuallyHidden tag=\"span\">{children || userDisplayName}</VisuallyHidden>\n )}\n </Flex>\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 || userDisplayName}\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 <Menu.Item onSelect={handleProfile}>\n {formatMessage({\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n })}\n </Menu.Item>\n\n <Menu.Item variant=\"danger\" onSelect={handleLogout} color=\"danger600\">\n {formatMessage({\n id: 'app.components.LeftMenu.logout',\n defaultMessage: 'Log out',\n })}\n </Menu.Item>\n </MenuContent>\n </Menu.Root>\n </Flex>\n );\n};\n"],"names":["MenuTrigger","styled","Menu","Trigger","theme","breakpoints","large","MenuIcon","Flex","spaces","MenuContent","Content","UserInfo","BadgeWrapper","StyledTypography","Typography","NavUser","initials","showDisplayName","children","props","formatMessage","useIntl","navigate","useNavigate","user","useAuth","state","logout","userDisplayName","getDisplayName","handleProfile","redirection","handleLogout","_jsx","_jsxs","Root","endIcon","fullWidth","justifyContent","alignItems","gap","Avatar","Item","delayMs","fallback","getInitials","variant","VisuallyHidden","tag","popoverPlacement","zIndex","direction","fontWeight","textTransform","textColor","email","roles","map","role","Badge","name","id","Separator","onSelect","defaultMessage","color"],"mappings":"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"}
|
|
@@ -71,6 +71,13 @@ const CircleProgressBar = ({ percentage })=>{
|
|
|
71
71
|
]
|
|
72
72
|
});
|
|
73
73
|
};
|
|
74
|
+
const Container = styled.styled(designSystem.Flex)`
|
|
75
|
+
display: none;
|
|
76
|
+
|
|
77
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
78
|
+
display: flex;
|
|
79
|
+
}
|
|
80
|
+
`;
|
|
74
81
|
const TrialCountdown = ()=>{
|
|
75
82
|
const { formatMessage } = reactIntl.useIntl();
|
|
76
83
|
const { license, isError, isLoading } = ee.useLicenseLimits();
|
|
@@ -86,7 +93,7 @@ const TrialCountdown = ()=>{
|
|
|
86
93
|
const millisecondsPerDay = 1000 * 60 * 60 * 24;
|
|
87
94
|
const timeDifference = targetDate.getTime() - now.getTime();
|
|
88
95
|
const daysLeft = Math.ceil(timeDifference / millisecondsPerDay) <= 0 ? 0 : Math.ceil(timeDifference / millisecondsPerDay);
|
|
89
|
-
return /*#__PURE__*/ jsxRuntime.jsx(
|
|
96
|
+
return /*#__PURE__*/ jsxRuntime.jsx(Container, {
|
|
90
97
|
justifyContent: "center",
|
|
91
98
|
padding: 3,
|
|
92
99
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
|
|
@@ -1 +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 <
|
|
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 { styled, 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 Container = styled(Flex)`\n display: none;\n\n ${({ theme }) => theme.breakpoints.large} {\n display: flex;\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 <Container 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 </Container>\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","Container","styled","Flex","breakpoints","large","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","justifyContent","padding","Tooltip","label","defaultMessage","date","format","side","div","data-testid"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';
|
|
|
3
3
|
import { Flex, Tooltip } from '@strapi/design-system';
|
|
4
4
|
import { isBefore, startOfToday, format } from 'date-fns';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
|
-
import { useTheme } from 'styled-components';
|
|
6
|
+
import { styled, useTheme } from 'styled-components';
|
|
7
7
|
import { useGetLicenseTrialTimeLeftQuery } from '../../services/admin.mjs';
|
|
8
8
|
|
|
9
9
|
const CircleProgressBar = ({ percentage })=>{
|
|
@@ -69,6 +69,13 @@ const CircleProgressBar = ({ percentage })=>{
|
|
|
69
69
|
]
|
|
70
70
|
});
|
|
71
71
|
};
|
|
72
|
+
const Container = styled(Flex)`
|
|
73
|
+
display: none;
|
|
74
|
+
|
|
75
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
76
|
+
display: flex;
|
|
77
|
+
}
|
|
78
|
+
`;
|
|
72
79
|
const TrialCountdown = ()=>{
|
|
73
80
|
const { formatMessage } = useIntl();
|
|
74
81
|
const { license, isError, isLoading } = useLicenseLimits();
|
|
@@ -84,7 +91,7 @@ const TrialCountdown = ()=>{
|
|
|
84
91
|
const millisecondsPerDay = 1000 * 60 * 60 * 24;
|
|
85
92
|
const timeDifference = targetDate.getTime() - now.getTime();
|
|
86
93
|
const daysLeft = Math.ceil(timeDifference / millisecondsPerDay) <= 0 ? 0 : Math.ceil(timeDifference / millisecondsPerDay);
|
|
87
|
-
return /*#__PURE__*/ jsx(
|
|
94
|
+
return /*#__PURE__*/ jsx(Container, {
|
|
88
95
|
justifyContent: "center",
|
|
89
96
|
padding: 3,
|
|
90
97
|
children: /*#__PURE__*/ jsx(Tooltip, {
|