ece-docs-components 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/cjs/ThemeProvider.js +75 -6
  2. package/dist/cjs/ThemeProvider.js.map +1 -1
  3. package/dist/cjs/components/Alert.js +1 -1
  4. package/dist/cjs/components/Alert.js.map +1 -1
  5. package/dist/cjs/components/Concertina.js +82 -64
  6. package/dist/cjs/components/Concertina.js.map +1 -1
  7. package/dist/cjs/components/Input.js +4 -4
  8. package/dist/cjs/components/Input.js.map +1 -1
  9. package/dist/cjs/components/Modal.js +39 -15
  10. package/dist/cjs/components/Modal.js.map +1 -1
  11. package/dist/cjs/components/NoteBox.js +19 -17
  12. package/dist/cjs/components/NoteBox.js.map +1 -1
  13. package/dist/cjs/components/Sidebar.js +57 -86
  14. package/dist/cjs/components/Sidebar.js.map +1 -1
  15. package/dist/cjs/components/TableOfContents.js +11 -3
  16. package/dist/cjs/components/TableOfContents.js.map +1 -1
  17. package/dist/esm/ThemeProvider.js +75 -6
  18. package/dist/esm/ThemeProvider.js.map +1 -1
  19. package/dist/esm/components/Alert.js +1 -1
  20. package/dist/esm/components/Alert.js.map +1 -1
  21. package/dist/esm/components/Concertina.d.ts +2 -1
  22. package/dist/esm/components/Concertina.js +85 -67
  23. package/dist/esm/components/Concertina.js.map +1 -1
  24. package/dist/esm/components/Input.js +4 -4
  25. package/dist/esm/components/Input.js.map +1 -1
  26. package/dist/esm/components/Modal.js +41 -17
  27. package/dist/esm/components/Modal.js.map +1 -1
  28. package/dist/esm/components/NoteBox.js +19 -17
  29. package/dist/esm/components/NoteBox.js.map +1 -1
  30. package/dist/esm/components/Sidebar.d.ts +9 -1
  31. package/dist/esm/components/Sidebar.js +58 -87
  32. package/dist/esm/components/Sidebar.js.map +1 -1
  33. package/dist/esm/components/TableOfContents.d.ts +1 -0
  34. package/dist/esm/components/TableOfContents.js +12 -4
  35. package/dist/esm/components/TableOfContents.js.map +1 -1
  36. package/package.json +1 -1
@@ -8,6 +8,7 @@ var iconsMaterial = require('@mui/icons-material');
8
8
 
9
9
  const StyledDialog = material.styled(material.Dialog)(({ theme }) => ({
10
10
  '& .MuiDialog-paper': {
11
+ color: theme.palette.background.default,
11
12
  borderRadius: theme.shape.borderRadius,
12
13
  maxWidth: '896px',
13
14
  width: '100%',
@@ -15,18 +16,24 @@ const StyledDialog = material.styled(material.Dialog)(({ theme }) => ({
15
16
  },
16
17
  }));
17
18
  const NavButton = material.styled(material.IconButton)(({ theme }) => ({
18
- width: '40px',
19
+ width: 'auto',
19
20
  height: '40px',
21
+ borderRadius: 8,
20
22
  border: `2px solid ${theme.palette.dark.main}`,
21
23
  backgroundColor: theme.palette.light.main,
24
+ padding: theme.spacing(1, 2),
22
25
  '&:hover': {
23
- backgroundColor: theme.palette.dark.main,
24
- color: theme.palette.light.main,
26
+ backgroundColor: theme.palette.grey[100], // Changed from dark.main to grey[100]
27
+ color: theme.palette.dark.main, // Keep text dark instead of light
28
+ borderColor: theme.palette.dark.main, // Keep border dark
25
29
  },
26
30
  }));
27
31
  const Modal = ({ isOpen, onClose, status, description, defaultText, note, acceptSuggestion: initialAcceptSuggestion = true, onAcceptSuggestionChange, onSave, onSubmit, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, }) => {
28
32
  const [textValue, setTextValue] = React.useState(defaultText);
29
- const [acceptSuggestion, setAcceptSuggestion] = React.useState(initialAcceptSuggestion);
33
+ const [useDefaultValue, setUseDefaultValue] = React.useState(true);
34
+ const handleUseDefaultValueChange = (event) => {
35
+ setUseDefaultValue(event.target.checked);
36
+ };
30
37
  const statusConfig = {
31
38
  mandatory: {
32
39
  color: '#F5A623',
@@ -59,17 +66,18 @@ const Modal = ({ isOpen, onClose, status, description, defaultText, note, accept
59
66
  top: 16,
60
67
  right: 16,
61
68
  zIndex: 1,
62
- }, children: jsxRuntime.jsx(iconsMaterial.CloseRounded, { sx: { fontSize: 24 } }) }), jsxRuntime.jsxs(material.DialogContent, { sx: { p: { xs: 3, sm: 4, md: 6 } }, children: [jsxRuntime.jsx(material.Box, { sx: { mb: 3 }, children: jsxRuntime.jsx(material.Chip, { label: statusStyle.label, sx: {
69
+ }, children: jsxRuntime.jsx(iconsMaterial.CloseRounded, { sx: { fontSize: 24 } }) }), jsxRuntime.jsxs(material.DialogContent, { sx: { p: { xs: 3, sm: 4, md: 6 } }, children: [jsxRuntime.jsx(material.Box, { sx: { mb: 3 }, children: jsxRuntime.jsx(material.Chip, { label: statusStyle.label.toUpperCase(), sx: {
63
70
  backgroundColor: statusStyle.color,
64
- color: status === 'optional' ? '#4D3019' : '#fff',
71
+ color: status === 'optional' || status === 'mandatory' ? '#4D3019' : '#fff',
65
72
  fontWeight: 600,
66
73
  fontSize: '0.875rem',
67
74
  height: 'auto',
68
75
  py: 1,
76
+ borderRadius: 0,
69
77
  px: 2,
70
- } }) }), jsxRuntime.jsx(material.Typography, { sx: { mb: 3, lineHeight: 1.6 }, children: description }), status === 'action-required-note' && note && (jsxRuntime.jsx(material.Alert, { icon: jsxRuntime.jsx(iconsMaterial.ErrorOutlineRounded, { sx: { fontSize: 20 } }), severity: "error", sx: {
78
+ } }) }), jsxRuntime.jsx(material.Typography, { sx: { mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }, children: description }), status === 'action-required-note' && note && (jsxRuntime.jsx(material.Alert, { icon: jsxRuntime.jsx(iconsMaterial.ErrorOutlineRounded, { sx: { fontSize: 20 } }), severity: "error", sx: {
71
79
  mb: 2,
72
- backgroundColor: '#FFE6E6',
80
+ backgroundColor: '#FDFCEE',
73
81
  borderLeft: '4px solid #F56B6B',
74
82
  '& .MuiAlert-icon': {
75
83
  color: '#F56B6B',
@@ -79,7 +87,7 @@ const Modal = ({ isOpen, onClose, status, description, defaultText, note, accept
79
87
  },
80
88
  }, children: note })), status === 'accepted-note' && note && (jsxRuntime.jsx(material.Alert, { icon: jsxRuntime.jsx(iconsMaterial.StickyNote2Rounded, { sx: { fontSize: 20 } }), severity: "warning", sx: {
81
89
  mb: 2,
82
- backgroundColor: '#FFF9E6',
90
+ backgroundColor: '#FDFCEE',
83
91
  borderLeft: '4px solid #F5D76E',
84
92
  '& .MuiAlert-icon': {
85
93
  color: '#F5A623',
@@ -87,12 +95,18 @@ const Modal = ({ isOpen, onClose, status, description, defaultText, note, accept
87
95
  '& .MuiAlert-message': {
88
96
  color: '#4D3019',
89
97
  },
90
- }, children: note })), jsxRuntime.jsx(material.TextField, { multiline: true, rows: 4, fullWidth: true, value: textValue, onChange: (e) => setTextValue(e.target.value), disabled: acceptSuggestion, sx: {
98
+ }, children: note })), jsxRuntime.jsx(material.TextField, { multiline: true, rows: 6, fullWidth: true, value: textValue, onChange: (e) => setTextValue(e.target.value), disabled: useDefaultValue, sx: {
91
99
  mb: 2,
92
100
  '& .MuiOutlinedInput-root': {
93
- backgroundColor: acceptSuggestion ? 'rgba(0, 0, 0, 0.05)' : '#fff',
101
+ backgroundColor: useDefaultValue ? 'rgba(0, 0, 0, 0.05)' : '#fff',
102
+ borderRadius: 2,
94
103
  },
95
- } }), jsxRuntime.jsxs(material.Box, { sx: {
104
+ } }), jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: useDefaultValue, onChange: handleUseDefaultValueChange, sx: {
105
+ color: '#AC46FF',
106
+ '&.Mui-checked': {
107
+ color: '#AC46FF',
108
+ },
109
+ } }), label: "Use Default Value", sx: { mb: 3 } }), jsxRuntime.jsxs(material.Box, { sx: {
96
110
  display: 'flex',
97
111
  flexDirection: { xs: 'column', sm: 'row' },
98
112
  alignItems: { xs: 'stretch', sm: 'center' },
@@ -101,12 +115,22 @@ const Modal = ({ isOpen, onClose, status, description, defaultText, note, accept
101
115
  pt: 3,
102
116
  borderTop: '1px solid',
103
117
  borderColor: 'divider',
104
- }, children: [jsxRuntime.jsxs(material.Box, { sx: { display: 'flex', gap: 1.5 }, children: [jsxRuntime.jsx(Button.Button, { onClick: onSave, variant: "secondary", size: "md", children: "Save" }), jsxRuntime.jsx(Button.Button, { onClick: onSubmit, variant: "primary", size: "md", children: "Submit for review" }), jsxRuntime.jsx(Button.Button, { onClick: onDeclineWording, variant: "danger", size: "md", children: "Decline Wording" })] }), jsxRuntime.jsxs(material.Box, { sx: {
118
+ }, children: [jsxRuntime.jsxs(material.Box, { sx: { display: 'flex', gap: 1.5, flexWrap: 'wrap' }, children: [jsxRuntime.jsx(Button.Button, { onClick: onSave, variant: "outline", size: "md", children: "Save" }), jsxRuntime.jsx(Button.Button, { onClick: onSubmit, variant: "outline", size: "md", sx: {
119
+ backgroundColor: '#ac46ff52',
120
+ '&:hover': {
121
+ backgroundColor: '#ac46ff80', // Darker purple on hover
122
+ }
123
+ }, children: "Submit for review" }), jsxRuntime.jsx(Button.Button, { onClick: onDeclineWording, variant: "outline", size: "md", sx: {
124
+ backgroundColor: '#ff464652',
125
+ '&:hover': {
126
+ backgroundColor: '#ff464680', // Darker purple on hover
127
+ }
128
+ }, children: "Decline wording" })] }), jsxRuntime.jsxs(material.Box, { sx: {
105
129
  display: 'flex',
106
130
  alignItems: 'center',
107
- gap: 2,
131
+ gap: 1.5,
108
132
  justifyContent: { xs: 'space-between', sm: 'flex-end' },
109
- }, children: [jsxRuntime.jsxs(material.Box, { sx: { display: 'flex', gap: 1.5 }, children: [jsxRuntime.jsx(NavButton, { onClick: onPrevious, "aria-label": "Previous", children: jsxRuntime.jsx(iconsMaterial.ChevronLeftRounded, { sx: { fontSize: 20 } }) }), jsxRuntime.jsx(NavButton, { onClick: onNext, "aria-label": "Next", children: jsxRuntime.jsx(iconsMaterial.ChevronRightRounded, { sx: { fontSize: 20 } }) })] }), jsxRuntime.jsxs(material.Typography, { fontWeight: 500, fontSize: "1.125rem", sx: { ml: 1 }, children: [currentPage, "/", totalPages] })] })] })] })] }));
133
+ }, children: [jsxRuntime.jsxs(material.Typography, { fontWeight: 500, fontSize: "1.125rem", children: [currentPage, "/", totalPages] }), jsxRuntime.jsx(NavButton, { onClick: onPrevious, "aria-label": "Previous", children: jsxRuntime.jsx(material.Typography, { sx: { fontSize: 16, fontWeight: 500 }, children: "Previous" }) }), jsxRuntime.jsx(NavButton, { onClick: onNext, "aria-label": "Next", children: jsxRuntime.jsx(material.Typography, { sx: { fontSize: 16, fontWeight: 500 }, children: "Next" }) })] })] })] })] }));
110
134
  };
