Merge pull request #62 from pablohashescobar/feat/plane.so

feat: add plane.so to turbo
This commit is contained in:
Vihar Kurama 2022-12-21 00:57:53 +05:30 committed by GitHub
commit a14ad95930
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
76 changed files with 4748 additions and 96 deletions

View File

@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"dev": "next dev --port 3000",
"build": "next build",
"start": "next start",
"lint": "next lint"

3
apps/www/README.md Normal file
View File

@ -0,0 +1,3 @@
# Plane.so
Source code powering www.plane.so

View File

@ -0,0 +1,79 @@
import React from "react";
// next import
import Link from "next/link";
import Image from "next/image";
const Footer = () => {
return (
<>
<div className="button-gradient pt-[1.5px]">
<div className="bg-[#00091F] text-white">
<div className="container mx-auto px-5 py-20 pb-10">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-y-8">
<div className="mb-5 flex flex-col">
<div className="text-4xl font-medium tracking-wide leading-relaxed text-center lg:text-left">
Questions? Comments? <br className="hidden lg:block" />
Concerns?
</div>
<div className="mx-auto lg:ml-0 button-gradient bg-black w-min whitespace-nowrap px-6 py-2 mt-5 rounded-lg">
<Link
href="https://discord.com/invite/8SR2N9PAcJ"
target="_blank"
>
<a>Chat to us on Discord</a>
</Link>
</div>
</div>
<div className="">
<div className="grid grid-cols-3 divide-x text-center text-[#C0C0C0] max-h-min">
<Link href="mailto:hello@plane.so">
<a className="">CONTACT</a>
</Link>
<Link href="/privacy-policy">
<a className="">PRIVACY POLICY</a>
</Link>
<Link href="/terms-and-conditions">
<a className="">TERMS & CONDITIONS</a>
</Link>
</div>
<div className="flex w-full mt-8 justify-center lg:justify-end items-center gap-6">
<Link href="https://twitter.com/planepowers">
<a className="flex-shrink-0 relative w-[40px] h-[40px]">
<Image
src="/icons/twitter-white.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</a>
</Link>
<Link href="https://discord.com/invite/A92xrEGCge">
<a className="flex-shrink-0 relative w-[40px] h-[40px]">
<Image
src="/icons/discord-white.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</a>
</Link>
</div>
<div className="flex justify-center lg:justify-end mt-10">
<div className="flex-shrink-0 relative w-28 h-8">
<Image
src="/logo/plane-wordmark.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</>
);
};
export default Footer;

View File

@ -0,0 +1,146 @@
import { Fragment } from "react";
// next imports
import Link from "next/link";
import { useRouter } from "next/router";
import { Popover, Transition } from "@headlessui/react";
import Image from "next/image";
// icons
import { MenuIcon, XIcon } from "@heroicons/react/outline";
const Header = () => {
const router = useRouter();
const MobileNavLink = ({ href, children }: any) => {
return (
<Popover.Button
onClick={() => router.push(href)}
className="block text-left"
>
<div className=" w-full hover:bg-gray-200 p-2">{children}</div>
</Popover.Button>
);
};
const navLinks = [
{ title: "Pricing", href: "/pricing" },
{ title: "Change-Log", href: "/change-log" },
{ title: "Documentation", href: "/docs" },
{ title: "Github", href: "https://github.com/makeplane/plane" }
];
const MobileNavigation = () => {
return (
<Popover>
<Popover.Button
className="relative z-10 flex h-8 w-8 items-center justify-center outline-none"
aria-label="Toggle Navigation"
>
{({ open }) =>
open ? <XIcon width="28px" /> : <MenuIcon width="28px" />
}
</Popover.Button>
<Transition.Root>
<Transition.Child
as={Fragment}
enter="duration-150 ease-out"
enterFrom="opacity-0"
enterTo="opacity-100"
leave="duration-150 ease-in"
leaveFrom="opacity-100"
leaveTo="opacity-0"
>
<Popover.Overlay className="fixed inset-0 bg-gray-300 bg-opacity-50" />
</Transition.Child>
<Transition.Child
as={Fragment}
enter="duration-150 ease-out"
enterFrom="opacity-0 scale-95"
enterTo="opacity-100 scale-100"
leave="duration-100 ease-in"
leaveFrom="opacity-100 scale-100"
leaveTo="opacity-0 scale-95"
>
<Popover.Panel
as="div"
className="absolute inset-x-0 top-full mt-4 flex origin-top flex-col rounded-2xl bg-white text-black p-4 text-lg tracking-tight shadow-xl ring-1 outline-none"
>
{navLinks.map((data: any, index: number) => (
<Fragment key={index}>
<MobileNavLink href={data.href}>{data.title}</MobileNavLink>
</Fragment>
))}
<hr className="m-2 border-slate-300/40" />
<MobileNavLink href="/login">Sign in</MobileNavLink>
</Popover.Panel>
</Transition.Child>
</Transition.Root>
</Popover>
);
};
return (
<>
<div className="w-full text-center text-white bg-[#001842] py-5 px-4">
Plane is open source. Star our GitHub repo!
</div>
<div className="nav-border-gradient py-[1.5px] relative z-0">
<div className="bg-[#00091F]">
<header className="py-4 text-white nav-gradient relative z-10 ">
<div className="container mx-auto px-5">
<nav className="relative z-50 flex items-center justify-between">
<div className="flex items-center md:gap-x-12 w-52">
<Link href="/" aria-label="Home">
<a title="Plan Everything" className="text-3xl">
<div className="flex-shrink-0 relative w-[30px] h-[30px]">
<Image
src={"/logo/plane.svg"}
className="w-full h-full object-cover rounded"
layout="fill"
alt="user"
/>
</div>
</a>
</Link>
</div>
<div className="hidden md:flex md:gap-x-6">
{navLinks.map((data: any, index: number) => (
<Link key={index} href={data.href}>
<a
className={`inline-block rounded-lg py-1 px-2 ${
router.pathname.includes(data.href)
? "text-white"
: "text-gray-400"
}`}
>
{data.title}
</a>
</Link>
))}
</div>
<div className="flex items-center gap-x-5 md:gap-x-8 w-52 justify-end">
<div className="hidden md:block">
<Link href="/">
<a>Sign In</a>
</Link>
</div>
<Link href="http://app.plane.so" target="_blank">
<a className="button-gradient p-[1px] rounded text-white flex-shrink-0">
<div className="p-2 py-1 bg-[#001842] rounded">
<div className="text-gradient">Join Alpha</div>
</div>
</a>
</Link>
<div className="-mr-1 md:hidden">
<MobileNavigation />
</div>
</div>
</nav>
</div>
</header>
</div>
</div>
</>
);
};
export default Header;

View File

@ -0,0 +1,30 @@
// next imports
import Image from "next/image";
const Details = () => {
return (
<div className="bg-[#00091F] my-20 pt-10 relative">
<div className="container mx-auto px-5 gap-6 text-white">
<div className="text-4xl my-10 mt-20">Our Mission</div>
<div className="max-w-4xl">
The mission of Plane is to provide a powerful and user-friendly issue
planning and tracking tool that is open-source and accessible to teams
of all sizes. Our goal is to enable teams to easily plan, progress,
and track their work, to improve collaboration, efficiency, and
productivity.
</div>
<div className="text-4xl my-10 mt-20">Our Vision</div>
<div className="max-w-4xl">
Our vision for Plane is to be the leading open-source alternative to
proprietary tools like JIRA and to provide teams with a flexible,
customizable, and easy-to-use platform for managing their work. We aim
to provide a range of features and integrations that make it easy for
teams to collaborate, communicate, and stay on top of their projects
without the need for expensive or complex software.
</div>
</div>
</div>
);
};
export default Details;

View File

@ -0,0 +1,21 @@
const Hero = () => {
return (
<div className="bg-[#00091F] relative w-full overflow-visible">
<div className="absolute w-[100vw] z-0">
<img src="/background/hero.svg" className="w-full h-full" alt="" />
</div>
<div className="container mx-auto px-5 pt-20 pb-16 text-center lg:pt-20 text-white relative z-20">
<div className="text-center text-xl tracking-widest">P L A N E</div>
<div className="text-4xl md:text-6xl max-w-[700px] mx-auto mt-10">
Want to know <br /> <span className="text-gradient">About Us</span>?
</div>
<div className="text-center max-w-md mx-auto mt-6 text-lg font-thin">
Lorem ipsum dolor sit amet consectetur. Amet lacus iaculis ipsum nisi
justo tortor ut justo.
</div>
</div>
</div>
);
};
export default Hero;

View File

@ -0,0 +1,61 @@
// next imports
import Image from "next/image";
const Values = () => {
const valueData = [
{
title: "Accessibility",
description:
"We believe powerful tools for planning and tracking work should be accessible to teams of all sizes and budgets."
},
{
title: "Openness",
description:
"As an open-source project, we are committed to transparency and collaboration and making our code available for anyone to use and contribute to."
},
{
title: "Flexibility",
description:
"Every team is unique, so we aim to provide a tool that can be customized and tailored to the specific needs of each team."
},
{
title: "Collaboration",
description:
"We believe that collaboration is key to success, so we aim to provide features that make it easy for teams to communicate and work together."
},
{
title: "User friendliness",
description:
"As an open-source project, we are committed to transparency and collaboration and making our code available for anyone to use and contribute to."
},
{
title: "Continual improvement",
description:
"We are committed to constantly improving Plane, based on feedback from our users and the broader community."
}
];
return (
<div className="bg-[#00091F] my-20 relative">
<div className="container mx-auto px-5 gap-6 text-white">
<div className="text-4xl my-10">Our Values</div>
<div className="grid grid-cols-3 gap-4 gap-y-6">
{valueData.map((data: any, index: number) => (
<div
key={index}
className="card-border-gradient p-[1.5px] rounded-lg"
>
<div className="bg-[#00091F] rounded-lg h-full">
<div className="bg-card-border rounded-lg p-6">
<div className="text-center text-xl">{data.title}</div>
<div className="mt-5 font-light">{data.description}</div>
</div>
</div>
</div>
))}
</div>
</div>
</div>
);
};
export default Values;

View File

@ -0,0 +1,86 @@
import React from "react";
// next imports
import Image from "next/image";
import Link from "next/link";
const Community = () => {
return (
<div className="bg-[#00091F] text-white">
<div className="container mx-auto px-5 py-20 md:py-24 ">
<h2 className="text-3xl tracking-tight md:text-3xl ">
Join Our Growing Developer Community
</h2>
<div className="max-w-2xl mt-4 text-sm">
Join our global community of contributors, developers, and enthusiasts
on Discord and Github. Learn more about Plane through documentation
from the crew.
</div>
<div className="mt-10 grid md:grid-cols-3 gap-4">
<Link href="https://twitter.com/planepowers" target="_blank">
<a className="rounded-lg card-border-gradient p-[1.5px]">
<div className="rounded-lg bg-[#00091F]">
<div className="flex flex-col items-center card-gradient py-14 rounded-lg">
<div className="relative h-20 w-20">
<Image
layout="fill"
height="40px"
width="40px"
src="/icons/twitter.svg"
alt="Twitter"
/>
</div>
<div className="text-gray-400 mt-4">
twitter.com
<span className="text-[#05C3FF]">/planepowers</span>{" "}
</div>
</div>
</div>
</a>
</Link>
<Link href="https://github.com/makeplane" target="_blank">
<a className="rounded-lg card-border-gradient p-[1.5px]">
<div className="rounded-lg bg-[#00091F]">
<div className="flex flex-col items-center card-gradient py-14 rounded-lg">
<div className="relative h-20 w-20">
<Image
layout="fill"
height="40px"
width="40px"
src="/icons/github.svg"
alt="Twitter"
/>
</div>
<div className="text-gray-400 mt-4">
github
<span className="text-white">/makeplane</span>
</div>
</div>
</div>
</a>
</Link>
<Link href="https://discord.com/invite/A92xrEGCge" target="_blank">
<a className="rounded-lg card-border-gradient p-[1.5px]">
<div className="rounded-lg bg-[#00091F]">
<div className="flex flex-col items-center card-gradient py-14 rounded-lg">
{" "}
<div className="relative h-20 w-20">
<Image
layout="fill"
height="40px"
width="40px"
src="/icons/discord.svg"
alt="Twitter"
/>
</div>
<div className="mt-4">Join our community</div>
</div>
</div>
</a>
</Link>
</div>
</div>
</div>
);
};
export default Community;

View File

