@strapi/admin 5.12.7 → 5.13.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/admin/admin/src/components/SubNav.js +269 -0
  2. package/dist/admin/admin/src/components/SubNav.js.map +1 -0
  3. package/dist/admin/admin/src/components/SubNav.mjs +267 -0
  4. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -0
  5. package/dist/admin/admin/src/features/Auth.js +8 -2
  6. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  7. package/dist/admin/admin/src/features/Auth.mjs +8 -2
  8. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  9. package/dist/admin/admin/src/hooks/useQueryParams.js +7 -1
  10. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  11. package/dist/admin/admin/src/hooks/useQueryParams.mjs +8 -2
  12. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  13. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +30 -29
  14. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  15. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +33 -32
  16. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  17. package/dist/admin/index.js +2 -0
  18. package/dist/admin/index.js.map +1 -1
  19. package/dist/admin/index.mjs +1 -0
  20. package/dist/admin/index.mjs.map +1 -1
  21. package/dist/admin/src/components/SubNav.d.ts +33 -0
  22. package/dist/admin/src/index.d.ts +1 -0
  23. package/dist/server/server/src/controllers/homepage.js +58 -0
  24. package/dist/server/server/src/controllers/homepage.js.map +1 -0
  25. package/dist/server/server/src/controllers/homepage.mjs +37 -0
  26. package/dist/server/server/src/controllers/homepage.mjs.map +1 -0
  27. package/dist/server/server/src/routes/homepage.js +22 -0
  28. package/dist/server/server/src/routes/homepage.js.map +1 -0
  29. package/dist/server/server/src/routes/homepage.mjs +20 -0
  30. package/dist/server/server/src/routes/homepage.mjs.map +1 -0
  31. package/dist/server/server/src/services/homepage.js +159 -0
  32. package/dist/server/server/src/services/homepage.js.map +1 -0
  33. package/dist/server/server/src/services/homepage.mjs +157 -0
  34. package/dist/server/server/src/services/homepage.mjs.map +1 -0
  35. package/dist/server/src/controllers/homepage.d.ts +8 -0
  36. package/dist/server/src/controllers/homepage.d.ts.map +1 -0
  37. package/dist/server/src/routes/homepage.d.ts +14 -0
  38. package/dist/server/src/routes/homepage.d.ts.map +1 -0
  39. package/dist/server/src/services/homepage.d.ts +14 -0
  40. package/dist/server/src/services/homepage.d.ts.map +1 -0
  41. package/dist/server/src/validation/project-settings.d.ts +4 -4
  42. package/package.json +8 -8
