ece-docs-components 1.0.99 → 1.0.101

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 (44) hide show
  1. package/dist/cjs/components/AutocompleteSelect.js +73 -0
  2. package/dist/cjs/components/AutocompleteSelect.js.map +1 -0
  3. package/dist/cjs/components/SidebarV2.js +28 -21
  4. package/dist/cjs/components/SidebarV2.js.map +1 -1
  5. package/dist/cjs/components/TableOfContents.js +34 -25
  6. package/dist/cjs/components/TableOfContents.js.map +1 -1
  7. package/dist/cjs/index.js +2 -0
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/node_modules/domhandler/lib/index.js +1 -1
  10. package/dist/cjs/node_modules/html-dom-parser/lib/index.js +1 -1
  11. package/dist/cjs/themes/GPTheme.js +1 -0
  12. package/dist/cjs/themes/GPTheme.js.map +1 -1
  13. package/dist/esm/ThemeProvider.d.ts +1 -1
  14. package/dist/esm/_virtual/index8.js +2 -2
  15. package/dist/esm/_virtual/index9.js +2 -2
  16. package/dist/esm/components/AutocompleteSelect.d.ts +21 -0
  17. package/dist/esm/components/AutocompleteSelect.js +71 -0
  18. package/dist/esm/components/AutocompleteSelect.js.map +1 -0
  19. package/dist/esm/components/Input.d.ts +1 -1
  20. package/dist/esm/components/SidebarV2.js +28 -21
  21. package/dist/esm/components/SidebarV2.js.map +1 -1
  22. package/dist/esm/components/TableOfContents.d.ts +1 -1
  23. package/dist/esm/components/TableOfContents.js +34 -25
  24. package/dist/esm/components/TableOfContents.js.map +1 -1
  25. package/dist/esm/components/index.d.ts +1 -0
  26. package/dist/esm/index.d.ts +1 -0
  27. package/dist/esm/index.js +1 -0
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/node_modules/domhandler/lib/index.js +1 -1
  30. package/dist/esm/node_modules/domutils/lib/index.js +1 -1
  31. package/dist/esm/node_modules/entities/lib/generated/decode-data-html.js +1 -1
  32. package/dist/esm/node_modules/entities/lib/generated/decode-data-xml.js +1 -1
  33. package/dist/esm/node_modules/html-dom-parser/lib/index.js +1 -1
  34. package/dist/esm/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.js +1 -1
  35. package/dist/esm/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +1 -1
  36. package/dist/esm/node_modules/style-to-object/cjs/index.js +1 -1
  37. package/dist/esm/theme-types.d.ts +12 -10
  38. package/dist/esm/themes/ECETheme.d.ts +1 -1
  39. package/dist/esm/themes/GPTheme.d.ts +1 -1
  40. package/dist/esm/themes/GPTheme.js +1 -0
  41. package/dist/esm/themes/GPTheme.js.map +1 -1
  42. package/dist/esm/themes/LightnTheme.d.ts +1 -1
  43. package/dist/esm/themes/SchoolTheme.d.ts +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var material = require('@mui/material');
