From c66c818fe2520a84700196b96028a0410f262083 Mon Sep 17 00:00:00 2001 From: Kushal Acharya Date: Mon, 6 Jul 2026 12:47:52 +0545 Subject: [PATCH 1/4] remove maintenance info from header --- .../MaintenanceEndingBanner.tsx | 36 +------------------ 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBanner.tsx b/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBanner.tsx index 6339a738e..605dc3945 100644 --- a/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBanner.tsx +++ b/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBanner.tsx @@ -22,41 +22,7 @@ export const MaintenanceEndingBanner = () => { zIndex: 1200, }} > - {/* Banner Header */} - - - - {t("system.maintenanceEnding.title")} - - - - - {isExpanded ? : } - - - + {/* Expandable Content */} Date: Mon, 6 Jul 2026 12:54:30 +0545 Subject: [PATCH 2/4] lint fix --- .../MaintenanceEndingBanner.tsx | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBanner.tsx b/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBanner.tsx index 605dc3945..a2ddb3a9a 100644 --- a/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBanner.tsx +++ b/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBanner.tsx @@ -1,13 +1,10 @@ -import { Box, Typography, IconButton, Link } from "@mui/material"; -import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; -import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; -import { Trans, useTranslation } from "react-i18next"; +import { Box, Typography, Link } from "@mui/material"; +import { Trans } from "react-i18next"; import { useMaintenanceEndingBannerContext } from "./MaintenanceEndingBannerContext"; export const MaintenanceEndingBanner = () => { - const { ref, isExpanded, toggleExpanded } = + const { ref, isExpanded } = useMaintenanceEndingBannerContext(); - const { t } = useTranslation(); return ( { zIndex: 1200, }} > - - {/* Expandable Content */} Date: Thu, 9 Jul 2026 15:46:27 +0545 Subject: [PATCH 3/4] remove maintenanceending banner imports --- .../components/organisms/DashboardTopNav.tsx | 8 +- .../src/components/organisms/Drawer.tsx | 10 +- .../MaintenanceEndingBanner.tsx | 85 ------------- .../MaintenanceEndingBannerContext.tsx | 114 ------------------ .../MaintenanceEndingBanner/index.ts | 2 - .../src/components/organisms/TopBanners.tsx | 4 +- .../src/components/organisms/TopNav.tsx | 6 +- .../src/components/organisms/index.ts | 2 +- .../frontend/src/context/contextProviders.tsx | 4 +- govtool/frontend/src/i18n/locales/en.json | 7 +- 10 files changed, 14 insertions(+), 228 deletions(-) delete mode 100644 govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBanner.tsx delete mode 100644 govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBannerContext.tsx delete mode 100644 govtool/frontend/src/components/organisms/MaintenanceEndingBanner/index.ts diff --git a/govtool/frontend/src/components/organisms/DashboardTopNav.tsx b/govtool/frontend/src/components/organisms/DashboardTopNav.tsx index ef0d91dd7..b16b28524 100644 --- a/govtool/frontend/src/components/organisms/DashboardTopNav.tsx +++ b/govtool/frontend/src/components/organisms/DashboardTopNav.tsx @@ -10,7 +10,6 @@ import { } from "@hooks"; import { DashboardDrawerMobile, - useMaintenanceEndingBannerContext, } from "@organisms"; import { useCardano } from "@context"; @@ -31,8 +30,7 @@ export const DashboardTopNav = ({ const { isEnableLoading } = useCardano(); const { voter } = useGetVoterInfo(); const { dRepVotingPower } = useGetDRepVotingPowerQuery(voter); - const { height: maintenanceEndingBannerHeight } = - useMaintenanceEndingBannerContext(); + const openDrawer = () => { setIsDrawerOpen(true); @@ -58,7 +56,7 @@ export const DashboardTopNav = ({ alignItems: "center", backdropFilter: "blur(10px)", backgroundColor: - windowScroll > POSITION_TO_BLUR + maintenanceEndingBannerHeight + windowScroll > POSITION_TO_BLUR ? "rgba(256, 256, 256, 0.7)" : isMobile ? "#FBFBFF59" @@ -70,7 +68,7 @@ export const DashboardTopNav = ({ minHeight: isMobile ? 36 : 48, px: isMobile ? 2 : 5, py: 3, - top: maintenanceEndingBannerHeight || 0, + top: 0, width: "fill-available", zIndex: 100, }} diff --git a/govtool/frontend/src/components/organisms/Drawer.tsx b/govtool/frontend/src/components/organisms/Drawer.tsx index d54c729a0..84c581540 100644 --- a/govtool/frontend/src/components/organisms/Drawer.tsx +++ b/govtool/frontend/src/components/organisms/Drawer.tsx @@ -7,7 +7,7 @@ import { useFeatureFlag } from "@context"; import { useGetVoterInfo } from "@hooks"; import { WalletInfoCard, DRepInfoCard } from "@molecules"; import { openInNewTab } from "@utils"; -import { useMaintenanceEndingBannerContext } from "./MaintenanceEndingBanner"; + export const Drawer = () => { const { @@ -15,9 +15,7 @@ export const Drawer = () => { isGovernanceOutcomesPillarEnabled, } = useFeatureFlag(); const { voter } = useGetVoterInfo(); - const { height: maintenanceEndingBannerHeight } = - useMaintenanceEndingBannerContext(); - + return ( { height: "100vh", position: "sticky", width: `${DRAWER_WIDTH}px`, - top: maintenanceEndingBannerHeight || 0, + top: 0, overflowY: "auto", - maxHeight: `calc(100vh - ${maintenanceEndingBannerHeight || 0}px)`, + maxHeight: `calc(100vh - ${0}px)`, }} > { - const { ref, isExpanded } = - useMaintenanceEndingBannerContext(); - - return ( - - {/* Expandable Content */} - - - - , - ]} - /> - - - , - ]} - /> - - - - - ); -}; diff --git a/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBannerContext.tsx b/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBannerContext.tsx deleted file mode 100644 index f57e25d8d..000000000 --- a/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/MaintenanceEndingBannerContext.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { - createContext, - createRef, - useContext, - useMemo, - useRef, - useState, - useLayoutEffect, - useEffect, -} from "react"; -import { - getItemFromLocalStorage, - MAINTENANCE_ENDING_BANNER_EXPANDED_KEY, - setItemToLocalStorage, -} from "@/utils"; - -interface MaintenanceEndingBannerContextType { - ref: React.RefObject; - height: number; - isExpanded: boolean; - toggleExpanded: () => void; -} - -const MaintenanceEndingBannerContext = - createContext({ - ref: createRef(), - height: 0, - isExpanded: true, - toggleExpanded: () => {}, - }); - -export const MaintenanceEndingBannerProvider = ({ - children, -}: React.PropsWithChildren) => { - const ref = useRef(null); - const [height, setHeight] = useState(0); - const [isExpanded, setIsExpanded] = useState(true); - - useEffect(() => { - const storedValue = getItemFromLocalStorage( - MAINTENANCE_ENDING_BANNER_EXPANDED_KEY, - ); - if (storedValue !== null) { - setIsExpanded(JSON.parse(storedValue)); - } - }, []); - - const toggleExpanded = () => { - setItemToLocalStorage(MAINTENANCE_ENDING_BANNER_EXPANDED_KEY, !isExpanded); - setIsExpanded((prev) => !prev); - }; - - useLayoutEffect(() => { - let frameId: number | null = null; - - const updatePosition = () => { - if (ref.current) { - const rect = ref.current.getBoundingClientRect(); - - setHeight(rect.height); - } - }; - - const throttledUpdate = () => { - // Context skipping update - frame already queued - if (frameId) return; - - frameId = requestAnimationFrame(() => { - updatePosition(); - frameId = null; - }); - }; - - updatePosition(); - - window.addEventListener("scroll", throttledUpdate, { passive: true }); - window.addEventListener("resize", throttledUpdate); - - return () => { - window.removeEventListener("scroll", throttledUpdate); - window.removeEventListener("resize", throttledUpdate); - - if (frameId) { - cancelAnimationFrame(frameId); - } - }; - }, []); - - const value = useMemo( - () => ({ - ref, - height, - isExpanded, - toggleExpanded, - }), - [ref, height, isExpanded, toggleExpanded], - ); - - return ( - - {children} - - ); -}; - -export const useMaintenanceEndingBannerContext = () => { - const context = useContext(MaintenanceEndingBannerContext); - if (!context) { - throw new Error( - "useMaintenanceEndingBannerContext must be used within a MaintenanceEndingBannerProvider", - ); - } - return context; -}; diff --git a/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/index.ts b/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/index.ts deleted file mode 100644 index e3253604a..000000000 --- a/govtool/frontend/src/components/organisms/MaintenanceEndingBanner/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./MaintenanceEndingBanner"; -export * from "./MaintenanceEndingBannerContext"; diff --git a/govtool/frontend/src/components/organisms/TopBanners.tsx b/govtool/frontend/src/components/organisms/TopBanners.tsx index ad4a878f8..ce9cb5230 100644 --- a/govtool/frontend/src/components/organisms/TopBanners.tsx +++ b/govtool/frontend/src/components/organisms/TopBanners.tsx @@ -3,7 +3,7 @@ import { Box, Link, Typography } from "@mui/material"; import { Trans, useTranslation } from "react-i18next"; import { useAppContext } from "@/context"; import { LINKS } from "@/consts/links"; -import { MaintenanceEndingBanner } from "./MaintenanceEndingBanner"; + export const TopBanners = ({ children }: PropsWithChildren) => { const { isMainnet, networkName, isInBootstrapPhase, isAppInitializing } = @@ -49,7 +49,7 @@ export const TopBanners = ({ children }: PropsWithChildren) => { {/* GOVTOOL MAINTENANCE ENDING SOON BANNER */} - + {/* BOOTSTRAPPING BANNER */} diff --git a/govtool/frontend/src/components/organisms/TopNav.tsx b/govtool/frontend/src/components/organisms/TopNav.tsx index 533fe60d7..2ba177b87 100644 --- a/govtool/frontend/src/components/organisms/TopNav.tsx +++ b/govtool/frontend/src/components/organisms/TopNav.tsx @@ -8,7 +8,7 @@ import { useCardano, useFeatureFlag, useModal } from "@context"; import { useScreenDimension, useTranslation } from "@hooks"; import { openInNewTab } from "@utils"; import { DrawerMobile } from "./DrawerMobile"; -import { useMaintenanceEndingBannerContext } from "./MaintenanceEndingBanner"; + const POSITION_TO_BLUR = 80; @@ -25,8 +25,7 @@ export const TopNav = ({ isConnectButton = true }) => { const navigate = useNavigate(); const { t } = useTranslation(); - const { height: maintenanceEndingBannerHeight } = - useMaintenanceEndingBannerContext(); + useEffect(() => { const onScroll = () => { @@ -141,7 +140,6 @@ export const TopNav = ({ isConnectButton = true }) => { ( - {children} - diff --git a/govtool/frontend/src/i18n/locales/en.json b/govtool/frontend/src/i18n/locales/en.json index 4a5b42401..48a977b83 100644 --- a/govtool/frontend/src/i18n/locales/en.json +++ b/govtool/frontend/src/i18n/locales/en.json @@ -794,12 +794,7 @@ "system": { "description": "The Cardano GovTool is a tool that allows you to participate in the governance of the Cardano network. You can propose, vote on, and delegate your voting power to other users.", "title": "This tool is connected to {{networkName}}", - "bootstrappingWarning": "Govtool is in the Bootstrapping phase. Some features are not available. Learn more", - "maintenanceEnding": { - "title": "\uD83D\uDCA1 Next Step: Treasury Withdrawal based on your feedback has been submitted", - "description1": "<0>The Info Action has passed — thank you for your support!", - "description2": "We have now submitted a <0>Treasury Withdrawal that reflects the feedback gathered during the voting phase to ensure continued development and maintenance of GovTool as a community-owned governance interface on Cardano." - } + "bootstrappingWarning": "Govtool is in the Bootstrapping phase. Some features are not available. Learn more" }, "tooltips": { "delegateTodRep": { From c68706cab8d93248ddc606a865085fa0f652ed8b Mon Sep 17 00:00:00 2001 From: Kushal Acharya Date: Thu, 9 Jul 2026 15:55:32 +0545 Subject: [PATCH 4/4] fix lint --- .../frontend/src/components/organisms/DashboardTopNav.tsx | 5 ++--- govtool/frontend/src/components/organisms/Drawer.tsx | 5 ++--- govtool/frontend/src/components/organisms/TopBanners.tsx | 4 ---- govtool/frontend/src/components/organisms/TopNav.tsx | 3 --- govtool/frontend/src/components/organisms/index.ts | 1 - govtool/frontend/src/context/contextProviders.tsx | 4 +--- 6 files changed, 5 insertions(+), 17 deletions(-) diff --git a/govtool/frontend/src/components/organisms/DashboardTopNav.tsx b/govtool/frontend/src/components/organisms/DashboardTopNav.tsx index b16b28524..8c1d07ec0 100644 --- a/govtool/frontend/src/components/organisms/DashboardTopNav.tsx +++ b/govtool/frontend/src/components/organisms/DashboardTopNav.tsx @@ -31,7 +31,6 @@ export const DashboardTopNav = ({ const { voter } = useGetVoterInfo(); const { dRepVotingPower } = useGetDRepVotingPowerQuery(voter); - const openDrawer = () => { setIsDrawerOpen(true); }; @@ -56,7 +55,7 @@ export const DashboardTopNav = ({ alignItems: "center", backdropFilter: "blur(10px)", backgroundColor: - windowScroll > POSITION_TO_BLUR + windowScroll > POSITION_TO_BLUR ? "rgba(256, 256, 256, 0.7)" : isMobile ? "#FBFBFF59" @@ -68,7 +67,7 @@ export const DashboardTopNav = ({ minHeight: isMobile ? 36 : 48, px: isMobile ? 2 : 5, py: 3, - top: 0, + top: 0, width: "fill-available", zIndex: 100, }} diff --git a/govtool/frontend/src/components/organisms/Drawer.tsx b/govtool/frontend/src/components/organisms/Drawer.tsx index 84c581540..abaaa1ca4 100644 --- a/govtool/frontend/src/components/organisms/Drawer.tsx +++ b/govtool/frontend/src/components/organisms/Drawer.tsx @@ -8,14 +8,13 @@ import { useGetVoterInfo } from "@hooks"; import { WalletInfoCard, DRepInfoCard } from "@molecules"; import { openInNewTab } from "@utils"; - export const Drawer = () => { const { isProposalDiscussionForumEnabled, isGovernanceOutcomesPillarEnabled, } = useFeatureFlag(); const { voter } = useGetVoterInfo(); - + return ( { height: "100vh", position: "sticky", width: `${DRAWER_WIDTH}px`, - top: 0, + top: 0, overflowY: "auto", maxHeight: `calc(100vh - ${0}px)`, }} diff --git a/govtool/frontend/src/components/organisms/TopBanners.tsx b/govtool/frontend/src/components/organisms/TopBanners.tsx index ce9cb5230..75c0a2e46 100644 --- a/govtool/frontend/src/components/organisms/TopBanners.tsx +++ b/govtool/frontend/src/components/organisms/TopBanners.tsx @@ -4,7 +4,6 @@ import { Trans, useTranslation } from "react-i18next"; import { useAppContext } from "@/context"; import { LINKS } from "@/consts/links"; - export const TopBanners = ({ children }: PropsWithChildren) => { const { isMainnet, networkName, isInBootstrapPhase, isAppInitializing } = useAppContext(); @@ -48,9 +47,6 @@ export const TopBanners = ({ children }: PropsWithChildren) => { )} - {/* GOVTOOL MAINTENANCE ENDING SOON BANNER */} - - {/* BOOTSTRAPPING BANNER */} {isInBootstrapPhase && ( diff --git a/govtool/frontend/src/components/organisms/TopNav.tsx b/govtool/frontend/src/components/organisms/TopNav.tsx index 2ba177b87..e9434fdbf 100644 --- a/govtool/frontend/src/components/organisms/TopNav.tsx +++ b/govtool/frontend/src/components/organisms/TopNav.tsx @@ -9,7 +9,6 @@ import { useScreenDimension, useTranslation } from "@hooks"; import { openInNewTab } from "@utils"; import { DrawerMobile } from "./DrawerMobile"; - const POSITION_TO_BLUR = 80; const isNavMenuItem = (item: NavItem | NavMenuItem): item is NavMenuItem => @@ -25,8 +24,6 @@ export const TopNav = ({ isConnectButton = true }) => { const navigate = useNavigate(); const { t } = useTranslation(); - - useEffect(() => { const onScroll = () => { if (!containerRef.current?.nextElementSibling) return; diff --git a/govtool/frontend/src/components/organisms/index.ts b/govtool/frontend/src/components/organisms/index.ts index 8cc1d18f0..5a555ae5e 100644 --- a/govtool/frontend/src/components/organisms/index.ts +++ b/govtool/frontend/src/components/organisms/index.ts @@ -31,4 +31,3 @@ export * from "./VoteContext"; export * from "./VoteContext/VoteContextChoice"; export * from "./VoteContext/VoteContextGovTool"; export * from "./WrongRouteInfo"; - diff --git a/govtool/frontend/src/context/contextProviders.tsx b/govtool/frontend/src/context/contextProviders.tsx index 46b1f74b9..881ff3186 100644 --- a/govtool/frontend/src/context/contextProviders.tsx +++ b/govtool/frontend/src/context/contextProviders.tsx @@ -9,8 +9,6 @@ import { GovernanceActionProvider } from "./governanceAction"; import { AdaHandleProvider } from "./adaHandle"; import { ProposalDiscussionProvider } from "./proposalDiscussion"; - - interface Props { children: React.ReactNode; } @@ -26,7 +24,7 @@ const ContextProviders = ({ children }: Props) => ( - {children} + {children}