Skip to content

Commit edda820

Browse files
authored
Merge pull request #74 from kleros/refactor/rest-responsive-pages
Refactor/rest responsive pages
2 parents 5bc3821 + 6357446 commit edda820

File tree

36 files changed

+288
-198
lines changed

36 files changed

+288
-198
lines changed

frontend/src/app/for-lawyers/components/KlerosEnterpriseSection/DisputeResolutionProcess.tsx

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,18 @@
1-
"use client";
2-
3-
import Image from "next/image";
4-
5-
import { useScreenSize } from "@/hooks/useScreenSize";
1+
import ResponsiveImage from "@/components/ResponsiveImage";
62

73
import { ForLawyersPageKlerosEnterpiseSectionType } from "../../queries/kleros-enterprise-section";
84

95
import HighlightedText from "./HighlightedText";
106

117
type IDisputeResolutionProcess = Pick<
128
ForLawyersPageKlerosEnterpiseSectionType["forLawyersPageKlerosEnterpriseSection"],
13-
"disputeResolutionProcessHeader" | "processDiagram" | "processDiagramDesktop"
9+
"disputeResolutionProcessHeader" | "processDiagram"
1410
>;
1511

1612
const DisputeResolutionProcess: React.FC<IDisputeResolutionProcess> = ({
1713
disputeResolutionProcessHeader,
1814
processDiagram,
19-
processDiagramDesktop,
2015
}) => {
21-
const screenSize = useScreenSize();
2216
return (
2317
<div className="flex flex-col gap-8">
2418
<HighlightedText
@@ -28,21 +22,20 @@ const DisputeResolutionProcess: React.FC<IDisputeResolutionProcess> = ({
2822
/>
2923

3024
<div className="relative flex w-full justify-center">
31-
{screenSize === "lg" ? (
32-
<Image
33-
src={processDiagramDesktop.url}
34-
width={1182}
35-
height={707}
36-
alt="Process diagram"
37-
/>
38-
) : (
39-
<Image
40-
src={processDiagram.url}
41-
width={342}
42-
height={864}
43-
alt="Process diagram"
44-
/>
45-
)}
25+
<ResponsiveImage
26+
mobileProps={{
27+
src: processDiagram.mobile.url,
28+
alt: "Process diagram",
29+
width: 342,
30+
height: 864,
31+
}}
32+
desktopProps={{
33+
src: processDiagram.desktop.url,
34+
alt: "Process diagram",
35+
width: 1182,
36+
height: 707,
37+
}}
38+
/>
4639
</div>
4740
</div>
4841
);

frontend/src/app/for-lawyers/components/KlerosEnterpriseSection/index.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ const KlerosEnterpriseSection: React.FC = async () => {
2222
cards,
2323
disputeResolutionProcessHeader,
2424
processDiagram,
25-
processDiagramDesktop,
2625
table,
2726
arrowLink,
2827
} = (
@@ -56,7 +55,6 @@ const KlerosEnterpriseSection: React.FC = async () => {
5655
{...{
5756
disputeResolutionProcessHeader,
5857
processDiagram,
59-
processDiagramDesktop,
6058
}}
6159
/>
6260

frontend/src/app/for-lawyers/queries/kleros-enterprise-section.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,12 @@ export const forLawyersPageKlerosEnterpriseSectionQuery = gql`
3333
}
3434
3535
processDiagram {
36-
url
37-
}
38-
39-
processDiagramDesktop {
40-
url
36+
mobile {
37+
url
38+
}
39+
desktop {
40+
url
41+
}
4142
}
4243
4344
table {
@@ -90,11 +91,10 @@ export type ForLawyersPageKlerosEnterpiseSectionType = {
9091
cards: Card[];
9192
arrowLink: ArrowLink;
9293
disputeResolutionProcessHeader: HighlightedText;
94+
9395
processDiagram: {
94-
url: string;
95-
};
96-
processDiagramDesktop: {
97-
url: string;
96+
mobile: { url: string };
97+
desktop: { url: string };
9898
};
9999
table: Table;
100100
};

frontend/src/app/home/components/Hero.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { request } from "@/utils/graphQLClient";
99

1010
import { HeroQueryType, heroQuery } from "../queries/hero";
1111

12+
import TokenStats from "./TokenStats";
13+
1214
const Hero: React.FC = async () => {
1315
const heroData = await request<HeroQueryType>(heroQuery);
1416
const {
@@ -18,10 +20,11 @@ const Hero: React.FC = async () => {
1820
secondaryButton,
1921
arrowLink,
2022
background,
23+
tokenStats,
2124
} = heroData.homePageHero;
2225

2326
return (
24-
<div className="relative px-6 pb-28 pt-44 md:pt-52 lg:px-32 lg:pb-60">
27+
<div className="relative px-6 pb-28 pt-44 md:pt-52 lg:px-32 lg:pb-20">
2528
<div className="space-y-8">
2629
<h1 className="text-2xl font-medium lg:text-3xl">{title}</h1>
2730
<p className="text-lg">{subtitle}</p>
@@ -44,6 +47,7 @@ const Hero: React.FC = async () => {
4447
text={arrowLink.text}
4548
className="[&>span]:text-base [&>span]:text-primary-text"
4649
/>
50+
<TokenStats {...{ tokenStats }} />
4751
</div>
4852
<Image
4953
src={background.url}

frontend/src/app/home/components/HowKlerosWorks.tsx

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React from "react";
22

3-
import Image from "next/image";
4-
3+
import ResponsiveImage from "@/components/ResponsiveImage";
54
import { request } from "@/utils/graphQLClient";
65

76
import {
@@ -25,12 +24,21 @@ const HowKlerosWorks: React.FC = async () => {
2524
<h3 className="text-xl font-medium lg:text-3xl">{title}</h3>
2625
<p className="text-base lg:text-lg">{subtitle}</p>
2726
</div>
28-
<Image
29-
className="mx-auto mt-12"
30-
src={explainer.url}
31-
alt="Explainer"
32-
width="294"
33-
height="798"
27+
<ResponsiveImage
28+
mobileProps={{
29+
className: "mx-auto mt-12",
30+
src: explainer.mobile.url,
31+
alt: "Explainer",
32+
width: 294,
33+
height: 798,
34+
}}
35+
desktopProps={{
36+
className: "mx-auto mt-12",
37+
src: explainer.desktop.url,
38+
alt: "Explainer",
39+
width: 1182,
40+
height: 388,
41+
}}
3442
/>
3543
</div>
3644
);
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"use client";
2+
import { useScreenSize } from "@/hooks/useScreenSize";
3+
4+
import { HeroQueryType } from "../queries/hero";
5+
6+
const TokenStats: React.FC<{
7+
tokenStats: HeroQueryType["homePageHero"]["tokenStats"];
8+
}> = ({ tokenStats }) => {
9+
const screenSize = useScreenSize();
10+
return screenSize === "lg" ? (
11+
<div className="flex flex-wrap gap-16 pt-28">
12+
{tokenStats.map(({ key, primaryValue, secondaryValue }) => (
13+
<div key={key} className="flex flex-col">
14+
<div className="flex flex-row">
15+
<h3 className="text-2xl font-medium">{primaryValue}</h3>
16+
<h3 className="text-2xl text-primary-blue">{secondaryValue}</h3>
17+
</div>
18+
<p className="font-medium">{key}</p>
19+
</div>
20+
))}
21+
</div>
22+
) : null;
23+
};
24+
25+
export default TokenStats;

frontend/src/app/home/queries/hero.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ export const heroQuery = gql`
2323
url
2424
}
2525
}
26+
tokenStats {
27+
key
28+
primaryValue
29+
secondaryValue
30+
}
2631
background {
2732
url
2833
}
@@ -52,6 +57,11 @@ export type HeroQueryType = {
5257
url: string;
5358
};
5459
};
60+
tokenStats: Array<{
61+
key: string;
62+
primaryValue: string;
63+
secondaryValue: string;
64+
}>;
5565
background: {
5666
url: string;
5767
};

frontend/src/app/home/queries/how-kleros-works.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@ export const homeHowKlerosWorksQuery = gql`
77
title
88
subtitle
99
explainer {
10-
url
10+
mobile {
11+
url
12+
}
13+
desktop {
14+
url
15+
}
1116
}
1217
}
1318
}
@@ -19,7 +24,12 @@ export type HomeHowKlerosWorksQueryType = {
1924
title: string;
2025
subtitle: string;
2126
explainer: {
22-
url: string;
27+
mobile: {
28+
url: string;
29+
};
30+
desktop: {
31+
url: string;
32+
};
2333
};
2434
};
2535
};

frontend/src/components/Community/hero.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const Hero: React.FC<IHero> = ({ heroData }) => {
1616
return (
1717
<div className="relative px-6 pb-[277px] pt-44 lg:px-32 lg:pb-[331px]">
1818
<div className="space-y-8">
19-
<h1 className="pt-1 text-3xl font-medium lg:pt-3 lg:text-4xl">
19+
<h1 className="pt-1 text-2xl font-medium lg:pt-3 lg:text-4xl">
2020
{header}
2121
</h1>
2222
<p className="text-lg">{subtitle}</p>

frontend/src/components/Cooperative/MemberSection/index.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ interface IMemberSection {
99
const MemberSection: React.FC<IMemberSection> = ({ memberData }) => {
1010
return (
1111
<div className="bg-background-1 px-6 py-12 lg:px-32 lg:py-24">
12-
<h1 className="mb-8 text-2xl font-medium text-primary-text lg:text-3xl">
12+
<h1 className="mb-8 text-xl font-medium text-primary-text lg:text-3xl">
1313
{memberData.header}
1414
</h1>
15-
<p className="mb-16 text-lg text-secondary-text">{memberData.subtitle}</p>
15+
<p className="mb-16 text-secondary-text lg:text-lg">
16+
{memberData.subtitle}
17+
</p>
1618
<LearnMore {...memberData.learnMoreSection} />
17-
<h1 className="mb-8 mt-16 text-2xl font-medium text-primary-text lg:text-3xl">
19+
<h1 className="mb-8 mt-16 text-xl font-medium text-primary-text lg:text-3xl">
1820
{memberData.secondaryHeader}
1921
</h1>
2022
<ExternalLink

frontend/src/components/Cooperative/ReportSection/ReportCard.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ const ReportCard: React.FC<IReportCard> = ({
6666
)}
6767
>
6868
<div className="flex flex-col items-start gap-8">
69-
<h2 className="text-2xl font-medium text-primary-text md:text-3xl">
69+
<h2 className="text-xl font-medium text-primary-text md:text-3xl">
7070
{title}
7171
</h2>
72-
<p className="text-lg text-secondary-text">{subtitle}</p>
72+
<p className="text-secondary-text lg:text-lg">{subtitle}</p>
7373

7474
<DropdownContainer
7575
{...{

frontend/src/components/Cooperative/hero.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const Hero: React.FC<IHero> = ({ heroData }) => {
1717
return (
1818
<div className="relative px-6 pb-52 pt-44 lg:px-32 lg:pb-56 lg:pt-52">
1919
<div className="space-y-8">
20-
<h1 className="pt-1 text-3xl font-medium lg:pt-3 lg:text-4xl">
20+
<h1 className="pt-1 text-2xl font-medium lg:pt-3 lg:text-4xl">
2121
{header}
2222
</h1>
2323
<p className="max-w-[685px] text-lg">{subtitle}</p>

frontend/src/components/Earn/TabSection/index.tsx

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
"use client";
2-
3-
import { useMemo, useState } from "react";
4-
51
import Tab from "@/components/Tab";
62
import { TabSectionQueryType } from "@/queries/earn/tabs-data";
73

@@ -13,30 +9,26 @@ interface ITabSection {
139
}
1410

1511
const TabSection: React.FC<ITabSection> = ({ tabsData }) => {
16-
const [activeTab, setActiveTab] = useState(0);
17-
18-
const tabItems = useMemo(
19-
() => [
20-
{ text: tabsData.earnPageBecomeAJurorTabContent.tabName, value: 0 },
21-
{ text: tabsData.earnPageBecomeACuratorTabContent.tabName, value: 1 },
22-
],
23-
[tabsData],
24-
);
25-
2612
return (
2713
<div className="bg-background-2 px-6 py-12 lg:px-32">
2814
<Tab
29-
items={tabItems}
30-
currentValue={activeTab}
31-
callback={(val: number) => {
32-
setActiveTab(val);
33-
}}
15+
items={[
16+
{
17+
text: tabsData.earnPageBecomeAJurorTabContent.tabName,
18+
children: (
19+
<JurorTabContent {...tabsData.earnPageBecomeAJurorTabContent} />
20+
),
21+
},
22+
{
23+
text: tabsData.earnPageBecomeACuratorTabContent.tabName,
24+
children: (
25+
<CuratorTabContent
26+
{...tabsData.earnPageBecomeACuratorTabContent}
27+
/>
28+
),
29+
},
30+
]}
3431
/>
35-
{activeTab === 1 ? (
36-
<CuratorTabContent {...tabsData.earnPageBecomeACuratorTabContent} />
37-
) : (
38-
<JurorTabContent {...tabsData.earnPageBecomeAJurorTabContent} />
39-
)}
4032
</div>
4133
);
4234
};

frontend/src/components/ForBuilders/UseCasesSection/DAOSection/Header.tsx

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React from "react";
22

3-
import Image from "next/image";
4-
3+
import ResponsiveImage from "@/components/ResponsiveImage";
54
import { UseCasesQueryType } from "@/queries/for-builders/use-cases";
65

76
interface IHeader {
@@ -17,11 +16,19 @@ const Header: React.FC<IHeader> = ({ useCasesData }) => {
1716
<p className="mb-12 text-secondary-text lg:mb-16 lg:text-xl">
1817
{useCasesData.useCaseDescription}
1918
</p>
20-
<Image
21-
src={useCasesData.useCaseBanner.url}
22-
alt="UseCaseBanner mobile"
23-
width="400"
24-
height="835"
19+
<ResponsiveImage
20+
mobileProps={{
21+
src: useCasesData.useCaseBanner.mobile.url,
22+
alt: "UseCaseBanner mobile",
23+
width: 400,
24+
height: 835,
25+
}}
26+
desktopProps={{
27+
src: useCasesData.useCaseBanner.desktop.url,
28+
alt: "UseCaseBanner mobile",
29+
width: 1182,
30+
height: 388,
31+
}}
2532
/>
2633
</div>
2734
);

0 commit comments

Comments
 (0)