ece-docs-components 1.0.98 → 1.0.99

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.
@@ -7,115 +7,117 @@ var iconsMaterial = require('@mui/icons-material');
7
7
  var ThemeProvider = require('../ThemeProvider.js');
8
8
 
9
9
  const StyledConcertina = material.styled(material.Box)(({ theme }) => ({
10
- width: '100%',
11
- display: 'flex',
12
- flexDirection: 'column',
10
+ width: "100%",
11
+ display: "flex",
12
+ flexDirection: "column",
13
13
  gap: theme.spacing(1),
14
14
  }));
15
15
  const StyledSection = material.styled(material.Box)(({ theme }) => ({
16
- overflow: 'hidden',
16
+ overflow: "hidden",
17
17
  }));
18
18
  const StyledHeader = material.styled(material.Box)(({ theme }) => ({
19
- display: 'flex',
20
- alignItems: 'center',
19
+ display: "flex",
20
+ alignItems: "center",
21
21
  borderTop: `2px solid ${theme.palette.grey[200]}`,
22
22
  borderBottom: `2px solid ${theme.palette.grey[200]}`,
23
- justifyContent: 'space-between',
24
- cursor: 'pointer',
25
- transition: 'background-color 0.2s',
23
+ justifyContent: "space-between",
24
+ cursor: "pointer",
25
+ transition: "background-color 0.2s",
26
26
  gap: theme.spacing(2),
27
- '&:hover': {
27
+ "&:hover": {
28
28
  backgroundColor: theme.palette.background.default,
29
29
  },
30
30
  padding: theme.spacing(2),
31
31
  }));
32
32
  const StyledTitleWrapper = material.styled(material.Box)(({ theme }) => ({
33
- display: 'flex',
34
- alignItems: 'center',
33
+ display: "flex",
34
+ alignItems: "center",
35
35
  gap: 0,
36
36
  flex: 1,
37
37
  minWidth: 0,
38
38
  }));
39
- const StyledHashtag = material.styled('span', {
40
- shouldForwardProp: (prop) => prop !== 'isVisible' && prop !== 'color',
39
+ const StyledHashtag = material.styled("span", {
40
+ shouldForwardProp: (prop) => prop !== "isVisible" && prop !== "color",
41
41
  })(({ theme, isVisible, color }) => ({
42
42
  color: color || theme.palette.info.main,
43
43
  fontWeight: 700,
44
- fontSize: 'inherit',
44
+ fontSize: "inherit",
45
45
  opacity: isVisible ? 1 : 0,
46
- transition: 'opacity 0.2s',
47
- marginRight: isVisible ? '0.25em' : 0,
48
- cursor: 'pointer',
46
+ transition: "opacity 0.2s",
47
+ marginRight: isVisible ? "0.25em" : 0,
48
+ cursor: "pointer",
49
49
  }));
50
50
  const StyledTitle = material.styled(material.Typography, {
51
- shouldForwardProp: (prop) => prop !== 'isHovered',
51
+ shouldForwardProp: (prop) => prop !== "isHovered",
52
52
  })(({ theme, isHovered }) => ({
53
53
  fontWeight: 700,
54
- fontSize: '1.75rem',
54
+ fontSize: "1.75rem",
55
55
  lineHeight: 1.2,
56
56
  color: theme.palette.dark.main,
57
- wordBreak: 'break-word',
58
- display: 'inline-block',
59
- position: 'relative',
60
- paddingBottom: '2px',
61
- borderBottom: isHovered ? `3px solid ${theme.palette.info.main}` : '3px solid transparent',
62
- transition: 'border-bottom 0.2s',
63
- [theme.breakpoints.down('lg')]: {
64
- fontSize: '1.25rem',
57
+ wordBreak: "break-word",
58
+ display: "inline-block",
59
+ position: "relative",
60
+ paddingBottom: "2px",
61
+ borderBottom: isHovered
62
+ ? `3px solid ${theme.palette.info.main}`
63
+ : "3px solid transparent",
64
+ transition: "border-bottom 0.2s",
65
+ [theme.breakpoints.down("lg")]: {
66
+ fontSize: "1.25rem",
65
67
  },
66
- [theme.breakpoints.down('md')]: {
67
- fontSize: '1.125rem',
68
+ [theme.breakpoints.down("md")]: {
69
+ fontSize: "1.125rem",
68
70
  },
69
- [theme.breakpoints.down('sm')]: {
70
- fontSize: '1rem',
71
+ [theme.breakpoints.down("sm")]: {
72
+ fontSize: "1rem",
71
73
  },
72
74
  }));
73
75
  const StyledTooltip = material.styled(material.Box)(({ theme }) => ({
74
- position: 'fixed',
75
- transform: 'translate(-50%, -120%)',
76
+ position: "fixed",
77
+ transform: "translate(-50%, -120%)",
76
78
  backgroundColor: theme.palette.grey[900],
77
79
  color: theme.palette.common.white,
78
- fontSize: '0.75rem',
80
+ fontSize: "0.75rem",
79
81
  padding: theme.spacing(1, 2),
80
82
  borderRadius: theme.shape.borderRadius,
81
- whiteSpace: 'nowrap',
83
+ whiteSpace: "nowrap",
82
84
  zIndex: 1000,
83
- pointerEvents: 'none',
84
- [theme.breakpoints.up('sm')]: {
85
- fontSize: '0.875rem',
85
+ pointerEvents: "none",
86
+ [theme.breakpoints.up("sm")]: {
87
+ fontSize: "0.875rem",
86
88
  padding: theme.spacing(1.5, 3),
87
89
  },
88
90
  }));
89
91
  const StyledContent = material.styled(material.Box)(({ theme }) => ({
90
92
  padding: theme.spacing(2, 3, 3),
91
- [theme.breakpoints.up('sm')]: {
93
+ [theme.breakpoints.up("sm")]: {
92
94
  padding: theme.spacing(2, 4, 4),
93
95
  },
94
- [theme.breakpoints.up('md')]: {
96
+ [theme.breakpoints.up("md")]: {
95
97
  padding: theme.spacing(2, 6, 6),
96
98
  },
97
99
  }));
98
100
  const StyledContentWrapper = material.styled(material.Box)(({ theme }) => ({
99
101
  color: theme.palette.dark.main,
100
102
  lineHeight: 1.5,
101
- wordBreak: 'break-word',
103
+ wordBreak: "break-word",
102
104
  fontSize: 13,
103
- '& p': {
105
+ "& p": {
104
106
  margin: 0,
105
107
  marginBottom: theme.spacing(2),
106
- '&:last-child': {
108
+ "&:last-child": {
107
109
  marginBottom: 0,
108
110
  },
109
111
  },
110
- '& ul, & ol': {
112
+ "& ul, & ol": {
111
113
  marginTop: theme.spacing(1),
112
114
  marginBottom: theme.spacing(2),
113
115
  paddingLeft: theme.spacing(3),
114
- '&:last-child': {
116
+ "&:last-child": {
115
117
  marginBottom: 0,
116
118
  },
117
119
  },
118
- '& li': {
120
+ "& li": {
119
121
  marginBottom: theme.spacing(0.5),
120
122
  },
121
123
  }));
@@ -124,19 +126,21 @@ function Concertina({ sections }) {
124
126
  const [copiedId, setCopiedId] = React.useState(null);
125
127
  const [tooltipPosition, setTooltipPosition] = React.useState(null);
126
128
  const theme = ThemeProvider.useTheme();
127
- const isDesktop = material.useMediaQuery(theme.breakpoints.up('md'));
129
+ const isDesktop = material.useMediaQuery(theme.breakpoints.up("md"));
128
130
  const [openSections, setOpenSections] = React.useState(() => {
129
131
  // Initialize with all sections open on desktop, closed on mobile
130
- return isDesktop ? new Set(sections.map(s => s.id)) : new Set();
132
+ return isDesktop ? new Set(sections.map((s) => s.id)) : new Set();
131
133
  });
134
+ const sectionIdsKey = JSON.stringify(sections.map((s) => s.id));
132
135
  React.useEffect(() => {
136
+ const sectionIds = JSON.parse(sectionIdsKey);
133
137
  if (isDesktop) {
134
- setOpenSections(new Set(sections.map(s => s.id)));
138
+ setOpenSections(new Set(sectionIds));
135
139
  }
136
140
  else {
137
141
  setOpenSections(new Set());
138
142
  }
139
- }, [isDesktop, sections]);
143
+ }, [isDesktop, sectionIdsKey]);
140
144
  const toggleSection = (id) => {
141
145
  const newOpenSections = new Set(openSections);
142
146
  if (newOpenSections.has(id)) {
@@ -158,7 +162,14 @@ function Concertina({ sections }) {
158
162
  setTooltipPosition(null);
159
163
  }, 2000);
160
164
  };
161
- return (jsxRuntime.jsxs(StyledConcertina, { children: [sections.map((section) => (jsxRuntime.jsxs(StyledSection, { id: section.id, children: [jsxRuntime.jsxs(StyledHeader, { onClick: () => toggleSection(section.id), onMouseEnter: () => setHoveredTitle(section.id), onMouseLeave: () => setHoveredTitle(null), children: [jsxRuntime.jsx(StyledTitleWrapper, { children: jsxRuntime.jsxs(StyledTitle, { isHovered: hoveredTitle === section.id, variant: "h3", children: [jsxRuntime.jsx(StyledHashtag, { isVisible: true, color: hoveredTitle === section.id ? theme.palette.info.main : '#00000000', onClick: (e) => copyJumpLink(section.id, e), children: "#" }), section.title] }) }), jsxRuntime.jsx(iconsMaterial.ExpandCircleDownOutlined, { sx: { fontSize: '1.5rem', transform: openSections.has(section.id) ? 'rotate(180deg)' : 'none' } })] }), jsxRuntime.jsx(material.Collapse, { in: openSections.has(section.id), children: jsxRuntime.jsx(StyledContent, { children: jsxRuntime.jsx(StyledContentWrapper, { children: section.content }) }) })] }, section.id))), copiedId && tooltipPosition && (jsxRuntime.jsx(StyledTooltip, { sx: {
165
+ return (jsxRuntime.jsxs(StyledConcertina, { children: [sections.map((section) => (jsxRuntime.jsxs(StyledSection, { id: section.id, children: [jsxRuntime.jsxs(StyledHeader, { onClick: () => toggleSection(section.id), onMouseEnter: () => setHoveredTitle(section.id), onMouseLeave: () => setHoveredTitle(null), children: [jsxRuntime.jsx(StyledTitleWrapper, { children: jsxRuntime.jsxs(StyledTitle, { isHovered: hoveredTitle === section.id, variant: "h3", children: [jsxRuntime.jsx(StyledHashtag, { isVisible: true, color: hoveredTitle === section.id
166
+ ? theme.palette.info.main
167
+ : "#00000000", onClick: (e) => copyJumpLink(section.id, e), children: "#" }), section.title] }) }), jsxRuntime.jsx(iconsMaterial.ExpandCircleDownOutlined, { sx: {
168
+ fontSize: "1.5rem",
169
+ transform: openSections.has(section.id)
170
+ ? "rotate(180deg)"
171
+ : "none",
172
+ } })] }), jsxRuntime.jsx(material.Collapse, { in: openSections.has(section.id), children: jsxRuntime.jsx(StyledContent, { children: jsxRuntime.jsx(StyledContentWrapper, { children: section.content }) }) })] }, section.id))), copiedId && tooltipPosition && (jsxRuntime.jsx(StyledTooltip, { sx: {
162
173
  left: tooltipPosition.x,
163
174
  top: tooltipPosition.y,
164
175
  }, 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":["styled","Box","Typography","useState","useTheme","useMediaQuery","_jsxs","_jsx","ExpandCircleDownOutlined","Collapse"],"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":["styled","Box","Typography","useState","useTheme","useMediaQuery","_jsxs","_jsx","ExpandCircleDownOutlined","Collapse"],"mappings":"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"}