Skip to content

Commit 0c67dfa

Browse files
authored
Merge pull request #1825 from kleros/feat/subgraph-status-banner
feat(web): add-subgraph-status-banner
2 parents dae34a1 + 14e4dbb commit 0c67dfa

File tree

3 files changed

+108
-5
lines changed

3 files changed

+108
-5
lines changed

web/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@
117117
"react-toastify": "^9.1.3",
118118
"react-use": "^17.5.1",
119119
"styled-components": "^5.3.3",
120+
"subgraph-status": "^1.2.3",
120121
"viem": "^2.21.54",
121122
"wagmi": "^2.13.5"
122123
}

web/src/layout/Header/index.tsx

+41-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import React from "react";
2-
import styled from "styled-components";
2+
import styled, { useTheme } from "styled-components";
3+
4+
import { StatusBanner } from "subgraph-status";
5+
6+
import { getGraphqlUrl } from "utils/getGraphqlUrl";
37

48
import DesktopHeader from "./DesktopHeader";
59
import MobileHeader from "./MobileHeader";
@@ -8,7 +12,6 @@ const Container = styled.div`
812
display: flex;
913
flex-wrap: wrap;
1014
position: sticky;
11-
padding: 0 24px;
1215
z-index: 10;
1316
top: 0;
1417
width: 100%;
@@ -17,11 +20,45 @@ const Container = styled.div`
1720
-webkit-backdrop-filter: ${({ theme }) => (theme.name === "dark" ? "blur(12px)" : "none")}; // Safari support
1821
`;
1922

23+
const HeaderContainer = styled.div`
24+
width: 100%;
25+
padding: 4px 24px 8px;
26+
`;
27+
28+
const StyledBanner = styled(StatusBanner)`
29+
position: sticky !important;
30+
.status-text {
31+
h2 {
32+
margin: 0;
33+
line-height: 24px;
34+
}
35+
}
36+
`;
37+
2038
const Header: React.FC = () => {
39+
const theme = useTheme();
40+
2141
return (
2242
<Container>
23-
<DesktopHeader />
24-
<MobileHeader />
43+
<StyledBanner
44+
autoHide
45+
watcherOptions={{ threshold: 5000, interval: 60_000 }} // 5000 blocks threshold, 60 sec interval check
46+
theme={{
47+
colors: {
48+
main: theme.whiteBackground,
49+
primary: theme.primaryText,
50+
secondary: theme.secondaryText,
51+
},
52+
}}
53+
subgraphs={[
54+
{ name: "Kleros Core", url: getGraphqlUrl(false) },
55+
{ name: "Dispute Template Registry", url: getGraphqlUrl(true) },
56+
]}
57+
/>
58+
<HeaderContainer>
59+
<DesktopHeader />
60+
<MobileHeader />
61+
</HeaderContainer>
2562
</Container>
2663
);
2764
};

yarn.lock

+66-1
Original file line numberDiff line numberDiff line change
@@ -5679,6 +5679,7 @@ __metadata:
56795679
react-toastify: "npm:^9.1.3"
56805680
react-use: "npm:^17.5.1"
56815681
styled-components: "npm:^5.3.3"
5682+
subgraph-status: "npm:^1.2.3"
56825683
typescript: "npm:^5.6.3"
56835684
viem: "npm:^2.21.54"
56845685
vite: "npm:^5.4.11"
@@ -17420,6 +17421,13 @@ __metadata:
1742017421
languageName: node
1742117422
linkType: hard
1742217423

17424+
"enquire.js@npm:^2.1.6":
17425+
version: 2.1.6
17426+
resolution: "enquire.js@npm:2.1.6"
17427+
checksum: 10/246b4ec2cc7a4eb8e24e9ae836b3222b889d8d982ac1583f90f9641222610a688c8a3fab53e2dc6ee56457c2798ba487814f61f5553d30ae23cc74664e6f78f8
17428+
languageName: node
17429+
linkType: hard
17430+
1742317431
"enquirer@npm:2.3.6, enquirer@npm:^2.3.0, enquirer@npm:^2.3.6":
1742417432
version: 2.3.6
1742517433
resolution: "enquirer@npm:2.3.6"
@@ -24057,6 +24065,15 @@ __metadata:
2405724065
languageName: node
2405824066
linkType: hard
2405924067

24068+
"json2mq@npm:^0.2.0":
24069+
version: 0.2.0
24070+
resolution: "json2mq@npm:0.2.0"
24071+
dependencies:
24072+
string-convert: "npm:^0.2.0"
24073+
checksum: 10/0ad2f6a268308beeaf3077652b5ae2b0701ef357840e1542cc838198424a79af21dad759595e2cce8cd9b154e0b0f758c217adea4b3dfbaafff3ff9bf82394a1
24074+
languageName: node
24075+
linkType: hard
24076+
2406024077
"json5@npm:^1.0.1, json5@npm:^1.0.2":
2406124078
version: 1.0.2
2406224079
resolution: "json5@npm:1.0.2"
@@ -30436,6 +30453,22 @@ __metadata:
3043630453
languageName: node
3043730454
linkType: hard
3043830455

30456+
"react-slick@npm:^0.30.2":
30457+
version: 0.30.3
30458+
resolution: "react-slick@npm:0.30.3"
30459+
dependencies:
30460+
classnames: "npm:^2.2.5"
30461+
enquire.js: "npm:^2.1.6"
30462+
json2mq: "npm:^0.2.0"
30463+
lodash.debounce: "npm:^4.0.8"
30464+
resize-observer-polyfill: "npm:^1.5.0"
30465+
peerDependencies:
30466+
react: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
30467+
react-dom: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
30468+
checksum: 10/a2a854498d99357dc73be01b3360eaf42edffe48ce8d6262edbe747711933f63806b2c65aee153c0f6d5c32a647d336199012864dc0f187a58cd5e57716069b6
30469+
languageName: node
30470+
linkType: hard
30471+
3043930472
"react-toastify@npm:^10.0.6":
3044030473
version: 10.0.6
3044130474
resolution: "react-toastify@npm:10.0.6"
@@ -31028,7 +31061,7 @@ __metadata:
3102831061
languageName: node
3102931062
linkType: hard
3103031063

31031-
"resize-observer-polyfill@npm:^1.5.1":
31064+
"resize-observer-polyfill@npm:^1.5.0, resize-observer-polyfill@npm:^1.5.1":
3103231065
version: 1.5.1
3103331066
resolution: "resize-observer-polyfill@npm:1.5.1"
3103431067
checksum: 10/e10ee50cd6cf558001de5c6fb03fee15debd011c2f694564b71f81742eef03fb30d6c2596d1d5bf946d9991cb692fcef529b7bd2e4057041377ecc9636c753ce
@@ -32255,6 +32288,15 @@ __metadata:
3225532288
languageName: node
3225632289
linkType: hard
3225732290

32291+
"slick-carousel@npm:^1.8.1":
32292+
version: 1.8.1
32293+
resolution: "slick-carousel@npm:1.8.1"
32294+
peerDependencies:
32295+
jquery: ">=1.8.0"
32296+
checksum: 10/b383e6f96b3bec573522467cfeeac1fce22d1cd53a68f5699cd3d62f0167777116b925dc48fbe64979a7a830777e4440036b8a7d4575c9ff8d18c3dd141b1ea2
32297+
languageName: node
32298+
linkType: hard
32299+
3225832300
"smart-buffer@npm:^4.2.0":
3225932301
version: 4.2.0
3226032302
resolution: "smart-buffer@npm:4.2.0"
@@ -32953,6 +32995,13 @@ __metadata:
3295332995
languageName: node
3295432996
linkType: hard
3295532997

32998+
"string-convert@npm:^0.2.0":
32999+
version: 0.2.1
33000+
resolution: "string-convert@npm:0.2.1"
33001+
checksum: 10/f3eb484a45d29aa2ba2d9fe0471c971d5a56353633b56a4c8bc3e67237a2cdb1b6437f006a67d489b3d41e0a1c1f02e18d334c161a27fd7219e4aee1a9f68aac
33002+
languageName: node
33003+
linkType: hard
33004+
3295633005
"string-env-interpolation@npm:^1.0.1":
3295733006
version: 1.0.1
3295833007
resolution: "string-env-interpolation@npm:1.0.1"
@@ -33397,6 +33446,22 @@ __metadata:
3339733446
languageName: node
3339833447
linkType: hard
3339933448

33449+
"subgraph-status@npm:^1.2.3":
33450+
version: 1.2.3
33451+
resolution: "subgraph-status@npm:1.2.3"
33452+
dependencies:
33453+
react-slick: "npm:^0.30.2"
33454+
slick-carousel: "npm:^1.8.1"
33455+
styled-components: "npm:^6.1.11"
33456+
peerDependencies:
33457+
"@types/react": ^18.3.3
33458+
"@types/react-dom": ^18.3.0
33459+
react: ^18.3.1
33460+
react-dom: ^18.3.1
33461+
checksum: 10/a125ec618073493026a29e9120a1fc73f8a3ad36b24815fe2f4ecd65f8cefa8b19d5bc072ee3f9b72172436c783fc918f6f13b396dddb935c5e70a3bd748888d
33462+
languageName: node
33463+
linkType: hard
33464+
3340033465
"sucrase@npm:^3.32.0":
3340133466
version: 3.32.0
3340233467
resolution: "sucrase@npm:3.32.0"

0 commit comments

Comments
 (0)