@strapi/admin 5.13.0-beta.0 → 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 (47) 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/features/Tracking.js.map +1 -1
  10. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  11. package/dist/admin/admin/src/hooks/useQueryParams.js +7 -1
  12. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  13. package/dist/admin/admin/src/hooks/useQueryParams.mjs +8 -2
  14. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  15. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  16. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  17. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +30 -29
  18. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  19. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +33 -32
  20. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  21. package/dist/admin/index.js +2 -0
  22. package/dist/admin/index.js.map +1 -1
  23. package/dist/admin/index.mjs +1 -0
  24. package/dist/admin/index.mjs.map +1 -1
  25. package/dist/admin/src/components/SubNav.d.ts +33 -0
  26. package/dist/admin/src/features/Tracking.d.ts +0 -2
  27. package/dist/admin/src/index.d.ts +1 -0
  28. package/dist/server/server/src/controllers/homepage.js +58 -0
  29. package/dist/server/server/src/controllers/homepage.js.map +1 -0
  30. package/dist/server/server/src/controllers/homepage.mjs +37 -0
  31. package/dist/server/server/src/controllers/homepage.mjs.map +1 -0
  32. package/dist/server/server/src/routes/homepage.js +22 -0
  33. package/dist/server/server/src/routes/homepage.js.map +1 -0
  34. package/dist/server/server/src/routes/homepage.mjs +20 -0
  35. package/dist/server/server/src/routes/homepage.mjs.map +1 -0
  36. package/dist/server/server/src/services/homepage.js +159 -0
  37. package/dist/server/server/src/services/homepage.js.map +1 -0
  38. package/dist/server/server/src/services/homepage.mjs +157 -0
  39. package/dist/server/server/src/services/homepage.mjs.map +1 -0
  40. package/dist/server/src/controllers/homepage.d.ts +8 -0
  41. package/dist/server/src/controllers/homepage.d.ts.map +1 -0
  42. package/dist/server/src/routes/homepage.d.ts +14 -0
  43. package/dist/server/src/routes/homepage.d.ts.map +1 -0
  44. package/dist/server/src/services/homepage.d.ts +14 -0
  45. package/dist/server/src/services/homepage.d.ts.map +1 -0
  46. package/dist/server/src/validation/project-settings.d.ts +4 -4
  47. package/package.json +8 -8
@@ -6,22 +6,13 @@ var icons = require('@strapi/icons');
6
6
  var reactIntl = require('react-intl');
7
7
  var reactRouterDom = require('react-router-dom');
8
8
  var styledComponents = require('styled-components');
9
+ var SubNav = require('../../../components/SubNav.js');
9
10
  var Tracking = require('../../../features/Tracking.js');
10
11
 
