* Finished the first release for the website

* Removed dark bg

* Commented tailwind config file and style.css

* Removed theme provider component from next

* Changed some png to svg, fixed some alignments and added favicon

* chore:  Add `framer-motion` package

* fix: 💄 Add orange to tailwind, update fonts, hover state for nav items

* chore:  Add `gsap`package

* feat: 💫 Add `WhatWeDo` logo animation

* Fixed homepage whatwedo for mobile and modified projects file

* Fixed on homepage dynamic content box

* Fixed homepage logo size on first section

* Fixed the width size of the pse logo on homepage

* Added new color on tailwindfile and changed border color on mainnav

* feat: 📱 Make "What We Do" section responsive

* Change image to webp and ajust size of images

* fix: ✏️ Fix typo on home page

* revert: 💫 Remove animation from `WhatWeDo` section

* update home page promo link

* Change some icons to svg, change bg on project page and project lib page

* Add more social media svg, change svg in project page and project lib page

* Change links on homepage to p tag, resize grid cols on projects lib page

* Change NextImage NextLink names and change a tag to p tag

* fix: 💄 Fix alignment of home page sections

---------

Co-authored-by: samueloh99 <samueloh99@gmail.com>
Co-authored-by: Samuel Oh <28302358+samueloh99@users.noreply.github.com>
Co-authored-by: Chiali Tsai <info@chialitsai.com>
This commit is contained in:
Y6NDR
2023-06-29 15:05:09 -05:00
committed by GitHub
parent 9b7e823b1f
commit bcbb008c33
51 changed files with 1753 additions and 112 deletions

View File