111
135
 
112
136
  exports.Modal = Modal;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../src/components/Modal.tsx"],"sourcesContent":["\n\nimport React, { useState } from 'react';\nimport {\n Dialog,\n DialogContent,\n IconButton,\n Box,\n Typography,\n TextField,\n Checkbox,\n FormControlLabel,\n Alert as MuiAlert,\n Chip,\n styled,\n} from '@mui/material';\nimport { Button } from './Button';\nimport { ChevronLeftRounded, ChevronRightRounded, CloseRounded, ErrorOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\n\ninterface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n status: 'mandatory' | 'optional' | 'accepted' | 'action-required' | 'action-required-note' | 'accepted-note';\n description: string;\n defaultText: string;\n note?: string;\n acceptSuggestion?: boolean;\n onAcceptSuggestionChange?: (checked: boolean) => void;\n onSave?: () => void;\n onSubmit?: () => void;\n onDeclineWording?: () => void;\n onPrevious?: () => void;\n onNext?: () => void;\n currentPage?: number;\n totalPages?: number;\n}\n\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\n '& .MuiDialog-paper': {\n borderRadius: theme.shape.borderRadius,\n maxWidth: '896px',\n width: '100%',\n maxHeight: '90vh',\n },\n}));\n\nconst NavButton = styled(IconButton)(({ theme }) => ({\n width: '40px',\n height: '40px',\n border: `2px solid ${theme.palette.dark.main}`,\n backgroundColor: theme.palette.light.main,\n '&:hover': {\n backgroundColor: theme.palette.dark.main,\n color: theme.palette.light.main,\n },\n}));\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n status,\n description,\n defaultText,\n note,\n acceptSuggestion: initialAcceptSuggestion = true,\n onAcceptSuggestionChange,\n onSave,\n onSubmit,\n onDeclineWording,\n onPrevious,\n onNext,\n currentPage = 1,\n totalPages = 1,\n}) => {\n const [textValue, setTextValue] = useState(defaultText);\n const [acceptSuggestion, setAcceptSuggestion] = useState(initialAcceptSuggestion);\n\n const handleAcceptSuggestionChange = (checked: boolean) => {\n setAcceptSuggestion(checked);\n onAcceptSuggestionChange?.(checked);\n };\n\n const statusConfig = {\n mandatory: {\n color: '#F5A623',\n label: 'Mandatory',\n },\n optional: {\n color: '#F5D76E',\n label: 'Optional',\n },\n accepted: {\n color: '#A3D977',\n label: 'Accepted',\n },\n 'action-required': {\n color: '#F56B6B',\n label: 'Action Required',\n },\n 'action-required-note': {\n color: '#F56B6B',\n label: 'Action Required',\n },\n 'accepted-note': {\n color: '#A3D977',\n label: 'Accepted',\n },\n };\n\n const statusStyle = statusConfig[status];\n\n return (\n <StyledDialog open={isOpen} onClose={onClose} maxWidth=\"md\" fullWidth>\n <IconButton\n onClick={onClose}\n sx={{\n position: 'absolute',\n top: 16,\n right: 16,\n zIndex: 1,\n }}\n >\n <CloseRounded sx={{fontSize:24}} />\n </IconButton>\n\n <DialogContent sx={{ p: { xs: 3, sm: 4, md: 6 } }}>\n <Box sx={{ mb: 3 }}>\n <Chip\n label={statusStyle.label}\n sx={{\n backgroundColor: statusStyle.color,\n color: status === 'optional' ? '#4D3019' : '#fff',\n fontWeight: 600,\n fontSize: '0.875rem',\n height: 'auto',\n py: 1,\n px: 2,\n }}\n />\n </Box>\n\n <Typography sx={{ mb: 3, lineHeight: 1.6 }}>\n {description}\n </Typography>\n\n {status === 'action-required-note' && note && (\n <MuiAlert\n icon={<ErrorOutlineRounded sx={{fontSize:20}} />}\n severity=\"error\"\n sx={{\n mb: 2,\n backgroundColor: '#FFE6E6',\n borderLeft: '4px solid #F56B6B',\n '& .MuiAlert-icon': {\n color: '#F56B6B',\n },\n '& .MuiAlert-message': {\n color: '#4D3019',\n },\n }}\n >\n {note}\n </MuiAlert>\n )}\n\n {status === 'accepted-note' && note && (\n <MuiAlert\n icon={<StickyNote2Rounded sx={{fontSize:20}} />}\n severity=\"warning\"\n sx={{\n mb: 2,\n backgroundColor: '#FFF9E6',\n borderLeft: '4px solid #F5D76E',\n '& .MuiAlert-icon': {\n color: '#F5A623',\n },\n '& .MuiAlert-message': {\n color: '#4D3019',\n },\n }}\n >\n {note}\n </MuiAlert>\n )}\n\n <TextField\n multiline\n rows={4}\n fullWidth\n value={textValue}\n onChange={(e) => setTextValue(e.target.value)}\n disabled={acceptSuggestion}\n sx={{\n mb: 2,\n '& .MuiOutlinedInput-root': {\n backgroundColor: acceptSuggestion ? 'rgba(0, 0, 0, 0.05)' : '#fff',\n },\n }}\n />\n\n <Box\n sx={{\n display: 'flex',\n flexDirection: { xs: 'column', sm: 'row' },\n alignItems: { xs: 'stretch', sm: 'center' },\n justifyContent: 'space-between',\n gap: 2,\n pt: 3,\n borderTop: '1px solid',\n borderColor: 'divider',\n }}\n >\n <Box sx={{ display: 'flex', gap: 1.5 }}>\n <Button onClick={onSave} variant=\"secondary\" size=\"md\">\n Save\n </Button>\n <Button onClick={onSubmit} variant=\"primary\" size=\"md\">\n Submit for review\n </Button>\n <Button onClick={onDeclineWording} variant=\"danger\" size=\"md\">\n Decline Wording\n </Button>\n </Box>\n\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 2,\n justifyContent: { xs: 'space-between', sm: 'flex-end' },\n }}\n >\n <Box sx={{ display: 'flex', gap: 1.5 }}>\n <NavButton onClick={onPrevious} aria-label=\"Previous\">\n <ChevronLeftRounded sx={{fontSize:20}} />\n </NavButton>\n <NavButton onClick={onNext} aria-label=\"Next\">\n <ChevronRightRounded sx={{fontSize:20}} />\n </NavButton>\n </Box>\n <Typography fontWeight={500} fontSize=\"1.125rem\" sx={{ ml: 1 }}>\n {currentPage}/{totalPages}\n </Typography>\n </Box>\n </Box>\n </DialogContent>\n </StyledDialog>\n );\n};"],"names":["styled","Dialog","IconButton","useState","_jsxs","_jsx","CloseRounded","DialogContent","Box","Chip","Typography","MuiAlert","ErrorOutlineRounded","StickyNote2Rounded","TextField","Button","ChevronLeftRounded","ChevronRightRounded"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../src/components/Modal.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n Dialog,\n DialogContent,\n IconButton,\n Box,\n Typography,\n TextField,\n Checkbox,\n FormControlLabel,\n Alert as MuiAlert,\n Chip,\n styled,\n} from '@mui/material';\nimport { Button } from './Button';\nimport { CloseRounded, ErrorOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\n\n\ninterface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n status: 'mandatory' | 'optional' | 'accepted' | 'action-required' | 'action-required-note' | 'accepted-note';\n description: string;\n defaultText: string;\n note?: string;\n acceptSuggestion?: boolean;\n onAcceptSuggestionChange?: (checked: boolean) => void;\n onSave?: () => void;\n onSubmit?: () => void;\n onDeclineWording?: () => void;\n onPrevious?: () => void;\n onNext?: () => void;\n currentPage?: number;\n totalPages?: number;\n}\n\n\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\n '& .MuiDialog-paper': {\n color: theme.palette.background.default,\n borderRadius: theme.shape.borderRadius,\n maxWidth: '896px',\n width: '100%',\n maxHeight: '90vh',\n },\n}));\n\n\nconst NavButton = styled(IconButton)(({ theme }) => ({\n width: 'auto',\n height: '40px',\n borderRadius: 8,\n border: `2px solid ${theme.palette.dark.main}`,\n backgroundColor: theme.palette.light.main,\n padding: theme.spacing(1, 2),\n '&:hover': {\n backgroundColor: theme.palette.grey[100], // Changed from dark.main to grey[100]\n color: theme.palette.dark.main, // Keep text dark instead of light\n borderColor: theme.palette.dark.main, // Keep border dark\n },\n}));\n\n\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n status,\n description,\n defaultText,\n note,\n acceptSuggestion: initialAcceptSuggestion = true,\n onAcceptSuggestionChange,\n onSave,\n onSubmit,\n onDeclineWording,\n onPrevious,\n onNext,\n currentPage = 1,\n totalPages = 1,\n}) => {\n const [textValue, setTextValue] = useState(defaultText);\n const [useDefaultValue, setUseDefaultValue] = useState(true);\n\n\n const handleUseDefaultValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setUseDefaultValue(event.target.checked);\n };\n\n\n const statusConfig = {\n mandatory: {\n color: '#F5A623',\n label: 'Mandatory',\n },\n optional: {\n color: '#F5D76E',\n label: 'Optional',\n },\n accepted: {\n color: '#A3D977',\n label: 'Accepted',\n },\n 'action-required': {\n color: '#F56B6B',\n label: 'Action Required',\n },\n 'action-required-note': {\n color: '#F56B6B',\n label: 'Action Required',\n },\n 'accepted-note': {\n color: '#A3D977',\n label: 'Accepted',\n },\n };\n\n\n const statusStyle = statusConfig[status];\n\n\n return (\n <StyledDialog open={isOpen} onClose={onClose} maxWidth=\"md\" fullWidth>\n <IconButton\n onClick={onClose}\n sx={{\n position: 'absolute',\n top: 16,\n right: 16,\n zIndex: 1,\n }}\n >\n <CloseRounded sx={{ fontSize: 24 }} />\n </IconButton>\n\n\n <DialogContent sx={{ p: { xs: 3, sm: 4, md: 6 } }}>\n {/* Status Chip */}\n <Box sx={{ mb: 3 }}>\n <Chip\n label={statusStyle.label.toUpperCase()}\n sx={{\n backgroundColor: statusStyle.color,\n color: status === 'optional' || status === 'mandatory' ? '#4D3019' : '#fff',\n fontWeight: 600,\n fontSize: '0.875rem',\n height: 'auto',\n py: 1,\n borderRadius: 0,\n px: 2,\n }}\n />\n </Box>\n\n\n {/* Description */}\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }}>\n {description}\n </Typography>\n\n\n {/* Alerts */}\n {status === 'action-required-note' && note && (\n <MuiAlert\n icon={<ErrorOutlineRounded sx={{ fontSize: 20 }} />}\n severity=\"error\"\n sx={{\n mb: 2,\n backgroundColor: '#FDFCEE',\n borderLeft: '4px solid #F56B6B',\n '& .MuiAlert-icon': {\n color: '#F56B6B',\n },\n '& .MuiAlert-message': {\n color: '#4D3019',\n },\n }}\n >\n {note}\n </MuiAlert>\n )}\n\n\n {status === 'accepted-note' && note && (\n <MuiAlert\n icon={<StickyNote2Rounded sx={{ fontSize: 20 }} />}\n severity=\"warning\"\n sx={{\n mb: 2,\n backgroundColor: '#FDFCEE',\n borderLeft: '4px solid #F5D76E',\n '& .MuiAlert-icon': {\n color: '#F5A623',\n },\n '& .MuiAlert-message': {\n color: '#4D3019',\n },\n }}\n >\n {note}\n </MuiAlert>\n )}\n\n\n {/* Text Field */}\n <TextField\n multiline\n rows={6}\n fullWidth\n value={textValue}\n onChange={(e) => setTextValue(e.target.value)}\n disabled={useDefaultValue}\n sx={{\n mb: 2,\n '& .MuiOutlinedInput-root': {\n backgroundColor: useDefaultValue ? 'rgba(0, 0, 0, 0.05)' : '#fff',\n borderRadius: 2,\n },\n }}\n />\n\n\n {/* Checkbox */}\n <FormControlLabel\n control={\n <Checkbox\n checked={useDefaultValue}\n onChange={handleUseDefaultValueChange}\n sx={{\n color: '#AC46FF',\n '&.Mui-checked': {\n color: '#AC46FF',\n },\n }}\n />\n }\n label=\"Use Default Value\"\n sx={{ mb: 3 }}\n />\n\n\n {/* Footer with Buttons and Navigation */}\n <Box\n sx={{\n display: 'flex',\n flexDirection: { xs: 'column', sm: 'row' },\n alignItems: { xs: 'stretch', sm: 'center' },\n justifyContent: 'space-between',\n gap: 2,\n pt: 3,\n borderTop: '1px solid',\n borderColor: 'divider',\n }}\n >\n {/* Action Buttons */}\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\n <Button onClick={onSave} variant=\"outline\" size=\"md\">\n Save\n </Button>\n <Button onClick={onSubmit} variant=\"outline\" size=\"md\" sx={{\n backgroundColor: '#ac46ff52',\n '&:hover': {\n backgroundColor: '#ac46ff80', // Darker purple on hover\n }\n }}>\n Submit for review\n </Button>\n <Button onClick={onDeclineWording} variant=\"outline\" size=\"md\" sx={{\n backgroundColor: '#ff464652',\n '&:hover': {\n backgroundColor: '#ff464680', // Darker purple on hover\n }\n }}>\n Decline wording\n </Button>\n </Box>\n\n\n {/* Navigation */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n justifyContent: { xs: 'space-between', sm: 'flex-end' },\n }}\n >\n <Typography fontWeight={500} fontSize=\"1.125rem\">\n {currentPage}/{totalPages}\n </Typography>\n <NavButton onClick={onPrevious} aria-label=\"Previous\">\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Previous</Typography>\n </NavButton>\n <NavButton onClick={onNext} aria-label=\"Next\">\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Next</Typography>\n </NavButton>\n </Box>\n </Box>\n </DialogContent>\n </StyledDialog>\n );\n};\n"],"names":["styled","Dialog","IconButton","useState","_jsxs","_jsx","CloseRounded","DialogContent","Box","Chip","Typography","MuiAlert","ErrorOutlineRounded","StickyNote2Rounded","TextField","FormControlLabel","Checkbox","Button"],"mappings":"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"}
@@ -9,25 +9,9 @@ const NoteContainer = material.styled(material.Box)({
9
9
  position: 'relative',
10
10
  maxWidth: '100%',
11
11
  });
12
- const EditButton = material.styled(material.IconButton)(({ theme }) => ({
13
- position: 'absolute',
14
- right: -4,
15
- top: '50%',
16
- transform: 'translateY(-50%)',
17
- width: 24,
18
- height: 24,
19
- backgroundColor: '#4D3019',
20
- opacity: 0,
21
- transition: 'all 0.2s ease',
22
- boxShadow: '0 1px 3px rgba(0,0,0,0.12)',
23
- '&:hover': {
24
- backgroundColor: '#4D3019',
25
- transform: 'translateY(-50%) scale(1.1)',
26
- },
27
- }));
28
12
  const HighlightWrapper = material.styled(material.Box)(({ isHovered, highlightColor, highlightSelectedColor, isCustom }) => ({
29
13
  position: 'relative',
30
- display: 'inline-block',
14
+ display: 'inline-block', // Keep this as inline-block
31
15
  maxWidth: '100%',
32
16
  '&:hover .edit-button': {
33
17
  opacity: 1,
@@ -35,6 +19,7 @@ const HighlightWrapper = material.styled(material.Box)(({ isHovered, highlightCo
35
19
  '& .highlight-span': {
36
20
  background: isCustom ? highlightColor : (isHovered ? highlightSelectedColor : highlightColor),
37
21
  padding: '2px 4px',
22
+ borderBottom: '2px solid rgba(77, 48, 25, 0.3)',
38
23
  boxDecorationBreak: 'clone',
39
24
  WebkitBoxDecorationBreak: 'clone',
40
25
  transition: isCustom ? 'none' : 'background 0.2s ease',
@@ -46,6 +31,23 @@ const HighlightWrapper = material.styled(material.Box)(({ isHovered, highlightCo
46
31
  color: '#4D3019',
47
32
  },
48
33
  }));
34
+ const EditButton = material.styled(material.IconButton)(({ theme }) => ({
35
+ position: 'absolute',
36
+ top: 0,
37
+ right: 0,
38
+ transform: 'translate(50%, -50%)',
39
+ width: 20,
40
+ height: 20,
41
+ borderRadius: 4,
42
+ backgroundColor: '#4D3019',
43
+ opacity: 0,
44
+ transition: 'all 0.2s ease',
45
+ boxShadow: '0 1px 3px rgba(0,0,0,0.12)',
46
+ '&:hover': {
47
+ backgroundColor: '#4D3019',
48
+ transform: 'translate(50%, -50%) scale(1.1)',
49
+ },
50
+ }));
49
51
  const NoteBox = ({ variant = 'default', label, children, className = '', onEditClick, }) => {
50
52
  const [isHovered, setIsHovered] = React.useState(false);
51
53
  const variants = {
@@ -1 +1 @@
1
- {"version":3,"file":"NoteBox.js","sources":["../../../../src/components/NoteBox.tsx"],"sourcesContent":["\n\nimport React, { useState } from 'react';\nimport { Box, Typography, IconButton, styled } from '@mui/material';\nimport { EditRounded } from '@mui/icons-material';\n\ninterface NoteBoxProps {\n variant?: 'default' | 'mandatory' | 'optional' | 'pending' | 'accepted' | 'action-required' | 'custom';\n label?: string;\n children: React.ReactNode;\n className?: string;\n onEditClick?: () => void;\n}\n\nconst NoteContainer = styled(Box)({\n position: 'relative',\n maxWidth: '100%',\n});\n\nconst EditButton = styled(IconButton)(({ theme }) => ({\n position: 'absolute',\n right: -4,\n top: '50%',\n transform: 'translateY(-50%)',\n width: 24,\n height: 24,\n backgroundColor: '#4D3019',\n opacity: 0,\n transition: 'all 0.2s ease',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12)',\n '&:hover': {\n backgroundColor: '#4D3019',\n transform: 'translateY(-50%) scale(1.1)',\n },\n}));\n\nconst HighlightWrapper = styled(Box)<{ \n isHovered: boolean; \n highlightColor: string; \n highlightSelectedColor: string;\n isCustom: boolean;\n}>(({ isHovered, highlightColor, highlightSelectedColor, isCustom }) => ({\n position: 'relative',\n display: 'inline-block',\n maxWidth: '100%',\n '&:hover .edit-button': {\n opacity: 1,\n },\n '& .highlight-span': {\n background: isCustom ? highlightColor : (isHovered ? highlightSelectedColor : highlightColor),\n padding: '2px 4px',\n boxDecorationBreak: 'clone',\n WebkitBoxDecorationBreak: 'clone',\n transition: isCustom ? 'none' : 'background 0.2s ease',\n cursor: isCustom ? 'default' : 'pointer',\n fontSize: '13px',\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n display: 'inline',\n color: '#4D3019',\n },\n}));\n\nexport const NoteBox: React.FC<NoteBoxProps> = ({\n variant = 'default',\n label,\n children,\n className = '',\n onEditClick,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const variants = {\n default: {\n highlight: '#FFEACD',\n highlightSelected: '#FFC365',\n label: '',\n labelColor: '',\n },\n mandatory: {\n highlight: '#FFEACD',\n highlightSelected: '#FFC365',\n label: 'Not Answered (Mandatory)',\n labelColor: 'var(--color-secondary)',\n },\n optional: {\n highlight: '#FFF6D1',\n highlightSelected: '#FDE58E',\n label: 'Not Answered (Optional)',\n labelColor: 'var(--color-secondary)',\n },\n pending: {\n highlight: '#F5E2FF',\n highlightSelected: '#EBC7FF',\n label: 'Pending',\n labelColor: 'var(--color-secondary)',\n },\n accepted: {\n highlight: '#EDF9CD',\n highlightSelected: '#DBF59A',\n label: 'Accepted',\n labelColor: '#2D5016',\n },\n 'action-required': {\n highlight: '#FBEEEE',\n highlightSelected: '#FFBCB3',\n label: 'Action required before approval',\n labelColor: '#CC0000',\n },\n custom: {\n highlight: '#D9EDF8',\n highlightSelected: '#B3E0F2',\n label: 'Custom Text',\n labelColor: 'var(--color-secondary)',\n },\n };\n\n const style = variants[variant];\n const displayLabel = label || style.label;\n\n return (\n <NoteContainer className={className}>\n {displayLabel && (\n <Box sx={{ mb: 1 }}>\n <Typography\n component=\"span\"\n sx={{\n fontSize: '13px',\n fontWeight: 500,\n color: style.labelColor || 'rgba(0, 0, 0, 0.6)',\n }}\n >\n {displayLabel}\n </Typography>\n </Box>\n )}\n <HighlightWrapper\n isHovered={isHovered}\n highlightColor={style.highlight}\n highlightSelectedColor={style.highlightSelected}\n isCustom={variant === 'custom'}\n onMouseEnter={() => variant !== 'custom' && setIsHovered(true)}\n onMouseLeave={() => variant !== 'custom' && setIsHovered(false)}\n >\n <span className=\"highlight-span\">\n {children}\n </span>\n <EditButton\n className=\"edit-button\"\n onClick={(e) => {\n e.stopPropagation();\n if (onEditClick) {\n onEditClick();\n }\n }}\n title=\"Edit variable highlight\"\n size=\"small\"\n >\n <EditRounded sx={{fontSize:14, color:\"#FFFFFF\", strokeWidth:2}} />\n </EditButton>\n </HighlightWrapper>\n </NoteContainer>\n );\n};"],"names":["styled","Box","IconButton","useState","_jsxs","_jsx","Typography","EditRounded"],"mappings":"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"}
1
+ {"version":3,"file":"NoteBox.js","sources":["../../../../src/components/NoteBox.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Box, Typography, IconButton, styled } from '@mui/material';\nimport { EditRounded } from '@mui/icons-material';\n\n\ninterface NoteBoxProps {\n variant?: 'default' | 'mandatory' | 'optional' | 'pending' | 'accepted' | 'action-required' | 'custom';\n label?: string;\n children: React.ReactNode;\n className?: string;\n onEditClick?: () => void;\n}\n\n\nconst NoteContainer = styled(Box)({\n position: 'relative',\n maxWidth: '100%',\n});\n\nconst HighlightWrapper = styled(Box)<{ \n isHovered: boolean; \n highlightColor: string; \n highlightSelectedColor: string;\n isCustom: boolean;\n}>(({ isHovered, highlightColor, highlightSelectedColor, isCustom }) => ({\n position: 'relative',\n display: 'inline-block', // Keep this as inline-block\n maxWidth: '100%',\n '&:hover .edit-button': {\n opacity: 1,\n },\n '& .highlight-span': {\n background: isCustom ? highlightColor : (isHovered ? highlightSelectedColor : highlightColor),\n padding: '2px 4px',\n borderBottom: '2px solid rgba(77, 48, 25, 0.3)',\n boxDecorationBreak: 'clone',\n WebkitBoxDecorationBreak: 'clone',\n transition: isCustom ? 'none' : 'background 0.2s ease',\n cursor: isCustom ? 'default' : 'pointer',\n fontSize: '13px',\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n display: 'inline',\n color: '#4D3019',\n },\n}));\n\nconst EditButton = styled(IconButton)(({ theme }) => ({\n position: 'absolute',\n top: 0,\n right: 0,\n transform: 'translate(50%, -50%)',\n width: 20,\n height: 20,\n borderRadius: 4,\n backgroundColor: '#4D3019',\n opacity: 0,\n transition: 'all 0.2s ease',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12)',\n '&:hover': {\n backgroundColor: '#4D3019',\n transform: 'translate(50%, -50%) scale(1.1)',\n },\n}));\n\n\nexport const NoteBox: React.FC<NoteBoxProps> = ({\n variant = 'default',\n label,\n children,\n className = '',\n onEditClick,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n\n\n const variants = {\n default: {\n highlight: '#FFEACD',\n highlightSelected: '#FFC365',\n label: '',\n labelColor: '',\n },\n mandatory: {\n highlight: '#FFEACD',\n highlightSelected: '#FFC365',\n label: 'Not Answered (Mandatory)',\n labelColor: 'var(--color-secondary)',\n },\n optional: {\n highlight: '#FFF6D1',\n highlightSelected: '#FDE58E',\n label: 'Not Answered (Optional)',\n labelColor: 'var(--color-secondary)',\n },\n pending: {\n highlight: '#F5E2FF',\n highlightSelected: '#EBC7FF',\n label: 'Pending',\n labelColor: 'var(--color-secondary)',\n },\n accepted: {\n highlight: '#EDF9CD',\n highlightSelected: '#DBF59A',\n label: 'Accepted',\n labelColor: '#2D5016',\n },\n 'action-required': {\n highlight: '#FBEEEE',\n highlightSelected: '#FFBCB3',\n label: 'Action required before approval',\n labelColor: '#CC0000',\n },\n custom: {\n highlight: '#D9EDF8',\n highlightSelected: '#B3E0F2',\n label: 'Custom Text',\n labelColor: 'var(--color-secondary)',\n },\n };\n\n\n const style = variants[variant];\n const displayLabel = label || style.label;\n\n\n return (\n <NoteContainer className={className}>\n {displayLabel && (\n <Box sx={{ mb: 1 }}>\n <Typography\n component=\"span\"\n sx={{\n fontSize: '13px',\n fontWeight: 500,\n color: style.labelColor || 'rgba(0, 0, 0, 0.6)',\n }}\n >\n {displayLabel}\n </Typography>\n </Box>\n )}\n <HighlightWrapper\n isHovered={isHovered}\n highlightColor={style.highlight}\n highlightSelectedColor={style.highlightSelected}\n isCustom={variant === 'custom'}\n onMouseEnter={() => variant !== 'custom' && setIsHovered(true)}\n onMouseLeave={() => variant !== 'custom' && setIsHovered(false)}\n >\n <span className=\"highlight-span\">\n {children}\n </span>\n <EditButton\n className=\"edit-button\"\n onClick={(e) => {\n e.stopPropagation();\n if (onEditClick) {\n onEditClick();\n }\n }}\n title=\"Edit variable highlight\"\n size=\"small\"\n >\n <EditRounded sx={{fontSize:14, color:\"#FFFFFF\", strokeWidth:2}} />\n </EditButton>\n </HighlightWrapper>\n </NoteContainer>\n );\n};\n"],"names":["styled","Box","IconButton","useState","_jsxs","_jsx","Typography","EditRounded"],"mappings":"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"}
@@ -57,14 +57,12 @@ const IconWrapper = material.styled(material.Box)(({ theme, isOpen }) => ({
57
57
  flexShrink: 0,
58
58
  backgroundColor: theme.palette.custom?.iconColor || theme.palette.accent.main,
59
59
  }));
60
- const Sidebar = ({ isOpen, onToggle, centreName = "Centre name goes here \n across two lines", activePage = 'dashboard', onPageChange }) => {
60
+ const Sidebar = ({ isOpen, onToggle, centreName = "Centre name goes here \n across two lines", activePage = 'dashboard', onNavigate, policies = [] }) => {
61
61
  const theme = ThemeProvider.useTheme();
62
62
  const [expandedItems, setExpandedItems] = React.useState([]);
63
- const [expandedSubItems, setExpandedSubItems] = React.useState([]);
64
- const handlePageClick = (pageId) => {
65
- if (onPageChange) {
66
- onPageChange(pageId);
67
- }
63
+ const [expandedPolicies, setExpandedPolicies] = React.useState([]);
64
+ const togglePolicyItem = (itemId) => {
65
+ setExpandedPolicies((prev) => prev.includes(itemId) ? prev.filter((id) => id !== itemId) : [...prev, itemId]);
68
66
  };
69
67
  const menuItems = [
70
68
  {
@@ -72,38 +70,51 @@ const Sidebar = ({ isOpen, onToggle, centreName = "Centre name goes here \n acro
72
70
  label: 'Dashboard',
73
71
  icon: jsxRuntime.jsx(iconsMaterial.HomeRounded, { sx: { fontSize: 20, color: "#4D3019" } }),
74
72
  },
75
- {
76
- id: 'policies',
77
- label: 'Policies',
78
- icon: jsxRuntime.jsx(iconsMaterial.TextSnippetRounded, { sx: { fontSize: 20, color: "#4D3019" } }),
79
- hasChildren: true,
80
- children: [
81
- { id: 'legislation', label: 'Legislation' },
82
- { id: 'service-assurances', label: 'Service Assurances / Compliance Checklist' },
83
- {
84
- id: 'governance',
85
- label: 'Governance, Management, and Administration',
86
- hasChildren: true,
87
- children: [
88
- 'Philosophy and Values',
89
- 'Te Tiriti o Waitangi – policy options',
90
- 'Self-Review and Internal Evaluation',
91
- ],
92
- },
93
- {
94
- id: 'curriculum',
95
- label: 'Curriculum and Learning V1',
96
- hasChildren: true,
97
- children: [],
98
- },
99
- ],
100
- },
101
73
  {
102
74
  id: 'support',
103
75
  label: 'Support',
104
76
  icon: jsxRuntime.jsx(iconsMaterial.HelpOutlineRounded, { sx: { fontSize: 20, color: "#4D3019" } }),
105
77
  },
106
78
  ];
79
+ const renderPolicyItems = (items, depth = 0) => {
80
+ return items.map((item) => {
81
+ const hasChildren = item.items && item.items.length > 0;
82
+ const isExpanded = expandedPolicies.includes(item.id);
83
+ const paddingLeft = 8 + (depth * 2);
84
+ return (jsxRuntime.jsxs(material.Box, { children: [jsxRuntime.jsxs(material.Box, { sx: { display: 'flex', alignItems: 'stretch' }, children: [jsxRuntime.jsx(material.ListItemButton, { onClick: () => {
85
+ if (!hasChildren && onNavigate) {
86
+ onNavigate(item.url);
87
+ }
88
+ }, sx: {
89
+ flex: hasChildren ? 1 : 'auto',
90
+ width: hasChildren ? 'auto' : '100%',
91
+ pl: paddingLeft,
92
+ py: 1.25,
93
+ borderRadius: hasChildren
94
+ ? `${theme.shape.borderRadius}px 0 0 ${theme.shape.borderRadius}px`
95
+ : theme.shape.borderRadius,
96
+ '&:hover': {
97
+ backgroundColor: `${theme.palette.dark.main}0D`,
98
+ },
99
+ ...(activePage === item.url && {
100
+ backgroundColor: `${theme.palette.dark.main}1A`,
101
+ }),
102
+ }, children: jsxRuntime.jsx(material.ListItemText, { primary: item.title, primaryTypographyProps: {
103
+ fontSize: '0.875rem',
104
+ } }) }), hasChildren && (jsxRuntime.jsx(material.IconButton, { onClick: () => togglePolicyItem(item.id), sx: {
105
+ px: 1,
106
+ borderRadius: `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`,
107
+ '&:hover': {
108
+ backgroundColor: `${theme.palette.dark.main}0D`,
109
+ },
110
+ }, children: jsxRuntime.jsx(iconsMaterial.ChevronRightRounded, { sx: {
111
+ fontSize: 16,
112
+ color: '#4D3019',
113
+ transition: 'transform 0.2s',
114
+ transform: isExpanded ? 'rotate(90deg)' : 'rotate(0deg)',
115
+ } }) }))] }), hasChildren && isExpanded && (jsxRuntime.jsx(material.Collapse, { in: true, timeout: "auto", children: jsxRuntime.jsx(material.List, { sx: { p: 0, mt: 0.5 }, children: renderPolicyItems(item.items, depth + 1) }) }))] }, item.id));
116
+ });
117
+ };
107
118
  const toggleItem = (itemId) => {
108
119
  if (!isOpen) {
109
120
  onToggle();
@@ -113,9 +124,6 @@ const Sidebar = ({ isOpen, onToggle, centreName = "Centre name goes here \n acro
113
124
  setExpandedItems((prev) => prev.includes(itemId) ? prev.filter((id) => id !== itemId) : [...prev, itemId]);
114
125
  }
115
126
  };
116
- const toggleSubItem = (subItemId) => {
117
- setExpandedSubItems((prev) => prev.includes(subItemId) ? prev.filter((id) => id !== subItemId) : [...prev, subItemId]);
118
- };
119
127
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [isOpen && (jsxRuntime.jsx(material.Box, { sx: {
120
128
  position: 'fixed',
121
129
  inset: 0,
@@ -146,59 +154,22 @@ const Sidebar = ({ isOpen, onToggle, centreName = "Centre name goes here \n acro
146
154
  overflowY: 'auto',
147
155
  px: isOpen ? 1.5 : 1,
148
156
  py: 3,
149
- }, children: jsxRuntime.jsx(material.List, { sx: { p: 0 }, children: menuItems.map((item) => (jsxRuntime.jsxs(material.Box, { sx: { mb: 1 }, children: [jsxRuntime.jsxs(MenuItemButton, { isOpen: isOpen, isActive: activePage === item.id, onClick: () => {
150
- if (item.hasChildren) {
151
- toggleItem(item.id);
157
+ }, children: jsxRuntime.jsxs(material.List, { sx: { p: 0 }, children: [menuItems.map((item) => (jsxRuntime.jsx(material.Box, { sx: { mb: 1 }, children: jsxRuntime.jsxs(MenuItemButton, { isOpen: isOpen, isActive: activePage === item.id, onClick: () => {
158
+ if (!isOpen) {
159
+ onToggle();
152
160
  }
153
- else {
154
- if (!isOpen) {
155
- onToggle();
156
- }
157
- handlePageClick(item.id);
161
+ if (onNavigate) {
162
+ onNavigate(`/${item.id}`);
158
163
  }
159
- }, title: !isOpen ? item.label : undefined, children: [jsxRuntime.jsx(IconWrapper, { isOpen: isOpen, children: item.icon }), isOpen && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.ListItemText, { primary: item.label, primaryTypographyProps: {
160
- fontSize: '1rem',
161
- fontWeight: 600,
162
- }, sx: { flex: 1 } }), item.hasChildren && (jsxRuntime.jsx(material.Box, { children: expandedItems.includes(item.id) ? (jsxRuntime.jsx(iconsMaterial.ExpandLessRounded, { sx: { fontSize: 20, color: "#4D3019" } })) : (jsxRuntime.jsx(iconsMaterial.ExpandMoreRounded, { sx: { fontSize: 20, color: "#4D3019" } })) }))] }))] }), item.hasChildren && expandedItems.includes(item.id) && item.children && isOpen && (jsxRuntime.jsx(material.Collapse, { in: true, timeout: "auto", children: jsxRuntime.jsx(material.List, { sx: { p: 0, mt: 0.5 }, children: item.children.map((subItem) => (jsxRuntime.jsxs(material.Box, { children: [jsxRuntime.jsxs(material.Box, { sx: { display: 'flex', alignItems: 'stretch' }, children: [jsxRuntime.jsx(material.ListItemButton, { onClick: () => handlePageClick(subItem.id), sx: {
163
- flex: 1,
164
- pl: 8,
165
- py: 1.25,
166
- borderRadius: `${theme.shape.borderRadius}px 0 0 ${theme.shape.borderRadius}px`,
167
- '&:hover': {
168
- backgroundColor: `${theme.palette.dark.main}0D`,
169
- },
170
- ...(activePage === subItem.id && {
171
- backgroundColor: `${theme.palette.dark.main}1A`,
172
- }),
173
- }, children: jsxRuntime.jsx(material.ListItemText, { primary: subItem.label, primaryTypographyProps: {
174
- fontSize: '0.875rem',
175
- } }) }), subItem.hasChildren && subItem.children && subItem.children.length > 0 && (jsxRuntime.jsx(material.IconButton, { onClick: () => toggleSubItem(subItem.id), sx: {
176
- px: 1,
177
- borderRadius: `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`,
178
- '&:hover': {
179
- backgroundColor: `${theme.palette.dark.main}0D`,
180
- },
181
- }, children: jsxRuntime.jsx(iconsMaterial.ChevronRightRounded, { sx: {
182
- fontSize: 16,
183
- color: '#4D3019',
184
- transition: 'transform 0.2s',
185
- transform: expandedSubItems.includes(subItem.id) ? 'rotate(90deg)' : 'rotate(0deg)',
186
- } }) }))] }), subItem.hasChildren && expandedSubItems.includes(subItem.id) && subItem.children && (jsxRuntime.jsx(material.Collapse, { in: true, timeout: "auto", children: jsxRuntime.jsx(material.List, { sx: { p: 0, mt: 0.5 }, children: subItem.children.map((nestedItem, index) => {
187
- const nestedPageId = `${subItem.id}-${index}`;
188
- return (jsxRuntime.jsx(material.ListItemButton, { onClick: () => handlePageClick(nestedPageId), sx: {
189
- pl: 10,
190
- py: 1,
191
- borderRadius: theme.shape.borderRadius,
192
- '&:hover': {
193
- backgroundColor: `${theme.palette.dark.main}0D`,
194
- },
195
- ...(activePage === nestedPageId && {
196
- backgroundColor: `${theme.palette.dark.main}1A`,
197
- }),
198
- }, children: jsxRuntime.jsx(material.ListItemText, { primary: nestedItem, primaryTypographyProps: {
199
- fontSize: '0.875rem',
200
- } }) }, index));
201
- }) }) }))] }, subItem.id))) }) }))] }, item.id))) }) })] }) })] }));
164
+ }, title: !isOpen ? item.label : undefined, children: [jsxRuntime.jsx(IconWrapper, { isOpen: isOpen, children: item.icon }), isOpen && (jsxRuntime.jsx(material.ListItemText, { primary: item.label, primaryTypographyProps: {
165
+ fontSize: '1rem',
166
+ fontWeight: 600,
167
+ }, sx: { flex: 1 } }))] }) }, item.id))), policies.length > 0 && (jsxRuntime.jsxs(material.Box, { sx: { mb: 1 }, children: [jsxRuntime.jsxs(MenuItemButton, { isOpen: isOpen, isActive: activePage === 'policies', onClick: () => {
168
+ toggleItem('policies');
169
+ }, title: !isOpen ? 'Policies' : undefined, children: [jsxRuntime.jsx(IconWrapper, { isOpen: isOpen, children: jsxRuntime.jsx(iconsMaterial.TextSnippetRounded, { sx: { fontSize: 20, color: "#4D3019" } }) }), isOpen && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.ListItemText, { primary: "Policies", primaryTypographyProps: {
170
+ fontSize: '1rem',
171
+ fontWeight: 600,
172
+ }, sx: { flex: 1 } }), jsxRuntime.jsx(material.Box, { children: expandedItems.includes('policies') ? (jsxRuntime.jsx(iconsMaterial.ExpandLessRounded, { sx: { fontSize: 20, color: "#4D3019" } })) : (jsxRuntime.jsx(iconsMaterial.ExpandMoreRounded, { sx: { fontSize: 20, color: "#4D3019" } })) })] }))] }), expandedItems.includes('policies') && isOpen && (jsxRuntime.jsx(material.Collapse, { in: true, timeout: "auto", children: jsxRuntime.jsx(material.List, { sx: { p: 0, mt: 0.5 }, children: renderPolicyItems(policies) }) }))] }))] }) })] }) })] }));
202
173
  };
