Skip to content

Commit 4496606

Browse files
authored
feat(whitepapers): add support for whitepapers (#591)
2 parents 8e0f92e + 77e9888 commit 4496606

14 files changed

+370
-0
lines changed

docs/support/audits.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ slug: audits
33
title: Audits
44
description: Security audits of the Flare Network and its components.
55
keywords: [audits, security, smart-contracts, flare-network]
6+
hide_table_of_contents: true
67
---
78

89
| **Auditor** | **Date** | **Report** |

docs/support/whitepapers.mdx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
slug: whitepapers
3+
title: Whitepapers
4+
description: Explore Flare's whitepapers, research, and analytics to gain deeper insights into its technology.
5+
keywords: [whitepaper, research, flare-network, analytics, ftso]
6+
hide_table_of_contents: true
7+
---
8+
9+
import WhitepapersGrid from "@site/src/components/WhitepapersGrid";
10+
11+
Explore Flare's whitepapers, research, and analytics to gain deeper insights into its technology.
12+
13+
<WhitepapersGrid />

docusaurus.config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ const config: Config = {
130130
label: "Audits",
131131
to: "/support/audits",
132132
},
133+
{
134+
label: "Whitepapers",
135+
to: "/support/whitepapers",
136+
},
133137
{
134138
label: "Terms & Privacy",
135139
href: "https://flare.network/privacy-policy/",

src/components/WhitepapersGrid.tsx

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
import React from "react";
2+
import Link from "@docusaurus/Link";
3+
import Heading from "@theme/Heading";
4+
5+
interface Whitepaper {
6+
title: string;
7+
date: string;
8+
path: string;
9+
category: "white-papers" | "research" | "analytics";
10+
}
11+
12+
const whitepaperData: Whitepaper[] = [
13+
// White Papers
14+
{
15+
title: "The Flare Data Connector",
16+
date: "14 January 2025",
17+
path: "/pdf/whitepapers/20240224-FlareDataConnector.pdf",
18+
category: "white-papers",
19+
},
20+
{
21+
title: "FTSOv2: more data feeds and faster updates to the FTSO",
22+
date: "9 September 2024",
23+
path: "/pdf/whitepapers/20240223-FlareTimeSeriesOracleV2.pdf",
24+
category: "white-papers",
25+
},
26+
{
27+
title: "The Flare network and FLR token",
28+
date: "30 December 2022",
29+
path: "/pdf/whitepapers/20221231-TheFlareNetworkAndFLRToken.pdf",
30+
category: "white-papers",
31+
},
32+
33+
// Flare Research
34+
{
35+
title:
36+
"Consensus learning: A novel decentralised ensemble learning paradigm",
37+
date: "25 February 2024",
38+
path: "/pdf/whitepapers/20240225-ConsensusLearning.pdf",
39+
category: "research",
40+
},
41+
{
42+
title: "A hybrid post-quantum digital signature scheme for the EVM",
43+
date: "5 July 2022",
44+
path: "/pdf/whitepapers/20220722-HybridPostQuantumDigitalSignatureSchemeForTheEthereumVirtualMachine.pdf",
45+
category: "research",
46+
},
47+
{
48+
title: "Flare Consensus Protocol",
49+
date: "5 November 2019",
50+
path: "/pdf/whitepapers/20191105-FlareConsensusProtocol.pdf",
51+
category: "research",
52+
},
53+
54+
// Analytics
55+
{
56+
title: "Kraken exchange - FTSO price comparison",
57+
date: "6 April 2023",
58+
path: "/pdf/whitepapers/20230406-KrakenExchange-FTSOPriceComparison.pdf",
59+
category: "analytics",
60+
},
61+
{
62+
title: "STP.02 - Impact of secondary FTSO reward band",
63+
date: "29 May 2023",
64+
path: "/pdf/whitepapers/20230529-SongbirdBandUpdate-ImpactOfSTP02.pdf",
65+
category: "analytics",
66+
},
67+
];
68+
69+
const WhitepapersGrid: React.FC = () => {
70+
// Group whitepapers by category
71+
const whitePapers = whitepaperData.filter(
72+
(paper) => paper.category === "white-papers",
73+
);
74+
const research = whitepaperData.filter(
75+
(paper) => paper.category === "research",
76+
);
77+
const analytics = whitepaperData.filter(
78+
(paper) => paper.category === "analytics",
79+
);
80+
81+
return (
82+
<div className="whitepapers-container">
83+
{/* White Papers Section */}
84+
<section className="whitepapers-section">
85+
<div className="whitepapers-grid">
86+
{whitePapers.map((paper, index) => (
87+
<Link
88+
key={`white-papers-${index}`}
89+
to={paper.path}
90+
className="whitepapers-card"
91+
target="_blank"
92+
rel="noopener noreferrer"
93+
>
94+
<div className="whitepapers-card-content">
95+
<Heading as="h3" className="whitepapers-card-title">
96+
{paper.title}
97+
</Heading>
98+
<p className="whitepapers-card-date">{paper.date}</p>
99+
</div>
100+
<div className="whitepapers-arrow-icon"></div>
101+
</Link>
102+
))}
103+
</div>
104+
</section>
105+
106+
{/* Flare Research Section */}
107+
<section className="whitepapers-section">
108+
<Heading as="h2" className="whitepapers-section-title">
109+
Flare Research
110+
</Heading>
111+
<div className="whitepapers-grid">
112+
{research.map((paper, index) => (
113+
<Link
114+
key={`research-${index}`}
115+
to={paper.path}
116+
className="whitepapers-card"
117+
target="_blank"
118+
rel="noopener noreferrer"
119+
>
120+
<div className="whitepapers-card-content">
121+
<Heading as="h3" className="whitepapers-card-title">
122+
{paper.title}
123+
</Heading>
124+
<p className="whitepapers-card-date">{paper.date}</p>
125+
</div>
126+
<div className="whitepapers-arrow-icon"></div>
127+
</Link>
128+
))}
129+
</div>
130+
</section>
131+
132+
{/* Analytics Section */}
133+
<section className="whitepapers-section">
134+
<Heading as="h2" className="whitepapers-section-title">
135+
Analytics
136+
</Heading>
137+
<div className="whitepapers-grid">
138+
{analytics.map((paper, index) => (
139+
<Link
140+
key={`analytics-${index}`}
141+
to={paper.path}
142+
className="whitepapers-card"
143+
target="_blank"
144+
rel="noopener noreferrer"
145+
>
146+
<div className="whitepapers-card-content">
147+
<Heading as="h3" className="whitepapers-card-title">
148+
{paper.title}
149+
</Heading>
150+
<p className="whitepapers-card-date">{paper.date}</p>
151+
</div>
152+
<div className="whitepapers-arrow-icon"></div>
153+
</Link>
154+
))}
155+
</div>
156+
</section>
157+
</div>
158+
);
159+
};
160+
161+
export default WhitepapersGrid;

src/css/custom.css

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,3 +716,180 @@ tr:last-child td {
716716
.swagger-ui textarea {
717717
color: var(--ifm-swagger-heading-dark) !important;
718718
}
719+
720+
/* Whitepapers Styles */
721+
.whitepapers-container {
722+
display: flex;
723+
flex-direction: column;
724+
gap: 60px;
725+
margin: 40px 0;
726+
}
727+
728+
.whitepapers-section {
729+
display: flex;
730+
flex-direction: column;
731+
gap: 30px;
732+
}
733+
734+
.whitepapers-section-title {
735+
color: #333333;
736+
font-size: 2rem;
737+
font-weight: 500;
738+
margin-bottom: 0;
739+
text-align: center;
740+
}
741+
742+
.whitepapers-grid {
743+
display: grid;
744+
grid-template-columns: repeat(3, 1fr);
745+
gap: 20px;
746+
}
747+
748+
/* Card Styles - Light & Dark Mode Compatible */
749+
.whitepapers-card {
750+
background-color: var(--ifm-card-background-color);
751+
border-radius: var(--ifm-global-radius);
752+
padding: 2rem;
753+
position: relative;
754+
display: flex;
755+
flex-direction: column;
756+
justify-content: space-between;
757+
text-decoration: none;
758+
color: inherit;
759+
height: 100%;
760+
transition:
761+
transform 0.2s ease-in-out,
762+
box-shadow 0.2s ease-in-out;
763+
overflow: hidden;
764+
}
765+
766+
.whitepapers-card:hover {
767+
transform: translateY(-4px);
768+
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
769+
}
770+
771+
/* Content Styles */
772+
.whitepapers-card-content {
773+
display: flex;
774+
flex-direction: column;
775+
gap: 1rem;
776+
z-index: 1;
777+
}
778+
779+
.whitepapers-card-title {
780+
font-family: var(--ifm-font-family-base);
781+
font-weight: 500;
782+
font-size: 1.25rem;
783+
color: #333333;
784+
margin-bottom: 0.5rem;
785+
margin-right: 1.5rem; /* Space for arrow */
786+
line-height: 1.4;
787+
}
788+
789+
.whitepapers-card-date {
790+
font-family: var(--ifm-font-family-base);
791+
font-size: 0.9rem;
792+
font-weight: 400;
793+
color: #777777;
794+
margin-bottom: 0;
795+
}
796+
797+
/* Arrow Icon */
798+
.whitepapers-arrow-icon {
799+
position: absolute;
800+
top: 2rem;
801+
right: 2rem;
802+
font-size: 1.5rem;
803+
color: #777777;
804+
transition:
805+
transform 0.2s ease-in-out,
806+
color 0.2s ease-in-out;
807+
}
808+
809+
.whitepapers-card:hover .whitepapers-arrow-icon {
810+
transform: translateX(4px);
811+
color: var(--ifm-color-primary);
812+
}
813+
814+
/* Page Title and Subtitle */
815+
.whitepapers-page-title {
816+
font-size: 2.5rem;
817+
margin-bottom: 1rem;
818+
color: #333333;
819+
text-align: center;
820+
}
821+
822+
.whitepapers-page-subtitle {
823+
text-align: center;
824+
margin-bottom: 3rem;
825+
font-size: 1.1rem;
826+
line-height: 1.6;
827+
color: #777777;
828+
max-width: 800px;
829+
margin-left: auto;
830+
margin-right: auto;
831+
}
832+
833+
/* Dark mode adjustments */
834+
[data-theme="dark"] .whitepapers-card {
835+
background-color: #1d1d1d;
836+
}
837+
838+
[data-theme="dark"] .whitepapers-card-title {
839+
color: #ffffff;
840+
}
841+
842+
[data-theme="dark"] .whitepapers-card-date {
843+
color: #999999;
844+
}
845+
846+
[data-theme="dark"] .whitepapers-arrow-icon {
847+
color: #999999;
848+
}
849+
850+
[data-theme="dark"] .whitepapers-page-title {
851+
color: #ffffff;
852+
}
853+
854+
[data-theme="dark"] .whitepapers-page-subtitle {
855+
color: #999999;
856+
}
857+
858+
[data-theme="dark"] .whitepapers-section-title {
859+
color: #f0f0f0;
860+
}
861+
862+
/* Responsive adjustments */
863+
@media (max-width: 1200px) {
864+
.whitepapers-grid {
865+
grid-template-columns: repeat(2, 1fr);
866+
}
867+
}
868+
869+
@media (max-width: 768px) {
870+
.whitepapers-grid {
871+
grid-template-columns: 1fr;
872+
}
873+
874+
.whitepapers-section-title {
875+
font-size: 1.75rem;
876+
}
877+
878+
.whitepapers-card {
879+
padding: 1.5rem;
880+
}
881+
882+
.whitepapers-card-title {
883+
font-size: 1.1rem;
884+
}
885+
886+
.whitepapers-arrow-icon {
887+
top: 1.5rem;
888+
right: 1.5rem;
889+
font-size: 1.25rem;
890+
}
891+
892+
.whitepapers-page-title {
893+
font-size: 2rem;
894+
}
895+
}
556 KB
Binary file not shown.
205 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)