@ -0,0 +1,174 @@
import React from "react";
// next imports
import Image from "next/image";
const features = [
{
title: "Plan",
description:
"Simple yet powerful planning features make it easy to create and prioritize issues, define milestones and deadlines, and assign tasks to team members.",
cards: [
{
title: (
<div>
Create <strong className="font-bold">Issues</strong> in seconds
</div>
),
description:
"Create issues, sub-issues with context and detail in seconds. No distraction, no falling through cracks.",
image: "/images/plan1.png"
},
{
title: (
<div>
<strong className="font-bold">View </strong>it as you like
</div>
),
description:
"Kanban, or Lists, weve got you covered with the Views you want. Please, filters as you like.",
image: "/images/plan2.png"
},
{
title: (
<div>
Match with your <strong className="font-bold">Speed</strong>
</div>
),
description:
"Speed up your work with number of Shortcuts, and increase your productivity by 3.3%.",
image: "/images/plan3.png"
}
]
},
{
title: "Progress",
description:
"Create and assign tasks within cycles, track their progress over time, keep your team organized, and ensures that important tasks are completed on time.",
cards: [
{
title: (
<div>
Plan better with <strong className="font-bold">Cycles</strong>
</div>
),
description:
"Sprint better with Cycles by setting fixed time within projects and delivering faster with precision.",
image: "/images/progress1.png"
},
{
title: (
<div>
Move faster with
<strong className="font-bold"> Bulk </strong>ops
</div>
),
description:
"Organise and move issues better within projects and cycles, with bulk operations and powerful search.",
image: "/images/progress2.png"
},
{
title: (
<div>
Track <strong className="font-bold">and take control</strong>
</div>
),
description:
"Track Cycles with Simple stats for your team thatll help you push and clear your backlogs.",
image: ""
}
]
},
{
title: "Collaboration",
description:
"With its integration capabilities, Plane helps teams stay connected and aligned across different tools and platforms, ensuring that everyone is working towards the same goals.",
cards: [
{
title: (
<div>
When in doubt,
<strong className="font-bold"> Comment </strong>it out
</div>
),
description:
"Collaborate and discuss the details of a specific issue within the project using Comments and Activity.",
image: "/images/colab1.png"
},
{
title: (
<div>
Get
<strong className="font-bold"> Notified</strong> on your Slack
</div>
),
description:
"Never miss anything, integrate with your Slack workspace to get notification in real-time.",
image: "",
coming_soon: true
},
{
title: (
<div>
Work in <strong className="font-bold">Real-time </strong>
</div>
),
description:
"[Coming soon] See updates in real-time within your teams across different tabs devices.",
image: "/images/colab3.png",
coming_soon: true
}
]
}
];
const PrimaryFeatures = () => {
return (
<div className="bg-[#00091F] py-20">
<div className="container px-5 mx-auto">
<div className="text-white">
{features.map((feature: any, index: number) => (
<div key={index} className="mt-10 md:mt-20">
<div className="text-gradient text-2xl">0{index + 1}</div>
<div className="mt-4 text-3xl">{feature.title}</div>
<div className="mt-4 mb-10 max-w-2xl font-light">
{feature.description}
</div>
<div className="mt-4 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{feature.cards.map((card: any, index: number) => (
<div
key={index}
className="card-border-gradient p-[1.5px] rounded-lg h-full flex flex-col relative overflow-hidden"
>
{card.coming_soon && (
<>
<div className="absolute text-[8px] button-gradient text-center -rotate-45 w-24 top-4 -left-6">
{" "}
coming soon
</div>
</>
)}
<div className="bg-[#00091F] rounded-lg h-full">
<div className="card-gradient rounded-lg h-full flex flex-col p-6">
<div className="text-lg font-light">{card.title}</div>
<div className="text-[#c0c0c0] mt-3 mb-6">
{card.description}
</div>
<div className="w-full rounded-lg mt-auto relative">
<img
src={card.image ? card.image : "/images/plan1.png"}
/>
</div>
</div>
</div>
</div>
))}
</div>
</div>
))}
</div>
</div>
</div>
);
};
export default PrimaryFeatures;

View File

@ -0,0 +1,71 @@
// next imports
import Image from "next/image";
const Hero = () => {
return (
<div className="relative ">
<div className="bg-[#00091F] relative">
<div className="absolute w-[100vw]">
<img src="/background/hero.svg" className="w-full" alt="" />
</div>
{/* <div className="absolute w-full">
<div className="flex-shrink-0 relative w-[100vw] h-[100vh]">
<Image
src={"/background/hero.svg"}
className="w-full h-full object-cover rounded"
layout="fill"
alt="user"
/>
</div>
</div> */}
<div className="container mx-auto px-5 pt-20 pb-16 text-center lg:pt-20 text-white relative z-20">
<div className="text-center text-xl tracking-widest">P L A N E</div>
<div className="text-4xl md:text-6xl max-w-[750px] mx-auto mt-10">
<span className="text-gradient">Issue Tracking</span> tool youll
fall in love with.
</div>
<div className="text-center max-w-xs mx-auto mt-6 text-lg font-thin">
Plane helps you track your issues, epics, and product roadmaps.
</div>
<div className="max-w-md mx-auto flex items-center mt-8 gap-4">
<button className="button-gradient text-white w-full rounded-lg py-2">
Sign Up
</button>
<button className="border text-white w-full rounded-lg py-2">
Read the Docs
</button>
</div>
</div>
<div className="container px-5 mx-auto relative z-20 md:mt-40">
<div className="hidden lg:block absolute w-full h-full -top-40">
<Image
className="object-fill z-10"
layout="fill"
width="500"
height="100%"
src="/background/hero-dots.svg"
alt="img"
/>
</div>
<div className="flex-shrink-0 relative w-full h-80 md:h-[600px] lg:h-[700px]">
<Image
src={"/images/demo.png"}
className="w-full h-full object-contain rounded "
layout="fill"
alt="user"
/>
</div>
<div className="text-white mt-10 lg:mt-56 text-2xl md:text-5xl font-thin max-w-6xl">
With its intuitive UI and powerful features, Plane makes it easy to
plan and track projects, assign tasks to team members, and monitor
progress.
</div>
</div>
</div>
</div>
);
};
export default Hero;

View File

@ -0,0 +1,64 @@
import React from "react";
// next imports
import Image from "next/image";
import Link from "next/link";
const OpenSource = () => {
const data = [
{ title: "17k+", description: "Stars" },
{ title: "20k+", description: "PRs closed" },
{ title: "300+", description: "Contributors" }
];
return (
<div className="w-full relative bg-[#00091F]">
<div className="hidden lg:block">
<Image
className="object-fill z-10 "
layout="fill"
width="500"
height="100%"
src="/background/open-source.svg"
alt="img"
/>
</div>
<div className="relative z-10 py-20 md:py-36 bg-opacity-10">
<div className="container px-5 mx-auto text-white">
<div className="w-full lg:w-3/5 ">
<div className="text-5xl">
We are <strong>open-source</strong>
</div>
<div className="mt-4 max-w-2xl mb-6">
Host it on your own servers, and easily extend Plane with custom
integrations. Choose from a rich set of developer APIs and never
be limited by platform features.
</div>
<Link href="https://github.com/makeplane/plane">
<a className="border text-white rounded-lg py-2 px-3 mb-4">
Star us on GitHub
</a>
</Link>
{/* <div className="grid grid-cols-1 sm:grid-cols-3 gap-4">
{data.map((item: any, index: number) => (
<div
key={index}
className="rounded-lg card-border-gradient p-[1.5px]"
>
<div className="rounded-lg bg-[#00091F]">
<div className="card-gradient p-8 rounded-lg">
<div className="text-3xl text-center">{item.title}</div>
<div className="text-center mt-4 font-light">
{item.description}
</div>
</div>
</div>
</div>
))}
</div> */}
</div>
</div>
</div>
</div>
);
};
export default OpenSource;

View File

@ -0,0 +1,63 @@
import React from "react";
const TimeLine = () => {
const timelineData = [
{ name: "Private Alpha", description: "Released on October 17, 2022" },
{
name: "First open-source commit",
description: "Scheduled on November 19, 2022"
},
{ name: "Public beta", description: "Scheduled on December 25, 2022" },
{ name: "Real-time sync", description: "Scheduled on January 14th, 2022" },
{
name: "GitHub and Slack integration",
description: " Scheduled on January 5, 2022"
}
];
return (
<div id="roadmap" className="container mx-auto px-5 py-32">
<h2 className="font-display text-3xl tracking-tight sm:text-4xl md:text-5xl text-center">
Here's what we are building to keep your itineraries right.{" "}
</h2>
<p className="mt-4 text-lg tracking-tight text-gray-400 text-center max-w-lg mx-auto">
Full roadmap, coming soon.
</p>
<ol className=" md:flex space-y-10 md:space-y-0 mt-10">
{timelineData.map((data: any, index: number) => (
<li className="relative mb-6 sm:mb-0">
<div className="flex items-center">
<div className="hidden sm:flex w-full bg-gray-200 h-0.5 dark:bg-gray-700"></div>
<div className="flex flex-shrink-0 z-10 justify-center items-center w-6 h-6 bg-blue-200 rounded-full ring-0 ring-white dark:bg-blue-900 sm:ring-8 dark:ring-gray-900 shrink-0">
<svg
aria-hidden="true"
className="w-3 h-3 text-blue-600 dark:text-blue-300"
fill="currentColor"
viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg"
>
<path
fill-rule="evenodd"
d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z"
clip-rule="evenodd"
></path>
</svg>
</div>
<div className="hidden sm:flex w-full bg-gray-200 h-0.5 dark:bg-gray-700"></div>
</div>
<div className="mt-3 sm:px-8">
<h3 className="text-lg font-semibold text-gray-900 dark:text-white text-center">
{data.name}
</h3>
<time className="block mb-2 text-sm font-normal leading-none text-gray-400 dark:text-gray-500 text-center">
{data.description}
</time>
</div>
</li>
))}
</ol>
</div>
);
};
export default TimeLine;

View File

@ -0,0 +1,30 @@
import NProgress from "nprogress";
import { useRouter } from "next/router";
import { useEffect } from "react";
export default function Progress() {
const router = useRouter();
useEffect(() => {
let timeout: NodeJS.Timeout;
const start = () => {
timeout = setTimeout(NProgress.start, 100);
};
const done = () => {
clearTimeout(timeout);
NProgress.done();
};
router.events.on("routeChangeStart", start);
router.events.on("routeChangeComplete", done);
router.events.on("routeChangeError", done);
return () => {
router.events.off("routeChangeStart", start);
router.events.off("routeChangeComplete", done);
router.events.off("routeChangeError", done);
};
}, []);
return <></>;
}

View File

@ -0,0 +1,83 @@
import Head from "next/head";
import { useRouter } from "next/router";
import {
SITE_NAME,
SITE_DESCRIPTION,
SITE_URL,
TWITTER_USER_NAME
} from "@constants/seo/seo-variables";
type Meta = {
title?: string | null;
description?: string | null;
image?: string | null;
url?: string | null;
};
type Props = {
meta: Meta;
children: React.ReactNode;
};
const PageSeo = ({ meta, children }: Props) => {
const router = useRouter();
const image = meta.image || "/site-image.png";
const title = meta.title || SITE_NAME;
const url = meta.url || `${SITE_URL}${router.asPath}`;
const description = meta.description || SITE_DESCRIPTION;
return (
<>
<Head>
<title>{title}</title>
<meta property="og:title" content={title} />
<meta property="og:url" content={url} />
<meta name="description" content={description} />
<meta property="og:description" content={description} />
<meta name="twitter:site" content={`@${TWITTER_USER_NAME}`} />
<meta
name="twitter:card"
content={image ? "summary_large_image" : "summary"}
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="/favicon/apple-touch-icon.png"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/favicon/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/favicon/favicon-16x16.png"
/>
<link rel="manifest" href="/site.webmanifest.json" />
<link rel="shortcut icon" href="/favicon/favicon.ico" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" />
{/* <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> */}
<link
href="https://fonts.googleapis.com/css2?family=Lexend:wght@300;400;500;600;700&display=swap"
rel="stylesheet"
/>
{image && (
<meta
property="og:image"
content={
image.startsWith("https://") ? image : `${SITE_URL}${image}`
}
/>
)}
</Head>
{children}
</>
);
};
export default PageSeo;

View File

@ -0,0 +1,61 @@
// next imports
import Image from "next/image";
// next imports
import Link from "next/link";
const content = [
"Unlimited Issues",
"Unlimited Members",
"Unlimited Usage (Entries, API calls, Assets, etc.)",
"Community support"
];
const Enterprise = () => {
return (
<div className="relative w-full overflow-visible my-20 container mx-auto px-5">
<div className=" card-border-gradient p-[1.5px] rounded-lg">
<div className="bg-[#00091F] rounded-lg">
<div className="text-white card-gradient rounded-lg flex flex-wrap divide-y divide-[#2A3144] divide-x">
<div className="w-full md:w-2/5 h-full">
<div className="p-10 py-20 flex flex-col">
<div className="text-center text-[#C0C0C0] text-lg">
Community Edition
</div>
<div className="text-gradient text-3xl mt-6 text-center font-medium">
Free Forever
</div>
<div className="text-center font-thin mt-4">
Open-Source under Apache 2.0 License
</div>
<Link href="#">
<a className="button-gradient mx-auto rounded mt-10 px-4 py-1">
Self-host Plane
</a>
</Link>
</div>
</div>
<div className="w-full md:w-3/5 h-ful flex flex-col justify-center">
{content.map((_: string, index: number) => (
<div
key={index}
className="flex gap-4 items-center px-10 md:px-20 my-5"
>
<div className="flex-shrink-0 relative w-[24px] h-[24px]">
<Image
src="/icons/check-circle.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
<div className="text-lg font-thin">{_}</div>
</div>
))}
</div>
</div>
</div>
</div>
</div>
);
};
export default Enterprise;

View File

@ -0,0 +1,66 @@
// next imports
import Image from "next/image";
// next imports
import Link from "next/link";
const content = [
"Unlimited everything",
"Custom billing",
"Talk to us",
"SAML / Single Sign On",
"Audit log and app management",
"Priority support"
];
const Enterprise = () => {
return (
<div className="relative w-full overflow-visible my-20 container mx-auto px-5">
<div className=" card-border-gradient p-[1.5px] rounded-lg">
<div className="bg-[#00091F] rounded-lg">
<div className="text-white card-gradient rounded-lg flex flex-wrap items-center divide-y divide-[#2A3144] divide-x">
<div className="w-full md:w-2/5 h-full">
<div className="p-10 py-20 flex flex-col">
<div className="text-center text-[#C0C0C0] text-lg">
Enterprise
</div>
<div className="text-gradient text-3xl mt-6 text-center font-medium">
Coming Soon
</div>
<Link href="#">
<a className="button-gradient mx-auto rounded mt-4 px-4 py-1">
Talk to us
</a>
</Link>
{/* <div className="text-center font-thin mt-10">
Lorem ipsum dolor sit amet consectetur. Luctus amet tortor
facilisis pellentesque. Sit feugiat faucibus luctus tempor et
enim. Sit amet metus viverra congue quis a sagittis ut
lacinia.
</div> */}
</div>
</div>
<div className="w-full md:w-3/5 h-ful py-10">
{content.map((_: string, index: number) => (
<div
key={index}
className="flex gap-4 items-center px-10 md:px-20 my-5"
>
<div className="flex-shrink-0 relative w-[24px] h-[24px]">
<Image
src="/icons/check-circle.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
<div className="text-lg font-thin">{_}</div>
</div>
))}
</div>
</div>
</div>
</div>
</div>
);
};
export default Enterprise;