203
174
 
204
175
  exports.Sidebar = Sidebar;
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","sources":["../../../../src/components/Sidebar.tsx"],"sourcesContent":["\n\nimport React, { useState } from 'react';\nimport { Box, IconButton, Typography, List, ListItemButton, ListItemText, Collapse, styled } from '@mui/material';\nimport { useTheme } from '../ThemeProvider';\nimport { ChevronLeftRounded, ChevronRightRounded, ExpandLessRounded, ExpandMoreRounded, HelpOutlineRounded, HomeRounded, TextSnippetRounded } from '@mui/icons-material';\n\ninterface SidebarProps {\n isOpen: boolean;\n onToggle: () => void;\n centreName?: string;\n activePage?: string;\n onPageChange?: (pageId: string) => void;\n}\n\ninterface MenuItem {\n id: string;\n label: string;\n icon: React.ReactNode;\n hasChildren?: boolean;\n children?: SubMenuItem[];\n}\n\ninterface SubMenuItem {\n id: string;\n label: string;\n hasChildren?: boolean;\n children?: string[];\n}\n\nconst SidebarContainer = styled(Box)<{ isOpen: boolean }>(({ theme, isOpen }) => ({\n height: '100vh',\n position: 'sticky',\n top: 0,\n backgroundColor: '#fff',\n borderRight: `1px solid ${theme.palette.dark.main}1A`,\n flexShrink: 0,\n transition: 'all 0.3s ease-in-out',\n width: isOpen ? '288px' : '64px',\n zIndex: 50,\n [theme.breakpoints.down('md')]: {\n position: 'fixed',\n left: isOpen ? 0 : '-288px',\n width: '288px',\n },\n [theme.breakpoints.up('sm')]: {\n width: isOpen ? '288px' : '80px',\n },\n}));\n\nconst ToggleButton = styled(IconButton)(({ theme }) => ({\n width: 40,\n height: 40,\n borderRadius: theme.shape.borderRadius,\n backgroundColor: '#4D3019',\n color: '#fff',\n '&:hover': {\n backgroundColor: '#3d2614',\n },\n}));\n\nconst MenuItemButton = styled(ListItemButton)<{ isActive?: boolean; isOpen: boolean }>(({ theme, isActive, isOpen }) => ({\n borderRadius: theme.shape.borderRadius,\n padding: isOpen ? '10px 8px' : '12px 0',\n justifyContent: isOpen ? 'flex-start' : 'center',\n gap: isOpen ? theme.spacing(1) : 0,\n '&:hover': {\n backgroundColor: `${theme.palette.dark.main}0D`,\n },\n ...(isActive && {\n backgroundColor: `${theme.palette.dark.main}1A`,\n }),\n}));\n\nconst IconWrapper = styled(Box)<{ isOpen: boolean }>(({ theme, isOpen }) => ({\n width: isOpen ? 32 : 40,\n height: isOpen ? 32 : 40,\n borderRadius: theme.shape.borderRadius,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n backgroundColor: theme.palette.custom?.iconColor || theme.palette.accent.main,\n}));\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n isOpen,\n onToggle,\n centreName = \"Centre name goes here \\n across two lines\",\n activePage = 'dashboard',\n onPageChange\n}) => {\n const theme = useTheme();\n const [expandedItems, setExpandedItems] = useState<string[]>([]);\n const [expandedSubItems, setExpandedSubItems] = useState<string[]>([]);\n\n const handlePageClick = (pageId: string) => {\n if (onPageChange) {\n onPageChange(pageId);\n }\n };\n\n const menuItems: MenuItem[] = [\n {\n id: 'dashboard',\n label: 'Dashboard',\n icon: <HomeRounded sx={{fontSize: 20, color:\"#4D3019\"}} />,\n },\n {\n id: 'policies',\n label: 'Policies',\n icon: <TextSnippetRounded sx={{fontSize: 20, color:\"#4D3019\"}} />,\n hasChildren: true,\n children: [\n { id: 'legislation', label: 'Legislation' },\n { id: 'service-assurances', label: 'Service Assurances / Compliance Checklist' },\n {\n id: 'governance',\n label: 'Governance, Management, and Administration',\n hasChildren: true,\n children: [\n 'Philosophy and Values',\n 'Te Tiriti o Waitangi – policy options',\n 'Self-Review and Internal Evaluation',\n ],\n },\n {\n id: 'curriculum',\n label: 'Curriculum and Learning V1',\n hasChildren: true,\n children: [],\n },\n ],\n },\n {\n id: 'support',\n label: 'Support',\n icon: <HelpOutlineRounded sx={{fontSize: 20, color:\"#4D3019\"}} />,\n },\n ];\n\n const toggleItem = (itemId: string) => {\n if (!isOpen) {\n onToggle();\n setExpandedItems([itemId]);\n } else {\n setExpandedItems((prev) =>\n prev.includes(itemId) ? prev.filter((id) => id !== itemId) : [...prev, itemId]\n );\n }\n };\n\n const toggleSubItem = (subItemId: string) => {\n setExpandedSubItems((prev) =>\n prev.includes(subItemId) ? prev.filter((id) => id !== subItemId) : [...prev, subItemId]\n );\n };\n\n return (\n <>\n {isOpen && (\n <Box\n sx={{\n position: 'fixed',\n inset: 0,\n bgcolor: 'rgba(0, 0, 0, 0.5)',\n zIndex: 40,\n display: { xs: 'block', md: 'none' },\n }}\n onClick={onToggle}\n />\n )}\n <SidebarContainer isOpen={isOpen}>\n <Box sx={{ display: 'flex', flexDirection: 'column', height: '100%' }}>\n {isOpen && (\n <Box\n sx={{\n px: 2,\n py: 3,\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\n flexShrink: 0,\n position: 'relative',\n }}\n >\n <Typography\n variant=\"h6\"\n sx={{\n fontSize: '18px',\n fontWeight: 700,\n color: '#4D3019',\n lineHeight: 1.3,\n whiteSpace: 'pre-line',\n pr: 7,\n }}\n >\n {centreName}\n </Typography>\n\n <ToggleButton\n onClick={onToggle}\n sx={{ position: 'absolute', top: 24, right: 16 }}\n aria-label=\"Collapse sidebar\"\n >\n <ChevronLeftRounded sx={{fontSize: 20}} />\n </ToggleButton>\n </Box>\n )}\n\n {!isOpen && (\n <Box\n sx={{\n px: 1,\n py: 3,\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <ToggleButton onClick={onToggle} aria-label=\"Expand sidebar\">\n <ChevronRightRounded sx={{fontSize: 20}} />\n </ToggleButton>\n </Box>\n )}\n\n <Box\n sx={{\n flex: 1,\n overflowY: 'auto',\n px: isOpen ? 1.5 : 1,\n py: 3,\n }}\n >\n <List sx={{ p: 0 }}>\n {menuItems.map((item) => (\n <Box key={item.id} sx={{ mb: 1 }}>\n <MenuItemButton\n isOpen={isOpen}\n isActive={activePage === item.id}\n onClick={() => {\n if (item.hasChildren) {\n toggleItem(item.id);\n } else {\n if (!isOpen) {\n onToggle();\n }\n handlePageClick(item.id);\n }\n }}\n title={!isOpen ? item.label : undefined}\n >\n <IconWrapper isOpen={isOpen}>{item.icon}</IconWrapper>\n {isOpen && (\n <>\n <ListItemText\n primary={item.label}\n primaryTypographyProps={{\n fontSize: '1rem',\n fontWeight: 600,\n }}\n sx={{ flex: 1 }}\n />\n {item.hasChildren && (\n <Box>\n {expandedItems.includes(item.id) ? (\n <ExpandLessRounded sx={{fontSize: 20, color:\"#4D3019\"}} />\n ) : (\n <ExpandMoreRounded sx={{fontSize: 20, color:\"#4D3019\"}} />\n )}\n </Box>\n )}\n </>\n )}\n </MenuItemButton>\n\n {item.hasChildren && expandedItems.includes(item.id) && item.children && isOpen && (\n <Collapse in={true} timeout=\"auto\">\n <List sx={{ p: 0, mt: 0.5 }}>\n {item.children.map((subItem) => (\n <Box key={subItem.id}>\n <Box sx={{ display: 'flex', alignItems: 'stretch' }}>\n <ListItemButton\n onClick={() => handlePageClick(subItem.id)}\n sx={{\n flex: 1,\n pl: 8,\n py: 1.25,\n borderRadius: `${theme.shape.borderRadius}px 0 0 ${theme.shape.borderRadius}px`,\n '&:hover': {\n backgroundColor: `${theme.palette.dark.main}0D`,\n },\n ...(activePage === subItem.id && {\n backgroundColor: `${theme.palette.dark.main}1A`,\n }),\n }}\n >\n <ListItemText\n primary={subItem.label}\n primaryTypographyProps={{\n fontSize: '0.875rem',\n }}\n />\n </ListItemButton>\n {subItem.hasChildren && subItem.children && subItem.children.length > 0 && (\n <IconButton\n onClick={() => toggleSubItem(subItem.id)}\n sx={{\n px: 1,\n borderRadius: `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`,\n '&:hover': {\n backgroundColor: `${theme.palette.dark.main}0D`,\n },\n }}\n >\n <ChevronRightRounded\n sx={{\n fontSize: 16,\n color: '#4D3019',\n transition: 'transform 0.2s',\n transform: expandedSubItems.includes(subItem.id) ? 'rotate(90deg)' : 'rotate(0deg)',\n }}\n />\n </IconButton>\n )}\n </Box>\n\n {subItem.hasChildren && expandedSubItems.includes(subItem.id) && subItem.children && (\n <Collapse in={true} timeout=\"auto\">\n <List sx={{ p: 0, mt: 0.5 }}>\n {subItem.children.map((nestedItem, index) => {\n const nestedPageId = `${subItem.id}-${index}`;\n return (\n <ListItemButton\n key={index}\n onClick={() => handlePageClick(nestedPageId)}\n sx={{\n pl: 10,\n py: 1,\n borderRadius: theme.shape.borderRadius,\n '&:hover': {\n backgroundColor: `${theme.palette.dark.main}0D`,\n },\n ...(activePage === nestedPageId && {\n backgroundColor: `${theme.palette.dark.main}1A`,\n }),\n }}\n >\n <ListItemText\n primary={nestedItem}\n primaryTypographyProps={{\n fontSize: '0.875rem',\n }}\n />\n </ListItemButton>\n );\n })}\n </List>\n </Collapse>\n )}\n </Box>\n ))}\n </List>\n </Collapse>\n )}\n </Box>\n ))}\n </List>\n </Box>\n </Box>\n </SidebarContainer>\n </>\n );\n};"],"names":["styled","Box","IconButton","ListItemButton","useTheme","useState","_jsx","HomeRounded","TextSnippetRounded","HelpOutlineRounded","_jsxs","Typography","ChevronLeftRounded","ChevronRightRounded","List","_Fragment","ListItemText","ExpandLessRounded","ExpandMoreRounded","Collapse"],"mappings":"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"}
1
+ {"version":3,"file":"Sidebar.js","sources":["../../../../src/components/Sidebar.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Box, IconButton, Typography, List, ListItemButton, ListItemText, Collapse, styled } from '@mui/material';\nimport { useTheme } from '../ThemeProvider';\nimport { ChevronLeftRounded, ChevronRightRounded, ExpandLessRounded, ExpandMoreRounded, HelpOutlineRounded, HomeRounded, TextSnippetRounded } from '@mui/icons-material';\n\ninterface PolicyItem {\n title: string;\n id: number;\n newpage: boolean;\n url: string;\n items?: PolicyItem[];\n}\n\ninterface SidebarProps {\n isOpen: boolean;\n onToggle: () => void;\n centreName?: string;\n activePage?: string;\n onNavigate?: (url: string) => void;\n policies?: PolicyItem[];\n}\n\ninterface MenuItem {\n id: string;\n label: string;\n icon: React.ReactNode;\n}\n\nconst SidebarContainer = styled(Box)<{ isOpen: boolean }>(({ theme, isOpen }) => ({\n height: '100vh',\n position: 'sticky',\n top: 0,\n backgroundColor: '#fff',\n borderRight: `1px solid ${theme.palette.dark.main}1A`,\n flexShrink: 0,\n transition: 'all 0.3s ease-in-out',\n width: isOpen ? '288px' : '64px',\n zIndex: 50,\n [theme.breakpoints.down('md')]: {\n position: 'fixed',\n left: isOpen ? 0 : '-288px',\n width: '288px',\n },\n [theme.breakpoints.up('sm')]: {\n width: isOpen ? '288px' : '80px',\n },\n}));\n\nconst ToggleButton = styled(IconButton)(({ theme }) => ({\n width: 40,\n height: 40,\n borderRadius: theme.shape.borderRadius,\n backgroundColor: '#4D3019',\n color: '#fff',\n '&:hover': {\n backgroundColor: '#3d2614',\n },\n}));\n\nconst MenuItemButton = styled(ListItemButton)<{ isActive?: boolean; isOpen: boolean }>(({ theme, isActive, isOpen }) => ({\n borderRadius: theme.shape.borderRadius,\n padding: isOpen ? '10px 8px' : '12px 0',\n justifyContent: isOpen ? 'flex-start' : 'center',\n gap: isOpen ? theme.spacing(1) : 0,\n '&:hover': {\n backgroundColor: `${theme.palette.dark.main}0D`,\n },\n ...(isActive && {\n backgroundColor: `${theme.palette.dark.main}1A`,\n }),\n}));\n\nconst IconWrapper = styled(Box)<{ isOpen: boolean }>(({ theme, isOpen }) => ({\n width: isOpen ? 32 : 40,\n height: isOpen ? 32 : 40,\n borderRadius: theme.shape.borderRadius,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n backgroundColor: theme.palette.custom?.iconColor || theme.palette.accent.main,\n}));\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n isOpen,\n onToggle,\n centreName = \"Centre name goes here \\n across two lines\",\n activePage = 'dashboard',\n onNavigate,\n policies = []\n}) => {\n const theme = useTheme();\n const [expandedItems, setExpandedItems] = useState<string[]>([]);\n const [expandedPolicies, setExpandedPolicies] = useState<number[]>([]);\n\n const togglePolicyItem = (itemId: number) => {\n setExpandedPolicies((prev) =>\n prev.includes(itemId) ? prev.filter((id) => id !== itemId) : [...prev, itemId]\n );\n };\n\n const menuItems: MenuItem[] = [\n {\n id: 'dashboard',\n label: 'Dashboard',\n icon: <HomeRounded sx={{ fontSize: 20, color: \"#4D3019\" }} />,\n },\n {\n id: 'support',\n label: 'Support',\n icon: <HelpOutlineRounded sx={{ fontSize: 20, color: \"#4D3019\" }} />,\n },\n ];\n\n const renderPolicyItems = (items: PolicyItem[], depth: number = 0): React.ReactNode => {\n return items.map((item) => {\n const hasChildren = item.items && item.items.length > 0;\n const isExpanded = expandedPolicies.includes(item.id);\n const paddingLeft = 8 + (depth * 2);\n\n return (\n <Box key={item.id}>\n <Box sx={{ display: 'flex', alignItems: 'stretch' }}>\n <ListItemButton\n onClick={() => {\n if (!hasChildren && onNavigate) {\n onNavigate(item.url);\n }\n }}\n sx={{\n flex: hasChildren ? 1 : 'auto',\n width: hasChildren ? 'auto' : '100%',\n pl: paddingLeft,\n py: 1.25,\n borderRadius: hasChildren \n ? `${theme.shape.borderRadius}px 0 0 ${theme.shape.borderRadius}px`\n : theme.shape.borderRadius,\n '&:hover': {\n backgroundColor: `${theme.palette.dark.main}0D`,\n },\n ...(activePage === item.url && {\n backgroundColor: `${theme.palette.dark.main}1A`,\n }),\n }}\n >\n <ListItemText\n primary={item.title}\n primaryTypographyProps={{\n fontSize: '0.875rem',\n }}\n />\n </ListItemButton>\n {hasChildren && (\n <IconButton\n onClick={() => togglePolicyItem(item.id)}\n sx={{\n px: 1,\n borderRadius: `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`,\n '&:hover': {\n backgroundColor: `${theme.palette.dark.main}0D`,\n },\n }}\n >\n <ChevronRightRounded\n sx={{\n fontSize: 16,\n color: '#4D3019',\n transition: 'transform 0.2s',\n transform: isExpanded ? 'rotate(90deg)' : 'rotate(0deg)',\n }}\n />\n </IconButton>\n )}\n </Box>\n\n {hasChildren && isExpanded && (\n <Collapse in={true} timeout=\"auto\">\n <List sx={{ p: 0, mt: 0.5 }}>\n {renderPolicyItems(item.items!, depth + 1)}\n </List>\n </Collapse>\n )}\n </Box>\n );\n });\n };\n\n const toggleItem = (itemId: string) => {\n if (!isOpen) {\n onToggle();\n setExpandedItems([itemId]);\n } else {\n setExpandedItems((prev) =>\n prev.includes(itemId) ? prev.filter((id) => id !== itemId) : [...prev, itemId]\n );\n }\n };\n\n return (\n <>\n {isOpen && (\n <Box\n sx={{\n position: 'fixed',\n inset: 0,\n bgcolor: 'rgba(0, 0, 0, 0.5)',\n zIndex: 40,\n display: { xs: 'block', md: 'none' },\n }}\n onClick={onToggle}\n />\n )}\n <SidebarContainer isOpen={isOpen}>\n <Box sx={{ display: 'flex', flexDirection: 'column', height: '100%' }}>\n {isOpen && (\n <Box\n sx={{\n px: 2,\n py: 3,\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\n flexShrink: 0,\n position: 'relative',\n }}\n >\n <Typography\n variant=\"h6\"\n sx={{\n fontSize: '18px',\n fontWeight: 700,\n color: '#4D3019',\n lineHeight: 1.3,\n whiteSpace: 'pre-line',\n pr: 7,\n }}\n >\n {centreName}\n </Typography>\n\n <ToggleButton\n onClick={onToggle}\n sx={{ position: 'absolute', top: 24, right: 16 }}\n aria-label=\"Collapse sidebar\"\n >\n <ChevronLeftRounded sx={{ fontSize: 20 }} />\n </ToggleButton>\n </Box>\n )}\n\n {!isOpen && (\n <Box\n sx={{\n px: 1,\n py: 3,\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <ToggleButton onClick={onToggle} aria-label=\"Expand sidebar\">\n <ChevronRightRounded sx={{ fontSize: 20 }} />\n </ToggleButton>\n </Box>\n )}\n\n <Box\n sx={{\n flex: 1,\n overflowY: 'auto',\n px: isOpen ? 1.5 : 1,\n py: 3,\n }}\n >\n <List sx={{ p: 0 }}>\n {menuItems.map((item) => (\n <Box key={item.id} sx={{ mb: 1 }}>\n <MenuItemButton\n isOpen={isOpen}\n isActive={activePage === item.id}\n onClick={() => {\n if (!isOpen) {\n onToggle();\n }\n if (onNavigate) {\n onNavigate(`/${item.id}`);\n }\n }}\n title={!isOpen ? item.label : undefined}\n >\n <IconWrapper isOpen={isOpen}>{item.icon}</IconWrapper>\n {isOpen && (\n <ListItemText\n primary={item.label}\n primaryTypographyProps={{\n fontSize: '1rem',\n fontWeight: 600,\n }}\n sx={{ flex: 1 }}\n />\n )}\n </MenuItemButton>\n </Box>\n ))}\n\n {/* Dynamic Policies Section */}\n {policies.length > 0 && (\n <Box sx={{ mb: 1 }}>\n <MenuItemButton\n isOpen={isOpen}\n isActive={activePage === 'policies'}\n onClick={() => {\n toggleItem('policies');\n }}\n title={!isOpen ? 'Policies' : undefined}\n >\n <IconWrapper isOpen={isOpen}>\n <TextSnippetRounded sx={{ fontSize: 20, color: \"#4D3019\" }} />\n </IconWrapper>\n {isOpen && (\n <>\n <ListItemText\n primary=\"Policies\"\n primaryTypographyProps={{\n fontSize: '1rem',\n fontWeight: 600,\n }}\n sx={{ flex: 1 }}\n />\n <Box>\n {expandedItems.includes('policies') ? (\n <ExpandLessRounded sx={{ fontSize: 20, color: \"#4D3019\" }} />\n ) : (\n <ExpandMoreRounded sx={{ fontSize: 20, color: \"#4D3019\" }} />\n )}\n </Box>\n </>\n )}\n </MenuItemButton>\n\n {expandedItems.includes('policies') && isOpen && (\n <Collapse in={true} timeout=\"auto\">\n <List sx={{ p: 0, mt: 0.5 }}>\n {renderPolicyItems(policies)}\n </List>\n </Collapse>\n )}\n </Box>\n )}\n </List>\n </Box>\n </Box>\n </SidebarContainer>\n </>\n );\n};\n"],"names":["styled","Box","IconButton","ListItemButton","useTheme","useState","_jsx","HomeRounded","HelpOutlineRounded","_jsxs","ListItemText","ChevronRightRounded","Collapse","List","Typography","ChevronLeftRounded","TextSnippetRounded","_Fragment","ExpandLessRounded","ExpandMoreRounded"],"mappings":"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"}