@strapi/admin 5.53.0 → 5.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/App.js +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/components/DismissibleBanner.js +60 -0
- package/dist/admin/admin/src/components/DismissibleBanner.js.map +1 -0
- package/dist/admin/admin/src/components/DismissibleBanner.mjs +58 -0
- package/dist/admin/admin/src/components/DismissibleBanner.mjs.map +1 -0
- package/dist/admin/admin/src/components/Form.js +11 -2
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +11 -2
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.js +35 -1
- package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.mjs +17 -2
- package/dist/admin/admin/src/components/LanguageProvider.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +1 -2
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +1 -2
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/MediaLibraryBanner.js +85 -0
- package/dist/admin/admin/src/components/MediaLibraryBanner.js.map +1 -0
- package/dist/admin/admin/src/components/MediaLibraryBanner.mjs +83 -0
- package/dist/admin/admin/src/components/MediaLibraryBanner.mjs.map +1 -0
- package/dist/admin/admin/src/components/Providers.js +6 -6
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs +6 -6
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +113 -35
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +115 -37
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNavFolder.js +188 -0
- package/dist/admin/admin/src/components/SubNavFolder.js.map +1 -0
- package/dist/admin/admin/src/components/SubNavFolder.mjs +186 -0
- package/dist/admin/admin/src/components/SubNavFolder.mjs.map +1 -0
- package/dist/admin/admin/src/components/UpsellBanner.js +56 -86
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs +58 -88
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/configure.js +14 -2
- package/dist/admin/admin/src/core/store/configure.js.map +1 -1
- package/dist/admin/admin/src/core/store/configure.mjs +14 -2
- package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/hooks.mjs +1 -1
- package/dist/admin/admin/src/features/Auth.js +162 -46
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +164 -48
- package/dist/admin/admin/src/features/Auth.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/hooks/useRegisterUnsavedChanges.js +19 -0
- package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.js.map +1 -0
- package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.mjs +17 -0
- package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/{useIdleSessionLogout.js → useSessionKeepalive.js} +34 -27
- package/dist/admin/admin/src/hooks/useSessionKeepalive.js.map +1 -0
- package/dist/admin/admin/src/hooks/{useIdleSessionLogout.mjs → useSessionKeepalive.mjs} +34 -27
- package/dist/admin/admin/src/hooks/useSessionKeepalive.mjs.map +1 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +2 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +2 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/SessionsPage.js +2 -5
- package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -1
- package/dist/admin/admin/src/pages/SessionsPage.mjs +2 -5
- package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +6 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +6 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +16 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +16 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +3 -13
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +3 -13
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +34 -5
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +34 -6
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/unsavedChangesRegistry.js +25 -0
- package/dist/admin/admin/src/utils/unsavedChangesRegistry.js.map +1 -0
- package/dist/admin/admin/src/utils/unsavedChangesRegistry.mjs +22 -0
- package/dist/admin/admin/src/utils/unsavedChangesRegistry.mjs.map +1 -0
- package/dist/admin/admin/tests/utils.js +14 -14
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +14 -14
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js +1 -6
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs +1 -6
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +7 -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 +7 -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/AuditLogs/utils/getActionTypesDefaultMessages.js +9 -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 +9 -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/SingleSignOnPage.js +0 -4
- 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 +0 -4
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/DismissibleBanner.d.ts +8 -0
- package/dist/admin/src/components/MediaLibraryBanner.d.ts +2 -0
- package/dist/admin/src/components/SubNav.d.ts +27 -8
- package/dist/admin/src/components/SubNavFolder.d.ts +15 -0
- package/dist/admin/src/features/Tracking.d.ts +2 -1
- package/dist/admin/src/hooks/useRegisterUnsavedChanges.d.ts +6 -0
- package/dist/admin/src/hooks/useSessionKeepalive.d.ts +88 -0
- package/dist/admin/src/services/admin.d.ts +1 -0
- package/dist/admin/src/utils/getFetchClient.d.ts +14 -6
- package/dist/admin/src/utils/unsavedChangesRegistry.d.ts +11 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +8 -0
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +1 -5
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +1 -5
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +2 -0
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +2 -0
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.js +3 -3
- package/dist/server/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.mjs +3 -3
- package/dist/server/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/server/src/ai/services/ai.js +37 -12
- package/dist/server/server/src/ai/services/ai.js.map +1 -1
- package/dist/server/server/src/ai/services/ai.mjs +37 -12
- package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
- package/dist/server/server/src/audit-logs/tokens.js +106 -0
- package/dist/server/server/src/audit-logs/tokens.js.map +1 -0
- package/dist/server/server/src/audit-logs/tokens.mjs +99 -0
- package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -0
- package/dist/server/server/src/controllers/admin.js +10 -1
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +10 -1
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +106 -4
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +107 -5
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/token.js +56 -4
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.mjs +57 -5
- package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
- package/dist/server/src/ai/services/ai.d.ts +3 -1
- package/dist/server/src/ai/services/ai.d.ts.map +1 -1
- package/dist/server/src/audit-logs/tokens.d.ts +86 -0
- package/dist/server/src/audit-logs/tokens.d.ts.map +1 -0
- package/dist/server/src/controllers/admin.d.ts +1 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/transfer/token.d.ts.map +1 -1
- package/dist/shared/contracts/admin.d.ts +1 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/dist/shared/contracts/shared.d.ts +1 -0
- package/dist/shared/contracts/shared.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +0 -1
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +0 -1
- package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +0 -87
|
@@ -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 handleSessions = () => {\n navigate('/me/sessions');\n };\n\n const handleLogout = () => {\n
|
|
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 handleSessions = () => {\n navigate('/me/sessions');\n };\n\n const handleLogout = () => {\n // Auth.logout navigates to login after confirm + mutation (and may prompt first).\n logout();\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) => (\n <Badge key={role.id}>{role.name}</Badge>\n ))}\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 onSelect={handleSessions}>\n {formatMessage({\n id: 'global.sessions.active-devices',\n defaultMessage: 'Active devices',\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","handleSessions","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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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var designSystem = require('@strapi/design-system');
|
|
5
|
+
var icons = require('@strapi/icons');
|
|
6
|
+
var reactIntl = require('react-intl');
|
|
7
|
+
var usePersistentState = require('../hooks/usePersistentState.js');
|
|
8
|
+
var DismissibleBanner = require('./DismissibleBanner.js');
|
|
9
|
+
|
|
10
|
+
const Banner = ({ isLegacyMediaLibrary, onDismiss })=>{
|
|
11
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
12
|
+
return /*#__PURE__*/ jsxRuntime.jsx(DismissibleBanner.DismissibleBanner, {
|
|
13
|
+
onDismiss: onDismiss,
|
|
14
|
+
closeLabel: formatMessage({
|
|
15
|
+
id: 'app.components.MediaLibraryBanner.close',
|
|
16
|
+
defaultMessage: 'Close'
|
|
17
|
+
}),
|
|
18
|
+
message: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
19
|
+
children: [
|
|
20
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
21
|
+
variant: "delta",
|
|
22
|
+
fontWeight: "bold",
|
|
23
|
+
textColor: "neutral0",
|
|
24
|
+
textAlign: "center",
|
|
25
|
+
fontSize: 2,
|
|
26
|
+
children: formatMessage({
|
|
27
|
+
id: 'app.components.MediaLibraryBanner.intro',
|
|
28
|
+
defaultMessage: 'Introducing the new Media Library '
|
|
29
|
+
})
|
|
30
|
+
}),
|
|
31
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
32
|
+
variant: "delta",
|
|
33
|
+
textColor: "neutral0",
|
|
34
|
+
textAlign: "center",
|
|
35
|
+
paddingRight: 4,
|
|
36
|
+
fontSize: 2,
|
|
37
|
+
children: formatMessage(isLegacyMediaLibrary ? {
|
|
38
|
+
id: 'app.components.MediaLibraryBanner.text',
|
|
39
|
+
defaultMessage: 'Check the documentation to learn how to switch to the new one.'
|
|
40
|
+
} : {
|
|
41
|
+
id: 'app.components.MediaLibraryBanner.text.enabled',
|
|
42
|
+
defaultMessage: "You're now using the revamped version."
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
]
|
|
46
|
+
}),
|
|
47
|
+
action: isLegacyMediaLibrary ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
|
|
48
|
+
width: "max-content",
|
|
49
|
+
variant: "tertiary",
|
|
50
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.ExternalLink, {}),
|
|
51
|
+
href: "https://docs.strapi.io/cms/features/media-library",
|
|
52
|
+
target: "_blank",
|
|
53
|
+
children: formatMessage({
|
|
54
|
+
id: 'app.components.MediaLibraryBanner.button',
|
|
55
|
+
defaultMessage: 'Docs'
|
|
56
|
+
})
|
|
57
|
+
}) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
|
|
58
|
+
width: "max-content",
|
|
59
|
+
variant: "tertiary",
|
|
60
|
+
href: "https://strapi.io/blog/strapi-release-roundup-everything-that-changed-between-june-and-august-2026",
|
|
61
|
+
target: "_blank",
|
|
62
|
+
children: formatMessage({
|
|
63
|
+
id: 'app.components.MediaLibraryBanner.button.enabled',
|
|
64
|
+
defaultMessage: 'Read blog post'
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
const MediaLibraryBanner = ()=>{
|
|
70
|
+
const isLegacyMediaLibrary = window.strapi.featureFlags.isEnabled('useLegacyMediaLibrary');
|
|
71
|
+
// The flag state is part of the key (not the stored value) so dismissing one
|
|
72
|
+
// message never collides with the other, and toggling `useLegacyMediaLibrary`
|
|
73
|
+
// (enabling it, or rolling it back) brings the banner back with the right message.
|
|
74
|
+
const [isDismissed, setIsDismissed] = usePersistentState.useScopedPersistentState(`STRAPI_MEDIA_LIBRARY_BANNER_DISMISSED_FOR_${isLegacyMediaLibrary}`, false);
|
|
75
|
+
if (isDismissed) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
return /*#__PURE__*/ jsxRuntime.jsx(Banner, {
|
|
79
|
+
isLegacyMediaLibrary: isLegacyMediaLibrary,
|
|
80
|
+
onDismiss: ()=>setIsDismissed(true)
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
exports.MediaLibraryBanner = MediaLibraryBanner;
|
|
85
|
+
//# sourceMappingURL=MediaLibraryBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaLibraryBanner.js","sources":["../../../../../admin/src/components/MediaLibraryBanner.tsx"],"sourcesContent":["import { LinkButton, Typography } from '@strapi/design-system';\nimport { ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useScopedPersistentState } from '../hooks/usePersistentState';\n\nimport { DismissibleBanner } from './DismissibleBanner';\n\nconst Banner = ({\n isLegacyMediaLibrary,\n onDismiss,\n}: {\n isLegacyMediaLibrary: boolean;\n onDismiss: () => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n <DismissibleBanner\n onDismiss={onDismiss}\n closeLabel={formatMessage({\n id: 'app.components.MediaLibraryBanner.close',\n defaultMessage: 'Close',\n })}\n message={\n <>\n <Typography\n variant=\"delta\"\n fontWeight=\"bold\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n fontSize={2}\n >\n {formatMessage({\n id: 'app.components.MediaLibraryBanner.intro',\n defaultMessage: 'Introducing the new Media Library ',\n })}\n </Typography>\n <Typography\n variant=\"delta\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n paddingRight={4}\n fontSize={2}\n >\n {formatMessage(\n isLegacyMediaLibrary\n ? {\n id: 'app.components.MediaLibraryBanner.text',\n defaultMessage:\n 'Check the documentation to learn how to switch to the new one.',\n }\n : {\n id: 'app.components.MediaLibraryBanner.text.enabled',\n defaultMessage: \"You're now using the revamped version.\",\n }\n )}\n </Typography>\n </>\n }\n action={\n isLegacyMediaLibrary ? (\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n startIcon={<ExternalLink />}\n href=\"https://docs.strapi.io/cms/features/media-library\"\n target=\"_blank\"\n >\n {formatMessage({\n id: 'app.components.MediaLibraryBanner.button',\n defaultMessage: 'Docs',\n })}\n </LinkButton>\n ) : (\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n href=\"https://strapi.io/blog/strapi-release-roundup-everything-that-changed-between-june-and-august-2026\"\n target=\"_blank\"\n >\n {formatMessage({\n id: 'app.components.MediaLibraryBanner.button.enabled',\n defaultMessage: 'Read blog post',\n })}\n </LinkButton>\n )\n }\n />\n );\n};\n\nconst MediaLibraryBanner = () => {\n const isLegacyMediaLibrary = window.strapi.featureFlags.isEnabled('useLegacyMediaLibrary');\n\n // The flag state is part of the key (not the stored value) so dismissing one\n // message never collides with the other, and toggling `useLegacyMediaLibrary`\n // (enabling it, or rolling it back) brings the banner back with the right message.\n const [isDismissed, setIsDismissed] = useScopedPersistentState<boolean>(\n `STRAPI_MEDIA_LIBRARY_BANNER_DISMISSED_FOR_${isLegacyMediaLibrary}`,\n false\n );\n\n if (isDismissed) {\n return null;\n }\n\n return (\n <Banner isLegacyMediaLibrary={isLegacyMediaLibrary} onDismiss={() => setIsDismissed(true)} />\n );\n};\n\nexport { MediaLibraryBanner };\n"],"names":["Banner","isLegacyMediaLibrary","onDismiss","formatMessage","useIntl","_jsx","DismissibleBanner","closeLabel","id","defaultMessage","message","_jsxs","_Fragment","Typography","variant","fontWeight","textColor","textAlign","fontSize","paddingRight","action","LinkButton","width","startIcon","ExternalLink","href","target","MediaLibraryBanner","window","strapi","featureFlags","isEnabled","isDismissed","setIsDismissed","useScopedPersistentState"],"mappings":";;;;;;;;;AAQA,MAAMA,SAAS,CAAC,EACdC,oBAAoB,EACpBC,SAAS,EAIV,GAAA;IACC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAAA,CAACC,mCAAAA,EAAAA;QACCJ,SAAAA,EAAWA,SAAAA;AACXK,QAAAA,UAAAA,EAAYJ,aAAAA,CAAc;YACxBK,EAAAA,EAAI,yCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA,CAAA;QACAC,OAAAA,gBACEC,eAAA,CAAAC,mBAAA,EAAA;;8BACEP,cAAA,CAACQ,uBAAAA,EAAAA;oBACCC,OAAAA,EAAQ,OAAA;oBACRC,UAAAA,EAAW,MAAA;oBACXC,SAAAA,EAAU,UAAA;oBACVC,SAAAA,EAAU,QAAA;oBACVC,QAAAA,EAAU,CAAA;8BAETf,aAAAA,CAAc;wBACbK,EAAAA,EAAI,yCAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA;;8BAEFJ,cAAA,CAACQ,uBAAAA,EAAAA;oBACCC,OAAAA,EAAQ,OAAA;oBACRE,SAAAA,EAAU,UAAA;oBACVC,SAAAA,EAAU,QAAA;oBACVE,YAAAA,EAAc,CAAA;oBACdD,QAAAA,EAAU,CAAA;AAETf,oBAAAA,QAAAA,EAAAA,aAAAA,CACCF,oBAAAA,GACI;wBACEO,EAAAA,EAAI,wCAAA;wBACJC,cAAAA,EACE;qBACJ,GACA;wBACED,EAAAA,EAAI,gDAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA;;;;AAKZW,QAAAA,MAAAA,EACEnB,qCACEI,cAAA,CAACgB,uBAAAA,EAAAA;YACCC,KAAAA,EAAM,aAAA;YACNR,OAAAA,EAAQ,UAAA;AACRS,YAAAA,SAAAA,gBAAWlB,cAAA,CAACmB,kBAAAA,EAAAA,EAAAA,CAAAA;YACZC,IAAAA,EAAK,mDAAA;YACLC,MAAAA,EAAO,QAAA;sBAENvB,aAAAA,CAAc;gBACbK,EAAAA,EAAI,0CAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;2BAGFJ,cAAA,CAACgB,uBAAAA,EAAAA;YACCC,KAAAA,EAAM,aAAA;YACNR,OAAAA,EAAQ,UAAA;YACRW,IAAAA,EAAK,oGAAA;YACLC,MAAAA,EAAO,QAAA;sBAENvB,aAAAA,CAAc;gBACbK,EAAAA,EAAI,kDAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;;;AAMZ,CAAA;AAEA,MAAMkB,kBAAAA,GAAqB,IAAA;AACzB,IAAA,MAAM1B,uBAAuB2B,MAAAA,CAAOC,MAAM,CAACC,YAAY,CAACC,SAAS,CAAC,uBAAA,CAAA;;;;IAKlE,MAAM,CAACC,aAAaC,cAAAA,CAAe,GAAGC,4CACpC,CAAC,0CAA0C,EAAEjC,oBAAAA,CAAAA,CAAsB,EACnE,KAAA,CAAA;AAGF,IAAA,IAAI+B,WAAAA,EAAa;QACf,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,qBACE3B,cAAA,CAACL,MAAAA,EAAAA;QAAOC,oBAAAA,EAAsBA,oBAAAA;AAAsBC,QAAAA,SAAAA,EAAW,IAAM+B,cAAAA,CAAe,IAAA;;AAExF;;;;"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { LinkButton, Typography } from '@strapi/design-system';
|
|
3
|
+
import { ExternalLink } from '@strapi/icons';
|
|
4
|
+
import { useIntl } from 'react-intl';
|
|
5
|
+
import { useScopedPersistentState } from '../hooks/usePersistentState.mjs';
|
|
6
|
+
import { DismissibleBanner } from './DismissibleBanner.mjs';
|
|
7
|
+
|
|
8
|
+
const Banner = ({ isLegacyMediaLibrary, onDismiss })=>{
|
|
9
|
+
const { formatMessage } = useIntl();
|
|
10
|
+
return /*#__PURE__*/ jsx(DismissibleBanner, {
|
|
11
|
+
onDismiss: onDismiss,
|
|
12
|
+
closeLabel: formatMessage({
|
|
13
|
+
id: 'app.components.MediaLibraryBanner.close',
|
|
14
|
+
defaultMessage: 'Close'
|
|
15
|
+
}),
|
|
16
|
+
message: /*#__PURE__*/ jsxs(Fragment, {
|
|
17
|
+
children: [
|
|
18
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
19
|
+
variant: "delta",
|
|
20
|
+
fontWeight: "bold",
|
|
21
|
+
textColor: "neutral0",
|
|
22
|
+
textAlign: "center",
|
|
23
|
+
fontSize: 2,
|
|
24
|
+
children: formatMessage({
|
|
25
|
+
id: 'app.components.MediaLibraryBanner.intro',
|
|
26
|
+
defaultMessage: 'Introducing the new Media Library '
|
|
27
|
+
})
|
|
28
|
+
}),
|
|
29
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
30
|
+
variant: "delta",
|
|
31
|
+
textColor: "neutral0",
|
|
32
|
+
textAlign: "center",
|
|
33
|
+
paddingRight: 4,
|
|
34
|
+
fontSize: 2,
|
|
35
|
+
children: formatMessage(isLegacyMediaLibrary ? {
|
|
36
|
+
id: 'app.components.MediaLibraryBanner.text',
|
|
37
|
+
defaultMessage: 'Check the documentation to learn how to switch to the new one.'
|
|
38
|
+
} : {
|
|
39
|
+
id: 'app.components.MediaLibraryBanner.text.enabled',
|
|
40
|
+
defaultMessage: "You're now using the revamped version."
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
]
|
|
44
|
+
}),
|
|
45
|
+
action: isLegacyMediaLibrary ? /*#__PURE__*/ jsx(LinkButton, {
|
|
46
|
+
width: "max-content",
|
|
47
|
+
variant: "tertiary",
|
|
48
|
+
startIcon: /*#__PURE__*/ jsx(ExternalLink, {}),
|
|
49
|
+
href: "https://docs.strapi.io/cms/features/media-library",
|
|
50
|
+
target: "_blank",
|
|
51
|
+
children: formatMessage({
|
|
52
|
+
id: 'app.components.MediaLibraryBanner.button',
|
|
53
|
+
defaultMessage: 'Docs'
|
|
54
|
+
})
|
|
55
|
+
}) : /*#__PURE__*/ jsx(LinkButton, {
|
|
56
|
+
width: "max-content",
|
|
57
|
+
variant: "tertiary",
|
|
58
|
+
href: "https://strapi.io/blog/strapi-release-roundup-everything-that-changed-between-june-and-august-2026",
|
|
59
|
+
target: "_blank",
|
|
60
|
+
children: formatMessage({
|
|
61
|
+
id: 'app.components.MediaLibraryBanner.button.enabled',
|
|
62
|
+
defaultMessage: 'Read blog post'
|
|
63
|
+
})
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
const MediaLibraryBanner = ()=>{
|
|
68
|
+
const isLegacyMediaLibrary = window.strapi.featureFlags.isEnabled('useLegacyMediaLibrary');
|
|
69
|
+
// The flag state is part of the key (not the stored value) so dismissing one
|
|
70
|
+
// message never collides with the other, and toggling `useLegacyMediaLibrary`
|
|
71
|
+
// (enabling it, or rolling it back) brings the banner back with the right message.
|
|
72
|
+
const [isDismissed, setIsDismissed] = useScopedPersistentState(`STRAPI_MEDIA_LIBRARY_BANNER_DISMISSED_FOR_${isLegacyMediaLibrary}`, false);
|
|
73
|
+
if (isDismissed) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
return /*#__PURE__*/ jsx(Banner, {
|
|
77
|
+
isLegacyMediaLibrary: isLegacyMediaLibrary,
|
|
78
|
+
onDismiss: ()=>setIsDismissed(true)
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export { MediaLibraryBanner };
|
|
83
|
+
//# sourceMappingURL=MediaLibraryBanner.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaLibraryBanner.mjs","sources":["../../../../../admin/src/components/MediaLibraryBanner.tsx"],"sourcesContent":["import { LinkButton, Typography } from '@strapi/design-system';\nimport { ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useScopedPersistentState } from '../hooks/usePersistentState';\n\nimport { DismissibleBanner } from './DismissibleBanner';\n\nconst Banner = ({\n isLegacyMediaLibrary,\n onDismiss,\n}: {\n isLegacyMediaLibrary: boolean;\n onDismiss: () => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n <DismissibleBanner\n onDismiss={onDismiss}\n closeLabel={formatMessage({\n id: 'app.components.MediaLibraryBanner.close',\n defaultMessage: 'Close',\n })}\n message={\n <>\n <Typography\n variant=\"delta\"\n fontWeight=\"bold\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n fontSize={2}\n >\n {formatMessage({\n id: 'app.components.MediaLibraryBanner.intro',\n defaultMessage: 'Introducing the new Media Library ',\n })}\n </Typography>\n <Typography\n variant=\"delta\"\n textColor=\"neutral0\"\n textAlign=\"center\"\n paddingRight={4}\n fontSize={2}\n >\n {formatMessage(\n isLegacyMediaLibrary\n ? {\n id: 'app.components.MediaLibraryBanner.text',\n defaultMessage:\n 'Check the documentation to learn how to switch to the new one.',\n }\n : {\n id: 'app.components.MediaLibraryBanner.text.enabled',\n defaultMessage: \"You're now using the revamped version.\",\n }\n )}\n </Typography>\n </>\n }\n action={\n isLegacyMediaLibrary ? (\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n startIcon={<ExternalLink />}\n href=\"https://docs.strapi.io/cms/features/media-library\"\n target=\"_blank\"\n >\n {formatMessage({\n id: 'app.components.MediaLibraryBanner.button',\n defaultMessage: 'Docs',\n })}\n </LinkButton>\n ) : (\n <LinkButton\n width=\"max-content\"\n variant=\"tertiary\"\n href=\"https://strapi.io/blog/strapi-release-roundup-everything-that-changed-between-june-and-august-2026\"\n target=\"_blank\"\n >\n {formatMessage({\n id: 'app.components.MediaLibraryBanner.button.enabled',\n defaultMessage: 'Read blog post',\n })}\n </LinkButton>\n )\n }\n />\n );\n};\n\nconst MediaLibraryBanner = () => {\n const isLegacyMediaLibrary = window.strapi.featureFlags.isEnabled('useLegacyMediaLibrary');\n\n // The flag state is part of the key (not the stored value) so dismissing one\n // message never collides with the other, and toggling `useLegacyMediaLibrary`\n // (enabling it, or rolling it back) brings the banner back with the right message.\n const [isDismissed, setIsDismissed] = useScopedPersistentState<boolean>(\n `STRAPI_MEDIA_LIBRARY_BANNER_DISMISSED_FOR_${isLegacyMediaLibrary}`,\n false\n );\n\n if (isDismissed) {\n return null;\n }\n\n return (\n <Banner isLegacyMediaLibrary={isLegacyMediaLibrary} onDismiss={() => setIsDismissed(true)} />\n );\n};\n\nexport { MediaLibraryBanner };\n"],"names":["Banner","isLegacyMediaLibrary","onDismiss","formatMessage","useIntl","_jsx","DismissibleBanner","closeLabel","id","defaultMessage","message","_jsxs","_Fragment","Typography","variant","fontWeight","textColor","textAlign","fontSize","paddingRight","action","LinkButton","width","startIcon","ExternalLink","href","target","MediaLibraryBanner","window","strapi","featureFlags","isEnabled","isDismissed","setIsDismissed","useScopedPersistentState"],"mappings":";;;;;;;AAQA,MAAMA,SAAS,CAAC,EACdC,oBAAoB,EACpBC,SAAS,EAIV,GAAA;IACC,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,qBACEC,GAAA,CAACC,iBAAAA,EAAAA;QACCJ,SAAAA,EAAWA,SAAAA;AACXK,QAAAA,UAAAA,EAAYJ,aAAAA,CAAc;YACxBK,EAAAA,EAAI,yCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA,CAAA;QACAC,OAAAA,gBACEC,IAAA,CAAAC,QAAA,EAAA;;8BACEP,GAAA,CAACQ,UAAAA,EAAAA;oBACCC,OAAAA,EAAQ,OAAA;oBACRC,UAAAA,EAAW,MAAA;oBACXC,SAAAA,EAAU,UAAA;oBACVC,SAAAA,EAAU,QAAA;oBACVC,QAAAA,EAAU,CAAA;8BAETf,aAAAA,CAAc;wBACbK,EAAAA,EAAI,yCAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA;;8BAEFJ,GAAA,CAACQ,UAAAA,EAAAA;oBACCC,OAAAA,EAAQ,OAAA;oBACRE,SAAAA,EAAU,UAAA;oBACVC,SAAAA,EAAU,QAAA;oBACVE,YAAAA,EAAc,CAAA;oBACdD,QAAAA,EAAU,CAAA;AAETf,oBAAAA,QAAAA,EAAAA,aAAAA,CACCF,oBAAAA,GACI;wBACEO,EAAAA,EAAI,wCAAA;wBACJC,cAAAA,EACE;qBACJ,GACA;wBACED,EAAAA,EAAI,gDAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA;;;;AAKZW,QAAAA,MAAAA,EACEnB,qCACEI,GAAA,CAACgB,UAAAA,EAAAA;YACCC,KAAAA,EAAM,aAAA;YACNR,OAAAA,EAAQ,UAAA;AACRS,YAAAA,SAAAA,gBAAWlB,GAAA,CAACmB,YAAAA,EAAAA,EAAAA,CAAAA;YACZC,IAAAA,EAAK,mDAAA;YACLC,MAAAA,EAAO,QAAA;sBAENvB,aAAAA,CAAc;gBACbK,EAAAA,EAAI,0CAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;2BAGFJ,GAAA,CAACgB,UAAAA,EAAAA;YACCC,KAAAA,EAAM,aAAA;YACNR,OAAAA,EAAQ,UAAA;YACRW,IAAAA,EAAK,oGAAA;YACLC,MAAAA,EAAO,QAAA;sBAENvB,aAAAA,CAAc;gBACbK,EAAAA,EAAI,kDAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;;;AAMZ,CAAA;AAEA,MAAMkB,kBAAAA,GAAqB,IAAA;AACzB,IAAA,MAAM1B,uBAAuB2B,MAAAA,CAAOC,MAAM,CAACC,YAAY,CAACC,SAAS,CAAC,uBAAA,CAAA;;;;IAKlE,MAAM,CAACC,aAAaC,cAAAA,CAAe,GAAGC,yBACpC,CAAC,0CAA0C,EAAEjC,oBAAAA,CAAAA,CAAsB,EACnE,KAAA,CAAA;AAGF,IAAA,IAAI+B,WAAAA,EAAa;QACf,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,qBACE3B,GAAA,CAACL,MAAAA,EAAAA;QAAOC,oBAAAA,EAAsBA,oBAAAA;AAAsBC,QAAAA,SAAAA,EAAW,IAAM+B,cAAAA,CAAe,IAAA;;AAExF;;;;"}
|
|
@@ -40,12 +40,12 @@ const Providers = ({ children, strapi, store })=>{
|
|
|
40
40
|
store: store,
|
|
41
41
|
children: /*#__PURE__*/ jsxRuntime.jsx(reactQuery.QueryClientProvider, {
|
|
42
42
|
client: queryClient,
|
|
43
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(LanguageProvider.LanguageProvider, {
|
|
44
|
+
messages: strapi.configurations.translations,
|
|
45
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Theme.Theme, {
|
|
46
|
+
themes: strapi.configurations.themes,
|
|
47
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Auth.AuthProvider, {
|
|
48
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(BackButton.HistoryProvider, {
|
|
49
49
|
children: /*#__PURE__*/ jsxRuntime.jsx(Notifications.NotificationsProvider, {
|
|
50
50
|
children: /*#__PURE__*/ jsxRuntime.jsx(Tracking.TrackingProvider, {
|
|
51
51
|
children: /*#__PURE__*/ jsxRuntime.jsx(GuidedTourProvider.GuidedTourProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Providers.js","sources":["../../../../../admin/src/components/Providers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourProvider } from './GuidedTour/GuidedTourProvider';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n return (\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n widgets={strapi.widgets}\n fields={strapi.library.fields}\n menu={strapi.router.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n rbac={strapi.rbac}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => strapi.runHookWaterfall(name, initialValue, store)}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.router.settings}\n >\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <
|
|
1
|
+
{"version":3,"file":"Providers.js","sources":["../../../../../admin/src/components/Providers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourProvider } from './GuidedTour/GuidedTourProvider';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n return (\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n widgets={strapi.widgets}\n fields={strapi.library.fields}\n menu={strapi.router.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n rbac={strapi.rbac}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => strapi.runHookWaterfall(name, initialValue, store)}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.router.settings}\n >\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <AuthProvider>\n <HistoryProvider>\n <NotificationsProvider>\n <TrackingProvider>\n <GuidedTourProvider>\n <ConfigurationProvider\n defaultAuthLogo={strapi.configurations.authLogo}\n defaultMenuLogo={strapi.configurations.menuLogo}\n showReleaseNotification={strapi.configurations.notifications.releases}\n >\n {children}\n </ConfigurationProvider>\n </GuidedTourProvider>\n </TrackingProvider>\n </NotificationsProvider>\n </HistoryProvider>\n </AuthProvider>\n </Theme>\n </LanguageProvider>\n </QueryClientProvider>\n </Provider>\n </StrapiAppProvider>\n );\n};\n\nexport { Providers };\n"],"names":["queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","Providers","children","strapi","store","_jsx","StrapiAppProvider","components","library","customFields","widgets","fields","menu","router","getAdminInjectedComponents","getPlugin","plugins","rbac","runHookParallel","runHookWaterfall","name","initialValue","runHookSeries","settings","Provider","QueryClientProvider","client","LanguageProvider","messages","configurations","translations","Theme","themes","AuthProvider","HistoryProvider","NotificationsProvider","TrackingProvider","GuidedTourProvider","ConfigurationProvider","defaultAuthLogo","authLogo","defaultMenuLogo","menuLogo","showReleaseNotification","notifications","releases"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAMA,WAAAA,GAAc,IAAIC,sBAAAA,CAAY;IAClCC,cAAAA,EAAgB;QACdC,OAAAA,EAAS;YACPC,oBAAAA,EAAsB;AACxB;AACF;AACF,CAAA,CAAA;AAQA,MAAMC,SAAAA,GAAY,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAkB,GAAA;AAC5D,IAAA,qBACEC,cAAA,CAACC,2BAAAA,EAAAA;QACCC,UAAAA,EAAYJ,MAAAA,CAAOK,OAAO,CAACD,UAAU;AACrCE,QAAAA,YAAAA,EAAcN,OAAOM,YAAY;AACjCC,QAAAA,OAAAA,EAASP,OAAOO,OAAO;QACvBC,MAAAA,EAAQR,MAAAA,CAAOK,OAAO,CAACG,MAAM;QAC7BC,IAAAA,EAAMT,MAAAA,CAAOU,MAAM,CAACD,IAAI;AACxBE,QAAAA,0BAAAA,EAA4BX,OAAOW,0BAA0B;AAC7DC,QAAAA,SAAAA,EAAWZ,OAAOY,SAAS;AAC3BC,QAAAA,OAAAA,EAASb,OAAOa,OAAO;AACvBC,QAAAA,IAAAA,EAAMd,OAAOc,IAAI;AACjBC,QAAAA,eAAAA,EAAiBf,OAAOe,eAAe;AACvCC,QAAAA,gBAAAA,EAAkB,CAACC,IAAAA,EAAMC,YAAAA,GAAiBlB,OAAOgB,gBAAgB,CAACC,MAAMC,YAAAA,EAAcjB,KAAAA,CAAAA;AACtFkB,QAAAA,aAAAA,EAAenB,OAAOmB,aAAa;QACnCC,QAAAA,EAAUpB,MAAAA,CAAOU,MAAM,CAACU,QAAQ;AAEhC,QAAA,QAAA,gBAAAlB,cAAA,CAACmB,mBAAAA,EAAAA;YAASpB,KAAAA,EAAOA,KAAAA;AACf,YAAA,QAAA,gBAAAC,cAAA,CAACoB,8BAAAA,EAAAA;gBAAoBC,MAAAA,EAAQ9B,WAAAA;AAC3B,gBAAA,QAAA,gBAAAS,cAAA,CAACsB,iCAAAA,EAAAA;oBAAiBC,QAAAA,EAAUzB,MAAAA,CAAO0B,cAAc,CAACC,YAAY;AAC5D,oBAAA,QAAA,gBAAAzB,cAAA,CAAC0B,WAAAA,EAAAA;wBAAMC,MAAAA,EAAQ7B,MAAAA,CAAO0B,cAAc,CAACG,MAAM;AACzC,wBAAA,QAAA,gBAAA3B,cAAA,CAAC4B,iBAAAA,EAAAA;AACC,4BAAA,QAAA,gBAAA5B,cAAA,CAAC6B,0BAAAA,EAAAA;AACC,gCAAA,QAAA,gBAAA7B,cAAA,CAAC8B,mCAAAA,EAAAA;AACC,oCAAA,QAAA,gBAAA9B,cAAA,CAAC+B,yBAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAA/B,cAAA,CAACgC,qCAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAAhC,cAAA,CAACiC,mCAAAA,EAAAA;gDACCC,eAAAA,EAAiBpC,MAAAA,CAAO0B,cAAc,CAACW,QAAQ;gDAC/CC,eAAAA,EAAiBtC,MAAAA,CAAO0B,cAAc,CAACa,QAAQ;AAC/CC,gDAAAA,uBAAAA,EAAyBxC,MAAAA,CAAO0B,cAAc,CAACe,aAAa,CAACC,QAAQ;AAEpE3C,gDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;;;;"}
|
|
@@ -38,12 +38,12 @@ const Providers = ({ children, strapi, store })=>{
|
|
|
38
38
|
store: store,
|
|
39
39
|
children: /*#__PURE__*/ jsx(QueryClientProvider, {
|
|
40
40
|
client: queryClient,
|
|
41
|
-
children: /*#__PURE__*/ jsx(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
children: /*#__PURE__*/ jsx(LanguageProvider, {
|
|
42
|
+
messages: strapi.configurations.translations,
|
|
43
|
+
children: /*#__PURE__*/ jsx(Theme, {
|
|
44
|
+
themes: strapi.configurations.themes,
|
|
45
|
+
children: /*#__PURE__*/ jsx(AuthProvider, {
|
|
46
|
+
children: /*#__PURE__*/ jsx(HistoryProvider, {
|
|
47
47
|
children: /*#__PURE__*/ jsx(NotificationsProvider, {
|
|
48
48
|
children: /*#__PURE__*/ jsx(TrackingProvider, {
|
|
49
49
|
children: /*#__PURE__*/ jsx(GuidedTourProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Providers.mjs","sources":["../../../../../admin/src/components/Providers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourProvider } from './GuidedTour/GuidedTourProvider';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n return (\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n widgets={strapi.widgets}\n fields={strapi.library.fields}\n menu={strapi.router.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n rbac={strapi.rbac}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => strapi.runHookWaterfall(name, initialValue, store)}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.router.settings}\n >\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <
|
|
1
|
+
{"version":3,"file":"Providers.mjs","sources":["../../../../../admin/src/components/Providers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourProvider } from './GuidedTour/GuidedTourProvider';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n return (\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n widgets={strapi.widgets}\n fields={strapi.library.fields}\n menu={strapi.router.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n rbac={strapi.rbac}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => strapi.runHookWaterfall(name, initialValue, store)}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.router.settings}\n >\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <AuthProvider>\n <HistoryProvider>\n <NotificationsProvider>\n <TrackingProvider>\n <GuidedTourProvider>\n <ConfigurationProvider\n defaultAuthLogo={strapi.configurations.authLogo}\n defaultMenuLogo={strapi.configurations.menuLogo}\n showReleaseNotification={strapi.configurations.notifications.releases}\n >\n {children}\n </ConfigurationProvider>\n </GuidedTourProvider>\n </TrackingProvider>\n </NotificationsProvider>\n </HistoryProvider>\n </AuthProvider>\n </Theme>\n </LanguageProvider>\n </QueryClientProvider>\n </Provider>\n </StrapiAppProvider>\n );\n};\n\nexport { Providers };\n"],"names":["queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","Providers","children","strapi","store","_jsx","StrapiAppProvider","components","library","customFields","widgets","fields","menu","router","getAdminInjectedComponents","getPlugin","plugins","rbac","runHookParallel","runHookWaterfall","name","initialValue","runHookSeries","settings","Provider","QueryClientProvider","client","LanguageProvider","messages","configurations","translations","Theme","themes","AuthProvider","HistoryProvider","NotificationsProvider","TrackingProvider","GuidedTourProvider","ConfigurationProvider","defaultAuthLogo","authLogo","defaultMenuLogo","menuLogo","showReleaseNotification","notifications","releases"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAMA,WAAAA,GAAc,IAAIC,WAAAA,CAAY;IAClCC,cAAAA,EAAgB;QACdC,OAAAA,EAAS;YACPC,oBAAAA,EAAsB;AACxB;AACF;AACF,CAAA,CAAA;AAQA,MAAMC,SAAAA,GAAY,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAkB,GAAA;AAC5D,IAAA,qBACEC,GAAA,CAACC,iBAAAA,EAAAA;QACCC,UAAAA,EAAYJ,MAAAA,CAAOK,OAAO,CAACD,UAAU;AACrCE,QAAAA,YAAAA,EAAcN,OAAOM,YAAY;AACjCC,QAAAA,OAAAA,EAASP,OAAOO,OAAO;QACvBC,MAAAA,EAAQR,MAAAA,CAAOK,OAAO,CAACG,MAAM;QAC7BC,IAAAA,EAAMT,MAAAA,CAAOU,MAAM,CAACD,IAAI;AACxBE,QAAAA,0BAAAA,EAA4BX,OAAOW,0BAA0B;AAC7DC,QAAAA,SAAAA,EAAWZ,OAAOY,SAAS;AAC3BC,QAAAA,OAAAA,EAASb,OAAOa,OAAO;AACvBC,QAAAA,IAAAA,EAAMd,OAAOc,IAAI;AACjBC,QAAAA,eAAAA,EAAiBf,OAAOe,eAAe;AACvCC,QAAAA,gBAAAA,EAAkB,CAACC,IAAAA,EAAMC,YAAAA,GAAiBlB,OAAOgB,gBAAgB,CAACC,MAAMC,YAAAA,EAAcjB,KAAAA,CAAAA;AACtFkB,QAAAA,aAAAA,EAAenB,OAAOmB,aAAa;QACnCC,QAAAA,EAAUpB,MAAAA,CAAOU,MAAM,CAACU,QAAQ;AAEhC,QAAA,QAAA,gBAAAlB,GAAA,CAACmB,QAAAA,EAAAA;YAASpB,KAAAA,EAAOA,KAAAA;AACf,YAAA,QAAA,gBAAAC,GAAA,CAACoB,mBAAAA,EAAAA;gBAAoBC,MAAAA,EAAQ9B,WAAAA;AAC3B,gBAAA,QAAA,gBAAAS,GAAA,CAACsB,gBAAAA,EAAAA;oBAAiBC,QAAAA,EAAUzB,MAAAA,CAAO0B,cAAc,CAACC,YAAY;AAC5D,oBAAA,QAAA,gBAAAzB,GAAA,CAAC0B,KAAAA,EAAAA;wBAAMC,MAAAA,EAAQ7B,MAAAA,CAAO0B,cAAc,CAACG,MAAM;AACzC,wBAAA,QAAA,gBAAA3B,GAAA,CAAC4B,YAAAA,EAAAA;AACC,4BAAA,QAAA,gBAAA5B,GAAA,CAAC6B,eAAAA,EAAAA;AACC,gCAAA,QAAA,gBAAA7B,GAAA,CAAC8B,qBAAAA,EAAAA;AACC,oCAAA,QAAA,gBAAA9B,GAAA,CAAC+B,gBAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAA/B,GAAA,CAACgC,kBAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAAhC,GAAA,CAACiC,qBAAAA,EAAAA;gDACCC,eAAAA,EAAiBpC,MAAAA,CAAO0B,cAAc,CAACW,QAAQ;gDAC/CC,eAAAA,EAAiBtC,MAAAA,CAAO0B,cAAc,CAACa,QAAQ;AAC/CC,gDAAAA,uBAAAA,EAAyBxC,MAAAA,CAAO0B,cAAc,CAACe,aAAa,CAACC,QAAQ;AAEpE3C,gDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;;;;"}
|
|
@@ -8,6 +8,7 @@ var reactRouterDom = require('react-router-dom');
|
|
|
8
8
|
var styledComponents = require('styled-components');
|
|
9
9
|
var theme = require('../constants/theme.js');
|
|
10
10
|
var Tours = require('./GuidedTour/Tours.js');
|
|
11
|
+
var SubNavFolder = require('./SubNavFolder.js');
|
|
11
12
|
|
|
12
13
|
const MainSubNav = styledComponents.styled(designSystem.SubNav)`
|
|
13
14
|
width: 100%;
|
|
@@ -43,6 +44,10 @@ const StyledLink = styledComponents.styled(reactRouterDom.NavLink)`
|
|
|
43
44
|
|
|
44
45
|
color: ${({ theme })=>theme.colors.neutral800};
|
|
45
46
|
|
|
47
|
+
& > div {
|
|
48
|
+
padding-left: ${({ theme, $depth = 0 })=>`calc(${$depth} * ${theme.spaces[6]} + ${theme.spaces[3]})`};
|
|
49
|
+
}
|
|
50
|
+
|
|
46
51
|
&.active > div {
|
|
47
52
|
${({ theme })=>{
|
|
48
53
|
return `
|
|
@@ -73,14 +78,28 @@ const StyledLink = styledComponents.styled(reactRouterDom.NavLink)`
|
|
|
73
78
|
outline-offset: -2px;
|
|
74
79
|
}
|
|
75
80
|
`;
|
|
81
|
+
const LinkBullet = styledComponents.styled.span`
|
|
82
|
+
display: inline-flex;
|
|
83
|
+
align-items: center;
|
|
84
|
+
justify-content: center;
|
|
85
|
+
flex: 0 0 16px;
|
|
86
|
+
|
|
87
|
+
&::before {
|
|
88
|
+
content: '';
|
|
89
|
+
width: 4px;
|
|
90
|
+
height: 4px;
|
|
91
|
+
border-radius: 50%;
|
|
92
|
+
background-color: currentColor;
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
76
95
|
const Link = (props)=>{
|
|
77
|
-
const { label, endAction, handleClick, ...rest } = props;
|
|
96
|
+
const { label, endAction, handleClick, depth, bulleted = false, ...rest } = props;
|
|
78
97
|
return /*#__PURE__*/ jsxRuntime.jsx(StyledLink, {
|
|
79
98
|
...rest,
|
|
99
|
+
$depth: depth,
|
|
80
100
|
onClick: handleClick,
|
|
81
101
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
82
102
|
width: '100%',
|
|
83
|
-
paddingLeft: 3,
|
|
84
103
|
paddingRight: 3,
|
|
85
104
|
paddingTop: {
|
|
86
105
|
initial: 1,
|
|
@@ -99,19 +118,28 @@ const Link = (props)=>{
|
|
|
99
118
|
large: 1
|
|
100
119
|
},
|
|
101
120
|
children: [
|
|
102
|
-
/*#__PURE__*/ jsxRuntime.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
121
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
122
|
+
gap: 2,
|
|
123
|
+
flex: "1",
|
|
124
|
+
minWidth: "0",
|
|
125
|
+
alignItems: "center",
|
|
126
|
+
children: [
|
|
127
|
+
bulleted && /*#__PURE__*/ jsxRuntime.jsx(LinkBullet, {
|
|
128
|
+
"aria-hidden": true
|
|
129
|
+
}),
|
|
130
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
131
|
+
tag: "div",
|
|
132
|
+
lineHeight: "32px",
|
|
133
|
+
overflow: "hidden",
|
|
134
|
+
style: {
|
|
135
|
+
textOverflow: 'ellipsis',
|
|
136
|
+
whiteSpace: 'nowrap',
|
|
137
|
+
flex: 1,
|
|
138
|
+
minWidth: 0
|
|
139
|
+
},
|
|
140
|
+
children: label
|
|
141
|
+
})
|
|
142
|
+
]
|
|
115
143
|
}),
|
|
116
144
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
117
145
|
gap: 2,
|
|
@@ -205,6 +233,64 @@ const Sections = ({ children, ...props })=>{
|
|
|
205
233
|
};
|
|
206
234
|
const Section = ({ label, children, link, sectionId, badgeLabel })=>{
|
|
207
235
|
const listId = React.useId();
|
|
236
|
+
// Used to track the selection of an item within the popover menu (as opposed to a menu dismissal via escape, click outside, etc.)
|
|
237
|
+
const popoverMenuItemClicked = React.useRef(false);
|
|
238
|
+
const linkButton = React.useMemo(()=>{
|
|
239
|
+
if (!link) return;
|
|
240
|
+
if (!link.menu) {
|
|
241
|
+
return /*#__PURE__*/ jsxRuntime.jsx(GuidedTourTooltip, {
|
|
242
|
+
sectionId: sectionId,
|
|
243
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
|
244
|
+
onClick: link.onClick,
|
|
245
|
+
label: link.label,
|
|
246
|
+
variant: "ghost",
|
|
247
|
+
withTooltip: true,
|
|
248
|
+
size: "XS",
|
|
249
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {})
|
|
250
|
+
})
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
const onCloseMenuAutoFocus = (event)=>{
|
|
254
|
+
// If the result of a popover menu close deliberately shifts focus, the default Radix behavior (immediately restore focus on the popover's trigger element when the popover closes) would compete.
|
|
255
|
+
if (link.suppressFocusCaptureOnMenuClose && popoverMenuItemClicked.current) {
|
|
256
|
+
event.preventDefault();
|
|
257
|
+
}
|
|
258
|
+
popoverMenuItemClicked.current = false;
|
|
259
|
+
};
|
|
260
|
+
return /*#__PURE__*/ jsxRuntime.jsx(GuidedTourTooltip, {
|
|
261
|
+
sectionId: sectionId,
|
|
262
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Menu.Root, {
|
|
263
|
+
children: [
|
|
264
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Trigger, {
|
|
265
|
+
label: link.label,
|
|
266
|
+
tag: designSystem.IconButton,
|
|
267
|
+
icon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
|
|
268
|
+
variant: "ghost",
|
|
269
|
+
endIcon: null,
|
|
270
|
+
size: "XS"
|
|
271
|
+
}),
|
|
272
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Content, {
|
|
273
|
+
onCloseAutoFocus: onCloseMenuAutoFocus,
|
|
274
|
+
zIndex: 2,
|
|
275
|
+
children: link.menu.map((item)=>{
|
|
276
|
+
const onSelectMenuItem = ()=>{
|
|
277
|
+
popoverMenuItemClicked.current = true;
|
|
278
|
+
item.onSelect();
|
|
279
|
+
};
|
|
280
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
|
|
281
|
+
onSelect: onSelectMenuItem,
|
|
282
|
+
startIcon: item.startIcon,
|
|
283
|
+
children: item.label
|
|
284
|
+
}, item.label);
|
|
285
|
+
})
|
|
286
|
+
})
|
|
287
|
+
]
|
|
288
|
+
})
|
|
289
|
+
});
|
|
290
|
+
}, [
|
|
291
|
+
link,
|
|
292
|
+
sectionId
|
|
293
|
+
]);
|
|
208
294
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
209
295
|
direction: "column",
|
|
210
296
|
alignItems: "stretch",
|
|
@@ -224,35 +310,26 @@ const Section = ({ label, children, link, sectionId, badgeLabel })=>{
|
|
|
224
310
|
justifyContent: "space-between",
|
|
225
311
|
gap: 2,
|
|
226
312
|
children: [
|
|
227
|
-
/*#__PURE__*/ jsxRuntime.
|
|
228
|
-
|
|
229
|
-
|
|
313
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
314
|
+
gap: 2,
|
|
315
|
+
alignItems: "center",
|
|
316
|
+
minWidth: 0,
|
|
317
|
+
children: [
|
|
318
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
230
319
|
variant: "sigma",
|
|
231
320
|
textColor: "neutral600",
|
|
232
321
|
children: label
|
|
233
|
-
})
|
|
234
|
-
})
|
|
235
|
-
}),
|
|
236
|
-
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
237
|
-
gap: 1,
|
|
238
|
-
children: [
|
|
322
|
+
}),
|
|
239
323
|
badgeLabel && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Badge, {
|
|
240
324
|
backgroundColor: "neutral150",
|
|
241
325
|
textColor: "neutral600",
|
|
242
326
|
children: badgeLabel
|
|
243
|
-
}),
|
|
244
|
-
link && /*#__PURE__*/ jsxRuntime.jsx(GuidedTourTooltip, {
|
|
245
|
-
sectionId: sectionId,
|
|
246
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
|
247
|
-
label: link.label,
|
|
248
|
-
variant: "ghost",
|
|
249
|
-
withTooltip: true,
|
|
250
|
-
onClick: link.onClick,
|
|
251
|
-
size: "XS",
|
|
252
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {})
|
|
253
|
-
})
|
|
254
327
|
})
|
|
255
328
|
]
|
|
329
|
+
}),
|
|
330
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
331
|
+
gap: 1,
|
|
332
|
+
children: linkButton
|
|
256
333
|
})
|
|
257
334
|
]
|
|
258
335
|
})
|
|
@@ -400,6 +477,7 @@ const SubNav = {
|
|
|
400
477
|
Sections,
|
|
401
478
|
Section,
|
|
402
479
|
SubSection,
|
|
480
|
+
Folder: SubNavFolder.SubNavFolder,
|
|
403
481
|
PageWrapper
|
|
404
482
|
};
|
|
405
483
|
|