varminer-app-header 1.0.3 → 1.0.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../src/AppHeader.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAEtD,OAAO,sBAAsB,CAAC;AAe9B,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2gBvC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../src/AppHeader.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,sBAAsB,CAAC;AAe9B,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAgfvC,CAAC;AAEF,eAAe,SAAS,CAAC"}
package/dist/index.esm.js CHANGED
@@ -34,82 +34,6 @@ const DrawerProvider = ({ children }) => {
34
34
  };
35
35
  const useDrawer = () => React.useContext(DrawerContext);
36
36
 
37
- /**
38
- * Utility functions to get user data from localStorage
39
- */
40
- /**
41
- * Gets user profile data from localStorage
42
- * Returns user info including name, email, role, etc.
43
- */
44
- const getUserDataFromStorage = () => {
45
- const userDbString = localStorage.getItem("persist:userdb");
46
- if (userDbString) {
47
- try {
48
- const parsedOuter = JSON.parse(userDbString);
49
- // Helper function to parse nested JSON strings
50
- const parseNested = (value) => {
51
- if (typeof value === 'string') {
52
- try {
53
- return JSON.parse(value);
54
- }
55
- catch {
56
- return value;
57
- }
58
- }
59
- return value;
60
- };
61
- // Try to get user data from different possible locations
62
- let userData = null;
63
- // Check for userDetails
64
- if (parsedOuter.userDetails) {
65
- const parsedUserDetails = parseNested(parsedOuter.userDetails);
66
- userData = parsedUserDetails.user || parsedUserDetails.data || parsedUserDetails;
67
- }
68
- // Check for user reducer/state
69
- if (!userData && parsedOuter.user) {
70
- const parsedUser = parseNested(parsedOuter.user);
71
- userData = parsedUser.user || parsedUser.data || parsedUser.currentUser || parsedUser;
72
- }
73
- // Check for authDetails for user info
74
- if (!userData && parsedOuter.authDetails) {
75
- const parsedAuthDetails = parseNested(parsedOuter.authDetails);
76
- // Check auth object
77
- if (parsedAuthDetails.auth) {
78
- userData = parsedAuthDetails.auth.user || parsedAuthDetails.auth.userData;
79
- }
80
- // Check root of authDetails
81
- if (!userData) {
82
- userData = parsedAuthDetails.user || parsedAuthDetails.userData || parsedAuthDetails.currentUser;
83
- }
84
- }
85
- // Check for profile
86
- if (!userData && parsedOuter.profile) {
87
- const parsedProfile = parseNested(parsedOuter.profile);
88
- userData = parsedProfile.user || parsedProfile.data || parsedProfile;
89
- }
90
- if (userData) {
91
- // Build name from various possible fields
92
- let name = userData.name || userData.fullName || userData.userName || "";
93
- if (!name && (userData.firstName || userData.lastName)) {
94
- name = [userData.firstName, userData.lastName].filter(Boolean).join(' ');
95
- }
96
- return {
97
- name: name || "",
98
- email: userData.email || userData.emailAddress || "",
99
- role: userData.role || userData.userRole || userData.designation || userData.title || "",
100
- avatar: userData.avatar || userData.profilePicture || userData.imageUrl || userData.profileImage,
101
- initials: userData.initials,
102
- };
103
- }
104
- }
105
- catch (err) {
106
- console.error("Error parsing user data from localStorage:", err);
107
- return null;
108
- }
109
- }
110
- return null;
111
- };
112
-
113
37
  // Default routes - absolute paths from root
