varminer-app-header 1.0.4 → 1.0.6

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.
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, openDrawer, closeDrawer } = 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: \"Shiva Kumar\",\r\n email: \"shivam@redcliffelabs.com\",\r\n role: \"Lab Technician\",\r\n initials: \"SK\",\r\n };\r\n });\r\n\r\n // Sync context with prop if provided (for initial state and external control)\r\n const prevPropRef = React.useRef(isDrawerOpenProp);\r\n React.useEffect(() => {\r\n if (isDrawerOpenProp !== undefined && prevPropRef.current !== isDrawerOpenProp) {\r\n if (isDrawerOpenProp) {\r\n openDrawer();\r\n } else {\r\n closeDrawer();\r\n }\r\n prevPropRef.current = isDrawerOpenProp;\r\n }\r\n }, [isDrawerOpenProp, openDrawer, closeDrawer]);\r\n\r\n // Always use context state for icon display (since that's what actually changes on click)\r\n // This ensures the icon updates immediately when user clicks, regardless of prop\r\n const isDrawerOpen = 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/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","export 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 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 let userData = null;\r\n \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 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 if (!userData && parsedOuter.authDetails) {\r\n const parsedAuthDetails = parseNested(parsedOuter.authDetails);\r\n if (parsedAuthDetails.auth) {\r\n userData = parsedAuthDetails.auth.user || parsedAuthDetails.auth.userData;\r\n }\r\n if (!userData) {\r\n userData = parsedAuthDetails.user || parsedAuthDetails.userData || parsedAuthDetails.currentUser;\r\n }\r\n }\r\n \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 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\nexport const getNotificationCountFromStorage = (): number => {\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 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 if (parsedOuter.notifications) {\r\n const parsedNotifications = parseNested(parsedOuter.notifications);\r\n const count = parsedNotifications.count || parsedNotifications.unreadCount || parsedNotifications.total;\r\n if (typeof count === 'number') return count;\r\n }\r\n \r\n if (parsedOuter.app) {\r\n const parsedApp = parseNested(parsedOuter.app);\r\n if (parsedApp.notificationCount !== undefined) {\r\n return parsedApp.notificationCount;\r\n }\r\n }\r\n } catch (err) {\r\n console.error(\"Error parsing notification count from localStorage:\", err);\r\n }\r\n }\r\n return 0;\r\n};\r\n\r\nexport const getMessageCountFromStorage = (): number | undefined => {\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 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 if (parsedOuter.messages) {\r\n const parsedMessages = parseNested(parsedOuter.messages);\r\n const count = parsedMessages.count || parsedMessages.unreadCount || parsedMessages.total;\r\n if (typeof count === 'number') return count;\r\n }\r\n \r\n if (parsedOuter.app) {\r\n const parsedApp = parseNested(parsedOuter.app);\r\n if (parsedApp.messageCount !== undefined) {\r\n return parsedApp.messageCount;\r\n }\r\n }\r\n } catch (err) {\r\n console.error(\"Error parsing message count from localStorage:\", err);\r\n }\r\n }\r\n return undefined;\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, getNotificationCountFromStorage, getMessageCountFromStorage } from \"./utils/localStorage\";\r\nimport \"./styles/Header.scss\";\r\n\r\nconst DEFAULT_ROUTES = {\r\n settings: \"/account/overview\",\r\n profile: \"/profile\",\r\n logout: \"/logout\",\r\n};\r\n\r\nconst DEFAULT_LOGO = {\r\n first: \"VAR\",\r\n second: \"MINER\",\r\n};\r\n\r\nconst AppHeader: React.FC<AppHeaderProps> = () => {\r\n const finalLogo = 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 [user, setUser] = React.useState<UserProfile>(() => {\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: \"Naveen\",\r\n email: \"naveen@varminer.com\",\r\n role: \"Account Owner\",\r\n };\r\n });\r\n\r\n const [notificationCount, setNotificationCount] = React.useState<number>(() => {\r\n const count = getNotificationCountFromStorage();\r\n return count !== null && count !== undefined ? count : 0;\r\n });\r\n \r\n const [messageCount, setMessageCount] = React.useState<number | undefined>(() => {\r\n return getMessageCountFromStorage() ?? undefined;\r\n });\r\n\r\n React.useEffect(() => {\r\n const storedUser = getUserDataFromStorage();\r\n if (storedUser && storedUser.name && storedUser.email) {\r\n setUser(storedUser);\r\n } else {\r\n setUser({\r\n name: \"User\",\r\n email: \"user@example.com\",\r\n role: \"User\",\r\n });\r\n }\r\n \r\n const notifCount = getNotificationCountFromStorage();\r\n setNotificationCount(notifCount !== null && notifCount !== undefined ? notifCount : 0);\r\n \r\n const msgCount = getMessageCountFromStorage();\r\n setMessageCount(msgCount ?? undefined);\r\n }, []);\r\n\r\n const finalRoutes = DEFAULT_ROUTES;\r\n const isOnlineStatus = true;\r\n const notificationCountValue = notificationCount;\r\n \r\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\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 };\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 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 const handleProfileClick = () => {\r\n handleClose();\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 const handleSignOutClick = () => {\r\n handleClose();\r\n localStorage.clear();\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 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 {isOnlineStatus ? (\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 {notificationCountValue > 0 && (\r\n <MenuItem>\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCountValue} 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 {isOnlineStatus ? (\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\">\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 {notificationCountValue > 0 && (\r\n <IconButton\r\n size=\"large\"\r\n aria-label={`show ${notificationCountValue} 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={notificationCountValue} 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 {isOnlineStatus ? (\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/dist/types.d.ts CHANGED
@@ -6,79 +6,5 @@ export interface UserProfile {
6
6
  initials?: string;
7
7
  }
