@strapi/admin 5.37.1 → 5.38.1
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 +1 -1
- package/dist/admin/admin/src/App.js.map +1 -1
- package/dist/admin/admin/src/App.mjs +1 -1
- package/dist/admin/admin/src/App.mjs.map +1 -1
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +2 -2
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/assets/images/free-trial.png.js.map +1 -1
- package/dist/admin/admin/src/assets/images/free-trial.png.mjs.map +1 -1
- package/dist/admin/admin/src/assets/images/logo-strapi-2022.svg.js.map +1 -1
- package/dist/admin/admin/src/assets/images/logo-strapi-2022.svg.mjs.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.mjs.map +1 -1
- package/dist/admin/admin/src/components/Context.js.map +1 -1
- package/dist/admin/admin/src/components/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/DragLayer.js.map +1 -1
- package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +1 -1
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +14 -0
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +15 -1
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Checkbox.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Checkbox.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
- package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
- package/dist/admin/admin/src/components/GradientBadge.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs +2 -2
- 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 +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/constants.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/constants.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +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.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.mjs +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +2 -2
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -2
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +2 -2
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs +2 -2
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/Pagination.js.map +1 -1
- package/dist/admin/admin/src/components/Pagination.mjs +1 -1
- package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
- package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
- package/dist/admin/admin/src/components/PluginsInitializer.mjs.map +1 -1
- package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
- package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
- package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
- package/dist/admin/admin/src/components/SearchInput.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +3 -3
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +1 -1
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/Theme.mjs.map +1 -1
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
- package/dist/admin/admin/src/components/UnauthenticatedLogo.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/components/WidgetHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetHelpers.mjs +3 -3
- package/dist/admin/admin/src/components/WidgetHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs +2 -2
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
- package/dist/admin/admin/src/components/Widgets.js.map +1 -1
- package/dist/admin/admin/src/components/Widgets.mjs +3 -3
- package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/constants/filters.js.map +1 -1
- package/dist/admin/admin/src/constants/filters.mjs.map +1 -1
- package/dist/admin/admin/src/constants/theme.js.map +1 -1
- package/dist/admin/admin/src/constants/theme.mjs.map +1 -1
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
- package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/configure.js.map +1 -1
- package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/hooks.js.map +1 -1
- package/dist/admin/admin/src/core/store/hooks.mjs.map +1 -1
- package/dist/admin/admin/src/core/utils/basename.js.map +1 -1
- package/dist/admin/admin/src/core/utils/basename.mjs.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
- package/dist/admin/admin/src/features/AppInfo.js.map +1 -1
- package/dist/admin/admin/src/features/AppInfo.mjs.map +1 -1
- package/dist/admin/admin/src/features/Auth.js +0 -1
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +1 -2
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/features/BackButton.js.map +1 -1
- package/dist/admin/admin/src/features/BackButton.mjs.map +1 -1
- package/dist/admin/admin/src/features/Configuration.js.map +1 -1
- package/dist/admin/admin/src/features/Configuration.mjs.map +1 -1
- package/dist/admin/admin/src/features/Notifications.js.map +1 -1
- package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js.map +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAdminRoles.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useClipboard.js.map +1 -1
- package/dist/admin/admin/src/hooks/useClipboard.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
- package/dist/admin/admin/src/hooks/useControllableState.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
- package/dist/admin/admin/src/hooks/useDebounce.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
- package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
- package/dist/admin/admin/src/hooks/useElementOnScreen.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
- package/dist/admin/admin/src/hooks/useEnterprise.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
- package/dist/admin/admin/src/hooks/useFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useFocusInputField.js.map +1 -1
- package/dist/admin/admin/src/hooks/useFocusInputField.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
- package/dist/admin/admin/src/hooks/useForceUpdate.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useInjectReducer.js.map +1 -1
- package/dist/admin/admin/src/hooks/useInjectReducer.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
- package/dist/admin/admin/src/hooks/useIsMounted.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
- package/dist/admin/admin/src/hooks/useOnce.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/usePrev.js.map +1 -1
- package/dist/admin/admin/src/hooks/usePrev.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useSettingsMenu.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useWarnIfUnsavedChanges.js.map +1 -1
- package/dist/admin/admin/src/hooks/useWarnIfUnsavedChanges.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ForgotPasswordSuccess.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ForgotPasswordSuccess.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Oops.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/NotFoundPage.js.map +1 -1
- package/dist/admin/admin/src/pages/NotFoundPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-dark.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-dark.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-light.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-light.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-dark.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-dark.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-light.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-light.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-dark.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-dark.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-light.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-light.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenDescription.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenDescription.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/CreateView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/CreateView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.mjs.map +1 -1
- 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/BoundRoute.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -1
- 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 +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
- 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/CollapseLabel.mjs.map +1 -1
- 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/CollapsePropertyMatrix.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
- 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/ConditionsButton.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
- 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 +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypes.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypes.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
- 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/HiddenAction.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RequiredSign.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RequiredSign.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleRow.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleRow.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/getCheckboxState.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/getCheckboxState.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/removeConditionKeyFromData.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/removeConditionKeyFromData.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/CreateView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/CreateView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +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/pages/Settings/pages/Webhooks/components/Events.js +1 -3
- 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/Events.mjs +2 -4
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/EventsTable.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/EventsTable.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/utils/forms.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/utils/forms.mjs.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
- package/dist/admin/admin/src/reducer.js.map +1 -1
- package/dist/admin/admin/src/reducer.mjs +1 -1
- package/dist/admin/admin/src/reducer.mjs.map +1 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/router.js +4 -4
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/selectors.js.map +1 -1
- package/dist/admin/admin/src/selectors.mjs.map +1 -1
- package/dist/admin/admin/src/services/admin.js.map +1 -1
- package/dist/admin/admin/src/services/admin.mjs.map +1 -1
- package/dist/admin/admin/src/services/api.js.map +1 -1
- package/dist/admin/admin/src/services/api.mjs.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/services/contentApi.js.map +1 -1
- package/dist/admin/admin/src/services/contentApi.mjs.map +1 -1
- package/dist/admin/admin/src/services/homepage.js.map +1 -1
- package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
- package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
- package/dist/admin/admin/src/services/transferTokens.mjs.map +1 -1
- package/dist/admin/admin/src/services/users.js.map +1 -1
- package/dist/admin/admin/src/services/users.mjs.map +1 -1
- package/dist/admin/admin/src/services/webhooks.js.map +1 -1
- package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
- package/dist/admin/admin/src/translations/es.json.js +356 -120
- package/dist/admin/admin/src/translations/es.json.js.map +1 -1
- package/dist/admin/admin/src/translations/es.json.mjs +355 -121
- package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.js +126 -1
- package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.mjs +126 -1
- package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
- package/dist/admin/admin/src/utils/arrays.js.map +1 -1
- package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/cookies.js.map +1 -1
- package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
- package/dist/admin/admin/src/utils/deviceId.js.map +1 -1
- package/dist/admin/admin/src/utils/deviceId.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +1 -3
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +1 -3
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
- package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
- package/dist/admin/admin/src/utils/locales.js.map +1 -1
- package/dist/admin/admin/src/utils/locales.mjs.map +1 -1
- package/dist/admin/admin/src/utils/normalizeAPIError.js.map +1 -1
- package/dist/admin/admin/src/utils/normalizeAPIError.mjs.map +1 -1
- package/dist/admin/admin/src/utils/objects.js.map +1 -1
- package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
- package/dist/admin/admin/src/utils/once.js.map +1 -1
- package/dist/admin/admin/src/utils/once.mjs.map +1 -1
- package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -1
- package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
- package/dist/admin/admin/src/utils/shims.js.map +1 -1
- package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
- package/dist/admin/admin/src/utils/strings.js.map +1 -1
- package/dist/admin/admin/src/utils/strings.mjs.map +1 -1
- package/dist/admin/admin/src/utils/translatedErrors.js.map +1 -1
- package/dist/admin/admin/src/utils/translatedErrors.mjs.map +1 -1
- package/dist/admin/admin/src/utils/urls.js.map +1 -1
- package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
- package/dist/admin/admin/src/utils/users.js.map +1 -1
- package/dist/admin/admin/src/utils/users.mjs.map +1 -1
- package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -1
- package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -1
- package/dist/admin/admin/tests/mockData.js.map +1 -1
- package/dist/admin/admin/tests/mockData.mjs.map +1 -1
- package/dist/admin/admin/tests/server.js.map +1 -1
- package/dist/admin/admin/tests/server.mjs.map +1 -1
- package/dist/admin/admin/tests/store.js.map +1 -1
- package/dist/admin/admin/tests/store.mjs.map +1 -1
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +1 -1
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/GlobalNotifications.js.map +1 -1
- package/dist/admin/ee/admin/src/components/GlobalNotifications.mjs.map +1 -1
- package/dist/admin/ee/admin/src/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/HomePage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/HomePage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
- 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/AuditLogs/components/Modal.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +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.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
- package/dist/admin/index.js +10 -6
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/DefaultDocument.js.map +1 -1
- package/dist/admin/src/components/DefaultDocument.mjs.map +1 -1
- package/dist/admin/src/components/Form.d.ts +1 -0
- package/dist/admin/src/components/NoJavascript.js.map +1 -1
- package/dist/admin/src/components/NoJavascript.mjs.map +1 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/server/ee/server/src/ai/containers/ai.js +0 -4
- package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/containers/ai.mjs +0 -4
- package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.js +0 -4
- package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.mjs +0 -4
- package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/content-types/audit-log.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/content-types/audit-log.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/bootstrap.js.map +1 -1
- package/dist/server/ee/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/ee/server/src/config/admin-actions.js.map +1 -1
- package/dist/server/ee/server/src/config/admin-actions.mjs.map +1 -1
- package/dist/server/ee/server/src/content-types/index.js.map +1 -1
- package/dist/server/ee/server/src/content-types/index.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.js +5 -5
- package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/index.js.map +1 -1
- package/dist/server/ee/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/role.js.map +1 -1
- package/dist/server/ee/server/src/controllers/role.mjs +1 -1
- package/dist/server/ee/server/src/controllers/role.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/user.js +4 -4
- package/dist/server/ee/server/src/controllers/user.js.map +1 -1
- package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +16 -16
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/ee/server/src/register.js.map +1 -1
- package/dist/server/ee/server/src/register.mjs.map +1 -1
- package/dist/server/ee/server/src/routes/index.js.map +1 -1
- package/dist/server/ee/server/src/routes/index.mjs.map +1 -1
- package/dist/server/ee/server/src/routes/license-limit.js.map +1 -1
- package/dist/server/ee/server/src/routes/license-limit.mjs.map +1 -1
- package/dist/server/ee/server/src/routes/sso.js.map +1 -1
- package/dist/server/ee/server/src/routes/sso.mjs.map +1 -1
- package/dist/server/ee/server/src/routes/utils.js.map +1 -1
- package/dist/server/ee/server/src/routes/utils.mjs.map +1 -1
- package/dist/server/ee/server/src/services/auth.js.map +1 -1
- package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
- package/dist/server/ee/server/src/services/index.js.map +1 -1
- package/dist/server/ee/server/src/services/index.mjs.map +1 -1
- package/dist/server/ee/server/src/services/metrics.js.map +1 -1
- package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
- package/dist/server/ee/server/src/services/passport/provider-registry.js.map +1 -1
- package/dist/server/ee/server/src/services/passport/provider-registry.mjs.map +1 -1
- package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
- package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
- package/dist/server/ee/server/src/services/passport.js.map +1 -1
- package/dist/server/ee/server/src/services/passport.mjs.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.mjs +4 -4
- package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
- package/dist/server/ee/server/src/services/role.js.map +1 -1
- package/dist/server/ee/server/src/services/role.mjs.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.mjs +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
- package/dist/server/ee/server/src/services/user.js.map +1 -1
- package/dist/server/ee/server/src/services/user.mjs +1 -1
- package/dist/server/ee/server/src/services/user.mjs.map +1 -1
- package/dist/server/ee/server/src/utils/index.js.map +1 -1
- package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
- package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
- package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
- package/dist/server/ee/server/src/validation/authentication.js.map +1 -1
- package/dist/server/ee/server/src/validation/authentication.mjs.map +1 -1
- package/dist/server/ee/server/src/validation/role.js.map +1 -1
- package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
- package/dist/server/ee/server/src/validation/user.js.map +1 -1
- package/dist/server/ee/server/src/validation/user.mjs.map +1 -1
- package/dist/server/index.js +18 -18
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +2 -2
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +1 -1
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/config/admin-actions.js.map +1 -1
- package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
- package/dist/server/server/src/config/admin-conditions.js.map +1 -1
- package/dist/server/server/src/config/admin-conditions.mjs.map +1 -1
- package/dist/server/server/src/config/email-templates/forgot-password.js.map +1 -1
- package/dist/server/server/src/config/email-templates/forgot-password.mjs.map +1 -1
- package/dist/server/server/src/config/index.js.map +1 -1
- package/dist/server/server/src/config/index.mjs.map +1 -1
- package/dist/server/server/src/content-types/Permission.js.map +1 -1
- package/dist/server/server/src/content-types/Permission.mjs.map +1 -1
- package/dist/server/server/src/content-types/Role.js.map +1 -1
- package/dist/server/server/src/content-types/Role.mjs.map +1 -1
- package/dist/server/server/src/content-types/User.js.map +1 -1
- package/dist/server/server/src/content-types/User.mjs.map +1 -1
- package/dist/server/server/src/content-types/api-token-permission.js.map +1 -1
- package/dist/server/server/src/content-types/api-token-permission.mjs.map +1 -1
- package/dist/server/server/src/content-types/api-token.js.map +1 -1
- package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
- package/dist/server/server/src/content-types/index.js.map +1 -1
- package/dist/server/server/src/content-types/index.mjs.map +1 -1
- package/dist/server/server/src/content-types/session.js.map +1 -1
- package/dist/server/server/src/content-types/session.mjs.map +1 -1
- package/dist/server/server/src/content-types/transfer-token-permission.js.map +1 -1
- package/dist/server/server/src/content-types/transfer-token-permission.mjs.map +1 -1
- package/dist/server/server/src/content-types/transfer-token.js.map +1 -1
- package/dist/server/server/src/content-types/transfer-token.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/api-token.js.map +1 -1
- package/dist/server/server/src/controllers/api-token.mjs +3 -3
- package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
- package/dist/server/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/server/src/controllers/authentication.mjs +2 -2
- package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/server/src/controllers/content-api.js.map +1 -1
- package/dist/server/server/src/controllers/content-api.mjs.map +1 -1
- package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
- package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
- package/dist/server/server/src/controllers/homepage.js.map +1 -1
- package/dist/server/server/src/controllers/homepage.mjs.map +1 -1
- package/dist/server/server/src/controllers/index.js.map +1 -1
- package/dist/server/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/permission.js.map +1 -1
- package/dist/server/server/src/controllers/permission.mjs.map +1 -1
- package/dist/server/server/src/controllers/role.js.map +1 -1
- package/dist/server/server/src/controllers/role.mjs +1 -1
- package/dist/server/server/src/controllers/role.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/runner.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/runner.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/token.mjs +2 -2
- package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/controllers/user.js.map +1 -1
- package/dist/server/server/src/controllers/user.mjs +1 -1
- package/dist/server/server/src/controllers/user.mjs.map +1 -1
- package/dist/server/server/src/controllers/validation/schema.js.map +1 -1
- package/dist/server/server/src/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/server/src/controllers/webhooks.js.map +1 -1
- package/dist/server/server/src/controllers/webhooks.mjs.map +1 -1
- package/dist/server/server/src/destroy.js.map +1 -1
- package/dist/server/server/src/destroy.mjs.map +1 -1
- package/dist/server/server/src/domain/action/index.js.map +1 -1
- package/dist/server/server/src/domain/action/index.mjs.map +1 -1
- package/dist/server/server/src/domain/action/provider.js.map +1 -1
- package/dist/server/server/src/domain/action/provider.mjs +1 -1
- package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
- package/dist/server/server/src/domain/condition/index.js.map +1 -1
- package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
- package/dist/server/server/src/domain/condition/provider.js.map +1 -1
- package/dist/server/server/src/domain/condition/provider.mjs.map +1 -1
- package/dist/server/server/src/domain/permission/index.js.map +1 -1
- package/dist/server/server/src/domain/permission/index.mjs +1 -1
- package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
- package/dist/server/server/src/domain/user.js.map +1 -1
- package/dist/server/server/src/domain/user.mjs.map +1 -1
- package/dist/server/server/src/middlewares/data-transfer.js.map +1 -1
- package/dist/server/server/src/middlewares/data-transfer.mjs.map +1 -1
- package/dist/server/server/src/middlewares/index.js.map +1 -1
- package/dist/server/server/src/middlewares/index.mjs.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
- package/dist/server/server/src/policies/hasPermissions.mjs.map +1 -1
- package/dist/server/server/src/policies/index.js.map +1 -1
- package/dist/server/server/src/policies/index.mjs.map +1 -1
- package/dist/server/server/src/policies/isAuthenticatedAdmin.js.map +1 -1
- package/dist/server/server/src/policies/isAuthenticatedAdmin.mjs.map +1 -1
- package/dist/server/server/src/policies/isTelemetryEnabled.js.map +1 -1
- package/dist/server/server/src/policies/isTelemetryEnabled.mjs.map +1 -1
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/register.mjs.map +1 -1
- package/dist/server/server/src/routes/admin.js.map +1 -1
- package/dist/server/server/src/routes/admin.mjs.map +1 -1
- package/dist/server/server/src/routes/api-tokens.js.map +1 -1
- package/dist/server/server/src/routes/api-tokens.mjs.map +1 -1
- package/dist/server/server/src/routes/authentication.js.map +1 -1
- package/dist/server/server/src/routes/authentication.mjs.map +1 -1
- package/dist/server/server/src/routes/content-api.js.map +1 -1
- package/dist/server/server/src/routes/content-api.mjs.map +1 -1
- package/dist/server/server/src/routes/homepage.js.map +1 -1
- package/dist/server/server/src/routes/homepage.mjs.map +1 -1
- package/dist/server/server/src/routes/index.js.map +1 -1
- package/dist/server/server/src/routes/index.mjs.map +1 -1
- package/dist/server/server/src/routes/permissions.js.map +1 -1
- package/dist/server/server/src/routes/permissions.mjs.map +1 -1
- package/dist/server/server/src/routes/roles.js.map +1 -1
- package/dist/server/server/src/routes/roles.mjs.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
- package/dist/server/server/src/routes/transfer.js.map +1 -1
- package/dist/server/server/src/routes/transfer.mjs.map +1 -1
- package/dist/server/server/src/routes/users.js.map +1 -1
- package/dist/server/server/src/routes/users.mjs.map +1 -1
- package/dist/server/server/src/routes/webhooks.js.map +1 -1
- package/dist/server/server/src/routes/webhooks.mjs.map +1 -1
- package/dist/server/server/src/services/action.js.map +1 -1
- package/dist/server/server/src/services/action.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/auth.js.map +1 -1
- package/dist/server/server/src/services/auth.mjs.map +1 -1
- package/dist/server/server/src/services/condition.js.map +1 -1
- package/dist/server/server/src/services/condition.mjs.map +1 -1
- package/dist/server/server/src/services/constants.js.map +1 -1
- package/dist/server/server/src/services/constants.mjs.map +1 -1
- package/dist/server/server/src/services/content-type.js +9 -9
- package/dist/server/server/src/services/content-type.js.map +1 -1
- package/dist/server/server/src/services/content-type.mjs +1 -1
- package/dist/server/server/src/services/content-type.mjs.map +1 -1
- package/dist/server/server/src/services/encryption.js.map +1 -1
- package/dist/server/server/src/services/encryption.mjs.map +1 -1
- package/dist/server/server/src/services/homepage.js.map +1 -1
- package/dist/server/server/src/services/homepage.mjs +1 -1
- package/dist/server/server/src/services/homepage.mjs.map +1 -1
- package/dist/server/server/src/services/index.js.map +1 -1
- package/dist/server/server/src/services/index.mjs.map +1 -1
- package/dist/server/server/src/services/metrics.js.map +1 -1
- package/dist/server/server/src/services/metrics.mjs.map +1 -1
- package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
- package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
- package/dist/server/server/src/services/passport.js.map +1 -1
- package/dist/server/server/src/services/passport.mjs.map +1 -1
- package/dist/server/server/src/services/permission/engine.js.map +1 -1
- package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/query-builders.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +2 -2
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +2 -2
- package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
- package/dist/server/server/src/services/permission/queries.js +9 -9
- package/dist/server/server/src/services/permission/queries.js.map +1 -1
- package/dist/server/server/src/services/permission/queries.mjs +1 -1
- package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/builder.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/builder.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.js +10 -10
- package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/index.mjs +1 -1
- package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
- package/dist/server/server/src/services/permission.js.map +1 -1
- package/dist/server/server/src/services/permission.mjs.map +1 -1
- package/dist/server/server/src/services/project-settings.js.map +1 -1
- package/dist/server/server/src/services/project-settings.mjs.map +1 -1
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +2 -2
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/services/token.js.map +1 -1
- package/dist/server/server/src/services/token.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/permission.js.map +1 -1
- package/dist/server/server/src/services/transfer/permission.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.mjs +1 -1
- package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/utils.js.map +1 -1
- package/dist/server/server/src/services/transfer/utils.mjs.map +1 -1
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +2 -2
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/server/src/strategies/admin.js.map +1 -1
- package/dist/server/server/src/strategies/admin.mjs.map +1 -1
- package/dist/server/server/src/strategies/api-token.js.map +1 -1
- package/dist/server/server/src/strategies/api-token.mjs.map +1 -1
- package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
- package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
- package/dist/server/server/src/utils/index.js.map +1 -1
- package/dist/server/server/src/utils/index.mjs.map +1 -1
- package/dist/server/server/src/validation/action-provider.js.map +1 -1
- package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
- package/dist/server/server/src/validation/api-tokens.js.map +1 -1
- package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/authentication/forgot-password.js.map +1 -1
- package/dist/server/server/src/validation/authentication/forgot-password.mjs.map +1 -1
- package/dist/server/server/src/validation/authentication/login.js.map +1 -1
- package/dist/server/server/src/validation/authentication/login.mjs.map +1 -1
- package/dist/server/server/src/validation/authentication/register.js.map +1 -1
- package/dist/server/server/src/validation/authentication/register.mjs.map +1 -1
- package/dist/server/server/src/validation/authentication/reset-password.js.map +1 -1
- package/dist/server/server/src/validation/authentication/reset-password.mjs.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.mjs.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.mjs.map +1 -1
- package/dist/server/server/src/validation/common-validators.js +2 -4
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.mjs +4 -5
- package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
- package/dist/server/server/src/validation/permission.js.map +1 -1
- package/dist/server/server/src/validation/permission.mjs.map +1 -1
- package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
- package/dist/server/server/src/validation/policies/hasPermissions.mjs.map +1 -1
- package/dist/server/server/src/validation/project-settings.js.map +1 -1
- package/dist/server/server/src/validation/project-settings.mjs.map +1 -1
- package/dist/server/server/src/validation/role.js.map +1 -1
- package/dist/server/server/src/validation/role.mjs.map +1 -1
- package/dist/server/server/src/validation/transfer/token.js.map +1 -1
- package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/validation/user.js +1 -4
- package/dist/server/server/src/validation/user.js.map +1 -1
- package/dist/server/server/src/validation/user.mjs +1 -4
- package/dist/server/server/src/validation/user.mjs.map +1 -1
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/shared/utils/session-auth.mjs.map +1 -1
- package/package.json +17 -12
|
@@ -1 +1 @@
|
|
|
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":";;;;;;;;;;AAQA,MAAMA,
|
|
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,10 +1,10 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { Menu,
|
|
2
|
+
import { Flex, Menu, Avatar, Typography, VisuallyHidden, Badge } from '@strapi/design-system';
|
|
3
3
|
import { useIntl } from 'react-intl';
|
|
4
4
|
import { useNavigate } from 'react-router-dom';
|
|
5
5
|
import { styled } from 'styled-components';
|
|
6
6
|
import { useAuth } from '../../features/Auth.mjs';
|
|
7
|
-
import {
|
|
7
|
+
import { getDisplayName, getInitials } from '../../utils/users.mjs';
|
|
8
8
|
|
|
9
9
|
const MenuTrigger = styled(Menu.Trigger)`
|
|
10
10
|
padding: 0;
|
|
@@ -1 +1 @@
|
|
|
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":";;;;;;;;AAQA,MAAMA,
|
|
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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"}
|
|
@@ -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 { 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":";;;;;;;;;;AAYA,MAAMA,
|
|
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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';
|
|
3
|
-
import {
|
|
3
|
+
import { Tooltip, Flex } from '@strapi/design-system';
|
|
4
4
|
import { isBefore, startOfToday, format } from 'date-fns';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
6
|
import { styled, useTheme } from 'styled-components';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrialCountdown.mjs","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":";;;;;;;;AAYA,MAAMA,
|
|
1
|
+
{"version":3,"file":"TrialCountdown.mjs","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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpsSurvey.js","sources":["../../../../../admin/src/components/NpsSurvey.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n VisuallyHidden,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useIsMobile } from '../hooks/useMediaQuery';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst FieldWrapper = styled(Field.Root)`\n height: 3.2rem;\n width: 3.2rem;\n align-items: center;\n justify-content: center;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 14 * 24 * 60 * 60 * 1000, // 14 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 30 * 60 * 1000, // 30 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const isMobile = useIsMobile();\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const { toggleNotification } = useNotification();\n const currentEnvironment = useAppInfo('NpsSurvey', (state) => state.currentEnvironment);\n const strapiVersion = useAppInfo('NpsSurvey', (state) => state.strapiVersion);\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n const { user } = useAuth('NpsSurvey', (auth) => auth);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = async ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n try {\n const body = {\n email: typeof user === 'object' && user.email ? user.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n };\n const res = await fetch(\n `${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/submit-nps`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n }\n );\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue, isSubmitting }) => (\n <Form name=\"npsSurveyForm\">\n <Box\n padding={4}\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex=\"200\"\n minWidth={{ initial: '100%', medium: '50%' }}\n >\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n wrap=\"wrap\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box tag=\"fieldset\" width=\"100%\" borderWidth={0}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={2}>\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" tag=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n type=\"button\"\n >\n <Cross />\n </IconButton>\n </Flex>\n {isMobile ? (\n <Box marginTop={2}>\n <SingleSelect\n placeholder={formatMessage({\n id: 'app.components.NpsSurvey.select-rating',\n defaultMessage: 'Select rating',\n })}\n onChange={(value) => {\n setFieldValue('npsSurveyRating', parseInt(value.toString(), 10));\n }}\n value={values.npsSurveyRating}\n >\n {ratingArray\n .sort((a, b) => b - a)\n .map((number) => {\n const suffixMessage =\n number === 0\n ? formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })\n : number === 10\n ? formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })\n : '';\n return (\n <SingleSelectOption key={number} value={number}>\n {number} {suffixMessage && `(${suffixMessage})`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n ) : (\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n name=\"npsSurveyRating\"\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </Field.Label>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n )}\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Box marginTop={2}>\n <Field.Label fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </Field.Label>\n </Box>\n <Box marginTop={3} marginBottom={4} width=\"100%\">\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n value={values.npsSurveyFeedback}\n />\n </Box>\n <Box>\n <Button marginBottom={2} type=\"submit\" loading={isSubmitting}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Box>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Box>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n"],"names":["FieldWrapper","styled","Field","Root","theme","spaces","colors","neutral0","primary700","delays","postResponse","postFirstDismissal","postSubsequentDismissal","display","ratingArray","Array","keys","checkIfShouldShowSurvey","settings","enabled","lastResponseDate","firstDismissalDate","lastDismissalDate","window","strapi","flags","nps","timeSinceLastResponse","Date","now","getTime","timeSinceLastDismissal","timeSinceFirstDismissal","NpsSurvey","isMobile","useIsMobile","formatMessage","useIntl","npsSurveySettings","setNpsSurveySettings","useNpsSurveySettings","isFeedbackResponse","setIsFeedbackResponse","React","useState","toggleNotification","useNotification","currentEnvironment","useAppInfo","state","strapiVersion","surveyIsShown","setSurveyIsShown","displaySurvey","setDisplaySurvey","useEffect","displayTime","setTimeout","clearTimeout","user","useAuth","auth","handleSubmitResponse","npsSurveyRating","npsSurveyFeedback","body","email","rating","comment","environment","version","undefined","license","projectType","isHostedOnStrapiCloud","process","env","STRAPI_HOSTING","res","fetch","STRAPI_ANALYTICS_URL","method","headers","JSON","stringify","ok","Error","toString","err","type","message","id","defaultMessage","handleDismiss","nextSettings","_jsx","Portal","Formik","initialValues","onSubmit","validationSchema","yup","object","string","number","required","values","handleChange","setFieldValue","isSubmitting","Form","name","Box","padding","position","bottom","left","transform","zIndex","minWidth","initial","medium","Flex","hasRadius","direction","borderColor","background","shadow","wrap","Typography","fontWeight","_jsxs","tag","width","borderWidth","justifyContent","gap","marginLeft","marginRight","IconButton","onClick","withTooltip","label","Cross","marginTop","SingleSelect","placeholder","onChange","value","parseInt","sort","a","b","map","suffixMessage","SingleSelectOption","marginBottom","variant","textColor","className","color","cursor","Label","VisuallyHidden","Input","checked","e","target","alignItems","fontSize","Textarea","Button","loading","usePersistentState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NpsSurvey.js","sources":["../../../../../admin/src/components/NpsSurvey.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n VisuallyHidden,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useIsMobile } from '../hooks/useMediaQuery';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst FieldWrapper = styled(Field.Root)`\n height: 3.2rem;\n width: 3.2rem;\n align-items: center;\n justify-content: center;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 14 * 24 * 60 * 60 * 1000, // 14 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 30 * 60 * 1000, // 30 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const isMobile = useIsMobile();\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const { toggleNotification } = useNotification();\n const currentEnvironment = useAppInfo('NpsSurvey', (state) => state.currentEnvironment);\n const strapiVersion = useAppInfo('NpsSurvey', (state) => state.strapiVersion);\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n const { user } = useAuth('NpsSurvey', (auth) => auth);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = async ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n try {\n const body = {\n email: typeof user === 'object' && user.email ? user.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n };\n const res = await fetch(\n `${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/submit-nps`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n }\n );\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue, isSubmitting }) => (\n <Form name=\"npsSurveyForm\">\n <Box\n padding={4}\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex=\"200\"\n minWidth={{ initial: '100%', medium: '50%' }}\n >\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n wrap=\"wrap\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box tag=\"fieldset\" width=\"100%\" borderWidth={0}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={2}>\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" tag=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n type=\"button\"\n >\n <Cross />\n </IconButton>\n </Flex>\n {isMobile ? (\n <Box marginTop={2}>\n <SingleSelect\n placeholder={formatMessage({\n id: 'app.components.NpsSurvey.select-rating',\n defaultMessage: 'Select rating',\n })}\n onChange={(value) => {\n setFieldValue('npsSurveyRating', parseInt(value.toString(), 10));\n }}\n value={values.npsSurveyRating}\n >\n {ratingArray\n .sort((a, b) => b - a)\n .map((number) => {\n const suffixMessage =\n number === 0\n ? formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })\n : number === 10\n ? formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })\n : '';\n return (\n <SingleSelectOption key={number} value={number}>\n {number} {suffixMessage && `(${suffixMessage})`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n ) : (\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n name=\"npsSurveyRating\"\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </Field.Label>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n )}\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Box marginTop={2}>\n <Field.Label fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </Field.Label>\n </Box>\n <Box marginTop={3} marginBottom={4} width=\"100%\">\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n value={values.npsSurveyFeedback}\n />\n </Box>\n <Box>\n <Button marginBottom={2} type=\"submit\" loading={isSubmitting}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Box>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Box>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n"],"names":["FieldWrapper","styled","Field","Root","theme","spaces","colors","neutral0","primary700","delays","postResponse","postFirstDismissal","postSubsequentDismissal","display","ratingArray","Array","keys","checkIfShouldShowSurvey","settings","enabled","lastResponseDate","firstDismissalDate","lastDismissalDate","window","strapi","flags","nps","timeSinceLastResponse","Date","now","getTime","timeSinceLastDismissal","timeSinceFirstDismissal","NpsSurvey","isMobile","useIsMobile","formatMessage","useIntl","npsSurveySettings","setNpsSurveySettings","useNpsSurveySettings","isFeedbackResponse","setIsFeedbackResponse","React","useState","toggleNotification","useNotification","currentEnvironment","useAppInfo","state","strapiVersion","surveyIsShown","setSurveyIsShown","displaySurvey","setDisplaySurvey","useEffect","displayTime","setTimeout","clearTimeout","user","useAuth","auth","handleSubmitResponse","npsSurveyRating","npsSurveyFeedback","body","email","rating","comment","environment","version","undefined","license","projectType","isHostedOnStrapiCloud","process","env","STRAPI_HOSTING","res","fetch","STRAPI_ANALYTICS_URL","method","headers","JSON","stringify","ok","Error","toString","err","type","message","id","defaultMessage","handleDismiss","nextSettings","_jsx","Portal","Formik","initialValues","onSubmit","validationSchema","yup","object","string","number","required","values","handleChange","setFieldValue","isSubmitting","Form","name","Box","padding","position","bottom","left","transform","zIndex","minWidth","initial","medium","Flex","hasRadius","direction","borderColor","background","shadow","wrap","Typography","fontWeight","_jsxs","tag","width","borderWidth","justifyContent","gap","marginLeft","marginRight","IconButton","onClick","withTooltip","label","Cross","marginTop","SingleSelect","placeholder","onChange","value","parseInt","sort","a","b","map","suffixMessage","SingleSelectOption","marginBottom","variant","textColor","className","color","cursor","Label","VisuallyHidden","Input","checked","e","target","alignItems","fontSize","Textarea","Button","loading","usePersistentState"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpsSurvey.mjs","sources":["../../../../../admin/src/components/NpsSurvey.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n VisuallyHidden,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useIsMobile } from '../hooks/useMediaQuery';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst FieldWrapper = styled(Field.Root)`\n height: 3.2rem;\n width: 3.2rem;\n align-items: center;\n justify-content: center;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 14 * 24 * 60 * 60 * 1000, // 14 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 30 * 60 * 1000, // 30 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const isMobile = useIsMobile();\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const { toggleNotification } = useNotification();\n const currentEnvironment = useAppInfo('NpsSurvey', (state) => state.currentEnvironment);\n const strapiVersion = useAppInfo('NpsSurvey', (state) => state.strapiVersion);\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n const { user } = useAuth('NpsSurvey', (auth) => auth);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = async ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n try {\n const body = {\n email: typeof user === 'object' && user.email ? user.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n };\n const res = await fetch(\n `${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/submit-nps`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n }\n );\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue, isSubmitting }) => (\n <Form name=\"npsSurveyForm\">\n <Box\n padding={4}\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex=\"200\"\n minWidth={{ initial: '100%', medium: '50%' }}\n >\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n wrap=\"wrap\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box tag=\"fieldset\" width=\"100%\" borderWidth={0}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={2}>\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" tag=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n type=\"button\"\n >\n <Cross />\n </IconButton>\n </Flex>\n {isMobile ? (\n <Box marginTop={2}>\n <SingleSelect\n placeholder={formatMessage({\n id: 'app.components.NpsSurvey.select-rating',\n defaultMessage: 'Select rating',\n })}\n onChange={(value) => {\n setFieldValue('npsSurveyRating', parseInt(value.toString(), 10));\n }}\n value={values.npsSurveyRating}\n >\n {ratingArray\n .sort((a, b) => b - a)\n .map((number) => {\n const suffixMessage =\n number === 0\n ? formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })\n : number === 10\n ? formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })\n : '';\n return (\n <SingleSelectOption key={number} value={number}>\n {number} {suffixMessage && `(${suffixMessage})`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n ) : (\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n name=\"npsSurveyRating\"\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </Field.Label>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n )}\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Box marginTop={2}>\n <Field.Label fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </Field.Label>\n </Box>\n <Box marginTop={3} marginBottom={4} width=\"100%\">\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n value={values.npsSurveyFeedback}\n />\n </Box>\n <Box>\n <Button marginBottom={2} type=\"submit\" loading={isSubmitting}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Box>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Box>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n"],"names":["FieldWrapper","styled","Field","Root","theme","spaces","colors","neutral0","primary700","delays","postResponse","postFirstDismissal","postSubsequentDismissal","display","ratingArray","Array","keys","checkIfShouldShowSurvey","settings","enabled","lastResponseDate","firstDismissalDate","lastDismissalDate","window","strapi","flags","nps","timeSinceLastResponse","Date","now","getTime","timeSinceLastDismissal","timeSinceFirstDismissal","NpsSurvey","isMobile","useIsMobile","formatMessage","useIntl","npsSurveySettings","setNpsSurveySettings","useNpsSurveySettings","isFeedbackResponse","setIsFeedbackResponse","React","useState","toggleNotification","useNotification","currentEnvironment","useAppInfo","state","strapiVersion","surveyIsShown","setSurveyIsShown","displaySurvey","setDisplaySurvey","useEffect","displayTime","setTimeout","clearTimeout","user","useAuth","auth","handleSubmitResponse","npsSurveyRating","npsSurveyFeedback","body","email","rating","comment","environment","version","undefined","license","projectType","isHostedOnStrapiCloud","process","env","STRAPI_HOSTING","res","fetch","STRAPI_ANALYTICS_URL","method","headers","JSON","stringify","ok","Error","toString","err","type","message","id","defaultMessage","handleDismiss","nextSettings","_jsx","Portal","Formik","initialValues","onSubmit","validationSchema","yup","object","string","number","required","values","handleChange","setFieldValue","isSubmitting","Form","name","Box","padding","position","bottom","left","transform","zIndex","minWidth","initial","medium","Flex","hasRadius","direction","borderColor","background","shadow","wrap","Typography","fontWeight","_jsxs","tag","width","borderWidth","justifyContent","gap","marginLeft","marginRight","IconButton","onClick","withTooltip","label","Cross","marginTop","SingleSelect","placeholder","onChange","value","parseInt","sort","a","b","map","suffixMessage","SingleSelectOption","marginBottom","variant","textColor","className","color","cursor","Label","VisuallyHidden","Input","checked","e","target","alignItems","fontSize","Textarea","Button","loading","usePersistentState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NpsSurvey.mjs","sources":["../../../../../admin/src/components/NpsSurvey.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n VisuallyHidden,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useIsMobile } from '../hooks/useMediaQuery';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst FieldWrapper = styled(Field.Root)`\n height: 3.2rem;\n width: 3.2rem;\n align-items: center;\n justify-content: center;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 14 * 24 * 60 * 60 * 1000, // 14 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 30 * 60 * 1000, // 30 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const isMobile = useIsMobile();\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const { toggleNotification } = useNotification();\n const currentEnvironment = useAppInfo('NpsSurvey', (state) => state.currentEnvironment);\n const strapiVersion = useAppInfo('NpsSurvey', (state) => state.strapiVersion);\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n const { user } = useAuth('NpsSurvey', (auth) => auth);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = async ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n try {\n const body = {\n email: typeof user === 'object' && user.email ? user.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n };\n const res = await fetch(\n `${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/submit-nps`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n }\n );\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue, isSubmitting }) => (\n <Form name=\"npsSurveyForm\">\n <Box\n padding={4}\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex=\"200\"\n minWidth={{ initial: '100%', medium: '50%' }}\n >\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n wrap=\"wrap\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box tag=\"fieldset\" width=\"100%\" borderWidth={0}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={2}>\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" tag=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n withTooltip={false}\n label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n type=\"button\"\n >\n <Cross />\n </IconButton>\n </Flex>\n {isMobile ? (\n <Box marginTop={2}>\n <SingleSelect\n placeholder={formatMessage({\n id: 'app.components.NpsSurvey.select-rating',\n defaultMessage: 'Select rating',\n })}\n onChange={(value) => {\n setFieldValue('npsSurveyRating', parseInt(value.toString(), 10));\n }}\n value={values.npsSurveyRating}\n >\n {ratingArray\n .sort((a, b) => b - a)\n .map((number) => {\n const suffixMessage =\n number === 0\n ? formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })\n : number === 10\n ? formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })\n : '';\n return (\n <SingleSelectOption key={number} value={number}>\n {number} {suffixMessage && `(${suffixMessage})`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n ) : (\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n name=\"npsSurveyRating\"\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <Field.Label>\n <VisuallyHidden>\n <Field.Input\n type=\"radio\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </Field.Label>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n )}\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Box marginTop={2}>\n <Field.Label fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </Field.Label>\n </Box>\n <Box marginTop={3} marginBottom={4} width=\"100%\">\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n value={values.npsSurveyFeedback}\n />\n </Box>\n <Box>\n <Button marginBottom={2} type=\"submit\" loading={isSubmitting}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Box>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Box>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n"],"names":["FieldWrapper","styled","Field","Root","theme","spaces","colors","neutral0","primary700","delays","postResponse","postFirstDismissal","postSubsequentDismissal","display","ratingArray","Array","keys","checkIfShouldShowSurvey","settings","enabled","lastResponseDate","firstDismissalDate","lastDismissalDate","window","strapi","flags","nps","timeSinceLastResponse","Date","now","getTime","timeSinceLastDismissal","timeSinceFirstDismissal","NpsSurvey","isMobile","useIsMobile","formatMessage","useIntl","npsSurveySettings","setNpsSurveySettings","useNpsSurveySettings","isFeedbackResponse","setIsFeedbackResponse","React","useState","toggleNotification","useNotification","currentEnvironment","useAppInfo","state","strapiVersion","surveyIsShown","setSurveyIsShown","displaySurvey","setDisplaySurvey","useEffect","displayTime","setTimeout","clearTimeout","user","useAuth","auth","handleSubmitResponse","npsSurveyRating","npsSurveyFeedback","body","email","rating","comment","environment","version","undefined","license","projectType","isHostedOnStrapiCloud","process","env","STRAPI_HOSTING","res","fetch","STRAPI_ANALYTICS_URL","method","headers","JSON","stringify","ok","Error","toString","err","type","message","id","defaultMessage","handleDismiss","nextSettings","_jsx","Portal","Formik","initialValues","onSubmit","validationSchema","yup","object","string","number","required","values","handleChange","setFieldValue","isSubmitting","Form","name","Box","padding","position","bottom","left","transform","zIndex","minWidth","initial","medium","Flex","hasRadius","direction","borderColor","background","shadow","wrap","Typography","fontWeight","_jsxs","tag","width","borderWidth","justifyContent","gap","marginLeft","marginRight","IconButton","onClick","withTooltip","label","Cross","marginTop","SingleSelect","placeholder","onChange","value","parseInt","sort","a","b","map","suffixMessage","SingleSelectOption","marginBottom","variant","textColor","className","color","cursor","Label","VisuallyHidden","Input","checked","e","target","alignItems","fontSize","Textarea","Button","loading","usePersistentState"],"mappings":"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"}
|