5
+ var iconsMaterial = require('@mui/icons-material');
6
+ var ThemeProvider = require('../ThemeProvider.js');
7
+ var Input = require('./Input.js');
8
+
9
+ const AutocompleteWrapper = material.styled("div")({
10
+ width: "100%",
11
+ });
12
+ function AutocompleteSelect({ id, label, error, helperText, placeholder, fullWidth = false, disabled = false, options, value, onChange, className = "", sx, }) {
13
+ const theme = ThemeProvider.useTheme();
14
+ const selectId = id || `auto-select-${Math.random().toString(36).substr(2, 9)}`;
15
+ return (jsxRuntime.jsxs(AutocompleteWrapper, { className: className, sx: [
16
+ { ...(!fullWidth && { width: "auto" }) },
17
+ ...(Array.isArray(sx) ? sx : [sx]),
18
+ ], children: [label && (jsxRuntime.jsx(Input.StyledLabel, { htmlFor: selectId, shrink: false, children: label })), jsxRuntime.jsx(material.Autocomplete, { id: selectId, options: options, value: value, disabled: disabled, disablePortal: true, getOptionLabel: (option) => option?.label || "", isOptionEqualToValue: (option, val) => option?.value === val?.value, onChange: (_event, newValue) => onChange(newValue), popupIcon: jsxRuntime.jsx(iconsMaterial.ExpandMoreRounded, { sx: { color: `${theme.palette.dark.main}66` } }), slotProps: {
19
+ paper: {
20
+ sx: {
21
+ borderRadius: 2,
22
+ boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
23
+ maxHeight: "min(22rem, calc(100vh - 6rem))",
24
+ overflow: "hidden",
25
+ backgroundColor: theme.palette.light.main,
26
+ mt: 0.5,
27
+ },
28
+ },
29
+ }, sx: {
30
+ "& .MuiOutlinedInput-root": {
31
+ padding: "0 9px !important",
32
+ height: 48,
33
+ display: "flex",
34
+ alignItems: "center",
35
+ },
36
+ "& .MuiAutocomplete-input": {
37
+ padding: "0 !important",
38
+ },
39
+ "& + .MuiAutocomplete-popper .MuiAutocomplete-option": {
40
+ fontSize: "1rem",
41
+ color: theme.palette.dark.main,
42
+ '&[aria-selected="true"]': {
43
+ backgroundColor: "transparent",
44
+ },
45
+ '&[aria-selected="true"].Mui-focused, &:hover, &.Mui-focused': {
46
+ backgroundColor: `${theme.palette.primary.main}1A !important`,
47
+ },
48
+ },
49
+ }, renderInput: (params) => {
50
+ // 1. Separate structural configurations from direct props
51
+ const { InputProps, inputProps, ...restParams } = params;
52
+ return (jsxRuntime.jsx(Input.Input, { ...restParams,
53
+ // 2. Safely spread native input elements
54
+ inputProps: inputProps,
55
+ // 3. Bind MUI's dynamic layout objects (adornments, ref) into the slot configuration
56
+ InputProps: {
57
+ ...InputProps,
58
+ }, error: error, placeholder: placeholder, fullWidth: true,
59
+ // Explicitly empty string avoids passing a raw error object down to helperText slots
60
+ helperText: "" }));
61
+ } }), error && (jsxRuntime.jsx(material.FormHelperText, { sx: {
62
+ mt: 0.75,
63
+ fontSize: "0.875rem",
64
+ color: theme.palette.error.main,
65
+ }, children: error })), helperText && !error && (jsxRuntime.jsx(material.FormHelperText, { sx: {
66
+ mt: 0.75,
67
+ fontSize: "0.875rem",
68
+ color: `${theme.palette.dark.main}99`,
69
+ }, children: helperText }))] }));
70
+ }
71
+
72
+ exports.AutocompleteSelect = AutocompleteSelect;
73
+ //# sourceMappingURL=AutocompleteSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutocompleteSelect.js","sources":["../../../../src/components/AutocompleteSelect.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Autocomplete as MuiAutocomplete,\n FormHelperText,\n styled,\n} from \"@mui/material\";\nimport { ExpandMoreRounded } from \"@mui/icons-material\";\nimport { useTheme } from \"../ThemeProvider\"; // Adjust pathway according to project layout\nimport { Input, StyledLabel } from \"./Input\";\n\ninterface AutocompleteOption {\n value: string;\n label: string;\n}\n\ninterface AutocompleteSelectProps {\n id?: string;\n label?: string;\n error?: string;\n helperText?: string;\n placeholder?: string;\n fullWidth?: boolean;\n disabled?: boolean;\n options: AutocompleteOption[];\n value: AutocompleteOption | null;\n onChange: (value: AutocompleteOption | null) => void;\n className?: string;\n sx?: any;\n}\n\nconst AutocompleteWrapper = styled(\"div\")({\n width: \"100%\",\n});\n\nexport function AutocompleteSelect({\n id,\n label,\n error,\n helperText,\n placeholder,\n fullWidth = false,\n disabled = false,\n options,\n value,\n onChange,\n className = \"\",\n sx,\n}: AutocompleteSelectProps): React.JSX.Element {\n const theme = useTheme();\n const selectId =\n id || `auto-select-${Math.random().toString(36).substr(2, 9)}`;\n\n return (\n <AutocompleteWrapper\n className={className}\n sx={[\n { ...(!fullWidth && { width: \"auto\" }) },\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n >\n {label && (\n <StyledLabel htmlFor={selectId} shrink={false}>\n {label}\n </StyledLabel>\n )}\n\n <MuiAutocomplete\n id={selectId}\n options={options}\n value={value}\n disabled={disabled}\n disablePortal\n getOptionLabel={(option: { label: string; value: string }) =>\n option?.label || \"\"\n }\n isOptionEqualToValue={(\n option: AutocompleteOption,\n val: AutocompleteOption,\n ) => option?.value === val?.value}\n onChange={(_event: Event, newValue: AutocompleteOption) =>\n onChange(newValue)\n }\n popupIcon={\n <ExpandMoreRounded sx={{ color: `${theme.palette.dark.main}66` }} />\n }\n slotProps={{\n paper: {\n sx: {\n borderRadius: 2,\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n maxHeight: \"min(22rem, calc(100vh - 6rem))\",\n overflow: \"hidden\",\n backgroundColor: theme.palette.light.main,\n mt: 0.5,\n },\n },\n }}\n sx={{\n \"& .MuiOutlinedInput-root\": {\n padding: \"0 9px !important\",\n height: 48,\n display: \"flex\",\n alignItems: \"center\",\n },\n \"& .MuiAutocomplete-input\": {\n padding: \"0 !important\",\n },\n \"& + .MuiAutocomplete-popper .MuiAutocomplete-option\": {\n fontSize: \"1rem\",\n color: theme.palette.dark.main,\n '&[aria-selected=\"true\"]': {\n backgroundColor: \"transparent\",\n },\n '&[aria-selected=\"true\"].Mui-focused, &:hover, &.Mui-focused': {\n backgroundColor: `${theme.palette.primary.main}1A !important`,\n },\n },\n }}\n renderInput={(params: any) => {\n // 1. Separate structural configurations from direct props\n const { InputProps, inputProps, ...restParams } = params;\n\n return (\n <Input\n {...restParams}\n // 2. Safely spread native input elements\n inputProps={inputProps}\n // 3. Bind MUI's dynamic layout objects (adornments, ref) into the slot configuration\n InputProps={{\n ...InputProps,\n }}\n error={error}\n placeholder={placeholder}\n fullWidth\n // Explicitly empty string avoids passing a raw error object down to helperText slots\n helperText=\"\"\n />\n );\n }}\n />\n\n {error && (\n <FormHelperText\n sx={{\n mt: 0.75,\n fontSize: \"0.875rem\",\n color: theme.palette.error.main,\n }}\n >\n {error}\n </FormHelperText>\n )}\n\n {helperText && !error && (\n <FormHelperText\n sx={{\n mt: 0.75,\n fontSize: \"0.875rem\",\n color: `${theme.palette.dark.main}99`,\n }}\n >\n {helperText}\n </FormHelperText>\n )}\n </AutocompleteWrapper>\n );\n}\n"],"names":["styled","useTheme","_jsxs","_jsx","StyledLabel","MuiAutocomplete","ExpandMoreRounded","Input","FormHelperText"],"mappings":";;;;;;;;AA8BA,MAAM,mBAAmB,GAAGA,eAAM,CAAC,KAAK,CAAC,CAAC;AACxC,IAAA,KAAK,EAAE,MAAM;AACd,CAAA,CAAC;AAEI,SAAU,kBAAkB,CAAC,EACjC,EAAE,EACF,KAAK,EACL,KAAK,EACL,UAAU,EACV,WAAW,EACX,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,KAAK,EAChB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,EAAE,GACsB,EAAA;AACxB,IAAA,MAAM,KAAK,GAAGC,sBAAQ,EAAE;IACxB,MAAM,QAAQ,GACZ,EAAE,IAAI,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE;IAEhE,QACEC,gBAAC,mBAAmB,EAAA,EAClB,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE;YACF,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;AACxC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;SACnC,EAAA,QAAA,EAAA,CAEA,KAAK,KACJC,cAAA,CAACC,iBAAW,EAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAA,QAAA,EAC1C,KAAK,EAAA,CACM,CACf,EAEDD,eAACE,qBAAe,EAAA,EACd,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAA,IAAA,EACb,cAAc,EAAE,CAAC,MAAwC,KACvD,MAAM,EAAE,KAAK,IAAI,EAAE,EAErB,oBAAoB,EAAE,CACpB,MAA0B,EAC1B,GAAuB,KACpB,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,EACjC,QAAQ,EAAE,CAAC,MAAa,EAAE,QAA4B,KACpD,QAAQ,CAAC,QAAQ,CAAC,EAEpB,SAAS,EACPF,cAAA,CAACG,+BAAiB,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAA,CAAI,EAEtE,SAAS,EAAE;AACT,oBAAA,KAAK,EAAE;AACL,wBAAA,EAAE,EAAE;AACF,4BAAA,YAAY,EAAE,CAAC;AACf,4BAAA,SAAS,EACP,uEAAuE;AACzE,4BAAA,SAAS,EAAE,gCAAgC;AAC3C,4BAAA,QAAQ,EAAE,QAAQ;AAClB,4BAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;AACzC,4BAAA,EAAE,EAAE,GAAG;AACR,yBAAA;AACF,qBAAA;AACF,iBAAA,EACD,EAAE,EAAE;AACF,oBAAA,0BAA0B,EAAE;AAC1B,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,MAAM,EAAE,EAAE;AACV,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,UAAU,EAAE,QAAQ;AACrB,qBAAA;AACD,oBAAA,0BAA0B,EAAE;AAC1B,wBAAA,OAAO,EAAE,cAAc;AACxB,qBAAA;AACD,oBAAA,qDAAqD,EAAE;AACrD,wBAAA,QAAQ,EAAE,MAAM;AAChB,wBAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;AAC9B,wBAAA,yBAAyB,EAAE;AACzB,4BAAA,eAAe,EAAE,aAAa;AAC/B,yBAAA;AACD,wBAAA,6DAA6D,EAAE;4BAC7D,eAAe,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA,aAAA,CAAe;AAC9D,yBAAA;AACF,qBAAA;AACF,iBAAA,EACD,WAAW,EAAE,CAAC,MAAW,KAAI;;oBAE3B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM;AAExD,oBAAA,QACEH,cAAA,CAACI,WAAK,EAAA,EAAA,GACA,UAAU;;AAEd,wBAAA,UAAU,EAAE,UAAU;;AAEtB,wBAAA,UAAU,EAAE;AACV,4BAAA,GAAG,UAAU;yBACd,EACD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,SAAS,EAAA,IAAA;;AAET,wBAAA,UAAU,EAAC,EAAE,EAAA,CACb;gBAEN,CAAC,EAAA,CACD,EAED,KAAK,KACJJ,cAAA,CAACK,uBAAc,EAAA,EACb,EAAE,EAAE;AACF,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;AAChC,iBAAA,EAAA,QAAA,EAEA,KAAK,EAAA,CACS,CAClB,EAEA,UAAU,IAAI,CAAC,KAAK,KACnBL,cAAA,CAACK,uBAAc,EAAA,EACb,EAAE,EAAE;AACF,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI;AACtC,iBAAA,EAAA,QAAA,EAEA,UAAU,EAAA,CACI,CAClB,CAAA,EAAA,CACmB;AAE1B;;;;"}
@@ -50,7 +50,10 @@ const ToggleButton = material.styled(material.IconButton)(({ theme }) => ({
50
50
  },
51
51
  }));
