diff --git a/web/src/components/CasesDisplay/index.tsx b/web/src/components/CasesDisplay/index.tsx index f9dd77b24..5fdf19a3b 100644 --- a/web/src/components/CasesDisplay/index.tsx +++ b/web/src/components/CasesDisplay/index.tsx @@ -1,7 +1,7 @@ import React from "react"; import styled from "styled-components"; -import { useLocation, useNavigate } from "react-router-dom"; +import { Link, useLocation } from "react-router-dom"; import ArrowIcon from "svgs/icons/arrow.svg"; @@ -53,14 +53,15 @@ const CasesDisplay: React.FC = ({ className, totalPages, }) => { - const navigate = useNavigate(); const location = useLocation(); return (
{title} {location.pathname.startsWith("/cases/display/1/desc/all") ? ( - navigate(`/resolver`)} text="Create a case" Icon={ArrowIcon} /> + + + ) : null} diff --git a/web/src/components/DisputeView/DisputeCardView.tsx b/web/src/components/DisputeView/DisputeCardView.tsx index ae692da31..1027b0436 100644 --- a/web/src/components/DisputeView/DisputeCardView.tsx +++ b/web/src/components/DisputeView/DisputeCardView.tsx @@ -1,7 +1,7 @@ import React from "react"; import styled from "styled-components"; -import { useNavigate } from "react-router-dom"; +import { Link } from "react-router-dom"; import { Card } from "@kleros/ui-components-library"; @@ -54,15 +54,16 @@ interface IDisputeCardView { } const DisputeCardView: React.FC = ({ isLoading, ...props }) => { - const navigate = useNavigate(); return ( - navigate(`/cases/${props?.disputeID?.toString()}`)}> - - - {isLoading ? : } - - - + + + + + {isLoading ? : } + + + + ); }; diff --git a/web/src/components/DisputeView/DisputeListView.tsx b/web/src/components/DisputeView/DisputeListView.tsx index 3584ba7c0..cbecdeedb 100644 --- a/web/src/components/DisputeView/DisputeListView.tsx +++ b/web/src/components/DisputeView/DisputeListView.tsx @@ -1,7 +1,7 @@ import React from "react"; import styled from "styled-components"; -import { useNavigate } from "react-router-dom"; +import { Link } from "react-router-dom"; import { useAccount } from "wagmi"; import { Card } from "@kleros/ui-components-library"; @@ -56,17 +56,18 @@ interface IDisputeListView { } const DisputeListView: React.FC = (props) => { const { isDisconnected } = useAccount(); - const navigate = useNavigate(); return ( - navigate(`/cases/${props?.disputeID?.toString()}`)}> - - - - - - - - + + + + + + + + + + + ); }; diff --git a/web/src/components/Field.tsx b/web/src/components/Field.tsx index d3abd80e9..94cc74f9e 100644 --- a/web/src/components/Field.tsx +++ b/web/src/components/Field.tsx @@ -4,8 +4,6 @@ import { landscapeStyle } from "styles/landscapeStyle"; import { Link } from "react-router-dom"; -import { useScrollTop } from "hooks/useScrollTop"; - const FieldContainer = styled.div` display: flex; align-items: center; @@ -96,8 +94,6 @@ const Field: React.FC = ({ isJurorBalance, className, }) => { - const scrollTop = useScrollTop(); - return ( @@ -108,7 +104,6 @@ const Field: React.FC = ({ to={link} onClick={(event) => { event.stopPropagation(); - scrollTop(); }} > {value} diff --git a/web/src/components/ScrollTop.tsx b/web/src/components/ScrollTop.tsx new file mode 100644 index 000000000..5a1732c72 --- /dev/null +++ b/web/src/components/ScrollTop.tsx @@ -0,0 +1,14 @@ +import React, { useEffect } from "react"; + +import { useScrollTop } from "hooks/useScrollTop"; + +const ScrollTop: React.FC = () => { + const scrollTop = useScrollTop(); + + useEffect(() => { + scrollTop(); + }, []); + + return <>; +}; +export default ScrollTop; diff --git a/web/src/pages/Cases/AttachmentDisplay/index.tsx b/web/src/pages/Cases/AttachmentDisplay/index.tsx index 6aa74f19a..e844294db 100644 --- a/web/src/pages/Cases/AttachmentDisplay/index.tsx +++ b/web/src/pages/Cases/AttachmentDisplay/index.tsx @@ -6,6 +6,7 @@ import { useSearchParams } from "react-router-dom"; import NewTabIcon from "svgs/icons/new-tab.svg"; import Loader from "components/Loader"; +import ScrollTop from "components/ScrollTop"; import Header from "./Header"; @@ -39,8 +40,8 @@ const StyledNewTabIcon = styled(NewTabIcon)` const AttachmentDisplay: React.FC = () => { const [searchParams] = useSearchParams(); - const url = searchParams.get("url"); + return (
@@ -60,6 +61,7 @@ const AttachmentDisplay: React.FC = () => { ) : null} + ); }; diff --git a/web/src/pages/Cases/CaseDetails/index.tsx b/web/src/pages/Cases/CaseDetails/index.tsx index aa4e54047..643eb696d 100644 --- a/web/src/pages/Cases/CaseDetails/index.tsx +++ b/web/src/pages/Cases/CaseDetails/index.tsx @@ -19,6 +19,7 @@ import Overview from "./Overview"; import Tabs from "./Tabs"; import Timeline from "./Timeline"; import Voting from "./Voting"; +import ScrollTop from "components/ScrollTop"; const Container = styled.div``; @@ -70,6 +71,7 @@ const CaseDetails: React.FC = () => { } /> + ); diff --git a/web/src/pages/Cases/CasesFetcher.tsx b/web/src/pages/Cases/CasesFetcher.tsx index 83b34cf20..462674053 100644 --- a/web/src/pages/Cases/CasesFetcher.tsx +++ b/web/src/pages/Cases/CasesFetcher.tsx @@ -13,6 +13,7 @@ import { useCourtDetails, CourtDetailsQuery } from "queries/useCourtDetails"; import { DisputeDetailsFragment, Dispute_Filter, OrderDirection } from "src/graphql/graphql"; import CasesDisplay from "components/CasesDisplay"; +import ScrollTop from "components/ScrollTop"; const calculateStats = ( isCourtFilter: boolean, @@ -70,15 +71,18 @@ const CasesFetcher: React.FC = () => { ); return ( - navigate(`${location}/${newPage}/${order}/${filter}`)} - totalPages={totalPages} - {...{ casesPerPage }} - /> + <> + navigate(`${location}/${newPage}/${order}/${filter}`)} + totalPages={totalPages} + {...{ casesPerPage }} + /> + + ); }; diff --git a/web/src/pages/Courts/CourtDetails/index.tsx b/web/src/pages/Courts/CourtDetails/index.tsx index de51a910d..271ea9891 100644 --- a/web/src/pages/Courts/CourtDetails/index.tsx +++ b/web/src/pages/Courts/CourtDetails/index.tsx @@ -21,6 +21,7 @@ import LatestCases from "components/LatestCases"; import Staking from "components/Popup/MiniGuides/Staking"; import { StyledSkeleton } from "components/StyledSkeleton"; import { Divider } from "components/Divider"; +import ScrollTop from "components/ScrollTop"; import Description from "./Description"; import StakePanel from "./StakePanel"; @@ -119,6 +120,7 @@ const CourtDetails: React.FC = () => { + ); }; diff --git a/web/src/pages/Dashboard/Courts/CourtCard/CourtName.tsx b/web/src/pages/Dashboard/Courts/CourtCard/CourtName.tsx index 6bc7e531c..4ff454167 100644 --- a/web/src/pages/Dashboard/Courts/CourtCard/CourtName.tsx +++ b/web/src/pages/Dashboard/Courts/CourtCard/CourtName.tsx @@ -2,10 +2,9 @@ import React from "react"; import styled, { css } from "styled-components"; import { landscapeStyle } from "styles/landscapeStyle"; -import LightButton from "components/LightButton"; import ArrowIcon from "svgs/icons/arrow.svg"; -import { useNavigateAndScrollTop } from "hooks/useNavigateAndScrollTop"; +import { Link } from "react-router-dom"; const Container = styled.div` display: flex; @@ -29,17 +28,13 @@ const Container = styled.div` )} `; -const StyledButton = styled(LightButton)` +const StyledLink = styled(Link)` display: flex; - flex-direction: row-reverse; gap: 8px; - padding: 0px; - > .button-text { - color: ${({ theme }) => theme.primaryBlue}; - font-size: 14px; - } - > .button-svg { - margin-right: 0; + align-items: center; + > svg { + height: 15px; + width: 15px; path { fill: ${({ theme }) => theme.primaryBlue}; } @@ -52,17 +47,12 @@ interface ICourtName { } const CourtName: React.FC = ({ name, id }) => { - const navigate = useNavigateAndScrollTop(); - return ( {name} - navigate(`/courts/${id?.toString()}`)} - text="Open Court" - Icon={ArrowIcon} - className="reverse-button" - /> + + Open Court + ); }; diff --git a/web/src/pages/Dashboard/index.tsx b/web/src/pages/Dashboard/index.tsx index a526b06d0..0e8e75649 100644 --- a/web/src/pages/Dashboard/index.tsx +++ b/web/src/pages/Dashboard/index.tsx @@ -16,6 +16,7 @@ import { responsiveSize } from "styles/responsiveSize"; import CasesDisplay from "components/CasesDisplay"; import ConnectWallet from "components/ConnectWallet"; +import ScrollTop from "components/ScrollTop"; import Courts from "./Courts"; import JurorInfo from "./JurorInfo"; @@ -92,6 +93,7 @@ const Dashboard: React.FC = () => { )} + ); }; diff --git a/web/src/pages/GetPnk/index.tsx b/web/src/pages/GetPnk/index.tsx index 96527d282..5c4b0a574 100644 --- a/web/src/pages/GetPnk/index.tsx +++ b/web/src/pages/GetPnk/index.tsx @@ -7,6 +7,7 @@ import { responsiveSize } from "styles/responsiveSize"; import ClaimPnkButton from "components/ClaimPnkButton"; import HeroImage from "components/HeroImage"; +import ScrollTop from "components/ScrollTop"; import { Widget } from "./Widget"; @@ -27,16 +28,14 @@ const Container = styled.div` gap: 24px; `; -const GetPnk: React.FC = () => { - return ( - - - - {!isProductionDeployment() && } - - - - ); -}; - +const GetPnk: React.FC = () => ( + + + + {!isProductionDeployment() && } + + + + +); export default GetPnk; diff --git a/web/src/pages/Home/CourtOverview/Header.tsx b/web/src/pages/Home/CourtOverview/Header.tsx index 2f5e4d85f..fa54bf4a2 100644 --- a/web/src/pages/Home/CourtOverview/Header.tsx +++ b/web/src/pages/Home/CourtOverview/Header.tsx @@ -3,7 +3,7 @@ import styled from "styled-components"; import { responsiveSize } from "styles/responsiveSize"; -import { useNavigate } from "react-router-dom"; +import { Link } from "react-router-dom"; import { Button } from "@kleros/ui-components-library"; @@ -22,11 +22,12 @@ const StyledH1 = styled.h1` `; const Header: React.FC = () => { - const navigate = useNavigate(); return ( Court Overview -