@@ -0,0 +1,269 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var designSystem = require('@strapi/design-system');
6
+ var icons = require('@strapi/icons');
7
+ var reactRouterDom = require('react-router-dom');
8
+ var styledComponents = require('styled-components');
9
+
10
+ const Main = styledComponents.styled(designSystem.SubNav)`
11
+ background-color: ${({ theme })=>theme.colors.neutral0};
12
+ border-right: 1px solid ${({ theme })=>theme.colors.neutral150};
13
+
14
+ scrollbar-width: none;
15
+ -ms-overflow-style: none;
16
+
17
+ &::-webkit-scrollbar {
18
+ display: none;
19
+ }
20
+ `;
21
+ const StyledLink = styledComponents.styled(reactRouterDom.NavLink)`
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: space-between;
25
+ text-decoration: none;
26
+ height: 32px;
27
+
28
+ color: ${({ theme })=>theme.colors.neutral800};
29
+
30
+ &.active > div {
31
+ ${({ theme })=>{
32
+ return `
33
+ background-color: ${theme.colors.primary100};
34
+ color: ${theme.colors.primary700};
35
+ font-weight: 500;
36
+ `;
37
+ }}
38
+ }
39
+
40
+ &:hover.active > div {
41
+ ${({ theme })=>{
42
+ return `
43
+ background-color: ${theme.colors.primary100};
44
+ `;
45
+ }}
46
+ }
47
+
48
+ &:hover > div {
49
+ ${({ theme })=>{
50
+ return `
51
+ background-color: ${theme.colors.neutral100};
52
+ `;
53
+ }}
54
+ }
55
+
56
+ &:focus-visible {
57
+ outline-offset: -2px;
58
+ }
59
+ `;
60
+ const Link = (props)=>{
61
+ const { label, endAction, ...rest } = props;
62
+ return /*#__PURE__*/ jsxRuntime.jsx(StyledLink, {
63
+ ...rest,
64
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
65
+ width: '100%',
66
+ paddingLeft: 3,
67
+ paddingRight: 3,
68
+ borderRadius: 1,
69
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
70
+ justifyContent: "space-between",
71
+ width: "100%",
72
+ gap: 1,
73
+ children: [
74
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
75
+ tag: "div",
76
+ lineHeight: "32px",
77
+ width: "100%",
78
+ overflow: "hidden",
79
+ style: {
80
+ textOverflow: 'ellipsis',
81
+ whiteSpace: 'nowrap'
82
+ },
83
+ children: label
84
+ }),
85
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
86
+ gap: 2,
87
+ children: endAction
88
+ })
89
+ ]
90
+ })
91
+ })
92
+ });
93
+ };
94
+ const StyledHeader = styledComponents.styled(designSystem.Box)`
95
+ height: 56px;
96
+ display: flex;
97
+ align-items: center;
98
+ padding-left: ${({ theme })=>theme.spaces[5]};
99
+ `;
100
+ const Header = ({ label })=>{
101
+ return /*#__PURE__*/ jsxRuntime.jsx(StyledHeader, {
102
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
103
+ variant: "beta",
104
+ tag: "h2",
105
+ children: label
106
+ })
107
+ });
108
+ };
109
+ const Sections = ({ children, ...props })=>{
110
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
111
+ paddingBottom: 4,
112
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
113
+ tag: "ol",
114
+ gap: "5",
115
+ direction: "column",
116
+ alignItems: "stretch",
117
+ ...props,
118
+ children: children.map((child, index)=>{
119
+ return /*#__PURE__*/ jsxRuntime.jsx("li", {
120
+ children: child
121
+ }, index);
122
+ })
123
+ })
124
+ });
125
+ };
126
+ const Section = ({ label, children, link })=>{
127
+ const listId = React.useId();
128
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
129
+ direction: "column",
130
+ alignItems: "stretch",
131
+ gap: 2,
132
+ children: [
133
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
134
+ paddingLeft: 5,
135
+ paddingRight: 5,
136
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
137
+ position: "relative",
138
+ justifyContent: "space-between",
139
+ children: [
140
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
141
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
142
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
143
+ variant: "sigma",
144
+ textColor: "neutral600",
145
+ children: label
146
+ })
147
+ })
148
+ }),
149
+ link && /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
150
+ label: link.label,
151
+ variant: "ghost",
152
+ withTooltip: true,
153
+ onClick: link.onClik,
154
+ size: "XS",
155
+ children: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {})
156
+ })
157
+ ]
158
+ })
159
+ }),
160
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
161
+ tag: "ol",
162
+ id: listId,
163
+ direction: "column",
164
+ gap: "2px",
165
+ alignItems: 'stretch',
166
+ marginLeft: 2,
167
+ marginRight: 2,
168
+ children: children.map((child, index)=>{
169
+ return /*#__PURE__*/ jsxRuntime.jsx("li", {
170
+ children: child
171
+ }, index);
172
+ })
173
+ })
174
+ ]
175
+ });
176
+ };
177
+ const SubSectionHeader = styledComponents.styled.button`
178
+ cursor: pointer;
179
+ width: 100%;
180
+ border: none;
181
+ padding: 0;
182
+ background: transparent;
183
+ display: flex;
184
+ align-items: center;
185
+
186
+ height: 32px;
187
+
188
+ border-radius: ${({ theme })=>theme.borderRadius};
189
+
190
+ padding-left: ${({ theme })=>theme.spaces[3]};
191
+ padding-right: ${({ theme })=>theme.spaces[3]};
192
+ padding-top: ${({ theme })=>theme.spaces[2]};
193
+ padding-bottom: ${({ theme })=>theme.spaces[2]};
194
+
195
+ &:hover {
196
+ background-color: ${({ theme })=>theme.colors.neutral100};
197
+ }
198
+ `;
199
+ const SubSectionLinkWrapper = styledComponents.styled.li`
200
+ ${StyledLink} > div {
201
+ padding-left: 36px;
202
+ }
203
+ `;
204
+ const SubSection = ({ label, children })=>{
205
+ const [isOpen, setOpenLinks] = React.useState(true);
206
+ const listId = React.useId();
207
+ const handleClick = ()=>{
208
+ setOpenLinks((prev)=>!prev);
209
+ };
210
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
211
+ children: [
212
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
213
+ justifyContent: "space-between",
214
+ children: /*#__PURE__*/ jsxRuntime.jsxs(SubSectionHeader, {
215
+ onClick: handleClick,
216
+ "aria-expanded": isOpen,
217
+ "aria-controls": listId,
218
+ children: [
219
+ /*#__PURE__*/ jsxRuntime.jsx(icons.ChevronDown, {
220
+ "aria-hidden": true,
221
+ fill: "neutral500",
222
+ style: {
223
+ transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,
224
+ transition: 'transform 0.5s'
225
+ }
226
+ }),
227
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
228
+ paddingLeft: 2,
229
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
230
+ tag: "span",
231
+ fontWeight: "semiBold",
232
+ textColor: "neutral800",
233
+ children: label
234
+ })
235
+ })
236
+ ]
237
+ })
238
+ }),
239
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
240
+ tag: "ul",
241
+ id: listId,
242
+ direction: "column",
243
+ gap: "2px",
244
+ alignItems: 'stretch',
245
+ style: {
246
+ maxHeight: isOpen ? '1000px' : 0,
247
+ overflow: 'hidden',
248
+ transition: isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'
249
+ },
250
+ children: children.map((child, index)=>{
251
+ return /*#__PURE__*/ jsxRuntime.jsx(SubSectionLinkWrapper, {
252
+ children: child
253
+ }, index);
254
+ })
255
+ })
256
+ ]
257
+ });
258
+ };
259
+ const SubNav = {
260
+ Main,
261
+ Header,
262
+ Link,
263
+ Sections,
264
+ Section,
265
+ SubSection
266
+ };
267
+
268
+ exports.SubNav = SubNav;
269
+ //# sourceMappingURL=SubNav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useId, useState } from 'react';\n\nimport { Box, SubNav as DSSubNav, Flex, Typography, IconButton } from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nconst Main = styled(DSSubNav)`\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n }\n) => {\n const { label, endAction, ...rest } = props;\n return (\n <StyledLink {...rest}>\n <Box width={'100%'} paddingLeft={3} paddingRight={3} borderRadius={1}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={1}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Box)`\n height: 56px;\n display: flex;\n align-items: center;\n padding-left: ${({ theme }) => theme.spaces[5]};\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({ children, ...props }: { children: React.ReactNode[]; [key: string]: any }) => {\n return (\n <Box paddingBottom={4}>\n <Flex tag=\"ol\" gap=\"5\" direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\nconst Section = ({\n label,\n children,\n link,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClik: () => void };\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingLeft={5} paddingRight={5}>\n <Flex position=\"relative\" justifyContent=\"space-between\">\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n {link && (\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClik}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n )}\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n marginLeft={2}\n marginRight={2}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n\n height: 32px;\n\n border-radius: ${({ theme }) => theme.borderRadius};\n\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const listId = useId();\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n {\n <Flex\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? '1000px' : 0,\n overflow: 'hidden',\n transition: isOpen\n ? 'max-height 1s ease-in-out'\n : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n }\n </Box>\n );\n};\n\nexport const SubNav = {\n Main,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n};\n"],"names":["Main","styled","DSSubNav","theme","colors","neutral0","neutral150","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","props","label","endAction","rest","_jsx","Box","width","paddingLeft","paddingRight","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","spaces","Header","variant","Sections","children","paddingBottom","direction","alignItems","map","child","index","li","Section","link","listId","useId","position","textColor","IconButton","withTooltip","onClick","onClik","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","handleClick","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","maxHeight","SubNav"],"mappings":"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"}
@@ -0,0 +1,267 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useId, useState } from 'react';
3
+ import { SubNav as SubNav$1, Box, Flex, Typography, IconButton } from '@strapi/design-system';
4
+ import { Plus, ChevronDown } from '@strapi/icons';
5
+ import { NavLink } from 'react-router-dom';
6
+ import { styled } from 'styled-components';
7
+
8
+ const Main = styled(SubNav$1)`
9
+ background-color: ${({ theme })=>theme.colors.neutral0};
10
+ border-right: 1px solid ${({ theme })=>theme.colors.neutral150};
11
+
12
+ scrollbar-width: none;
13
+ -ms-overflow-style: none;
14
+
15
+ &::-webkit-scrollbar {
16
+ display: none;
17
+ }
18
+ `;
19
+ const StyledLink = styled(NavLink)`
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: space-between;
23
+ text-decoration: none;
24
+ height: 32px;
25
+
26
+ color: ${({ theme })=>theme.colors.neutral800};
27
+
28
+ &.active > div {
29
+ ${({ theme })=>{
30
+ return `
31
+ background-color: ${theme.colors.primary100};
32
+ color: ${theme.colors.primary700};
33
+ font-weight: 500;
34
+ `;
35
+ }}
36
+ }
37
+
38
+ &:hover.active > div {
39
+ ${({ theme })=>{
40
+ return `
41
+ background-color: ${theme.colors.primary100};
42
+ `;
43
+ }}
44
+ }
45
+
46
+ &:hover > div {
47
+ ${({ theme })=>{
48
+ return `
49
+ background-color: ${theme.colors.neutral100};
50
+ `;
51
+ }}
52
+ }
53
+
54
+ &:focus-visible {
55
+ outline-offset: -2px;
56
+ }
57
+ `;
58
+ const Link = (props)=>{
59
+ const { label, endAction, ...rest } = props;
60
+ return /*#__PURE__*/ jsx(StyledLink, {
61
+ ...rest,
62
+ children: /*#__PURE__*/ jsx(Box, {
63
+ width: '100%',
64
+ paddingLeft: 3,
65
+ paddingRight: 3,
66
+ borderRadius: 1,
67
+ children: /*#__PURE__*/ jsxs(Flex, {
68
+ justifyContent: "space-between",
69
+ width: "100%",
70
+ gap: 1,
71
+ children: [
72
+ /*#__PURE__*/ jsx(Typography, {
73
+ tag: "div",
74
+ lineHeight: "32px",
75
+ width: "100%",
76
+ overflow: "hidden",
77
+ style: {
78
+ textOverflow: 'ellipsis',
79
+ whiteSpace: 'nowrap'
80
+ },
81
+ children: label
82
+ }),
83
+ /*#__PURE__*/ jsx(Flex, {
84
+ gap: 2,
85
+ children: endAction
86
+ })
87
+ ]
88
+ })
89
+ })
90
+ });
91
+ };
92
+ const StyledHeader = styled(Box)`
93
+ height: 56px;
94
+ display: flex;
95
+ align-items: center;
96
+ padding-left: ${({ theme })=>theme.spaces[5]};
97
+ `;
98
+ const Header = ({ label })=>{
99
+ return /*#__PURE__*/ jsx(StyledHeader, {
100
+ children: /*#__PURE__*/ jsx(Typography, {
101
+ variant: "beta",
102
+ tag: "h2",
103
+ children: label
104
+ })
105
+ });
106
+ };
107
+ const Sections = ({ children, ...props })=>{
108
+ return /*#__PURE__*/ jsx(Box, {
109
+ paddingBottom: 4,
110
+ children: /*#__PURE__*/ jsx(Flex, {
111
+ tag: "ol",
112
+ gap: "5",
113
+ direction: "column",
114
+ alignItems: "stretch",
115
+ ...props,
116
+ children: children.map((child, index)=>{
117
+ return /*#__PURE__*/ jsx("li", {
118
+ children: child
119
+ }, index);
120
+ })
121
+ })
122
+ });
123
+ };
124
+ const Section = ({ label, children, link })=>{
125
+ const listId = useId();
126
+ return /*#__PURE__*/ jsxs(Flex, {
127
+ direction: "column",
128
+ alignItems: "stretch",
129
+ gap: 2,
130
+ children: [
131
+ /*#__PURE__*/ jsx(Box, {
132
+ paddingLeft: 5,
133
+ paddingRight: 5,
134
+ children: /*#__PURE__*/ jsxs(Flex, {
135
+ position: "relative",
136
+ justifyContent: "space-between",
137
+ children: [
138
+ /*#__PURE__*/ jsx(Flex, {
139
+ children: /*#__PURE__*/ jsx(Box, {
140
+ children: /*#__PURE__*/ jsx(Typography, {
141
+ variant: "sigma",
142
+ textColor: "neutral600",
143
+ children: label
144
+ })
145
+ })
146
+ }),
147
+ link && /*#__PURE__*/ jsx(IconButton, {
148
+ label: link.label,
149
+ variant: "ghost",
150
+ withTooltip: true,
151
+ onClick: link.onClik,
152
+ size: "XS",
153
+ children: /*#__PURE__*/ jsx(Plus, {})
154
+ })
155
+ ]
156
+ })
157
+ }),
158
+ /*#__PURE__*/ jsx(Flex, {
159
+ tag: "ol",
160
+ id: listId,
161
+ direction: "column",
162
+ gap: "2px",
163
+ alignItems: 'stretch',
164
+ marginLeft: 2,
165
+ marginRight: 2,
166
+ children: children.map((child, index)=>{
167
+ return /*#__PURE__*/ jsx("li", {
168
+ children: child
169
+ }, index);
170
+ })
171
+ })
172
+ ]
173
+ });
174
+ };
175
+ const SubSectionHeader = styled.button`
176
+ cursor: pointer;
177
+ width: 100%;
178
+ border: none;
179
+ padding: 0;
180
+ background: transparent;
181
+ display: flex;
182
+ align-items: center;
183
+
184
+ height: 32px;
185
+
186
+ border-radius: ${({ theme })=>theme.borderRadius};
187
+
188
+ padding-left: ${({ theme })=>theme.spaces[3]};
189
+ padding-right: ${({ theme })=>theme.spaces[3]};
190
+ padding-top: ${({ theme })=>theme.spaces[2]};
191
+ padding-bottom: ${({ theme })=>theme.spaces[2]};
192
+
193
+ &:hover {
194
+ background-color: ${({ theme })=>theme.colors.neutral100};
195
+ }
196
+ `;
197
+ const SubSectionLinkWrapper = styled.li`
198
+ ${StyledLink} > div {
199
+ padding-left: 36px;
200
+ }
201
+ `;
202
+ const SubSection = ({ label, children })=>{
203
+ const [isOpen, setOpenLinks] = useState(true);
204
+ const listId = useId();
205
+ const handleClick = ()=>{
206
+ setOpenLinks((prev)=>!prev);
207
+ };
208
+ return /*#__PURE__*/ jsxs(Box, {
209
+ children: [
210
+ /*#__PURE__*/ jsx(Flex, {
211
+ justifyContent: "space-between",
212
+ children: /*#__PURE__*/ jsxs(SubSectionHeader, {
213
+ onClick: handleClick,
214
+ "aria-expanded": isOpen,
215
+ "aria-controls": listId,
216
+ children: [
217
+ /*#__PURE__*/ jsx(ChevronDown, {
218
+ "aria-hidden": true,
219
+ fill: "neutral500",
220
+ style: {
221
+ transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,
222
+ transition: 'transform 0.5s'
223
+ }
224
+ }),
225
+ /*#__PURE__*/ jsx(Box, {
226
+ paddingLeft: 2,
227
+ children: /*#__PURE__*/ jsx(Typography, {
228
+ tag: "span",
229
+ fontWeight: "semiBold",
230
+ textColor: "neutral800",
231
+ children: label
232
+ })
233
+ })
234
+ ]
235
+ })
236
+ }),
237
+ /*#__PURE__*/ jsx(Flex, {
238
+ tag: "ul",
239
+ id: listId,
240
+ direction: "column",
241
+ gap: "2px",
242
+ alignItems: 'stretch',
243
+ style: {
244
+ maxHeight: isOpen ? '1000px' : 0,
245
+ overflow: 'hidden',
246
+ transition: isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'
247
+ },
248
+ children: children.map((child, index)=>{
249
+ return /*#__PURE__*/ jsx(SubSectionLinkWrapper, {
250
+ children: child
251
+ }, index);
252
+ })
253
+ })
254
+ ]
255
+ });
256
+ };
257
+ const SubNav = {
258
+ Main,
259
+ Header,
260
+ Link,
261
+ Sections,
262
+ Section,
263
+ SubSection
264
+ };
265
+
266
+ export { SubNav };
267
+ //# sourceMappingURL=SubNav.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubNav.mjs","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useId, useState } from 'react';\n\nimport { Box, SubNav as DSSubNav, Flex, Typography, IconButton } from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nconst Main = styled(DSSubNav)`\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n }\n) => {\n const { label, endAction, ...rest } = props;\n return (\n <StyledLink {...rest}>\n <Box width={'100%'} paddingLeft={3} paddingRight={3} borderRadius={1}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={1}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Box)`\n height: 56px;\n display: flex;\n align-items: center;\n padding-left: ${({ theme }) => theme.spaces[5]};\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({ children, ...props }: { children: React.ReactNode[]; [key: string]: any }) => {\n return (\n <Box paddingBottom={4}>\n <Flex tag=\"ol\" gap=\"5\" direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\nconst Section = ({\n label,\n children,\n link,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClik: () => void };\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box paddingLeft={5} paddingRight={5}>\n <Flex position=\"relative\" justifyContent=\"space-between\">\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n {link && (\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClik}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n )}\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n marginLeft={2}\n marginRight={2}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n\n height: 32px;\n\n border-radius: ${({ theme }) => theme.borderRadius};\n\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const listId = useId();\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n {\n <Flex\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? '1000px' : 0,\n overflow: 'hidden',\n transition: isOpen\n ? 'max-height 1s ease-in-out'\n : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n }\n </Box>\n );\n};\n\nexport const SubNav = {\n Main,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n};\n"],"names":["Main","styled","DSSubNav","theme","colors","neutral0","neutral150","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","props","label","endAction","rest","_jsx","Box","width","paddingLeft","paddingRight","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","spaces","Header","variant","Sections","children","paddingBottom","direction","alignItems","map","child","index","li","Section","link","listId","useId","position","textColor","IconButton","withTooltip","onClick","onClik","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","handleClick","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","maxHeight","SubNav"],"mappings":"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"}
@@ -40,6 +40,13 @@ const AuthProvider = ({ children, _defaultPermissions = [], _disableRenewToken =
40
40
  const runRbacMiddleware = StrapiApp.useStrapiApp('AuthProvider', (state)=>state.rbac.run);
41
41
  const location = reactRouterDom.useLocation();
42
42
  const [{ rawQuery }] = useQueryParams.useQueryParams();
43
+ const locationRef = React__namespace.useRef(location);
44
+ // Update ref without causing re-render
45
+ React__namespace.useEffect(()=>{
46
+ locationRef.current = location;
47
+ }, [
48
+ location
49
+ ]);
43
50
  const token = hooks.useTypedSelector((state)=>state.admin_app.token ?? null);
44
51
  const { data: user, isLoading: isLoadingUser } = auth.useGetMeQuery(undefined, {
45
52
  /**
@@ -174,7 +181,7 @@ const AuthProvider = ({ children, _defaultPermissions = [], _disableRenewToken =
174
181
  const middlewaredPermissions = await runRbacMiddleware({
175
182
  user,
176
183
  permissions: userPermissions,
177
- pathname: location.pathname,
184
+ pathname: locationRef.current.pathname,
178
185
  search: (rawQueryContext || rawQuery).split('?')[1] ?? ''
179
186
  }, matchingPermissions);
180
187
  const shouldCheckConditions = middlewaredPermissions.some((perm)=>Array.isArray(perm.conditions) && perm.conditions.length > 0);
@@ -194,7 +201,6 @@ const AuthProvider = ({ children, _defaultPermissions = [], _disableRenewToken =
194
201
  }
195
202
  }, [
196
203
  checkPermissions,
197
- location.pathname,
198
204
  rawQuery,
199
205
  runRbacMiddleware,
200
206
  user,