114
38
  const DEFAULT_ROUTES = {
115
39
  settings: "/account/overview",
@@ -121,43 +45,18 @@ const DEFAULT_LOGO = {
121
45
  first: "VAR",
122
46
  second: "MINER",
123
47
  };
124
- const AppHeader = ({ user: userProp, isOnline = true, logo, notificationCount = 0, messageCount, onDrawerToggle, routes, onSettingsClick, onProfileClick, onSignOutClick, className, isDrawerOpen: isDrawerOpenProp, }) => {
48
+ const AppHeader = ({ user = {
49
+ name: "Shivam Kumar",
50
+ email: "shivam@redcliffelabs.com",
51
+ role: "Lab Technician",
52
+ initials: "SK",
53
+ }, isOnline = true, logo, notificationCount = 0, messageCount, onDrawerToggle, routes, onSettingsClick, onProfileClick, onSignOutClick, className, }) => {
125
54
  // Use provided logo or default
126
55
  const finalLogo = logo ?? DEFAULT_LOGO;
127
- const { isDrawerOpen: isDrawerOpenContext, toggleDrawer } = useDrawer();
56
+ const { isDrawerOpen, toggleDrawer } = useDrawer();
128
57
  const [anchorEl, setAnchorEl] = React__default.useState(null);
129
58
  const [mobileMoreAnchorEl, setMobileMoreAnchorEl] = React__default.useState(null);
130
- const [user, setUser] = React__default.useState(() => {
131
- // Initialize with prop if provided, otherwise try localStorage, otherwise default
132
- if (userProp) {
133
- return userProp;
134
- }
135
- const storedUser = getUserDataFromStorage();
136
- if (storedUser && storedUser.name && storedUser.email) {
137
- return storedUser;
138
- }
139
- return {
140
- name: "Shivam Kumar",
141
- email: "shivam@redcliffelabs.com",
142
- role: "Lab Technician",
143
- initials: "SK",
144
- };
145
- });
146
- // Use prop if provided, otherwise use context
147
- const isDrawerOpen = isDrawerOpenProp !== undefined ? isDrawerOpenProp : isDrawerOpenContext;
148
59
  const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);
149
- // Update user state when prop changes or fetch from localStorage
150
- React__default.useEffect(() => {
151
- if (userProp) {
152
- setUser(userProp);
153
- }
154
- else {
155
- const storedUser = getUserDataFromStorage();
156
- if (storedUser && storedUser.name && storedUser.email) {
157
- setUser(storedUser);
158
- }
159
- }
160
- }, [userProp]);
161
60
  // Merge provided routes with defaults - all routes are absolute from root
162
61
  const finalRoutes = {
163
62
  settings: routes?.settings ?? DEFAULT_ROUTES.settings,
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/DrawerContext.tsx","../src/utils/localStorage.ts","../src/AppHeader.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\ninterface DrawerContextType {\r\n isDrawerOpen: boolean;\r\n openDrawer: () => void;\r\n closeDrawer: () => void;\r\n toggleDrawer: () => void;\r\n}\r\n\r\nconst DrawerContext = React.createContext<DrawerContextType>({\r\n isDrawerOpen: false,\r\n openDrawer: () => {},\r\n closeDrawer: () => {},\r\n toggleDrawer: () => {},\r\n});\r\n\r\nexport const DrawerProvider = ({ children }: { children: React.ReactNode }) => {\r\n const [isDrawerOpen, setIsDrawerOpen] = React.useState(false);\r\n\r\n const openDrawer = () => {\r\n setIsDrawerOpen(true);\r\n };\r\n\r\n const closeDrawer = () => {\r\n setIsDrawerOpen(false);\r\n };\r\n\r\n const toggleDrawer = () => {\r\n setIsDrawerOpen((prev) => !prev);\r\n };\r\n\r\n return (\r\n <DrawerContext.Provider\r\n value={{ isDrawerOpen, openDrawer, closeDrawer, toggleDrawer }}\r\n >\r\n {children}\r\n </DrawerContext.Provider>\r\n );\r\n};\r\n\r\nexport const useDrawer = () => React.useContext(DrawerContext);\r\n\r\n","/**\r\n * Utility functions to get user data from localStorage\r\n */\r\n\r\n/**\r\n * Gets user profile data from localStorage\r\n * Returns user info including name, email, role, etc.\r\n */\r\nexport const getUserDataFromStorage = () => {\r\n const userDbString = localStorage.getItem(\"persist:userdb\");\r\n if (userDbString) {\r\n try {\r\n const parsedOuter = JSON.parse(userDbString);\r\n \r\n // Helper function to parse nested JSON strings\r\n const parseNested = (value: any) => {\r\n if (typeof value === 'string') {\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return value;\r\n }\r\n }\r\n return value;\r\n };\r\n \r\n // Try to get user data from different possible locations\r\n let userData = null;\r\n \r\n // Check for userDetails\r\n if (parsedOuter.userDetails) {\r\n const parsedUserDetails = parseNested(parsedOuter.userDetails);\r\n userData = parsedUserDetails.user || parsedUserDetails.data || parsedUserDetails;\r\n }\r\n \r\n // Check for user reducer/state\r\n if (!userData && parsedOuter.user) {\r\n const parsedUser = parseNested(parsedOuter.user);\r\n userData = parsedUser.user || parsedUser.data || parsedUser.currentUser || parsedUser;\r\n }\r\n \r\n // Check for authDetails for user info\r\n if (!userData && parsedOuter.authDetails) {\r\n const parsedAuthDetails = parseNested(parsedOuter.authDetails);\r\n // Check auth object\r\n if (parsedAuthDetails.auth) {\r\n userData = parsedAuthDetails.auth.user || parsedAuthDetails.auth.userData;\r\n }\r\n // Check root of authDetails\r\n if (!userData) {\r\n userData = parsedAuthDetails.user || parsedAuthDetails.userData || parsedAuthDetails.currentUser;\r\n }\r\n }\r\n \r\n // Check for profile\r\n if (!userData && parsedOuter.profile) {\r\n const parsedProfile = parseNested(parsedOuter.profile);\r\n userData = parsedProfile.user || parsedProfile.data || parsedProfile;\r\n }\r\n \r\n if (userData) {\r\n // Build name from various possible fields\r\n let name = userData.name || userData.fullName || userData.userName || \"\";\r\n if (!name && (userData.firstName || userData.lastName)) {\r\n name = [userData.firstName, userData.lastName].filter(Boolean).join(' ');\r\n }\r\n \r\n return {\r\n name: name || \"\",\r\n email: userData.email || userData.emailAddress || \"\",\r\n role: userData.role || userData.userRole || userData.designation || userData.title || \"\",\r\n avatar: userData.avatar || userData.profilePicture || userData.imageUrl || userData.profileImage,\r\n initials: userData.initials,\r\n };\r\n }\r\n } catch (err) {\r\n console.error(\"Error parsing user data from localStorage:\", err);\r\n return null;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n","import AccountCircle from \"@mui/icons-material/AccountCircle\";\r\nimport LogoutOutlinedIcon from \"@mui/icons-material/LogoutOutlined\";\r\nimport MailIcon from \"@mui/icons-material/Mail\";\r\nimport MenuIcon from \"@mui/icons-material/Menu\";\r\nimport MenuOpenIcon from \"@mui/icons-material/MenuOpen\";\r\nimport MoreIcon from \"@mui/icons-material/MoreVert\";\r\nimport NotificationsActiveOutlined from \"@mui/icons-material/NotificationsActiveOutlined\";\r\nimport PersonOutlineOutlinedIcon from \"@mui/icons-material/PersonOutlineOutlined\";\r\nimport SettingsOutlinedIcon from \"@mui/icons-material/SettingsOutlined\";\r\nimport {\r\n AppBar,\r\n Avatar,\r\n Badge,\r\n Box,\r\n Divider,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemIcon,\r\n ListItemText,\r\n Menu,\r\n MenuItem,\r\n styled,\r\n Toolbar,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { deepOrange } from \"@mui/material/colors\";\r\nimport React from \"react\";\r\nimport { useDrawer } from \"./DrawerContext\";\r\nimport { AppHeaderProps, UserProfile } from \"./types\";\r\nimport { getUserDataFromStorage } from \"./utils/localStorage\";\r\nimport \"./styles/Header.scss\";\r\n\r\n// Default routes - absolute paths from root\r\nconst DEFAULT_ROUTES = {\r\n settings: \"/account/overview\",\r\n profile: \"/profile\",\r\n logout: \"/logout\",\r\n};\r\n\r\n// Default logo - can be overridden via props\r\nconst DEFAULT_LOGO = {\r\n first: \"VAR\",\r\n second: \"MINER\",\r\n};\r\n\r\nconst AppHeader: React.FC<AppHeaderProps> = ({\r\n user: userProp,\r\n isOnline = true,\r\n logo,\r\n notificationCount = 0,\r\n messageCount,\r\n onDrawerToggle,\r\n routes,\r\n onSettingsClick,\r\n onProfileClick,\r\n onSignOutClick,\r\n className,\r\n isDrawerOpen: isDrawerOpenProp,\r\n}) => {\r\n // Use provided logo or default\r\n const finalLogo = logo ?? DEFAULT_LOGO;\r\n \r\n const { isDrawerOpen: isDrawerOpenContext, toggleDrawer } = useDrawer();\r\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\r\n const [mobileMoreAnchorEl, setMobileMoreAnchorEl] =\r\n React.useState<null | HTMLElement>(null);\r\n const [user, setUser] = React.useState<UserProfile>(() => {\r\n // Initialize with prop if provided, otherwise try localStorage, otherwise default\r\n if (userProp) {\r\n return userProp;\r\n }\r\n const storedUser = getUserDataFromStorage();\r\n if (storedUser && storedUser.name && storedUser.email) {\r\n return storedUser;\r\n }\r\n return {\r\n name: \"Shivam Kumar\",\r\n email: \"shivam@redcliffelabs.com\",\r\n role: \"Lab Technician\",\r\n initials: \"SK\",\r\n };\r\n });\r\n\r\n // Use prop if provided, otherwise use context\r\n const isDrawerOpen = isDrawerOpenProp !== undefined ? isDrawerOpenProp : isDrawerOpenContext;\r\n\r\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\r\n\r\n // Update user state when prop changes or fetch from localStorage\r\n React.useEffect(() => {\r\n if (userProp) {\r\n setUser(userProp);\r\n } else {\r\n const storedUser = getUserDataFromStorage();\r\n if (storedUser && storedUser.name && storedUser.email) {\r\n setUser(storedUser);\r\n }\r\n }\r\n }, [userProp]);\r\n\r\n // Merge provided routes with defaults - all routes are absolute from root\r\n const finalRoutes = {\r\n settings: routes?.settings ?? DEFAULT_ROUTES.settings,\r\n profile: routes?.profile ?? DEFAULT_ROUTES.profile,\r\n logout: routes?.logout ?? DEFAULT_ROUTES.logout,\r\n };\r\n\r\n const OnlineBadge = styled(Badge)(({ theme }) => ({\r\n \"& .MuiBadge-badge\": {\r\n backgroundColor: \"#44b700\",\r\n color: \"#44b700\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n width: 12,\r\n height: 12,\r\n borderRadius: \"50%\",\r\n },\r\n }));\r\n\r\n const OfflineBadge = styled(Badge)(({ theme }) => ({\r\n \"& .MuiBadge-badge\": {\r\n backgroundColor: \"gray\",\r\n color: \"gray\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n width: 12,\r\n height: 12,\r\n borderRadius: \"50%\",\r\n },\r\n }));\r\n\r\n const handleDrawerToggle = () => {\r\n toggleDrawer();\r\n onDrawerToggle?.();\r\n };\r\n\r\n const handleProfileMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleMobileMenuClose = () => {\r\n setMobileMoreAnchorEl(null);\r\n };\r\n\r\n const handleMobileMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setMobileMoreAnchorEl(event.currentTarget);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleSettingsClick = () => {\r\n handleClose();\r\n if (onSettingsClick) {\r\n onSettingsClick();\r\n } else {\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.settings.startsWith('/') \r\n ? finalRoutes.settings \r\n : `/${finalRoutes.settings}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const handleProfileClick = () => {\r\n handleClose();\r\n if (onProfileClick) {\r\n onProfileClick();\r\n } else {\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.profile.startsWith('/') \r\n ? finalRoutes.profile \r\n : `/${finalRoutes.profile}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const handleSignOutClick = () => {\r\n handleClose();\r\n if (onSignOutClick) {\r\n onSignOutClick();\r\n } else {\r\n localStorage.clear();\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.logout.startsWith('/') \r\n ? finalRoutes.logout \r\n : `/${finalRoutes.logout}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const menuId = \"primary-account-menu\";\r\n\r\n const getInitials = () => {\r\n if (user.initials) return user.initials;\r\n return user.name\r\n .split(\" \")\r\n .map((n) => n[0])\r\n .join(\"\")\r\n .toUpperCase()\r\n .slice(0, 2);\r\n };\r\n\r\n const profileList = (\r\n <List\r\n className=\"profile-menu-section\"\r\n sx={{\r\n width: \"100%\",\r\n maxWidth: 360,\r\n pointerEvents: \"none\",\r\n }}\r\n component=\"div\"\r\n aria-hidden=\"true\"\r\n tabIndex={-1}\r\n >\r\n <ListItem alignItems=\"flex-start\" className=\"profile-menu-item\">\r\n <ListItemAvatar>\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <Avatar\r\n sx={{ bgcolor: deepOrange[500] }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <Avatar\r\n sx={{ bgcolor: deepOrange[500] }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OfflineBadge>\r\n )}\r\n </ListItemAvatar>\r\n <ListItemText\r\n secondary={\r\n <React.Fragment>\r\n <Typography className=\"profile-name\" component=\"p\">\r\n {user.name}\r\n </Typography>\r\n <Typography className=\"profile-email\" component=\"p\">\r\n {user.email}\r\n </Typography>\r\n <Typography className=\"profile-role\" component=\"p\">\r\n Role: {user.role}\r\n </Typography>\r\n </React.Fragment>\r\n }\r\n />\r\n </ListItem>\r\n </List>\r\n );\r\n\r\n const renderMenu = (\r\n <Menu\r\n anchorEl={anchorEl}\r\n id=\"account-menu\"\r\n open={open}\r\n onClose={handleClose}\r\n onClick={handleClose}\r\n slotProps={{\r\n paper: {\r\n elevation: 0,\r\n sx: {\r\n overflow: \"visible\",\r\n filter: \"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))\",\r\n mt: 1.5,\r\n \"& .MuiAvatar-root\": {\r\n width: 32,\r\n height: 32,\r\n ml: -0.5,\r\n mr: 1,\r\n },\r\n \"&::before\": {\r\n content: '\"\"',\r\n display: \"block\",\r\n position: \"absolute\",\r\n top: 0,\r\n right: 14,\r\n width: 10,\r\n height: 10,\r\n bgcolor: \"background.paper\",\r\n transform: \"translateY(-50%) rotate(45deg)\",\r\n zIndex: 0,\r\n },\r\n },\r\n },\r\n }}\r\n transformOrigin={{ horizontal: \"right\", vertical: \"top\" }}\r\n anchorOrigin={{ horizontal: \"right\", vertical: \"bottom\" }}\r\n >\r\n {profileList}\r\n <Divider />\r\n <MenuItem onClick={handleSettingsClick}>\r\n <ListItemIcon>\r\n <SettingsOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Account Settings\r\n </MenuItem>\r\n <MenuItem onClick={handleProfileClick}>\r\n <ListItemIcon>\r\n <PersonOutlineOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Profile\r\n </MenuItem>\r\n <MenuItem onClick={handleSignOutClick}>\r\n <ListItemIcon>\r\n <LogoutOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Sign out\r\n </MenuItem>\r\n </Menu>\r\n );\r\n\r\n const mobileMenuId = \"primary-account-menu-mobile\";\r\n const renderMobileMenu = (\r\n <Menu\r\n anchorEl={mobileMoreAnchorEl}\r\n anchorOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n id={mobileMenuId}\r\n keepMounted\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n open={isMobileMenuOpen}\r\n onClose={handleMobileMenuClose}\r\n >\r\n {messageCount !== undefined && (\r\n <MenuItem>\r\n <IconButton \r\n size=\"large\" \r\n aria-label={`show ${messageCount} new mails`}\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n <Badge badgeContent={messageCount} color=\"error\">\r\n <MailIcon />\r\n </Badge>\r\n </IconButton>\r\n <p>Messages</p>\r\n </MenuItem>\r\n )}\r\n {notificationCount > 0 && (\r\n <MenuItem>\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCount} new notifications`}\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n <Badge badgeContent={notificationCount} color=\"error\">\r\n <NotificationsActiveOutlined />\r\n </Badge>\r\n </IconButton>\r\n <p>Notifications</p>\r\n </MenuItem>\r\n )}\r\n <MenuItem onClick={handleProfileMenuOpen}>\r\n <IconButton\r\n size=\"large\"\r\n aria-label=\"account of current user\"\r\n aria-controls=\"primary-account-menu\"\r\n aria-haspopup=\"true\"\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <AccountCircle\r\n titleAccess={user.name}\r\n aria-label=\"User avatar\"\r\n />\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <AccountCircle\r\n titleAccess={user.name}\r\n aria-label=\"User avatar\"\r\n />\r\n </OfflineBadge>\r\n )}\r\n </IconButton>\r\n <p>Profile</p>\r\n </MenuItem>\r\n </Menu>\r\n );\r\n\r\n return (\r\n <Box sx={{ flexGrow: 1 }} className={`app-header ${className || \"\"}`}>\r\n <AppBar\r\n sx={{\r\n position: \"fixed\",\r\n top: 0,\r\n backgroundColor: \"#ffffff\",\r\n }}\r\n >\r\n <Toolbar>\r\n <IconButton\r\n size=\"large\"\r\n edge=\"start\"\r\n aria-label=\"open drawer\"\r\n sx={{ \r\n mr: 2,\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n onClick={handleDrawerToggle}\r\n >\r\n {isDrawerOpen ? (\r\n <MenuOpenIcon fontSize=\"large\" />\r\n ) : (\r\n <MenuIcon fontSize=\"large\" />\r\n )}\r\n </IconButton>\r\n <Typography\r\n variant=\"h6\"\r\n noWrap\r\n component=\"div\"\r\n sx={{ display: { xs: \"none\", sm: \"block\" } }}\r\n data-testid=\"var-miner-wrapper\"\r\n >\r\n <span className=\"var\">{finalLogo.first}</span>\r\n <span className=\"miner\">{finalLogo.second}</span>\r\n </Typography>\r\n <Box sx={{ flexGrow: 1 }} />\r\n <Box sx={{ display: { xs: \"none\", md: \"flex\" } }}>\r\n {notificationCount > 0 && (\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCount} new notifications`}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n <Badge badgeContent={notificationCount} color=\"error\">\r\n <NotificationsActiveOutlined />\r\n </Badge>\r\n </IconButton>\r\n )}\r\n <IconButton\r\n size=\"large\"\r\n edge=\"end\"\r\n aria-label=\"account of current user\"\r\n aria-controls={menuId}\r\n aria-haspopup=\"true\"\r\n onClick={handleProfileMenuOpen}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <Avatar\r\n sx={{\r\n bgcolor: deepOrange[500],\r\n width: 20,\r\n height: 20,\r\n p: 1,\r\n }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n sizes=\"large\"\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <Avatar\r\n sx={{\r\n bgcolor: deepOrange[500],\r\n width: 20,\r\n height: 20,\r\n p: 1,\r\n }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OfflineBadge>\r\n )}\r\n </IconButton>\r\n </Box>\r\n <Box sx={{ display: { xs: \"flex\", md: \"none\" } }}>\r\n <IconButton\r\n size=\"large\"\r\n aria-label=\"show more\"\r\n aria-controls={mobileMenuId}\r\n aria-haspopup=\"true\"\r\n onClick={handleMobileMenuOpen}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n <MoreIcon />\r\n </IconButton>\r\n </Box>\r\n </Toolbar>\r\n </AppBar>\r\n {renderMobileMenu}\r\n {renderMenu}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default AppHeader;\r\n\r\n"],"names":["_jsx","React","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/DrawerContext.tsx","../src/AppHeader.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\ninterface DrawerContextType {\r\n isDrawerOpen: boolean;\r\n openDrawer: () => void;\r\n closeDrawer: () => void;\r\n toggleDrawer: () => void;\r\n}\r\n\r\nconst DrawerContext = React.createContext<DrawerContextType>({\r\n isDrawerOpen: false,\r\n openDrawer: () => {},\r\n closeDrawer: () => {},\r\n toggleDrawer: () => {},\r\n});\r\n\r\nexport const DrawerProvider = ({ children }: { children: React.ReactNode }) => {\r\n const [isDrawerOpen, setIsDrawerOpen] = React.useState(false);\r\n\r\n const openDrawer = () => {\r\n setIsDrawerOpen(true);\r\n };\r\n\r\n const closeDrawer = () => {\r\n setIsDrawerOpen(false);\r\n };\r\n\r\n const toggleDrawer = () => {\r\n setIsDrawerOpen((prev) => !prev);\r\n };\r\n\r\n return (\r\n <DrawerContext.Provider\r\n value={{ isDrawerOpen, openDrawer, closeDrawer, toggleDrawer }}\r\n >\r\n {children}\r\n </DrawerContext.Provider>\r\n );\r\n};\r\n\r\nexport const useDrawer = () => React.useContext(DrawerContext);\r\n\r\n","import AccountCircle from \"@mui/icons-material/AccountCircle\";\r\nimport LogoutOutlinedIcon from \"@mui/icons-material/LogoutOutlined\";\r\nimport MailIcon from \"@mui/icons-material/Mail\";\r\nimport MenuIcon from \"@mui/icons-material/Menu\";\r\nimport MenuOpenIcon from \"@mui/icons-material/MenuOpen\";\r\nimport MoreIcon from \"@mui/icons-material/MoreVert\";\r\nimport NotificationsActiveOutlined from \"@mui/icons-material/NotificationsActiveOutlined\";\r\nimport PersonOutlineOutlinedIcon from \"@mui/icons-material/PersonOutlineOutlined\";\r\nimport SettingsOutlinedIcon from \"@mui/icons-material/SettingsOutlined\";\r\nimport {\r\n AppBar,\r\n Avatar,\r\n Badge,\r\n Box,\r\n Divider,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemIcon,\r\n ListItemText,\r\n Menu,\r\n MenuItem,\r\n styled,\r\n Toolbar,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { deepOrange } from \"@mui/material/colors\";\r\nimport React from \"react\";\r\nimport { useDrawer } from \"./DrawerContext\";\r\nimport { AppHeaderProps } from \"./types\";\r\nimport \"./styles/Header.scss\";\r\n\r\n// Default routes - absolute paths from root\r\nconst DEFAULT_ROUTES = {\r\n settings: \"/account/overview\",\r\n profile: \"/profile\",\r\n logout: \"/logout\",\r\n};\r\n\r\n// Default logo - can be overridden via props\r\nconst DEFAULT_LOGO = {\r\n first: \"VAR\",\r\n second: \"MINER\",\r\n};\r\n\r\nconst AppHeader: React.FC<AppHeaderProps> = ({\r\n user = {\r\n name: \"Shivam Kumar\",\r\n email: \"shivam@redcliffelabs.com\",\r\n role: \"Lab Technician\",\r\n initials: \"SK\",\r\n },\r\n isOnline = true,\r\n logo,\r\n notificationCount = 0,\r\n messageCount,\r\n onDrawerToggle,\r\n routes,\r\n onSettingsClick,\r\n onProfileClick,\r\n onSignOutClick,\r\n className,\r\n}) => {\r\n // Use provided logo or default\r\n const finalLogo = logo ?? DEFAULT_LOGO;\r\n \r\n const { isDrawerOpen, toggleDrawer } = useDrawer();\r\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\r\n const [mobileMoreAnchorEl, setMobileMoreAnchorEl] =\r\n React.useState<null | HTMLElement>(null);\r\n\r\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\r\n\r\n // Merge provided routes with defaults - all routes are absolute from root\r\n const finalRoutes = {\r\n settings: routes?.settings ?? DEFAULT_ROUTES.settings,\r\n profile: routes?.profile ?? DEFAULT_ROUTES.profile,\r\n logout: routes?.logout ?? DEFAULT_ROUTES.logout,\r\n };\r\n\r\n const OnlineBadge = styled(Badge)(({ theme }) => ({\r\n \"& .MuiBadge-badge\": {\r\n backgroundColor: \"#44b700\",\r\n color: \"#44b700\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n width: 12,\r\n height: 12,\r\n borderRadius: \"50%\",\r\n },\r\n }));\r\n\r\n const OfflineBadge = styled(Badge)(({ theme }) => ({\r\n \"& .MuiBadge-badge\": {\r\n backgroundColor: \"gray\",\r\n color: \"gray\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n width: 12,\r\n height: 12,\r\n borderRadius: \"50%\",\r\n },\r\n }));\r\n\r\n const handleDrawerToggle = () => {\r\n toggleDrawer();\r\n onDrawerToggle?.();\r\n };\r\n\r\n const handleProfileMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleMobileMenuClose = () => {\r\n setMobileMoreAnchorEl(null);\r\n };\r\n\r\n const handleMobileMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setMobileMoreAnchorEl(event.currentTarget);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleSettingsClick = () => {\r\n handleClose();\r\n if (onSettingsClick) {\r\n onSettingsClick();\r\n } else {\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.settings.startsWith('/') \r\n ? finalRoutes.settings \r\n : `/${finalRoutes.settings}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const handleProfileClick = () => {\r\n handleClose();\r\n if (onProfileClick) {\r\n onProfileClick();\r\n } else {\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.profile.startsWith('/') \r\n ? finalRoutes.profile \r\n : `/${finalRoutes.profile}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const handleSignOutClick = () => {\r\n handleClose();\r\n if (onSignOutClick) {\r\n onSignOutClick();\r\n } else {\r\n localStorage.clear();\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.logout.startsWith('/') \r\n ? finalRoutes.logout \r\n : `/${finalRoutes.logout}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const menuId = \"primary-account-menu\";\r\n\r\n const getInitials = () => {\r\n if (user.initials) return user.initials;\r\n return user.name\r\n .split(\" \")\r\n .map((n) => n[0])\r\n .join(\"\")\r\n .toUpperCase()\r\n .slice(0, 2);\r\n };\r\n\r\n const profileList = (\r\n <List\r\n className=\"profile-menu-section\"\r\n sx={{\r\n width: \"100%\",\r\n maxWidth: 360,\r\n pointerEvents: \"none\",\r\n }}\r\n component=\"div\"\r\n aria-hidden=\"true\"\r\n tabIndex={-1}\r\n >\r\n <ListItem alignItems=\"flex-start\" className=\"profile-menu-item\">\r\n <ListItemAvatar>\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <Avatar\r\n sx={{ bgcolor: deepOrange[500] }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <Avatar\r\n sx={{ bgcolor: deepOrange[500] }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OfflineBadge>\r\n )}\r\n </ListItemAvatar>\r\n <ListItemText\r\n secondary={\r\n <React.Fragment>\r\n <Typography className=\"profile-name\" component=\"p\">\r\n {user.name}\r\n </Typography>\r\n <Typography className=\"profile-email\" component=\"p\">\r\n {user.email}\r\n </Typography>\r\n <Typography className=\"profile-role\" component=\"p\">\r\n Role: {user.role}\r\n </Typography>\r\n </React.Fragment>\r\n }\r\n />\r\n </ListItem>\r\n </List>\r\n );\r\n\r\n const renderMenu = (\r\n <Menu\r\n anchorEl={anchorEl}\r\n id=\"account-menu\"\r\n open={open}\r\n onClose={handleClose}\r\n onClick={handleClose}\r\n slotProps={{\r\n paper: {\r\n elevation: 0,\r\n sx: {\r\n overflow: \"visible\",\r\n filter: \"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))\",\r\n mt: 1.5,\r\n \"& .MuiAvatar-root\": {\r\n width: 32,\r\n height: 32,\r\n ml: -0.5,\r\n mr: 1,\r\n },\r\n \"&::before\": {\r\n content: '\"\"',\r\n display: \"block\",\r\n position: \"absolute\",\r\n top: 0,\r\n right: 14,\r\n width: 10,\r\n height: 10,\r\n bgcolor: \"background.paper\",\r\n transform: \"translateY(-50%) rotate(45deg)\",\r\n zIndex: 0,\r\n },\r\n },\r\n },\r\n }}\r\n transformOrigin={{ horizontal: \"right\", vertical: \"top\" }}\r\n anchorOrigin={{ horizontal: \"right\", vertical: \"bottom\" }}\r\n >\r\n {profileList}\r\n <Divider />\r\n <MenuItem onClick={handleSettingsClick}>\r\n <ListItemIcon>\r\n <SettingsOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Account Settings\r\n </MenuItem>\r\n <MenuItem onClick={handleProfileClick}>\r\n <ListItemIcon>\r\n <PersonOutlineOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Profile\r\n </MenuItem>\r\n <MenuItem onClick={handleSignOutClick}>\r\n <ListItemIcon>\r\n <LogoutOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Sign out\r\n </MenuItem>\r\n </Menu>\r\n );\r\n\r\n const mobileMenuId = \"primary-account-menu-mobile\";\r\n const renderMobileMenu = (\r\n <Menu\r\n anchorEl={mobileMoreAnchorEl}\r\n anchorOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n id={mobileMenuId}\r\n keepMounted\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n open={isMobileMenuOpen}\r\n onClose={handleMobileMenuClose}\r\n >\r\n {messageCount !== undefined && (\r\n <MenuItem>\r\n <IconButton \r\n size=\"large\" \r\n aria-label={`show ${messageCount} new mails`}\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n <Badge badgeContent={messageCount} color=\"error\">\r\n <MailIcon />\r\n </Badge>\r\n </IconButton>\r\n <p>Messages</p>\r\n </MenuItem>\r\n )}\r\n {notificationCount > 0 && (\r\n <MenuItem>\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCount} new notifications`}\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n <Badge badgeContent={notificationCount} color=\"error\">\r\n <NotificationsActiveOutlined />\r\n </Badge>\r\n </IconButton>\r\n <p>Notifications</p>\r\n </MenuItem>\r\n )}\r\n <MenuItem onClick={handleProfileMenuOpen}>\r\n <IconButton\r\n size=\"large\"\r\n aria-label=\"account of current user\"\r\n aria-controls=\"primary-account-menu\"\r\n aria-haspopup=\"true\"\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <AccountCircle\r\n titleAccess={user.name}\r\n aria-label=\"User avatar\"\r\n />\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <AccountCircle\r\n titleAccess={user.name}\r\n aria-label=\"User avatar\"\r\n />\r\n </OfflineBadge>\r\n )}\r\n </IconButton>\r\n <p>Profile</p>\r\n </MenuItem>\r\n </Menu>\r\n );\r\n\r\n return (\r\n <Box sx={{ flexGrow: 1 }} className={`app-header ${className || \"\"}`}>\r\n <AppBar\r\n sx={{\r\n position: \"fixed\",\r\n top: 0,\r\n backgroundColor: \"#ffffff\",\r\n }}\r\n >\r\n <Toolbar>\r\n <IconButton\r\n size=\"large\"\r\n edge=\"start\"\r\n aria-label=\"open drawer\"\r\n sx={{ \r\n mr: 2,\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n onClick={handleDrawerToggle}\r\n >\r\n {isDrawerOpen ? (\r\n <MenuOpenIcon fontSize=\"large\" />\r\n ) : (\r\n <MenuIcon fontSize=\"large\" />\r\n )}\r\n </IconButton>\r\n <Typography\r\n variant=\"h6\"\r\n noWrap\r\n component=\"div\"\r\n sx={{ display: { xs: \"none\", sm: \"block\" } }}\r\n data-testid=\"var-miner-wrapper\"\r\n >\r\n <span className=\"var\">{finalLogo.first}</span>\r\n <span className=\"miner\">{finalLogo.second}</span>\r\n </Typography>\r\n <Box sx={{ flexGrow: 1 }} />\r\n <Box sx={{ display: { xs: \"none\", md: \"flex\" } }}>\r\n {notificationCount > 0 && (\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCount} new notifications`}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n <Badge badgeContent={notificationCount} color=\"error\">\r\n <NotificationsActiveOutlined />\r\n </Badge>\r\n </IconButton>\r\n )}\r\n <IconButton\r\n size=\"large\"\r\n edge=\"end\"\r\n aria-label=\"account of current user\"\r\n aria-controls={menuId}\r\n aria-haspopup=\"true\"\r\n onClick={handleProfileMenuOpen}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <Avatar\r\n sx={{\r\n bgcolor: deepOrange[500],\r\n width: 20,\r\n height: 20,\r\n p: 1,\r\n }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n sizes=\"large\"\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <Avatar\r\n sx={{\r\n bgcolor: deepOrange[500],\r\n width: 20,\r\n height: 20,\r\n p: 1,\r\n }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OfflineBadge>\r\n )}\r\n </IconButton>\r\n </Box>\r\n <Box sx={{ display: { xs: \"flex\", md: \"none\" } }}>\r\n <IconButton\r\n size=\"large\"\r\n aria-label=\"show more\"\r\n aria-controls={mobileMenuId}\r\n aria-haspopup=\"true\"\r\n onClick={handleMobileMenuOpen}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n <MoreIcon />\r\n </IconButton>\r\n </Box>\r\n </Toolbar>\r\n </AppBar>\r\n {renderMobileMenu}\r\n {renderMenu}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default AppHeader;\r\n\r\n"],"names":["_jsx","React","_jsxs"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -54,82 +54,6 @@ const DrawerProvider = ({ children }) => {
54
54
  };
55
55
  const useDrawer = () => React__namespace.useContext(DrawerContext);
56
56
 
57
- /**
58
- * Utility functions to get user data from localStorage
59
- */
60
- /**
61
- * Gets user profile data from localStorage
62
- * Returns user info including name, email, role, etc.
63
- */
64
- const getUserDataFromStorage = () => {
65
- const userDbString = localStorage.getItem("persist:userdb");
66
- if (userDbString) {
67
- try {
68
- const parsedOuter = JSON.parse(userDbString);
69
- // Helper function to parse nested JSON strings
70
- const parseNested = (value) => {
71
- if (typeof value === 'string') {
72
- try {
73
- return JSON.parse(value);
74
- }
75
- catch {
76
- return value;
77
- }
78
- }
79
- return value;
80
- };
81
- // Try to get user data from different possible locations
82
- let userData = null;
83
- // Check for userDetails
84
- if (parsedOuter.userDetails) {
85
- const parsedUserDetails = parseNested(parsedOuter.userDetails);
86
- userData = parsedUserDetails.user || parsedUserDetails.data || parsedUserDetails;
87
- }
88
- // Check for user reducer/state
89
- if (!userData && parsedOuter.user) {
90
- const parsedUser = parseNested(parsedOuter.user);
91
- userData = parsedUser.user || parsedUser.data || parsedUser.currentUser || parsedUser;
92
- }
93
- // Check for authDetails for user info
94
- if (!userData && parsedOuter.authDetails) {
95
- const parsedAuthDetails = parseNested(parsedOuter.authDetails);
96
- // Check auth object
97
- if (parsedAuthDetails.auth) {
98
- userData = parsedAuthDetails.auth.user || parsedAuthDetails.auth.userData;
99
- }
100
- // Check root of authDetails
101
- if (!userData) {
102
- userData = parsedAuthDetails.user || parsedAuthDetails.userData || parsedAuthDetails.currentUser;
103
- }
104
- }
105
- // Check for profile
106
- if (!userData && parsedOuter.profile) {
107
- const parsedProfile = parseNested(parsedOuter.profile);
108
- userData = parsedProfile.user || parsedProfile.data || parsedProfile;
109
- }
110
- if (userData) {
111
- // Build name from various possible fields
112
- let name = userData.name || userData.fullName || userData.userName || "";
113
- if (!name && (userData.firstName || userData.lastName)) {
114
- name = [userData.firstName, userData.lastName].filter(Boolean).join(' ');
115
- }
116
- return {
117
- name: name || "",
118
- email: userData.email || userData.emailAddress || "",
119
- role: userData.role || userData.userRole || userData.designation || userData.title || "",
120
- avatar: userData.avatar || userData.profilePicture || userData.imageUrl || userData.profileImage,
121
- initials: userData.initials,
122
- };
123
- }
124
- }
125
- catch (err) {
126
- console.error("Error parsing user data from localStorage:", err);
127
- return null;
128
- }
129
- }
130
- return null;
131
- };
132
-
133
57
  // Default routes - absolute paths from root
134
58
  const DEFAULT_ROUTES = {
135
59
  settings: "/account/overview",
@@ -141,43 +65,18 @@ const DEFAULT_LOGO = {
141
65
  first: "VAR",
142
66
  second: "MINER",
143
67
  };
144
- const AppHeader = ({ user: userProp, isOnline = true, logo, notificationCount = 0, messageCount, onDrawerToggle, routes, onSettingsClick, onProfileClick, onSignOutClick, className, isDrawerOpen: isDrawerOpenProp, }) => {
68
+ const AppHeader = ({ user = {
69
+ name: "Shivam Kumar",
70
+ email: "shivam@redcliffelabs.com",
71
+ role: "Lab Technician",
72
+ initials: "SK",
73
+ }, isOnline = true, logo, notificationCount = 0, messageCount, onDrawerToggle, routes, onSettingsClick, onProfileClick, onSignOutClick, className, }) => {
145
74
  // Use provided logo or default
146
75
  const finalLogo = logo ?? DEFAULT_LOGO;
147
- const { isDrawerOpen: isDrawerOpenContext, toggleDrawer } = useDrawer();
76
+ const { isDrawerOpen, toggleDrawer } = useDrawer();
148
77
  const [anchorEl, setAnchorEl] = React.useState(null);
149
78
  const [mobileMoreAnchorEl, setMobileMoreAnchorEl] = React.useState(null);
150
- const [user, setUser] = React.useState(() => {
151
- // Initialize with prop if provided, otherwise try localStorage, otherwise default
152
- if (userProp) {
153
- return userProp;
154
- }
155
- const storedUser = getUserDataFromStorage();
156
- if (storedUser && storedUser.name && storedUser.email) {
157
- return storedUser;
158
- }
159
- return {
160
- name: "Shivam Kumar",
161
- email: "shivam@redcliffelabs.com",
162
- role: "Lab Technician",
163
- initials: "SK",
164
- };
165
- });
166
- // Use prop if provided, otherwise use context
167
- const isDrawerOpen = isDrawerOpenProp !== undefined ? isDrawerOpenProp : isDrawerOpenContext;
168
79
  const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);
169
- // Update user state when prop changes or fetch from localStorage
170
- React.useEffect(() => {
171
- if (userProp) {
172
- setUser(userProp);
173
- }
174
- else {
175
- const storedUser = getUserDataFromStorage();
176
- if (storedUser && storedUser.name && storedUser.email) {
177
- setUser(storedUser);
178
- }
179
- }
180
- }, [userProp]);
181
80
  // Merge provided routes with defaults - all routes are absolute from root
182
81
  const finalRoutes = {
183
82
  settings: routes?.settings ?? DEFAULT_ROUTES.settings,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/DrawerContext.tsx","../src/utils/localStorage.ts","../src/AppHeader.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\ninterface DrawerContextType {\r\n isDrawerOpen: boolean;\r\n openDrawer: () => void;\r\n closeDrawer: () => void;\r\n toggleDrawer: () => void;\r\n}\r\n\r\nconst DrawerContext = React.createContext<DrawerContextType>({\r\n isDrawerOpen: false,\r\n openDrawer: () => {},\r\n closeDrawer: () => {},\r\n toggleDrawer: () => {},\r\n});\r\n\r\nexport const DrawerProvider = ({ children }: { children: React.ReactNode }) => {\r\n const [isDrawerOpen, setIsDrawerOpen] = React.useState(false);\r\n\r\n const openDrawer = () => {\r\n setIsDrawerOpen(true);\r\n };\r\n\r\n const closeDrawer = () => {\r\n setIsDrawerOpen(false);\r\n };\r\n\r\n const toggleDrawer = () => {\r\n setIsDrawerOpen((prev) => !prev);\r\n };\r\n\r\n return (\r\n <DrawerContext.Provider\r\n value={{ isDrawerOpen, openDrawer, closeDrawer, toggleDrawer }}\r\n >\r\n {children}\r\n </DrawerContext.Provider>\r\n );\r\n};\r\n\r\nexport const useDrawer = () => React.useContext(DrawerContext);\r\n\r\n","/**\r\n * Utility functions to get user data from localStorage\r\n */\r\n\r\n/**\r\n * Gets user profile data from localStorage\r\n * Returns user info including name, email, role, etc.\r\n */\r\nexport const getUserDataFromStorage = () => {\r\n const userDbString = localStorage.getItem(\"persist:userdb\");\r\n if (userDbString) {\r\n try {\r\n const parsedOuter = JSON.parse(userDbString);\r\n \r\n // Helper function to parse nested JSON strings\r\n const parseNested = (value: any) => {\r\n if (typeof value === 'string') {\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return value;\r\n }\r\n }\r\n return value;\r\n };\r\n \r\n // Try to get user data from different possible locations\r\n let userData = null;\r\n \r\n // Check for userDetails\r\n if (parsedOuter.userDetails) {\r\n const parsedUserDetails = parseNested(parsedOuter.userDetails);\r\n userData = parsedUserDetails.user || parsedUserDetails.data || parsedUserDetails;\r\n }\r\n \r\n // Check for user reducer/state\r\n if (!userData && parsedOuter.user) {\r\n const parsedUser = parseNested(parsedOuter.user);\r\n userData = parsedUser.user || parsedUser.data || parsedUser.currentUser || parsedUser;\r\n }\r\n \r\n // Check for authDetails for user info\r\n if (!userData && parsedOuter.authDetails) {\r\n const parsedAuthDetails = parseNested(parsedOuter.authDetails);\r\n // Check auth object\r\n if (parsedAuthDetails.auth) {\r\n userData = parsedAuthDetails.auth.user || parsedAuthDetails.auth.userData;\r\n }\r\n // Check root of authDetails\r\n if (!userData) {\r\n userData = parsedAuthDetails.user || parsedAuthDetails.userData || parsedAuthDetails.currentUser;\r\n }\r\n }\r\n \r\n // Check for profile\r\n if (!userData && parsedOuter.profile) {\r\n const parsedProfile = parseNested(parsedOuter.profile);\r\n userData = parsedProfile.user || parsedProfile.data || parsedProfile;\r\n }\r\n \r\n if (userData) {\r\n // Build name from various possible fields\r\n let name = userData.name || userData.fullName || userData.userName || \"\";\r\n if (!name && (userData.firstName || userData.lastName)) {\r\n name = [userData.firstName, userData.lastName].filter(Boolean).join(' ');\r\n }\r\n \r\n return {\r\n name: name || \"\",\r\n email: userData.email || userData.emailAddress || \"\",\r\n role: userData.role || userData.userRole || userData.designation || userData.title || \"\",\r\n avatar: userData.avatar || userData.profilePicture || userData.imageUrl || userData.profileImage,\r\n initials: userData.initials,\r\n };\r\n }\r\n } catch (err) {\r\n console.error(\"Error parsing user data from localStorage:\", err);\r\n return null;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n","import AccountCircle from \"@mui/icons-material/AccountCircle\";\r\nimport LogoutOutlinedIcon from \"@mui/icons-material/LogoutOutlined\";\r\nimport MailIcon from \"@mui/icons-material/Mail\";\r\nimport MenuIcon from \"@mui/icons-material/Menu\";\r\nimport MenuOpenIcon from \"@mui/icons-material/MenuOpen\";\r\nimport MoreIcon from \"@mui/icons-material/MoreVert\";\r\nimport NotificationsActiveOutlined from \"@mui/icons-material/NotificationsActiveOutlined\";\r\nimport PersonOutlineOutlinedIcon from \"@mui/icons-material/PersonOutlineOutlined\";\r\nimport SettingsOutlinedIcon from \"@mui/icons-material/SettingsOutlined\";\r\nimport {\r\n AppBar,\r\n Avatar,\r\n Badge,\r\n Box,\r\n Divider,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemIcon,\r\n ListItemText,\r\n Menu,\r\n MenuItem,\r\n styled,\r\n Toolbar,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { deepOrange } from \"@mui/material/colors\";\r\nimport React from \"react\";\r\nimport { useDrawer } from \"./DrawerContext\";\r\nimport { AppHeaderProps, UserProfile } from \"./types\";\r\nimport { getUserDataFromStorage } from \"./utils/localStorage\";\r\nimport \"./styles/Header.scss\";\r\n\r\n// Default routes - absolute paths from root\r\nconst DEFAULT_ROUTES = {\r\n settings: \"/account/overview\",\r\n profile: \"/profile\",\r\n logout: \"/logout\",\r\n};\r\n\r\n// Default logo - can be overridden via props\r\nconst DEFAULT_LOGO = {\r\n first: \"VAR\",\r\n second: \"MINER\",\r\n};\r\n\r\nconst AppHeader: React.FC<AppHeaderProps> = ({\r\n user: userProp,\r\n isOnline = true,\r\n logo,\r\n notificationCount = 0,\r\n messageCount,\r\n onDrawerToggle,\r\n routes,\r\n onSettingsClick,\r\n onProfileClick,\r\n onSignOutClick,\r\n className,\r\n isDrawerOpen: isDrawerOpenProp,\r\n}) => {\r\n // Use provided logo or default\r\n const finalLogo = logo ?? DEFAULT_LOGO;\r\n \r\n const { isDrawerOpen: isDrawerOpenContext, toggleDrawer } = useDrawer();\r\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\r\n const [mobileMoreAnchorEl, setMobileMoreAnchorEl] =\r\n React.useState<null | HTMLElement>(null);\r\n const [user, setUser] = React.useState<UserProfile>(() => {\r\n // Initialize with prop if provided, otherwise try localStorage, otherwise default\r\n if (userProp) {\r\n return userProp;\r\n }\r\n const storedUser = getUserDataFromStorage();\r\n if (storedUser && storedUser.name && storedUser.email) {\r\n return storedUser;\r\n }\r\n return {\r\n name: \"Shivam Kumar\",\r\n email: \"shivam@redcliffelabs.com\",\r\n role: \"Lab Technician\",\r\n initials: \"SK\",\r\n };\r\n });\r\n\r\n // Use prop if provided, otherwise use context\r\n const isDrawerOpen = isDrawerOpenProp !== undefined ? isDrawerOpenProp : isDrawerOpenContext;\r\n\r\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\r\n\r\n // Update user state when prop changes or fetch from localStorage\r\n React.useEffect(() => {\r\n if (userProp) {\r\n setUser(userProp);\r\n } else {\r\n const storedUser = getUserDataFromStorage();\r\n if (storedUser && storedUser.name && storedUser.email) {\r\n setUser(storedUser);\r\n }\r\n }\r\n }, [userProp]);\r\n\r\n // Merge provided routes with defaults - all routes are absolute from root\r\n const finalRoutes = {\r\n settings: routes?.settings ?? DEFAULT_ROUTES.settings,\r\n profile: routes?.profile ?? DEFAULT_ROUTES.profile,\r\n logout: routes?.logout ?? DEFAULT_ROUTES.logout,\r\n };\r\n\r\n const OnlineBadge = styled(Badge)(({ theme }) => ({\r\n \"& .MuiBadge-badge\": {\r\n backgroundColor: \"#44b700\",\r\n color: \"#44b700\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n width: 12,\r\n height: 12,\r\n borderRadius: \"50%\",\r\n },\r\n }));\r\n\r\n const OfflineBadge = styled(Badge)(({ theme }) => ({\r\n \"& .MuiBadge-badge\": {\r\n backgroundColor: \"gray\",\r\n color: \"gray\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n width: 12,\r\n height: 12,\r\n borderRadius: \"50%\",\r\n },\r\n }));\r\n\r\n const handleDrawerToggle = () => {\r\n toggleDrawer();\r\n onDrawerToggle?.();\r\n };\r\n\r\n const handleProfileMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleMobileMenuClose = () => {\r\n setMobileMoreAnchorEl(null);\r\n };\r\n\r\n const handleMobileMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setMobileMoreAnchorEl(event.currentTarget);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleSettingsClick = () => {\r\n handleClose();\r\n if (onSettingsClick) {\r\n onSettingsClick();\r\n } else {\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.settings.startsWith('/') \r\n ? finalRoutes.settings \r\n : `/${finalRoutes.settings}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const handleProfileClick = () => {\r\n handleClose();\r\n if (onProfileClick) {\r\n onProfileClick();\r\n } else {\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.profile.startsWith('/') \r\n ? finalRoutes.profile \r\n : `/${finalRoutes.profile}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const handleSignOutClick = () => {\r\n handleClose();\r\n if (onSignOutClick) {\r\n onSignOutClick();\r\n } else {\r\n localStorage.clear();\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.logout.startsWith('/') \r\n ? finalRoutes.logout \r\n : `/${finalRoutes.logout}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const menuId = \"primary-account-menu\";\r\n\r\n const getInitials = () => {\r\n if (user.initials) return user.initials;\r\n return user.name\r\n .split(\" \")\r\n .map((n) => n[0])\r\n .join(\"\")\r\n .toUpperCase()\r\n .slice(0, 2);\r\n };\r\n\r\n const profileList = (\r\n <List\r\n className=\"profile-menu-section\"\r\n sx={{\r\n width: \"100%\",\r\n maxWidth: 360,\r\n pointerEvents: \"none\",\r\n }}\r\n component=\"div\"\r\n aria-hidden=\"true\"\r\n tabIndex={-1}\r\n >\r\n <ListItem alignItems=\"flex-start\" className=\"profile-menu-item\">\r\n <ListItemAvatar>\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <Avatar\r\n sx={{ bgcolor: deepOrange[500] }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <Avatar\r\n sx={{ bgcolor: deepOrange[500] }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OfflineBadge>\r\n )}\r\n </ListItemAvatar>\r\n <ListItemText\r\n secondary={\r\n <React.Fragment>\r\n <Typography className=\"profile-name\" component=\"p\">\r\n {user.name}\r\n </Typography>\r\n <Typography className=\"profile-email\" component=\"p\">\r\n {user.email}\r\n </Typography>\r\n <Typography className=\"profile-role\" component=\"p\">\r\n Role: {user.role}\r\n </Typography>\r\n </React.Fragment>\r\n }\r\n />\r\n </ListItem>\r\n </List>\r\n );\r\n\r\n const renderMenu = (\r\n <Menu\r\n anchorEl={anchorEl}\r\n id=\"account-menu\"\r\n open={open}\r\n onClose={handleClose}\r\n onClick={handleClose}\r\n slotProps={{\r\n paper: {\r\n elevation: 0,\r\n sx: {\r\n overflow: \"visible\",\r\n filter: \"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))\",\r\n mt: 1.5,\r\n \"& .MuiAvatar-root\": {\r\n width: 32,\r\n height: 32,\r\n ml: -0.5,\r\n mr: 1,\r\n },\r\n \"&::before\": {\r\n content: '\"\"',\r\n display: \"block\",\r\n position: \"absolute\",\r\n top: 0,\r\n right: 14,\r\n width: 10,\r\n height: 10,\r\n bgcolor: \"background.paper\",\r\n transform: \"translateY(-50%) rotate(45deg)\",\r\n zIndex: 0,\r\n },\r\n },\r\n },\r\n }}\r\n transformOrigin={{ horizontal: \"right\", vertical: \"top\" }}\r\n anchorOrigin={{ horizontal: \"right\", vertical: \"bottom\" }}\r\n >\r\n {profileList}\r\n <Divider />\r\n <MenuItem onClick={handleSettingsClick}>\r\n <ListItemIcon>\r\n <SettingsOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Account Settings\r\n </MenuItem>\r\n <MenuItem onClick={handleProfileClick}>\r\n <ListItemIcon>\r\n <PersonOutlineOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Profile\r\n </MenuItem>\r\n <MenuItem onClick={handleSignOutClick}>\r\n <ListItemIcon>\r\n <LogoutOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Sign out\r\n </MenuItem>\r\n </Menu>\r\n );\r\n\r\n const mobileMenuId = \"primary-account-menu-mobile\";\r\n const renderMobileMenu = (\r\n <Menu\r\n anchorEl={mobileMoreAnchorEl}\r\n anchorOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n id={mobileMenuId}\r\n keepMounted\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n open={isMobileMenuOpen}\r\n onClose={handleMobileMenuClose}\r\n >\r\n {messageCount !== undefined && (\r\n <MenuItem>\r\n <IconButton \r\n size=\"large\" \r\n aria-label={`show ${messageCount} new mails`}\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n <Badge badgeContent={messageCount} color=\"error\">\r\n <MailIcon />\r\n </Badge>\r\n </IconButton>\r\n <p>Messages</p>\r\n </MenuItem>\r\n )}\r\n {notificationCount > 0 && (\r\n <MenuItem>\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCount} new notifications`}\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n <Badge badgeContent={notificationCount} color=\"error\">\r\n <NotificationsActiveOutlined />\r\n </Badge>\r\n </IconButton>\r\n <p>Notifications</p>\r\n </MenuItem>\r\n )}\r\n <MenuItem onClick={handleProfileMenuOpen}>\r\n <IconButton\r\n size=\"large\"\r\n aria-label=\"account of current user\"\r\n aria-controls=\"primary-account-menu\"\r\n aria-haspopup=\"true\"\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <AccountCircle\r\n titleAccess={user.name}\r\n aria-label=\"User avatar\"\r\n />\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <AccountCircle\r\n titleAccess={user.name}\r\n aria-label=\"User avatar\"\r\n />\r\n </OfflineBadge>\r\n )}\r\n </IconButton>\r\n <p>Profile</p>\r\n </MenuItem>\r\n </Menu>\r\n );\r\n\r\n return (\r\n <Box sx={{ flexGrow: 1 }} className={`app-header ${className || \"\"}`}>\r\n <AppBar\r\n sx={{\r\n position: \"fixed\",\r\n top: 0,\r\n backgroundColor: \"#ffffff\",\r\n }}\r\n >\r\n <Toolbar>\r\n <IconButton\r\n size=\"large\"\r\n edge=\"start\"\r\n aria-label=\"open drawer\"\r\n sx={{ \r\n mr: 2,\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n onClick={handleDrawerToggle}\r\n >\r\n {isDrawerOpen ? (\r\n <MenuOpenIcon fontSize=\"large\" />\r\n ) : (\r\n <MenuIcon fontSize=\"large\" />\r\n )}\r\n </IconButton>\r\n <Typography\r\n variant=\"h6\"\r\n noWrap\r\n component=\"div\"\r\n sx={{ display: { xs: \"none\", sm: \"block\" } }}\r\n data-testid=\"var-miner-wrapper\"\r\n >\r\n <span className=\"var\">{finalLogo.first}</span>\r\n <span className=\"miner\">{finalLogo.second}</span>\r\n </Typography>\r\n <Box sx={{ flexGrow: 1 }} />\r\n <Box sx={{ display: { xs: \"none\", md: \"flex\" } }}>\r\n {notificationCount > 0 && (\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCount} new notifications`}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n <Badge badgeContent={notificationCount} color=\"error\">\r\n <NotificationsActiveOutlined />\r\n </Badge>\r\n </IconButton>\r\n )}\r\n <IconButton\r\n size=\"large\"\r\n edge=\"end\"\r\n aria-label=\"account of current user\"\r\n aria-controls={menuId}\r\n aria-haspopup=\"true\"\r\n onClick={handleProfileMenuOpen}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <Avatar\r\n sx={{\r\n bgcolor: deepOrange[500],\r\n width: 20,\r\n height: 20,\r\n p: 1,\r\n }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n sizes=\"large\"\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <Avatar\r\n sx={{\r\n bgcolor: deepOrange[500],\r\n width: 20,\r\n height: 20,\r\n p: 1,\r\n }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OfflineBadge>\r\n )}\r\n </IconButton>\r\n </Box>\r\n <Box sx={{ display: { xs: \"flex\", md: \"none\" } }}>\r\n <IconButton\r\n size=\"large\"\r\n aria-label=\"show more\"\r\n aria-controls={mobileMenuId}\r\n aria-haspopup=\"true\"\r\n onClick={handleMobileMenuOpen}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n <MoreIcon />\r\n </IconButton>\r\n </Box>\r\n </Toolbar>\r\n </AppBar>\r\n {renderMobileMenu}\r\n {renderMenu}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default AppHeader;\r\n\r\n"],"names":["React","_jsx","styled","Badge","List","_jsxs","ListItem","ListItemAvatar","Avatar","deepOrange","ListItemText","Typography","Menu","Divider","MenuItem","ListItemIcon","IconButton","Box","AppBar","Toolbar"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/DrawerContext.tsx","../src/AppHeader.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\ninterface DrawerContextType {\r\n isDrawerOpen: boolean;\r\n openDrawer: () => void;\r\n closeDrawer: () => void;\r\n toggleDrawer: () => void;\r\n}\r\n\r\nconst DrawerContext = React.createContext<DrawerContextType>({\r\n isDrawerOpen: false,\r\n openDrawer: () => {},\r\n closeDrawer: () => {},\r\n toggleDrawer: () => {},\r\n});\r\n\r\nexport const DrawerProvider = ({ children }: { children: React.ReactNode }) => {\r\n const [isDrawerOpen, setIsDrawerOpen] = React.useState(false);\r\n\r\n const openDrawer = () => {\r\n setIsDrawerOpen(true);\r\n };\r\n\r\n const closeDrawer = () => {\r\n setIsDrawerOpen(false);\r\n };\r\n\r\n const toggleDrawer = () => {\r\n setIsDrawerOpen((prev) => !prev);\r\n };\r\n\r\n return (\r\n <DrawerContext.Provider\r\n value={{ isDrawerOpen, openDrawer, closeDrawer, toggleDrawer }}\r\n >\r\n {children}\r\n </DrawerContext.Provider>\r\n );\r\n};\r\n\r\nexport const useDrawer = () => React.useContext(DrawerContext);\r\n\r\n","import AccountCircle from \"@mui/icons-material/AccountCircle\";\r\nimport LogoutOutlinedIcon from \"@mui/icons-material/LogoutOutlined\";\r\nimport MailIcon from \"@mui/icons-material/Mail\";\r\nimport MenuIcon from \"@mui/icons-material/Menu\";\r\nimport MenuOpenIcon from \"@mui/icons-material/MenuOpen\";\r\nimport MoreIcon from \"@mui/icons-material/MoreVert\";\r\nimport NotificationsActiveOutlined from \"@mui/icons-material/NotificationsActiveOutlined\";\r\nimport PersonOutlineOutlinedIcon from \"@mui/icons-material/PersonOutlineOutlined\";\r\nimport SettingsOutlinedIcon from \"@mui/icons-material/SettingsOutlined\";\r\nimport {\r\n AppBar,\r\n Avatar,\r\n Badge,\r\n Box,\r\n Divider,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemIcon,\r\n ListItemText,\r\n Menu,\r\n MenuItem,\r\n styled,\r\n Toolbar,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { deepOrange } from \"@mui/material/colors\";\r\nimport React from \"react\";\r\nimport { useDrawer } from \"./DrawerContext\";\r\nimport { AppHeaderProps } from \"./types\";\r\nimport \"./styles/Header.scss\";\r\n\r\n// Default routes - absolute paths from root\r\nconst DEFAULT_ROUTES = {\r\n settings: \"/account/overview\",\r\n profile: \"/profile\",\r\n logout: \"/logout\",\r\n};\r\n\r\n// Default logo - can be overridden via props\r\nconst DEFAULT_LOGO = {\r\n first: \"VAR\",\r\n second: \"MINER\",\r\n};\r\n\r\nconst AppHeader: React.FC<AppHeaderProps> = ({\r\n user = {\r\n name: \"Shivam Kumar\",\r\n email: \"shivam@redcliffelabs.com\",\r\n role: \"Lab Technician\",\r\n initials: \"SK\",\r\n },\r\n isOnline = true,\r\n logo,\r\n notificationCount = 0,\r\n messageCount,\r\n onDrawerToggle,\r\n routes,\r\n onSettingsClick,\r\n onProfileClick,\r\n onSignOutClick,\r\n className,\r\n}) => {\r\n // Use provided logo or default\r\n const finalLogo = logo ?? DEFAULT_LOGO;\r\n \r\n const { isDrawerOpen, toggleDrawer } = useDrawer();\r\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\r\n const [mobileMoreAnchorEl, setMobileMoreAnchorEl] =\r\n React.useState<null | HTMLElement>(null);\r\n\r\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\r\n\r\n // Merge provided routes with defaults - all routes are absolute from root\r\n const finalRoutes = {\r\n settings: routes?.settings ?? DEFAULT_ROUTES.settings,\r\n profile: routes?.profile ?? DEFAULT_ROUTES.profile,\r\n logout: routes?.logout ?? DEFAULT_ROUTES.logout,\r\n };\r\n\r\n const OnlineBadge = styled(Badge)(({ theme }) => ({\r\n \"& .MuiBadge-badge\": {\r\n backgroundColor: \"#44b700\",\r\n color: \"#44b700\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n width: 12,\r\n height: 12,\r\n borderRadius: \"50%\",\r\n },\r\n }));\r\n\r\n const OfflineBadge = styled(Badge)(({ theme }) => ({\r\n \"& .MuiBadge-badge\": {\r\n backgroundColor: \"gray\",\r\n color: \"gray\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n width: 12,\r\n height: 12,\r\n borderRadius: \"50%\",\r\n },\r\n }));\r\n\r\n const handleDrawerToggle = () => {\r\n toggleDrawer();\r\n onDrawerToggle?.();\r\n };\r\n\r\n const handleProfileMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleMobileMenuClose = () => {\r\n setMobileMoreAnchorEl(null);\r\n };\r\n\r\n const handleMobileMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\r\n setMobileMoreAnchorEl(event.currentTarget);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleSettingsClick = () => {\r\n handleClose();\r\n if (onSettingsClick) {\r\n onSettingsClick();\r\n } else {\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.settings.startsWith('/') \r\n ? finalRoutes.settings \r\n : `/${finalRoutes.settings}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const handleProfileClick = () => {\r\n handleClose();\r\n if (onProfileClick) {\r\n onProfileClick();\r\n } else {\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.profile.startsWith('/') \r\n ? finalRoutes.profile \r\n : `/${finalRoutes.profile}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const handleSignOutClick = () => {\r\n handleClose();\r\n if (onSignOutClick) {\r\n onSignOutClick();\r\n } else {\r\n localStorage.clear();\r\n // Use window.location to navigate to absolute path, bypassing React Router basename\r\n const path = finalRoutes.logout.startsWith('/') \r\n ? finalRoutes.logout \r\n : `/${finalRoutes.logout}`;\r\n window.location.href = path;\r\n }\r\n };\r\n\r\n const menuId = \"primary-account-menu\";\r\n\r\n const getInitials = () => {\r\n if (user.initials) return user.initials;\r\n return user.name\r\n .split(\" \")\r\n .map((n) => n[0])\r\n .join(\"\")\r\n .toUpperCase()\r\n .slice(0, 2);\r\n };\r\n\r\n const profileList = (\r\n <List\r\n className=\"profile-menu-section\"\r\n sx={{\r\n width: \"100%\",\r\n maxWidth: 360,\r\n pointerEvents: \"none\",\r\n }}\r\n component=\"div\"\r\n aria-hidden=\"true\"\r\n tabIndex={-1}\r\n >\r\n <ListItem alignItems=\"flex-start\" className=\"profile-menu-item\">\r\n <ListItemAvatar>\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <Avatar\r\n sx={{ bgcolor: deepOrange[500] }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <Avatar\r\n sx={{ bgcolor: deepOrange[500] }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OfflineBadge>\r\n )}\r\n </ListItemAvatar>\r\n <ListItemText\r\n secondary={\r\n <React.Fragment>\r\n <Typography className=\"profile-name\" component=\"p\">\r\n {user.name}\r\n </Typography>\r\n <Typography className=\"profile-email\" component=\"p\">\r\n {user.email}\r\n </Typography>\r\n <Typography className=\"profile-role\" component=\"p\">\r\n Role: {user.role}\r\n </Typography>\r\n </React.Fragment>\r\n }\r\n />\r\n </ListItem>\r\n </List>\r\n );\r\n\r\n const renderMenu = (\r\n <Menu\r\n anchorEl={anchorEl}\r\n id=\"account-menu\"\r\n open={open}\r\n onClose={handleClose}\r\n onClick={handleClose}\r\n slotProps={{\r\n paper: {\r\n elevation: 0,\r\n sx: {\r\n overflow: \"visible\",\r\n filter: \"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))\",\r\n mt: 1.5,\r\n \"& .MuiAvatar-root\": {\r\n width: 32,\r\n height: 32,\r\n ml: -0.5,\r\n mr: 1,\r\n },\r\n \"&::before\": {\r\n content: '\"\"',\r\n display: \"block\",\r\n position: \"absolute\",\r\n top: 0,\r\n right: 14,\r\n width: 10,\r\n height: 10,\r\n bgcolor: \"background.paper\",\r\n transform: \"translateY(-50%) rotate(45deg)\",\r\n zIndex: 0,\r\n },\r\n },\r\n },\r\n }}\r\n transformOrigin={{ horizontal: \"right\", vertical: \"top\" }}\r\n anchorOrigin={{ horizontal: \"right\", vertical: \"bottom\" }}\r\n >\r\n {profileList}\r\n <Divider />\r\n <MenuItem onClick={handleSettingsClick}>\r\n <ListItemIcon>\r\n <SettingsOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Account Settings\r\n </MenuItem>\r\n <MenuItem onClick={handleProfileClick}>\r\n <ListItemIcon>\r\n <PersonOutlineOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Profile\r\n </MenuItem>\r\n <MenuItem onClick={handleSignOutClick}>\r\n <ListItemIcon>\r\n <LogoutOutlinedIcon fontSize=\"small\" />\r\n </ListItemIcon>\r\n Sign out\r\n </MenuItem>\r\n </Menu>\r\n );\r\n\r\n const mobileMenuId = \"primary-account-menu-mobile\";\r\n const renderMobileMenu = (\r\n <Menu\r\n anchorEl={mobileMoreAnchorEl}\r\n anchorOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n id={mobileMenuId}\r\n keepMounted\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n open={isMobileMenuOpen}\r\n onClose={handleMobileMenuClose}\r\n >\r\n {messageCount !== undefined && (\r\n <MenuItem>\r\n <IconButton \r\n size=\"large\" \r\n aria-label={`show ${messageCount} new mails`}\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n <Badge badgeContent={messageCount} color=\"error\">\r\n <MailIcon />\r\n </Badge>\r\n </IconButton>\r\n <p>Messages</p>\r\n </MenuItem>\r\n )}\r\n {notificationCount > 0 && (\r\n <MenuItem>\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCount} new notifications`}\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n <Badge badgeContent={notificationCount} color=\"error\">\r\n <NotificationsActiveOutlined />\r\n </Badge>\r\n </IconButton>\r\n <p>Notifications</p>\r\n </MenuItem>\r\n )}\r\n <MenuItem onClick={handleProfileMenuOpen}>\r\n <IconButton\r\n size=\"large\"\r\n aria-label=\"account of current user\"\r\n aria-controls=\"primary-account-menu\"\r\n aria-haspopup=\"true\"\r\n sx={{ color: '#1e2f97' }}\r\n >\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <AccountCircle\r\n titleAccess={user.name}\r\n aria-label=\"User avatar\"\r\n />\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <AccountCircle\r\n titleAccess={user.name}\r\n aria-label=\"User avatar\"\r\n />\r\n </OfflineBadge>\r\n )}\r\n </IconButton>\r\n <p>Profile</p>\r\n </MenuItem>\r\n </Menu>\r\n );\r\n\r\n return (\r\n <Box sx={{ flexGrow: 1 }} className={`app-header ${className || \"\"}`}>\r\n <AppBar\r\n sx={{\r\n position: \"fixed\",\r\n top: 0,\r\n backgroundColor: \"#ffffff\",\r\n }}\r\n >\r\n <Toolbar>\r\n <IconButton\r\n size=\"large\"\r\n edge=\"start\"\r\n aria-label=\"open drawer\"\r\n sx={{ \r\n mr: 2,\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n onClick={handleDrawerToggle}\r\n >\r\n {isDrawerOpen ? (\r\n <MenuOpenIcon fontSize=\"large\" />\r\n ) : (\r\n <MenuIcon fontSize=\"large\" />\r\n )}\r\n </IconButton>\r\n <Typography\r\n variant=\"h6\"\r\n noWrap\r\n component=\"div\"\r\n sx={{ display: { xs: \"none\", sm: \"block\" } }}\r\n data-testid=\"var-miner-wrapper\"\r\n >\r\n <span className=\"var\">{finalLogo.first}</span>\r\n <span className=\"miner\">{finalLogo.second}</span>\r\n </Typography>\r\n <Box sx={{ flexGrow: 1 }} />\r\n <Box sx={{ display: { xs: \"none\", md: \"flex\" } }}>\r\n {notificationCount > 0 && (\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCount} new notifications`}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n <Badge badgeContent={notificationCount} color=\"error\">\r\n <NotificationsActiveOutlined />\r\n </Badge>\r\n </IconButton>\r\n )}\r\n <IconButton\r\n size=\"large\"\r\n edge=\"end\"\r\n aria-label=\"account of current user\"\r\n aria-controls={menuId}\r\n aria-haspopup=\"true\"\r\n onClick={handleProfileMenuOpen}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n {isOnline ? (\r\n <OnlineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Online\"\r\n aria-label=\"Online status badge\"\r\n data-testid=\"online-badge\"\r\n >\r\n <Avatar\r\n sx={{\r\n bgcolor: deepOrange[500],\r\n width: 20,\r\n height: 20,\r\n p: 1,\r\n }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n sizes=\"large\"\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OnlineBadge>\r\n ) : (\r\n <OfflineBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n variant=\"dot\"\r\n title=\"Offline\"\r\n aria-label=\"Offline status badge\"\r\n data-testid=\"offline-badge\"\r\n >\r\n <Avatar\r\n sx={{\r\n bgcolor: deepOrange[500],\r\n width: 20,\r\n height: 20,\r\n p: 1,\r\n }}\r\n alt={user.name}\r\n title={user.name}\r\n src={user.avatar}\r\n >\r\n {getInitials()}\r\n </Avatar>\r\n </OfflineBadge>\r\n )}\r\n </IconButton>\r\n </Box>\r\n <Box sx={{ display: { xs: \"flex\", md: \"none\" } }}>\r\n <IconButton\r\n size=\"large\"\r\n aria-label=\"show more\"\r\n aria-controls={mobileMenuId}\r\n aria-haspopup=\"true\"\r\n onClick={handleMobileMenuOpen}\r\n sx={{\r\n color: '#1e2f97',\r\n '&:hover': {\r\n backgroundColor: 'rgba(30, 47, 151, 0.04)',\r\n }\r\n }}\r\n >\r\n <MoreIcon />\r\n </IconButton>\r\n </Box>\r\n </Toolbar>\r\n </AppBar>\r\n {renderMobileMenu}\r\n {renderMenu}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default AppHeader;\r\n\r\n"],"names":["React","_jsx","styled","Badge","List","_jsxs","ListItem","ListItemAvatar","Avatar","deepOrange","ListItemText","Typography","Menu","Divider","MenuItem","ListItemIcon","IconButton","Box","AppBar","Toolbar"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "varminer-app-header",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "type": "module",
5
5
  "description": "A plug-and-play React header component with Material-UI, drawer toggle, notifications, and user profile menu",
6
6
  "main": "dist/index.js",