@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.
Files changed (183) hide show
  1. package/dist/admin/admin/src/App.js +1 -1
  2. package/dist/admin/admin/src/App.js.map +1 -1
  3. package/dist/admin/admin/src/App.mjs +1 -1
  4. package/dist/admin/admin/src/App.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/DismissibleBanner.js +60 -0
  6. package/dist/admin/admin/src/components/DismissibleBanner.js.map +1 -0
  7. package/dist/admin/admin/src/components/DismissibleBanner.mjs +58 -0
  8. package/dist/admin/admin/src/components/DismissibleBanner.mjs.map +1 -0
  9. package/dist/admin/admin/src/components/Form.js +11 -2
  10. package/dist/admin/admin/src/components/Form.js.map +1 -1
  11. package/dist/admin/admin/src/components/Form.mjs +11 -2
  12. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/FormInputs/DateTime.js +1 -1
  14. package/dist/admin/admin/src/components/FormInputs/DateTime.js.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/DateTime.mjs +1 -1
  16. package/dist/admin/admin/src/components/FormInputs/DateTime.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Time.js +1 -1
  18. package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Time.mjs +1 -1
  20. package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/LanguageProvider.js +35 -1
  22. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  23. package/dist/admin/admin/src/components/LanguageProvider.mjs +17 -2
  24. package/dist/admin/admin/src/components/LanguageProvider.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/MainNav/NavUser.js +1 -2
  26. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  27. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +1 -2
  28. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/MediaLibraryBanner.js +85 -0
  30. package/dist/admin/admin/src/components/MediaLibraryBanner.js.map +1 -0
  31. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs +83 -0
  32. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs.map +1 -0
  33. package/dist/admin/admin/src/components/Providers.js +6 -6
  34. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  35. package/dist/admin/admin/src/components/Providers.mjs +6 -6
  36. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/SubNav.js +113 -35
  38. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  39. package/dist/admin/admin/src/components/SubNav.mjs +115 -37
  40. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/SubNavFolder.js +188 -0
  42. package/dist/admin/admin/src/components/SubNavFolder.js.map +1 -0
  43. package/dist/admin/admin/src/components/SubNavFolder.mjs +186 -0
  44. package/dist/admin/admin/src/components/SubNavFolder.mjs.map +1 -0
  45. package/dist/admin/admin/src/components/UpsellBanner.js +56 -86
  46. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  47. package/dist/admin/admin/src/components/UpsellBanner.mjs +58 -88
  48. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  49. package/dist/admin/admin/src/core/store/configure.js +14 -2
  50. package/dist/admin/admin/src/core/store/configure.js.map +1 -1
  51. package/dist/admin/admin/src/core/store/configure.mjs +14 -2
  52. package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
  53. package/dist/admin/admin/src/core/store/hooks.mjs +1 -1
  54. package/dist/admin/admin/src/features/Auth.js +162 -46
  55. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  56. package/dist/admin/admin/src/features/Auth.mjs +164 -48
  57. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  58. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  59. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  60. package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.js +19 -0
  61. package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.js.map +1 -0
  62. package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.mjs +17 -0
  63. package/dist/admin/admin/src/hooks/useRegisterUnsavedChanges.mjs.map +1 -0
  64. package/dist/admin/admin/src/hooks/{useIdleSessionLogout.js → useSessionKeepalive.js} +34 -27
  65. package/dist/admin/admin/src/hooks/useSessionKeepalive.js.map +1 -0
  66. package/dist/admin/admin/src/hooks/{useIdleSessionLogout.mjs → useSessionKeepalive.mjs} +34 -27
  67. package/dist/admin/admin/src/hooks/useSessionKeepalive.mjs.map +1 -0
  68. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +2 -0
  69. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  70. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +2 -0
  71. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  72. package/dist/admin/admin/src/pages/SessionsPage.js +2 -5
  73. package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -1
  74. package/dist/admin/admin/src/pages/SessionsPage.mjs +2 -5
  75. package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -1
  76. package/dist/admin/admin/src/render.js +6 -1
  77. package/dist/admin/admin/src/render.js.map +1 -1
  78. package/dist/admin/admin/src/render.mjs +6 -1
  79. package/dist/admin/admin/src/render.mjs.map +1 -1
  80. package/dist/admin/admin/src/translations/en.json.js +16 -0
  81. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  82. package/dist/admin/admin/src/translations/en.json.mjs +16 -0
  83. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  84. package/dist/admin/admin/src/utils/baseQuery.js +3 -13
  85. package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
  86. package/dist/admin/admin/src/utils/baseQuery.mjs +3 -13
  87. package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
  88. package/dist/admin/admin/src/utils/getFetchClient.js +34 -5
  89. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  90. package/dist/admin/admin/src/utils/getFetchClient.mjs +34 -6
  91. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  92. package/dist/admin/admin/src/utils/unsavedChangesRegistry.js +25 -0
  93. package/dist/admin/admin/src/utils/unsavedChangesRegistry.js.map +1 -0
  94. package/dist/admin/admin/src/utils/unsavedChangesRegistry.mjs +22 -0
  95. package/dist/admin/admin/src/utils/unsavedChangesRegistry.mjs.map +1 -0
  96. package/dist/admin/admin/tests/utils.js +14 -14
  97. package/dist/admin/admin/tests/utils.js.map +1 -1
  98. package/dist/admin/admin/tests/utils.mjs +14 -14
  99. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  100. package/dist/admin/ee/admin/src/hooks/useAIAvailability.js +1 -6
  101. package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -1
  102. package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs +1 -6
  103. package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -1
  104. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +7 -1
  105. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  106. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +7 -1
  107. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  108. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +9 -1
  109. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  110. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +9 -1
  111. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  112. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +0 -4
  113. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  114. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +0 -4
  115. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  116. package/dist/admin/index.js +1 -0
  117. package/dist/admin/index.js.map +1 -1
  118. package/dist/admin/index.mjs +1 -1
  119. package/dist/admin/src/components/DismissibleBanner.d.ts +8 -0
  120. package/dist/admin/src/components/MediaLibraryBanner.d.ts +2 -0
  121. package/dist/admin/src/components/SubNav.d.ts +27 -8
  122. package/dist/admin/src/components/SubNavFolder.d.ts +15 -0
  123. package/dist/admin/src/features/Tracking.d.ts +2 -1
  124. package/dist/admin/src/hooks/useRegisterUnsavedChanges.d.ts +6 -0
  125. package/dist/admin/src/hooks/useSessionKeepalive.d.ts +88 -0
  126. package/dist/admin/src/services/admin.d.ts +1 -0
  127. package/dist/admin/src/utils/getFetchClient.d.ts +14 -6
  128. package/dist/admin/src/utils/unsavedChangesRegistry.d.ts +11 -0
  129. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +8 -0
  130. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  131. package/dist/ee/server/src/index.d.ts.map +1 -1
  132. package/dist/server/ee/server/src/controllers/admin.js +1 -5
  133. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  134. package/dist/server/ee/server/src/controllers/admin.mjs +1 -5
  135. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  136. package/dist/server/ee/server/src/index.js +2 -0
  137. package/dist/server/ee/server/src/index.js.map +1 -1
  138. package/dist/server/ee/server/src/index.mjs +2 -0
  139. package/dist/server/ee/server/src/index.mjs.map +1 -1
  140. package/dist/server/server/src/ai/controllers/ai.js +3 -3
  141. package/dist/server/server/src/ai/controllers/ai.js.map +1 -1
  142. package/dist/server/server/src/ai/controllers/ai.mjs +3 -3
  143. package/dist/server/server/src/ai/controllers/ai.mjs.map +1 -1
  144. package/dist/server/server/src/ai/services/ai.js +37 -12
  145. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  146. package/dist/server/server/src/ai/services/ai.mjs +37 -12
  147. package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
  148. package/dist/server/server/src/audit-logs/tokens.js +106 -0
  149. package/dist/server/server/src/audit-logs/tokens.js.map +1 -0
  150. package/dist/server/server/src/audit-logs/tokens.mjs +99 -0
  151. package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -0
  152. package/dist/server/server/src/controllers/admin.js +10 -1
  153. package/dist/server/server/src/controllers/admin.js.map +1 -1
  154. package/dist/server/server/src/controllers/admin.mjs +10 -1
  155. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  156. package/dist/server/server/src/services/api-token.js +106 -4
  157. package/dist/server/server/src/services/api-token.js.map +1 -1
  158. package/dist/server/server/src/services/api-token.mjs +107 -5
  159. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  160. package/dist/server/server/src/services/transfer/token.js +56 -4
  161. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  162. package/dist/server/server/src/services/transfer/token.mjs +57 -5
  163. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  164. package/dist/server/src/ai/services/ai.d.ts +3 -1
  165. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  166. package/dist/server/src/audit-logs/tokens.d.ts +86 -0
  167. package/dist/server/src/audit-logs/tokens.d.ts.map +1 -0
  168. package/dist/server/src/controllers/admin.d.ts +1 -0
  169. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  170. package/dist/server/src/controllers/index.d.ts +1 -0
  171. package/dist/server/src/controllers/index.d.ts.map +1 -1
  172. package/dist/server/src/index.d.ts +1 -0
  173. package/dist/server/src/index.d.ts.map +1 -1
  174. package/dist/server/src/services/api-token.d.ts.map +1 -1
  175. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  176. package/dist/shared/contracts/admin.d.ts +1 -0
  177. package/dist/shared/contracts/admin.d.ts.map +1 -1
  178. package/dist/shared/contracts/shared.d.ts +1 -0
  179. package/dist/shared/contracts/shared.d.ts.map +1 -1
  180. package/package.json +7 -7
  181. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +0 -1
  182. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +0 -1
  183. 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 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) => (\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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"}
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(Auth.AuthProvider, {
44
- children: /*#__PURE__*/ jsxRuntime.jsx(BackButton.HistoryProvider, {
45
- children: /*#__PURE__*/ jsxRuntime.jsx(LanguageProvider.LanguageProvider, {
46
- messages: strapi.configurations.translations,
47
- children: /*#__PURE__*/ jsxRuntime.jsx(Theme.Theme, {
48
- themes: strapi.configurations.themes,
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 <AuthProvider>\n <HistoryProvider>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\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 </Theme>\n </LanguageProvider>\n </HistoryProvider>\n </AuthProvider>\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","AuthProvider","HistoryProvider","LanguageProvider","messages","configurations","translations","Theme","themes","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,iBAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAtB,cAAA,CAACuB,0BAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAvB,cAAA,CAACwB,iCAAAA,EAAAA;4BAAiBC,QAAAA,EAAU3B,MAAAA,CAAO4B,cAAc,CAACC,YAAY;AAC5D,4BAAA,QAAA,gBAAA3B,cAAA,CAAC4B,WAAAA,EAAAA;gCAAMC,MAAAA,EAAQ/B,MAAAA,CAAO4B,cAAc,CAACG,MAAM;AACzC,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,CAAO4B,cAAc,CAACS,QAAQ;gDAC/CC,eAAAA,EAAiBtC,MAAAA,CAAO4B,cAAc,CAACW,QAAQ;AAC/CC,gDAAAA,uBAAAA,EAAyBxC,MAAAA,CAAO4B,cAAc,CAACa,aAAa,CAACC,QAAQ;AAEpE3C,gDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;;;;"}
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(AuthProvider, {
42
- children: /*#__PURE__*/ jsx(HistoryProvider, {
43
- children: /*#__PURE__*/ jsx(LanguageProvider, {
44
- messages: strapi.configurations.translations,
45
- children: /*#__PURE__*/ jsx(Theme, {
46
- themes: strapi.configurations.themes,
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 <AuthProvider>\n <HistoryProvider>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\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 </Theme>\n </LanguageProvider>\n </HistoryProvider>\n </AuthProvider>\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","AuthProvider","HistoryProvider","LanguageProvider","messages","configurations","translations","Theme","themes","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,YAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAtB,GAAA,CAACuB,eAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAvB,GAAA,CAACwB,gBAAAA,EAAAA;4BAAiBC,QAAAA,EAAU3B,MAAAA,CAAO4B,cAAc,CAACC,YAAY;AAC5D,4BAAA,QAAA,gBAAA3B,GAAA,CAAC4B,KAAAA,EAAAA;gCAAMC,MAAAA,EAAQ/B,MAAAA,CAAO4B,cAAc,CAACG,MAAM;AACzC,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,CAAO4B,cAAc,CAACS,QAAQ;gDAC/CC,eAAAA,EAAiBtC,MAAAA,CAAO4B,cAAc,CAACW,QAAQ;AAC/CC,gDAAAA,uBAAAA,EAAyBxC,MAAAA,CAAO4B,cAAc,CAACa,aAAa,CAACC,QAAQ;AAEpE3C,gDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;;;;"}
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.jsx(designSystem.Typography, {
103
- tag: "div",
104
- lineHeight: "32px",
105
- width: {
106
- initial: '80dvw',
107
- medium: '100%'
108
- },
109
- overflow: "hidden",
110
- style: {
111
- textOverflow: 'ellipsis',
112
- whiteSpace: 'nowrap'
113
- },
114
- children: label
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.jsx(designSystem.Flex, {
228
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
229
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
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