@@ -3,10 +3,11 @@ import { Metadata } from "next"
import { siteConfig } from "@/config/site"
import { fontDisplay, fontSans } from "@/lib/fonts"
import { cn } from "@/lib/utils"
import { SiteFooter } from "@/components/site-footer"
import { SiteHeader } from "@/components/site-header"
import { TailwindIndicator } from "@/components/tailwind-indicator"
import { ThemeProvider } from "@/components/theme-provider"
// import { ThemeProvider } from "@/components/theme-provider"
export const metadata: Metadata = {
title: {
@@ -19,8 +20,8 @@ export const metadata: Metadata = {
{ media: "(prefers-color-scheme: dark)", color: "black" },
],
icons: {
icon: "/favicon.ico",
shortcut: "/favicon-16x16.png",
icon: "/favicon.svg",
shortcut: "/favicon.svg",
apple: "/apple-touch-icon.png",
},
}
@@ -32,22 +33,19 @@ interface RootLayoutProps {
export default function RootLayout({ children }: RootLayoutProps) {
return (
<>
<html lang="en" suppressHydrationWarning>
<html
lang="en"
className={`${fontSans.variable} ${fontDisplay.variable}`}
suppressHydrationWarning
>
<head />
<body
className={cn(
"min-h-screen bg-background font-sans antialiased",
fontSans.variable,
fontDisplay.variable
)}
>
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
<div className="relative flex min-h-screen flex-col">
<SiteHeader />
<div className="flex-1">{children}</div>
</div>
<TailwindIndicator />
</ThemeProvider>
<body className={"min-h-screen bg-background antialiased"}>
<div className="relative flex min-h-screen flex-col">
<SiteHeader />
<div className="flex-1">{children}</div>
<SiteFooter />
</div>
<TailwindIndicator />
</body>
</html>
</>

View File

@@ -1,38 +1,187 @@
import Image from "next/image"
import Link from "next/link"
import PSELogo from "@/public/icons/archstar.webp"
import ArrowRightVector from "@/public/icons/arrow-right.svg"
import PSEIcon1 from "@/public/icons/pseicon1.svg"
import PSEIcon2 from "@/public/icons/pseicon2.svg"
import PSEIcon3 from "@/public/icons/pseicon3.svg"
import { siteConfig } from "@/config/site"
import { buttonVariants } from "@/components/ui/button"
import WhatWeDo from "@/components/sections/WhatWeDo"
import { ArrowRightUp } from "@/components/svgs/arrows"
export default function IndexPage() {
return (
<section className="container grid items-center gap-6 pb-8 pt-6 md:py-10">
<div className="flex max-w-[980px] flex-col items-start gap-2">
<h1 className="text-3xl font-extrabold leading-tight tracking-tighter md:text-4xl">
Our new website <br className="hidden sm:inline" />
built with Radix UI and Tailwind CSS.
</h1>
<p className="max-w-[700px] text-lg text-muted-foreground">
Accessible and customizable components that you can copy and paste
into your apps. Free. Open Source. And Next.js 13 Ready.
</p>
<section className="flex flex-col">
<div className="flex w-full flex-col justify-between gap-5 bg-[#D0F2FF] px-[32px] py-5 md:flex-row md:px-20">
<div className="flex w-full flex-col justify-center gap-5 md:w-[660px]">
<h6 className="font-sans text-lg uppercase tracking-[0.2625rem] text-orange lg:text-xl">
Privacy + Scaling Explorations
</h6>
<h1 className="text-4xl font-[700] lg:text-7xl">
Programmable cryptography for people like you
</h1>
<Link href={"/projects"} className="flex items-center gap-2">
<Link href={"/projects"} className="flex items-center gap-2">
<h1 className="border-b-2 border-orange text-base uppercase">
Explore The Project Library
</h1>
<Image
src={ArrowRightVector}
alt="arrowvector"
height={24}
width={24}
/>
</Link>
</Link>
</div>
<div className="m-auto flex h-[364px] w-full max-w-[280px] items-center justify-center md:m-0 md:h-full md:w-full lg:max-w-[542px]">
<Image src={PSELogo} alt="pselogo" style={{ objectFit: "cover" }} />
</div>
</div>
<div className="flex gap-4">
<Link
href={siteConfig.links.docs}
target="_blank"
rel="noreferrer"
className={buttonVariants()}
>
Documentation
</Link>
<Link
target="_blank"
rel="noreferrer"
href={siteConfig.links.github}
className={buttonVariants({ variant: "outline" })}
>
GitHub
</Link>
<div className="flex flex-col">
<div className="flex flex-col justify-between gap-5 border-y border-black px-[32px] py-5 md:flex-row md:gap-0 lg:px-20">
<div className="flex flex-col items-start justify-center gap-2 lg:flex-row lg:items-center">
<div className="flex w-[280px] items-center justify-start gap-2">
<Image src={PSEIcon1} alt="pseicon1" height={16} width={16} />
<p className="text-base font-[700] uppercase tracking-wide text-orange">
Learn and Share
</p>
</div>
<p className="text-xl font-[500]">
Diving into Plonk accumulation via aPlonk by Ralph Toledo
</p>
</div>
<Link
href={"https://www.youtube.com/live/hRXgf6T2yb8?feature=share"}
target="_blank"
rel="noreferrer"
className="flex items-center justify-start gap-5 md:justify-center"
>
<p className="border-b-2 border-orange text-base font-[500] uppercase">
Watch
</p>
<ArrowRightUp color="black" />
</Link>
</div>
<div className="flex flex-col justify-between gap-5 border-b border-black px-[32px] py-5 md:flex-row md:gap-0 lg:px-20">
<div className="flex flex-col items-start justify-center gap-2 lg:flex-row lg:items-center">
<div className="flex w-[280px] items-center justify-start gap-2">
<Image src={PSEIcon1} alt="pseicon1" height={16} width={16} />
<p className="text-base font-[700] uppercase tracking-wide text-orange">
Learn and Share
</p>
</div>
<p className="text-xl font-[500]">
Folding Circom Circuit: A ZKML Case Study - Dr. Cathie So
</p>
</div>
<Link
href={"https://www.youtube.com/live/jb6HDEtY4CI?feature=share"}
target="_blank"
rel="noreferrer"
className="flex items-center justify-start gap-5 md:justify-center"
>
<p className="border-b-2 border-orange text-base font-[500] uppercase">
Watch
</p>
<ArrowRightUp color="black" />
</Link>
</div>
<div className="flex flex-col justify-between gap-5 border-b border-black px-[32px] py-5 md:flex-row md:gap-0 lg:px-20">
<div className="flex flex-col items-start justify-center gap-2 lg:flex-row lg:items-center">
<div className="flex w-[280px] items-center justify-start gap-2">
<Image src={PSEIcon2} alt="pseicon1" height={16} width={16} />
<p className="text-base font-[700] uppercase tracking-wide text-orange">
Event
</p>
</div>
<p className="text-xl font-[500]">PSE @ETH Global Paris</p>
</div>
<Link
href={"https://ethglobal.com/events/paris2023"}
target="_blank"
rel="noreferrer"
className="flex items-center justify-start gap-5 md:justify-center"
>
<p className="border-b-2 border-orange text-base font-[500] uppercase">
Attend
</p>
<ArrowRightUp color="black" />
</Link>
</div>
<div className="flex flex-col justify-between gap-5 border-b border-black px-[32px] py-5 md:flex-row md:gap-0 lg:px-20">
<div className="flex flex-col items-start justify-center gap-2 lg:flex-row lg:items-center">
<div className="flex w-[280px] items-center justify-start gap-2">
<Image src={PSEIcon3} alt="pseicon1" height={16} width={16} />
<p className="text-base font-[700] uppercase tracking-wide text-orange">
Blog Post
</p>
</div>
<p className="text-xl font-[500]">
zkEVM Community Edition Part 3: Logic and Structure
</p>
</div>
<Link
href={
"https://mirror.xyz/privacy-scaling-explorations.eth/shl8eMBiObd6_AUBikXZrjKD4fibI6xUZd7d9Yv5ezE"
}
target="_blank"
passHref
rel="noreferrer"
className="flex items-center justify-start gap-5 md:justify-center"
>
<p className="border-b-2 border-orange text-base font-[500] uppercase">
read
</p>
<ArrowRightUp color="black" />
</Link>
</div>
</div>
<div className="bg-radial-gradient flex flex-col gap-32 px-6 py-24 md:px-12">
<section className="relative grid w-full grid-cols-1 gap-10 overflow-hidden lg:grid-cols-4 lg:gap-0">
<h2 className="text-xl uppercase text-orange lg:order-none lg:text-center">
Who we are
</h2>
<div className="lg:col-span-3 lg:pl-[140px]">
<h3 className="max-w-2xl text-3xl font-bold">
PSE is a research lab building free tools that expand the world of
cryptography.
</h3>
</div>
</section>
<WhatWeDo />
<section className="relative grid w-full grid-cols-1 gap-10 overflow-hidden lg:grid-cols-4 lg:gap-0">
<h2 className="text-xl uppercase text-orange lg:order-none lg:text-center">
how to plug in
</h2>
<div className="lg:col-span-3 lg:pl-[140px]">
<p className="max-w-2xl xl:text-lg">
PSE is a growing team of developers, researchers, designers,
communicators, artists, and organizers. There are so many ways to
get involved- you can try out our apps, build with our tools,
contribute to projects, or join our team. Wed love to hear from
you!
</p>
<div className="p-3"></div>
<Link
href={siteConfig.links.discord}
target="_blank"
rel="noreferrer"
passHref
className="flex items-center gap-2"
>
<div className="border-b-2 border-orange text-base font-[500] uppercase">
Say Hi On Discord
</div>
<ArrowRightUp color="black" />
</Link>
</div>
</section>
</div>
</section>
)

136
app/projects/[id]/page.tsx Normal file
View File

@@ -0,0 +1,136 @@
"use client"
import NextImage from "next/image"
import NextLink from "next/link"
import { usePathname } from "next/navigation"
import GithubVector from "@/public/social-medias/github-fill.svg"
import GlobalVector from "@/public/social-medias/global-line.svg"
import TwitterVector from "@/public/social-medias/twitter-fill.svg"
import { projects } from "@/config/projects"
import Breadcrumbs from "@/components/breadcrumbs"
export default function ProjectDetailPage() {
const router = usePathname()
const breadcrumbs = router
.split("/")
.slice(1)
.map((part) => {
const id = Number(part)
if (!isNaN(id)) {
const project = projects.find((project) => project.id === id)
return project ? project.name : part
} else {
return part
}
})
const findProject = projects.filter(
(project) => String(project.id) === router.split("/").slice(1)[1]
)[0]
const githubLink = findProject.links.github
const twitterLink = findProject.links.twitter
const websiteLink = findProject.links.website
return (
<section className="flex flex-col items-center">
<div className="relative flex h-auto w-full justify-center overflow-hidden bg-second-gradient md:h-[400px]">
<div className="z-[11] flex w-full flex-col justify-center gap-5 p-[24px] md:w-[664px] md:p-0">
<Breadcrumbs path={breadcrumbs} />
<h1 className="text-2xl font-[700] md:text-3xl">
{findProject.name}
</h1>
<div className="flex flex-wrap items-center justify-start gap-5">
{githubLink !== "none" && (
<NextLink
href={findProject.links.github}
target="_blank"
rel="noreferrer"
>
<div className="flex items-center gap-2">
<NextImage
src={GithubVector}
alt="bg"
width={20}
height={20}
/>
<p>Github</p>
</div>
</NextLink>
)}
{websiteLink !== "none" && (
<NextLink
href={findProject.links.website}
target="_blank"
rel="noreferrer"
>
<div className="flex items-center gap-2">
<NextImage
src={GlobalVector}
alt="bg"
width={20}
height={20}
/>
<p>Website</p>
</div>
</NextLink>
)}
{twitterLink !== "none" && (
<NextLink
href={findProject.links.twitter}
target="_blank"
rel="noreferrer"
>
<div className="flex items-center gap-2">
<NextImage
src={TwitterVector}
alt="bg"
width={20}
height={20}
/>
<p>Twitter</p>
</div>
</NextLink>
)}
</div>
<p className="mt-5 w-full text-lg md:w-[612px]">{findProject.tldr}</p>
</div>
</div>
<div className="flex w-full flex-col items-center justify-center gap-5 bg-anakiwa px-[24px] py-10 md:px-0">
{findProject.image ? (
<div className="flex h-auto items-center justify-center">
<NextImage
src={require(`@/public/projects-logo/${findProject.image}`)}
alt="bg"
width={664}
/>
</div>
) : (
<div />
)}
<div className="flex w-full flex-col gap-5 py-10 text-base font-normal md:w-[664px] md:text-lg">
<p>
{`RLN is a protocol that allows one user to punish another user who is
abusing the rate limit in an anonymous system. Users can withdraw
the offender's stake or reveal their secrets, helping to maintain
system integrity via deterrence. RLN is built using the Semaphore
protocol.`}
</p>
<p>
{`This project is aimed at developers looking to stop spam while
preserving anonymity within a system. If you're working on
communication systems such as chat apps, client-server
communications, or peer-to-peer communications, RLN can help you
maintain privacy and anonymity while preventing abuse in the form of
spam and denial of service attacks. This ensures a safer and more
enjoyable user experience for your application's users.`}
</p>
</div>
</div>
</section>
)
}

90
app/projects/page.tsx Normal file
View File

@@ -0,0 +1,90 @@
"use client"
import NextImage from "next/image"
import NextLink from "next/link"
import { useRouter } from "next/navigation"
import GithubVector from "@/public/social-medias/github-fill.svg"
import GlobalVector from "@/public/social-medias/global-line.svg"
import { projects } from "@/config/projects"
export default function ProjectsPage() {
const router = useRouter()
return (
<section className="flex flex-col items-center">
<div className="relative flex h-[350px] w-full overflow-hidden bg-second-gradient md:h-[300px]">
<div className="z-[11] flex w-full flex-col justify-end gap-5 p-[24px] md:p-[32px] lg:p-[64px]">
<h1 className="text-4xl font-[700] md:text-5xl md:font-[400]">
Explore the project library
</h1>
<p className="w-full text-lg md:w-[612px] md:text-xl">
PSE is home to many projects, from cryptography research to
developer tools, protocols and proof-of-concept applications.
</p>
</div>
</div>
<div className="flex w-full flex-col gap-5 bg-anakiwa p-[24px] md:p-[32px] lg:p-[64px]">
<h1>Showing 24 projects</h1>
<div className="grid grid-cols-1 gap-5 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5">
{projects.map((item, index) => {
return (
<div
key={index}
onClick={() => router.push(`/projects/${item.id}`)}
className="flex h-full w-full cursor-pointer flex-col md:h-[500px]"
>
<div className="flex h-full max-h-full overflow-hidden md:max-h-[163px]">
{item.image.length > 0 ? (
<NextImage
src={require(`@/public/projects-logo/${item.image}`)}
alt="githubVector"
className="rounded-t-lg"
/>
) : (
<div className="h-[200px] w-full rounded-t-lg bg-[#A3DFF0]" />
)}
</div>
<div className="flex h-full flex-col justify-between gap-5 rounded-b-lg border-x border-b border-[#ccc] bg-white p-5">
<h1 className="text-2xl font-bold text-black">{item.name}</h1>
<p className="text-base text-black">{item.tldr}</p>
<div
className="mr-auto flex items-center justify-start gap-2"
onClick={(e) => e.stopPropagation()}
>
<NextLink
href={`${item.links.github}`}
target="_blank"
rel="noreferrer"
>
<NextImage
src={GithubVector}
alt="githubVector"
className="cursor-pointer"
width={16}
height={16}
/>
</NextLink>
<NextLink
href={`${item.links.website}`}
target="_blank"
rel="noreferrer"
>
<NextImage
src={GlobalVector}
className="cursor-pointer"
alt="globalVector"
width={16}
height={16}
/>
</NextLink>
</div>
</div>
</div>
)
})}
</div>
</div>
</section>
)
}

View File

@@ -0,0 +1,30 @@
import NextLink from "next/link"
interface Props {
path: string[]
}
const Breadcrumbs = ({ path }: Props) => {
return (
<div className="flex text-[#4A5754]">
{path.map((item, index) => {
const isLastItem = index === path.length - 1
if (isLastItem) {
return (
<p key={index} className="cursor-pointer font-bold capitalize">
{item}
</p>
)
}
return (
<NextLink key={index} href={`/${item}`} className={`capitalize`}>
{item === "projects" ? "All Projects" : item}
<span className="mx-2">/</span>
</NextLink>
)
})}
</div>
)
}
export default Breadcrumbs

View File

@@ -1,41 +1,43 @@
import * as React from "react"
"use client"
import NextImage from "next/image"
import Link from "next/link"
import { usePathname } from "next/navigation"
import PSELogo from "@/public/logos/header-logo.svg"
import { NavItem } from "@/types/nav"
import { siteConfig } from "@/config/site"
import { cn } from "@/lib/utils"
import { Icons } from "@/components/icons"
interface MainNavProps {
items?: NavItem[]
items: NavItem[]
}
export function MainNav({ items }: MainNavProps) {
const router = usePathname()
return (
<div className="flex gap-6 md:gap-10">
<Link href="/" className="flex items-center space-x-2">
<Icons.logo className="h-6 w-6" />
<span className="inline-block font-bold">{siteConfig.name}</span>
<NextImage src={PSELogo} alt="logo" width={32} height={32} />
</Link>
{items?.length ? (
<nav className="flex gap-6">
{items?.map(
(item, index) =>
item.href && (
<Link
key={index}
href={item.href}
className={cn(
"flex items-center text-sm font-medium text-muted-foreground",
item.disabled && "cursor-not-allowed opacity-80"
)}
>
{item.title}
</Link>
)
)}
</nav>
) : null}
<nav className="hidden items-center gap-6 md:flex">
{items.map((item, index) => {
return (
<Link
key={index}
href={item.href}
className={`uppercase ${
item.disabled && "cursor-not-allowed"
} flex items-center border-b-4 ${
item.href !== router
? "border-transparent"
: "border-orangeDark"
} text-base font-medium transition-opacity duration-200 ease-in-out hover:opacity-70`}
>
{item.title}
</Link>
)
})}
</nav>
</div>
)
}

View File

@@ -0,0 +1,227 @@
"use client"
import { cn } from "@/lib/utils"
const content = [
{
title: "Privacy",
description:
"We believe privacy is a social good that should be accessible to everyone. That's why we're creating open source tools that help people choose what, how, when, and where they share.",
className: "privacyDesc",
},
{
title: "Scaling",
description:
"Our infrastructure helps communities grow by making Ethereum more efficient and accessible. From account abstraction and reducing transaction costs, to rollups and zkEVM, we are building towards an interoperable future.",
className: "scalingDesc",
},
{
title: "Explorations",
description:
"We are mapping the emerging zero knowledge ecosystem through collective experimentation. We collaborate, share what we learn, and welcome contributions from around the world.",
className: "explorationsDesc",
},
]
const WhatWeDo = () => {
// useEffect(() => {
// const mm = gsap.matchMedia()
// mm.add("(min-width: 1024px)", () => {
// gsap.registerPlugin(ScrollTrigger)
// const tl = gsap.timeline({
// scrollTrigger: {
// trigger: ".badge-start-trigger",
// start: "top center",
// end: "+=550",
// scrub: 1,
// // markers: true,
// },
// })
// tl.from("#privacy", { fill: "#E1523A" }, "+=0.5")
// .to(".badge-right", { y: 50, ease: "ease-out" }, "+=1")
// .to("#privacy", { fill: "#111827", ease: "ease-out" }, "+=0.5")
// .to(".badge-right", { y: 100, ease: "ease-out" })
// .to("#scaling", { fill: "#E1523A", ease: "ease-in" })
// .to(".badge-right", { y: 250, ease: "ease-out" }, "+=1")
// .to(".badge-right", { y: 350, ease: "ease-out" })
// .to("#scaling", { fill: "#111827", ease: "ease-out" })
// .to("#explorations", { fill: "#E1523A", ease: "ease-in" })
// .to(".badge-right", { y: 550, ease: "ease-out" })
// })
// }, [])
return (
<section className="badge-start-trigger relative flex flex-col gap-4 lg:grid lg:grid-cols-4 lg:gap-0">
<h2 className="order-1 pt-6 text-xl uppercase text-orange lg:order-none xl:text-center">
What we do
</h2>
<div className="order-3 flex max-w-xl flex-col gap-2 pt-6 lg:order-none lg:col-span-2 lg:mx-auto lg:gap-6">
{content.map((item, index) => (
<article
className={cn("pb-12 last-of-type:pb-8 lg:px-6 lg:pb-24", item.className)}
key={index}
>
<h3 className="text-2xl xl:text-3xl">{item.title}</h3>
<div className="p-2"></div>
<p className="xl:text-lg">{item.description}</p>
</article>
))}
</div>
<div className="lg-order-none relative order-2 lg:mx-auto">
<svg
viewBox="0 0 213 213"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className="badge-right h-32 w-32 lg:h-52 lg:w-52"
>
<g id="pse-logo-badge">
<path
id="Vector"
d="M106.404 212.807C77.9803 212.807 51.263 201.739 31.1635 181.644C11.0684 161.544 0 134.822 0 106.404C0 77.9848 11.0684 51.263 31.1635 31.1635C51.2585 11.0639 77.9803 0 106.404 0C134.827 0 161.544 11.0684 181.644 31.1635C201.739 51.2585 212.807 77.9803 212.807 106.404C212.807 134.827 201.739 161.544 181.644 181.644C161.549 201.739 134.827 212.807 106.404 212.807ZM106.404 5.37301C79.4176 5.37301 54.048 15.8817 34.9649 34.9649C15.8817 54.048 5.37301 79.4176 5.37301 106.404C5.37301 133.39 15.8817 158.759 34.9649 177.842C54.048 196.925 79.4176 207.434 106.404 207.434C133.39 207.434 158.759 196.925 177.842 177.842C196.925 158.759 207.434 133.39 207.434 106.404C207.434 79.4176 196.925 54.048 177.842 34.9649C158.759 15.8817 133.39 5.37301 106.404 5.37301Z"
fill="#171C1B"
/>
<g id="privacy">
<path
id="Vector_2"
d="M30.5641 95.574L16.4062 92.6233L17.4764 87.4876C18.2196 83.928 20.5345 82.1638 23.5927 82.7996L23.9016 82.8623C26.9239 83.4937 28.3567 86.0414 27.6179 89.601L27.206 91.5845L31.2268 92.4218L30.5686 95.5785L30.5641 95.574ZM19.7957 90.0353L24.4702 91.0114L24.9135 88.8756C25.2225 87.3936 24.4837 86.3145 23.0777 86.0235C21.636 85.7235 20.5479 86.4175 20.239 87.8995L19.7957 90.0353Z"
/>
<path
id="Vector_3"
d="M33.7553 81.917L20.4258 76.3112L22.6108 71.1128C24.0033 67.7995 26.3585 66.3577 29.3092 67.598L29.6002 67.7189C31.539 68.5338 32.4434 69.98 32.4345 71.8292L38.5776 70.4501L37.1314 73.8933L31.6822 74.9903L30.7688 77.1619L35.009 78.944L33.7598 81.9126L33.7553 81.917ZM24.1914 74.3993L28.4316 76.1814L29.4659 73.7187C30.0077 72.4337 29.533 71.2292 28.2435 70.6919C26.9764 70.1591 25.7675 70.6516 25.2257 71.9367L24.1914 74.3993Z"
/>
<path
id="Vector_4"
d="M40.3113 67.9456L28.0742 60.4592L29.7578 57.71L41.9948 65.1964L40.3113 67.9456Z"
/>
<path
id="Vector_5"
d="M46.332 59.0753L32.5547 53.165L34.6949 50.6262L45.8305 55.6186L46.2603 55.1082L39.2933 45.1726L41.3709 42.71L49.717 55.0679L46.3365 59.0797L46.332 59.0753Z"
/>
<path
id="Vector_6"
d="M52.7696 51.4423L47.4727 37.2934L51.5338 34.0293L64.3484 42.1336L61.7425 44.2246L58.6082 42.1784L53.9382 45.935L55.277 49.423L52.7651 51.4423H52.7696ZM56.2486 40.6515L51.4218 37.4994L50.8532 37.9561L52.9263 43.3246L56.2486 40.6515Z"
/>
<path
id="Vector_7"
d="M62.3967 35.1645L62.1997 34.7795C60.5878 31.6094 60.9012 27.1945 65.3294 24.9424C68.8174 23.1693 72.1979 24.0513 74.0695 26.9572L71.1771 28.4259C70.1562 27.0289 68.4234 26.7378 66.6906 27.6199C64.4116 28.7796 63.9728 31.0765 65.2086 33.5123C66.4309 35.9123 68.5712 36.9152 70.9174 35.7242C72.686 34.8242 73.5546 33.2347 73.0442 31.578L75.9188 30.1184C77.0381 33.1004 75.9456 36.5436 72.283 38.4062C67.6578 40.7569 63.8608 38.0615 62.3922 35.169L62.3967 35.1645Z"
/>
<path
id="Vector_8"
d="M84.4868 33.1348L83.0271 27.8917L82.3465 28.0797L75.9258 20.6291L79.1048 19.7426L83.6674 25.2052L84.2719 25.035L85.0689 18.0814L88.0777 17.2441L86.7569 26.8529L86.0763 27.0409L87.536 32.2841L84.4868 33.1348Z"
/>
</g>
<path
id="Vector_9"
d="M102.894 28.2006L102.796 24.5469L99.3211 24.641L99.2539 22.0888L102.728 21.9947L102.63 18.3232L105.419 18.2471L105.518 21.9186L109.015 21.8246L109.082 24.3768L105.585 24.4708L105.684 28.1245L102.894 28.2006Z"
fill="#171C1B"
/>
<g id="scaling">
<path
id="Vector_10"
d="M118.192 26.1981L121.241 26.8742C121.004 27.9488 121.617 29.0727 123.596 29.5115C125.342 29.8965 126.448 29.3592 126.685 28.2846C126.887 27.3846 126.274 26.7041 124.599 26.1712L123.565 25.8399C120.815 24.9892 119.378 23.0191 119.933 20.5251C120.529 17.8386 122.933 16.6207 126.059 17.3147C129.359 18.0446 130.93 20.3057 130.321 23.0504L127.25 22.3698C127.474 21.3534 126.927 20.2833 125.468 19.9609C124.066 19.652 123.202 20.2833 122.996 21.2057C122.817 22.0116 123.189 22.7773 124.456 23.1579L125.508 23.4937C128.499 24.4384 130.326 26.3727 129.748 28.9652C129.148 31.6696 126.551 32.9457 123.001 32.1577C119.181 31.3114 117.578 28.9204 118.183 26.1981H118.192Z"
/>
<path
id="Vector_11"
d="M133.996 27.3194L134.17 26.9254C135.621 23.6792 139.248 21.1449 143.788 23.1732C147.356 24.7672 148.798 27.9507 147.719 31.2327L144.759 29.9119C145.207 28.2373 144.339 26.7104 142.561 25.9179C140.228 24.8747 138.164 25.9761 137.054 28.4701C135.957 30.9283 136.521 33.2252 138.925 34.2998C140.739 35.1103 142.516 34.7834 143.483 33.3461L146.425 34.6625C144.813 37.4072 141.446 38.7236 137.698 37.049C132.961 34.9356 132.67 30.2835 133.996 27.3239V27.3194Z"
/>
<path
id="Vector_12"
d="M145.583 40.3281L157.887 31.5566L162.087 34.6372L157.564 49.113L154.869 47.1384L156.038 43.5832L151.202 40.037L148.18 42.231L145.578 40.3236L145.583 40.3281ZM156.906 40.9057L158.706 35.4252L158.12 34.9954L153.468 38.3848L156.906 40.9057Z"
/>
<path
id="Vector_13"
d="M159.457 51.2407L169.912 41.417L172.119 43.7677L163.729 51.6571L167.579 55.754L165.515 57.6927L159.457 51.2496V51.2407Z"
/>
<path
id="Vector_14"
d="M167.461 60.3691L179.085 51.9648L180.974 54.5752L169.35 62.9795L167.461 60.3691Z"
/>
<path
id="Vector_15"
d="M171.942 66.4119L184.815 60.0762L187.148 64.8179L179.007 74.8475L179.128 75.0937L189.655 69.9133L190.989 72.6311L178.116 78.9668L175.766 74.1893L183.906 64.1597L183.785 63.9134L173.258 69.0939L171.938 66.4119H171.942Z"
/>
<path
id="Vector_16"
d="M186.102 80.4898L186.523 80.3913C190.047 79.5809 194.22 81.1614 195.29 85.818C196.158 89.5926 194.497 92.7358 191.332 93.7835L190.611 90.6448C192.084 90.0448 192.796 88.3881 192.357 86.4941C191.793 84.0449 189.626 83.0285 187.02 83.6285C184.28 84.2599 182.833 86.2031 183.447 88.8672C183.774 90.2866 184.557 91.3343 185.556 91.8089L186.724 91.5403L185.883 87.8822L188.144 87.3628L189.912 95.0596L187.651 95.579L187.387 94.4283L185.014 94.9745C182.806 94.2313 181.235 92.297 180.595 89.5164C179.444 84.4972 182.636 81.2868 186.102 80.4898Z"
/>
</g>
<path
id="Vector_17"
d="M145.925 109.369C145.925 110.749 144.949 111.899 143.646 112.163C143.463 112.204 143.27 112.222 143.073 112.222H133.558C131.982 112.222 130.706 113.498 130.706 115.074V124.589C130.706 125.574 130.209 126.442 129.448 126.953C129.144 127.159 128.799 127.306 128.427 127.382C128.244 127.418 128.051 127.441 127.854 127.441H118.339C116.763 127.441 115.487 128.717 115.487 130.293V139.808C115.487 141.384 114.211 142.66 112.635 142.66H103.12C101.544 142.66 100.268 141.384 100.268 139.808V130.293C100.268 128.717 101.544 127.441 103.12 127.441H112.635C114.211 127.441 115.487 126.165 115.487 124.589V115.074C115.487 113.498 116.763 112.222 118.339 112.222H127.854C129.43 112.222 130.706 110.946 130.706 109.369V97.0026C130.706 88.6162 123.923 81.8149 115.541 81.7835C107.164 81.8149 100.376 88.6162 100.376 97.0026V109.369C100.376 110.946 99.0995 112.222 97.5234 112.222H88.0087C86.4326 112.222 85.1566 113.498 85.1566 115.074V127.441V139.808C85.1566 141.384 83.8805 142.66 82.3044 142.66H72.7897C71.2136 142.66 69.9375 141.384 69.9375 139.808V115.074C69.9375 113.498 71.2136 112.222 72.7897 112.222H82.3044C83.8805 112.222 85.1566 110.946 85.1566 109.369V96.9488C85.1566 80.1671 98.7592 66.5645 115.541 66.5645C132.323 66.5645 145.925 80.1671 145.925 96.9488V109.369Z"
fill="#171C1B"
/>
<path
id="Vector_18"
d="M106.412 173.343C69.4994 173.343 39.4688 143.312 39.4688 106.399C39.4688 69.4867 69.4994 39.4561 106.412 39.4561C143.325 39.4561 173.355 69.4867 173.355 106.399C173.355 143.312 143.325 173.343 106.412 173.343ZM106.412 42.1426C70.9815 42.1426 42.1553 70.9688 42.1553 106.399C42.1553 141.83 70.9815 170.656 106.412 170.656C141.843 170.656 170.669 141.83 170.669 106.399C170.669 70.9688 141.843 42.1426 106.412 42.1426Z"
fill="#171C1B"
/>
<g id="explorations">
<path
id="Vector_19"
d="M27.1562 151.57L39.2724 143.882L44.032 151.382L41.7753 152.814L38.6993 147.97L36.1292 149.6L39.0351 154.18L36.7784 155.613L33.8725 151.032L31.1009 152.792L34.2486 157.753L31.992 159.186L27.1607 151.57H27.1562Z"
/>
<path
id="Vector_20"
d="M34.4732 162.732L43.2626 161.219L45.3401 153.356L47.7267 155.967L46.3028 161.049L46.6073 161.385L51.7698 160.391L54.0892 162.929L45.9446 164.331L43.8044 172.946L41.4044 170.322L42.9447 164.492L42.6268 164.143L36.7881 165.271L34.4688 162.732H34.4732Z"
/>
<path
id="Vector_21"
d="M47.6094 176.155L56.3226 164.616L60.5091 167.777C63.4105 169.967 64.015 172.815 62.1344 175.309L61.9464 175.559C60.0882 178.022 57.1689 178.232 54.2719 176.043L52.6555 174.825L50.1795 178.102L47.6094 176.159V176.155ZM57.2136 168.785L54.3346 172.595L56.0764 173.907C57.2853 174.82 58.5748 174.61 59.439 173.468C60.3255 172.291 60.1643 171.01 58.9554 170.097L57.2136 168.785Z"
/>
<path
id="Vector_22"
d="M60.8086 185.385L67.4577 172.674L70.3143 174.169L64.9772 184.374L69.9561 186.979L68.6442 189.487L60.8086 185.39V185.385Z"
/>
<path
id="Vector_23"
d="M74.5391 184.629L74.6645 184.217C75.6988 180.814 79.2897 177.94 84.121 179.413C88.9343 180.877 90.3492 185.274 89.3104 188.677L89.185 189.089C88.2448 192.174 84.6672 195.42 79.7062 193.907C74.7406 192.393 73.5988 187.714 74.5391 184.629ZM86.1224 187.952C86.9015 185.395 85.8403 183.08 83.2434 182.287C80.6509 181.499 78.4972 182.834 77.7181 185.39C76.9838 187.799 77.9868 190.24 80.5837 191.028C83.1762 191.816 85.3926 190.356 86.1224 187.947V187.952Z"
/>
<path
id="Vector_24"
d="M92.9648 196.675L94.2006 182.262L99.8199 182.745C103.402 183.054 105.497 184.85 105.224 188.042L105.197 188.356C105.018 190.451 103.921 191.759 102.157 192.314L105.359 197.736L101.638 197.418L98.9199 192.569L96.5692 192.367L96.1752 196.948L92.9648 196.67V196.675ZM97.1782 185.262L96.7842 189.842L99.4483 190.07C100.836 190.191 101.835 189.368 101.956 187.979C102.072 186.609 101.23 185.611 99.8423 185.49L97.1782 185.262Z"
/>
<path
id="Vector_25"
d="M109.172 197.746L112.293 182.961L117.469 182.384L123.939 196.098L120.616 196.47L119.072 193.063L113.112 193.725L112.373 197.388L109.172 197.742V197.746ZM117.899 190.506L115.517 185.254L114.796 185.334L113.663 190.976L117.903 190.506H117.899Z"
/>
<path
id="Vector_26"
d="M130.23 194.354L127.019 183.273L123.151 184.392L122.367 181.692L133.221 178.549L134.004 181.249L130.113 182.373L133.324 193.454L130.23 194.35V194.354Z"
/>
<path
id="Vector_27"
d="M141.645 190.428L135.855 177.3L138.806 175.997L144.596 189.125L141.645 190.428Z"
/>
<path
id="Vector_28"
d="M145.805 181.087L145.568 180.725C143.625 177.743 143.728 173.149 147.963 170.395C152.177 167.65 156.457 169.388 158.396 172.37L158.633 172.732C160.393 175.432 160.581 180.259 156.233 183.089C151.886 185.919 147.565 183.787 145.805 181.087ZM155.79 174.349C154.33 172.11 151.877 171.434 149.602 172.916C147.332 174.398 146.969 176.905 148.429 179.144C149.804 181.253 152.316 182.055 154.59 180.572C156.865 179.09 157.165 176.458 155.79 174.349Z"
/>
<path
id="Vector_29"
d="M167.051 174.701L156.73 164.734L160.402 160.932L172.594 165.195L172.787 164.998L164.347 156.849L166.451 154.673L176.772 164.635L173.073 168.468L160.881 164.205L160.689 164.402L169.129 172.552L167.056 174.701H167.051Z"
/>
<path
id="Vector_30"
d="M176.42 157.841L178.095 155.203C179.022 155.794 180.289 155.597 181.377 153.887C182.335 152.378 182.205 151.156 181.274 150.565C180.495 150.068 179.644 150.417 178.574 151.81L177.911 152.669C176.174 154.966 173.832 155.642 171.679 154.272C169.355 152.799 169.028 150.122 170.747 147.417C172.561 144.565 175.22 143.857 177.593 145.362L175.91 148.017C175.032 147.457 173.841 147.61 173.04 148.872C172.27 150.081 172.57 151.111 173.367 151.617C174.065 152.06 174.911 151.971 175.7 150.91L176.371 150.032C178.279 147.542 180.719 146.486 182.958 147.905C185.295 149.392 185.613 152.266 183.661 155.338C181.565 158.638 178.771 159.332 176.416 157.836L176.42 157.841Z"
/>
</g>
<path
id="Vector_31"
d="M185.508 119.682L184.648 123.893C184.506 124.589 184.954 125.267 185.65 125.409L189.861 126.269C190.557 126.411 191.235 125.963 191.377 125.267L192.237 121.056C192.379 120.36 191.931 119.682 191.235 119.54L187.024 118.68C186.328 118.538 185.65 118.986 185.508 119.682Z"
fill="#171C1B"
/>
<path
id="Vector_32"
d="M25.7675 118.681L21.5559 119.541C20.8606 119.683 20.412 120.362 20.554 121.057L21.4139 125.268C21.5558 125.964 22.2346 126.412 22.93 126.27L27.1415 125.411C27.8369 125.269 28.2855 124.59 28.1435 123.894L27.2836 119.683C27.1416 118.988 26.4628 118.539 25.7675 118.681Z"
fill="#171C1B"
/>
</g>
</svg>
</div>
</section>
)
}
export default WhatWeDo

View File

@@ -0,0 +1,85 @@
import NextImage from "next/image"
import NextLink from "next/link"
import PSELogo from "@/public/logos/footer-logo.svg"
import { siteConfig } from "@/config/site"
import {
Discord,
Github,
Mirror,
Twitter,
} from "@/components/svgs/social-medias"
import { ArrowRightUp } from "./svgs/arrows"
export function SiteFooter() {
return (
<footer className="flex flex-col gap-5">
<div className="flex w-full flex-col gap-5 p-[32px]">
<NextImage src={PSELogo} alt="logo" width={94} height={41} />
<h1 className="text-sm">
Privacy + Scaling Explorations is a multidisciplinary team supported
by the Ethereum Foundation.
</h1>
</div>
<div className="flex w-full flex-col gap-5 px-[32px] text-base font-[500]">
<NextLink href={"/"} className="border-b-2 border-[#171C1B] py-5">
HOME
</NextLink>
<NextLink
href={"/projects"}
className="border-b-2 border-[#171C1B] py-5"
>
PROJECT LIBRARY
</NextLink>
<NextLink
href={siteConfig.links.jobs}
target="_blank"
rel="noreferrer"
className="flex items-center gap-5 py-5"
>
JOBS
<ArrowRightUp color="black" />
</NextLink>
</div>
<div className="flex w-full flex-col items-center justify-center gap-5 bg-[#171C1B] py-[40px] text-sm">
<div className="flex gap-5">
<NextLink
href={siteConfig.links.twitter}
target="_blank"
rel="noreferrer"
>
<Twitter color="white" />
</NextLink>
<NextLink
href={siteConfig.links.discord}
target="_blank"
rel="noreferrer"
>
<Discord color="white" />
</NextLink>
<NextLink
href={siteConfig.links.github}
target="_blank"
rel="noreferrer"
>
<Github color="white" />
</NextLink>
<NextLink
href={siteConfig.links.articles}
target="_blank"
rel="noreferrer"
>
<Mirror color="white" />
</NextLink>
</div>
<div className="flex gap-5 text-white">
<h1>Privacy Policy</h1>
<h1>Terms of use</h1>
</div>
<h1 className="text-gray-400">Last updated June 8, 2023</h1>
</div>
</footer>
)
}

View File

@@ -0,0 +1,116 @@
"use client"
import { useState } from "react"
import NextImage from "next/image"
import NextLink from "next/link"
import ArrowVector from "@/public/icons/arrow-right-up.svg"
import CloseVector from "@/public/icons/close-fill.svg"
import HeaderVector from "@/public/icons/menu-burger.svg"
import { siteConfig } from "@/config/site"
import {
Discord,
Github,
Mirror,
Twitter,
} from "@/components/svgs/social-medias"
export function SiteHeaderMobile() {
const [header, setHeader] = useState(false)
return (
<div className="flex items-center md:hidden">
<NextImage
src={HeaderVector}
alt="logo"
className="cursor-pointer"
onClick={() => setHeader(true)}
width={24}
height={24}
/>
{header && (
<div
className="z-5 fixed inset-0 flex justify-end bg-black opacity-50"
onClick={() => setHeader(false)}
></div>
)}
{header && (
<div className="fixed inset-y-0 right-0 z-10 flex w-[257px] flex-col bg-black text-white">
<div className="flex justify-end p-[37px]">
<NextImage
src={CloseVector}
alt="closeVector"
className="cursor-pointer"
onClick={() => setHeader(false)}
width={24}
height={24}
/>
</div>
<div className="flex w-full flex-col gap-5 px-[16px] text-base font-[500]">
<NextLink
href={"/"}
onClick={() => setHeader(false)}
className="border-y-2 border-white p-[16px]"
>
HOME
</NextLink>
<NextLink
onClick={() => setHeader(false)}
href={"/projects"}
className="border-b-2 border-white p-[16px] pt-0"
>
PROJECT LIBRARY
</NextLink>
<NextLink
href={siteConfig.links.jobs}
target="_blank"
rel="noreferrer"
className="flex items-center gap-5 border-b-2 border-white p-[16px] pt-0"
>
JOBS
<NextImage src={ArrowVector} alt="logo" width={24} height={24} />
</NextLink>
</div>
<div className="flex h-full w-full flex-col items-center justify-end gap-5 py-[40px] text-sm">
<div className="flex gap-5">
<NextLink
href={siteConfig.links.twitter}
target="_blank"
rel="noreferrer"
>
<Twitter color="white" />{" "}
</NextLink>
<NextLink
href={siteConfig.links.discord}
target="_blank"
rel="noreferrer"
>
<Discord color="white" />{" "}
</NextLink>
<NextLink
href={siteConfig.links.github}
target="_blank"
rel="noreferrer"
>
<Github color="white" />{" "}
</NextLink>
<NextLink
href={siteConfig.links.articles}
target="_blank"
rel="noreferrer"
>
<Mirror color="white" />{" "}
</NextLink>
</div>
<div className="flex gap-5 text-white">
<h1>Privacy Policy</h1>
<h1>Terms of use</h1>
</div>
<h1 className="text-gray-400">Last updated June 8, 2023</h1>
</div>
</div>
)}
</div>
)
}

View File

@@ -1,49 +1,52 @@
import Link from "next/link"
import { siteConfig } from "@/config/site"
import { buttonVariants } from "@/components/ui/button"
import { Icons } from "@/components/icons"
import { MainNav } from "@/components/main-nav"
import { ThemeToggle } from "@/components/theme-toggle"
import {
Discord,
Github,
Mirror,
Twitter,
} from "@/components/svgs/social-medias"
import { SiteHeaderMobile } from "./site-header-mobile"
export function SiteHeader() {
return (
<header className="sticky top-0 z-40 w-full border-b bg-background">
<div className="container flex h-16 items-center space-x-4 sm:justify-between sm:space-x-0">
<header className="sticky top-0 z-40 w-full border-b bg-white px-[32px]">
<div className="flex h-16 justify-between space-x-4 sm:space-x-0">
<MainNav items={siteConfig.mainNav} />
<div className="flex flex-1 items-center justify-end space-x-4">
<nav className="flex items-center space-x-1">
<Link
href={siteConfig.links.github}
target="_blank"
rel="noreferrer"
>
<div
className={buttonVariants({
size: "sm",
variant: "ghost",
})}
>
<Icons.gitHub className="h-5 w-5" />
<span className="sr-only">GitHub</span>
</div>
</Link>
<SiteHeaderMobile />
<div className="hidden flex-1 items-center justify-end space-x-4 md:flex">
<nav className="flex items-center gap-5 space-x-1">
<Link
href={siteConfig.links.twitter}
target="_blank"
rel="noreferrer"
>
<div
className={buttonVariants({
size: "sm",
variant: "ghost",
})}
>
<Icons.twitter className="h-5 w-5 fill-current" />
<span className="sr-only">Twitter</span>
</div>
<Twitter color="black" />
</Link>
<Link
href={siteConfig.links.discord}
target="_blank"
rel="noreferrer"
>
<Discord color="black" />
</Link>
<Link
href={siteConfig.links.github}
target="_blank"
rel="noreferrer"
>
<Github color="black" />
</Link>
<Link
href={siteConfig.links.articles}
target="_blank"
rel="noreferrer"
>
<Mirror color="black" />
</Link>
<ThemeToggle />
</nav>
</div>
</div>

View File

@@ -0,0 +1,30 @@
import React from "react"
interface MySvgProps {
color: "white" | "black"
}
export const ArrowRightUp = ({ color }: MySvgProps) => {
return (
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g id="arrow-right-up-line" clipPath="url(#clip0_3593_2234)">
<path
id="Vector"
d="M16.0034 9.414L7.39642 18.021L5.98242 16.607L14.5884 8H7.00342V6H18.0034V17H16.0034V9.414Z"
fill={color}
/>
</g>
<defs>
<clipPath id="clip0_3593_2234">
<rect width="24" height="24" fill={color} />
</clipPath>
</defs>
</svg>
)
}

View File

@@ -0,0 +1,137 @@
import React from "react"
interface MySvgProps {
color: string
}
export const Github = ({ color }: MySvgProps) => {
return (
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g id="github">
<path
id="githab"
fillRule="evenodd"
clipRule="evenodd"
d="M0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12ZM6 12.1257C6 8.8229 8.67888 6.144 11.9816 6.144C15.2844 6.144 17.9633 8.8229 18 12.1257C18 14.7679 16.3119 17.0064 13.9266 17.8137C13.633 17.8504 13.5229 17.6669 13.5229 17.5201V15.8688C13.5229 15.3183 13.3395 14.9513 13.1193 14.7679C14.4404 14.6211 15.8349 14.144 15.8349 11.8321C15.8349 11.1715 15.578 10.6211 15.211 10.2174C15.2139 10.2059 15.2179 10.1914 15.2227 10.1741C15.2789 9.97146 15.4419 9.38333 15.1376 8.63941C15.1376 8.63941 14.6239 8.49263 13.4862 9.26327C13.0092 9.15318 12.4954 9.07978 11.9816 9.07978C11.4679 9.07978 10.9541 9.11648 10.4771 9.26327C9.33943 8.49263 8.82568 8.63941 8.82568 8.63941C8.50136 9.43223 8.70786 10.0481 8.75015 10.1743L8.7523 10.1807C8.3486 10.6211 8.12842 11.1348 8.12842 11.7954C8.12842 14.1073 9.52295 14.6211 10.8441 14.7679C10.6973 14.9146 10.5138 15.1715 10.4771 15.5752C10.1468 15.722 9.30276 15.9789 8.7523 15.0614C8.7523 15.0614 8.42203 14.4743 7.83485 14.4376C7.83485 14.4376 7.24773 14.4376 7.79819 14.8046C7.79819 14.8046 8.20184 14.988 8.45869 15.6853C8.45869 15.6853 8.82568 16.8596 10.4771 16.4926V17.5201C10.4771 17.6669 10.367 17.8504 10.0734 17.8137C7.72476 17.0064 6 14.7679 6 12.1257Z"
fill={color}
/>
</g>
</svg>
)
}
export const Global = ({ color }: MySvgProps) => {
return (
<svg
width="25"
height="24"
viewBox="0 0 25 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g id="global-line" clip-path="url(#clip0_3593_4165)">
<path
id="Vector"
d="M12.5205 22C6.99751 22 2.52051 17.523 2.52051 12C2.52051 6.477 6.99751 2 12.5205 2C18.0435 2 22.5205 6.477 22.5205 12C22.5205 17.523 18.0435 22 12.5205 22ZM10.2305 19.667C9.24392 17.5743 8.67238 15.3102 8.54751 13H4.58251C4.77709 14.5389 5.41443 15.9882 6.41708 17.1717C7.41972 18.3552 8.74452 19.2221 10.2305 19.667ZM10.5505 13C10.7015 15.439 11.3985 17.73 12.5205 19.752C13.6728 17.6766 14.346 15.3695 14.4905 13H10.5505ZM20.4585 13H16.4935C16.3686 15.3102 15.7971 17.5743 14.8105 19.667C16.2965 19.2221 17.6213 18.3552 18.6239 17.1717C19.6266 15.9882 20.2639 14.5389 20.4585 13ZM4.58251 11H8.54751C8.67238 8.68979 9.24392 6.42569 10.2305 4.333C8.74452 4.77788 7.41972 5.64475 6.41708 6.8283C5.41443 8.01184 4.77709 9.4611 4.58251 11ZM10.5515 11H14.4895C14.3453 8.6306 13.6725 6.32353 12.5205 4.248C11.3682 6.32345 10.6951 8.63052 10.5505 11H10.5515ZM14.8105 4.333C15.7971 6.42569 16.3686 8.68979 16.4935 11H20.4585C20.2639 9.4611 19.6266 8.01184 18.6239 6.8283C17.6213 5.64475 16.2965 4.77788 14.8105 4.333Z"
fill={color}
/>
</g>
<defs>
<clipPath id="clip0_3593_4165">
<rect
width="24"
height="24"
fill={color}
transform="translate(0.520508)"
/>
</clipPath>
</defs>
</svg>
)
}
export const Discord = ({ color }: MySvgProps) => {
return (
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g id="discord">
<g id="discord_2">
<path
fillRule="evenodd"
clipRule="evenodd"
d="M13.308 14.1C13.488 14.328 13.704 14.586 13.704 14.586C15.03 14.544 15.54 13.674 15.54 13.674C15.54 11.742 14.676 10.176 14.676 10.176C13.812 9.528 12.99 9.546 12.99 9.546L12.906 9.642C13.926 9.954 14.4 10.404 14.4 10.404C13.776 10.062 13.164 9.894 12.594 9.828C12.162 9.78 11.748 9.792 11.382 9.84C11.3506 9.84 11.3237 9.84457 11.2934 9.84973L11.28 9.852C11.07 9.87 10.56 9.948 9.918 10.23C9.696 10.332 9.564 10.404 9.564 10.404C9.564 10.404 10.062 9.93 11.142 9.618L11.082 9.546C11.082 9.546 10.26 9.528 9.396 10.176C9.396 10.176 8.532 11.742 8.532 13.674C8.532 13.674 9.036 14.544 10.362 14.586C10.362 14.586 10.584 14.316 10.764 14.088C10.002 13.86 9.714 13.38 9.714 13.38C9.714 13.38 9.774 13.422 9.882 13.482C9.888 13.488 9.894 13.494 9.906 13.5C9.915 13.506 9.924 13.5105 9.933 13.515C9.942 13.5195 9.951 13.524 9.96 13.53C10.11 13.614 10.26 13.68 10.398 13.734C10.644 13.83 10.938 13.926 11.28 13.992C11.73 14.076 12.258 14.106 12.834 13.998C13.116 13.95 13.404 13.866 13.704 13.74C13.914 13.662 14.148 13.548 14.394 13.386C14.394 13.386 14.094 13.878 13.308 14.1ZM10.302 12.45C10.302 12.084 10.572 11.784 10.914 11.784C11.256 11.784 11.532 12.084 11.526 12.45C11.526 12.816 11.256 13.116 10.914 13.116C10.578 13.116 10.302 12.816 10.302 12.45ZM12.492 12.45C12.492 12.084 12.762 11.784 13.104 11.784C13.446 11.784 13.716 12.084 13.716 12.45C13.716 12.816 13.446 13.116 13.104 13.116C12.768 13.116 12.492 12.816 12.492 12.45Z"
fill={color}
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0ZM6.75 7.986C6.75 7.302 7.302 6.75 7.98 6.75H16.02C16.698 6.75 17.25 7.302 17.25 7.986V18.75L15.96 17.61L15.234 16.938L14.466 16.224L14.784 17.334H7.98C7.302 17.334 6.75 16.782 6.75 16.098V7.986Z"
fill={color}
/>
</g>
</g>
</svg>
)
}
export const Twitter = ({ color }: MySvgProps) => {
return (
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g id="twitter">
<path
id="twitter_2"
fillRule="evenodd"
clipRule="evenodd"
d="M0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12ZM16.575 8.625C17.1 8.55 17.55 8.475 18 8.25C17.7 8.775 17.25 9.225 16.725 9.525C16.875 13.05 14.325 16.875 9.75 16.875C8.4 16.875 7.125 16.425 6 15.75C7.275 15.9 8.625 15.525 9.525 14.85C8.4 14.85 7.5 14.1 7.2 13.125C7.575 13.2 7.95 13.125 8.325 13.05C7.2 12.75 6.375 11.7 6.375 10.575C6.75 10.725 7.125 10.875 7.5 10.875C6.45 10.125 6.075 8.7 6.75 7.575C8.025 9.075 9.825 10.05 11.85 10.125C11.475 8.625 12.675 7.125 14.25 7.125C14.925 7.125 15.6 7.425 16.05 7.875C16.65 7.725 17.175 7.575 17.625 7.275C17.475 7.875 17.1 8.325 16.575 8.625Z"
fill={color}
/>
</g>
</svg>
)
}
export const Mirror = ({ color }: MySvgProps) => {
return (
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g id="Mirror">
<g clipPath="url(#clip0_2615_9659)">
<path
id="Subtract"
fillRule="evenodd"
clipRule="evenodd"
d="M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24ZM12.1091 6C9.39788 6 7.2 8.19788 7.2 10.9091V17.7515C7.2 17.8887 7.31127 18 7.44852 18H16.7697C16.9069 18 17.0182 17.8887 17.0182 17.7515V10.9091C17.0182 8.19787 14.8203 6 12.1091 6Z"
fill={color}
/>
</g>
</g>
<defs>
<clipPath id="clip0_2615_9659">
<rect width="24" height="24" rx="12" fill="white" />
</clipPath>
</defs>
</svg>
)
}

426
config/projects.ts Normal file
View File

@@ -0,0 +1,426 @@
export const projects = [
{
id: 1,
image: "rlnlogo.webp",
name: "Rate-Limiting Nullifier",
tldr: "A protocol for deterring spam and maintaining anonymity in communication systems.",
description:
"Rate-Limiting Nullifier (RLN) is a protocol designed to combat spam and denial of service attacks in privacy-preserving environments. It allows users in an anonymous system to penalize those who exceed the rate limit, either by withdrawing the offender's stake or revealing their secrets. This mechanism helps maintain system integrity and deters abuse. RLN is built on the Semaphore protocol and uses zero-knowledge proofs and the Shamirs Secret Sharing scheme to reveal the spammer's private key. It's particularly useful for developers working on communication systems that require privacy and anonymity, such as chat apps, client-server communications, and peer-to-peer communications. It's already being used in projects like Zerokit and Waku, and is also being developed for use with the KZG polynomial commitment scheme.",
links: {
github: "https://github.com/Rate-Limiting-Nullifier/circom-rln",
website: "https://rate-limiting-nullifier.github.io/rln-docs/",
twitter: "none",
discord: "none",
},
tags: {
themes: ["Anonymity/privacy"],
types: ["Infrastructure/protocol"],
builtWith: ["Circom", "Solidity", "Semaphore"],
},
},
{
id: 2,
image: "zkitterlogo.webp",
name: "Zkitter",
tldr: "A decentralized social network prioritizing privacy and anonymity",
description:
"Zkitter is a decentralized social network that emphasizes privacy by default. It allows users to share thoughts and communicate in various modes: as known identities, as a member of a group, or entirely anonymously. Built with Semaphore and RLN, Zkitter offers familiar social media features such as posting, chatting, following, and liking, but with a strong focus on user privacy and anonymity. It serves as an experiment to explore new ways of engaging in conversations without the fear of damaging ones personal reputation and is an example of a user-facing application using zero-knowledge primitives such as Semaphore, CryptKeeper, ZK-Chat, and Interep. Users can sign up using an Ethereum address or ENS name, or create an anonymous account, with options for anonymous chat and posting.",
links: {
github: "https://github.com/zkitter",
website: "https://www.zkitter.com/explore/",
twitter: "none",
discord: "https://discord.gg/Em4Z9yE8eW",
},
tags: {
themes: ["Anonymity/privacy", "Social", "Identity"],
types: ["Application", "Infrastructure/protocol"],
builtWith: ["Semaphore", "RLN", "Interep", "zkchat"],
},
},
{
id: 3,
image: "macilogo.webp",
name: "MACI",
tldr: "A secure e-voting solution minimizing the risk of collusion and bribery",
description:
"Minimal Anti-Collusion Infrastructure (MACI) is a protocol designed to provide a highly secure e-voting solution. It enables organizations to conduct on-chain voting processes with a significantly reduced risk of cheating, such as bribery or collusion. MACI uses zero-knowledge proofs to implement a receipt-free voting scheme, making it impossible for anyone other than the vote coordinator to verify how a specific user voted. This ensures the correct execution of votes and allows anyone to verify the results. It's particularly beneficial for governance and funding events, where its anti-collusion mechanisms help ensure fair and transparent outcomes.",
links: {
github: "https://github.com/privacy-scaling-explorations/maci",
website:
"https://mirror.xyz/privacy-scaling-explorations.eth/ltCt68hslI5jmMf1AnfkrP2eUwkeZ8_fgkHc_WyD9Nc",
twitter: "none",
discord: "none",
},
tags: {
themes: ["Anonymity/privacy", "Voting/governance"],
types: ["Lego sets/toolkits", "Infrastructure/protocol"],
builtWith: ["P0tion", "JubjubLib"],
},
},
{
id: 4,
image: "waxlogo.webp",
name: "WAX: Wallet Account eXperiments",
tldr: "Streamlining web3 product development with smart account components for enhanced wallets, dApps, and SDKs.",
description:
"Wallet Account eXperiments (WAX), formerly known as BLS Wallet, is a suite of production-ready smart account components that provide advanced features for wallets, SDKs, and dApps. It's designed to lower gas costs on EVM rollups through aggregated BLS signatures, simplifying the integration of contract wallets and reducing the cost of layer 2 transactions. This makes WAX particularly beneficial for web3 projects targeting developing economies. WAX components incorporate advanced cryptographic primitives in a secure and intuitive way, using Safe contracts for a familiar and battle-tested foundation. Each additional module can be audited and added or removed at the account holder's discretion. WAX offers features like cheaper L2 transactions, modular smart contract components, ERC 4337 compatibility, zk email verification, passkeys verification, multi-action transactions, gasless transactions, and wallet upgradability. The primary use cases for WAX include scaling, key management, and the creation of prototypes for the web3 ecosystem.",
links: {
github: "https://github.com/getwax",
website: "https://getwax.org/",
twitter: "none",
discord: "https://discord.gg/hGDmAhcRyz",
},
tags: {
builtWith: [
"Hardhat",
"Node",
"Solidity BLS library",
"sqlite",
"docker",
"ethers",
"deno",
],
themes: ["Scaling", "Key management"],
types: ["Prototype", "Proof of concept", "Lego sets/toolkits"],
},
},
{
id: 5,
image: "",
name: "ZK-Chat",
tldr: "A protocol for integrating decentralized, anonymous, and spam-protected chat into applications.",
description:
"ZK-Chat is a protocol that enables developers to incorporate decentralized, anonymous chat features into their applications, complete with spam protection and anonymous group signaling. It uses Waku decentralized messaging, Semaphore for anonymous signaling, and Rate-Limiting Nullifier (RLN) for spam prevention. This creates a decentralized, client-server model that offers unstoppable, anonymous chat with registry on-chain. It's designed for both developers and users, offering an app and a library for easy integration into various applications.",
links: {
github: "https://github.com/kayleegeorge/zk-chat//",
website: "https://www.notion.so/6649797a76ed4858933015360fc76650?pvs=21",
twitter: "none",
discord: "none",
},
tags: {
themes: ["Anonymity/privacy", "Social"],
types: ["Legos/dev tools", "Proof of concept", "Application"],
builtWith: ["RLN", "Semaphore", "Waku"],
},
},
{
id: 6,
image: "cryptkeeperlogo.webp",
name: "CryptKeeper",
tldr: "A browser extension for secure, portable anonymous identity management across applications.",
description:
"CryptKeeper is a browser extension that generates Semaphore and RLN proofs for websites, providing a secure and portable solution for managing anonymous identity secrets across different applications. It simplifies the integration of zero-knowledge (ZK) identities and proofs into applications, allowing developers to focus on building the front-end and logic of their applications. By handling complex aspects of cryptography, circuits, caching, and storage, CryptKeeper enables users to interact with decentralized applications (dapps) without revealing their private identity secrets. It is aimed at building secure community standards for the growing ZK ecosystem.",
links: {
github: "https://github.com/CryptKeeperZK",
website: "none",
twitter: "none",
discord: "none",
},
tags: {
themes: ["Anonymity/privacy", "Social", "Identity"],
types: ["Application", "Infrastructure/protocol", "Lego sets/toolkits"],
builtWith: ["Semaphore", "RLN"],
},
},
{
id: 7,
image: "semaphorelogo.webp",
name: "Semaphore",
tldr: "A zero-knowledge protocol enabling anonymous group membership proof and signaling.",
description:
"Semaphore is a protocol that allows users to prove their membership in a group and transmit anonymous data, such as votes or feedback, without revealing their identities. It is designed for developers aiming to build privacy-preserving applications. Semaphore enables the creation of identities and their corresponding public values, which can be added to Merkle trees. This facilitates the authentication of anonymous user messages through zero-knowledge proofs, where membership is proven using Merkle proofs within the circuit. Key use cases include anonymous voting applications, receiving anonymous feedback from event attendees, and anonymous text messages. It is currently in production and is being used in a wide variety of projects.",
links: {
github: "https://github.com/semaphore-protocol",
website: "https://semaphore.appliedzkp.org/",
twitter: "none",
discord: "https://semaphore.appliedzkp.org/discord",
},
tags: {
themes: [
"Anonymity/privacy",
"Social",
"Identity",
"Transaction privacy",
"Voting/governance",
"Reputation",
"Education",
"Scaling",
"Key management",
"Other (group membership)",
],
types: [
"Legos/dev tools",
"Lego sets/toolkits",
"Infrastructure/protocol",
],
builtWith: ["ZK-kit", "circom", "snarkjs"],
},
},
{
id: 8,
image: "",
name: "PSE Security",
tldr: "Proactively securing Ethereum's L2 and ZK ecosystems.",
description:
"PSE Security is a division of the Privacy & Scaling Explorations team at the Ethereum Foundation. Its primary goal is to identify and rectify bugs, thereby enhancing the security of the Ethereum Layer 2 and Zero-Knowledge ecosystems. Recognizing the potential for critical bugs to cause significant setbacks, PSE Security is committed to preemptively addressing these issues. The team offers open-source projects like the ZK Bug Tracker and Bridge Bug Tracker, which track real bugs and exploits in production code, and encourages community contributions. PSE Security also conducts manual audits and plans to help teach the community more about security and ways they can prevent bugs themselves.",
links: {
github: "https://github.com/privacy-scaling-explorations/security",
website:
"https://mirror.xyz/privacy-scaling-explorations.eth/BaqGMfBhEZR1cvTJlA9E3Xu5ZhD7IthLiUK-Q75rQMM",
discord: "none",
twitter: "none",
},
tags: {
themes: [
"Anonymity/privacy",
"Education",
"Key management",
"Scaling",
"Security",
],
types: ["Legos/dev tools"],
builtWith: ["Slither", "Ecne", "Circomspect", "Echidna"],
},
},
{
id: 9,
image: "",
name: "zkEVM Community Edition",
tldr: "A zero-knowledge proof mechanism for Ethereum block verification.",
description:
"zkEVM Community Edition is a project aimed at validating Ethereum blocks using zero-knowledge proofs. It is designed to be fully compatible with Ethereum's EVM and serves two primary goals. First, it enables the creation of a layer 2 network (zkRollup) compatible with the Ethereum ecosystem, which uses zero-knowledge proofs to validate blocks, thus enhancing scalability. Second, it allows the generation of zero-knowledge proofs for blocks from the existing layer 1 Ethereum network, enabling light clients to quickly synchronize many blocks with low resource consumption while ensuring block correctness without needing trust in external parties.",
links: {
github: "https://github.com/privacy-scaling-explorations/zkevm-circuits",
website:
"https://mirror.xyz/privacy-scaling-explorations.eth/I5BzurX-T6slFaPbA4i3hVrO7U2VkBR45eO-N3CSnSg",
twitter: "none",
discord: "none",
},
tags: {
themes: ["Scaling"],
types: ["Infrastructure/protocol", "Lego sets/toolkits"],
builtWith: ["halo2 from zcash", "Rust", "geth"],
},
},
{
id: 10,
image: "bandadalogo.webp",
name: "Bandada",
tldr: "An open-source system for managing privacy-preserving groups of anonymous individuals.",
description:
"Bandada is a project designed to simplify the management of privacy-preserving Semaphore groups. It is aimed at developers who want to build privacy-based applications and integrate anonymity sets, as well as non-developers working in DAOs, governments, international institutions, non-profit organizations, and associations that want to create and manage anonymous groups. Bandada offers a plug-and-play infrastructure, reducing the time and complexity required for managing anonymity sets. It enables anonymous signaling, such as voting, messaging, login, or endorsing, in various use cases like private organizations, GitHub repository contributors, and groups of wallets holding a specific NFT.",
links: {
github: "https://github.com/privacy-scaling-explorations/bandada",
website: "https://bandada.appliedzkp.org/",
twitter: "none",
discord: "none",
},
tags: {
themes: [
"Anonymity/privacy",
"Social",
"Identity",
"Transaction privacy",
"Voting/governance",
"Reputation",
"Education",
"Scaling",
"Key management",
],
type: [
"Legos/dev tools",
"Lego sets/toolkits",
"Prototype",
"Proof of concept",
"Infrastructure/protocol",
"Plugin",
"Application",
],
builtWith: ["Semaphore", "ZK-kit"],
},
},
{
id: 11,
image: "",
name: "DSL Working Group",
tldr: "Exploration of languages for writing zk circuits",
description:
"The DSL Working Group is focused on the exploration and improvement of languages used to write zero-knowledge circuits. The group's primary goal is to enhance the state of zk circuit languages, making them easier to write and review by offering the right abstractions. They also aim to make it harder to write unsound circuits by implementing static analysis and enforcing safer patterns. Additionally, they are working to support next-generation (Incrementally Verifiable Computation or IVC) proving systems. The group is currently working on Chiquito, a high-level Domain-Specific Language (DSL) for Halo2 circuits that lowers the entry barrier to write zk circuits with a state-machine abstraction API.",
links: {
github: "https://github.com/privacy-scaling-explorations/chiquito/",
website: "none",
twitter: "none",
discord: "none",
},
tags: {
type: ["Legos/dev tools", "Proof of concept", "Developer tooling"],
themes: [],
builtWith: [],
},
},
{
id: 12,
image: "",
name: "ZKML (Zero-Knowledge Machine Learning)",
tldr: "ZKML leverages zero-knowledge proofs for privacy-preserving machine learning, enabling model and data privacy with transparent verification.",
description:
"ZKML is a solution that combines the power of zero-knowledge proofs (ZKPs) and machine learning to address the privacy concerns in traditional machine learning. It provides a platform for machine learning developers to convert their TensorFlow Keras models into ZK-compatible versions, ensuring model privacy, data privacy, and transparent verification. ZKML can be used to verify if a specific machine learning model was used to generate a particular piece of content, without revealing the input or the model used. It has potential use cases in on-chain biometric authentication, private data marketplace, proprietary ML model sharing, and AIGC NFTs.",
links: {
github: "https://github.com/socathie",
website:
"https://mirror.xyz/privacy-scaling-explorations.eth/K88lOS4XegJGzMoav9K5bLuT9Zhn3Hz2KkhB3ITq-m8",
twitter: "none",
discord: "none",
},
tags: {
themes: ["Anonymity/privacy", "Scaling"],
type: ["Proof of concept", "Infrastructure/protocol"],
builtWith: ["circom", "halo2", "nova"],
},
},
{
id: 13,
image: "",
name: "Trusted Setups",
tldr: "Aiding developers with tools for trusted setups.",
description:
"The Trusted Setups project is dedicated to simplifying the process of trusted setups, which are crucial for privacy or scaling solutions. Trusted setups involve multiple participants contributing to the generation of secrets. As long as one participant forgets their part of the secret, the final solution remains secure. The team recognizes the complexity of developing contribution programs and coordinating the participants' queue in a trusted setup. To address this, they are developing tools, including scripts, WebApps, and APIs, to streamline the contribution and coordination effort. This allows developers to focus on building their circuits and applications, enhancing efficiency and productivity in the development of zero-knowledge applications.",
links: {
github: "https://github.com/zkparty",
website: "https://docs.google.com/presentation/d/1dTKWaZDPCZFI5W",
twitter: "none",
discord: "none",
},
tags: {
themes: ["Scaling", "Education"],
type: ["Legos/dev tools", "Lego sets/toolkits"],
builtWith: [],
},
},
{
id: 14,
image: "",
name: "zk3",
tldr: "Utilizing ZK proofs in social networks",
description:
"Zk3 is a protocol that leverages Zero Knowledge Proofs (ZKPs) to allow users to prove their membership in a group without revealing their identity. This is particularly useful for social media applications built on Lens or other on-chain platforms. The protocol helps to moderate conversations and reduce bot activity while preserving user privacy. It provides developers with the tools to verify group eligibility, create ZK proofs, and use ZK proofs in Lens. ZK3 consists of a smart contract system for user interactions and network rules, and a GraphQL API for flexible interaction, enabling the development of diverse applications, including web 2.0 integrations.",
links: {
github: "http://github.com/monemetrics/semaphore-zk3",
website: "http://zk3.io/",
twitter: "http://twitter.com/zk3org",
discord: "none",
},
tags: {
themes: ["Anonymity/privacy", "Social", "Identity", "Reputation"],
type: [
"Legos/dev tools",
"Lego sets/toolkits",
"Infrastructure/protocol",
"Plugin",
],
builtWith: ["Semaphore", "Lens protocol"],
},
},
{
id: 15,
image: "tlsnlogo.webp",
name: "TLSNotary",
tldr: "A protocol for creating cryptographic proofs of authenticity for any data on the web.",
description:
"TLSNotary is useful for developers of privacy focused projects that need data provenance from secure web servers. It leverages the widely-used Transport Layer Security (TLS) protocol to securely and privately prove a transcript of communications took place with a webserver. The protocol involves splitting TLS session keys between two parties: the User and the Notary. Neither the User nor Notary are in possession of the full TLS session keys, they only hold a share of those keys. This ensures the security assumptions of TLS while enabling the User to prove the authenticity of the communication to the Notary. The Notary remains unaware of which webserver is being queried, and the Notary never has access to the unencrypted communications. All of this is achieved while maintaining full privacy.",
links: {
github: "none",
website: "none",
twitter: "none",
discord: "none",
},
tags: {
themes: [],
type: [],
builtWith: [],
},
},
{
id: 16,
image: "",
name: "EigenTrust",
tldr: "A distributed reputation system with zero-knowledge features.",
description:
"EigenTrust is a library designed to manage trust within a distributed network, incorporating zero-knowledge features. It serves as a reputation bank for the Ethereum ecosystem, providing an interoperable layer for managing reputation and trust. The protocol creates zero-knowledge proofs of reputation scores based on ratings given by network participants. This allows for the creation of a reputation system for peer-to-peer marketplaces and exchanges, reputation-weighted voting, and community gatekeeping.",
links: {
github: "https://github.com/eigen-trust/protocol",
website: "none",
twitter: "none",
discord: "none",
},
tags: {
themes: ["Reputation", "Identity"],
type: ["Infrastructure/protocol"],
builtWith: ["Ethereum Attestation Service", "Halo2", "ethers.rs"],
},
},
{
id: 17,
image: "",
name: "AnonKlub",
tldr: "A mechanism for anonymous proof of Ethereum address ownership.",
description:
"AnonKlub is a tool designed for Ethereum developers that allows for anonymous proof of Ethereum address ownership. It doesn't directly address the public observability of Ethereum transactions but provides a workaround for privacy. Users can prepare a list of Ethereum addresses, sign a message from an address they own, and use that signature to generate a zero-knowledge proof. This proof enables users to perform actions anonymously that would typically require ownership of an address from the initial list. Use cases include anonymous NFT minting and Discord verification for DAOs without disclosing the public address.",
links: {
github: "https://github.com/privacy-scaling-explorations/e2e-zk-ecdsa",
website: "https://anonklub.fly.dev/",
twitter: "none",
discord: "none",
},
tags: {
themes: [
"Transaction privacy",
"Anonymity/privacy",
"Social",
"Identity",
"Voting/governance",
],
type: ["Infrastructure/protocol", "Prototype", "Proof of concept"],
builtWith: ["Circom", "snarkjs", "halo2"],
},
},
{
id: 18,
image: "",
name: "Summa",
tldr: "Protocol enabling centralized exchanges to prove solvency without compromising private information.",
description:
"Summa allows centralized exchanges to demonstrate that their assets exceed their liabilities without revealing critical business information such as individual user balances, total number of users, and total liabilities or assets. It uses zero-knowledge proofs to ensure that exchanges can demonstrate they have sufficient assets to cover all user balances. The protocol involves building a Merkle Sum Tree of user balances, generating proofs for each user, and allowing users to verify these proofs.",
links: {
github: "https://github.com/summa-dev",
website: "none",
twitter: "none",
discord: "none",
},
tags: {
themes: ["Anonymity/privacy", "Computational Integrity"],
type: ["Infrastructure/protocol", "Application"],
builtWith: ["Halo2 PSE"],
},
},
]

View File

@@ -9,10 +9,17 @@ export const siteConfig = {
title: "Home",
href: "/",
},
{
title: "Project Library",
href: "/projects",
},
],
links: {
twitter: "https://twitter.com/privacyscaling",
github: "https://github.com/privacy-scaling-explorations",
docs: "https://ui.shadcn.com",
discord: "https://discord.com/invite/sF5CT5rzrR",
articles: "https://mirror.xyz/privacy-scaling-explorations.eth",
jobs: "https://jobs.lever.co/ethereumfoundation/?department=Ethereum%20Foundation&team=Privacy%20and%20Scaling%20Explorations",
},
}

View File

@@ -23,6 +23,8 @@
"@radix-ui/react-slot": "^1.0.2",
"class-variance-authority": "^0.4.0",
"clsx": "^1.2.1",
"framer-motion": "^10.12.17",
"gsap": "^3.12.1",
"lucide-react": "0.105.0-alpha.4",
"next": "^13.4.4",
"next-themes": "^0.2.1",

41
pnpm-lock.yaml generated
View File

@@ -10,6 +10,12 @@ dependencies:
clsx:
specifier: ^1.2.1
version: 1.2.1
framer-motion:
specifier: ^10.12.17
version: 10.12.17(react-dom@18.2.0)(react@18.2.0)
gsap:
specifier: ^3.12.1
version: 3.12.1
lucide-react:
specifier: 0.105.0-alpha.4
version: 0.105.0-alpha.4(react@18.2.0)
@@ -275,6 +281,19 @@ packages:
'@babel/helper-validator-identifier': 7.19.1
to-fast-properties: 2.0.0
/@emotion/is-prop-valid@0.8.8:
resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==}
requiresBuild: true
dependencies:
'@emotion/memoize': 0.7.4
dev: false
optional: true
/@emotion/memoize@0.7.4:
resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==}
dev: false
optional: true
/@eslint-community/eslint-utils@4.4.0(eslint@8.41.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1531,6 +1550,24 @@ packages:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
dev: true
/framer-motion@10.12.17(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-IR+aAYntsyu6ofyxqQV4QYotmOqzcuKxhqNpfc3DXJjNWOPpOeSyH0A+In3IEBu49Yx/+PNht+YMeZSdCNaYbw==}
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
peerDependenciesMeta:
react:
optional: true
react-dom:
optional: true
dependencies:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
tslib: 2.5.2
optionalDependencies:
'@emotion/is-prop-valid': 0.8.8
dev: false
/fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
dev: false
@@ -1671,6 +1708,10 @@ packages:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: true
/gsap@3.12.1:
resolution: {integrity: sha512-FXtb2YbBE9l8I9Pl5DFLpCMedaiMPztRlr0Ln0CMSnJn+pbTaeKlzgth8cLNPc7PzNwIZe+SEQiBBAWaBKJdVA==}
dev: false
/has-bigints@1.0.2:
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
dev: true

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

35
public/favicon.svg Normal file
View File

@@ -0,0 +1,35 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M150.001 296.213C230.752 296.213 296.214 230.751 296.214 150C296.214 69.249 230.752 3.78735 150.001 3.78735C69.2498 3.78735 3.78809 69.249 3.78809 150C3.78809 230.751 69.2498 296.213 150.001 296.213Z" fill="#002C00"/>
<path d="M150 300C109.931 300 72.2669 284.397 43.932 256.068C15.5971 227.739 0 190.063 0 150C0 109.937 15.6034 72.2669 43.932 43.932C72.2606 15.5971 109.931 0 150 0C190.069 0 227.733 15.6034 256.068 43.932C284.397 72.2606 300 109.931 300 150C300 190.069 284.397 227.733 256.068 256.068C227.739 284.397 190.069 300 150 300ZM150 7.57448C111.957 7.57448 76.193 22.3889 49.2909 49.2909C22.3889 76.193 7.57448 111.957 7.57448 150C7.57448 188.043 22.3889 223.807 49.2909 250.709C76.193 277.611 111.957 292.426 150 292.426C188.043 292.426 223.807 277.611 250.709 250.709C277.611 223.807 292.426 188.043 292.426 150C292.426 111.957 277.611 76.193 250.709 49.2909C223.807 22.3889 188.043 7.57448 150 7.57448Z" fill="#A3DFF0"/>
<path d="M43.0838 134.731L23.125 130.571L24.6336 123.331C25.6814 118.313 28.9447 115.826 33.2559 116.723L33.6914 116.811C37.952 117.701 39.9719 121.293 38.9304 126.311L38.3497 129.107L44.018 130.287L43.0901 134.737L43.0838 134.731ZM27.9032 126.923L34.493 128.299L35.1179 125.288C35.5535 123.199 34.512 121.678 32.53 121.267C30.4975 120.844 28.9637 121.823 28.5281 123.912L27.9032 126.923Z" fill="#A3DFF0"/>
<path d="M47.5884 115.473L28.7974 107.57L31.8777 100.242C33.8407 95.5711 37.1609 93.5387 41.3205 95.2871L41.7308 95.4575C44.4639 96.6063 45.739 98.6451 45.7263 101.252L54.3865 99.3079L52.3477 104.162L44.6659 105.708L43.3782 108.77L49.3558 111.282L47.5947 115.467L47.5884 115.473ZM34.1058 104.875L40.0833 107.387L41.5414 103.916C42.3052 102.104 41.6361 100.406 39.8182 99.6487C38.0319 98.8976 36.3277 99.5919 35.5639 101.403L34.1058 104.875Z" fill="#A3DFF0"/>
<path d="M56.8256 95.7795L39.5747 85.2257L41.948 81.3501L59.1989 91.9039L56.8256 95.7795Z" fill="#A3DFF0"/>
<path d="M65.3085 83.2752L45.8862 74.9433L48.9034 71.3643L64.6015 78.4023L65.2075 77.6827L55.3859 63.6762L58.3147 60.2046L70.0804 77.6259L65.3148 83.2815L65.3085 83.2752Z" fill="#A3DFF0"/>
<path d="M74.3905 72.513L66.9233 52.5668L72.6484 47.9653L90.7135 59.3902L87.0399 62.3379L82.6215 59.4533L76.038 64.7491L77.9253 69.6662L74.3842 72.513H74.3905ZM79.295 57.3009L72.4906 52.8572L71.689 53.501L74.6114 61.0692L79.295 57.3009Z" fill="#A3DFF0"/>
<path d="M87.9499 49.5687L87.6722 49.0259C85.3998 44.5569 85.8417 38.3332 92.0843 35.1583C97.0014 32.6587 101.767 33.9022 104.405 37.9987L100.328 40.0691C98.8887 38.0997 96.446 37.6894 94.0032 38.9329C90.7903 40.5677 90.1718 43.8058 91.9139 47.2396C93.6371 50.6228 96.6543 52.0367 99.9618 50.3577C102.455 49.089 103.68 46.8482 102.96 44.5127L107.012 42.455C108.59 46.6589 107.05 51.5128 101.887 54.1387C95.3666 57.4525 90.014 53.6526 87.9436 49.575L87.9499 49.5687Z" fill="#A3DFF0"/>
<path d="M119.086 46.716L117.029 39.3246L116.069 39.5897L107.018 29.0864L111.499 27.8366L117.931 35.5373L118.783 35.2975L119.907 25.4948L124.149 24.3145L122.286 37.8602L121.327 38.1253L123.385 45.5167L119.086 46.716Z" fill="#A3DFF0"/>
<path d="M145.057 39.7534L144.918 34.6028L140.019 34.7353L139.925 31.1374L144.823 31.0049L144.684 25.829L148.617 25.7217L148.755 30.8976L153.685 30.765L153.78 34.3629L148.85 34.4955L148.989 39.6461L145.057 39.7534Z" fill="#A3DFF0"/>
<path d="M166.624 36.9257L170.922 37.8788C170.588 39.3937 171.452 40.978 174.242 41.5966C176.704 42.1395 178.263 41.382 178.598 39.8671C178.882 38.5984 178.017 37.639 175.656 36.8878L174.198 36.4207C170.322 35.2214 168.296 32.4441 169.079 28.9283C169.919 25.1411 173.308 23.4242 177.714 24.4025C182.366 25.4314 184.581 28.619 183.723 32.4883L179.393 31.5289C179.709 30.096 178.938 28.5874 176.881 28.133C174.905 27.6974 173.687 28.5874 173.396 29.8877C173.144 31.0239 173.668 32.1033 175.454 32.6398L176.938 33.1132C181.154 34.445 183.729 37.1719 182.915 40.8265C182.069 44.639 178.408 46.438 173.403 45.3271C168.019 44.1341 165.759 40.7634 166.611 36.9257H166.624Z" fill="#A3DFF0"/>
<path d="M188.892 38.5161L189.138 37.9606C191.183 33.3844 196.296 29.8117 202.697 32.6711C207.727 34.9182 209.76 39.4061 208.239 44.0328L204.066 42.1708C204.698 39.81 203.473 37.6576 200.967 36.5404C197.679 35.0697 194.769 36.6225 193.203 40.1383C191.657 43.6036 192.452 46.8417 195.842 48.3566C198.398 49.4991 200.904 49.0383 202.267 47.0121L206.414 48.8679C204.142 52.7372 199.395 54.5929 194.112 52.2322C187.434 49.2529 187.024 42.6947 188.892 38.5224V38.5161Z" fill="#A3DFF0"/>
<path d="M205.223 56.8526L222.568 44.4873L228.489 48.83L222.114 69.2369L218.314 66.4533L219.961 61.4415L213.144 56.4424L208.884 59.5353L205.216 56.8463L205.223 56.8526ZM221.186 57.6669L223.723 49.9409L222.896 49.335L216.338 54.1132L221.186 57.6669Z" fill="#A3DFF0"/>
<path d="M224.794 72.2293L239.533 58.3806L242.645 61.6945L230.816 72.8163L236.245 78.5919L233.335 81.325L224.794 72.2419V72.2293Z" fill="#A3DFF0"/>
<path d="M236.07 85.0992L252.456 73.2515L255.12 76.9314L238.734 88.7791L236.07 85.0992Z" fill="#A3DFF0"/>
<path d="M242.388 93.6205L260.535 84.689L263.824 91.3734L252.349 105.512L252.519 105.86L267.359 98.5566L269.24 102.388L251.093 111.32L247.779 104.585L259.254 90.4456L259.084 90.0984L244.244 97.4015L242.382 93.6205H242.388Z" fill="#A3DFF0"/>
<path d="M262.347 113.466L262.94 113.327C267.907 112.184 273.79 114.413 275.299 120.977C276.523 126.298 274.188 130.729 269.719 132.206L268.703 127.782C270.779 126.936 271.783 124.6 271.165 121.93C270.369 118.478 267.314 117.045 263.641 117.891C259.778 118.781 257.739 121.52 258.604 125.276C259.064 127.277 260.169 128.754 261.576 129.423L263.224 129.044L262.037 123.887L265.225 123.155L267.718 134.005L264.531 134.737L264.158 133.115L260.813 133.885C257.701 132.838 255.485 130.111 254.583 126.191C252.961 119.115 257.461 114.589 262.347 113.466Z" fill="#A3DFF0"/>
<path d="M205.723 154.185C205.723 156.129 204.347 157.751 202.51 158.124C202.251 158.18 201.98 158.206 201.702 158.206H188.289C186.067 158.206 184.268 160.005 184.268 162.227V175.64C184.268 177.028 183.567 178.253 182.494 178.972C182.065 179.263 181.579 179.471 181.055 179.578C180.796 179.629 180.525 179.66 180.247 179.66H166.834C164.612 179.66 162.813 181.459 162.813 183.681V197.094C162.813 199.316 161.014 201.115 158.792 201.115H145.379C143.157 201.115 141.359 199.316 141.359 197.094V183.681C141.359 181.459 143.157 179.66 145.379 179.66H158.792C161.014 179.66 162.813 177.861 162.813 175.64V162.227C162.813 160.005 164.612 158.206 166.834 158.206H180.247C182.469 158.206 184.268 156.407 184.268 154.185V136.751C184.268 124.928 174.705 115.34 162.889 115.296C151.079 115.34 141.51 124.928 141.51 136.751V154.185C141.51 156.407 139.711 158.206 137.489 158.206H124.076C121.854 158.206 120.055 160.005 120.055 162.227V179.66V197.094C120.055 199.316 118.256 201.115 116.035 201.115H102.621C100.4 201.115 98.6006 199.316 98.6006 197.094V162.227C98.6006 160.005 100.4 158.206 102.621 158.206H116.035C118.256 158.206 120.055 156.407 120.055 154.185V136.675C120.055 113.018 139.231 93.8416 162.889 93.8416C186.547 93.8416 205.723 113.018 205.723 136.675V154.185Z" fill="#A3DFF0"/>
<path d="M38.3091 213.67L55.3895 202.832L62.0993 213.405L58.918 215.425L54.5816 208.595L50.9585 210.893L55.055 217.35L51.8737 219.37L47.7772 212.913L43.87 215.393L48.3074 222.387L45.1261 224.407L38.3154 213.67H38.3091Z" fill="#A3DFF0"/>
<path d="M48.6171 229.406L61.0077 227.272L63.9365 216.188L67.3009 219.868L65.2936 227.033L65.7229 227.506L73.0007 226.105L76.2703 229.684L64.7887 231.659L61.7715 243.804L58.3882 240.105L60.5596 231.887L60.1114 231.394L51.8805 232.985L48.6108 229.406H48.6171Z" fill="#A3DFF0"/>
<path d="M67.1299 248.33L79.4132 232.063L85.315 236.52C89.4052 239.606 90.2636 243.621 87.6062 247.137L87.3411 247.49C84.7216 250.962 80.6062 251.258 76.5222 248.172L74.2436 246.455L70.753 251.075L67.1299 248.336V248.33ZM80.6693 237.94L76.6106 243.312L79.066 245.161C80.7703 246.449 82.5881 246.152 83.8064 244.542C85.0562 242.882 84.8289 241.077 83.1247 239.789L80.6693 237.94Z" fill="#A3DFF0"/>
<path d="M85.7578 261.339L95.1312 243.419L99.1583 245.527L91.6343 259.912L98.6534 263.586L96.8039 267.121L85.7578 261.345V261.339Z" fill="#A3DFF0"/>
<path d="M105.11 260.279L105.287 259.698C106.745 254.901 111.807 250.848 118.618 252.925C125.403 254.989 127.398 261.188 125.934 265.985L125.757 266.565C124.431 270.914 119.388 275.491 112.394 273.357C105.394 271.224 103.785 264.628 105.11 260.279ZM121.439 264.962C122.538 261.358 121.042 258.095 117.381 256.977C113.726 255.866 110.69 257.747 109.592 261.352C108.557 264.748 109.97 268.188 113.631 269.299C117.286 270.409 120.411 268.352 121.439 264.956V264.962Z" fill="#A3DFF0"/>
<path d="M131.065 277.258L132.808 256.939L140.729 257.621C145.779 258.056 148.733 260.588 148.348 265.088L148.31 265.53C148.058 268.484 146.511 270.327 144.024 271.11L148.537 278.754L143.292 278.306L139.46 271.47L136.147 271.186L135.591 277.643L131.065 277.251V277.258ZM137.005 261.168L136.45 267.626L140.205 267.947C142.162 268.118 143.57 266.956 143.74 265C143.904 263.068 142.718 261.661 140.761 261.49L137.005 261.168Z" fill="#A3DFF0"/>
<path d="M153.932 278.767L158.332 257.924L165.628 257.11L174.749 276.444L170.066 276.968L167.888 272.164L159.487 273.098L158.445 278.262L153.932 278.76V278.767ZM166.234 268.56L162.876 261.156L161.86 261.27L160.263 269.223L166.241 268.56H166.234Z" fill="#A3DFF0"/>
<path d="M183.611 273.982L179.086 258.36L173.632 259.938L172.527 256.132L187.828 251.7L188.932 255.507L183.454 257.091L187.979 272.713L183.618 273.976L183.611 273.982Z" fill="#A3DFF0"/>
<path d="M199.696 268.453L191.535 249.946L195.694 248.109L203.856 266.616L199.696 268.453Z" fill="#A3DFF0"/>
<path d="M205.585 255.286L205.251 254.774C202.511 250.57 202.657 244.094 208.628 240.212C214.567 236.343 220.602 238.792 223.335 242.996L223.669 243.507C226.15 247.313 226.415 254.118 220.286 258.107C214.157 262.096 208.066 259.092 205.585 255.286ZM219.661 245.786C217.604 242.63 214.145 241.677 210.938 243.766C207.738 245.855 207.227 249.39 209.284 252.546C211.222 255.519 214.763 256.649 217.97 254.56C221.17 252.47 221.599 248.759 219.661 245.786Z" fill="#A3DFF0"/>
<path d="M235.532 246.278L220.982 232.227L226.158 226.868L243.346 232.878L243.618 232.6L231.719 221.112L234.686 218.044L249.235 232.089L244.021 237.492L226.834 231.483L226.562 231.76L238.461 243.248L235.538 246.278H235.532Z" fill="#A3DFF0"/>
<path d="M248.728 222.507L251.089 218.789C252.396 219.622 254.182 219.345 255.716 216.933C257.067 214.806 256.884 213.083 255.571 212.25C254.472 211.549 253.273 212.042 251.764 214.005L250.83 215.217C248.381 218.455 245.08 219.408 242.044 217.476C238.768 215.4 238.307 211.625 240.731 207.812C243.287 203.792 247.037 202.794 250.382 204.915L248.009 208.658C246.772 207.869 245.093 208.084 243.963 209.864C242.877 211.568 243.3 213.02 244.423 213.733C245.408 214.358 246.601 214.232 247.712 212.736L248.659 211.499C251.348 207.989 254.788 206.5 257.944 208.5C261.239 210.596 261.687 214.648 258.935 218.979C255.981 223.631 252.042 224.609 248.722 222.501L248.728 222.507Z" fill="#A3DFF0"/>
<path d="M35.6998 167.304L29.7627 168.516C28.7825 168.717 28.1501 169.674 28.3502 170.654L29.5624 176.591C29.7626 177.571 30.7195 178.204 31.6998 178.003L37.6369 176.791C38.6172 176.591 39.2496 175.634 39.0494 174.654L37.8372 168.717C37.637 167.737 36.6801 167.104 35.6998 167.304Z" fill="#A3DFF0"/>
<path d="M261.366 168.719L260.154 174.656C259.954 175.636 260.586 176.593 261.566 176.793L267.504 178.005C268.484 178.205 269.441 177.573 269.641 176.593L270.853 170.656C271.053 169.675 270.421 168.718 269.441 168.518L263.504 167.306C262.523 167.106 261.566 167.738 261.366 168.719Z" fill="#A3DFF0"/>
<path d="M149.999 244.327C97.9625 244.327 55.6274 201.992 55.6274 149.956C55.6274 97.919 97.9625 55.584 149.999 55.584C202.036 55.584 244.371 97.919 244.371 149.956C244.371 201.992 202.036 244.327 149.999 244.327ZM149.999 59.3712C100.052 59.3712 59.4147 100.008 59.4147 149.956C59.4147 199.903 100.052 240.54 149.999 240.54C199.947 240.54 240.584 199.903 240.584 149.956C240.584 100.008 199.947 59.3712 149.999 59.3712Z" fill="#A3DFF0"/>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

BIN
public/icons/archstar.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 KiB

View File

@@ -0,0 +1,10 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="arrow-right-up-line" clip-path="url(#clip0_3593_2234)">
<path id="Vector" d="M16.0034 9.414L7.39642 18.021L5.98242 16.607L14.5884 8H7.00342V6H18.0034V17H16.0034V9.414Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_3593_2234">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 402 B

View File

@@ -0,0 +1,10 @@
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="arrow-right-line" clip-path="url(#clip0_3593_54)">
<path id="Vector" d="M16.172 11.1105L10.808 5.74652L12.222 4.33252L20 12.1105L12.222 19.8885L10.808 18.4745L16.172 13.1105H4V11.1105H16.172Z" fill="#171C1B"/>
</g>
<defs>
<clipPath id="clip0_3593_54">
<rect width="24" height="24" fill="white" transform="translate(0 0.110596)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 460 B

View File

@@ -0,0 +1,10 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="close-fill" clip-path="url(#clip0_3593_2219)">
<path id="Vector" d="M12.0007 10.586L16.9507 5.63599L18.3647 7.04999L13.4147 12L18.3647 16.95L16.9507 18.364L12.0007 13.414L7.05072 18.364L5.63672 16.95L10.5867 12L5.63672 7.04999L7.05072 5.63599L12.0007 10.586Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_3593_2219">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 493 B

View File

@@ -0,0 +1,10 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="menu-5-line" clip-path="url(#clip0_3593_17537)">
<path id="Vector" d="M18 18V20H6V18H18ZM21 11V13H3V11H21ZM18 4V6H6V4H18Z" fill="#171C1B"/>
</g>
<defs>
<clipPath id="clip0_3593_17537">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 359 B

View File

@@ -0,0 +1,5 @@
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="PSE icons">
<path id="3 blocks" d="M10.6674 1.23131V4.56599C10.6674 5.11853 10.2201 5.56532 9.66698 5.56532H6.33301C5.77988 5.56532 5.33261 6.0121 5.33261 6.56464V9.89501C5.33261 10.4476 4.88534 10.8943 4.33221 10.8943H1.0004C0.447265 10.8943 0 11.3411 0 11.8915V15.2219C0 15.7744 0.447265 16.2212 1.0004 16.2212H4.33437C4.88751 16.2212 5.33477 15.7744 5.33477 15.2219V11.8915C5.33477 11.339 5.78204 10.8922 6.33518 10.8922H9.66914C9.73828 10.8922 9.80526 10.8857 9.87008 10.8727C9.99972 10.8468 10.1207 10.795 10.2266 10.7217C10.4924 10.5425 10.6674 10.2382 10.6674 9.89285V6.56248C10.6674 6.00994 11.1146 5.56316 11.6678 5.56316H15.0017C15.0709 5.56316 15.1379 5.55668 15.2027 5.54373C15.6586 5.45092 16 5.04731 16 4.56599V1.22052C16.0022 0.665816 15.5527 0.221191 14.9996 0.221191L11.6656 0.234142C11.1146 0.234142 10.6695 0.683083 10.6695 1.23347L10.6674 1.23131Z" fill="#E3533A"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1001 B

View File

@@ -0,0 +1,5 @@
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="PSE icons">
<path id="2 blocks" d="M8.3 1.21998V4.57012C8.3 5.12236 7.85565 5.56891 7.30612 5.56891H3.99388C3.44435 5.56891 3 6.01545 3 6.56769V15.2224C3 15.7747 3.44435 16.2212 3.99388 16.2212H7.30612C7.85565 16.2212 8.3 15.7747 8.3 15.2224V10.895V6.56769C8.3 6.01545 8.74435 5.56891 9.29388 5.56891H12.6061C13.1556 5.56891 13.6 5.12236 13.6 4.57012V1.22645C13.5979 0.676362 13.1556 0.22982 12.6083 0.22982L9.29388 0.221191C8.74435 0.221191 8.29785 0.667733 8.29785 1.21998H8.3Z" fill="#E3533A"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 613 B

View File

@@ -0,0 +1,5 @@
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="PSE icons">
<path id="arch" d="M12.7435 14.4981C12.3279 14.4981 11.9919 14.162 11.9919 13.7464V10.49C11.9919 8.28216 10.2062 6.48995 7.99838 6.48346C5.79221 6.49158 4.00487 8.28216 4.00487 10.49V13.7464C4.00487 14.162 3.66883 14.4981 3.25325 14.4981H0.751623C0.336039 14.4981 0 14.162 0 13.7464V10.4753C0 6.05651 3.58117 2.47534 8 2.47534C12.4188 2.47534 16 6.05651 16 10.4753V13.7464C16 14.1101 15.7419 14.412 15.401 14.4818C15.3523 14.4916 15.3019 14.4964 15.25 14.4964H12.7451L12.7435 14.4981Z" fill="#E3533A"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 630 B

View File

@@ -0,0 +1,9 @@
<svg width="95" height="42" viewBox="0 0 95 42" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Logo">
<g id="Union">
<path d="M48.149 41.6292C45.0775 41.6292 42.3663 41.0793 40.0153 39.9797C37.6643 38.88 35.8252 37.3063 34.498 35.2587C33.1709 33.211 32.5073 30.7463 32.5073 27.8644V27.5815C32.5073 26.8582 33.0937 26.2718 33.817 26.2718H38.5918C39.3152 26.2718 39.9016 26.8582 39.9016 27.5815V27.8644C39.9016 30.2533 40.641 32.0545 42.1198 33.2679C43.5987 34.4434 45.6084 35.0312 48.149 35.0312C50.7275 35.0312 52.6425 34.5193 53.8938 33.4954C55.1831 32.4716 55.8277 31.1634 55.8277 29.5708C55.8277 28.4711 55.5054 27.58 54.8607 26.8975C54.254 26.2149 53.344 25.6651 52.1305 25.248C50.955 24.7929 49.5141 24.3758 47.8077 23.9966L46.4995 23.7122C43.7693 23.1055 41.4183 22.3471 39.4465 21.4371C37.5126 20.4891 36.0148 19.2567 34.9531 17.7399C33.9292 16.2232 33.4173 14.2514 33.4173 11.8245C33.4173 9.39768 33.9861 7.33108 35.1237 5.6247C36.2992 3.88041 37.9297 2.55324 40.0153 1.64317C42.1388 0.695185 44.6225 0.221191 47.4665 0.221191C50.3104 0.221191 52.8321 0.714145 55.0314 1.70005C57.2686 2.64803 59.0129 4.08897 60.2642 6.02286C61.5535 7.91883 62.1981 10.3077 62.1981 13.1896V13.5863C62.1981 14.3096 61.6117 14.896 60.8884 14.896H56.1136C55.3902 14.896 54.8039 14.3096 54.8039 13.5863V13.1896C54.8039 11.6728 54.5005 10.4594 53.8938 9.54936C53.325 8.60137 52.4908 7.91883 51.3911 7.50171C50.2915 7.04668 48.9832 6.81916 47.4665 6.81916C45.1913 6.81916 43.5039 7.25524 42.4042 8.12738C41.3425 8.96161 40.8116 10.1181 40.8116 11.597C40.8116 12.5829 41.0581 13.4171 41.551 14.0997C42.0819 14.7822 42.8593 15.351 43.8831 15.8061C44.9069 16.2611 46.2151 16.6592 47.8077 17.0005L49.116 17.2849C51.9599 17.8916 54.4247 18.669 56.5102 19.617C58.6337 20.5649 60.2832 21.8163 61.4587 23.371C62.6342 24.9257 63.222 26.9164 63.222 29.3433C63.222 31.7701 62.5963 33.9126 61.345 35.7706C60.1315 37.5907 58.3872 39.0317 56.1121 40.0934C53.8748 41.1172 51.2205 41.6292 48.149 41.6292Z" fill="#030C0C"/>
<path d="M70.1312 7.83907C69.4078 7.84049 68.8214 8.42686 68.8214 9.1502V39.5231C68.8214 40.2465 69.4078 40.8328 70.1312 40.8328H93.4486C94.1719 40.8328 94.7583 40.2465 94.7583 39.5231V35.3171C94.7583 34.5937 94.1719 34.0074 93.4486 34.0074H76.3295V24.1673H91.5147C92.238 24.1673 92.8244 23.5809 92.8244 22.8575V18.6515C92.8244 17.9282 92.238 17.3418 91.5147 17.3418H76.3295V8.91088C76.4043 8.36247 76.8553 7.92684 77.4301 7.84299H93.1073C93.8306 7.84299 94.417 7.2566 94.417 6.53325V2.32723C94.417 1.60389 93.8306 1.0175 93.1073 1.0175H77.6348C76.9123 1.0175 76.3262 1.60266 76.3251 2.32522L76.3186 6.58457C76.3186 7.27229 75.7311 7.82838 75.0047 7.82838C73.3775 7.82838 71.7555 7.83589 70.1312 7.83907Z" fill="#030C0C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.5065 25.1068C7.41457 25.7602 6.82464 26.2632 6.10896 26.2632H1.40999C1.35689 26.2632 1.30449 26.2659 1.25292 26.2713C0.555933 26.3011 0 26.8755 0 27.5798V39.5231C0 40.2465 0.586388 40.8328 1.30973 40.8328H6.1983C6.92165 40.8328 7.50804 40.2465 7.50804 39.5231V39.3314C7.51524 39.2766 7.51895 39.2208 7.51895 39.1642V27.5979C7.51895 26.9161 8.12192 26.2718 8.81777 26.2718H16.3812C18.808 26.2718 20.9694 25.7789 22.8654 24.7929C24.7993 23.7691 26.316 22.3471 27.4157 20.527C28.5533 18.669 29.1221 16.5076 29.1221 14.0428V13.2465C29.1221 10.7438 28.5722 8.58242 27.4726 6.76228C26.4108 4.94216 24.913 3.53914 22.9791 2.55323C21.0832 1.52941 18.8839 1.0175 16.3812 1.0175H1.30986C0.586468 1.0175 5.88819e-05 1.60396 0.000131512 2.32736L0.00171879 18.1367C0.00179141 18.86 0.588158 19.4463 1.31145 19.4463C2.13563 19.4463 2.95964 19.4476 3.78392 19.4489H3.78549C4.61082 19.4501 5.43641 19.4514 6.26269 19.4514C6.95041 19.4514 7.5065 20.0388 7.5065 20.7653V22.2312H7.50728L7.5065 25.1068ZM7.50804 7.84299V18.2036C7.53872 18.8604 8.02454 19.3893 8.63992 19.4463H15.6417C17.424 19.4463 18.8649 18.9534 19.9646 17.9675C21.0642 16.9816 21.614 15.6354 21.614 13.929V13.3603C21.614 11.6539 21.0642 10.3077 19.9646 9.32184C18.8649 8.33594 17.424 7.84299 15.6417 7.84299H7.50804Z" fill="#030C0C"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1,5 @@
<svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Variations=logo-monogram">
<path id="Vector" d="M48.3357 27.0002C48.3357 27.8713 47.7121 28.5947 46.8885 28.7619C46.7709 28.7852 46.6493 28.7969 46.5238 28.7969H40.4725C39.4686 28.7969 38.6568 29.6019 38.6568 30.5974V36.5979C38.6568 37.2201 38.3391 37.7646 37.8567 38.0912C37.6646 38.2196 37.4449 38.3129 37.2096 38.3634C37.092 38.3868 36.9704 38.3984 36.8449 38.3984H30.7936C29.7897 38.3984 28.9779 39.2034 28.9779 40.199V46.1995C28.9779 47.195 28.1661 48 27.1621 48H21.1108C20.1069 48 19.2951 47.195 19.2951 46.1995V40.199C19.2951 39.2034 20.1069 38.3984 21.1108 38.3984H27.1621C28.1661 38.3984 28.9779 37.5935 28.9779 36.5979V30.5974C28.9779 29.6019 29.7897 28.7969 30.7936 28.7969H36.8449C37.8489 28.7969 38.6607 27.9919 38.6607 26.9964V19.1953C38.6607 13.9065 34.3468 9.61322 29.0132 9.59767C23.6835 9.61711 19.3656 13.9065 19.3656 19.1953V26.9964C19.3656 27.9919 18.5538 28.7969 17.5499 28.7969H11.4986C10.4946 28.7969 9.68282 29.6019 9.68282 30.5974V46.1995C9.68282 47.195 8.87102 48 7.86705 48H1.81577C0.811804 48 0 47.195 0 46.1995V30.5974C0 29.6019 0.811804 28.7969 1.81577 28.7969H7.86705C8.87102 28.7969 9.68282 27.9919 9.68282 26.9964V19.1603C9.68282 8.57879 18.3342 0 29.0092 0C39.6843 0 48.3357 8.57879 48.3357 19.1642V27.0002Z" fill="#171C1B"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,10 @@
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="github-fill" clip-path="url(#clip0_3593_4160)">
<path id="Vector" d="M12.5205 2C6.99551 2 2.52051 6.475 2.52051 12C2.51938 14.0993 3.17932 16.1456 4.40672 17.8487C5.63413 19.5517 7.36665 20.8251 9.35851 21.488C9.85851 21.575 10.0455 21.275 10.0455 21.012C10.0455 20.775 10.0325 19.988 10.0325 19.15C7.52051 19.613 6.87051 18.538 6.67051 17.975C6.55751 17.687 6.07051 16.8 5.64551 16.562C5.29551 16.375 4.79551 15.912 5.63251 15.9C6.42051 15.887 6.98251 16.625 7.17051 16.925C8.07051 18.437 9.50851 18.012 10.0825 17.75C10.1705 17.1 10.4325 16.663 10.7205 16.413C8.49551 16.163 6.17051 15.3 6.17051 11.475C6.17051 10.387 6.55751 9.488 7.19551 8.787C7.09551 8.537 6.74551 7.512 7.29551 6.137C7.29551 6.137 8.13251 5.875 10.0455 7.163C10.8596 6.93706 11.7007 6.82334 12.5455 6.825C13.3955 6.825 14.2455 6.937 15.0455 7.162C16.9575 5.862 17.7955 6.138 17.7955 6.138C18.3455 7.513 17.9955 8.538 17.8955 8.788C18.5325 9.488 18.9205 10.375 18.9205 11.475C18.9205 15.313 16.5835 16.163 14.3585 16.413C14.7205 16.725 15.0335 17.325 15.0335 18.263C15.0335 19.6 15.0205 20.675 15.0205 21.013C15.0205 21.275 15.2085 21.587 15.7085 21.487C17.6935 20.8168 19.4184 19.541 20.6404 17.8392C21.8624 16.1373 22.5199 14.0951 22.5205 12C22.5205 6.475 18.0455 2 12.5205 2Z" fill="#4A5754"/>
</g>
<defs>
<clipPath id="clip0_3593_4160">
<rect width="24" height="24" fill="white" transform="translate(0.520508)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,10 @@
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="global-line" clip-path="url(#clip0_3593_4165)">
<path id="Vector" d="M12.5205 22C6.99751 22 2.52051 17.523 2.52051 12C2.52051 6.477 6.99751 2 12.5205 2C18.0435 2 22.5205 6.477 22.5205 12C22.5205 17.523 18.0435 22 12.5205 22ZM10.2305 19.667C9.24392 17.5743 8.67238 15.3102 8.54751 13H4.58251C4.77709 14.5389 5.41443 15.9882 6.41708 17.1717C7.41972 18.3552 8.74452 19.2221 10.2305 19.667V19.667ZM10.5505 13C10.7015 15.439 11.3985 17.73 12.5205 19.752C13.6728 17.6766 14.346 15.3695 14.4905 13H10.5505V13ZM20.4585 13H16.4935C16.3686 15.3102 15.7971 17.5743 14.8105 19.667C16.2965 19.2221 17.6213 18.3552 18.6239 17.1717C19.6266 15.9882 20.2639 14.5389 20.4585 13V13ZM4.58251 11H8.54751C8.67238 8.68979 9.24392 6.42569 10.2305 4.333C8.74452 4.77788 7.41972 5.64475 6.41708 6.8283C5.41443 8.01184 4.77709 9.4611 4.58251 11V11ZM10.5515 11H14.4895C14.3453 8.6306 13.6725 6.32353 12.5205 4.248C11.3682 6.32345 10.6951 8.63052 10.5505 11H10.5515ZM14.8105 4.333C15.7971 6.42569 16.3686 8.68979 16.4935 11H20.4585C20.2639 9.4611 19.6266 8.01184 18.6239 6.8283C17.6213 5.64475 16.2965 4.77788 14.8105 4.333V4.333Z" fill="#4A5754"/>
</g>
<defs>
<clipPath id="clip0_3593_4165">
<rect width="24" height="24" fill="white" transform="translate(0.520508)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,10 @@
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="twitter-fill" clip-path="url(#clip0_3593_4170)">
<path id="Vector" d="M22.6828 5.65593C21.9194 5.99362 21.1098 6.2154 20.2808 6.31393C21.1546 5.79136 21.8085 4.96894 22.1208 3.99993C21.3008 4.48793 20.4018 4.82993 19.4648 5.01493C18.8354 4.34151 18.0012 3.89489 17.0918 3.74451C16.1824 3.59413 15.2487 3.74842 14.4361 4.18338C13.6234 4.61834 12.9772 5.30961 12.5979 6.14972C12.2186 6.98983 12.1276 7.93171 12.3388 8.82893C10.6759 8.74558 9.04914 8.31345 7.56409 7.56059C6.07905 6.80773 4.76893 5.75097 3.7188 4.45893C3.34709 5.09738 3.15176 5.82315 3.1528 6.56193C3.1528 8.01193 3.8908 9.29293 5.0128 10.0429C4.34881 10.022 3.69944 9.84271 3.1188 9.51993V9.57193C3.11901 10.5376 3.45317 11.4735 4.06465 12.221C4.67613 12.9684 5.52729 13.4814 6.4738 13.6729C5.85742 13.84 5.21111 13.8646 4.5838 13.7449C4.85067 14.5762 5.37081 15.3031 6.0714 15.824C6.77198 16.3449 7.61793 16.6337 8.4908 16.6499C7.62329 17.3313 6.62998 17.8349 5.56769 18.1321C4.50539 18.4293 3.39493 18.5142 2.2998 18.3819C4.2115 19.6114 6.4369 20.264 8.7098 20.2619C16.4028 20.2619 20.6098 13.8889 20.6098 8.36193C20.6098 8.18193 20.6048 7.99993 20.5968 7.82193C21.4157 7.23009 22.1224 6.49695 22.6838 5.65693L22.6828 5.65593Z" fill="#4A5754"/>
</g>
<defs>
<clipPath id="clip0_3593_4170">
<rect width="24" height="24" fill="white" transform="translate(0.520508)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,10 @@
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="youtube-fill" clip-path="url(#clip0_3593_4175)">
<path id="Vector" d="M22.0635 6.498C22.5205 8.28 22.5205 12 22.5205 12C22.5205 12 22.5205 15.72 22.0635 17.502C21.8095 18.487 21.0665 19.262 20.1255 19.524C18.4165 20 12.5205 20 12.5205 20C12.5205 20 6.62751 20 4.91551 19.524C3.97051 19.258 3.22851 18.484 2.97751 17.502C2.52051 15.72 2.52051 12 2.52051 12C2.52051 12 2.52051 8.28 2.97751 6.498C3.23151 5.513 3.97451 4.738 4.91551 4.476C6.62751 4 12.5205 4 12.5205 4C12.5205 4 18.4165 4 20.1255 4.476C21.0705 4.742 21.8125 5.516 22.0635 6.498ZM10.5205 15.5L16.5205 12L10.5205 8.5V15.5Z" fill="#4A5754"/>
</g>
<defs>
<clipPath id="clip0_3593_4175">
<rect width="24" height="24" fill="white" transform="translate(0.520508)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 853 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="31" fill="none"><g opacity=".9"><path fill="url(#a)" d="M13 .4v29.3H7V6.3h-.2L0 10.5V5L7.2.4H13Z"/><path fill="url(#b)" d="M28.8 30.1c-2.2 0-4-.3-5.7-1-1.7-.8-3-1.8-4-3.1a7.7 7.7 0 0 1-1.4-4.6h6.2c0 .8.3 1.4.7 2 .4.5 1 .9 1.7 1.2.7.3 1.6.4 2.5.4 1 0 1.7-.2 2.5-.5.7-.3 1.3-.8 1.7-1.4.4-.6.6-1.2.6-2s-.2-1.5-.7-2.1c-.4-.6-1-1-1.8-1.4-.8-.4-1.8-.5-2.9-.5h-2.7v-4.6h2.7a6 6 0 0 0 2.5-.5 4 4 0 0 0 1.7-1.3c.4-.6.6-1.3.6-2a3.5 3.5 0 0 0-2-3.3 5.6 5.6 0 0 0-4.5 0 4 4 0 0 0-1.7 1.2c-.4.6-.6 1.2-.6 2h-6c0-1.7.6-3.2 1.5-4.5 1-1.3 2.2-2.3 3.8-3C25 .4 26.8 0 28.8 0s3.8.4 5.3 1.1c1.5.7 2.7 1.7 3.6 3a7.2 7.2 0 0 1 1.2 4.2c0 1.6-.5 3-1.5 4a7 7 0 0 1-4 2.2v.2c2.2.3 3.8 1 5 2.2a6.4 6.4 0 0 1 1.6 4.6c0 1.7-.5 3.1-1.4 4.4a9.7 9.7 0 0 1-4 3.1c-1.7.8-3.7 1.1-5.8 1.1Z"/></g><defs><linearGradient id="a" x1="20" x2="20" y1="0" y2="30.1" gradientUnits="userSpaceOnUse"><stop/><stop offset="1" stop-color="#3D3D3D"/></linearGradient><linearGradient id="b" x1="20" x2="20" y1="0" y2="30.1" gradientUnits="userSpaceOnUse"><stop/><stop offset="1" stop-color="#3D3D3D"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg>

Before

Width:  |  Height:  |  Size: 629 B

View File

@@ -74,11 +74,22 @@
* {
@apply border-border;
}
html{
@apply font-sans;
}
body {
@apply bg-background text-foreground;
@apply bg-background text-foreground font-sans;
font-feature-settings: "rlig" 1, "calt" 1;
}
h1,h2,h3,h4,h5{
@apply font-display;
h1,
h2,
h3,
h4,
h5, h6 {
@apply font-display font-bold;
}
#privacy, #scaling, #explorations{
@apply fill-gray-900;
}
}

View File

@@ -13,7 +13,17 @@ module.exports = {
},
},
extend: {
backgroundImage: {
"main-gradient":
"radial-gradient(114.29% 42.52% at 103.66% 58.94%, #D0F8F1 0%, #D1F3FF 18.23%, #ECF8FF 51.28%, #E1FFFA 80.21%, #D0F2FF 93.23%)",
"second-gradient":
"radial-gradient(56.07% 115.65% at 93.66% 158.94%, #D0F8F1 0%, #D1F3FF 18.23%, #ECF8FF 51.28%, #E1FFFA 80.21%, #D0F2FF 93.23%)",
},
colors: {
corduroy: "#4A5754",
orange: "#E1523A",
orangeDark: "#E3533A",
anakiwa: "#F2FAFD",
border: "hsl(var(--border))",
input: "hsl(var(--input))",
ring: "hsl(var(--ring))",

View File

@@ -1,6 +1,6 @@
export interface NavItem {
title: string
href?: string
href: string
disabled?: boolean
external?: boolean
}