View File

@ -0,0 +1,22 @@
const Hero = () => {
return (
<div className="bg-[#00091F] relative w-full overflow-visible">
<div className="absolute w-[100vw] z-0">
<img src="/background/hero.svg" className="w-full" alt="" />
</div>
<div className="container mx-auto px-5 pt-20 pb-20 text-center lg:pt-20 text-white relative z-20">
<div className="text-center text-xl tracking-widest">P L A N E</div>
<div className="text-4xl md:text-6xl max-w-[700px] mx-auto mt-10">
No-brainer <span className="text-gradient">Pricing</span> for
everyone.
</div>
<div className="text-center max-w-md mx-auto mt-6 text-lg font-thin">
Get started with Plane for free. Upgrade to Pro for unlimited support,
file uploads, and access to premium features.
</div>
</div>
</div>
);
};
export default Hero;

View File

@ -0,0 +1,79 @@
// next imports
import Image from "next/image";
const CloudPricing = () => {
const pricingData = [
{
title: "Cloud Free",
description: "Free Forever",
details: [
"Unlimited Members",
"1000 issues",
"5MB per issue file uploads",
"Community Support"
],
button: "Get started with Free"
},
{
title: "Cloud Pro",
description: "$5 per user / month",
details: [
"Everything in free, plus",
"Unlimited issues",
"Unlimited file uploads",
"Priority Support"
],
button: "Get started with Cloud Pro"
}
];
return (
<div className="bg-[#00091F] mt-20 relative">
<div className="container mx-auto px-5 grid grid-cols-1 lg:grid-cols-2 gap-6 text-white">
{pricingData.map((data: any, index: number) => (
<div
key={index}
className="card-border-gradient p-[1.5px] rounded-lg"
>
<div className="bg-[#00091F] rounded-lg">
<div className="card-gradient rounded-lg">
<div className="p-8">
<div className="text-center text-[#C0C0C0]">{data.title}</div>
<div className="text-3xl text-center mt-4 whitespace-nowrap">
{data.description}
</div>
</div>
<div className="border-t-[1px] border-[#2A3144] w-full"></div>
<div className="p-4">
{data.details.map((_: any, index: number) => (
<div
key={index}
className="flex gap-4 items-center px-20 my-5"
>
<div className="flex-shrink-0 relative w-[24px] h-[24px]">
<Image
src="/icons/check-circle.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
<div className="text-lg font-thin">{_}</div>
</div>
))}
</div>
<div className="p-8">
<button className="w-full button-gradient py-3 rounded-lg">
{data.button}
</button>
</div>
</div>
</div>
</div>
))}
</div>
</div>
);
};
export default CloudPricing;

View File

