Skip to content

Commit dc057b7

Browse files
authored
Merge pull request #66 from kleros/feat(frontend)/add-overlay-scrollbar
Feat(frontend): add overlay scrollbar to main element
2 parents dd50e3c + 9a2339f commit dc057b7

File tree

5 files changed

+57
-3
lines changed

5 files changed

+57
-3
lines changed

frontend/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
"graphql": "^16.9.0",
1717
"graphql-request": "^7.1.0",
1818
"next": "^15.1.4",
19+
"overlayscrollbars": "^2.10.1",
20+
"overlayscrollbars-react": "^0.5.6",
1921
"react": "^19.0.0",
2022
"react-dom": "^19.0.0",
2123
"react-use": "^17.6.0"

frontend/src/app/layout.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import { Urbanist } from "next/font/google";
44

55
import Footer from "@/components/Footer";
66
import Navbar from "@/components/Navbar";
7+
import OverlayScrollbarBody from "@/components/OverlayScrollbarMain";
78
import { navbarQuery, NavbarQueryType } from "@/queries/navbar";
89
import "@/styles/globals.css";
10+
import "overlayscrollbars/overlayscrollbars.css";
911
import { request } from "@/utils/graphQLClient";
1012

1113
const urbanist = Urbanist({
@@ -21,14 +23,14 @@ export default async function RootLayout({
2123
const navbarData = await request<NavbarQueryType>(navbarQuery);
2224

2325
return (
24-
<html lang="en">
25-
<body className="antialiased">
26+
<html lang="en" data-overlayscrollbars-initialize>
27+
<OverlayScrollbarBody className="bg-background-1 antialiased">
2628
<main className={urbanist.className}>
2729
<Navbar {...{ navbarData }} />
2830
{children}
2931
<Footer />
3032
</main>
31-
</body>
33+
</OverlayScrollbarBody>
3234
</html>
3335
);
3436
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"use client";
2+
3+
import React from "react";
4+
5+
import { OverlayScrollbarsComponent } from "overlayscrollbars-react";
6+
import "overlayscrollbars/overlayscrollbars.css";
7+
8+
interface IOverlayScrollbarBody extends React.ComponentProps<"body"> {
9+
children: React.ReactNode;
10+
}
11+
12+
const OverlayScrollbarBody: React.FC<IOverlayScrollbarBody> = ({
13+
children,
14+
className,
15+
}) => (
16+
<OverlayScrollbarsComponent
17+
element="body"
18+
{...{ className }}
19+
defer
20+
data-overlayscrollbars-initialize
21+
options={{ scrollbars: { autoHide: "move" } }}
22+
>
23+
{children}
24+
</OverlayScrollbarsComponent>
25+
);
26+
27+
export default OverlayScrollbarBody;

frontend/src/styles/globals.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
--foreground: #171717;
88
}
99

10+
.os-scrollbar {
11+
--os-handle-bg: #42498f;
12+
}
13+
1014
@media (prefers-color-scheme: dark) {
1115
:root {
1216
--background: #0a0a0a;

frontend/yarn.lock

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2120,6 +2120,8 @@ __metadata:
21202120
husky: "npm:^9.1.7"
21212121
lint-staged: "npm:^15.3.0"
21222122
next: "npm:^15.1.4"
2123+
overlayscrollbars: "npm:^2.10.1"
2124+
overlayscrollbars-react: "npm:^0.5.6"
21232125
postcss: "npm:^8"
21242126
prettier: "npm:^3.4.2"
21252127
prettier-plugin-tailwindcss: "npm:^0.6.9"
@@ -3577,6 +3579,23 @@ __metadata:
35773579
languageName: node
35783580
linkType: hard
35793581

3582+
"overlayscrollbars-react@npm:^0.5.6":
3583+
version: 0.5.6
3584+
resolution: "overlayscrollbars-react@npm:0.5.6"
3585+
peerDependencies:
3586+
overlayscrollbars: ^2.0.0
3587+
react: ">=16.8.0"
3588+
checksum: 10/473f5af860feab4b5418f9adc8e356fb201e9de61286443ff64002b9c997bc19bf17cf60e314c502c14ca41fa213c12f18111e6fe913be86ad68a15c32e66789
3589+
languageName: node
3590+
linkType: hard
3591+
3592+
"overlayscrollbars@npm:^2.10.1":
3593+
version: 2.10.1
3594+
resolution: "overlayscrollbars@npm:2.10.1"
3595+
checksum: 10/dfea9d3cf439a50b671119a806c42a7b49ad8db686a607ac8874706da092aa3cf69542605fb600dc96ee94df54b785a81c1cbdca16e8bd3fd69ba3d16ab192a1
3596+
languageName: node
3597+
linkType: hard
3598+
35803599
"own-keys@npm:^1.0.1":
35813600
version: 1.0.1
35823601
resolution: "own-keys@npm:1.0.1"

0 commit comments

Comments
 (0)