mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Personal dashboard - enterprise info banner (#8825)
Info banner for personal dashboard
This commit is contained in:
		
							parent
							
								
									5c7f4d5fc1
								
							
						
					
					
						commit
						0b68fff0b7
					
				
							
								
								
									
										
											BIN
										
									
								
								frontend/src/assets/img/upgradeHosted.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								frontend/src/assets/img/upgradeHosted.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 29 KiB | 
							
								
								
									
										155
									
								
								frontend/src/component/personalDashboard/InfoSection.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								frontend/src/component/personalDashboard/InfoSection.tsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,155 @@ | ||||
| import { IconButton, styled, Tooltip, Typography } from '@mui/material'; | ||||
| import { ReactComponent as ProPlanIcon } from 'assets/icons/pro-enterprise-feature-badge.svg'; | ||||
| import { ReactComponent as ProPlanIconLight } from 'assets/icons/pro-enterprise-feature-badge-light.svg'; | ||||
| import type { FC } from 'react'; | ||||
| import { ThemeMode } from 'component/common/ThemeMode/ThemeMode'; | ||||
| import { Button } from '@mui/material'; | ||||
| import CloseIcon from '@mui/icons-material/Close'; | ||||
| import { useLocalStorageState } from 'hooks/useLocalStorageState'; | ||||
| import { formatAssetPath } from 'utils/formatPath'; | ||||
| import upgradeHosted from 'assets/img/upgradeHosted.png'; | ||||
| 
 | ||||
| type InfoSectionProps = {}; | ||||
| 
 | ||||
| const StyledContainer = styled('div')(({ theme }) => ({ | ||||
|     display: 'flex', | ||||
|     flexFlow: 'column nowrap', | ||||
|     gap: theme.spacing(2), | ||||
|     padding: theme.spacing(3, 4), | ||||
|     border: `1px solid ${theme.palette.divider}`, | ||||
|     borderRadius: theme.shape.borderRadiusMedium, | ||||
|     backgroundColor: theme.palette.background.paper, | ||||
|     boxShadow: 'none', | ||||
|     position: 'relative', | ||||
| })); | ||||
| 
 | ||||
| const StyledContent = styled('div')(({ theme }) => ({ | ||||
|     display: 'flex', | ||||
|     gap: theme.spacing(2), | ||||
|     alignItems: 'center', | ||||
| })); | ||||
| 
 | ||||
| const StyledText = styled('div')(({ theme }) => ({ | ||||
|     display: 'flex', | ||||
|     flexFlow: 'column nowrap', | ||||
|     gap: theme.spacing(1), | ||||
| })); | ||||
| 
 | ||||
| const StyledTitle = styled('h2')(({ theme }) => ({ | ||||
|     margin: theme.spacing(0, 0, 0.5), | ||||
|     fontSize: theme.typography.body1.fontSize, | ||||
|     fontWeight: theme.typography.fontWeightBold, | ||||
|     display: 'flex', | ||||
|     alignItems: 'center', | ||||
|     gap: theme.spacing(1), | ||||
| })); | ||||
| 
 | ||||
| const StyledList = styled('ul')(({ theme }) => ({ | ||||
|     listStyle: 'none', | ||||
|     padding: 0, | ||||
|     margin: 0, | ||||
|     fontSize: theme.typography.body2.fontSize, | ||||
|     '& li': {}, | ||||
| })); | ||||
| 
 | ||||
| const StyledListItem = styled('li')(({ theme }) => ({ | ||||
|     position: 'relative', | ||||
|     paddingLeft: theme.spacing(2.5), | ||||
|     marginBottom: theme.spacing(0.5), | ||||
|     '&::before': { | ||||
|         content: '""', | ||||
|         position: 'absolute', | ||||
|         left: 0, | ||||
|         top: theme.spacing(0.375), | ||||
|         width: theme.spacing(1.5), | ||||
|         height: theme.spacing(1.5), | ||||
|         borderRadius: theme.spacing(0.5), | ||||
|         backgroundColor: theme.palette.primary.main, | ||||
|     }, | ||||
| })); | ||||
| 
 | ||||
| const StyledCloseButton = styled(IconButton)(({ theme }) => ({ | ||||
|     position: 'absolute', | ||||
|     top: theme.spacing(1), | ||||
|     right: theme.spacing(1), | ||||
| })); | ||||
| 
 | ||||
| const StyledImage = styled('img')(({ theme }) => ({ | ||||
|     width: 235, | ||||
|     margin: theme.spacing(1), | ||||
|     [theme.breakpoints.down('md')]: { | ||||
|         display: 'none', | ||||
|     }, | ||||
| })); | ||||
| 
 | ||||
| export const InfoSection: FC<InfoSectionProps> = () => { | ||||
|     const [dashboardUpgrade, setDashboardUpgrade] = useLocalStorageState< | ||||
|         'open' | 'closed' | ||||
|     >('upgrade-dashboard:v1', 'open'); | ||||
| 
 | ||||
|     if (dashboardUpgrade === 'closed') { | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     const onDismiss = () => { | ||||
|         setDashboardUpgrade('closed'); | ||||
|     }; | ||||
| 
 | ||||
|     return ( | ||||
|         <StyledContainer> | ||||
|             <Tooltip title='Dismiss' arrow> | ||||
|                 <StyledCloseButton | ||||
|                     aria-label='dismiss' | ||||
|                     onClick={onDismiss} | ||||
|                     size='small' | ||||
|                 > | ||||
|                     <CloseIcon fontSize='inherit' /> | ||||
|                 </StyledCloseButton> | ||||
|             </Tooltip> | ||||
|             <StyledContent> | ||||
|                 <StyledText> | ||||
|                     <StyledTitle> | ||||
|                         <ThemeMode | ||||
|                             darkmode={<ProPlanIconLight />} | ||||
|                             lightmode={<ProPlanIcon />} | ||||
|                         /> | ||||
|                         Explore our Enterprise solution | ||||
|                     </StyledTitle> | ||||
|                     <Typography> | ||||
|                         Increase efficiency and improve the development process | ||||
|                         in your company with the full experience of Unleash with | ||||
|                         some key advantages like: | ||||
|                     </Typography> | ||||
|                     <StyledList> | ||||
|                         <StyledListItem> | ||||
|                             Unlimited projects and environments | ||||
|                         </StyledListItem> | ||||
|                         <StyledListItem> | ||||
|                             Priority support for managed and self-hosted options | ||||
|                         </StyledListItem> | ||||
|                         <StyledListItem> | ||||
|                             SSO/SCIM - streamlined access and account management | ||||
|                         </StyledListItem> | ||||
|                         <StyledListItem> | ||||
|                             RBAC - precise access control | ||||
|                         </StyledListItem> | ||||
|                         <StyledListItem> | ||||
|                             Change requests - reduce error risk with | ||||
|                             pull-request like experience | ||||
|                         </StyledListItem> | ||||
|                     </StyledList> | ||||
|                     <div> | ||||
|                         <Button href='https://www.getunleash.io/upgrade_unleash?utm_source=dashboard'> | ||||
|                             View full Enterprise offering | ||||
|                         </Button> | ||||
|                     </div> | ||||
|                 </StyledText> | ||||
| 
 | ||||
|                 <StyledImage | ||||
|                     src={formatAssetPath(upgradeHosted)} | ||||
|                     alt='Upgrade Unleash' | ||||
|                 /> | ||||
|             </StyledContent> | ||||
|         </StyledContainer> | ||||
|     ); | ||||
| }; | ||||
| @ -21,6 +21,8 @@ import { MyFlags } from './MyFlags'; | ||||
| import { usePageTitle } from 'hooks/usePageTitle'; | ||||
| import { fromPersonalDashboardProjectDetailsOutput } from './RemoteData'; | ||||
| import { useEffect } from 'react'; | ||||
| import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; | ||||
| import { InfoSection } from './InfoSection'; | ||||
| 
 | ||||
| const WelcomeSection = styled('div')(({ theme }) => ({ | ||||
|     display: 'flex', | ||||
| @ -105,6 +107,7 @@ export const PersonalDashboard = () => { | ||||
|     const { trackEvent } = usePlausibleTracker(); | ||||
|     const { setSplashSeen } = useSplashApi(); | ||||
|     const { splash } = useAuthSplash(); | ||||
|     const { isOss } = useUiConfig(); | ||||
|     const name = user?.name || ''; | ||||
| 
 | ||||
|     usePageTitle(name ? `Dashboard: ${name}` : 'Dashboard'); | ||||
| @ -146,6 +149,8 @@ export const PersonalDashboard = () => { | ||||
| 
 | ||||
|     return ( | ||||
|         <MainContent> | ||||
|             {isOss() ? <InfoSection /> : null} | ||||
| 
 | ||||
|             <WelcomeSection> | ||||
|                 <Typography component='h2' variant='h2'> | ||||
|                     Welcome {name} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user