11
- const CustomIcon = styledComponents.styled(icons.Lightning)`
12
- right: 15px;
13
- position: absolute;
14
- bottom: 50%;
15
- transform: translateY(50%);
16
-
17
- path {
18
- fill: ${({ theme })=>theme.colors.warning500};
19
- }
20
- `;
21
- const Link = styledComponents.styled(designSystem.SubNavLink)`
22
- &.active ${CustomIcon} {
23
- right: 13px;
24
- }
12
+ const StyledBadge = styledComponents.styled(designSystem.Badge)`
13
+ border-radius: 50%;
14
+ padding: ${({ theme })=>theme.spaces[2]};
15
+ height: 2rem;
25
16
  `;
26
17
  const SettingsNav = ({ menu })=>{
27
18
  const { formatMessage } = reactIntl.useIntl();
@@ -51,29 +42,39 @@ const SettingsNav = ({ menu })=>{
51
42
  to: destination
52
43
  });
53
44
  };
54
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.SubNav, {
45
+ return /*#__PURE__*/ jsxRuntime.jsxs(SubNav.SubNav.Main, {
55
46
  "aria-label": label,
56
47
  children: [
57
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.SubNavHeader, {
48
+ /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Header, {
58
49
  label: label
59
50
  }),
60
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.SubNavSections, {
61
- children: sections.map((section)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SubNavSection, {
51
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {
52
+ background: "neutral150",
53
+ marginBottom: 5
54
+ }),
55
+ /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Sections, {
56
+ children: sections.map((section)=>/*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Section, {
62
57
  label: formatMessage(section.intlLabel),
63
58
  children: section.links.map((link)=>{
64
- return /*#__PURE__*/ jsxRuntime.jsxs(Link, {
65
- tag: reactRouterDom.NavLink,
66
- withBullet: link.hasNotification,
59
+ return /*#__PURE__*/ jsxRuntime.jsx(SubNav.SubNav.Link, {
67
60
  to: link.to,
68
61
  onClick: handleClickOnLink(link.to),
69
- position: "relative",
70
- children: [
71
- formatMessage(link.intlLabel),
72
- link?.licenseOnly && /*#__PURE__*/ jsxRuntime.jsx(CustomIcon, {
73
- width: "1.5rem",
74
- height: "1.5rem"
75
- })
76
- ]
62
+ label: formatMessage(link.intlLabel),
63
+ endAction: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
64
+ children: [
65
+ link?.licenseOnly && /*#__PURE__*/ jsxRuntime.jsx(icons.Lightning, {
66
+ fill: "warning500",
67
+ width: "1.5rem",
68
+ height: "1.5rem"
69
+ }),
70
+ link?.hasNotification && /*#__PURE__*/ jsxRuntime.jsx(StyledBadge, {
71
+ "aria-label": "Notification",
72
+ backgroundColor: "primary600",
73
+ textColor: "neutral0",
74
+ children: "1"
75
+ })
76
+ ]
77
+ })
77
78
  }, link.id);
78
79
  })
79
80
  }, section.id))
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import {\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\nconst CustomIcon = styled(Lightning)`\n right: 15px;\n position: absolute;\n bottom: 50%;\n transform: translateY(50%);\n\n path {\n fill: ${({ theme }) => theme.colors.warning500};\n }\n`;\n\nconst Link = styled(SubNavLink)`\n &.active ${CustomIcon} {\n right: 13px;\n }\n`;\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader label={label} />\n <SubNavSections>\n {sections.map((section) => (\n <SubNavSection key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <Link\n tag={NavLink}\n withBullet={link.hasNotification}\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n position=\"relative\"\n >\n {formatMessage(link.intlLabel)}\n {link?.licenseOnly && <CustomIcon width=\"1.5rem\" height=\"1.5rem\" />}\n </Link>\n );\n })}\n </SubNavSection>\n ))}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n"],"names":["CustomIcon","styled","Lightning","theme","colors","warning500","Link","SubNavLink","SettingsNav","menu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","filteredMenu","filter","section","links","every","link","isDisplayed","sections","map","title","intlLabel","name","id","label","defaultMessage","handleClickOnLink","destination","from","to","_jsxs","SubNav","aria-label","_jsx","SubNavHeader","SubNavSections","SubNavSection","tag","NavLink","withBullet","hasNotification","onClick","position","licenseOnly","width","height"],"mappings":";;;;;;;;;;AAeA,MAAMA,UAAAA,GAAaC,uBAAOC,CAAAA,eAAAA,CAAU;;;;;;;UAO1B,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEnD,CAAC;AAED,MAAMC,IAAAA,GAAOL,uBAAOM,CAAAA,uBAAAA,CAAW;AACpB,WAAA,EAAEP,UAAW,CAAA;;;AAGxB,CAAC;AAMD,MAAMQ,WAAc,GAAA,CAAC,EAAEC,IAAI,EAAoB,GAAA;IAC7C,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,QAAQ,EAAE,GAAGC,0BAAAA,EAAAA;AAErB,IAAA,MAAMC,eAAeP,IAAKQ,CAAAA,MAAM,CAC9B,CAACC,UAAY,CAACA,OAAAA,CAAQC,KAAK,CAACC,KAAK,CAAC,CAACC,IAASA,GAAAA,IAAAA,CAAKC,WAAW,KAAK,KAAA,CAAA,CAAA;AAGnE,IAAA,MAAMC,QAAWP,GAAAA,YAAAA,CAAaQ,GAAG,CAAC,CAACN,OAAAA,GAAAA;QACjC,OAAO;AACL,YAAA,GAAGA,OAAO;AACVO,YAAAA,KAAAA,EAAOP,QAAQQ,SAAS;AACxBP,YAAAA,KAAAA,EAAOD,OAAQC,CAAAA,KAAK,CAACK,GAAG,CAAC,CAACH,IAAAA,GAAAA;gBACxB,OAAO;AACL,oBAAA,GAAGA,IAAI;AACPI,oBAAAA,KAAAA,EAAOJ,KAAKK,SAAS;AACrBC,oBAAAA,IAAAA,EAAMN,KAAKO;AACb,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAMC,QAAQnB,aAAc,CAAA;QAC1BkB,EAAI,EAAA,iBAAA;QACJE,cAAgB,EAAA;AAClB,KAAA,CAAA;IAEA,MAAMC,iBAAAA,GAAoB,CAACC,WAAwB,GAAA,IAAA;AACjDpB,YAAAA,UAAAA,CAAW,cAAgB,EAAA;gBAAEqB,IAAMnB,EAAAA,QAAAA;gBAAUoB,EAAIF,EAAAA;AAAY,aAAA,CAAA;AAC/D,SAAA;AAEA,IAAA,qBACEG,eAACC,CAAAA,mBAAAA,EAAAA;QAAOC,YAAYR,EAAAA,KAAAA;;0BAClBS,cAACC,CAAAA,yBAAAA,EAAAA;gBAAaV,KAAOA,EAAAA;;0BACrBS,cAACE,CAAAA,2BAAAA,EAAAA;AACEjB,gBAAAA,QAAAA,EAAAA,QAAAA,CAASC,GAAG,CAAC,CAACN,OAAAA,iBACboB,cAACG,CAAAA,0BAAAA,EAAAA;wBAA+BZ,KAAOnB,EAAAA,aAAAA,CAAcQ,QAAQQ,SAAS,CAAA;AACnER,wBAAAA,QAAAA,EAAAA,OAAAA,CAAQC,KAAK,CAACK,GAAG,CAAC,CAACH,IAAAA,GAAAA;AAClB,4BAAA,qBACEc,eAAC7B,CAAAA,IAAAA,EAAAA;gCACCoC,GAAKC,EAAAA,sBAAAA;AACLC,gCAAAA,UAAAA,EAAYvB,KAAKwB,eAAe;AAChCX,gCAAAA,EAAAA,EAAIb,KAAKa,EAAE;gCACXY,OAASf,EAAAA,iBAAAA,CAAkBV,KAAKa,EAAE,CAAA;gCAElCa,QAAS,EAAA,UAAA;;AAERrC,oCAAAA,aAAAA,CAAcW,KAAKK,SAAS,CAAA;AAC5BL,oCAAAA,IAAAA,EAAM2B,6BAAeV,cAACtC,CAAAA,UAAAA,EAAAA;wCAAWiD,KAAM,EAAA,QAAA;wCAASC,MAAO,EAAA;;;AAJnD7B,6BAAAA,EAAAA,IAAAA,CAAKO,EAAE,CAAA;AAOlB,yBAAA;AAfkBV,qBAAAA,EAAAA,OAAAA,CAAQU,EAAE,CAAA;;;;AAqBxC;;;;"}
1
+ {"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" marginBottom={5} />\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning fill=\"warning500\" width=\"1.5rem\" height=\"1.5rem\" />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n />\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","menu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","filteredMenu","filter","section","links","every","link","isDisplayed","sections","map","title","intlLabel","name","id","label","defaultMessage","handleClickOnLink","destination","from","to","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","background","marginBottom","Sections","Section","Link","onClick","endAction","_Fragment","licenseOnly","Lightning","fill","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
@@ -1,25 +1,16 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { SubNavLink, SubNav, SubNavHeader, SubNavSections, SubNavSection } from '@strapi/design-system';
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { Badge, Divider } from '@strapi/design-system';
3
3
  import { Lightning } from '@strapi/icons';
4
4
  import { useIntl } from 'react-intl';
5
- import { useLocation, NavLink } from 'react-router-dom';
5
+ import { useLocation } from 'react-router-dom';
6
6
  import { styled } from 'styled-components';
7
+ import { SubNav } from '../../../components/SubNav.mjs';
7
8
  import { useTracking } from '../../../features/Tracking.mjs';
8
9
 
9
- const CustomIcon = styled(Lightning)`
10
- right: 15px;
11
- position: absolute;
12
- bottom: 50%;
13
- transform: translateY(50%);
14
-
15
- path {
16
- fill: ${({ theme })=>theme.colors.warning500};
17
- }
18
- `;
19
- const Link = styled(SubNavLink)`
20
- &.active ${CustomIcon} {
21
- right: 13px;
22
- }
10
+ const StyledBadge = styled(Badge)`
11
+ border-radius: 50%;
12
+ padding: ${({ theme })=>theme.spaces[2]};
13
+ height: 2rem;
23
14
  `;