@ -0,0 +1,177 @@
// next imports
import Image from "next/image";
const FeaturesTable = () => {
const tableData = [
{
name: "Lorem ipsum",
free: true,
pro: true,
enterprise: true
},
{
name: "Lorem ipsum",
free: true,
pro: true,
enterprise: true
},
{
name: "Lorem ipsum",
free: true,
pro: true,
enterprise: true
},
{
name: "Lorem ipsum",
free: true,
pro: true,
enterprise: true
},
{
name: "Lorem ipsum",
free: false,
pro: true,
enterprise: true
},
{
name: "Lorem ipsum",
free: false,
pro: false,
enterprise: true
}
];
return (
<div className="w-full pb-20">
<div className="container px-5 mx-auto overflow-auto">
<table className="min-w-full">
<thead className="rounded">
<tr className="h-[50px]">
<th
scope="col"
className="px-3 text-left font-medium text-[#ffffff] text-xl"
>
Lorem ipsum
</th>
<th
scope="col"
className="px-3 py-3.5 text-left font-medium text-[#ffffff] text-xl"
>
<div className="mb-14">Cloud Free</div>
</th>
<th
scope="col"
className="px-3 py-3.5 text-left font-medium text-[#ffffff] text-xl"
>
<div className="mb-14"> Cloud Pro</div>
</th>
<th
scope="col"
className="px-3 py-3.5 text-left font-medium text-[#ffffff] text-xl"
>
<div className="mb-14">Enterprise</div>
</th>
</tr>
</thead>
<tbody
className="card-gradient mt-10 rounded-lg text-[#C0C0C0] divide-y divide-[#2A3144]"
>
{tableData.map((data: any) => (
<tr key={`data-${data.id}`} className="m-2 h-[50px] rounded-lg">
<td className="whitespace-nowrap px-3 py-4 text-">
{data.name}
</td>
<td className="whitespace-nowrap px-3 py-4">
{data.free && (
<div className="flex-shrink-0 relative w-[24px] h-[24px]">
<Image
src="/icons/check-circle.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
)}
</td>
<td className="whitespace-nowrap px-3 py-4 text-sm">
{" "}
{data.pro && (
<div className="flex-shrink-0 relative w-[24px] h-[24px]">
<Image
src="/icons/check-circle.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
)}
</td>
<td className="whitespace-nowrap px-3 py-4 text-sm">
{data.enterprise && (
<div className="flex-shrink-0 relative w-[24px] h-[24px]">
<Image
src="/icons/check-circle.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
)}
</td>
</tr>
))}
</tbody>
<div className="mt-10"></div>
<div className="text-white mb-4 text-xl px-3">Lorem ipsum</div>
<tbody className="card-gradient mt-10 rounded overflow-hidden text-[#C0C0C0] divide-y divide-[#2A3144]">
{tableData.map((data: any) => (
<tr key={`data-${data.id}`} className="m-2 h-[50px]">
<td className="whitespace-nowrap px-3 py-4 text-">
{data.name}
</td>
<td className="whitespace-nowrap px-3 py-4 text-sm">
{data.free && (
<div className="flex-shrink-0 relative w-[24px] h-[24px]">
<Image
src="/icons/check-circle.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
)}
</td>
<td className="whitespace-nowrap px-3 py-4 text-sm">
{" "}
{data.pro && (
<div className="flex-shrink-0 relative w-[24px] h-[24px]">
<Image
src="/icons/check-circle.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
)}
</td>
<td className="whitespace-nowrap px-3 py-4 text-sm">
{data.enterprise && (
<div className="flex-shrink-0 relative w-[24px] h-[24px]">
<Image
src="/icons/check-circle.svg"
className="w-full h-full object-contain rounded"
layout="fill"
alt="user"
/>
</div>
)}
</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
);
};
export default FeaturesTable;

View File

@ -0,0 +1,100 @@
// next imports
import Link from "next/link";
import Image from "next/image";
const DetailsPage = () => {
const detailsData = [
{
image: "/images/demo.png",
date: "17 December 2022",
heading: "Lorem ipsum",
description:
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a. Eget in id vitae pellentesque neque morbi. Eget sed ornare praesent ac cursus. Sit ut massa vitae mauris mauris justo. Odio amet accumsan interdum ultrices mauris pretium eleifend. Nulla elementum morbi volutpat aliquam accumsan diam cum.",
title: "Fixes & Improvements",
details: [
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a."
]
},
{
image: "/images/demo.png",
date: "17 December 2022",
heading: "Lorem ipsum",
description:
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a. Eget in id vitae pellentesque neque morbi. Eget sed ornare praesent ac cursus. Sit ut massa vitae mauris mauris justo. Odio amet accumsan interdum ultrices mauris pretium eleifend. Nulla elementum morbi volutpat aliquam accumsan diam cum.",
title: "Fixes & Improvements",
details: [
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a."
]
},
{
image: "/images/demo.png",
date: "17 December 2022",
heading: "Lorem ipsum",
description:
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a. Eget in id vitae pellentesque neque morbi. Eget sed ornare praesent ac cursus. Sit ut massa vitae mauris mauris justo. Odio amet accumsan interdum ultrices mauris pretium eleifend. Nulla elementum morbi volutpat aliquam accumsan diam cum.",
title: "Fixes & Improvements",
details: [
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a.",
"Lorem ipsum dolor sit amet consectetur. Id proin enim molestie in quis porttitor lorem orci. Iaculis faucibus morbi tristique eu odio maecenas sagittis a."
]
}
];
return (
<div className="bg-[#00091F] relative w-full overflow-visible text-white pt-20">
<div className="container mx-auto px-5">
{detailsData.map((detail: any, index: number) => (
<div key={index} className="my-20">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8 ">
<div className="relative h-96 w-full">
<Image
className="object-contain z-0"
layout="fill"
src="/images/demo.png"
alt="img features"
/>
</div>
<div className="mt-auto">
<div className="font-thin text-lg">{detail.date}</div>
<div className="text-3xl font-medium my-5">
{detail.heading}
</div>
<div className="text-sm font-thinok">{detail.description}</div>
</div>
</div>
<div className="mt-10 ml-4 text-xl">{detail.title}</div>
{detail.details.map((_: any, index: number) => (
<div className="flex gap-4 my-4">
<div className="relative h-5 w-5 mt-2 flex-shrink-0">
<Image
layout="fill"
height="40px"
width="40px"
src="/icons/bullet.svg"
alt="Twitter"
/>
</div>
<div className="text-lg">{_}</div>
</div>
))}
</div>
))}
</div>
</div>
);
};
export default DetailsPage;

View File

@ -0,0 +1,25 @@
// next imports
import Link from "next/link";
import Image from "next/image";
const Hero = () => {
return (
<div className="bg-[#00091F] relative w-full overflow-visible">
<div className="absolute w-[100vw] z-0">
<img src="/background/hero.svg" className="w-full h-full" alt="" />
</div>
<div className="container mx-auto px-5 pt-20 pb-16 text-center lg:pt-20 text-white relative z-20">
<div className="text-center text-xl tracking-widest">P L A N E</div>
<div className="text-4xl md:text-6xl max-w-[700px] mx-auto mt-10">
Wanna know about our <span className="text-gradient">Pricing?</span>
</div>
<div className="text-center max-w-md mx-auto mt-6 text-lg font-thin">
Lorem ipsum dolor sit amet consectetur. Amet lacus iaculis ipsum nisi
justo tortor ut justo.
</div>
</div>
</div>
);
};
export default Hero;

View File

@ -0,0 +1,27 @@
import axios from "axios";
// cookie
import cookie from "js-cookie";
// constants
import { BASE_STAGING, BASE_LOCAL, BASE_PROD } from "@constants/api-routes";
if (process.env.NEXT_PUBLIC_APP_ENVIRONMENT === "production") {
axios.defaults.baseURL = BASE_PROD;
} else if (process.env.NEXT_PUBLIC_APP_ENVIRONMENT === "preview") {
axios.defaults.baseURL = BASE_STAGING;
} else {
axios.defaults.baseURL = BASE_LOCAL;
}
const UNAUTHORIZED = [401];
axios.interceptors.response.use(
(response) => response,
(error) => {
const { status }: any = error.response;
if (UNAUTHORIZED.includes(status)) {
// logout();
// window.location.href = "/login";
}
return Promise.reject(error);
}
);

View File

@ -0,0 +1,5 @@
// Base URLS
export const BASE_PROD = ``;
export const BASE_LOCAL = ``;
export const BASE_STAGING = ``;

View File

@ -0,0 +1,4 @@
export const META_DESCRIPTION = "plane.so";
export const SITE_NAME = "Plane.so";
export const SITE_URL = "/";
export const TWITTER_USER_NAME = "caravel_";

View File

@ -0,0 +1,5 @@
export const SITE_NAME = "Default site name";
export const SITE_DESCRIPTION = "Default site description";
export const SITE_KEYWORDS = "default site keywords";
export const SITE_URL = "http://localhost:3000/";
export const TWITTER_USER_NAME = "caravel";

View File

@ -0,0 +1,18 @@
import Navbar from "@components/NavBar";
import Footer from "@components/Footer";
const DefaultLayout = (props: any) => {
return (
<div className="absolute min-h-[400px] h-screen w-full bg-[#00091F]">
<div>
<Navbar />
</div>
<div className="relative w-full overflow-hidden">{props.children}</div>
<div className="">
<Footer />
</div>
</div>
);
};
export default DefaultLayout;

View File

@ -0,0 +1 @@
export { default as DefaultLayout } from "./default";

View File

@ -0,0 +1,11 @@
import axios from "axios";
// api routes
export const APIFetcher = async (url: any) => {
try {
const response = await axios.get(url);
return response.data;
} catch (error: any) {
throw error.response.data;
}
};

5
apps/www/next-env.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.

42
apps/www/package.json Normal file
View File

@ -0,0 +1,42 @@
{
"name": "plane",
"description": "plane.so",
"private": true,
"repository": "caravel/plane.so",
"author": "caravel",
"license": "Apache-2.0",
"scripts": {
"dev": "next dev --port 3001",
"start": "next start",
"build": "next build"
},
"dependencies": {
"@headlessui/react": "^1.4.0",
"@heroicons/react": "^1.0.4",
"autoprefixer": "^10.3.1",
"next": "^12.0.1",
"next-cookies": "^2.0.3",
"nprogress": "0.2.0",
"react": "17.0.2",
"react-dom": "^17.0.2",
"tailwindcss": "^2.2.7"
},
"devDependencies": {
"@types/nprogress": "0.2.0",
"@types/react": "17.0.34",
"@typescript-eslint/parser": "5.3.1",
"eslint": "<8.0.0\n",
"eslint-config-next": "12.0.3",
"eslint-config-prettier": "8.3.0",
"eslint-plugin-react": "7.27.0",
"eslint-plugin-react-hooks": "4.3.0",
"prettier": "2.4.1",
"typescript": "4.4.4"
},
"prettier": {
"arrowParens": "always",
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "none"
}
}

16
apps/www/pages/_app.tsx Normal file
View File

@ -0,0 +1,16 @@
import type { AppProps } from "next/app";
// n-progress
import NProgress from "@components/nprogress";
// axios configuration
import "@configuration/axios-configuration";
// styles
import "@styles/global.css"
export default function App({ Component, pageProps }: AppProps) {
return (
<>
<Component {...pageProps} />
<NProgress />
</>
);
}

View File

@ -0,0 +1,15 @@
import Document, { Html, Head, Main, NextScript } from "next/document";
export default class CustomDocument extends Document {
render() {
return (
<Html lang="en">
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}

35
apps/www/pages/about.tsx Normal file
View File

@ -0,0 +1,35 @@
import React from "react";
// next imports
import Link from "next/link";
// layouts
import { DefaultLayout } from "layouts";
// components
import Page from "@components/page";
import Hero from "@components/about/Hero";
import Detail from "@components/about/Detail";
import Values from "@components/about/Values"
// constants
import { META_DESCRIPTION } from "@constants/page";
const HomePage = () => {
const meta = {
title: "Plane | Work Log",
description: META_DESCRIPTION
};
return (
<div>
<Page meta={meta}>
<DefaultLayout>
<div className="h-full overflow-hidden bg-[#00091F]">
<Hero />
<Detail />
<Values/>
</div>
</DefaultLayout>
</Page>
</div>
);
};
export default HomePage;

View File

@ -0,0 +1,33 @@
import React from "react";
// next imports
import Link from "next/link";
// layouts
import { DefaultLayout } from "layouts";
// components
import Page from "@components/page";
import Hero from "@components/workLog/Hero";
import Detail from "@components/workLog/Detail";
// constants
import { META_DESCRIPTION } from "@constants/page";
const HomePage = () => {
const meta = {
title: "Plane | Work Log",
description: META_DESCRIPTION
};
return (
<div>
<Page meta={meta}>
<DefaultLayout>
<div className="h-full overflow-hidden bg-[#00091F]">
<Hero />
<Detail />
</div>
</DefaultLayout>
</Page>
</div>
);
};
export default HomePage;

38
apps/www/pages/index.tsx Normal file
View File

@ -0,0 +1,38 @@
import React from "react";
// next imports
import Link from "next/link";
// layouts
import { DefaultLayout } from "layouts";
// components
import Page from "@components/page";
import Hero from "@components/landing/Hero";
import Features from "@components/landing/Features";
import OpenSource from "@components/landing/OpenSource";
import TimeLine from "@components/landing/TimeLine";
import Community from "@components/landing/Community";
// constants
import { META_DESCRIPTION } from "@constants/page";
const HomePage = () => {
const meta = {
title: "Plane | Home",
description: META_DESCRIPTION
};
return (
<div>
<Page meta={meta}>
<DefaultLayout>
<div className="h-full w-full overflow-hidden">
<Hero />
<Features />
<OpenSource />
<Community />
</div>
</DefaultLayout>
</Page>
</div>
);
};
export default HomePage;

View File

@ -0,0 +1,75 @@
import React from "react";
// next imports
import Link from "next/link";
// layouts
import { DefaultLayout } from "layouts";
// components
import Page from "@components/page";
import Hero from "@components/pricing/Hero";
import CloudPricing from "@components/pricing/Pricing";
import Enterprise from "@components/pricing/Enterprise";
import Community from "@components/pricing/Community";
import Table from "@components/pricing/Table";
// constants
import { META_DESCRIPTION } from "@constants/page";
const HomePage = () => {
const meta = {
title: "Plane | Pricing",
description: META_DESCRIPTION
};
const [state, setState] = React.useState("cloud");
const Tabs = [
{
name: "Cloud",
key: "cloud"
},
{
name: "Self-hosted",
key: "hosted"
}
];
return (
<div>
<Page meta={meta}>
<DefaultLayout>
<div className="h-full overflow-hidden bg-[#00091F]">
<Hero />
<div className="mb-2 mt-10 flex w-full space-x-10 justify-center relative">
{Tabs.map((tab, index) => (
<div
key={`tabs-key-index-${index}`}
onClick={() => setState(tab.key)}
className={`${
state === tab.key ? "text-gradient" : "text-[#8B8B8B]"
} cursor-pointer`}
>
<p className="mb-2 px-6 leading-[24px] ">{tab.name}</p>
{state === tab.key && (
<div className="w-full h-[2px] rounded-full button-gradient mt-3"></div>
)}
</div>
))}
</div>
{state === "cloud" ? (
<div className="">
<CloudPricing />
<Enterprise />
{/* <Table/> */}
</div>
) : (
<div className="">
<Community />
{/* <Table/> */}
</div>
)}
</div>
</DefaultLayout>
</Page>
</div>
);
};
export default HomePage;

View File

@ -0,0 +1,670 @@
// components
import Page from "@components/page";
// layouts
import DefaultLayout from "@layouts/default";
// constants
import { META_DESCRIPTION } from "@constants/page";
const PrivacyPolicy = () => {
const meta = {
title: "Plane | Privacy Policy",
description: META_DESCRIPTION
};
return (
<>
<Page meta={meta}>
<DefaultLayout>
<div className="bg-[#00091F] text-white pb-8 sm:pb-12 lg:pb-12">
<div className="overflow-hidden pt-8 sm:pt-12 lg:relative px-5 container mx-auto">
<h1 className="text-4xl font-bold tracking-tight sm:text-5xl">
Privacy Policy
</h1>
<div className="mt-4">
<p className="font-normal my-2">
Last updated: November 19, 2022
</p>
<p className="font-normal my-2">
This Privacy Policy describes Our policies and procedures on
the collection, use and disclosure of Your information when
You use the Service and tells You about Your privacy rights
and how the law protects You.
</p>
<p className="font-normal my-2">
We use Your Personal data to provide and improve the Service.
By using the Service, You agree to the collection and use of
information in accordance with this Privacy Policy. This
Privacy Policy has been created with the help of the{" "}
<a
href="https://www.freeprivacypolicy.com/free-privacy-policy-generator/"
target="_blank"
>
Free Privacy Policy Generator
</a>
.
</p>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Interpretation and Definitions
</h1>
<h2>Interpretation</h2>
<p className="font-normal my-2">
The words of which the initial letter is capitalized have
meanings defined under the following conditions. The
following definitions shall have the same meaning regardless
of whether they appear in singular or in plural.
</p>
<h2>Definitions</h2>
<p className="font-normal my-2">
For the purposes of this Privacy Policy:
</p>
<ul className="list-disc pl-8">
<li>
<p className="font-normal my-2">
<strong>Account</strong> means a unique account created
for You to access our Service or parts of our Service.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Affiliate</strong> means an entity that
controls, is controlled by or is under common control
with a party, where &quot;control&quot; means ownership
of 50% or more of the shares, equity interest or other
securities entitled to vote for election of directors or
other managing authority.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Application</strong> means the software program
provided by the Company downloaded by You on any
electronic device, named Plane
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Company</strong> (referred to as either
&quot;the Company&quot;, &quot;We&quot;, &quot;Us&quot;
or &quot;Our&quot; in this Agreement) refers to Plane
Software Labs Private Limited, 1905, Block A, Jayabheri
The Summit, Narsingi, Telangana 500032.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Cookies</strong> are small files that are placed
on Your computer, mobile device or any other device by a
website, containing the details of Your browsing history
on that website among its many uses.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Country</strong> refers to: Telangana, India
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Device</strong> means any device that can access
the Service such as a computer, a cellphone or a digital
tablet.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Personal Data</strong> is any information that
relates to an identified or identifiable individual.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Service</strong> refers to the Application or
the Website or both.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Service Provider</strong> means any natural or
legal person who processes the data on behalf of the
Company. It refers to third-party companies or
individuals employed by the Company to facilitate the
Service, to provide the Service on behalf of the
Company, to perform services related to the Service or
to assist the Company in analyzing how the Service is
used.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Third-party Social Media Service</strong> refers
to any website or any social network website through
which a User can log in or create an account to use the
Service.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Usage Data</strong> refers to data collected
automatically, either generated by the use of the
Service or from the Service infrastructure itself (for
example, the duration of a page visit).
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Website</strong> refers to Plane, accessible
from{" "}
<a
href="https://plane.so"
rel="external nofollow noopener"
target="_blank"
>
https://plane.so
</a>
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>You</strong> means the individual accessing or
using the Service, or the company, or other legal entity
on behalf of which such individual is accessing or using
the Service, as applicable.
</p>
</li>
</ul>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Collecting and Using Your Personal Data
</h1>
<h2>Types of Data Collected</h2>
<h3>Personal Data</h3>
<p className="font-normal my-2">
While using Our Service, We may ask You to provide Us with
certain personally identifiable information that can be used
to contact or identify You. Personally identifiable
information may include, but is not limited to:
</p>
<ul className="list-disc pl-8">
<li>
<p className="font-normal my-2">Email address</p>
</li>
<li>
<p className="font-normal my-2">
First name and last name
</p>
</li>
<li>
<p className="font-normal my-2">Phone number</p>
</li>
<li>
<p className="font-normal my-2">Usage Data</p>
</li>
</ul>
<h3>Usage Data</h3>
<p className="font-normal my-2">
Usage Data is collected automatically when using the
Service.
</p>
<p className="font-normal my-2">
Usage Data may include information such as Your Device's
Internet Protocol address (e.g. IP address), browser type,
browser version, the pages of our Service that You visit,
the time and date of Your visit, the time spent on those
pages, unique device identifiers and other diagnostic data.
</p>
<p className="font-normal my-2">
When You access the Service by or through a mobile device,
We may collect certain information automatically, including,
but not limited to, the type of mobile device You use, Your
mobile device unique ID, the IP address of Your mobile
device, Your mobile operating system, the type of mobile
Internet browser You use, unique device identifiers and
other diagnostic data.
</p>
<p className="font-normal my-2">
We may also collect information that Your browser sends
whenever You visit our Service or when You access the
Service by or through a mobile device.
</p>
<h3>Information from Third-Party Social Media Services</h3>
<p className="font-normal my-2">
The Company allows You to create an account and log in to
use the Service through the following Third-party Social
Media Services:
</p>
<ul className="list-disc pl-8">
<li>Google</li>
<li>Facebook</li>
<li>Twitter</li>
<li>LinkedIn</li>
</ul>
<p className="font-normal my-2">
If You decide to register through or otherwise grant us
access to a Third-Party Social Media Service, We may collect
Personal data that is already associated with Your
Third-Party Social Media Service's account, such as Your
name, Your email address, Your activities or Your contact
list associated with that account.
</p>
<p className="font-normal my-2">
You may also have the option of sharing additional
information with the Company through Your Third-Party Social
Media Service's account. If You choose to provide such
information and Personal Data, during registration or
otherwise, You are giving the Company permission to use,
share, and store it in a manner consistent with this Privacy
Policy.
</p>
<h3>Tracking Technologies and Cookies</h3>
<p className="font-normal my-2">
We use Cookies and similar tracking technologies to track
the activity on Our Service and store certain information.
Tracking technologies used are beacons, tags, and scripts to
collect and track information and to improve and analyze Our
Service. The technologies We use may include:
</p>
<ul className="list-disc pl-8">
<li>
<strong>Cookies or Browser Cookies.</strong> A cookie is a
small file placed on Your Device. You can instruct Your
browser to refuse all Cookies or to indicate when a Cookie
is being sent. However, if You do not accept Cookies, You
may not be able to use some parts of our Service. Unless
you have adjusted Your browser setting so that it will
refuse Cookies, our Service may use Cookies.
</li>
<li>
<strong>Web Beacons.</strong> Certain sections of our
Service and our emails may contain small electronic files
known as web beacons (also referred to as clear gifs,
pixel tags, and single-pixel gifs) that permit the
Company, for example, to count users who have visited
those pages or opened an email and for other related
website statistics (for example, recording the popularity
of a certain section and verifying system and server
integrity).
</li>
</ul>
<p className="font-normal my-2">
Cookies can be &quot;Persistent&quot; or &quot;Session&quot;
Cookies. Persistent Cookies remain on Your personal computer
or mobile device when You go offline, while Session Cookies
are deleted as soon as You close Your web browser. Learn
more about cookies on the{" "}
<a
href="https://www.freeprivacypolicy.com/blog/sample-privacy-policy-template/#Use_Of_Cookies_And_Tracking"
target="_blank"
>
Free Privacy Policy website
</a>{" "}
article.
</p>
<p className="font-normal my-2">
We use both Session and Persistent Cookies for the purposes
set out below:
</p>
<ul className="list-disc pl-8">
<li>
<p className="font-normal my-2">
<strong>Necessary / Essential Cookies</strong>
</p>
<p className="font-normal my-2">Type: Session Cookies</p>
<p className="font-normal my-2">Administered by: Us</p>
<p className="font-normal my-2">
Purpose: These Cookies are essential to provide You with
services available through the Website and to enable You
to use some of its features. They help to authenticate
users and prevent fraudulent use of user accounts.
Without these Cookies, the services that You have asked
for cannot be provided, and We only use these Cookies to
provide You with those services.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>
Cookies Policy / Notice Acceptance Cookies
</strong>
</p>
<p className="font-normal my-2">
Type: Persistent Cookies
</p>
<p className="font-normal my-2">Administered by: Us</p>
<p className="font-normal my-2">
Purpose: These Cookies identify if users have accepted
the use of cookies on the Website.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>Functionality Cookies</strong>
</p>
<p className="font-normal my-2">
Type: Persistent Cookies
</p>
<p className="font-normal my-2">Administered by: Us</p>
<p className="font-normal my-2">
Purpose: These Cookies allow us to remember choices You
make when You use the Website, such as remembering your
login details or language preference. The purpose of
these Cookies is to provide You with a more personal
experience and to avoid You having to re-enter your
preferences every time You use the Website.
</p>
</li>
</ul>
<p className="font-normal my-2">
For more information about the cookies we use and your
choices regarding cookies, please visit our Cookies Policy
or the Cookies section of our Privacy Policy.
</p>
<h2>Use of Your Personal Data</h2>
<p className="font-normal my-2">
The Company may use Personal Data for the following
purposes:
</p>
<ul className="list-disc pl-8">
<li>
<p className="font-normal my-2">
<strong>To provide and maintain our Service</strong>,
including to monitor the usage of our Service.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>To manage Your Account:</strong> to manage Your
registration as a user of the Service. The Personal Data
You provide can give You access to different
functionalities of the Service that are available to You
as a registered user.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>For the performance of a contract:</strong> the
development, compliance and undertaking of the purchase
contract for the products, items or services You have
purchased or of any other contract with Us through the
Service.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>To contact You:</strong> To contact You by
email, telephone calls, SMS, or other equivalent forms
of electronic communication, such as a mobile
application's push notifications regarding updates or
informative communications related to the
functionalities, products or contracted services,
including the security updates, when necessary or
reasonable for their implementation.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>To provide You</strong> with news, special
offers and general information about other goods,
services and events which we offer that are similar to
those that you have already purchased or enquired about
unless You have opted not to receive such information.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>To manage Your requests:</strong> To attend and
manage Your requests to Us.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>For business transfers:</strong> We may use Your
information to evaluate or conduct a merger,
divestiture, restructuring, reorganization, dissolution,
or other sale or transfer of some or all of Our assets,
whether as a going concern or as part of bankruptcy,
liquidation, or similar proceeding, in which Personal
Data held by Us about our Service users is among the
assets transferred.
</p>
</li>
<li>
<p className="font-normal my-2">
<strong>For other purposes</strong>: We may use Your
information for other purposes, such as data analysis,
identifying usage trends, determining the effectiveness
of our promotional campaigns and to evaluate and improve
our Service, products, services, marketing and your
experience.
</p>
</li>
</ul>
<p className="font-normal my-2">
We may share Your personal information in the following
situations:
</p>
<ul className="list-disc pl-8">
<li>
<strong>With Service Providers:</strong> We may share Your
personal information with Service Providers to monitor and
analyze the use of our Service, to contact You.
</li>
<li>
<strong>For business transfers:</strong> We may share or
transfer Your personal information in connection with, or
during negotiations of, any merger, sale of Company
assets, financing, or acquisition of all or a portion of
Our business to another company.
</li>
<li>
<strong>With Affiliates:</strong> We may share Your
information with Our affiliates, in which case we will
require those affiliates to honor this Privacy Policy.
Affiliates include Our parent company and any other
subsidiaries, joint venture partners or other companies
that We control or that are under common control with Us.
</li>
<li>
<strong>With business partners:</strong> We may share Your
information with Our business partners to offer You
certain products, services or promotions.
</li>
<li>
<strong>With other users:</strong> when You share personal
information or otherwise interact in the public areas with
other users, such information may be viewed by all users
and may be publicly distributed outside. If You interact
with other users or register through a Third-Party Social
Media Service, Your contacts on the Third-Party Social
Media Service may see Your name, profile, pictures and
description of Your activity. Similarly, other users will
be able to view descriptions of Your activity, communicate
with You and view Your profile.
</li>
<li>
<strong>With Your consent</strong>: We may disclose Your
personal information for any other purpose with Your
consent.
</li>
</ul>
<h2>Retention of Your Personal Data</h2>
<p className="font-normal my-2">
The Company will retain Your Personal Data only for as long
as is necessary for the purposes set out in this Privacy
Policy. We will retain and use Your Personal Data to the
extent necessary to comply with our legal obligations (for
example, if we are required to retain your data to comply
with applicable laws), resolve disputes, and enforce our
legal agreements and policies.
</p>
<p className="font-normal my-2">
The Company will also retain Usage Data for internal
analysis purposes. Usage Data is generally retained for a
shorter period of time, except when this data is used to
strengthen the security or to improve the functionality of
Our Service, or We are legally obligated to retain this data
for longer time periods.
</p>
<h2>Transfer of Your Personal Data</h2>
<p className="font-normal my-2">
Your information, including Personal Data, is processed at
the Company's operating offices and in any other places
where the parties involved in the processing are located. It
means that this information may be transferred to and
maintained on computers located outside of Your state,
province, country or other governmental jurisdiction where
the data protection laws may differ than those from Your
jurisdiction.
</p>
<p className="font-normal my-2">
Your consent to this Privacy Policy followed by Your
submission of such information represents Your agreement to
that transfer.
</p>
<p className="font-normal my-2">
The Company will take all steps reasonably necessary to
ensure that Your data is treated securely and in accordance
with this Privacy Policy and no transfer of Your Personal
Data will take place to an organization or a country unless
there are adequate controls in place including the security
of Your data and other personal information.
</p>
<h2>Delete Your Personal Data</h2>
<p className="font-normal my-2">
You have the right to delete or request that We assist in
deleting the Personal Data that We have collected about You.
</p>
<p className="font-normal my-2">
Our Service may give You the ability to delete certain
information about You from within the Service.
</p>
<p className="font-normal my-2">
You may update, amend, or delete Your information at any
time by signing in to Your Account, if you have one, and
visiting the account settings section that allows you to
manage Your personal information. You may also contact Us to
request access to, correct, or delete any personal
information that You have provided to Us.
</p>
<p className="font-normal my-2">
Please note, however, that We may need to retain certain
information when we have a legal obligation or lawful basis
to do so.
</p>
<h2>Disclosure of Your Personal Data</h2>
<h3>Business Transactions</h3>
<p className="font-normal my-2">
If the Company is involved in a merger, acquisition or asset
sale, Your Personal Data may be transferred. We will provide
notice before Your Personal Data is transferred and becomes
subject to a different Privacy Policy.
</p>
<h3>Law enforcement</h3>
<p className="font-normal my-2">
Under certain circumstances, the Company may be required to
disclose Your Personal Data if required to do so by law or
in response to valid requests by public authorities (e.g. a
court or a government agency).
</p>
<h3>Other legal requirements</h3>
<p className="font-normal my-2">
The Company may disclose Your Personal Data in the good
faith belief that such action is necessary to:
</p>
<ul className="list-disc pl-8">
<li>Comply with a legal obligation</li>
<li>
Protect and defend the rights or property of the Company
</li>
<li>
Prevent or investigate possible wrongdoing in connection
with the Service
</li>
<li>
Protect the personal safety of Users of the Service or the
public
</li>
<li>Protect against legal liability</li>
</ul>
<h2>Security of Your Personal Data</h2>
<p className="font-normal my-2">
The security of Your Personal Data is important to Us, but
remember that no method of transmission over the Internet,
or method of electronic storage is 100% secure. While We
strive to use commercially acceptable means to protect Your
Personal Data, We cannot guarantee its absolute security.
</p>
<h1>Children's Privacy</h1>
<p className="font-normal my-2">
Our Service does not address anyone under the age of 13. We
do not knowingly collect personally identifiable information
from anyone under the age of 13. If You are a parent or
guardian and You are aware that Your child has provided Us
with Personal Data, please contact Us. If We become aware
that We have collected Personal Data from anyone under the
age of 13 without verification of parental consent, We take
steps to remove that information from Our servers.
</p>
<p className="font-normal my-2">
If We need to rely on consent as a legal basis for
processing Your information and Your country requires
consent from a parent, We may require Your parent's consent
before We collect and use that information.
</p>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Links to Other Websites
</h1>
<p className="font-normal my-2">
Our Service may contain links to other websites that are not
operated by Us. If You click on a third party link, You will
be directed to that third party's site. We strongly advise
You to review the Privacy Policy of every site You visit.
</p>
<p className="font-normal my-2">
We have no control over and assume no responsibility for the
content, privacy policies or practices of any third party
sites or services.
</p>
<h1>Changes to this Privacy Policy</h1>
<p className="font-normal my-2">
We may update Our Privacy Policy from time to time. We will
notify You of any changes by posting the new Privacy Policy
on this page.
</p>
<p className="font-normal my-2">
We will let You know via email and/or a prominent notice on
Our Service, prior to the change becoming effective and
update the &quot;Last updated&quot; date at the top of this
Privacy Policy.
</p>
<p className="font-normal my-2">
You are advised to review this Privacy Policy periodically
for any changes. Changes to this Privacy Policy are
effective when they are posted on this page.
</p>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Contact Us
</h1>
<p className="font-normal my-2">
If you have any questions about this Privacy Policy, You can
contact us:
</p>
<ul className="list-disc pl-8">
<li>By email: hello@plane.so</li>
</ul>
</section>
</div>
</div>
</div>
</DefaultLayout>
</Page>
</>
);
};
export default PrivacyPolicy;

View File

@ -0,0 +1,407 @@
// components
import Page from "@components/page";
// layouts
import DefaultLayout from "@layouts/default";
// constants
import { META_DESCRIPTION } from "@constants/page";
const TermsAndConditions = () => {
const meta = {
title: "Plane | Terms and Conditions",
description: META_DESCRIPTION
};
return (
<>
<Page meta={meta}>
<DefaultLayout>
<div className="bg-[#00091F] text-white pb-8 sm:pb-12 lg:pb-12">
<div className="overflow-hidden pt-8 sm:pt-12 lg:relative px-5 container mx-auto">
<h1 className="text-4xl font-bold tracking-tight sm:text-5xl">
Terms and Conditions
</h1>
<div className="mt-4">
<p className="font-normal py-2">
Last updated: November 19, 2022
</p>
<p className="font-normal py-2">
Please read these terms and conditions carefully before using
Our Service.
</p>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Interpretation and Definitions
</h1>
<h2>Interpretation</h2>
<p className="font-normal py-2">
The words of which the initial letter is capitalized have
meanings defined under the following conditions. The
following definitions shall have the same meaning regardless
of whether they appear in singular or in plural.
</p>
<h2>Definitions</h2>
<p className="font-normal py-2">
For the purposes of these Terms and Conditions:
</p>
<ul className="list-disc pl-8">
<li>
<p className="font-normal py-2">
<strong>Application</strong> means the software program
provided by the Company downloaded by You on any
electronic device, named Plane
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>Application Store</strong> means the digital
distribution service operated and developed by Apple
Inc. (Apple App Store) or Google Inc. (Google Play
Store) in which the Application has been downloaded.
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>Affiliate</strong> means an entity that
controls, is controlled by or is under common control
with a party, where &quot;control&quot; means ownership
of 50% or more of the shares, equity interest or other
securities entitled to vote for election of directors or
other managing authority.
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>Country</strong> refers to: Telangana, India
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>Company</strong> (referred to as either
&quot;the Company&quot;, &quot;We&quot;, &quot;Us&quot;
or &quot;Our&quot; in this Agreement) refers to Plane
Software Labs Private Limited, 1905, Block A, Jayabheri
The Summit, Narsingi, Telangana 500032.
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>Device</strong> means any device that can access
the Service such as a computer, a cellphone or a digital
tablet.
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>Service</strong> refers to the Application or
the Website or both.
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>Terms and Conditions</strong> (also referred as
&quot;Terms&quot;) mean these Terms and Conditions that
form the entire agreement between You and the Company
regarding the use of the Service. This Terms and
Conditions agreement has been created with the help of
the{" "}
<a
href="https://www.freeprivacypolicy.com/free-terms-and-conditions-generator/"
target="_blank"
>
Free Terms and Conditions Generator
</a>
.
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>Third-party Social Media Service</strong> means
any services or content (including data, information,
products or services) provided by a third-party that may
be displayed, included or made available by the Service.
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>Website</strong> refers to Plane, accessible
from{" "}
<a
href="https://plane.so"
rel="external nofollow noopener"
target="_blank"
>
https://plane.so
</a>
</p>
</li>
<li>
<p className="font-normal py-2">
<strong>You</strong> means the individual accessing or
using the Service, or the company, or other legal entity
on behalf of which such individual is accessing or using
the Service, as applicable.
</p>
</li>
</ul>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Acknowledgment
</h1>
<p className="font-normal py-2">
These are the Terms and Conditions governing the use of this
Service and the agreement that operates between You and the
Company. These Terms and Conditions set out the rights and
obligations of all users regarding the use of the Service.
</p>
<p className="font-normal py-2">
Your access to and use of the Service is conditioned on Your
acceptance of and compliance with these Terms and
Conditions. These Terms and Conditions apply to all
visitors, users and others who access or use the Service.
</p>
<p className="font-normal py-2">
By accessing or using the Service You agree to be bound by
these Terms and Conditions. If You disagree with any part of
these Terms and Conditions then You may not access the
Service.
</p>
<p className="font-normal py-2">
You represent that you are over the age of 18. The Company
does not permit those under 18 to use the Service.
</p>
<p className="font-normal py-2">
Your access to and use of the Service is also conditioned on
Your acceptance of and compliance with the Privacy Policy of
the Company. Our Privacy Policy describes Our policies and
procedures on the collection, use and disclosure of Your
personal information when You use the Application or the
Website and tells You about Your privacy rights and how the
law protects You. Please read Our Privacy Policy carefully
before using Our Service.
</p>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Links to Other Websites
</h1>
<p className="font-normal py-2">
Our Service may contain links to third-party web sites or
services that are not owned or controlled by the Company.
</p>
<p className="font-normal py-2">
The Company has no control over, and assumes no
responsibility for, the content, privacy policies, or
practices of any third party web sites or services. You
further acknowledge and agree that the Company shall not be
responsible or liable, directly or indirectly, for any
damage or loss caused or alleged to be caused by or in
connection with the use of or reliance on any such content,
goods or services available on or through any such web sites
or services.
</p>
<p className="font-normal py-2">
We strongly advise You to read the terms and conditions and
privacy policies of any third-party web sites or services
that You visit.
</p>
</section>
<section>
<h1 className="text-xl font-semibold my-10 mb-4">
Termination
</h1>
<p className="font-normal py-2">
We may terminate or suspend Your access immediately, without
prior notice or liability, for any reason whatsoever,
including without limitation if You breach these Terms and
Conditions.
</p>
<p className="font-normal py-2">
Upon termination, Your right to use the Service will cease
immediately.
</p>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Limitation of Liability
</h1>
<p className="font-normal py-2">
Notwithstanding any damages that You might incur, the entire
liability of the Company and any of its suppliers under any
provision of this Terms and Your exclusive remedy for all of
the foregoing shall be limited to the amount actually paid
by You through the Service or 100 USD if You haven't
purchased anything through the Service.
</p>
<p className="font-normal py-2">
To the maximum extent permitted by applicable law, in no
event shall the Company or its suppliers be liable for any
special, incidental, indirect, or consequential damages
whatsoever (including, but not limited to, damages for loss
of profits, loss of data or other information, for business
interruption, for personal injury, loss of privacy arising
out of or in any way related to the use of or inability to
use the Service, third-party software and/or third-party
hardware used with the Service, or otherwise in connection
with any provision of this Terms), even if the Company or
any supplier has been advised of the possibility of such
damages and even if the remedy fails of its essential
purpose.
</p>
<p className="font-normal py-2">
Some states do not allow the exclusion of implied warranties
or limitation of liability for incidental or consequential
damages, which means that some of the above limitations may
not apply. In these states, each party's liability will be
limited to the greatest extent permitted by law.
</p>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
&quot;AS IS&quot; and &quot;AS AVAILABLE&quot; Disclaimer
</h1>
<p className="font-normal py-2">
The Service is provided to You &quot;AS IS&quot; and
&quot;AS AVAILABLE&quot; and with all faults and defects
without warranty of any kind. To the maximum extent
permitted under applicable law, the Company, on its own
behalf and on behalf of its Affiliates and its and their
respective licensors and service providers, expressly
disclaims all warranties, whether express, implied,
statutory or otherwise, with respect to the Service,
including all implied warranties of merchantability, fitness
for a particular purpose, title and non-infringement, and
warranties that may arise out of course of dealing, course
of performance, usage or trade practice. Without limitation
to the foregoing, the Company provides no warranty or
undertaking, and makes no representation of any kind that
the Service will meet Your requirements, achieve any
intended results, be compatible or work with any other
software, applications, systems or services, operate without
interruption, meet any performance or reliability standards
or be error free or that any errors or defects can or will
be corrected.
</p>
<p className="font-normal py-2">
Without limiting the foregoing, neither the Company nor any
of the company's provider makes any representation or
warranty of any kind, express or implied: (i) as to the
operation or availability of the Service, or the
information, content, and materials or products included
thereon; (ii) that the Service will be uninterrupted or
error-free; (iii) as to the accuracy, reliability, or
currency of any information or content provided through the
Service; or (iv) that the Service, its servers, the content,
or e-mails sent from or on behalf of the Company are free of
viruses, scripts, trojan horses, worms, malware, timebombs
or other harmful components.
</p>
<p className="font-normal py-2">
Some jurisdictions do not allow the exclusion of certain
types of warranties or limitations on applicable statutory
rights of a consumer, so some or all of the above exclusions
and limitations may not apply to You. But in such a case the
exclusions and limitations set forth in this section shall
be applied to the greatest extent enforceable under
applicable law.
</p>
<h1>Governing Law</h1>
<p className="font-normal py-2">
The laws of the Country, excluding its conflicts of law
rules, shall govern this Terms and Your use of the Service.
Your use of the Application may also be subject to other
local, state, national, or international laws.
</p>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Disputes Resolution
</h1>
<p className="font-normal py-2">
If You have any concern or dispute about the Service, You
agree to first try to resolve the dispute informally by
contacting the Company.
</p>
<h1>For European Union (EU) Users</h1>
<p className="font-normal py-2">
If You are a European Union consumer, you will benefit from
any mandatory provisions of the law of the country in which
you are resident in.
</p>
<h1>United States Legal Compliance</h1>
<p className="font-normal py-2">
You represent and warrant that (i) You are not located in a
country that is subject to the United States government
embargo, or that has been designated by the United States
government as a &quot;terrorist supporting&quot; country,
and (ii) You are not listed on any United States government
list of prohibited or restricted parties.
</p>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Severability and Waiver
</h1>
<h2>Severability</h2>
<p className="font-normal py-2">
If any provision of these Terms is held to be unenforceable
or invalid, such provision will be changed and interpreted
to accomplish the objectives of such provision to the
greatest extent possible under applicable law and the
remaining provisions will continue in full force and effect.
</p>
<h2>Waiver</h2>
<p className="font-normal py-2">
Except as provided herein, the failure to exercise a right
or to require performance of an obligation under these Terms
shall not effect a party's ability to exercise such right or
require such performance at any time thereafter nor shall
the waiver of a breach constitute a waiver of any subsequent
breach.
</p>
</section>
<section className="mt-4">
<h1 className="text-xl font-semibold my-10 mb-4">
Translation Interpretation
</h1>
<p className="font-normal py-2">
These Terms and Conditions may have been translated if We
have made them available to You on our Service. You agree
that the original English text shall prevail in the case of
a dispute.
</p>
<h1>Changes to These Terms and Conditions</h1>
<p className="font-normal py-2">
We reserve the right, at Our sole discretion, to modify or
replace these Terms at any time. If a revision is material
We will make reasonable efforts to provide at least 30 days'
notice prior to any new terms taking effect. What
constitutes a material change will be determined at Our sole
discretion.
</p>
<p className="font-normal py-2">
By continuing to access or use Our Service after those
revisions become effective, You agree to be bound by the
revised terms. If You do not agree to the new terms, in
whole or in part, please stop using the website and the
Service.
</p>
<h1>Contact Us</h1>
<p className="font-normal py-2">
If you have any questions about these Terms and Conditions,
You can contact us:
</p>
<ul className="list-disc pl-8">
<li>By email: hello@plane.so</li>
</ul>
</section>
</div>
</div>
</div>
</DefaultLayout>
</Page>
</>
);
};
export default TermsAndConditions;

View File

@ -0,0 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

View File

@ -0,0 +1,461 @@
<svg width="1670" height="1030" viewBox="0 0 1670 1030" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="131" cy="67" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="67" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="707" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="707" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="771" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="131" cy="963" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="131" cy="1027" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="131" cy="3" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="771" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="3" cy="963" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="3" cy="1027" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="3" cy="3" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="835" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="835" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="899" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="899" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="131" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="131" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="195" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="195" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="259" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="259" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="323" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="323" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="387" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="387" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="451" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="451" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="515" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="515" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="579" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="579" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="131" cy="643" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="3" cy="643" r="3" fill="white" fill-opacity="0.02"/>
<circle cx="195" cy="67" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="67" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="707" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="707" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="771" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="195" cy="963" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="195" cy="1027" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="195" cy="3" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="771" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="67" cy="963" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="67" cy="1027" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="67" cy="3" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="835" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="835" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="899" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="899" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="131" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="131" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="195" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="195" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="259" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="259" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="323" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="323" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="387" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="387" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="451" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="451" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="515" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="515" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="579" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="579" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="195" cy="643" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="67" cy="643" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="259" cy="67" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="707" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="771" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="963" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="1027" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="3" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="835" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="899" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="131" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="195" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="259" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="323" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="387" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="451" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="515" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="579" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="259" cy="643" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="323" cy="67" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="707" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="771" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="963" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="1027" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="3" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="835" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="899" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="131" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="195" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="259" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="323" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="387" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="451" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="515" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="579" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="323" cy="643" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="387" cy="67" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="707" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="771" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="963" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="1027" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="3" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="835" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="899" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="131" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="195" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="259" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="323" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="387" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="451" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="515" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="579" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="387" cy="643" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="451" cy="67" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="707" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="771" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="963" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="1027" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="3" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="835" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="899" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="131" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="195" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="259" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="323" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="387" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="451" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="515" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="579" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="451" cy="643" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="515" cy="67" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="707" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="771" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="963" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="1027" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="3" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="835" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="899" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="131" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="195" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="259" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="323" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="387" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="451" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="515" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="579" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="515" cy="643" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="579" cy="67" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="707" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="771" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="963" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="1027" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="3" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="835" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="899" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="131" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="195" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="259" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="323" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="387" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="451" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="515" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="579" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="579" cy="643" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="643" cy="67" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="707" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="771" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="963" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="1027" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="3" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="835" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="899" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="131" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="195" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="259" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="323" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="387" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="451" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="515" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="579" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="643" cy="643" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="707" cy="67" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="707" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="771" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="963" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="1027" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="3" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="835" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="899" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="131" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="195" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="259" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="323" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="387" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="451" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="515" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="579" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="707" cy="643" r="3" fill="white" fill-opacity="0.85"/>
<circle opacity="0.95" cx="771" cy="67" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="707" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="771" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="963" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="1027" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="3" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="835" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="899" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="131" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="195" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="259" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="323" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="387" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="451" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="515" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="579" r="3" fill="white"/>
<circle opacity="0.95" cx="771" cy="643" r="3" fill="white"/>
<circle cx="835" cy="67" r="3" fill="white"/>
<circle cx="835" cy="707" r="3" fill="white"/>
<circle cx="835" cy="771" r="3" fill="white"/>
<circle cx="835" cy="963" r="3" fill="white"/>
<circle cx="835" cy="1027" r="3" fill="white"/>
<circle cx="835" cy="3" r="3" fill="white"/>
<circle cx="835" cy="835" r="3" fill="white"/>
<circle cx="835" cy="899" r="3" fill="white"/>
<circle cx="835" cy="131" r="3" fill="white"/>
<circle cx="835" cy="195" r="3" fill="white"/>
<circle cx="835" cy="259" r="3" fill="white"/>
<circle cx="835" cy="323" r="3" fill="white"/>
<circle cx="835" cy="387" r="3" fill="white"/>
<circle cx="835" cy="451" r="3" fill="white"/>
<circle cx="835" cy="515" r="3" fill="white"/>
<circle cx="835" cy="579" r="3" fill="white"/>
<circle cx="835" cy="643" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="67" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="707" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="771" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="963" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="1027" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="3" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="835" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="899" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="131" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="195" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="259" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="323" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="387" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="451" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="515" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="579" r="3" fill="white"/>
<circle opacity="0.95" cx="899" cy="643" r="3" fill="white"/>
<circle cx="963" cy="67" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="707" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="771" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="963" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="1027" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="3" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="835" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="899" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="131" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="195" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="259" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="323" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="387" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="451" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="515" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="579" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="963" cy="643" r="3" fill="white" fill-opacity="0.85"/>
<circle cx="1027" cy="67" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="707" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="771" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="963" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="1027" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="3" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="835" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="899" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="131" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="195" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="259" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="323" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="387" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="451" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="515" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="579" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1027" cy="643" r="3" fill="white" fill-opacity="0.75"/>
<circle cx="1091" cy="67" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="707" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="771" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="963" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="1027" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="3" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="835" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="899" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="131" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="195" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="259" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="323" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="387" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="451" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="515" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="579" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1091" cy="643" r="3" fill="white" fill-opacity="0.65"/>
<circle cx="1155" cy="67" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="707" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="771" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="963" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="1027" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="3" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="835" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="899" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="131" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="195" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="259" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="323" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="387" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="451" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="515" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="579" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1155" cy="643" r="3" fill="white" fill-opacity="0.55"/>
<circle cx="1219" cy="67" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="707" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="771" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="963" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="1027" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="3" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="835" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="899" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="131" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="195" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="259" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="323" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="387" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="451" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="515" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="579" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1219" cy="643" r="3" fill="white" fill-opacity="0.45"/>
<circle cx="1283" cy="67" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="707" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="771" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="963" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="1027" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="3" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="835" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="899" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="131" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="195" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="259" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="323" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="387" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="451" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="515" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="579" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1283" cy="643" r="3" fill="white" fill-opacity="0.35"/>
<circle cx="1347" cy="67" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="707" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="771" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="963" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="1027" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="3" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="835" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="899" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="131" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="195" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="259" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="323" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="387" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="451" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="515" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="579" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1347" cy="643" r="3" fill="white" fill-opacity="0.25"/>
<circle cx="1411" cy="67" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="707" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="771" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="963" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="1027" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="3" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="835" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="899" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="131" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="195" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="259" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="323" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="387" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="451" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="515" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="579" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1411" cy="643" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1475" cy="67" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="67" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="707" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="707" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="771" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1475" cy="963" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1475" cy="1027" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1475" cy="3" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="771" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1603" cy="963" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1603" cy="1027" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1603" cy="3" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="835" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="835" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="899" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="899" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="131" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="131" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="195" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="195" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="259" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="259" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="323" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="323" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="387" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="387" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="451" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="451" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="515" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="515" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="579" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="579" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1475" cy="643" r="3" fill="white" fill-opacity="0.15"/>
<circle cx="1603" cy="643" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="67" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="67" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="707" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="707" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="771" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="963" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="1027" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="3" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="771" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="963" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="1027" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="3" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="835" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="835" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="899" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="899" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="131" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="131" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="195" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="195" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="259" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="259" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="323" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="323" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="387" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="387" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="451" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="451" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="515" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="515" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="579" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="579" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1539" cy="643" r="3" fill="white" fill-opacity="0.1"/>
<circle cx="1667" cy="643" r="3" fill="white" fill-opacity="0.1"/>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 62 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -0,0 +1,16 @@
<svg width="1726" height="577" viewBox="0 0 1726 577" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M701.516 575.843C691.473 576.196 681.251 575.843 666 575.843H701.516C713.204 575.433 724.65 574.066 743.5 570.076C760.261 566.527 775.741 569.155 792.5 565.59C811.383 561.572 820.499 567.474 837.5 555.977C844.058 551.542 859.841 549.351 867 547.005C882.995 541.763 908.5 541.878 920.5 527.779C933.321 512.716 965.329 509.341 973 502.786C989.5 488.687 1013.29 506.28 1028.5 489.969C1039.5 478.175 1062.85 441.9 1080.5 438.06C1123.48 428.709 1109.51 406.161 1143.5 399.609C1160.78 396.277 1173.02 392.559 1180 392.559C1193 392.559 1193.97 365.827 1218.5 365.003C1233.84 364.487 1243.13 355.106 1255.5 343.214C1263 336.006 1276.5 306.685 1286.11 306.685C1310.56 306.685 1319.18 273.074 1342 262.466C1364 252.241 1388.52 254.97 1411.5 249.649C1432.57 244.772 1455.48 229.237 1470 208.635C1487.43 183.899 1486.57 234.497 1508.5 216.966C1518.57 208.914 1534.37 224.092 1546 221.5C1574.1 215.238 1560.21 191.213 1587.5 180.437C1621.34 167.073 1623.42 163.066 1639 121.479C1653.5 82.7753 1668.5 62.4832 1677.5 34.9636C1687.09 5.62927 1695 8.0485 1695 8.0485H1726V575.843H701.516Z" fill="url(#paint0_linear_688_509)"/>
<path d="M0 575.843C0 575.843 35 575.843 61 575.843C82.2685 575.843 106 575.843 123.5 575.843C163.543 575.843 172.287 575.843 212.5 575.843C231 575.843 273 575.843 303.5 575.843C323.5 575.843 344 575.843 378.5 575.843C414.443 575.843 449.565 575.843 485.5 575.843C513.491 575.843 537 575.843 564 575.843C574.038 575.843 592 575.843 601 575.843C613.355 575.843 620 575.843 632 575.843C644.103 575.843 653.893 575.843 666 575.843C699 575.843 708.453 577.495 743.5 570.076C760.261 566.527 775.741 569.155 792.5 565.59C811.383 561.572 820.499 567.474 837.5 555.977C844.058 551.542 859.841 549.351 867 547.005C882.995 541.763 908.5 541.878 920.5 527.779C933.321 512.716 965.329 509.341 973 502.786C989.5 488.687 1013.29 506.28 1028.5 489.969C1039.5 478.175 1062.85 441.9 1080.5 438.06C1123.48 428.709 1109.51 406.161 1143.5 399.609C1160.78 396.277 1173.02 392.559 1180 392.559C1193 392.559 1193.97 365.827 1218.5 365.003C1233.84 364.487 1243.13 355.106 1255.5 343.214C1263 336.006 1276.5 306.685 1286.11 306.685C1310.56 306.685 1319.18 273.074 1342 262.466C1364 252.241 1388.52 254.97 1411.5 249.649C1432.57 244.772 1455.48 229.237 1470 208.635C1487.43 183.899 1486.57 234.497 1508.5 216.966C1518.57 208.914 1531.37 224.592 1543 222C1571.1 215.738 1560.21 191.213 1587.5 180.437C1621.34 167.073 1623.42 163.066 1639 121.479C1653.5 82.7753 1668.5 62.4832 1677.5 34.9636C1687.09 5.62927 1695 8.0485 1695 8.0485" stroke="url(#paint1_linear_688_509)" stroke-opacity="0.7" stroke-width="1.5"/>
<circle cx="1702.5" cy="7.5" r="7.5" fill="#3F76FF" fill-opacity="0.7"/>
<circle cx="1702.5" cy="7.5" r="4.5" fill="#05C3FF" fill-opacity="0.7"/>
<defs>
<linearGradient id="paint0_linear_688_509" x1="863" y1="8" x2="863" y2="576" gradientUnits="userSpaceOnUse">
<stop offset="0.0135415" stop-color="#0C1E49" stop-opacity="0.3"/>
<stop offset="1" stop-color="#00091F"/>
</linearGradient>
<linearGradient id="paint1_linear_688_509" x1="1667.5" y1="-141.911" x2="-42.5191" y2="337.527" gradientUnits="userSpaceOnUse">
<stop stop-color="#3F76FF"/>
<stop offset="1" stop-color="#05C3FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}

View File

@ -0,0 +1,14 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="10" y="10" width="10" height="10" fill="url(#paint0_linear_404_540)"/>
<rect width="10" height="10" fill="url(#paint1_linear_404_540)"/>
<defs>
<linearGradient id="paint0_linear_404_540" x1="9.41176" y1="10.8824" x2="25.4412" y2="21.3235" gradientUnits="userSpaceOnUse">
<stop stop-color="#3F76FF"/>
<stop offset="1" stop-color="#05C3FF"/>
</linearGradient>
<linearGradient id="paint1_linear_404_540" x1="-0.588235" y1="0.882353" x2="15.4412" y2="11.3235" gradientUnits="userSpaceOnUse">
<stop stop-color="#3F76FF"/>
<stop offset="1" stop-color="#05C3FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 695 B

View File

@ -0,0 +1,9 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.0597 15.0236L7.25244 12.2163C7.08057 12.0444 6.8705 11.9585 6.62223 11.9585C6.37397 11.9585 6.15435 12.054 5.96338 12.245C5.77241 12.4359 5.67692 12.6555 5.67692 12.9038C5.67692 13.1521 5.77241 13.3621 5.96338 13.534L9.45817 17.0288C9.63004 17.2007 9.83057 17.2866 10.0597 17.2866C10.2889 17.2866 10.4894 17.2007 10.6613 17.0288L17.5363 10.1538C17.7082 9.98193 17.7893 9.77186 17.7798 9.5236C17.7702 9.27534 17.6795 9.06527 17.5076 8.89339C17.3358 8.70242 17.1209 8.60693 16.8631 8.60693C16.6053 8.60693 16.3809 8.70242 16.1899 8.89339L10.0597 15.0236ZM11.7498 23.8752C10.1266 23.8752 8.61789 23.5839 7.2238 23.0015C5.8297 22.419 4.61702 21.6121 3.58577 20.5809C2.55452 19.5496 1.74767 18.337 1.1652 16.9429C0.582737 15.5488 0.291504 14.0401 0.291504 12.4168C0.291504 10.8127 0.582737 9.31353 1.1652 7.91943C1.74767 6.52534 2.55452 5.31266 3.58577 4.28141C4.61702 3.25016 5.8297 2.43853 7.2238 1.84652C8.61789 1.2545 10.1266 0.958496 11.7498 0.958496C13.354 0.958496 14.8531 1.2545 16.2472 1.84652C17.6413 2.43853 18.854 3.25016 19.8853 4.28141C20.9165 5.31266 21.7281 6.52534 22.3201 7.91943C22.9122 9.31353 23.2082 10.8127 23.2082 12.4168C23.2082 14.0401 22.9122 15.5488 22.3201 16.9429C21.7281 18.337 20.9165 19.5496 19.8853 20.5809C18.854 21.6121 17.6413 22.419 16.2472 23.0015C14.8531 23.5839 13.354 23.8752 11.7498 23.8752ZM11.7498 22.1564C14.5189 22.1564 16.8345 21.2254 18.6965 19.3634C20.5584 17.5015 21.4894 15.1859 21.4894 12.4168C21.4894 9.64773 20.5584 7.33219 18.6965 5.47021C16.8345 3.60824 14.5189 2.67725 11.7498 2.67725C8.98074 2.67725 6.6652 3.60824 4.80322 5.47021C2.94124 7.33219 2.01025 9.64773 2.01025 12.4168C2.01025 15.1859 2.94124 17.5015 4.80322 19.3634C6.6652 21.2254 8.98074 22.1564 11.7498 22.1564Z" fill="url(#paint0_linear_688_1436)"/>
<defs>
<linearGradient id="paint0_linear_688_1436" x1="11.7498" y1="0.958496" x2="11.7498" y2="23.8752" gradientUnits="userSpaceOnUse">
<stop stop-color="#05C3FF"/>
<stop offset="1" stop-color="#3F76FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,3 @@
<svg width="56" height="44" viewBox="0 0 56 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M47.4372 3.66969C43.7647 1.93284 39.8795 0.698737 35.8842 0C35.3865 0.909407 34.8051 2.13256 34.4041 3.10565C30.0965 2.45095 25.8285 2.45095 21.6 3.10565C21.1993 2.13278 20.6047 0.909407 20.1025 0C16.1033 0.699059 12.2147 1.93631 8.54042 3.67875C1.22892 14.8466 -0.753172 25.7367 0.237766 36.4727C5.08723 40.1331 9.78686 42.3567 14.4073 43.8118C15.5556 42.2157 16.5707 40.5259 17.442 38.7598C15.7831 38.1214 14.1838 37.3347 12.6632 36.409C13.0634 36.1092 13.4541 35.7968 13.8348 35.4722C23.049 39.8284 33.0608 39.8284 42.1651 35.4722C42.5475 35.7946 42.9381 36.107 43.3365 36.409C41.8135 37.3371 40.2113 38.1254 38.549 38.7644C39.4253 40.5377 40.4385 42.2292 41.5837 43.8163C46.2085 42.3614 50.9125 40.1377 55.762 36.4727C56.9249 24.0271 53.7757 13.2367 47.4372 3.66947V3.66969ZM18.6974 29.8703C15.9313 29.8703 13.6629 27.2601 13.6629 24.0817C13.6629 20.9033 15.883 18.2887 18.6974 18.2887C21.5121 18.2887 23.7803 20.8987 23.732 24.0817C23.7363 27.2601 21.5121 29.8703 18.6974 29.8703ZM37.3023 29.8703C34.5362 29.8703 32.268 27.2601 32.268 24.0817C32.268 20.9033 34.4879 18.2887 37.3023 18.2887C40.117 18.2887 42.3852 20.8987 42.3369 24.0817C42.3369 27.2601 40.117 29.8703 37.3023 29.8703Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,3 @@
<svg width="133" height="103" viewBox="0 0 133 103" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M112.663 8.59041C103.941 4.52461 94.7137 1.63568 85.2249 0C84.043 2.12884 82.6621 4.99214 81.7098 7.27004C71.4791 5.73746 61.3426 5.73746 51.3 7.27004C50.3483 4.99265 48.9362 2.12884 47.7433 0C38.2452 1.63643 29.0099 4.53272 20.2835 8.61163C2.91869 34.7545 -1.78878 60.2472 0.564694 85.3792C12.0822 93.9479 23.2438 99.1533 34.2173 102.56C36.9445 98.8231 39.3553 94.8674 41.4248 90.7332C37.4848 89.2388 33.6865 87.3972 30.0751 85.2302C31.0255 84.5284 31.9535 83.797 32.8577 83.0372C54.7414 93.2347 78.5193 93.2347 100.142 83.0372C101.05 83.792 101.978 84.5233 102.924 85.2302C99.3071 87.4028 95.5017 89.2482 91.5538 90.744C93.6351 94.8951 96.0415 98.8546 98.7613 102.57C109.745 99.1642 120.917 93.9588 132.435 85.3792C135.197 56.2452 127.717 30.9859 112.663 8.58989V8.59041ZM44.4064 69.9235C37.8369 69.9235 32.4494 63.8134 32.4494 56.3731C32.4494 48.9328 37.7221 42.8123 44.4064 42.8123C51.0912 42.8123 56.4782 48.9219 56.3634 56.3731C56.3738 63.8134 51.0912 69.9235 44.4064 69.9235ZM88.593 69.9235C82.0236 69.9235 76.6365 63.8134 76.6365 56.3731C76.6365 48.9328 81.9087 42.8123 88.593 42.8123C95.2778 42.8123 100.665 48.9219 100.55 56.3731C100.55 63.8134 95.2778 69.9235 88.593 69.9235Z" fill="#6D8AF5"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,3 @@
<svg width="114" height="111" viewBox="0 0 114 111" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M57.0007 0.333496C49.5591 0.333496 42.1904 1.79922 35.3153 4.64699C28.4401 7.49476 22.1933 11.6688 16.9313 16.9308C6.30421 27.5578 0.333984 41.9712 0.333984 57.0002C0.333984 82.0468 16.5973 103.297 39.094 110.834C41.9273 111.287 42.834 109.53 42.834 108V98.4235C27.1373 101.824 23.794 90.8302 23.794 90.8302C21.1873 84.2568 17.504 82.5002 17.504 82.5002C12.3473 78.9868 17.9007 79.1002 17.9007 79.1002C23.5673 79.4968 26.5707 84.9368 26.5707 84.9368C31.5007 93.5502 39.8307 91.0002 43.0607 89.6402C43.5707 85.9568 45.044 83.4635 46.6307 82.0468C34.0507 80.6302 20.8473 75.7568 20.8473 54.1668C20.8473 47.8768 23.0007 42.8335 26.684 38.8102C26.1173 37.3935 24.134 31.5002 27.2507 23.8502C27.2507 23.8502 32.0107 22.3202 42.834 29.6302C47.3107 28.3835 52.184 27.7602 57.0007 27.7602C61.8173 27.7602 66.6907 28.3835 71.1673 29.6302C81.9907 22.3202 86.7507 23.8502 86.7507 23.8502C89.8673 31.5002 87.884 37.3935 87.3173 38.8102C91.0007 42.8335 93.154 47.8768 93.154 54.1668C93.154 75.8135 79.894 80.5735 67.2573 81.9902C69.2973 83.7468 71.1673 87.2035 71.1673 92.4735V108C71.1673 109.53 72.074 111.344 74.964 110.834C97.4607 103.24 113.667 82.0468 113.667 57.0002C113.667 49.5586 112.202 42.1899 109.354 35.3148C106.506 28.4397 102.332 22.1928 97.07 16.9308C91.8081 11.6688 85.5612 7.49476 78.6861 4.64699C71.8109 1.79922 64.4422 0.333496 57.0007 0.333496Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="53" height="43" viewBox="0 0 53 43" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M52.2812 5.76271C50.3471 6.60313 48.3006 7.15682 46.2065 7.40627C48.4073 6.11761 50.0623 4.07035 50.8611 1.64846C48.7805 2.86511 46.5079 3.71877 44.1408 4.17287C43.144 3.12822 41.9453 2.29718 40.6173 1.73025C39.2894 1.16332 37.86 0.87235 36.4161 0.875018C30.5702 0.875018 25.8394 5.53713 25.8394 11.2842C25.8352 12.0836 25.9268 12.8806 26.1122 13.6582C21.9203 13.4617 17.8155 12.3923 14.0605 10.5186C10.3055 8.64476 6.98304 6.00781 4.30557 2.77638C3.36624 4.35991 2.86948 6.16667 2.86719 8.00783C2.86719 11.6172 4.75029 14.8076 7.59375 16.6768C5.90908 16.6368 4.25894 16.1909 2.7834 15.377V15.5059C2.7834 20.5547 6.43574 24.7549 11.2697 25.711C10.3607 25.9533 9.42397 26.0761 8.4832 26.0762C7.81566 26.0774 7.14963 26.0126 6.49482 25.8828C7.83867 30.0186 11.7499 33.0264 16.383 33.1123C12.6183 36.0137 7.99617 37.5819 3.24316 37.5703C2.39949 37.5691 1.5566 37.5189 0.71875 37.4199C5.554 40.5075 11.1746 42.1406 16.9115 42.125C36.3936 42.125 47.0369 26.2588 47.0369 12.4981C47.0369 12.0469 47.0251 11.5957 47.0036 11.1553C49.0694 9.68582 50.8566 7.85971 52.2812 5.76271Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z" fill="#1da1f1"/></svg>

After

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

View File

@ -0,0 +1,10 @@
<svg width="151" height="35" viewBox="0 0 151 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M40.3301 1.00018H50.4301C52.3344 0.96393 54.2273 1.30375 56.0001 2.00018C57.6195 2.6545 59.0106 3.77086 60.0001 5.21018C61.0612 6.872 61.585 8.82028 61.5001 10.7902C61.5813 12.8037 61.059 14.7956 60.0001 16.5102C59.0273 18.0146 57.6374 19.203 56.0001 19.9302C54.244 20.708 52.3405 21.0969 50.4201 21.0702H45.5501V34.4302H40.3301V1.00018ZM45.5501 16.8002H49.0001C50.19 16.8126 51.3734 16.6233 52.5001 16.2402C53.5061 15.8944 54.3798 15.2444 55.0001 14.3802C55.6514 13.3769 55.9731 12.1952 55.9201 11.0002C56.001 9.78031 55.6777 8.56776 55.0001 7.55018C54.3614 6.72011 53.4809 6.10866 52.4801 5.80018C51.3552 5.44259 50.1804 5.26704 49.0001 5.28018H45.5501V16.8002Z" fill="#F2F2F2"/>
<path d="M71.7895 34.43H66.4395V1H71.7895V34.43Z" fill="#F2F2F2"/>
<path d="M93.8298 34.4302V30.0502C93.5569 30.6645 93.1739 31.2237 92.6998 31.7002C91.9689 32.4725 91.1095 33.112 90.1598 33.5902C88.9837 34.1748 87.6827 34.4631 86.3698 34.4302C84.5743 34.4627 82.8051 33.9967 81.2586 33.084C79.7121 32.1713 78.4491 30.8477 77.6098 29.2602C76.7044 27.5276 76.2504 25.5947 76.2898 23.6402C76.2479 21.679 76.702 19.7391 77.6098 18.0002C78.4481 16.4104 79.7104 15.084 81.2567 14.1679C82.8029 13.2518 84.5727 12.7818 86.3698 12.8102C87.6462 12.776 88.9141 13.0289 90.0798 13.5502C91.0124 13.9744 91.8649 14.5562 92.5998 15.2702C93.1209 15.7485 93.5247 16.3405 93.7798 17.0002V13.4102H99.0598V34.4102L93.8298 34.4302ZM81.5398 23.6402C81.5121 24.8414 81.813 26.0273 82.4098 27.0702C82.9484 27.9992 83.7213 28.7706 84.6513 29.3076C85.5813 29.8445 86.6359 30.1281 87.7098 30.1302C88.7975 30.1636 89.8724 29.8871 90.809 29.3329C91.7456 28.7787 92.5054 27.9697 92.9998 27.0002C93.538 25.9528 93.8061 24.7875 93.7798 23.6102C93.8074 22.4295 93.5393 21.2607 92.9998 20.2102C92.4768 19.2938 91.7214 18.5315 90.8098 18.0002C89.8742 17.4394 88.8003 17.1519 87.7098 17.1702C86.656 17.172 85.6213 17.4514 84.7098 17.9802C83.7655 18.526 82.9798 19.3084 82.4298 20.2502C81.8348 21.2801 81.5275 22.4509 81.5398 23.6402V23.6402Z" fill="#F2F2F2"/>
<path d="M116.77 12.8203C118.147 12.8219 119.509 13.1079 120.77 13.6603C122.074 14.2354 123.184 15.1725 123.97 16.3603C124.866 17.7998 125.306 19.4766 125.23 21.1703V34.4303H119.88V22.1403C119.942 21.4105 119.858 20.6759 119.633 19.9789C119.408 19.2819 119.047 18.6366 118.57 18.0803C118.128 17.6437 117.6 17.3023 117.021 17.077C116.441 16.8517 115.822 16.7474 115.2 16.7703C114.275 16.7765 113.371 17.0434 112.59 17.5403C111.765 18.0656 111.079 18.7826 110.59 19.6303C110.065 20.542 109.796 21.5784 109.81 22.6303V34.4303H104.48V13.4303H109.81V16.8703C110.041 16.1787 110.456 15.5632 111.01 15.0903C111.746 14.4206 112.592 13.8828 113.51 13.5003C114.539 13.052 115.649 12.8205 116.77 12.8203V12.8203Z" fill="#F2F2F2"/>
<path d="M134.179 24.88C134.194 25.8983 134.459 26.8973 134.949 27.79C135.444 28.6538 136.186 29.3503 137.079 29.79C138.149 30.3092 139.33 30.5598 140.519 30.52C141.54 30.5376 142.555 30.3751 143.519 30.04C144.283 29.7577 145.001 29.3634 145.649 28.87C146.119 28.5014 146.536 28.0708 146.889 27.59L149.249 30.8C148.706 31.52 148.051 32.148 147.309 32.66C146.428 33.2585 145.445 33.6922 144.409 33.94C143.015 34.2761 141.583 34.4308 140.149 34.4C138.13 34.4525 136.131 33.9805 134.349 33.03C132.731 32.1419 131.405 30.8048 130.529 29.18C129.596 27.3848 129.131 25.3828 129.179 23.36C129.17 21.4953 129.612 19.6562 130.469 18C131.288 16.4157 132.544 15.1001 134.089 14.21C135.802 13.3226 137.698 12.847 139.626 12.821C141.555 12.7949 143.463 13.2192 145.199 14.06C146.707 14.8728 147.939 16.1154 148.739 17.63C149.622 19.3649 150.056 21.2939 149.999 23.24C149.999 23.37 149.999 23.65 149.999 24.06C150.004 24.335 149.981 24.6098 149.929 24.88H134.179ZM144.999 21C144.958 20.3618 144.777 19.7406 144.469 19.18C144.091 18.4566 143.529 17.846 142.839 17.41C141.939 16.858 140.893 16.593 139.839 16.65C138.755 16.5995 137.678 16.8523 136.729 17.38C136.083 17.764 135.531 18.289 135.116 18.9158C134.7 19.5425 134.431 20.2549 134.329 21H144.999Z" fill="#F2F2F2"/>
<path d="M32.8492 1.30029H10.9492V12.2503H21.8992V23.2003H32.8492V1.30029Z" fill="#F2F2F2"/>
<path d="M10.95 12.25H0V23.18H10.95V12.25Z" fill="#F2F2F2"/>
<path d="M21.9105 23.2002H10.9805V34.1502H21.9105V23.2002Z" fill="#F2F2F2"/>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,5 @@
<svg width="37" height="37" viewBox="0 0 37 37" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M36.8286 0.171143H12.3906V12.3906H24.6091V24.6091H36.8286V0.171143Z" fill="#F2F2F2"/>
<path d="M12.3904 12.3906H0.171875V24.5818H12.3904V12.3906Z" fill="#F2F2F2"/>
<path d="M24.6091 24.6094H12.418V36.8279H24.6091V24.6094Z" fill="#F2F2F2"/>
</svg>

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

132
apps/www/styles/global.css Normal file
View File

@ -0,0 +1,132 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@font-face {
font-family: "Lexend", sans-serif;
font-style: normal;
font-weight: 100 300 400 500 600 900;
font-display: optional;
src: url(/fonts/inter-v7-latin-regular.woff2) format("woff2");
}
html {
scroll-behavior: smooth;
min-width: 360px;
}
body {
font-family: "Lexend", sans-serif, BlinkMacSystemFont, "Segoe UI", Helvetica,
"Apple Color Emoji", Inter, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
/* background-color: #e5e5e5; */
}
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
}
::-webkit-scrollbar-thumb {
background: #888;
border-radius: 8px;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
@layer utilities {
@variants responsive {
/* Chrome, Safari and Opera */
.scrollbar-hidden::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge add Firefox */
.scrollbar-hidden {
-ms-overflow-style: none;
scrollbar-width: none; /* Firefox */
}
}
}
.loader {
border-top-color: #3498db;
-webkit-animation: spinner 1.5s linear infinite;
animation: spinner 1.5s linear infinite;
}
@-webkit-keyframes spinner {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spinner {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.hero-gradient {
background: linear-gradient(
145.77deg,
#18c0ea 0%,
#848fec 26.36%,
#c671eb 51.56%,
#e55c8f 76.51%,
#f5515f 100%
);
}
.form-gradient {
background: linear-gradient(110.01deg, #0575e6 0%, #021b79 100%);
}
.triangle-right {
border-left: 96vw solid #f8f8fa;
border-bottom: 200px solid transparent;
}
.button-gradient {
background: linear-gradient(98.61deg, #3f76ff -1.18%, #05c3ff 102.69%);
}
.text-gradient {
background: linear-gradient(98.61deg, #3f76ff -1.18%, #05c3ff 102.69%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-fill-color: transparent;
}
.card-gradient {
background: linear-gradient(
138.04deg,
rgba(255, 255, 255, 0.1) 10.76%,
rgba(255, 255, 255, 0.05) 87.87%
);
}
.nav-border-gradient {
background: linear-gradient(
270deg,
rgba(255, 255, 255, 0) 0%,
#ffffff 47.71%,
rgba(255, 255, 255, 0) 100%
);
}
.card-border-gradient {
background: linear-gradient(141.85deg, #096e8d 4.6%, #00091f 100%);
}
.nav-gradient {
background: linear-gradient(
90.09deg,
rgba(21, 21, 21, 0.4) 2.9%,
rgba(21, 21, 21, 0.32) 98.12%
);
}

View File

@ -0,0 +1,22 @@
module.exports = {
mode: "jit",
purge: [
"./pages/**/*.tsx",
"./components/**/*.tsx",
"./layouts/**/*.tsx",
"./ui/**/*.tsx"
],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {
colors: {},
gridTemplateRows: {
10: "repeat(10,minmax(0, 1fr))"
}
}
},
variants: {
extend: {}
},
plugins: []
};

58
apps/www/tsconfig.json Normal file
View File

@ -0,0 +1,58 @@
{
"compilerOptions": {
"baseUrl": ".",
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"paths": {
"@components/*": [
"components/*"
],
"@layouts/*": [
"layouts/*"
],
"@lib/*": [
"lib/*"
],
"@config/*": [
"config/*"
],
"@styles/*": [
"styles/*"
],
"@constants/*": [
"constants/*"
],
"@icons/*": [
"icons/*"
],
"@configuration/*": [
"configuration/*"
]
},
"incremental": true
},
"exclude": [
"node_modules"
],
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
"next.config.js"
]
}

View File

@ -16,5 +16,6 @@
"eslint": "^8.28.0",
"eslint-config-turbo": "latest",
"turbo": "latest"
}
},
"packageManager": "pnpm@7.17.1"
}

File diff suppressed because it is too large Load Diff