52
52
  const MenuItemButton = material.styled(material.ListItemButton, {
53
- shouldForwardProp: (prop) => prop !== "isOpen" && prop !== "isActive" && prop !== "isPolicyActive",
53
+ shouldForwardProp: (prop) => prop !== "isOpen" &&
54
+ prop !== "isActive" &&
55
+ prop !== "isPolicyActive" &&
56
+ prop !== "depth",
54
57
  })(({ theme, isActive, isOpen, isPolicyActive, depth }) => ({
55
58
  borderRadius: isOpen
56
59
  ? `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`
@@ -62,17 +65,18 @@ const MenuItemButton = material.styled(material.ListItemButton, {
62
65
  justifyContent: isOpen ? "flex-start" : "center",
63
66
  backgroundClip: "padding-box",
64
67
  backgroundOrigin: "border-box",
68
+ // Default hover state for unselected items
65
69
  "&:hover": {
66
70
  backgroundColor: `#0000000D`,
67
71
  },
68
- ...(isActive && {
69
- backgroundColor: `${theme.palette.primary.main}1A`,
70
- }),
71
- ...(isPolicyActive && depth > 1 && {
72
- backgroundColor: `#0000000D`,
72
+ // 1. If the item is a parent policy/category wrapper (but not the active page itself)
73
+ ...(isPolicyActive &&
74
+ !isActive && {
75
+ backgroundColor: depth > 1 ? `#0000000D` : `${theme.palette.custom.tabBackgroundColor}`,
73
76
  }),
74
- ...(isPolicyActive && depth <= 1 && {
75
- backgroundColor: `${theme.palette.primary.main}1A`,
77
+ // 2. CRITICAL: If this is the actual active item, it always gets the blue background!
78
+ ...(isActive && {
79
+ backgroundColor: `${theme.palette.custom.tabBackgroundColor} !important`,
76
80
  }),
77
81
  }));
78
82
  const IconWrapper = material.styled(material.Box, {
@@ -131,7 +135,7 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
131
135
  primary: {
132
136
  style: {
133
137
  // textDecoration: isActive ? "underline" : "",
134
- fontWeight: isPolicyActive ? 700 : (depth > 0 ? 400 : 700)
138
+ fontWeight: isPolicyActive ? 700 : depth > 0 ? 400 : 700,
135
139
  },
136
140
  width: 200 - depth * 16, // Set to stop text from wrapping when sidebar is expanding and contracting
137
141
  ...(depth > 0
@@ -153,20 +157,20 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
153
157
  width: 32,
154
158
  height: 32,
155
159
  "&:hover": {
156
- backgroundColor: `${theme.palette.primary.main}1F`,
160
+ backgroundColor: `${theme.palette.custom.tabBackgroundColor}`,
157
161
  },
158
162
  }, children: jsxRuntime.jsx(iconsMaterial.ChevronRightRounded, { sx: {
159
163
  fontSize: 16,
160
- color: "#4D3019",
164
+ color: theme.palette.text.primary,
161
165
  transition: "transform 0.1s",
162
166
  transform: isExpanded() ? "rotate(90deg)" : "rotate(0deg)",
163
- } }) }))] }))] }), isExpanded() && isOpen && (jsxRuntime.jsx(material.Collapse, { in: true, timeout: "auto", children: jsxRuntime.jsxs(material.Box, { display: 'flex', flexDirection: 'row', children: [depth > 0 && (jsxRuntime.jsx(material.Divider, { orientation: "vertical", flexItem: true, sx: {
167
+ } }) }))] }))] }), isExpanded() && isOpen && (jsxRuntime.jsx(material.Collapse, { in: true, timeout: "auto", children: jsxRuntime.jsxs(material.Box, { display: "flex", flexDirection: "row", children: [depth > 0 && (jsxRuntime.jsx(material.Divider, { orientation: "vertical", flexItem: true, sx: {
164
168
  ml: 2,
165
169
  borderColor: `#00000033`,
166
- borderWidth: '1px',
167
- borderRightWidth: '1px',
170
+ borderWidth: "1px",
171
+ borderRightWidth: "1px",
168
172
  mt: 1,
169
- mb: 1
173
+ mb: 1,
170
174
  } })), jsxRuntime.jsx(material.List, { sx: { p: 0, mt: 1, mb: 1, flex: 1 }, children: item.items &&
171
175
  item.items.map((child) => (jsxRuntime.jsx(SidebarItem, { currentPath: currentPath, expandedSet: expandedSet, setExpand: onExpand, isOpen: isOpen, isAdmin: isAdmin, item: child, onNavigate: onNavigate, depth: depth + 1 }, child.id))) })] }) }))] }));
