ece-docs-components 1.0.98 → 1.0.100

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.
@@ -5,115 +5,117 @@ import { ExpandCircleDownOutlined } from '@mui/icons-material';
5
5
  import { useTheme } from '../ThemeProvider.js';
6
6
 
7
7
  const StyledConcertina = styled(Box)(({ theme }) => ({
8
- width: '100%',
9
- display: 'flex',
10
- flexDirection: 'column',
8
+ width: "100%",
9
+ display: "flex",
10
+ flexDirection: "column",
11
11
  gap: theme.spacing(1),
12
12
  }));
13
13
  const StyledSection = styled(Box)(({ theme }) => ({
14
- overflow: 'hidden',
14
+ overflow: "hidden",
15
15
  }));
16
16
  const StyledHeader = styled(Box)(({ theme }) => ({
17
- display: 'flex',
18
- alignItems: 'center',
17
+ display: "flex",
18
+ alignItems: "center",
19
19
  borderTop: `2px solid ${theme.palette.grey[200]}`,
20
20
  borderBottom: `2px solid ${theme.palette.grey[200]}`,
21
- justifyContent: 'space-between',
22
- cursor: 'pointer',
23
- transition: 'background-color 0.2s',
21
+ justifyContent: "space-between",
22
+ cursor: "pointer",
23
+ transition: "background-color 0.2s",
24
24
  gap: theme.spacing(2),
25
- '&:hover': {
25
+ "&:hover": {
26
26
  backgroundColor: theme.palette.background.default,
27
27
  },
28
28
  padding: theme.spacing(2),
29
29
  }));
30
30
  const StyledTitleWrapper = styled(Box)(({ theme }) => ({
31
- display: 'flex',
32
- alignItems: 'center',
31
+ display: "flex",
32
+ alignItems: "center",
33
33
  gap: 0,
34
34
  flex: 1,
35
35
  minWidth: 0,
36
36
  }));
37
- const StyledHashtag = styled('span', {
38
- shouldForwardProp: (prop) => prop !== 'isVisible' && prop !== 'color',
37
+ const StyledHashtag = styled("span", {
38
+ shouldForwardProp: (prop) => prop !== "isVisible" && prop !== "color",
39
39
  })(({ theme, isVisible, color }) => ({
40
40
  color: color || theme.palette.info.main,
41
41
  fontWeight: 700,
42
- fontSize: 'inherit',
42
+ fontSize: "inherit",
43
43
  opacity: isVisible ? 1 : 0,
44
- transition: 'opacity 0.2s',
45
- marginRight: isVisible ? '0.25em' : 0,
46
- cursor: 'pointer',
44
+ transition: "opacity 0.2s",
45
+ marginRight: isVisible ? "0.25em" : 0,
46
+ cursor: "pointer",
47
47
  }));
48
48
  const StyledTitle = styled(Typography, {
49
- shouldForwardProp: (prop) => prop !== 'isHovered',
49
+ shouldForwardProp: (prop) => prop !== "isHovered",
50
50
  })(({ theme, isHovered }) => ({
51
51
  fontWeight: 700,
52
- fontSize: '1.75rem',
52
+ fontSize: "1.75rem",
53
53
  lineHeight: 1.2,
54
54
  color: theme.palette.dark.main,
55
- wordBreak: 'break-word',
56
- display: 'inline-block',
57
- position: 'relative',
58
- paddingBottom: '2px',
59
- borderBottom: isHovered ? `3px solid ${theme.palette.info.main}` : '3px solid transparent',
60
- transition: 'border-bottom 0.2s',
61
- [theme.breakpoints.down('lg')]: {
62
- fontSize: '1.25rem',
55
+ wordBreak: "break-word",
56
+ display: "inline-block",
57
+ position: "relative",
58
+ paddingBottom: "2px",
59
+ borderBottom: isHovered
60
+ ? `3px solid ${theme.palette.info.main}`
61
+ : "3px solid transparent",
62
+ transition: "border-bottom 0.2s",
63
+ [theme.breakpoints.down("lg")]: {
64
+ fontSize: "1.25rem",
63
65
  },
64
- [theme.breakpoints.down('md')]: {
65
- fontSize: '1.125rem',
66
+ [theme.breakpoints.down("md")]: {
67
+ fontSize: "1.125rem",
66
68
  },
67
- [theme.breakpoints.down('sm')]: {
68
- fontSize: '1rem',
69
+ [theme.breakpoints.down("sm")]: {
70
+ fontSize: "1rem",
69
71
  },
70
72
  }));
71
73
  const StyledTooltip = styled(Box)(({ theme }) => ({
72
- position: 'fixed',
73
- transform: 'translate(-50%, -120%)',
74
+ position: "fixed",
75
+ transform: "translate(-50%, -120%)",
74
76
  backgroundColor: theme.palette.grey[900],
75
77
  color: theme.palette.common.white,
76
- fontSize: '0.75rem',
78
+ fontSize: "0.75rem",
77
79
  padding: theme.spacing(1, 2),
78
80
  borderRadius: theme.shape.borderRadius,
79
- whiteSpace: 'nowrap',
81
+ whiteSpace: "nowrap",
80
82
  zIndex: 1000,
81
- pointerEvents: 'none',
82
- [theme.breakpoints.up('sm')]: {
83
- fontSize: '0.875rem',
83
+ pointerEvents: "none",
84
+ [theme.breakpoints.up("sm")]: {
85
+ fontSize: "0.875rem",
84
86
  padding: theme.spacing(1.5, 3),
85
87
  },
86
88
  }));
87
89
  const StyledContent = styled(Box)(({ theme }) => ({
88
90
  padding: theme.spacing(2, 3, 3),
89
- [theme.breakpoints.up('sm')]: {
91
+ [theme.breakpoints.up("sm")]: {
90
92
  padding: theme.spacing(2, 4, 4),
91
93
  },
92
- [theme.breakpoints.up('md')]: {
94
+ [theme.breakpoints.up("md")]: {
93
95
  padding: theme.spacing(2, 6, 6),
94
96
  },
95
97
  }));
96
98
  const StyledContentWrapper = styled(Box)(({ theme }) => ({
97
99
  color: theme.palette.dark.main,
98
100
  lineHeight: 1.5,
99
- wordBreak: 'break-word',
101
+ wordBreak: "break-word",
100
102
  fontSize: 13,
101
- '& p': {
103
+ "& p": {
102
104
  margin: 0,
103
105
  marginBottom: theme.spacing(2),
104
- '&:last-child': {
106
+ "&:last-child": {
105
107
  marginBottom: 0,
106
108
  },
107
109
  },
108
- '& ul, & ol': {
110
+ "& ul, & ol": {
109
111
  marginTop: theme.spacing(1),
110
112
  marginBottom: theme.spacing(2),
111
113
  paddingLeft: theme.spacing(3),
112
- '&:last-child': {
114
+ "&:last-child": {
113
115
  marginBottom: 0,
114
116
  },
115
117
  },
116
- '& li': {
118
+ "& li": {
117
119
  marginBottom: theme.spacing(0.5),
118
120
  },
119
121
  }));
@@ -122,19 +124,21 @@ function Concertina({ sections }) {
122
124
  const [copiedId, setCopiedId] = useState(null);
123
125
  const [tooltipPosition, setTooltipPosition] = useState(null);
124
126
  const theme = useTheme();
125
- const isDesktop = useMediaQuery(theme.breakpoints.up('md'));
127
+ const isDesktop = useMediaQuery(theme.breakpoints.up("md"));
126
128
  const [openSections, setOpenSections] = useState(() => {
127
129
  // Initialize with all sections open on desktop, closed on mobile
128
- return isDesktop ? new Set(sections.map(s => s.id)) : new Set();
130
+ return isDesktop ? new Set(sections.map((s) => s.id)) : new Set();
129
131
  });
132
+ const sectionIdsKey = JSON.stringify(sections.map((s) => s.id));
130
133
  React__default.useEffect(() => {
134
+ const sectionIds = JSON.parse(sectionIdsKey);
131
135
  if (isDesktop) {
132
- setOpenSections(new Set(sections.map(s => s.id)));
136
+ setOpenSections(new Set(sectionIds));
133
137
  }
134
138
  else {
135
139
  setOpenSections(new Set());
136
140
  }
137
- }, [isDesktop, sections]);
141
+ }, [isDesktop, sectionIdsKey]);
138
142
  const toggleSection = (id) => {
139
143
  const newOpenSections = new Set(openSections);
140
144
  if (newOpenSections.has(id)) {
@@ -156,7 +160,14 @@ function Concertina({ sections }) {
156
160
  setTooltipPosition(null);
157
161
  }, 2000);
158
162
  };
159
- return (jsxs(StyledConcertina, { children: [sections.map((section) => (jsxs(StyledSection, { id: section.id, children: [jsxs(StyledHeader, { onClick: () => toggleSection(section.id), onMouseEnter: () => setHoveredTitle(section.id), onMouseLeave: () => setHoveredTitle(null), children: [jsx(StyledTitleWrapper, { children: jsxs(StyledTitle, { isHovered: hoveredTitle === section.id, variant: "h3", children: [jsx(StyledHashtag, { isVisible: true, color: hoveredTitle === section.id ? theme.palette.info.main : '#00000000', onClick: (e) => copyJumpLink(section.id, e), children: "#" }), section.title] }) }), jsx(ExpandCircleDownOutlined, { sx: { fontSize: '1.5rem', transform: openSections.has(section.id) ? 'rotate(180deg)' : 'none' } })] }), jsx(Collapse, { in: openSections.has(section.id), children: jsx(StyledContent, { children: jsx(StyledContentWrapper, { children: section.content }) }) })] }, section.id))), copiedId && tooltipPosition && (jsx(StyledTooltip, { sx: {
163
+ return (jsxs(StyledConcertina, { children: [sections.map((section) => (jsxs(StyledSection, { id: section.id, children: [jsxs(StyledHeader, { onClick: () => toggleSection(section.id), onMouseEnter: () => setHoveredTitle(section.id), onMouseLeave: () => setHoveredTitle(null), children: [jsx(StyledTitleWrapper, { children: jsxs(StyledTitle, { isHovered: hoveredTitle === section.id, variant: "h3", children: [jsx(StyledHashtag, { isVisible: true, color: hoveredTitle === section.id
164
+ ? theme.palette.info.main
165
+ : "#00000000", onClick: (e) => copyJumpLink(section.id, e), children: "#" }), section.title] }) }), jsx(ExpandCircleDownOutlined, { sx: {
166
+ fontSize: "1.5rem",
167
+ transform: openSections.has(section.id)
168
+ ? "rotate(180deg)"
169
+ : "none",
170
+ } })] }), jsx(Collapse, { in: openSections.has(section.id), children: jsx(StyledContent, { children: jsx(StyledContentWrapper, { children: section.content }) }) })] }, section.id))), copiedId && tooltipPosition && (jsx(StyledTooltip, { sx: {
160
171
  left: tooltipPosition.x,
161
172
  top: tooltipPosition.y,
162
173
  }, children: "Link copied" }))] }));
@@ -1 +1 @@
1
- {"version":3,"file":"Concertina.js","sources":["../../../../src/components/Concertina.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { Box, styled, Typography, Collapse, useMediaQuery } from '@mui/material';\r\nimport { ExpandCircleDown, ExpandCircleDownOutlined, ExpandMoreRounded } from '@mui/icons-material';\r\nimport { useTheme } from '../ThemeProvider';\r\n\r\n\r\ninterface ConcertinaSection {\r\n id: string;\r\n title: string;\r\n content: React.ReactNode;\r\n}\r\n\r\n\r\ninterface ConcertinaProps {\r\n sections: ConcertinaSection[];\r\n}\r\n\r\n\r\nconst StyledConcertina = styled(Box)(({ theme }) => ({\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: theme.spacing(1),\r\n}));\r\n\r\n\r\nconst StyledSection = styled(Box)(({ theme }) => ({\r\n overflow: 'hidden',\r\n}));\r\n\r\n\r\nconst StyledHeader = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n borderTop: `2px solid ${theme.palette.grey[200]}`,\r\n borderBottom: `2px solid ${theme.palette.grey[200]}`,\r\n justifyContent: 'space-between',\r\n cursor: 'pointer',\r\n transition: 'background-color 0.2s',\r\n gap: theme.spacing(2),\r\n '&:hover': {\r\n backgroundColor: theme.palette.background.default,\r\n },\r\n padding: theme.spacing(2),\r\n}));\r\n\r\n\r\nconst StyledTitleWrapper = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 0,\r\n flex: 1,\r\n minWidth: 0,\r\n}));\r\n\r\n\r\nconst StyledHashtag = styled('span', {\r\n shouldForwardProp: (prop) => prop !== 'isVisible' && prop !== 'color',\r\n})<{ isVisible: boolean; color?: string }>(({ theme, isVisible, color }) => ({\r\n color: color || theme.palette.info.main,\r\n fontWeight: 700,\r\n fontSize: 'inherit',\r\n opacity: isVisible ? 1 : 0,\r\n transition: 'opacity 0.2s',\r\n marginRight: isVisible ? '0.25em' : 0,\r\n cursor: 'pointer',\r\n}));\r\n\r\n\r\n\r\nconst StyledTitle = styled(Typography, {\r\n shouldForwardProp: (prop) => prop !== 'isHovered',\r\n})<{ isHovered: boolean }>(({ theme, isHovered }) => ({\r\n fontWeight: 700,\r\n fontSize: '1.75rem',\r\n lineHeight: 1.2,\r\n color: theme.palette.dark.main,\r\n wordBreak: 'break-word',\r\n display: 'inline-block',\r\n position: 'relative',\r\n paddingBottom: '2px',\r\n borderBottom: isHovered ? `3px solid ${theme.palette.info.main}` : '3px solid transparent',\r\n transition: 'border-bottom 0.2s',\r\n [theme.breakpoints.down('lg')]: {\r\n fontSize: '1.25rem',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '1.125rem',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: '1rem',\r\n },\r\n}));\r\n\r\n\r\nconst StyledTooltip = styled(Box)(({ theme }) => ({\r\n position: 'fixed',\r\n transform: 'translate(-50%, -120%)',\r\n backgroundColor: theme.palette.grey[900],\r\n color: theme.palette.common.white,\r\n fontSize: '0.75rem',\r\n padding: theme.spacing(1, 2),\r\n borderRadius: theme.shape.borderRadius,\r\n whiteSpace: 'nowrap',\r\n zIndex: 1000,\r\n pointerEvents: 'none',\r\n [theme.breakpoints.up('sm')]: {\r\n fontSize: '0.875rem',\r\n padding: theme.spacing(1.5, 3),\r\n },\r\n}));\r\n\r\n\r\nconst StyledContent = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(2, 3, 3),\r\n [theme.breakpoints.up('sm')]: {\r\n padding: theme.spacing(2, 4, 4),\r\n },\r\n [theme.breakpoints.up('md')]: {\r\n padding: theme.spacing(2, 6, 6),\r\n },\r\n}));\r\n\r\n\r\nconst StyledContentWrapper = styled(Box)(({ theme }) => ({\r\n color: theme.palette.dark.main,\r\n lineHeight: 1.5,\r\n wordBreak: 'break-word',\r\n fontSize: 13,\r\n '& p': {\r\n margin: 0,\r\n marginBottom: theme.spacing(2),\r\n '&:last-child': {\r\n marginBottom: 0,\r\n },\r\n },\r\n '& ul, & ol': {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n '&:last-child': {\r\n marginBottom: 0,\r\n },\r\n },\r\n '& li': {\r\n marginBottom: theme.spacing(0.5),\r\n },\r\n}));\r\n\r\n\r\nexport function Concertina({ sections }: ConcertinaProps) {\r\n const [hoveredTitle, setHoveredTitle] = useState<string | null>(null);\r\n const [copiedId, setCopiedId] = useState<string | null>(null);\r\n const [tooltipPosition, setTooltipPosition] = useState<{ x: number; y: number } | null>(null);\r\n const theme = useTheme()\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\r\n\r\n const [openSections, setOpenSections] = useState<Set<string>>(() => {\r\n // Initialize with all sections open on desktop, closed on mobile\r\n return isDesktop ? new Set(sections.map(s => s.id)) : new Set();\r\n });\r\n\r\n\r\n React.useEffect(() => {\r\n if (isDesktop) {\r\n setOpenSections(new Set(sections.map(s => s.id)));\r\n } else {\r\n setOpenSections(new Set());\r\n }\r\n }, [isDesktop, sections]);\r\n\r\n\r\n\r\n const toggleSection = (id: string) => {\r\n const newOpenSections = new Set(openSections);\r\n if (newOpenSections.has(id)) {\r\n newOpenSections.delete(id);\r\n } else {\r\n newOpenSections.add(id);\r\n }\r\n setOpenSections(newOpenSections);\r\n };\r\n\r\n\r\n const copyJumpLink = (id: string, e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n const url = `${window.location.origin}${window.location.pathname}#${id}`;\r\n navigator.clipboard.writeText(url);\r\n setCopiedId(id);\r\n setTooltipPosition({ x: e.clientX, y: e.clientY });\r\n setTimeout(() => {\r\n setCopiedId(null);\r\n setTooltipPosition(null);\r\n }, 2000);\r\n };\r\n\r\n\r\n return (\r\n <StyledConcertina>\r\n {sections.map((section) => (\r\n <StyledSection key={section.id} id={section.id}>\r\n <StyledHeader\r\n onClick={() => toggleSection(section.id)}\r\n onMouseEnter={() => setHoveredTitle(section.id)}\r\n onMouseLeave={() => setHoveredTitle(null)}\r\n >\r\n <StyledTitleWrapper>\r\n <StyledTitle isHovered={hoveredTitle === section.id} variant=\"h3\">\r\n <StyledHashtag\r\n isVisible={true}\r\n color={hoveredTitle === section.id ? theme.palette.info.main : '#00000000'}\r\n onClick={(e) => copyJumpLink(section.id, e as any)}\r\n >\r\n #\r\n </StyledHashtag>\r\n {section.title}\r\n </StyledTitle>\r\n </StyledTitleWrapper>\r\n <ExpandCircleDownOutlined\r\n sx={{ fontSize: '1.5rem', transform: openSections.has(section.id) ? 'rotate(180deg)' : 'none' }}\r\n />\r\n </StyledHeader>\r\n <Collapse in={openSections.has(section.id)}>\r\n <StyledContent>\r\n <StyledContentWrapper>{section.content}</StyledContentWrapper>\r\n </StyledContent>\r\n </Collapse>\r\n </StyledSection>\r\n ))}\r\n {copiedId && tooltipPosition && (\r\n <StyledTooltip\r\n sx={{\r\n left: tooltipPosition.x,\r\n top: tooltipPosition.y,\r\n }}\r\n >\r\n Link copied\r\n </StyledTooltip>\r\n )}\r\n </StyledConcertina>\r\n );\r\n}\r\n"],"names":["React","_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Concertina.js","sources":["../../../../src/components/Concertina.tsx"],"sourcesContent":["import React, { useState } from \"react\";\r\nimport {\r\n Box,\r\n styled,\r\n Typography,\r\n Collapse,\r\n useMediaQuery,\r\n} from \"@mui/material\";\r\nimport {\r\n ExpandCircleDown,\r\n ExpandCircleDownOutlined,\r\n ExpandMoreRounded,\r\n} from \"@mui/icons-material\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\n\r\ninterface ConcertinaSection {\r\n id: string;\r\n title: string;\r\n content: React.ReactNode;\r\n}\r\n\r\ninterface ConcertinaProps {\r\n sections: ConcertinaSection[];\r\n}\r\n\r\nconst StyledConcertina = styled(Box)(({ theme }) => ({\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: theme.spacing(1),\r\n}));\r\n\r\nconst StyledSection = styled(Box)(({ theme }) => ({\r\n overflow: \"hidden\",\r\n}));\r\n\r\nconst StyledHeader = styled(Box)(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderTop: `2px solid ${theme.palette.grey[200]}`,\r\n borderBottom: `2px solid ${theme.palette.grey[200]}`,\r\n justifyContent: \"space-between\",\r\n cursor: \"pointer\",\r\n transition: \"background-color 0.2s\",\r\n gap: theme.spacing(2),\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.background.default,\r\n },\r\n padding: theme.spacing(2),\r\n}));\r\n\r\nconst StyledTitleWrapper = styled(Box)(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 0,\r\n flex: 1,\r\n minWidth: 0,\r\n}));\r\n\r\nconst StyledHashtag = styled(\"span\", {\r\n shouldForwardProp: (prop) => prop !== \"isVisible\" && prop !== \"color\",\r\n})<{ isVisible: boolean; color?: string }>(({ theme, isVisible, color }) => ({\r\n color: color || theme.palette.info.main,\r\n fontWeight: 700,\r\n fontSize: \"inherit\",\r\n opacity: isVisible ? 1 : 0,\r\n transition: \"opacity 0.2s\",\r\n marginRight: isVisible ? \"0.25em\" : 0,\r\n cursor: \"pointer\",\r\n}));\r\n\r\nconst StyledTitle = styled(Typography, {\r\n shouldForwardProp: (prop) => prop !== \"isHovered\",\r\n})<{ isHovered: boolean }>(({ theme, isHovered }) => ({\r\n fontWeight: 700,\r\n fontSize: \"1.75rem\",\r\n lineHeight: 1.2,\r\n color: theme.palette.dark.main,\r\n wordBreak: \"break-word\",\r\n display: \"inline-block\",\r\n position: \"relative\",\r\n paddingBottom: \"2px\",\r\n borderBottom: isHovered\r\n ? `3px solid ${theme.palette.info.main}`\r\n : \"3px solid transparent\",\r\n transition: \"border-bottom 0.2s\",\r\n [theme.breakpoints.down(\"lg\")]: {\r\n fontSize: \"1.25rem\",\r\n },\r\n [theme.breakpoints.down(\"md\")]: {\r\n fontSize: \"1.125rem\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n fontSize: \"1rem\",\r\n },\r\n}));\r\n\r\nconst StyledTooltip = styled(Box)(({ theme }) => ({\r\n position: \"fixed\",\r\n transform: \"translate(-50%, -120%)\",\r\n backgroundColor: theme.palette.grey[900],\r\n color: theme.palette.common.white,\r\n fontSize: \"0.75rem\",\r\n padding: theme.spacing(1, 2),\r\n borderRadius: theme.shape.borderRadius,\r\n whiteSpace: \"nowrap\",\r\n zIndex: 1000,\r\n pointerEvents: \"none\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n fontSize: \"0.875rem\",\r\n padding: theme.spacing(1.5, 3),\r\n },\r\n}));\r\n\r\nconst StyledContent = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(2, 3, 3),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n padding: theme.spacing(2, 4, 4),\r\n },\r\n [theme.breakpoints.up(\"md\")]: {\r\n padding: theme.spacing(2, 6, 6),\r\n },\r\n}));\r\n\r\nconst StyledContentWrapper = styled(Box)(({ theme }) => ({\r\n color: theme.palette.dark.main,\r\n lineHeight: 1.5,\r\n wordBreak: \"break-word\",\r\n fontSize: 13,\r\n \"& p\": {\r\n margin: 0,\r\n marginBottom: theme.spacing(2),\r\n \"&:last-child\": {\r\n marginBottom: 0,\r\n },\r\n },\r\n \"& ul, & ol\": {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n \"&:last-child\": {\r\n marginBottom: 0,\r\n },\r\n },\r\n \"& li\": {\r\n marginBottom: theme.spacing(0.5),\r\n },\r\n}));\r\n\r\nexport function Concertina({ sections }: ConcertinaProps) {\r\n const [hoveredTitle, setHoveredTitle] = useState<string | null>(null);\r\n const [copiedId, setCopiedId] = useState<string | null>(null);\r\n const [tooltipPosition, setTooltipPosition] = useState<{\r\n x: number;\r\n y: number;\r\n } | null>(null);\r\n const theme = useTheme();\r\n const isDesktop = useMediaQuery(theme.breakpoints.up(\"md\"));\r\n\r\n const [openSections, setOpenSections] = useState<Set<string>>(() => {\r\n // Initialize with all sections open on desktop, closed on mobile\r\n return isDesktop ? new Set(sections.map((s) => s.id)) : new Set();\r\n });\r\n\r\n const sectionIdsKey = JSON.stringify(sections.map((s) => s.id));\r\n\r\n React.useEffect(() => {\r\n const sectionIds = JSON.parse(sectionIdsKey) as string[];\r\n\r\n if (isDesktop) {\r\n setOpenSections(new Set(sectionIds));\r\n } else {\r\n setOpenSections(new Set());\r\n }\r\n }, [isDesktop, sectionIdsKey]);\r\n\r\n const toggleSection = (id: string) => {\r\n const newOpenSections = new Set(openSections);\r\n if (newOpenSections.has(id)) {\r\n newOpenSections.delete(id);\r\n } else {\r\n newOpenSections.add(id);\r\n }\r\n setOpenSections(newOpenSections);\r\n };\r\n\r\n const copyJumpLink = (id: string, e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n const url = `${window.location.origin}${window.location.pathname}#${id}`;\r\n navigator.clipboard.writeText(url);\r\n setCopiedId(id);\r\n setTooltipPosition({ x: e.clientX, y: e.clientY });\r\n setTimeout(() => {\r\n setCopiedId(null);\r\n setTooltipPosition(null);\r\n }, 2000);\r\n };\r\n\r\n return (\r\n <StyledConcertina>\r\n {sections.map((section) => (\r\n <StyledSection key={section.id} id={section.id}>\r\n <StyledHeader\r\n onClick={() => toggleSection(section.id)}\r\n onMouseEnter={() => setHoveredTitle(section.id)}\r\n onMouseLeave={() => setHoveredTitle(null)}\r\n >\r\n <StyledTitleWrapper>\r\n <StyledTitle isHovered={hoveredTitle === section.id} variant=\"h3\">\r\n <StyledHashtag\r\n isVisible={true}\r\n color={\r\n hoveredTitle === section.id\r\n ? theme.palette.info.main\r\n : \"#00000000\"\r\n }\r\n onClick={(e) => copyJumpLink(section.id, e as any)}\r\n >\r\n #\r\n </StyledHashtag>\r\n {section.title}\r\n </StyledTitle>\r\n </StyledTitleWrapper>\r\n <ExpandCircleDownOutlined\r\n sx={{\r\n fontSize: \"1.5rem\",\r\n transform: openSections.has(section.id)\r\n ? \"rotate(180deg)\"\r\n : \"none\",\r\n }}\r\n />\r\n </StyledHeader>\r\n <Collapse in={openSections.has(section.id)}>\r\n <StyledContent>\r\n <StyledContentWrapper>{section.content}</StyledContentWrapper>\r\n </StyledContent>\r\n </Collapse>\r\n </StyledSection>\r\n ))}\r\n {copiedId && tooltipPosition && (\r\n <StyledTooltip\r\n sx={{\r\n left: tooltipPosition.x,\r\n top: tooltipPosition.y,\r\n }}\r\n >\r\n Link copied\r\n </StyledTooltip>\r\n )}\r\n </StyledConcertina>\r\n );\r\n}\r\n"],"names":["React","_jsxs","_jsx"],"mappings":";;;;;;AAyBA,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACnD,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,aAAa,EAAE,QAAQ;AACvB,IAAA,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACtB,CAAA,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AAChD,IAAA,QAAQ,EAAE,QAAQ;AACnB,CAAA,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AAC/C,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,CAAA,UAAA,EAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE;IACjD,YAAY,EAAE,CAAA,UAAA,EAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE;AACpD,IAAA,cAAc,EAAE,eAAe;AAC/B,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,UAAU,EAAE,uBAAuB;AACnC,IAAA,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACrB,IAAA,SAAS,EAAE;AACT,QAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;AAClD,KAAA;AACD,IAAA,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1B,CAAA,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACrD,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,QAAQ,EAAE,CAAC;AACZ,CAAA,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE;AACnC,IAAA,iBAAiB,EAAE,CAAC,IAAI,KAAK,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,OAAO;AACtE,CAAA,CAAC,CAAyC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAC3E,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;AACvC,IAAA,UAAU,EAAE,GAAG;AACf,IAAA,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC;AAC1B,IAAA,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,CAAC;AACrC,IAAA,MAAM,EAAE,SAAS;AAClB,CAAA,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE;IACrC,iBAAiB,EAAE,CAAC,IAAI,KAAK,IAAI,KAAK,WAAW;CAClD,CAAC,CAAyB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM;AACpD,IAAA,UAAU,EAAE,GAAG;AACf,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,UAAU,EAAE,GAAG;AACf,IAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;AAC9B,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,YAAY,EAAE;UACV,aAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA;AACtC,UAAE,uBAAuB;AAC3B,IAAA,UAAU,EAAE,oBAAoB;IAChC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC9B,QAAA,QAAQ,EAAE,SAAS;AACpB,KAAA;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC9B,QAAA,QAAQ,EAAE,UAAU;AACrB,KAAA;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC9B,QAAA,QAAQ,EAAE,MAAM;AACjB,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AAChD,IAAA,QAAQ,EAAE,OAAO;AACjB,IAAA,SAAS,EAAE,wBAAwB;IACnC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,IAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AACjC,IAAA,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,IAAA,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;AACtC,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,aAAa,EAAE,MAAM;IACrB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC5B,QAAA,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/B,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;IAChD,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChC,KAAA;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChC,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACvD,IAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;AAC9B,IAAA,UAAU,EAAE,GAAG;AACf,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,QAAA,cAAc,EAAE;AACd,YAAA,YAAY,EAAE,CAAC;AAChB,SAAA;AACF,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3B,QAAA,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,QAAA,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7B,QAAA,cAAc,EAAE;AACd,YAAA,YAAY,EAAE,CAAC;AAChB,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACjC,KAAA;AACF,CAAA,CAAC,CAAC;AAEG,SAAU,UAAU,CAAC,EAAE,QAAQ,EAAmB,EAAA;IACtD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IACrE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IAC7D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAG5C,IAAI,CAAC;AACf,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE;AACxB,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAE3D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAc,MAAK;;QAEjE,OAAO,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACnE,IAAA,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAE/D,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAa;QAExD,IAAI,SAAS,EAAE;AACb,YAAA,eAAe,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC;aAAO;AACL,YAAA,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;QAC5B;AACF,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAE9B,IAAA,MAAM,aAAa,GAAG,CAAC,EAAU,KAAI;AACnC,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC;AAC7C,QAAA,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC3B,YAAA,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B;aAAO;AACL,YAAA,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB;QACA,eAAe,CAAC,eAAe,CAAC;AAClC,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,CAAmB,KAAI;QACvD,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA,CAAA,EAAI,EAAE,EAAE;AACxE,QAAA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC;QAClC,WAAW,CAAC,EAAE,CAAC;AACf,QAAA,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAClD,UAAU,CAAC,MAAK;YACd,WAAW,CAAC,IAAI,CAAC;YACjB,kBAAkB,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC;AACV,IAAA,CAAC;AAED,IAAA,QACEC,IAAA,CAAC,gBAAgB,eACd,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,MACpBA,IAAA,CAAC,aAAa,EAAA,EAAkB,EAAE,EAAE,OAAO,CAAC,EAAE,EAAA,QAAA,EAAA,CAC5CA,IAAA,CAAC,YAAY,EAAA,EACX,OAAO,EAAE,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,EACxC,YAAY,EAAE,MAAM,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAC/C,YAAY,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,CAEzCC,IAAC,kBAAkB,EAAA,EAAA,QAAA,EACjBD,KAAC,WAAW,EAAA,EAAC,SAAS,EAAE,YAAY,KAAK,OAAO,CAAC,EAAE,EAAE,OAAO,EAAC,IAAI,EAAA,QAAA,EAAA,CAC/DC,IAAC,aAAa,EAAA,EACZ,SAAS,EAAE,IAAI,EACf,KAAK,EACH,YAAY,KAAK,OAAO,CAAC;AACvB,kDAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACrB,kDAAE,WAAW,EAEjB,OAAO,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAQ,CAAC,EAAA,QAAA,EAAA,GAAA,EAAA,CAGpC,EACf,OAAO,CAAC,KAAK,CAAA,EAAA,CACF,EAAA,CACK,EACrBA,GAAA,CAAC,wBAAwB,EAAA,EACvB,EAAE,EAAE;AACF,oCAAA,QAAQ,EAAE,QAAQ;oCAClB,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACpC,0CAAE;AACF,0CAAE,MAAM;iCACX,EAAA,CACD,CAAA,EAAA,CACW,EACfA,GAAA,CAAC,QAAQ,IAAC,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAA,QAAA,EACxCA,IAAC,aAAa,EAAA,EAAA,QAAA,EACZA,IAAC,oBAAoB,EAAA,EAAA,QAAA,EAAE,OAAO,CAAC,OAAO,GAAwB,EAAA,CAChD,EAAA,CACP,KAnCO,OAAO,CAAC,EAAE,CAoCd,CACjB,CAAC,EACD,QAAQ,IAAI,eAAe,KAC1BA,GAAA,CAAC,aAAa,EAAA,EACZ,EAAE,EAAE;oBACF,IAAI,EAAE,eAAe,CAAC,CAAC;oBACvB,GAAG,EAAE,eAAe,CAAC,CAAC;iBACvB,EAAA,QAAA,EAAA,aAAA,EAAA,CAGa,CACjB,CAAA,EAAA,CACgB;AAEvB;;;;"}
@@ -3,6 +3,6 @@ import { TextFieldProps } from '@mui/material';
3
3
  interface InputProps extends Omit<TextFieldProps, 'variant' | 'error'> {
4
4
  error?: string;
5
5
  }
6
- export declare const StyledLabel: import("@emotion/styled").StyledComponent<import("@mui/material").InputLabelOwnProps & Pick<import("@mui/material").FormLabelOwnProps, "color" | "filled"> & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "disabled" | "color" | "margin" | "className" | "style" | "classes" | "children" | "variant" | "sx" | "size" | "error" | "filled" | "focused" | "required" | "disableAnimation" | "shrink"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
6
+ export declare const StyledLabel: import("@emotion/styled").StyledComponent<import("@mui/material").InputLabelOwnProps & Pick<import("@mui/material").FormLabelOwnProps, "color" | "filled"> & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "style" | "color" | "margin" | "children" | "sx" | "className" | "classes" | "variant" | "disabled" | "size" | "error" | "filled" | "focused" | "required" | "disableAnimation" | "shrink"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
7
7
  export declare const Input: React.FC<InputProps>;
8
8
  export {};
@@ -48,7 +48,10 @@ const ToggleButton = styled(IconButton)(({ theme }) => ({
48
48
  },
49
49
  }));
50
50
  const MenuItemButton = styled(ListItemButton, {
51
- shouldForwardProp: (prop) => prop !== "isOpen" && prop !== "isActive" && prop !== "isPolicyActive",
51
+ shouldForwardProp: (prop) => prop !== "isOpen" &&
52
+ prop !== "isActive" &&
53
+ prop !== "isPolicyActive" &&
54
+ prop !== "depth",
52
55
  })(({ theme, isActive, isOpen, isPolicyActive, depth }) => ({
53
56
  borderRadius: isOpen
54
57
  ? `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`
@@ -60,17 +63,18 @@ const MenuItemButton = styled(ListItemButton, {
60
63
  justifyContent: isOpen ? "flex-start" : "center",
61
64
  backgroundClip: "padding-box",
62
65
  backgroundOrigin: "border-box",
66
+ // Default hover state for unselected items
63
67
  "&:hover": {
64
68
  backgroundColor: `#0000000D`,
65
69
  },
66
- ...(isActive && {
67
- backgroundColor: `${theme.palette.primary.main}1A`,
68
- }),
69
- ...(isPolicyActive && depth > 1 && {
70
- backgroundColor: `#0000000D`,
70
+ // 1. If the item is a parent policy/category wrapper (but not the active page itself)
71
+ ...(isPolicyActive &&
72
+ !isActive && {
73
+ backgroundColor: depth > 1 ? `#0000000D` : `${theme.palette.custom.tabBackgroundColor}`,
71
74
  }),
72
- ...(isPolicyActive && depth <= 1 && {
73
- backgroundColor: `${theme.palette.primary.main}1A`,
75
+ // 2. CRITICAL: If this is the actual active item, it always gets the blue background!
76
+ ...(isActive && {
77
+ backgroundColor: `${theme.palette.custom.tabBackgroundColor} !important`,
74
78
  }),
75
79
  }));
76
80
  const IconWrapper = styled(Box, {
@@ -129,7 +133,7 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
129
133
  primary: {
130
134
  style: {
131
135
  // textDecoration: isActive ? "underline" : "",
132
- fontWeight: isPolicyActive ? 700 : (depth > 0 ? 400 : 700)
136
+ fontWeight: isPolicyActive ? 700 : depth > 0 ? 400 : 700,
133
137
  },
134
138
  width: 200 - depth * 16, // Set to stop text from wrapping when sidebar is expanding and contracting
135
139
  ...(depth > 0
@@ -151,20 +155,20 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
151
155
  width: 32,
152
156
  height: 32,
153
157
  "&:hover": {
154
- backgroundColor: `${theme.palette.primary.main}1F`,
158
+ backgroundColor: `${theme.palette.custom.tabBackgroundColor}`,
155
159
  },
156
160
  }, children: jsx(ChevronRightRounded, { sx: {
157
161
  fontSize: 16,
158
- color: "#4D3019",
162
+ color: theme.palette.text.primary,
159
163
  transition: "transform 0.1s",
160
164
  transform: isExpanded() ? "rotate(90deg)" : "rotate(0deg)",
161
- } }) }))] }))] }), isExpanded() && isOpen && (jsx(Collapse, { in: true, timeout: "auto", children: jsxs(Box, { display: 'flex', flexDirection: 'row', children: [depth > 0 && (jsx(Divider, { orientation: "vertical", flexItem: true, sx: {
165
+ } }) }))] }))] }), isExpanded() && isOpen && (jsx(Collapse, { in: true, timeout: "auto", children: jsxs(Box, { display: "flex", flexDirection: "row", children: [depth > 0 && (jsx(Divider, { orientation: "vertical", flexItem: true, sx: {
162
166
  ml: 2,
163
167
  borderColor: `#00000033`,
164
- borderWidth: '1px',
165
- borderRightWidth: '1px',
168
+ borderWidth: "1px",
169
+ borderRightWidth: "1px",
166
170
  mt: 1,
167
- mb: 1
171
+ mb: 1,
168
172
  } })), jsx(List, { sx: { p: 0, mt: 1, mb: 1, flex: 1 }, children: item.items &&
169
173
  item.items.map((child) => (jsx(SidebarItem, { currentPath: currentPath, expandedSet: expandedSet, setExpand: onExpand, isOpen: isOpen, isAdmin: isAdmin, item: child, onNavigate: onNavigate, depth: depth + 1 }, child.id))) })] }) }))] }));
170
174
  };
@@ -174,7 +178,7 @@ const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n ac
174
178
  if (!item || item.items === undefined || item.items.length === 0) {
175
179
  continue;
176
180
  }
177
- const url = item.url?.replace(/-\d+$/, '');
181
+ const url = item.url?.replace(/-\d+$/, "");
178
182
  const isActive = currentPath.includes(url) ||
179
183
  currentPath.includes(item.title.toLowerCase());
180
184
  if (isActive) {
@@ -187,7 +191,7 @@ const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n ac
187
191
  };
188
192
  const theme = useTheme();
189
193
  const [expandedSet, setExpanded] = useState(() => new Set(findExpandItems(items)));
190
- const isMobile = !window.matchMedia(theme.breakpoints.up('lg').replace('@media ', '')).matches;
194
+ const isMobile = !window.matchMedia(theme.breakpoints.up("lg").replace("@media ", "")).matches;
191
195
  return (jsxs(Fragment, { children: [isOpen && (jsx(Box, { sx: {
192
196
  position: "fixed",
193
197
  inset: 0,
@@ -215,14 +219,14 @@ const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n ac
215
219
  width: "180px",
216
220
  fontSize: "18px",
217
221
  fontWeight: 700,
218
- color: "#4D3019",
222
+ color: theme.palette.text.primary,
219
223
  whiteSpace: "pre-line",
220
224
  flex: 1,
221
225
  pr: 2,
222
226
  }, children: centreName ?? "Centre Name" }), jsx(ToggleButton, { onClick: () => onToggle(), sx: { ml: "auto" }, "aria-label": "Collapse sidebar", children: jsx(KeyboardDoubleArrowLeftRounded, { sx: { fontSize: 20 } }) })] }), jsx(Box, { onClick: onOrgChange, sx: {
223
227
  px: 2,
224
228
  py: 1,
225
- borderBottom: `1px solid ${theme.palette.dark.main}1A`,
229
+ borderBottom: `1px solid ${theme.palette.custom.tabBackgroundColor}`,
226
230
  flexShrink: 0,
227
231
  position: "relative",
228
232
  display: "flex",
@@ -235,11 +239,14 @@ const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n ac
235
239
  flexDirection: "row",
236
240
  alignItems: "center",
237
241
  py: 1,
238
- }, children: [jsx(ImportExportRounded, { sx: { color: theme.palette.primary.main, mr: 1 } }), jsx(Typography, { sx: { color: theme.palette.primary.main }, children: "Change organisation" })] })) })] })) : (jsx(Box, { sx: {
242
+ }, children: [jsx(ImportExportRounded, { sx: {
243
+ color: theme.palette.primary.main,
244
+ mr: 1,
245
+ } }), jsx(Typography, { sx: { color: theme.palette.primary.main }, children: "Change organisation" })] })) })] })) : (jsx(Box, { sx: {
239
246
  px: 1,
240
247
  py: 3,
241
248
  mb: 1,
242
- borderBottom: `1px solid ${theme.palette.dark.main}1A`,
249
+ borderBottom: `1px solid ${theme.palette.custom.tabBackgroundColor}`,
243
250
  display: "flex",
244
251
  justifyContent: "center",
245
252
  }, children: jsx(ToggleButton, { onClick: onToggle, "aria-label": "Expand sidebar", children: jsx(KeyboardDoubleArrowRightRounded, { sx: { fontSize: 20 } }) }) })), jsx(Box, { sx: {
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarV2.js","sources":["../../../../src/components/SidebarV2.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Box,\r\n IconButton,\r\n Typography,\r\n List,\r\n ListItemButton,\r\n ListItemText,\r\n Collapse,\r\n styled,\r\n Divider,\r\n} from \"@mui/material\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\nimport {\r\n ChevronRightRounded,\r\n ImportExportRounded,\r\n KeyboardDoubleArrowLeftRounded,\r\n KeyboardDoubleArrowRightRounded,\r\n} from \"@mui/icons-material\";\r\n\r\nconst EXPANDED_WIDTH = \"288px\";\r\nconst COLLAPSED_WIDTH_SMALL = \"80px\";\r\nconst COLLAPSED_WIDTH_DEFAULT = \"64px\";\r\n\r\nexport enum Visibility {\r\n Admin = \"Admin\",\r\n Contributor = \"Contributor\",\r\n Community = \"Community\",\r\n}\r\n\r\nexport interface MenuItem {\r\n id: string | number;\r\n title: string;\r\n icon?: React.ReactNode;\r\n visibility?: Visibility;\r\n url?: string;\r\n items?: MenuItem[];\r\n}\r\n\r\nconst SidebarContainer = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n height: \"100vh\",\r\n position: \"sticky\",\r\n top: 0,\r\n paddingLeft: 0,\r\n overflow: \"hidden\",\r\n backgroundColor: \"#fff\",\r\n borderRight: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n transition: \"all 0.15s ease-out\",\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_DEFAULT,\r\n zIndex: 50,\r\n [theme.breakpoints.down(\"md\")]: {\r\n position: \"fixed\",\r\n left: isOpen ? 0 : `-${EXPANDED_WIDTH}`,\r\n width: EXPANDED_WIDTH,\r\n transition: \"all 0.4s ease-out\",\r\n },\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_SMALL,\r\n },\r\n}));\r\n\r\nconst ToggleButton = styled(IconButton)(({ theme }) => ({\r\n width: 40,\r\n height: 40,\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: \"#4D3019\",\r\n color: \"#fff\",\r\n \"&:hover\": {\r\n backgroundColor: \"#3d2614\",\r\n },\r\n}));\r\n\r\nconst MenuItemButton = styled(ListItemButton, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\" && prop !== \"isActive\" && prop !== \"isPolicyActive\",\r\n})<{ isActive?: boolean; isOpen: boolean, isPolicyActive?: boolean, depth: number }>(({ theme, isActive, isOpen, isPolicyActive, depth }) => ({\r\n borderRadius: isOpen\r\n ? `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`\r\n : theme.shape.borderRadius,\r\n paddingLeft: 0,\r\n paddingRight: isOpen ? theme.spacing(2) : 0,\r\n marginRight: isOpen ? 8 : 0,\r\n minHeight: 64,\r\n justifyContent: isOpen ? \"flex-start\" : \"center\",\r\n backgroundClip: \"padding-box\",\r\n backgroundOrigin: \"border-box\",\r\n \"&:hover\": {\r\n backgroundColor: `#0000000D`,\r\n },\r\n ...(isActive && {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n }),\r\n ...(isPolicyActive && depth > 1 && {\r\n backgroundColor: `#0000000D`,\r\n }),\r\n ...(isPolicyActive && depth <= 1 && {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n }),\r\n}));\r\n\r\nconst IconWrapper = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n width: isOpen ? 32 : 40,\r\n height: isOpen ? 32 : 40,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"transparent\",\r\n}));\r\n\r\nconst SidebarItem = ({\r\n isOpen,\r\n isAdmin,\r\n item,\r\n onNavigate,\r\n expandedSet,\r\n setExpand: onExpand,\r\n depth = 0,\r\n currentPath,\r\n openSidebar,\r\n}: {\r\n isOpen: boolean;\r\n isAdmin: boolean;\r\n item: MenuItem;\r\n onNavigate: (path: string) => void;\r\n expandedSet: Set<string | number>;\r\n setExpand: React.Dispatch<React.SetStateAction<Set<string | number>>>;\r\n depth?: number;\r\n currentPath: string;\r\n openSidebar?: () => void,\r\n}) => {\r\n // console.log(item.title, item.items);\r\n // Check visibility based on visibility state and isAdmin prop\r\n const isVisible =\r\n item.visibility === Visibility.Admin\r\n ? !!isAdmin\r\n : item.visibility === Visibility.Contributor || !item.visibility;\r\n if (!isVisible) {\r\n return null;\r\n }\r\n\r\n const theme = useTheme();\r\n // const nestedPadding = 1 + depth;\r\n\r\n const isExpanded = () => expandedSet.has(item.id);\r\n\r\n const toggleExpand = () => {\r\n if (!isExpanded()) {\r\n onExpand(new Set([...expandedSet, item.id]));\r\n } else {\r\n expandedSet.delete(item.id);\r\n onExpand(new Set(expandedSet));\r\n }\r\n };\r\n\r\n const isActive =\r\n currentPath.includes(item.url as string) ||\r\n currentPath.includes(item.title.toLowerCase() as string) ||\r\n isExpanded();\r\n\r\n const isPolicyActive = currentPath.includes(item.url as string) && depth > 0;\r\n\r\n return (\r\n <Box sx={{ mb: depth > 0 ? 0 : 1 }}>\r\n <MenuItemButton\r\n depth={depth}\r\n disableRipple\r\n isOpen={isOpen}\r\n onClick={() => {\r\n if (item.url) onNavigate(item.url)\r\n else if (item.items) {\r\n if (openSidebar && !isOpen) {\r\n if (!isExpanded())\r\n toggleExpand();\r\n openSidebar();\r\n } else {\r\n toggleExpand();\r\n }\r\n }\r\n }}\r\n isActive={isActive}\r\n isPolicyActive={isPolicyActive}\r\n title={!isOpen ? item.title : undefined}\r\n sx={{\r\n ...(depth > 0 && {\r\n pl: 2,\r\n }),\r\n }}\r\n >\r\n {item.icon && (\r\n <IconWrapper isOpen={isOpen} sx={{ ml: isOpen ? 2 : 0 }}>\r\n {item.icon}\r\n </IconWrapper>\r\n )}\r\n {isOpen && (\r\n <>\r\n <ListItemText\r\n primary={item.title}\r\n slotProps={{\r\n primary: {\r\n style: { \r\n // textDecoration: isActive ? \"underline\" : \"\",\r\n fontWeight: isPolicyActive ? 700 : (depth > 0 ? 400 : 700)},\r\n width: 200 - depth * 16, // Set to stop text from wrapping when sidebar is expanding and contracting\r\n ...(depth > 0\r\n ? {\r\n fontSize: \"0.875rem\",\r\n }\r\n : {\r\n fontSize: \"1rem\",\r\n fontWeight: 700,\r\n }),\r\n },\r\n }}\r\n sx={{ flex: 1, ml: 1 }}\r\n />\r\n {item.items && item.items.length > 0 && (\r\n <IconButton\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (item.items) toggleExpand();\r\n }}\r\n disableRipple\r\n sx={{\r\n ml: 0.5,\r\n borderRadius: 1,\r\n width: 32,\r\n height: 32,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}1F`,\r\n },\r\n }}\r\n >\r\n <ChevronRightRounded\r\n sx={{\r\n fontSize: 16,\r\n color: \"#4D3019\",\r\n transition: \"transform 0.1s\",\r\n transform: isExpanded() ? \"rotate(90deg)\" : \"rotate(0deg)\",\r\n }}\r\n />\r\n </IconButton>\r\n )}\r\n </>\r\n )}\r\n </MenuItemButton>\r\n {isExpanded() && isOpen && (\r\n <Collapse in={true} timeout=\"auto\">\r\n <Box display='flex' flexDirection='row'>\r\n {depth > 0 && (\r\n <Divider \r\n orientation=\"vertical\" \r\n flexItem \r\n sx={{ \r\n ml: 2,\r\n borderColor: `#00000033`,\r\n borderWidth: '1px',\r\n borderRightWidth: '1px',\r\n mt: 1,\r\n mb: 1\r\n }}\r\n />\r\n )}\r\n <List sx={{ p: 0, mt: 1, mb:1, flex: 1 }}>\r\n {item.items &&\r\n item.items.map((child) => (\r\n <SidebarItem\r\n key={child.id}\r\n currentPath={currentPath}\r\n expandedSet={expandedSet}\r\n setExpand={onExpand}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={child}\r\n onNavigate={onNavigate}\r\n depth={depth + 1}\r\n />\r\n ))}\r\n </List>\r\n </Box>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const SidebarV2 = ({\r\n isOpen,\r\n onToggle,\r\n centreName = \"Centre name goes here \\n across two lines\",\r\n onNavigate,\r\n items,\r\n isAdmin,\r\n currentPath,\r\n onOrgChange,\r\n hasMultipleOrganisations,\r\n}: {\r\n isOpen: boolean;\r\n onToggle: () => void;\r\n items: MenuItem[];\r\n centreName?: string;\r\n onNavigate: (path: string) => void;\r\n isAdmin: boolean;\r\n currentPath: string;\r\n onOrgChange: () => void;\r\n hasMultipleOrganisations: boolean;\r\n}) => {\r\n const findExpandItems = (items: MenuItem[]): (string | number)[] => {\r\n for (const item of items) {\r\n if (!item || item.items === undefined || item.items.length === 0) {\r\n continue;\r\n }\r\n const url = item.url?.replace(/-\\d+$/, '')\r\n const isActive =\r\n currentPath.includes(url as string) ||\r\n currentPath.includes(item.title.toLowerCase() as string);\r\n if (isActive) {\r\n return item.items\r\n ? [item.id, ...findExpandItems(item.items)]\r\n : [item.id];\r\n }\r\n }\r\n return [];\r\n };\r\n \r\n const theme = useTheme();\r\n const [expandedSet, setExpanded] = useState<Set<string | number>>(\r\n () => new Set(findExpandItems(items)),\r\n );\r\n const isMobile = !window.matchMedia(theme.breakpoints.up('lg').replace('@media ', '')).matches;\r\n\r\n return (\r\n <>\r\n {isOpen && (\r\n <Box\r\n sx={{\r\n position: \"fixed\",\r\n inset: 0,\r\n bgcolor: \"rgba(0, 0, 0, 0.5)\",\r\n zIndex: 40,\r\n display: { xs: \"block\", md: \"none\" },\r\n }}\r\n onClick={onToggle}\r\n />\r\n )}\r\n <SidebarContainer isOpen={isOpen}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", height: \"100%\" }}>\r\n {/* Sidebar Header */}\r\n {isOpen ? (\r\n <Box\r\n sx={{\r\n px: 2,\r\n py: 3,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n px: 2,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n }}\r\n >\r\n <Typography\r\n variant=\"h6\"\r\n sx={{\r\n width: \"180px\",\r\n fontSize: \"18px\",\r\n fontWeight: 700,\r\n color: \"#4D3019\",\r\n whiteSpace: \"pre-line\",\r\n flex: 1,\r\n pr: 2,\r\n }}\r\n >\r\n {centreName ?? \"Centre Name\"}\r\n </Typography>\r\n\r\n <ToggleButton\r\n onClick={() => onToggle()}\r\n sx={{ ml: \"auto\" }}\r\n aria-label=\"Collapse sidebar\"\r\n >\r\n <KeyboardDoubleArrowLeftRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n <Box\r\n onClick={onOrgChange}\r\n sx={{\r\n px: 2,\r\n py: 1,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n {hasMultipleOrganisations && (\r\n <Box\r\n className=\"org-change-content\"\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n py: 1,\r\n }}\r\n >\r\n <ImportExportRounded \r\n sx={{ color: theme.palette.primary.main, mr: 1 }} \r\n />\r\n <Typography sx={{ color: theme.palette.primary.main }}>\r\n Change organisation\r\n </Typography>\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n ) : (\r\n <Box\r\n sx={{\r\n px: 1,\r\n py: 3,\r\n mb: 1,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <ToggleButton onClick={onToggle} aria-label=\"Expand sidebar\">\r\n <KeyboardDoubleArrowRightRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n )}\r\n\r\n {/* Sidebar Items */}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n overflowY: \"auto\",\r\n px: isOpen ? 0 : 1,\r\n scrollbarWidth: \"thin\",\r\n pb: 3,\r\n }}\r\n >\r\n <List sx={{ p: 0 }}>\r\n {items.map((item) => (\r\n <SidebarItem\r\n currentPath={currentPath}\r\n key={item.id}\r\n expandedSet={expandedSet}\r\n setExpand={setExpanded}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={item}\r\n onNavigate={(path: string) => {\r\n if (isMobile && isOpen) onToggle();\r\n onNavigate(path);\r\n }}\r\n openSidebar={onToggle}\r\n />\r\n ))}\r\n </List>\r\n </Box>\r\n </Box>\r\n </SidebarContainer>\r\n </>\r\n );\r\n};\r\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"SidebarV2.js","sources":["../../../../src/components/SidebarV2.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Box,\r\n IconButton,\r\n Typography,\r\n List,\r\n ListItemButton,\r\n ListItemText,\r\n Collapse,\r\n styled,\r\n Divider,\r\n} from \"@mui/material\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\nimport {\r\n ChevronRightRounded,\r\n ImportExportRounded,\r\n KeyboardDoubleArrowLeftRounded,\r\n KeyboardDoubleArrowRightRounded,\r\n} from \"@mui/icons-material\";\r\n\r\nconst EXPANDED_WIDTH = \"288px\";\r\nconst COLLAPSED_WIDTH_SMALL = \"80px\";\r\nconst COLLAPSED_WIDTH_DEFAULT = \"64px\";\r\n\r\nexport enum Visibility {\r\n Admin = \"Admin\",\r\n Contributor = \"Contributor\",\r\n Community = \"Community\",\r\n}\r\n\r\nexport interface MenuItem {\r\n id: string | number;\r\n title: string;\r\n icon?: React.ReactNode;\r\n visibility?: Visibility;\r\n url?: string;\r\n items?: MenuItem[];\r\n}\r\n\r\nconst SidebarContainer = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n height: \"100vh\",\r\n position: \"sticky\",\r\n top: 0,\r\n paddingLeft: 0,\r\n overflow: \"hidden\",\r\n backgroundColor: \"#fff\",\r\n borderRight: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n transition: \"all 0.15s ease-out\",\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_DEFAULT,\r\n zIndex: 50,\r\n [theme.breakpoints.down(\"md\")]: {\r\n position: \"fixed\",\r\n left: isOpen ? 0 : `-${EXPANDED_WIDTH}`,\r\n width: EXPANDED_WIDTH,\r\n transition: \"all 0.4s ease-out\",\r\n },\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_SMALL,\r\n },\r\n}));\r\n\r\nconst ToggleButton = styled(IconButton)(({ theme }) => ({\r\n width: 40,\r\n height: 40,\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: \"#4D3019\",\r\n color: \"#fff\",\r\n \"&:hover\": {\r\n backgroundColor: \"#3d2614\",\r\n },\r\n}));\r\n\r\nconst MenuItemButton = styled(ListItemButton, {\r\n shouldForwardProp: (prop) =>\r\n prop !== \"isOpen\" &&\r\n prop !== \"isActive\" &&\r\n prop !== \"isPolicyActive\" &&\r\n prop !== \"depth\",\r\n})<{\r\n isActive?: boolean;\r\n isOpen: boolean;\r\n isPolicyActive?: boolean;\r\n depth: number;\r\n}>(({ theme, isActive, isOpen, isPolicyActive, depth }) => ({\r\n borderRadius: isOpen\r\n ? `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`\r\n : theme.shape.borderRadius,\r\n paddingLeft: 0,\r\n paddingRight: isOpen ? theme.spacing(2) : 0,\r\n marginRight: isOpen ? 8 : 0,\r\n minHeight: 64,\r\n justifyContent: isOpen ? \"flex-start\" : \"center\",\r\n backgroundClip: \"padding-box\",\r\n backgroundOrigin: \"border-box\",\r\n\r\n // Default hover state for unselected items\r\n \"&:hover\": {\r\n backgroundColor: `#0000000D`,\r\n },\r\n\r\n // 1. If the item is a parent policy/category wrapper (but not the active page itself)\r\n ...(isPolicyActive &&\r\n !isActive && {\r\n backgroundColor:\r\n depth > 1 ? `#0000000D` : `${theme.palette.custom.tabBackgroundColor}`,\r\n }),\r\n\r\n // 2. CRITICAL: If this is the actual active item, it always gets the blue background!\r\n ...(isActive && {\r\n backgroundColor: `${theme.palette.custom.tabBackgroundColor} !important`,\r\n }),\r\n}));\r\n\r\nconst IconWrapper = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n width: isOpen ? 32 : 40,\r\n height: isOpen ? 32 : 40,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"transparent\",\r\n}));\r\n\r\nconst SidebarItem = ({\r\n isOpen,\r\n isAdmin,\r\n item,\r\n onNavigate,\r\n expandedSet,\r\n setExpand: onExpand,\r\n depth = 0,\r\n currentPath,\r\n openSidebar,\r\n}: {\r\n isOpen: boolean;\r\n isAdmin: boolean;\r\n item: MenuItem;\r\n onNavigate: (path: string) => void;\r\n expandedSet: Set<string | number>;\r\n setExpand: React.Dispatch<React.SetStateAction<Set<string | number>>>;\r\n depth?: number;\r\n currentPath: string;\r\n openSidebar?: () => void;\r\n}) => {\r\n // console.log(item.title, item.items);\r\n // Check visibility based on visibility state and isAdmin prop\r\n const isVisible =\r\n item.visibility === Visibility.Admin\r\n ? !!isAdmin\r\n : item.visibility === Visibility.Contributor || !item.visibility;\r\n if (!isVisible) {\r\n return null;\r\n }\r\n\r\n const theme = useTheme();\r\n // const nestedPadding = 1 + depth;\r\n\r\n const isExpanded = () => expandedSet.has(item.id);\r\n\r\n const toggleExpand = () => {\r\n if (!isExpanded()) {\r\n onExpand(new Set([...expandedSet, item.id]));\r\n } else {\r\n expandedSet.delete(item.id);\r\n onExpand(new Set(expandedSet));\r\n }\r\n };\r\n\r\n const isActive =\r\n currentPath.includes(item.url as string) ||\r\n currentPath.includes(item.title.toLowerCase() as string) ||\r\n isExpanded();\r\n\r\n const isPolicyActive = currentPath.includes(item.url as string) && depth > 0;\r\n\r\n return (\r\n <Box sx={{ mb: depth > 0 ? 0 : 1 }}>\r\n <MenuItemButton\r\n depth={depth}\r\n disableRipple\r\n isOpen={isOpen}\r\n onClick={() => {\r\n if (item.url) onNavigate(item.url);\r\n else if (item.items) {\r\n if (openSidebar && !isOpen) {\r\n if (!isExpanded()) toggleExpand();\r\n openSidebar();\r\n } else {\r\n toggleExpand();\r\n }\r\n }\r\n }}\r\n isActive={isActive}\r\n isPolicyActive={isPolicyActive}\r\n title={!isOpen ? item.title : undefined}\r\n sx={{\r\n ...(depth > 0 && {\r\n pl: 2,\r\n }),\r\n }}\r\n >\r\n {item.icon && (\r\n <IconWrapper isOpen={isOpen} sx={{ ml: isOpen ? 2 : 0 }}>\r\n {item.icon}\r\n </IconWrapper>\r\n )}\r\n {isOpen && (\r\n <>\r\n <ListItemText\r\n primary={item.title}\r\n slotProps={{\r\n primary: {\r\n style: {\r\n // textDecoration: isActive ? \"underline\" : \"\",\r\n fontWeight: isPolicyActive ? 700 : depth > 0 ? 400 : 700,\r\n },\r\n width: 200 - depth * 16, // Set to stop text from wrapping when sidebar is expanding and contracting\r\n ...(depth > 0\r\n ? {\r\n fontSize: \"0.875rem\",\r\n }\r\n : {\r\n fontSize: \"1rem\",\r\n fontWeight: 700,\r\n }),\r\n },\r\n }}\r\n sx={{ flex: 1, ml: 1 }}\r\n />\r\n {item.items && item.items.length > 0 && (\r\n <IconButton\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (item.items) toggleExpand();\r\n }}\r\n disableRipple\r\n sx={{\r\n ml: 0.5,\r\n borderRadius: 1,\r\n width: 32,\r\n height: 32,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.custom.tabBackgroundColor}`,\r\n },\r\n }}\r\n >\r\n <ChevronRightRounded\r\n sx={{\r\n fontSize: 16,\r\n color: theme.palette.text.primary,\r\n transition: \"transform 0.1s\",\r\n transform: isExpanded() ? \"rotate(90deg)\" : \"rotate(0deg)\",\r\n }}\r\n />\r\n </IconButton>\r\n )}\r\n </>\r\n )}\r\n </MenuItemButton>\r\n {isExpanded() && isOpen && (\r\n <Collapse in={true} timeout=\"auto\">\r\n <Box display=\"flex\" flexDirection=\"row\">\r\n {depth > 0 && (\r\n <Divider\r\n orientation=\"vertical\"\r\n flexItem\r\n sx={{\r\n ml: 2,\r\n borderColor: `#00000033`,\r\n borderWidth: \"1px\",\r\n borderRightWidth: \"1px\",\r\n mt: 1,\r\n mb: 1,\r\n }}\r\n />\r\n )}\r\n <List sx={{ p: 0, mt: 1, mb: 1, flex: 1 }}>\r\n {item.items &&\r\n item.items.map((child) => (\r\n <SidebarItem\r\n key={child.id}\r\n currentPath={currentPath}\r\n expandedSet={expandedSet}\r\n setExpand={onExpand}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={child}\r\n onNavigate={onNavigate}\r\n depth={depth + 1}\r\n />\r\n ))}\r\n </List>\r\n </Box>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const SidebarV2 = ({\r\n isOpen,\r\n onToggle,\r\n centreName = \"Centre name goes here \\n across two lines\",\r\n onNavigate,\r\n items,\r\n isAdmin,\r\n currentPath,\r\n onOrgChange,\r\n hasMultipleOrganisations,\r\n}: {\r\n isOpen: boolean;\r\n onToggle: () => void;\r\n items: MenuItem[];\r\n centreName?: string;\r\n onNavigate: (path: string) => void;\r\n isAdmin: boolean;\r\n currentPath: string;\r\n onOrgChange: () => void;\r\n hasMultipleOrganisations: boolean;\r\n}) => {\r\n const findExpandItems = (items: MenuItem[]): (string | number)[] => {\r\n for (const item of items) {\r\n if (!item || item.items === undefined || item.items.length === 0) {\r\n continue;\r\n }\r\n const url = item.url?.replace(/-\\d+$/, \"\");\r\n const isActive =\r\n currentPath.includes(url as string) ||\r\n currentPath.includes(item.title.toLowerCase() as string);\r\n if (isActive) {\r\n return item.items\r\n ? [item.id, ...findExpandItems(item.items)]\r\n : [item.id];\r\n }\r\n }\r\n return [];\r\n };\r\n\r\n const theme = useTheme();\r\n const [expandedSet, setExpanded] = useState<Set<string | number>>(\r\n () => new Set(findExpandItems(items)),\r\n );\r\n const isMobile = !window.matchMedia(\r\n theme.breakpoints.up(\"lg\").replace(\"@media \", \"\"),\r\n ).matches;\r\n\r\n return (\r\n <>\r\n {isOpen && (\r\n <Box\r\n sx={{\r\n position: \"fixed\",\r\n inset: 0,\r\n bgcolor: \"rgba(0, 0, 0, 0.5)\",\r\n zIndex: 40,\r\n display: { xs: \"block\", md: \"none\" },\r\n }}\r\n onClick={onToggle}\r\n />\r\n )}\r\n <SidebarContainer isOpen={isOpen}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", height: \"100%\" }}>\r\n {/* Sidebar Header */}\r\n {isOpen ? (\r\n <Box\r\n sx={{\r\n px: 2,\r\n py: 3,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n px: 2,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n }}\r\n >\r\n <Typography\r\n variant=\"h6\"\r\n sx={{\r\n width: \"180px\",\r\n fontSize: \"18px\",\r\n fontWeight: 700,\r\n color: theme.palette.text.primary,\r\n whiteSpace: \"pre-line\",\r\n flex: 1,\r\n pr: 2,\r\n }}\r\n >\r\n {centreName ?? \"Centre Name\"}\r\n </Typography>\r\n\r\n <ToggleButton\r\n onClick={() => onToggle()}\r\n sx={{ ml: \"auto\" }}\r\n aria-label=\"Collapse sidebar\"\r\n >\r\n <KeyboardDoubleArrowLeftRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n <Box\r\n onClick={onOrgChange}\r\n sx={{\r\n px: 2,\r\n py: 1,\r\n borderBottom: `1px solid ${theme.palette.custom.tabBackgroundColor}`,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n {hasMultipleOrganisations && (\r\n <Box\r\n className=\"org-change-content\"\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n py: 1,\r\n }}\r\n >\r\n <ImportExportRounded\r\n sx={{\r\n color: theme.palette.primary.main,\r\n mr: 1,\r\n }}\r\n />\r\n <Typography sx={{ color: theme.palette.primary.main }}>\r\n Change organisation\r\n </Typography>\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n ) : (\r\n <Box\r\n sx={{\r\n px: 1,\r\n py: 3,\r\n mb: 1,\r\n borderBottom: `1px solid ${theme.palette.custom.tabBackgroundColor}`,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <ToggleButton onClick={onToggle} aria-label=\"Expand sidebar\">\r\n <KeyboardDoubleArrowRightRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n )}\r\n\r\n {/* Sidebar Items */}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n overflowY: \"auto\",\r\n px: isOpen ? 0 : 1,\r\n scrollbarWidth: \"thin\",\r\n pb: 3,\r\n }}\r\n >\r\n <List sx={{ p: 0 }}>\r\n {items.map((item) => (\r\n <SidebarItem\r\n currentPath={currentPath}\r\n key={item.id}\r\n expandedSet={expandedSet}\r\n setExpand={setExpanded}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={item}\r\n onNavigate={(path: string) => {\r\n if (isMobile && isOpen) onToggle();\r\n onNavigate(path);\r\n }}\r\n openSidebar={onToggle}\r\n />\r\n ))}\r\n </List>\r\n </Box>\r\n </Box>\r\n </SidebarContainer>\r\n </>\r\n );\r\n};\r\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React from "react";
2
2
  interface Section {
3
3
  id: string;
4
4
  title: string;