diff --git a/explorer/src/components/MobileNav.tsx b/explorer/src/components/MobileNav.tsx index cab6e50e5b..3bd668cf26 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,7 @@ export const MobileNav: React.FC<{ children: React.ReactNode }> = ({ children }: const theme = useTheme(); const { navState, updateNavState } = useMainContext(); const [drawerOpen, setDrawerOpen] = React.useState(false); + const [openMaintenance, setOpenMaintenance] = React.useState(true); const toggleDrawer = () => { setDrawerOpen(!drawerOpen); @@ -53,6 +55,7 @@ export const MobileNav: React.FC<{ children: React.ReactNode }> = ({ children }: background: theme.palette.nym.networkExplorer.topNav.appBar, }} > + 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..e4e969990c --- /dev/null +++ b/ts-packages/react-components/src/components/banners/MaintenanceBanner.tsx @@ -0,0 +1,51 @@ +import { Box, Collapse, Alert, IconButton, Typography, Divider } from '@mui/material'; +import CloseIcon from '@mui/icons-material/Close'; + +export interface BannerProps { + open: boolean; + onClick: () => void; + height?: number; +} + +export const MaintenanceBanner = (props: BannerProps) => { + const { open, onClick, height } = 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 DISRUPTION + + + + 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. + + + + + + ); +};