@strapi/admin 5.34.0 → 5.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +4 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +5 -2
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +2 -0
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +2 -0
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +2 -2
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +3 -3
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/constants/theme.js +2 -0
- package/dist/admin/admin/src/constants/theme.js.map +1 -1
- package/dist/admin/admin/src/constants/theme.mjs +2 -1
- package/dist/admin/admin/src/constants/theme.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +51 -11
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +51 -11
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +12 -3
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +12 -3
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +12 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.mjs +12 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ko.json.js +430 -96
- package/dist/admin/admin/src/translations/ko.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ko.json.mjs +427 -97
- package/dist/admin/admin/src/translations/ko.json.mjs.map +1 -1
- package/dist/admin/index.js +3 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/constants/theme.d.ts +2 -1
- package/dist/admin/src/index.d.ts +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HEIGHT_TOP_NAVIGATION, HEIGHT_TOP_NAVIGATION_MEDIUM } from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)`\n width: 100%;\n height: calc(100dvh - ${HEIGHT_TOP_NAVIGATION} - 1px);\n overflow: hidden;\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: fixed;\n top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);\n left: 0;\n z-index: 2;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: 23.2rem;\n position: sticky;\n top: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n ${({ theme }) => theme.breakpoints.large} {\n height: 100dvh;\n }\n`;\n\nconst Main = ({ children, ...props }: { children: React.ReactNode; isFullPage?: boolean }) => (\n <MainSubNav {...props}>{children}</MainSubNav>\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 handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingLeft={3}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width={{ initial: '80dvw', medium: '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(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: '23.2rem' }}\n >\n <Flex tag=\"ul\" gap={6} 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\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\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 border-radius: ${({ theme }) => theme.borderRadius};\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 [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\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 <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: '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 </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","HEIGHT_TOP_NAVIGATION","theme","colors","neutral0","breakpoints","medium","neutral150","large","Main","children","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","paddingTop","initial","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","variant","Sections","maxWidth","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useRef","useEffect","current","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)`\n width: 100%;\n height: calc(100dvh - ${HEIGHT_TOP_NAVIGATION} - 1px);\n overflow: hidden;\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: fixed;\n top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);\n left: 0;\n z-index: 2;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n ${({ theme }) => theme.breakpoints.large} {\n height: 100dvh;\n }\n`;\n\nconst Main = ({ children, ...props }: { children: React.ReactNode; isFullPage?: boolean }) => (\n <MainSubNav {...props}>{children}</MainSubNav>\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 handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingLeft={3}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width={{ initial: '80dvw', medium: '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(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} 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\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\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 border-radius: ${({ theme }) => theme.borderRadius};\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 [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\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 <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: '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 </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","HEIGHT_TOP_NAVIGATION","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","large","Main","children","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","paddingTop","initial","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","variant","Sections","maxWidth","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useRef","useEffect","current","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { SubNav as SubNav$1, Flex, Box, Typography, Badge, IconButton, ScrollAre
|
|
|
4
4
|
import { Plus, ChevronDown } from '@strapi/icons';
|
|
5
5
|
import { NavLink } from 'react-router-dom';
|
|
6
6
|
import { styled } from 'styled-components';
|
|
7
|
-
import { HEIGHT_TOP_NAVIGATION, HEIGHT_TOP_NAVIGATION_MEDIUM } from '../constants/theme.mjs';
|
|
7
|
+
import { HEIGHT_TOP_NAVIGATION, WIDTH_SIDE_NAVIGATION, HEIGHT_TOP_NAVIGATION_MEDIUM } from '../constants/theme.mjs';
|
|
8
8
|
import { tours } from './GuidedTour/Tours.mjs';
|
|
9
9
|
|
|
10
10
|
const MainSubNav = styled(SubNav$1)`
|
|
@@ -22,7 +22,7 @@ const MainSubNav = styled(SubNav$1)`
|
|
|
22
22
|
z-index: 2;
|
|
23
23
|
|
|
24
24
|
${({ theme })=>theme.breakpoints.medium} {
|
|
25
|
-
width:
|
|
25
|
+
width: ${WIDTH_SIDE_NAVIGATION};
|
|
26
26
|
position: sticky;
|
|
27
27
|
top: 0;
|
|
28
28
|
border-right: 1px solid ${({ theme })=>theme.colors.neutral150};
|
|
@@ -164,7 +164,7 @@ const Sections = ({ children, ...props })=>{
|
|
|
164
164
|
},
|
|
165
165
|
maxWidth: {
|
|
166
166
|
initial: '100%',
|
|
167
|
-
medium:
|
|
167
|
+
medium: WIDTH_SIDE_NAVIGATION
|
|
168
168
|
},
|
|
169
169
|
children: /*#__PURE__*/ jsx(Flex, {
|
|
170
170
|
tag: "ul",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubNav.mjs","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HEIGHT_TOP_NAVIGATION, HEIGHT_TOP_NAVIGATION_MEDIUM } from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)`\n width: 100%;\n height: calc(100dvh - ${HEIGHT_TOP_NAVIGATION} - 1px);\n overflow: hidden;\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: fixed;\n top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);\n left: 0;\n z-index: 2;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: 23.2rem;\n position: sticky;\n top: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n ${({ theme }) => theme.breakpoints.large} {\n height: 100dvh;\n }\n`;\n\nconst Main = ({ children, ...props }: { children: React.ReactNode; isFullPage?: boolean }) => (\n <MainSubNav {...props}>{children}</MainSubNav>\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 handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingLeft={3}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width={{ initial: '80dvw', medium: '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(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: '23.2rem' }}\n >\n <Flex tag=\"ul\" gap={6} 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\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\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 border-radius: ${({ theme }) => theme.borderRadius};\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 [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\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 <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: '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 </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","HEIGHT_TOP_NAVIGATION","theme","colors","neutral0","breakpoints","medium","neutral150","large","Main","children","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","paddingTop","initial","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","variant","Sections","maxWidth","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useRef","useEffect","current","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SubNav.mjs","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)`\n width: 100%;\n height: calc(100dvh - ${HEIGHT_TOP_NAVIGATION} - 1px);\n overflow: hidden;\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: fixed;\n top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);\n left: 0;\n z-index: 2;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n ${({ theme }) => theme.breakpoints.large} {\n height: 100dvh;\n }\n`;\n\nconst Main = ({ children, ...props }: { children: React.ReactNode; isFullPage?: boolean }) => (\n <MainSubNav {...props}>{children}</MainSubNav>\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 handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingLeft={3}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width={{ initial: '80dvw', medium: '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(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} 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\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\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 border-radius: ${({ theme }) => theme.borderRadius};\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 [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\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 <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: '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 </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","HEIGHT_TOP_NAVIGATION","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","large","Main","children","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","paddingTop","initial","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","variant","Sections","maxWidth","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useRef","useEffect","current","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
|
|
@@ -7,8 +7,10 @@ const RESPONSIVE_DEFAULT_SPACING = {
|
|
|
7
7
|
};
|
|
8
8
|
const HEIGHT_TOP_NAVIGATION = '6.4rem';
|
|
9
9
|
const HEIGHT_TOP_NAVIGATION_MEDIUM = '5.6rem';
|
|
10
|
+
const WIDTH_SIDE_NAVIGATION = '23.2rem';
|
|
10
11
|
|
|
11
12
|
exports.HEIGHT_TOP_NAVIGATION = HEIGHT_TOP_NAVIGATION;
|
|
12
13
|
exports.HEIGHT_TOP_NAVIGATION_MEDIUM = HEIGHT_TOP_NAVIGATION_MEDIUM;
|
|
13
14
|
exports.RESPONSIVE_DEFAULT_SPACING = RESPONSIVE_DEFAULT_SPACING;
|
|
15
|
+
exports.WIDTH_SIDE_NAVIGATION = WIDTH_SIDE_NAVIGATION;
|
|
14
16
|
//# sourceMappingURL=theme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sources":["../../../../../admin/src/constants/theme.ts"],"sourcesContent":["const RESPONSIVE_DEFAULT_SPACING = {\n initial: 4,\n medium: 6,\n large: 10,\n};\n\nconst HEIGHT_TOP_NAVIGATION = '6.4rem';\nconst HEIGHT_TOP_NAVIGATION_MEDIUM = '5.6rem';\n\nexport {
|
|
1
|
+
{"version":3,"file":"theme.js","sources":["../../../../../admin/src/constants/theme.ts"],"sourcesContent":["const RESPONSIVE_DEFAULT_SPACING = {\n initial: 4,\n medium: 6,\n large: 10,\n};\n\nconst HEIGHT_TOP_NAVIGATION = '6.4rem';\nconst HEIGHT_TOP_NAVIGATION_MEDIUM = '5.6rem';\nconst WIDTH_SIDE_NAVIGATION = '23.2rem';\n\nexport {\n RESPONSIVE_DEFAULT_SPACING,\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n};\n"],"names":["RESPONSIVE_DEFAULT_SPACING","initial","medium","large","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","WIDTH_SIDE_NAVIGATION"],"mappings":";;AAAA,MAAMA,0BAA6B,GAAA;IACjCC,OAAS,EAAA,CAAA;IACTC,MAAQ,EAAA,CAAA;IACRC,KAAO,EAAA;AACT;AAEA,MAAMC,qBAAwB,GAAA;AAC9B,MAAMC,4BAA+B,GAAA;AACrC,MAAMC,qBAAwB,GAAA;;;;;;;"}
|
|
@@ -5,6 +5,7 @@ const RESPONSIVE_DEFAULT_SPACING = {
|
|
|
5
5
|
};
|
|
6
6
|
const HEIGHT_TOP_NAVIGATION = '6.4rem';
|
|
7
7
|
const HEIGHT_TOP_NAVIGATION_MEDIUM = '5.6rem';
|
|
8
|
+
const WIDTH_SIDE_NAVIGATION = '23.2rem';
|
|
8
9
|
|
|
9
|
-
export { HEIGHT_TOP_NAVIGATION, HEIGHT_TOP_NAVIGATION_MEDIUM, RESPONSIVE_DEFAULT_SPACING };
|
|
10
|
+
export { HEIGHT_TOP_NAVIGATION, HEIGHT_TOP_NAVIGATION_MEDIUM, RESPONSIVE_DEFAULT_SPACING, WIDTH_SIDE_NAVIGATION };
|
|
10
11
|
//# sourceMappingURL=theme.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.mjs","sources":["../../../../../admin/src/constants/theme.ts"],"sourcesContent":["const RESPONSIVE_DEFAULT_SPACING = {\n initial: 4,\n medium: 6,\n large: 10,\n};\n\nconst HEIGHT_TOP_NAVIGATION = '6.4rem';\nconst HEIGHT_TOP_NAVIGATION_MEDIUM = '5.6rem';\n\nexport {
|
|
1
|
+
{"version":3,"file":"theme.mjs","sources":["../../../../../admin/src/constants/theme.ts"],"sourcesContent":["const RESPONSIVE_DEFAULT_SPACING = {\n initial: 4,\n medium: 6,\n large: 10,\n};\n\nconst HEIGHT_TOP_NAVIGATION = '6.4rem';\nconst HEIGHT_TOP_NAVIGATION_MEDIUM = '5.6rem';\nconst WIDTH_SIDE_NAVIGATION = '23.2rem';\n\nexport {\n RESPONSIVE_DEFAULT_SPACING,\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n};\n"],"names":["RESPONSIVE_DEFAULT_SPACING","initial","medium","large","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","WIDTH_SIDE_NAVIGATION"],"mappings":"AAAA,MAAMA,0BAA6B,GAAA;IACjCC,OAAS,EAAA,CAAA;IACTC,MAAQ,EAAA,CAAA;IACRC,KAAO,EAAA;AACT;AAEA,MAAMC,qBAAwB,GAAA;AAC9B,MAAMC,4BAA+B,GAAA;AACrC,MAAMC,qBAAwB,GAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { HEIGHT_TOP_NAVIGATION } from '../constants/theme';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Box\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n <Outlet />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Box\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n <Outlet />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport {
|
|
1
|
+
{"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Box\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n <Outlet />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
|
|
@@ -60,21 +60,30 @@ const REGISTER_USER_SCHEMA = yup__namespace.object().shape({
|
|
|
60
60
|
if (!value || typeof value !== 'string') return true; // validated elsewhere
|
|
61
61
|
const byteSize = strings.getByteSize(value);
|
|
62
62
|
return byteSize <= 72;
|
|
63
|
-
}).
|
|
63
|
+
}).test('lowercase', {
|
|
64
64
|
message: {
|
|
65
65
|
id: 'components.Input.error.contain.lowercase',
|
|
66
66
|
defaultMessage: 'Password must contain at least 1 lowercase letter'
|
|
67
67
|
}
|
|
68
|
-
})
|
|
68
|
+
}, (value)=>{
|
|
69
|
+
if (!value) return true;
|
|
70
|
+
return /[a-z]/.test(value);
|
|
71
|
+
}).test('uppercase', {
|
|
69
72
|
message: {
|
|
70
73
|
id: 'components.Input.error.contain.uppercase',
|
|
71
74
|
defaultMessage: 'Password must contain at least 1 uppercase letter'
|
|
72
75
|
}
|
|
73
|
-
})
|
|
76
|
+
}, (value)=>{
|
|
77
|
+
if (!value) return true;
|
|
78
|
+
return /[A-Z]/.test(value);
|
|
79
|
+
}).test('number', {
|
|
74
80
|
message: {
|
|
75
81
|
id: 'components.Input.error.contain.number',
|
|
76
82
|
defaultMessage: 'Password must contain at least 1 number'
|
|
77
83
|
}
|
|
84
|
+
}, (value)=>{
|
|
85
|
+
if (!value) return true;
|
|
86
|
+
return /\d/.test(value);
|
|
78
87
|
}).required({
|
|
79
88
|
id: translatedErrors.translatedErrors.required.id,
|
|
80
89
|
defaultMessage: 'Password is required'
|
|
@@ -112,21 +121,30 @@ const REGISTER_ADMIN_SCHEMA = yup__namespace.object().shape({
|
|
|
112
121
|
}, function(value) {
|
|
113
122
|
if (!value) return true;
|
|
114
123
|
return new TextEncoder().encode(value).length <= 72;
|
|
115
|
-
}).
|
|
124
|
+
}).test('lowercase', {
|
|
116
125
|
message: {
|
|
117
126
|
id: 'components.Input.error.contain.lowercase',
|
|
118
127
|
defaultMessage: 'Password must contain at least 1 lowercase letter'
|
|
119
128
|
}
|
|
120
|
-
})
|
|
129
|
+
}, (value)=>{
|
|
130
|
+
if (!value) return true;
|
|
131
|
+
return /[a-z]/.test(value);
|
|
132
|
+
}).test('uppercase', {
|
|
121
133
|
message: {
|
|
122
134
|
id: 'components.Input.error.contain.uppercase',
|
|
123
135
|
defaultMessage: 'Password must contain at least 1 uppercase letter'
|
|
124
136
|
}
|
|
125
|
-
})
|
|
137
|
+
}, (value)=>{
|
|
138
|
+
if (!value) return true;
|
|
139
|
+
return /[A-Z]/.test(value);
|
|
140
|
+
}).test('number', {
|
|
126
141
|
message: {
|
|
127
142
|
id: 'components.Input.error.contain.number',
|
|
128
143
|
defaultMessage: 'Password must contain at least 1 number'
|
|
129
144
|
}
|
|
145
|
+
}, (value)=>{
|
|
146
|
+
if (!value) return true;
|
|
147
|
+
return /\d/.test(value);
|
|
130
148
|
}).required({
|
|
131
149
|
id: translatedErrors.translatedErrors.required.id,
|
|
132
150
|
defaultMessage: 'Password is required'
|
|
@@ -338,13 +356,35 @@ const Register = ({ hasAdmin })=>{
|
|
|
338
356
|
}
|
|
339
357
|
} catch (err) {
|
|
340
358
|
if (err instanceof yup.ValidationError) {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
359
|
+
const formatDescriptor = (msg)=>{
|
|
360
|
+
try {
|
|
361
|
+
if (!msg) return '';
|
|
362
|
+
if (typeof msg === 'string') return msg;
|
|
363
|
+
// Direct descriptor
|
|
364
|
+
if ('id' in msg && 'defaultMessage' in msg) return formatMessage(msg);
|
|
365
|
+
// Wrapped descriptor: { message: { id, defaultMessage } }
|
|
366
|
+
if (msg.message && typeof msg.message === 'object' && 'id' in msg.message) {
|
|
367
|
+
return formatMessage(msg.message);
|
|
368
|
+
}
|
|
369
|
+
// errors array: [{ id, defaultMessage }]
|
|
370
|
+
if (Array.isArray(msg.errors) && msg.errors.length > 0) {
|
|
371
|
+
const first = msg.errors[0];
|
|
372
|
+
if (typeof first === 'string') return first;
|
|
373
|
+
if (first && typeof first === 'object' && 'id' in first) return formatMessage(first);
|
|
374
|
+
}
|
|
375
|
+
// fallback to defaultMessage if present
|
|
376
|
+
if ('defaultMessage' in msg) return msg.defaultMessage;
|
|
377
|
+
return String(msg);
|
|
378
|
+
} catch (e) {
|
|
379
|
+
return String(msg);
|
|
345
380
|
}
|
|
381
|
+
};
|
|
382
|
+
const computed = err.inner.reduce((acc, { message, path })=>{
|
|
383
|
+
if (!path) return acc;
|
|
384
|
+
acc[path] = formatDescriptor(message);
|
|
346
385
|
return acc;
|
|
347
|
-
}, {})
|
|
386
|
+
}, {});
|
|
387
|
+
helpers.setErrors(computed);
|
|
348
388
|
}
|
|
349
389
|
setSubmitCount(submitCount + 1);
|
|
350
390
|
}
|