diff --git a/explorer/src/components/MobileNav.tsx b/explorer/src/components/MobileNav.tsx index cab6e50e5b..26e078fe08 100644 --- a/explorer/src/components/MobileNav.tsx +++ b/explorer/src/components/MobileNav.tsx @@ -17,6 +17,7 @@ import { } from '@mui/material'; import { Menu } from '@mui/icons-material'; import { NymLogo } from '@nymproject/react/logo/NymLogo'; +import { MaintenanceBanner } from '@nymproject/react/banners/MaintenanceBanner'; import { useMainContext } from '../context/main'; import { MobileDrawerClose } from '../icons/MobileDrawerClose'; import { Footer } from './Footer'; @@ -32,6 +33,8 @@ export const MobileNav: React.FC<{ children: React.ReactNode }> = ({ children }: const theme = useTheme(); const { navState, updateNavState } = useMainContext(); const [drawerOpen, setDrawerOpen] = React.useState(false); + // Set maintenance banner to false by default to don't display it + const [openMaintenance, setOpenMaintenance] = React.useState(true); const toggleDrawer = () => { setDrawerOpen(!drawerOpen); @@ -51,8 +54,10 @@ export const MobileNav: React.FC<{ children: React.ReactNode }> = ({ children }: + setOpenMaintenance(false)} /> ({ width: drawerWidth, @@ -232,6 +234,8 @@ export const Nav: React.FC = ({ children }) => { const { updateNavState, navState } = useMainContext(); const [drawerIsOpen, setDrawerToOpen] = React.useState(false); const [fixedOpen, setFixedOpen] = React.useState(false); + // Set maintenance banner to false by default to don't display it + const [openMaintenance, setOpenMaintenance] = React.useState(true); const theme = useTheme(); const setToActive = (id: number) => { @@ -268,6 +272,7 @@ export const Nav: React.FC = ({ children }) => { borderRadius: 0, }} > + setOpenMaintenance(false)} height={bannerHeight} /> { style: { background: theme.palette.nym.networkExplorer.nav.background, borderRadius: 0, + top: openMaintenance ? bannerHeight : 0, }, }} > diff --git a/ts-packages/react-components/src/components/banners/MaintenanceBanner.tsx b/ts-packages/react-components/src/components/banners/MaintenanceBanner.tsx new file mode 100644 index 0000000000..081e9b646a --- /dev/null +++ b/ts-packages/react-components/src/components/banners/MaintenanceBanner.tsx @@ -0,0 +1,57 @@ +import { Box, Collapse, Alert, IconButton, Typography, Divider } from '@mui/material'; +import CloseIcon from '@mui/icons-material/Close'; +import { SxProps } from '@mui/system'; + +export interface BannerProps { + open: boolean; + onClick: () => void; + height?: number; + sx?: SxProps; +} + +export const MaintenanceBanner = (props: BannerProps) => { + const { open, onClick, height, sx } = props; + + return ( + + + + + + } + severity="success" + icon={false} + sx={{ + width: '100%', + backgroundColor: (t) => t.palette.nym.highlight, + borderRadius: 0, + color: (t) => t.palette.nym.networkExplorer.nav.text, + height: height || 'auto', + }} + > + + + SCHEDULED MAINTENANCE + + + + On Tuesday 15th of November 10AM GMT, the migration to the new mixnet contract begins. This means all Nym + apps and services{' '} + + will be temporarily on hold while the upgrade takes place. + {' '} + Bonding/unbonding, delegating/delegating{' '} + + will be frozen for up to 36 hours. + {' '} + You will still be able to transfer tokens between accounts, and use IBC. + + + + + + ); +};