24
15
  const SettingsNav = ({ menu })=>{
25
16
  const { formatMessage } = useIntl();
@@ -49,29 +40,39 @@ const SettingsNav = ({ menu })=>{
49
40
  to: destination
50
41
  });
51
42
  };
52
- return /*#__PURE__*/ jsxs(SubNav, {
43
+ return /*#__PURE__*/ jsxs(SubNav.Main, {
53
44
  "aria-label": label,
54
45
  children: [
55
- /*#__PURE__*/ jsx(SubNavHeader, {
46
+ /*#__PURE__*/ jsx(SubNav.Header, {
56
47
  label: label
57
48
  }),
58
- /*#__PURE__*/ jsx(SubNavSections, {
59
- children: sections.map((section)=>/*#__PURE__*/ jsx(SubNavSection, {
49
+ /*#__PURE__*/ jsx(Divider, {
50
+ background: "neutral150",
51
+ marginBottom: 5
52
+ }),
53
+ /*#__PURE__*/ jsx(SubNav.Sections, {
54
+ children: sections.map((section)=>/*#__PURE__*/ jsx(SubNav.Section, {
60
55
  label: formatMessage(section.intlLabel),
61
56
  children: section.links.map((link)=>{
62
- return /*#__PURE__*/ jsxs(Link, {
63
- tag: NavLink,
64
- withBullet: link.hasNotification,
57
+ return /*#__PURE__*/ jsx(SubNav.Link, {
65
58
  to: link.to,
66
59
  onClick: handleClickOnLink(link.to),
67
- position: "relative",
68
- children: [
69
- formatMessage(link.intlLabel),
70
- link?.licenseOnly && /*#__PURE__*/ jsx(CustomIcon, {
71
- width: "1.5rem",
72
- height: "1.5rem"
73
- })
74
- ]
60
+ label: formatMessage(link.intlLabel),
61
+ endAction: /*#__PURE__*/ jsxs(Fragment, {
62
+ children: [
63
+ link?.licenseOnly && /*#__PURE__*/ jsx(Lightning, {
64
+ fill: "warning500",
65
+ width: "1.5rem",
66
+ height: "1.5rem"
67
+ }),
68
+ link?.hasNotification && /*#__PURE__*/ jsx(StyledBadge, {
69
+ "aria-label": "Notification",
70
+ backgroundColor: "primary600",
71
+ textColor: "neutral0",
72
+ children: "1"
73
+ })
74
+ ]
75
+ })
75
76
  }, link.id);
76
77
  })
77
78
  }, section.id))
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import {\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\nconst CustomIcon = styled(Lightning)`\n right: 15px;\n position: absolute;\n bottom: 50%;\n transform: translateY(50%);\n\n path {\n fill: ${({ theme }) => theme.colors.warning500};\n }\n`;\n\nconst Link = styled(SubNavLink)`\n &.active ${CustomIcon} {\n right: 13px;\n }\n`;\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader label={label} />\n <SubNavSections>\n {sections.map((section) => (\n <SubNavSection key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <Link\n tag={NavLink}\n withBullet={link.hasNotification}\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n position=\"relative\"\n >\n {formatMessage(link.intlLabel)}\n {link?.licenseOnly && <CustomIcon width=\"1.5rem\" height=\"1.5rem\" />}\n </Link>\n );\n })}\n </SubNavSection>\n ))}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n"],"names":["CustomIcon","styled","Lightning","theme","colors","warning500","Link","SubNavLink","SettingsNav","menu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","filteredMenu","filter","section","links","every","link","isDisplayed","sections","map","title","intlLabel","name","id","label","defaultMessage","handleClickOnLink","destination","from","to","_jsxs","SubNav","aria-label","_jsx","SubNavHeader","SubNavSections","SubNavSection","tag","NavLink","withBullet","hasNotification","onClick","position","licenseOnly","width","height"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { SettingsMenu } from '../../../hooks/useSettingsMenu';\n\ninterface SettingsNavProps {\n menu: SettingsMenu;\n}\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ menu }: SettingsNavProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n title: link.intlLabel,\n name: link.id,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" marginBottom={5} />\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning fill=\"warning500\" width=\"1.5rem\" height=\"1.5rem\" />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n />\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\nexport type { SettingsNavProps };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","menu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","filteredMenu","filter","section","links","every","link","isDisplayed","sections","map","title","intlLabel","name","id","label","defaultMessage","handleClickOnLink","destination","from","to","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","background","marginBottom","Sections","Section","Link","onClick","endAction","_Fragment","licenseOnly","Lightning","fill","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
@@ -14,6 +14,7 @@ var Pagination = require('./admin/src/components/Pagination.js');
14
14
  var SearchInput = require('./admin/src/components/SearchInput.js');
15
15
  var Table = require('./admin/src/components/Table.js');
16
16
  var ContentBox = require('./admin/src/components/ContentBox.js');
17
+ var SubNav = require('./admin/src/components/SubNav.js');
17
18
  var Provider = require('./admin/src/components/GuidedTour/Provider.js');
18
19
  var Tracking = require('./admin/src/features/Tracking.js');
19
20
  var StrapiApp = require('./admin/src/features/StrapiApp.js');
@@ -57,6 +58,7 @@ exports.SearchInput = SearchInput.SearchInput;
57
58
  exports.Table = Table.Table;
58
59
  exports.useTable = Table.useTable;
59
60
  exports.ContentBox = ContentBox.ContentBox;
61
+ exports.SubNav = SubNav.SubNav;
60
62
  exports.useGuidedTour = Provider.useGuidedTour;
61
63
  exports.useTracking = Tracking.useTracking;
62
64
  exports.useStrapiApp = StrapiApp.useStrapiApp;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -12,6 +12,7 @@ export { Pagination } from './admin/src/components/Pagination.mjs';
12
12
  export { SearchInput } from './admin/src/components/SearchInput.mjs';
13
13
  export { Table, useTable } from './admin/src/components/Table.mjs';
14
14
  export { ContentBox } from './admin/src/components/ContentBox.mjs';
15
+ export { SubNav } from './admin/src/components/SubNav.mjs';
15
16
  export { useGuidedTour } from './admin/src/components/GuidedTour/Provider.mjs';
16
17
  export { useTracking } from './admin/src/features/Tracking.mjs';
17
18
  export { useStrapiApp } from './admin/src/features/StrapiApp.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,33 @@
1
+ /// <reference types="react" />
2
+ declare const StyledLink: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<Omit<import("react-router-dom").NavLinkProps & import("react").RefAttributes<HTMLAnchorElement>, "ref"> & {
3
+ ref?: ((instance: HTMLAnchorElement | null) => void) | import("react").RefObject<HTMLAnchorElement> | null | undefined;
4
+ }, never>> & Omit<import("react").ForwardRefExoticComponent<import("react-router-dom").NavLinkProps & import("react").RefAttributes<HTMLAnchorElement>>, keyof import("react").Component<any, {}, any>>;
5
+ export declare const SubNav: {
6
+ Main: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<Omit<Omit<import("@strapi/design-system").SubNavProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
7
+ ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
8
+ }, never>> & Omit<import("react").ForwardRefExoticComponent<Omit<import("@strapi/design-system").SubNavProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>, keyof import("react").Component<any, {}, any>>;
9
+ Header: ({ label }: {
10
+ label: string;
11
+ }) => import("react/jsx-runtime").JSX.Element;
12
+ Link: (props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {
13
+ label: React.ReactNode;
14
+ endAction?: React.ReactNode;
15
+ }) => import("react/jsx-runtime").JSX.Element;
16
+ Sections: ({ children, ...props }: {
17
+ children: React.ReactNode[];
18
+ [key: string]: any;
19
+ }) => import("react/jsx-runtime").JSX.Element;
20
+ Section: ({ label, children, link, }: {
21
+ label: string;
22
+ children: React.ReactNode[];
23
+ link?: {
24
+ label: string;
25
+ onClik: () => void;
26
+ };
27
+ }) => import("react/jsx-runtime").JSX.Element;
28
+ SubSection: ({ label, children }: {
29
+ label: string;
30
+ children: React.ReactNode[];
31
+ }) => import("react/jsx-runtime").JSX.Element;
32
+ };
33
+ export {};
@@ -128,8 +128,6 @@ interface CreateEntryEvents {
128
128
  documentId?: string;
129
129
  status?: string;
130
130
  error?: unknown;
131
- fromPreview?: boolean;
132
- fromRelationModal?: boolean;
133
131
  };
134
132
  }
135
133
  interface PublishEntryEvents {
@@ -20,6 +20,7 @@ export * from './components/Pagination';
20
20
  export * from './components/SearchInput';
21
21
  export * from './components/Table';
22
22
  export * from './components/ContentBox';
23
+ export * from './components/SubNav';
23
24
  export { useGuidedTour } from './components/GuidedTour/Provider';
24
25
  /**
25
26
  * Features
@@ -0,0 +1,58 @@
1
+ 'use strict';
2
+
3
+ var yup = require('yup');
4
+ var utils = require('@strapi/utils');
5
+ var index = require('../utils/index.js');
6
+
7
+ function _interopNamespaceDefault(e) {
8
+ var n = Object.create(null);
9
+ if (e) {
10
+ Object.keys(e).forEach(function (k) {
11
+ if (k !== 'default') {
12
+ var d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: function () { return e[k]; }
16
+ });
17
+ }
18
+ });
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+
24
+ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
25
+
26
+ const createHomepageController = ()=>{
27
+ const homepageService = index.getService('homepage');
28
+ const recentDocumentParamsSchema = yup__namespace.object().shape({
29
+ action: yup__namespace.mixed().oneOf([
30
+ 'update',
31
+ 'publish'
32
+ ]).required()
33
+ });
34
+ return {
35
+ async getRecentDocuments (ctx) {
36
+ let action;
37
+ try {
38
+ action = (await recentDocumentParamsSchema.validate(ctx.query)).action;
39
+ } catch (error) {
40
+ if (error instanceof yup__namespace.ValidationError) {
41
+ throw new utils.errors.ValidationError(error.message);
42
+ }
43
+ throw error;
44
+ }
45
+ if (action === 'publish') {
46
+ return {
47
+ data: await homepageService.getRecentlyPublishedDocuments()
48
+ };
49
+ }
50
+ return {
51
+ data: await homepageService.getRecentlyUpdatedDocuments()
52
+ };
53
+ }
54
+ };
55
+ };
56
+
57
+ exports.createHomepageController = createHomepageController;
58
+ //# sourceMappingURL=homepage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.js","sources":["../../../../../server/src/controllers/homepage.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as yup from 'yup';\nimport { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport type { GetRecentDocuments } from '../../../shared/contracts/homepage';\n\nconst createHomepageController = () => {\n const homepageService = getService('homepage');\n\n const recentDocumentParamsSchema = yup.object().shape({\n action: yup\n .mixed<GetRecentDocuments.Request['query']['action']>()\n .oneOf(['update', 'publish'])\n .required(),\n });\n\n return {\n async getRecentDocuments(ctx): Promise<GetRecentDocuments.Response> {\n let action;\n\n try {\n action = (await recentDocumentParamsSchema.validate(ctx.query)).action;\n } catch (error) {\n if (error instanceof yup.ValidationError) {\n throw new errors.ValidationError(error.message);\n }\n throw error;\n }\n\n if (action === 'publish') {\n return { data: await homepageService.getRecentlyPublishedDocuments() };\n }\n\n return { data: await homepageService.getRecentlyUpdatedDocuments() };\n },\n } satisfies Core.Controller;\n};\n\nexport { createHomepageController };\n"],"names":["createHomepageController","homepageService","getService","recentDocumentParamsSchema","yup","object","shape","action","mixed","oneOf","required","getRecentDocuments","ctx","validate","query","error","ValidationError","errors","message","data","getRecentlyPublishedDocuments","getRecentlyUpdatedDocuments"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAMA,wBAA2B,GAAA,IAAA;AAC/B,IAAA,MAAMC,kBAAkBC,gBAAW,CAAA,UAAA,CAAA;AAEnC,IAAA,MAAMC,0BAA6BC,GAAAA,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACpDC,QAAAA,MAAAA,EAAQH,cACLI,CAAAA,KAAK,EACLC,CAAAA,KAAK,CAAC;AAAC,YAAA,QAAA;AAAU,YAAA;AAAU,SAAA,CAAA,CAC3BC,QAAQ;AACb,KAAA,CAAA;IAEA,OAAO;AACL,QAAA,MAAMC,oBAAmBC,GAAG,EAAA;YAC1B,IAAIL,MAAAA;YAEJ,IAAI;gBACFA,MAAS,GAAC,CAAA,MAAMJ,0BAA2BU,CAAAA,QAAQ,CAACD,GAAIE,CAAAA,KAAK,CAAA,EAAGP,MAAM;AACxE,aAAA,CAAE,OAAOQ,KAAO,EAAA;gBACd,IAAIA,KAAAA,YAAiBX,cAAIY,CAAAA,eAAe,EAAE;AACxC,oBAAA,MAAM,IAAIC,YAAAA,CAAOD,eAAe,CAACD,MAAMG,OAAO,CAAA;AAChD;gBACA,MAAMH,KAAAA;AACR;AAEA,YAAA,IAAIR,WAAW,SAAW,EAAA;gBACxB,OAAO;oBAAEY,IAAM,EAAA,MAAMlB,gBAAgBmB,6BAA6B;AAAG,iBAAA;AACvE;YAEA,OAAO;gBAAED,IAAM,EAAA,MAAMlB,gBAAgBoB,2BAA2B;AAAG,aAAA;AACrE;AACF,KAAA;AACF;;;;"}
@@ -0,0 +1,37 @@
1
+ import * as yup from 'yup';
2
+ import { errors } from '@strapi/utils';
3
+ import { getService } from '../utils/index.mjs';
4
+
5
+ const createHomepageController = ()=>{
6
+ const homepageService = getService('homepage');
7
+ const recentDocumentParamsSchema = yup.object().shape({
8
+ action: yup.mixed().oneOf([
9
+ 'update',
10
+ 'publish'
11
+ ]).required()
12
+ });
13
+ return {
14
+ async getRecentDocuments (ctx) {
15
+ let action;
16
+ try {
17
+ action = (await recentDocumentParamsSchema.validate(ctx.query)).action;
18
+ } catch (error) {
19
+ if (error instanceof yup.ValidationError) {
20
+ throw new errors.ValidationError(error.message);
21
+ }
22
+ throw error;
23
+ }
24
+ if (action === 'publish') {
25
+ return {
26
+ data: await homepageService.getRecentlyPublishedDocuments()
27
+ };
28
+ }
29
+ return {
30
+ data: await homepageService.getRecentlyUpdatedDocuments()
31
+ };
32
+ }
33
+ };
34
+ };
35
+
36
+ export { createHomepageController };
37
+ //# sourceMappingURL=homepage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.mjs","sources":["../../../../../server/src/controllers/homepage.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as yup from 'yup';\nimport { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport type { GetRecentDocuments } from '../../../shared/contracts/homepage';\n\nconst createHomepageController = () => {\n const homepageService = getService('homepage');\n\n const recentDocumentParamsSchema = yup.object().shape({\n action: yup\n .mixed<GetRecentDocuments.Request['query']['action']>()\n .oneOf(['update', 'publish'])\n .required(),\n });\n\n return {\n async getRecentDocuments(ctx): Promise<GetRecentDocuments.Response> {\n let action;\n\n try {\n action = (await recentDocumentParamsSchema.validate(ctx.query)).action;\n } catch (error) {\n if (error instanceof yup.ValidationError) {\n throw new errors.ValidationError(error.message);\n }\n throw error;\n }\n\n if (action === 'publish') {\n return { data: await homepageService.getRecentlyPublishedDocuments() };\n }\n\n return { data: await homepageService.getRecentlyUpdatedDocuments() };\n },\n } satisfies Core.Controller;\n};\n\nexport { createHomepageController };\n"],"names":["createHomepageController","homepageService","getService","recentDocumentParamsSchema","yup","object","shape","action","mixed","oneOf","required","getRecentDocuments","ctx","validate","query","error","ValidationError","errors","message","data","getRecentlyPublishedDocuments","getRecentlyUpdatedDocuments"],"mappings":";;;;AAMA,MAAMA,wBAA2B,GAAA,IAAA;AAC/B,IAAA,MAAMC,kBAAkBC,UAAW,CAAA,UAAA,CAAA;AAEnC,IAAA,MAAMC,0BAA6BC,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACpDC,QAAAA,MAAAA,EAAQH,GACLI,CAAAA,KAAK,EACLC,CAAAA,KAAK,CAAC;AAAC,YAAA,QAAA;AAAU,YAAA;AAAU,SAAA,CAAA,CAC3BC,QAAQ;AACb,KAAA,CAAA;IAEA,OAAO;AACL,QAAA,MAAMC,oBAAmBC,GAAG,EAAA;YAC1B,IAAIL,MAAAA;YAEJ,IAAI;gBACFA,MAAS,GAAC,CAAA,MAAMJ,0BAA2BU,CAAAA,QAAQ,CAACD,GAAIE,CAAAA,KAAK,CAAA,EAAGP,MAAM;AACxE,aAAA,CAAE,OAAOQ,KAAO,EAAA;gBACd,IAAIA,KAAAA,YAAiBX,GAAIY,CAAAA,eAAe,EAAE;AACxC,oBAAA,MAAM,IAAIC,MAAAA,CAAOD,eAAe,CAACD,MAAMG,OAAO,CAAA;AAChD;gBACA,MAAMH,KAAAA;AACR;AAEA,YAAA,IAAIR,WAAW,SAAW,EAAA;gBACxB,OAAO;oBAAEY,IAAM,EAAA,MAAMlB,gBAAgBmB,6BAA6B;AAAG,iBAAA;AACvE;YAEA,OAAO;gBAAED,IAAM,EAAA,MAAMlB,gBAAgBoB,2BAA2B;AAAG,aAAA;AACrE;AACF,KAAA;AACF;;;;"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ const info = {
4
+ pluginName: 'admin',
5
+ type: 'admin'
6
+ };
7
+ var homepage = [
8
+ {
9
+ method: 'GET',
10
+ info,
11
+ path: '/homepage/recent-documents',
12
+ handler: 'homepage.getRecentDocuments',
13
+ config: {
14
+ policies: [
15
+ 'admin::isAuthenticatedAdmin'
16
+ ]
17
+ }
18
+ }
19
+ ];
20
+
21
+ module.exports = homepage;
22
+ //# sourceMappingURL=homepage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.js","sources":["../../../../../server/src/routes/homepage.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\n\nconst info = { pluginName: 'admin', type: 'admin' };\n\nexport default [\n {\n method: 'GET',\n info,\n path: '/homepage/recent-documents',\n handler: 'homepage.getRecentDocuments',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n] satisfies Plugin.LoadedPlugin['routes'][string]['routes'];\n"],"names":["info","pluginName","type","method","path","handler","config","policies"],"mappings":";;AAEA,MAAMA,IAAO,GAAA;IAAEC,UAAY,EAAA,OAAA;IAASC,IAAM,EAAA;AAAQ,CAAA;AAElD,eAAe;AACb,IAAA;QACEC,MAAQ,EAAA,KAAA;AACRH,QAAAA,IAAAA;QACAI,IAAM,EAAA,4BAAA;QACNC,OAAS,EAAA,6BAAA;QACTC,MAAQ,EAAA;YACNC,QAAU,EAAA;AAAC,gBAAA;AAA8B;AAC3C;AACF;CACD;;;;"}
@@ -0,0 +1,20 @@
1
+ const info = {
2
+ pluginName: 'admin',
3
+ type: 'admin'
4
+ };
5
+ var homepage = [
6
+ {
7
+ method: 'GET',
8
+ info,
9
+ path: '/homepage/recent-documents',
10
+ handler: 'homepage.getRecentDocuments',
11
+ config: {
12
+ policies: [
13
+ 'admin::isAuthenticatedAdmin'
14
+ ]
15
+ }
16
+ }
17
+ ];
18
+
19
+ export { homepage as default };
20
+ //# sourceMappingURL=homepage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.mjs","sources":["../../../../../server/src/routes/homepage.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\n\nconst info = { pluginName: 'admin', type: 'admin' };\n\nexport default [\n {\n method: 'GET',\n info,\n path: '/homepage/recent-documents',\n handler: 'homepage.getRecentDocuments',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n] satisfies Plugin.LoadedPlugin['routes'][string]['routes'];\n"],"names":["info","pluginName","type","method","path","handler","config","policies"],"mappings":"AAEA,MAAMA,IAAO,GAAA;IAAEC,UAAY,EAAA,OAAA;IAASC,IAAM,EAAA;AAAQ,CAAA;AAElD,eAAe;AACb,IAAA;QACEC,MAAQ,EAAA,KAAA;AACRH,QAAAA,IAAAA;QACAI,IAAM,EAAA,4BAAA;QACNC,OAAS,EAAA,6BAAA;QACTC,MAAQ,EAAA;YACNC,QAAU,EAAA;AAAC,gBAAA;AAA8B;AAC3C;AACF;CACD;;;;"}