172
176
  };
@@ -176,7 +180,7 @@ const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n ac
176
180
  if (!item || item.items === undefined || item.items.length === 0) {
177
181
  continue;
178
182
  }
179
- const url = item.url?.replace(/-\d+$/, '');
183
+ const url = item.url?.replace(/-\d+$/, "");
180
184
  const isActive = currentPath.includes(url) ||
181
185
  currentPath.includes(item.title.toLowerCase());
182
186
  if (isActive) {
@@ -189,7 +193,7 @@ const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n ac
189
193
  };
190
194
  const theme = ThemeProvider.useTheme();
191
195
  const [expandedSet, setExpanded] = React.useState(() => new Set(findExpandItems(items)));
192
- const isMobile = !window.matchMedia(theme.breakpoints.up('lg').replace('@media ', '')).matches;
196
+ const isMobile = !window.matchMedia(theme.breakpoints.up("lg").replace("@media ", "")).matches;
193
197
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [isOpen && (jsxRuntime.jsx(material.Box, { sx: {
194
198
  position: "fixed",
195
199
  inset: 0,
@@ -217,14 +221,14 @@ const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n ac
217
221
  width: "180px",
218
222
  fontSize: "18px",
219
223
  fontWeight: 700,
220
- color: "#4D3019",
224
+ color: theme.palette.text.primary,
221
225
  whiteSpace: "pre-line",
222
226
  flex: 1,
223
227
  pr: 2,
224
228
  }, children: centreName ?? "Centre Name" }), jsxRuntime.jsx(ToggleButton, { onClick: () => onToggle(), sx: { ml: "auto" }, "aria-label": "Collapse sidebar", children: jsxRuntime.jsx(iconsMaterial.KeyboardDoubleArrowLeftRounded, { sx: { fontSize: 20 } }) })] }), jsxRuntime.jsx(material.Box, { onClick: onOrgChange, sx: {
225
229
  px: 2,
226
230
  py: 1,
227
- borderBottom: `1px solid ${theme.palette.dark.main}1A`,
231
+ borderBottom: `1px solid ${theme.palette.custom.tabBackgroundColor}`,
228
232
  flexShrink: 0,
229
233
  position: "relative",
230
234
  display: "flex",
@@ -237,11 +241,14 @@ const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n ac
237
241
  flexDirection: "row",
238
242
  alignItems: "center",
239
243
  py: 1,
240
- }, children: [jsxRuntime.jsx(iconsMaterial.ImportExportRounded, { sx: { color: theme.palette.primary.main, mr: 1 } }), jsxRuntime.jsx(material.Typography, { sx: { color: theme.palette.primary.main }, children: "Change organisation" })] })) })] })) : (jsxRuntime.jsx(material.Box, { sx: {
244
+ }, children: [jsxRuntime.jsx(iconsMaterial.ImportExportRounded, { sx: {
245
+ color: theme.palette.primary.main,
246
+ mr: 1,
247
+ } }), jsxRuntime.jsx(material.Typography, { sx: { color: theme.palette.primary.main }, children: "Change organisation" })] })) })] })) : (jsxRuntime.jsx(material.Box, { sx: {
241
248
  px: 1,
242
249
  py: 3,
243
250
  mb: 1,
244
- borderBottom: `1px solid ${theme.palette.dark.main}1A`,
251
+ borderBottom: `1px solid ${theme.palette.custom.tabBackgroundColor}`,
245
252
  display: "flex",
246
253
  justifyContent: "center",
247
254
  }, children: jsxRuntime.jsx(ToggleButton, { onClick: onToggle, "aria-label": "Expand sidebar", children: jsxRuntime.jsx(iconsMaterial.KeyboardDoubleArrowRightRounded, { sx: { fontSize: 20 } }) }) })), jsxRuntime.jsx(material.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":["Visibility","styled","Box","IconButton","ListItemButton","useTheme","_jsxs","_jsx","ListItemText","ChevronRightRounded","Collapse","Divider","List","useState","Typography","KeyboardDoubleArrowLeftRounded","ImportExportRounded","KeyboardDoubleArrowRightRounded"],"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":["Visibility","styled","Box","IconButton","ListItemButton","useTheme","_jsxs","_jsx","ListItemText","ChevronRightRounded","Collapse","Divider","List","useState","Typography","KeyboardDoubleArrowLeftRounded","ImportExportRounded","KeyboardDoubleArrowRightRounded"],"mappings":"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"}
@@ -4,64 +4,73 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var material = require('@mui/material');
5
5
 
6
6
  const Container = material.styled(material.Box)(({ theme }) => ({
7
- width: '100%',
8
- [theme.breakpoints.up('md')]: {
9
- position: 'sticky',
7
+ width: "100%",
8
+ [theme.breakpoints.up("md")]: {
9
+ position: "sticky",
10
10
  right: 0,
11
11
  top: 0,
12
- width: '224px',
13
- float: 'right',
12
+ width: "224px",
13
+ float: "right",
14
14
  marginLeft: theme.spacing(1.5),
15
15
  marginBottom: 0,
16
16
  },
17
- [theme.breakpoints.up('lg')]: {
18
- width: '256px',
17
+ [theme.breakpoints.up("lg")]: {
18
+ width: "256px",
19
19
  marginLeft: theme.spacing(2),
20
20
  },
21
21
  marginBottom: theme.spacing(2),
22
22
  }));
23
23
  const ContentBox = material.styled(material.Box)(({ theme }) => ({
24
24
  backgroundColor: theme.palette.background.paper,
25
- borderRadius: (typeof theme.shape.borderRadius === 'string'
25
+ borderRadius: (typeof theme.shape.borderRadius === "string"
26
26
  ? parseInt(theme.shape.borderRadius, 10)
27
27
  : theme.shape.borderRadius || 4) * 2,
28
28
  padding: theme.spacing(2.5),
29
- boxShadow: '0 1px 3px 0 rgba(0, 0, 0, 0.1)',
30
- [theme.breakpoints.up('md')]: {
29
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
30
+ [theme.breakpoints.up("md")]: {
31
31
  padding: theme.spacing(3),
32
32
  },
33
33
  }));
34
34
  const NavLink = material.styled(material.Box, {
35
- shouldForwardProp: (prop) => prop !== 'isActive'
35
+ shouldForwardProp: (prop) => prop !== "isActive",
36
36
  })(({ theme, isActive }) => ({
37
- display: 'block',
37
+ display: "block",
38
38
  padding: theme.spacing(1, 2),
39
- fontSize: '0.875rem',
40
- textDecoration: 'none',
39
+ fontSize: "0.875rem",
40
+ textDecoration: "none",
41
41
  color: theme.palette.text.primary,
42
- transition: 'background-color 0.2s',
43
- borderLeft: isActive ? `4px solid ${theme.palette.primary.main}` : '4px solid transparent',
44
- backgroundColor: isActive ? theme.palette.custom.tabBackgroundColor : 'transparent',
42
+ transition: "background-color 0.2s",
43
+ borderLeft: isActive
44
+ ? `4px solid ${theme.palette.primary.main}`
45
+ : "4px solid transparent",
46
+ backgroundColor: isActive
47
+ ? theme.palette.custom.tableOfContentsColor
48
+ : "transparent",
45
49
  fontWeight: isActive ? 700 : 400,
46
- cursor: 'pointer',
47
- '&:hover': {
48
- backgroundColor: theme.palette.custom.tabBackgroundColor,
50
+ cursor: "pointer",
51
+ "&:hover": {
52
+ backgroundColor: theme.palette.custom.tableOfContentsColor,
49
53
  },
50
54
  }));
51
- const TableOfContents = ({ sections, activeSection = 'current-section', onSectionClick }) => {
55
+ const TableOfContents = ({ sections, activeSection = "current-section", onSectionClick, }) => {
52
56
  const handleClick = (sectionId) => {
53
57
  const element = document.getElementById(sectionId);
54
58
  if (element) {
55
- element.scrollIntoView({ behavior: 'smooth', block: 'start' });
59
+ element.scrollIntoView({ behavior: "smooth", block: "start" });
56
60
  onSectionClick?.(sectionId);
57
61
  }
58
62
  };
59
63
  return (jsxRuntime.jsx(Container, { children: jsxRuntime.jsxs(ContentBox, { children: [jsxRuntime.jsx(material.Typography, { variant: "h6", sx: {
60
- color: '#4D3019',
64
+ color: "#4D3019",
61
65
  fontWeight: 600,
62
- fontSize: '16px',
66
+ fontSize: "16px",
63
67
  mb: 3,
64
- }, children: "In this policy" }), jsxRuntime.jsx(material.Box, { component: "nav", sx: { display: 'flex', flexDirection: 'column', gap: 0.25, overflowY: 'hidden' }, children: sections.map((section) => {
68
+ }, children: "In this policy" }), jsxRuntime.jsx(material.Box, { component: "nav", sx: {
69
+ display: "flex",
70
+ flexDirection: "column",
71
+ gap: 0.25,
72
+ overflowY: "hidden",
73
+ }, children: sections.map((section) => {
65
74
  const isActive = section.id === activeSection;
66
75
  return (jsxRuntime.jsx(NavLink, { onClick: () => handleClick(section.id), isActive: isActive, children: section.title }, section.id));
67
76
  }) })] }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"TableOfContents.js","sources":["../../../../src/components/TableOfContents.tsx"],"sourcesContent":["\r\n\r\nimport React from 'react';\r\nimport { Box, Typography, Link, styled } from '@mui/material';\r\n\r\ninterface Section {\r\n id: string;\r\n title: string;\r\n}\r\n\r\ninterface TableOfContentsProps {\r\n sections: Section[];\r\n activeSection?: string;\r\n onSectionClick?: (sectionId: string) => void;\r\n}\r\n\r\nconst Container = styled(Box)(({ theme }) => ({\r\n width: '100%',\r\n [theme.breakpoints.up('md')]: {\r\n position: 'sticky',\r\n right: 0,\r\n top: 0,\r\n width: '224px',\r\n float: 'right',\r\n marginLeft: theme.spacing(1.5),\r\n marginBottom: 0,\r\n },\r\n [theme.breakpoints.up('lg')]: {\r\n width: '256px',\r\n marginLeft: theme.spacing(2),\r\n },\r\n marginBottom: theme.spacing(2),\r\n}));\r\n\r\nconst ContentBox = styled(Box)(({ theme }) => ({\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: (typeof theme.shape.borderRadius === 'string'\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n padding: theme.spacing(2.5),\r\n boxShadow: '0 1px 3px 0 rgba(0, 0, 0, 0.1)',\r\n [theme.breakpoints.up('md')]: {\r\n padding: theme.spacing(3),\r\n },\r\n}));\r\n\r\nconst NavLink = styled(Box,{\r\n shouldForwardProp: (prop) => prop !== 'isActive'\r\n})<{ isActive: boolean }>(({ theme, isActive }) => ({\r\n display: 'block',\r\n padding: theme.spacing(1, 2),\r\n fontSize: '0.875rem',\r\n textDecoration: 'none',\r\n color: theme.palette.text.primary,\r\n transition: 'background-color 0.2s',\r\n borderLeft: isActive ? `4px solid ${theme.palette.primary.main}` : '4px solid transparent',\r\n backgroundColor: isActive ? theme.palette.custom.tabBackgroundColor : 'transparent',\r\n fontWeight: isActive ? 700 : 400,\r\n cursor: 'pointer',\r\n '&:hover': {\r\n backgroundColor: theme.palette.custom.tabBackgroundColor,\r\n },\r\n}));\r\n\r\nexport const TableOfContents: React.FC<TableOfContentsProps> = ({\r\n sections,\r\n activeSection = 'current-section',\r\n onSectionClick\r\n}) => {\r\n const handleClick = (sectionId: string) => {\r\n const element = document.getElementById(sectionId);\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n onSectionClick?.(sectionId);\r\n }\r\n };\r\n\r\n return (\r\n <Container>\r\n <ContentBox>\r\n <Typography\r\n variant=\"h6\"\r\n sx={{\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '16px',\r\n mb: 3,\r\n }}\r\n >\r\n In this policy\r\n </Typography>\r\n <Box component=\"nav\" sx={{ display: 'flex', flexDirection: 'column', gap: 0.25, overflowY: 'hidden' }}>\r\n {sections.map((section) => {\r\n const isActive = section.id === activeSection;\r\n return (\r\n <NavLink\r\n key={section.id}\r\n onClick={() => handleClick(section.id)}\r\n isActive={isActive}\r\n >\r\n {section.title}\r\n </NavLink>\r\n );\r\n })}\r\n </Box>\r\n </ContentBox>\r\n </Container>\r\n );\r\n};"],"names":["styled","Box","_jsx","_jsxs","Typography"],"mappings":"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"}
1
+ {"version":3,"file":"TableOfContents.js","sources":["../../../../src/components/TableOfContents.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { Box, Typography, Link, styled } from \"@mui/material\";\r\n\r\ninterface Section {\r\n id: string;\r\n title: string;\r\n}\r\n\r\ninterface TableOfContentsProps {\r\n sections: Section[];\r\n activeSection?: string;\r\n onSectionClick?: (sectionId: string) => void;\r\n}\r\n\r\nconst Container = styled(Box)(({ theme }) => ({\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n position: \"sticky\",\r\n right: 0,\r\n top: 0,\r\n width: \"224px\",\r\n float: \"right\",\r\n marginLeft: theme.spacing(1.5),\r\n marginBottom: 0,\r\n },\r\n [theme.breakpoints.up(\"lg\")]: {\r\n width: \"256px\",\r\n marginLeft: theme.spacing(2),\r\n },\r\n marginBottom: theme.spacing(2),\r\n}));\r\n\r\nconst ContentBox = styled(Box)(({ theme }) => ({\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius:\r\n (typeof theme.shape.borderRadius === \"string\"\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n padding: theme.spacing(2.5),\r\n boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n padding: theme.spacing(3),\r\n },\r\n}));\r\n\r\nconst NavLink = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isActive\",\r\n})<{ isActive: boolean }>(({ theme, isActive }) => ({\r\n display: \"block\",\r\n padding: theme.spacing(1, 2),\r\n fontSize: \"0.875rem\",\r\n textDecoration: \"none\",\r\n color: theme.palette.text.primary,\r\n transition: \"background-color 0.2s\",\r\n borderLeft: isActive\r\n ? `4px solid ${theme.palette.primary.main}`\r\n : \"4px solid transparent\",\r\n backgroundColor: isActive\r\n ? theme.palette.custom.tableOfContentsColor\r\n : \"transparent\",\r\n fontWeight: isActive ? 700 : 400,\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.custom.tableOfContentsColor,\r\n },\r\n}));\r\n\r\nexport const TableOfContents: React.FC<TableOfContentsProps> = ({\r\n sections,\r\n activeSection = \"current-section\",\r\n onSectionClick,\r\n}) => {\r\n const handleClick = (sectionId: string) => {\r\n const element = document.getElementById(sectionId);\r\n if (element) {\r\n element.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n onSectionClick?.(sectionId);\r\n }\r\n };\r\n\r\n return (\r\n <Container>\r\n <ContentBox>\r\n <Typography\r\n variant=\"h6\"\r\n sx={{\r\n color: \"#4D3019\",\r\n fontWeight: 600,\r\n fontSize: \"16px\",\r\n mb: 3,\r\n }}\r\n >\r\n In this policy\r\n </Typography>\r\n <Box\r\n component=\"nav\"\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 0.25,\r\n overflowY: \"hidden\",\r\n }}\r\n >\r\n {sections.map((section) => {\r\n const isActive = section.id === activeSection;\r\n return (\r\n <NavLink\r\n key={section.id}\r\n onClick={() => handleClick(section.id)}\r\n isActive={isActive}\r\n >\r\n {section.title}\r\n </NavLink>\r\n );\r\n })}\r\n </Box>\r\n </ContentBox>\r\n </Container>\r\n );\r\n};\r\n"],"names":["styled","Box","_jsx","_jsxs","Typography"],"mappings":"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"}
package/dist/cjs/index.js CHANGED
@@ -30,6 +30,7 @@ var AcknowledgementBox = require('./components/AcknowledgementBox.js');
30
30
  var RichTextArea = require('./components/RichTextArea.js');
31
31
  var FileUploadButton = require('./components/FileUploadButton.js');
32
32
  var Footer = require('./components/Footer.js');
33
+ var AutocompleteSelect = require('./components/AutocompleteSelect.js');
33
34
 
34
35
 
35
36
 
@@ -66,4 +67,5 @@ exports.AcknowledgementBox = AcknowledgementBox.AcknowledgementBox;
66
67
  exports.RichTextArea = RichTextArea.RichTextArea;
67
68
  exports.FileUploadButton = FileUploadButton.FileUploadButton;
68
69
  exports.Footer = Footer.Footer;
70
+ exports.AutocompleteSelect = AutocompleteSelect.AutocompleteSelect;
69
71
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('../../../_virtual/index4.js');
3
+ var index = require('../../../_virtual/index3.js');
4
4
  var index$1 = require('../../domelementtype/lib/index.js');
5
5
  var node = require('./node.js');
6
6
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('../../../_virtual/index3.js');
3
+ var index = require('../../../_virtual/index4.js');
4
4
  var htmlToDom = require('./server/html-to-dom.js');
5
5
  var types = require('./types.js');
6
6
 
@@ -74,6 +74,7 @@ const GPTheme = material.createTheme({
74
74
  markAsReadBorderColor: "#4871cf",
75
75
  tabBackgroundColor: "#a4d6ff1e",
76
76
  statusBarBackgroundColor: "#a4d6ff",
77
+ tableOfContentsColor: "#A4D6FF1D",
77
78
  },
78
79
  },
79
80
  typography: {