8
8
  export interface AppHeaderProps {
9
- /**
10
- * User profile information
11
- */
12
- user?: UserProfile;
13
- /**
14
- * Whether the user is online
15
- * @default true
16
- */
17
- isOnline?: boolean;
18
- /**
19
- * App logo/brand name (optional - defaults to "VAR" and "MINER")
20
- */
21
- logo?: {
22
- first: string;
23
- second: string;
24
- };
25
- /**
26
- * Notification count (shown in desktop and mobile menu)
27
- * @default 0
28
- */
29
- notificationCount?: number;
30
- /**
31
- * Message count (shown only in mobile menu, optional)
32
- * @default undefined (not shown if not provided)
33
- */
34
- messageCount?: number;
35
- /**
36
- * Callback when drawer toggle is clicked
37
- */
38
- onDrawerToggle?: () => void;
39
- /**
40
- * Whether drawer is open
41
- * @default false
42
- */
43
- isDrawerOpen?: boolean;
44
- /**
45
- * Route paths for navigation (optional - defaults are used if not provided)
46
- * All routes are absolute paths from root (e.g., "/account/overview")
47
- * @default "/account/overview", "/profile", "/logout"
48
- */
49
- routes?: {
50
- /**
51
- * Settings route path
52
- * @default "/account/overview"
53
- */
54
- settings?: string;
55
- /**
56
- * Profile route path
57
- * @default "/profile"
58
- */
59
- profile?: string;
60
- /**
61
- * Logout route path
62
- * @default "/logout"
63
- */
64
- logout?: string;
65
- };
66
- /**
67
- * Callback when settings is clicked (overrides default navigation)
68
- */
69
- onSettingsClick?: () => void;
70
- /**
71
- * Callback when profile is clicked (overrides default navigation)
72
- */
73
- onProfileClick?: () => void;
74
- /**
75
- * Callback when sign out is clicked (overrides default navigation)
76
- * If not provided, will clear localStorage and navigate to logout route
77
- */
78
- onSignOutClick?: () => void;
79
- /**
80
- * Custom CSS class name
81
- */
82
- className?: string;
83
9
  }
84
10
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE;QACP;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;CAAG"}
@@ -1,10 +1,3 @@
1
- /**
2
- * Utility functions to get user data from localStorage
3
- */
4
- /**
5
- * Gets user profile data from localStorage
6
- * Returns user info including name, email, role, etc.
7
- */
8
1
  export declare const getUserDataFromStorage: () => {
9
2
  name: any;
10
3
  email: any;
@@ -12,4 +5,6 @@ export declare const getUserDataFromStorage: () => {
12
5
  avatar: any;
13
6
  initials: any;
14
7
  } | null;
8
+ export declare const getNotificationCountFromStorage: () => number;
9
+ export declare const getMessageCountFromStorage: () => number | undefined;
15
10
  //# sourceMappingURL=localStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localStorage.d.ts","sourceRoot":"","sources":["../../src/utils/localStorage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;QAyElC,CAAC"}
1
+ {"version":3,"file":"localStorage.d.ts","sourceRoot":"","sources":["../../src/utils/localStorage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB;;;;;;QAgElC,CAAC;AAEF,eAAO,MAAM,+BAA+B,QAAO,MAkClD,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,MAAM,GAAG,SAkCtD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "varminer-app-header",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
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",