New Home Page Design (#1557)

## Description

<!-- Insert PR description-->

## Type of change

<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Test
- [ ] 💻 CI/Deployment
- [ ] 🐹 Trivial/Minor

## Issue(s)

<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>

## Test Plan

<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [ ]  Unit test
- [ ] 💚 E2E
This commit is contained in:
Ahmed Cool Projects 2022-11-19 21:29:44 +01:00 committed by GitHub
parent 86c2f2c284
commit ae9141b82b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 6468 additions and 592 deletions

5885
docs/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -17,19 +17,29 @@
"@docusaurus/core": "2.2.0", "@docusaurus/core": "2.2.0",
"@docusaurus/plugin-google-gtag": "^2.2.0", "@docusaurus/plugin-google-gtag": "^2.2.0",
"@docusaurus/preset-classic": "2.2.0", "@docusaurus/preset-classic": "2.2.0",
"@loadable/component": "^5.15.2",
"@mdx-js/react": "^1.6.22", "@mdx-js/react": "^1.6.22",
"animate.css": "^4.1.1",
"clsx": "^1.2.1", "clsx": "^1.2.1",
"docusaurus-plugin-image-zoom": "^0.1.1", "docusaurus-plugin-image-zoom": "^0.1.1",
"docusaurus-plugin-sass": "^0.2.2", "docusaurus-plugin-sass": "^0.2.2",
"feather-icons": "^4.29.0",
"jarallax": "^2.0.4",
"mdx-mermaid": "^1.3.2", "mdx-mermaid": "^1.3.2",
"mermaid": "^9.2.2", "mermaid": "^9.2.2",
"prism-react-renderer": "^1.3.5", "prism-react-renderer": "^1.3.5",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"sass": "^1.56.1" "sass": "^1.56.1",
"tw-elements": "^1.0.0-alpha12",
"wowjs": "^1.1.3"
}, },
"devDependencies": { "devDependencies": {
"@docusaurus/module-type-aliases": "2.2.0" "@docusaurus/module-type-aliases": "2.2.0",
"@iconify/react": "^4.0.0",
"autoprefixer": "^10.4.13",
"postcss": "^8.4.19",
"tailwindcss": "^3.2.4"
}, },
"browserslist": { "browserslist": {
"production": [ "production": [

6
docs/postcss.config.js Normal file
View File

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

View File

@ -55,4 +55,4 @@ const sidebars = {
], ],
}; };
module.exports = sidebars; module.exports = sidebars;

View File

@ -1,61 +0,0 @@
import React from 'react';
import clsx from 'clsx';
import styles from './styles.module.css';
const FeatureList = [
{
title: 'Secure',
Svg: require('@site/static/img/security.svg').default,
description: (
<>
Corso provides secure data backup that protects customers against accidental data loss, service provider downtime, and malicious threats including ransomware attacks.
</>
),
},
{
title: 'Robust',
Svg: require('@site/static/img/data.svg').default,
description: (
<>
Corso, purpose-built for M365 protection, provides easy-to-use comprehensive backup and restore workflows that reduce backup time, improve time-to-recovery, reduce admin overhead, and replace unreliable scripts or workarounds.
</>
),
},
{
title: 'Low Cost',
Svg: require('@site/static/img/savings.svg').default,
description: (
<>
Corso, a 100% open-source tool, provides a free alternative for cost-conscious teams. It further reduces storage costs by supporting flexible retention policies and efficiently compressing and deduplicating data before storing it in low-cost cloud object storage.
</>
),
},
];
function Feature({Svg, title, description}) {
return (
<div className={clsx('col col--4')}>
<div className="text--center">
<Svg className={styles.featureSvg} role="img" />
</div>
<div className="text--center padding-horiz--md">
<h3>{title}</h3>
<p>{description}</p>
</div>
</div>
);
}
export default function HomepageFeatures() {
return (
<section className={styles.features}>
<div className="container">
<div className="row">
{FeatureList.map((props, idx) => (
<Feature key={idx} {...props} />
))}
</div>
</div>
</section>
);
}

View File

@ -1,11 +0,0 @@
.features {
display: flex;
align-items: center;
padding: 2rem 0;
width: 100%;
}
.featureSvg {
height: 200px;
width: 200px;
}

View File

@ -0,0 +1,38 @@
import { Icon } from "@iconify/react";
import React, { useEffect } from "react";
export default function BackToTop() {
function scroll() {
window.scrollTo({ top: 0, left: 0, behavior: "smooth" });
}
function scrollFunction() {
var mybutton = document.getElementById("back-to-top");
if (mybutton != null) {
if (
document.body.scrollTop > 500 ||
document.documentElement.scrollTop > 500
) {
mybutton.classList.add("flex");
mybutton.classList.remove("hidden");
} else {
mybutton.classList.add("hidden");
mybutton.classList.remove("flex");
}
}
}
useEffect(() => {
window.onscroll = function () {
scrollFunction();
};
}, []);
return (
<a
href="#"
onClick={() => scroll()}
id="back-to-top"
className="back-to-top flex-col justify-center items-center fixed hidden text-lg rounded-full z-10 bottom-5 right-5 h-9 w-9 text-center bg-indigo-600 text-white leading-9"
>
<Icon icon="mdi:arrow-up" color="#fff" />
</a>
);
}

View File

@ -0,0 +1,40 @@
import React, { useEffect } from "react";
import { Icon } from "@iconify/react";
export default function Cookies() {
function acceptCookies() {
document.cookie = "cookies=accepted; expires=Fri, 31 Dec 9999 23:59:59 GMT";
document.getElementById("cookies").style.display = "none";
}
return (
<div
id="cookies"
className="cookie-popup fixed max-w-lg bottom-3 right-3 left-3 sm:left-0 sm:right-0 mx-auto bg-white dark:bg-slate-900 shadow dark:shadow-gray-800 rounded-md pt-6 pb-2 px-6 z-50"
>
<p className="text-slate-400">
This website uses cookies to provide you with a great user experience.
By using it, you accept our{" "}
<a
href="cookies.html"
target="_blank"
className="text-emerald-600 dark:text-emerald-500 font-semibold"
>
use of cookies
</a>
.
</p>
<div className="cookie-popup-actions text-right">
<button
onClick={() => acceptCookies()}
className="absolute border-none !bg-transparent p-0 cursor-pointer font-semibold top-2 right-2"
>
<Icon
className="text-dark dark:text-slate-200 text-2xl"
icon="humbleicons:times"
/>
</button>
</div>
</div>
);
}

View File

@ -0,0 +1,69 @@
import React from "react";
import "animate.css";
export default function FirstSection() {
return (
<section className="relative home-wrapper items-center overflow-hidden">
<div
className="bg-[#151C3D] absolute"
style={{
left: "-20rem",
right: 0,
zIndex: 1,
top: "-30%",
height: "65rem",
width: "140rem",
transform: "rotate(-12deg)",
}}
></div>
<div
style={{
zIndex: "1 !important",
}}
className="container !z-10"
>
<div className="grid !z-10 grid-cols-1 md:mt-44 mt-32 text-center">
<div className="wow !z-10 animate__animated animate__fadeIn">
<h4 className="font-bold !z-10 !leading-relaxed text-4xl lg:text-5xl mb-5">
Free, Secure, and Open-Source
<br /> Backup for Microsoft 365
</h4>
<p className="text-slate-300 !z-10 text-xl max-w-xl mx-auto">
The #1 open-source backup tool for Microsoft 365
</p>
</div>
<div className="mt-12 !z-10 mb-6">
<a
href="https://docs.corsobackup.io/setup/download"
target="_blank"
className="text-2xl !z-10 !no-underline hover:text-white py-2 px-6 font-bold btn bg-indigo-800 hover:bg-indigo-900 border-indigo-800 hover:border-indigo-900 text-white rounded-md"
>
Download Now
</a>
</div>
<div
className="home-dashboard mt-8 !z-10 wow animate__ animate__fadeIn animated"
style={{
visibility: "visible",
animationName: "fadeIn",
}}
>
<img
src="assets/images/cloudbackup.svg"
className="w-[80%] inline-block"
alt="Cloud backup and storage"
/>
</div>
</div>
<div className="bg-indigo-600 w-8 h-16 !z-10 absolute left-2 lg:bottom-28 md:bottom-36 sm:bottom-40 bottom-16"></div>
<div className="bg-indigo-600/20 w-8 h-16 !z-10 absolute left-12 lg:bottom-32 md:bottom-40 sm:bottom-44 bottom-20"></div>
<div className="bg-indigo-600/20 !z-10 w-8 h-16 absolute right-12 xl:bottom-[420px] lg:bottom-[315px] md:bottom-[285px] sm:bottom-80 bottom-32"></div>
<div className="bg-indigo-600 w-8 h-16 !z-10 absolute right-2 xl:bottom-[440px] lg:bottom-[335px] md:bottom-[305px] sm:bottom-[340px] bottom-36"></div>
</div>
</section>
);
}

View File

@ -0,0 +1,69 @@
import React from "react";
import "animate.css";
import { Icon } from "@iconify/react";
export default function FourthSection() {
return (
<section className="relative md:py-16 py-12 md:pt-0 pt-0">
<div className="absolute bottom-0 left-0 !z-0 right-0 sm:h-2/3 h-4/5 bg-gradient-to-b from-indigo-500 to-indigo-600"></div>
<div className="container !z-50">
<div
className="grid grid-cols-1 justify-center wow animate__animated animate__fadeInUp"
data-wow-delay=".1s"
>
<div className="relative flex flex-col items-center justify-center z-1">
<div className="grid grid-cols-1 md:text-left text-center justify-center">
<div className="relative">
<img
src="assets/images/laptop-macbook.png"
className="mx-auto"
alt="Laptop image showing Microsoft 365 icons"
/>
</div>
</div>
<div className="content md:mt-0">
<div className="grid lg:grid-cols-12 grid-cols-1 md:text-left text-center justify-center">
<div className="lg:col-start-2 lg:col-span-10">
<div className="grid md:grid-cols-2 grid-cols-1 items-center">
<div className="mt-8">
<div className="section-title text-md-start">
<h3 className="md:text-3xl text-2xl md:leading-normal leading-normal font-semibold text-white mt-2">
Start Protecting Your
<br /> Microsoft 365 Data!
</h3>
<h6 className="text-white/50 text-lg font-semibold">
Corso is Free and Open Source
</h6>
</div>
</div>
<div className="mt-8">
<div className="section-title text-md-start">
<p className="text-white/50 max-w-xl mx-auto mb-2">
Follow our quick-start guide to start protecting your
business-critical Microsoft 365 data in just a few
minutes.
</p>
<a
href="https://docs.corsobackup.io/quickstart"
className="!text-white !no-underline flex flex-row items-center !hover:text-white"
>
Get Started{" "}
<Icon
icon="uim:angle-right-b"
className="align-middle"
/>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,29 @@
import React from "react";
import "animate.css";
import loadable from "@loadable/component";
import FirstSection from "./FirstSection";
import SecondSection from "./SecondSection";
import FourthSection from "./FourthSection";
import Cookies from "./Cookies";
const ThirdSectionComp = loadable(() => import("./ThirdSection"));
const BackToTopComp = loadable(() => import("./BackToTop"));
export function MainComp() {
return (
<>
{/* SECTION 1 */}
<FirstSection />
{/* SECTION 2 */}
<SecondSection />
{/* SECTION 3 */}
<ThirdSectionComp />
{/* SECTION 4 */}
<FourthSection />
{/* BACK TO TOP */}
<BackToTopComp />
{/* COOKIES */}
<Cookies />
</>
);
}

View File

@ -0,0 +1,32 @@
import React from "react";
import "animate.css";
export default function SecondSection() {
return (
<section className="relative items-center overflow-hidden">
<div className="container relative">
<div className="grid content-center relative w-full md:mt-24 mt-16 text-center">
<div className="wow animate__animated relative !w-full animate__fadeIn">
<div className="flex items-center bg-gray-200 rounded-t-lg h-6">
<div className="align-middle">
<img className="h-4 px-2" src="assets/images/powershell.svg" />
</div>
</div>
<div
className="!p-2 relative rounded-b-lg overflow-clip"
style={{
borderLeft: "1px solid #e5e7eb",
borderRight: "1px solid #e5e7eb",
borderBottom: "1px solid #e5e7eb",
}}
>
<video className="w-full" muted loop autoPlay playsInline>
<source src="assets/images/corso_demo.mp4" type="video/mp4" />
</video>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,675 @@
import React, { useEffect } from "react";
import feather from "feather-icons";
import { WOW } from "wowjs";
import { jarallax } from "jarallax";
import { Icon } from "@iconify/react";
import "animate.css";
import "tw-elements";
export default function ThirdSection() {
useEffect(() => {
new WOW().init();
feather.replace();
jarallax(document.querySelectorAll(".jarallax"), {
speed: 0.2,
});
});
return (
<section className="relative md:py-24 py-16 overflow-hidden">
<div className="container">
<div
className="grid grid-cols-1 pb-8 text-center wow animate__animated animate__fadeInUp"
data-wow-delay=".1s"
>
<h3 className="mb-6 mt-8 md:text-4xl text-3xl md:leading-normal leading-normal font-bold">
Key Features
</h3>
<p className="text-slate-400 max-w-xl mx-auto">
See why Corso is a perfect fit for your Microsoft 365 backup and
recovery needs.
</p>
</div>
<div className="grid lg:grid-cols-3 md:grid-cols-2 grid-cols-1 grid-flow-row-dense gap-[30px] mt-8">
<div
className="col-start-1 wow animate__animated animate__fadeInUp"
data-wow-delay=".1s"
>
<div className="flex transition-all duration-500 hover:scale-105 shadow dark:shadow-gray-800 hover:shadow-md dark:hover:shadow-gray-700 ease-in-out items-center p-3 rounded-md bg-white dark:bg-slate-900">
<div className="flex items-center justify-center h-[45px] min-w-[45px] -rotate-45 bg-gradient-to-r from-transparent to-indigo-600/10 text-indigo-600 text-center rounded-full mr-3">
<i data-feather="share-2" className="h-5 w-5 rotate-45"></i>
</div>
<div className="flex-1">
<h4 className="mb-0 text-lg font-medium">
Comprehensive Workflows
</h4>
</div>
</div>
</div>
<div
className="col-start-1 wow animate__animated animate__fadeInUp"
data-wow-delay=".1s"
>
<div className="flex transition-all duration-500 hover:scale-105 shadow dark:shadow-gray-800 hover:shadow-md dark:hover:shadow-gray-700 ease-in-out items-center p-3 rounded-md bg-white dark:bg-slate-900">
<div className="flex items-center justify-center h-[45px] min-w-[45px] -rotate-45 bg-gradient-to-r from-transparent to-indigo-600/10 text-indigo-600 text-center rounded-full mr-3">
<i data-feather="zap" className="h-5 w-5 rotate-45"></i>
</div>
<div className="flex-1">
<h4 className="mb-0 text-lg font-medium">High Throughput</h4>
</div>
</div>
</div>
<div
className="col-start-1 wow animate__animated animate__fadeInUp"
data-wow-delay=".1s"
>
<div className="flex transition-all duration-500 hover:scale-105 shadow dark:shadow-gray-800 hover:shadow-md dark:hover:shadow-gray-700 ease-in-out items-center p-3 rounded-md bg-white dark:bg-slate-900">
<div className="flex items-center justify-center h-[45px] min-w-[45px] -rotate-45 bg-gradient-to-r from-transparent to-indigo-600/10 text-indigo-600 text-center rounded-full mr-3">
<i data-feather="activity" className="h-5 w-5 rotate-45"></i>
</div>
<div className="flex-1">
<h4 className="mb-0 text-lg font-medium">Fault Tolerance</h4>
</div>
</div>
</div>
<div
className="lg:col-start-2 md:col-start-1 wow animate__animated animate__fadeInUp"
data-wow-delay=".3s"
>
<div className="flex transition-all duration-500 hover:scale-105 shadow dark:shadow-gray-800 hover:shadow-md dark:hover:shadow-gray-700 ease-in-out items-center p-3 rounded-md bg-white dark:bg-slate-900">
<div className="flex items-center justify-center h-[45px] min-w-[45px] -rotate-45 bg-gradient-to-r from-transparent to-indigo-600/10 text-indigo-600 text-center rounded-full mr-3">
<i data-feather="lock" className="h-5 w-5 rotate-45"></i>
</div>
<div className="flex-1">
<h4 className="mb-0 text-lg font-medium">
End-to-End Encryption
</h4>
</div>
</div>
</div>
<div
className="lg:col-start-2 md:col-start-1 wow animate__animated animate__fadeInUp"
data-wow-delay=".3s"
>
<div className="flex transition-all duration-500 hover:scale-105 shadow dark:shadow-gray-800 hover:shadow-md dark:hover:shadow-gray-700 ease-in-out items-center p-3 rounded-md bg-white dark:bg-slate-900">
<div className="flex items-center justify-center h-[45px] min-w-[45px] -rotate-45 bg-gradient-to-r from-transparent to-indigo-600/10 text-indigo-600 text-center rounded-full mr-3">
<i data-feather="copy" className="h-5 w-5 rotate-45"></i>
</div>
<div className="flex-1">
<h4 className="mb-0 text-lg font-medium">Deduplication</h4>
</div>
</div>
</div>
<div
className="lg:col-start-2 md:col-start-2 md:order-last wow animate__animated animate__fadeInUp"
data-wow-delay=".3s"
>
<div className="flex transition-all duration-500 hover:scale-105 shadow dark:shadow-gray-800 hover:shadow-md dark:hover:shadow-gray-700 ease-in-out items-center p-3 rounded-md bg-white dark:bg-slate-900">
<div className="flex items-center justify-center h-[45px] min-w-[45px] -rotate-45 bg-gradient-to-r from-transparent to-indigo-600/10 text-indigo-600 text-center rounded-full mr-3">
<i data-feather="minimize-2" className="h-5 w-5 rotate-45"></i>
</div>
<div className="flex-1">
<h4 className="mb-0 text-lg font-medium">Compression</h4>
</div>
</div>
</div>
<div
className="lg:col-start-3 md:col-start-2 wow animate__animated animate__fadeInUp"
data-wow-delay=".5s"
>
<div className="flex transition-all duration-500 hover:scale-105 shadow dark:shadow-gray-800 hover:shadow-md dark:hover:shadow-gray-700 ease-in-out items-center p-3 rounded-md bg-white dark:bg-slate-900">
<div className="flex items-center justify-center h-[45px] min-w-[45px] -rotate-45 bg-gradient-to-r from-transparent to-indigo-600/10 text-indigo-600 text-center rounded-full mr-3">
<i data-feather="code" className="h-5 w-5 rotate-45"></i>
</div>
<div className="flex-1">
<h4 className="mb-0 text-lg font-medium">Open Source</h4>
</div>
</div>
</div>
<div
className="lg:col-start-3 md:col-start-2 wow animate__animated animate__fadeInUp"
data-wow-delay=".5s"
>
<div className="flex transition-all duration-500 hover:scale-105 shadow dark:shadow-gray-800 hover:shadow-md dark:hover:shadow-gray-700 ease-in-out items-center p-3 rounded-md bg-white dark:bg-slate-900">
<div className="flex items-center justify-center h-[45px] min-w-[45px] -rotate-45 bg-gradient-to-r from-transparent to-indigo-600/10 text-indigo-600 text-center rounded-full mr-3">
<i
data-feather="upload-cloud"
className="h-5 w-5 rotate-45"
></i>
</div>
<div className="flex-1">
<h4 className="mb-0 text-lg font-medium">
Choice of Object Storage
</h4>
</div>
</div>
</div>
<div
className="lg:col-start-3 md:col-start-2 wow animate__animated animate__fadeInUp"
data-wow-delay=".5s"
>
<div className="flex transition-all duration-500 hover:scale-105 shadow dark:shadow-gray-800 hover:shadow-md dark:hover:shadow-gray-700 ease-in-out items-center p-3 rounded-md bg-white dark:bg-slate-900">
<div className="flex items-center justify-center h-[45px] min-w-[45px] -rotate-45 bg-gradient-to-r from-transparent to-indigo-600/10 text-indigo-600 text-center rounded-full mr-3">
<i
data-feather="check-circle"
className="h-5 w-5 rotate-45"
></i>
</div>
<div className="flex-1">
<h4 className="mb-0 text-lg font-medium">Retention Policies</h4>
</div>
</div>
</div>
</div>
</div>
<div className="container md:mt-24 mt-16">
<div className="container lg mx-auto">
<div className="grid grid-cols-1 pb-2 text-center wow animate__animated animate__fadeInUp">
<h3 className="mb-6 mt-8 md:text-4xl text-3xl md:leading-normal leading-normal font-bold">
Why Everyone{" "}
<span className="after:absolute after:right-0 after:left-0 after:bottom-1 after:lg:h-3 after:h-2 after:w-auto after:rounded-md after:bg-indigo-600/30 relative text-indigo-600">
Loves
<div className="absolute right-0 left-0 bottom-1 lg:h-3 h-2 w-auto rounded-md bg-indigo-600/30"></div>
</span>{" "}
Corso
</h3>
</div>
</div>
<div className="grid md:grid-cols-2 grid-cols-1 items-center gap-[30px]">
<div
className="relative wow animate__animated animate__fadeInLeft"
data-wow-delay=".3s"
>
<img
src="assets/images/why/chat.svg"
className="rounded-lg"
alt="Group discussion"
/>
<div className="overflow-hidden absolute lg:h-[400px] h-[320px] lg:w-[400px] w-[320px] bg-indigo-600/5 bottom-0 left-0 rotate-45 -z-1 rounded-3xl"></div>
</div>
<div
className="lg:ml-8 wow animate__animated animate__fadeInRight"
data-wow-delay=".3s"
>
<h3 className="mb-4 text-3xl leading-normal font-medium">
Community
</h3>
<p className="text-slate-400">
The Corso community provides a venue for M365 admins to share and
learn about the importance of data protection as well as best
practices around M365 secure configuration and compliance
management.
</p>
<ul className="list-none text-slate-400 mt-4">
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
Community-led blogs, forums, and discussions
</li>
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
Public and feedback-driven development roadmap{" "}
</li>
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
All community contributions welcome
</li>
</ul>
<div className="mt-4">
<a
href="https://discord.gg/63DTTSnuhT"
target="_blank"
className="btn btn-link !no-underline link-underline link-underline-black text-indigo-600 hover:text-indigo-600 after:bg-indigo-600 duration-500 ease-in-out"
>
Join Us On Discord{" "}
<Icon icon="uim:angle-right-b" className="align-middle" />
</a>
</div>
</div>
</div>
</div>
<div className="container md:mt-24 mt-16">
<div className="grid md:grid-cols-2 grid-cols-1 items-center gap-[30px]">
<div
className="relative order-1 md:order-2 wow animate__animated animate__fadeInRight"
data-wow-delay=".5s"
>
<img
src="assets/images/why/security.svg"
className="rounded-lg"
alt="Approval of fingerprint security"
/>
<div className="overflow-hidden absolute lg:h-[400px] h-[320px] lg:w-[400px] w-[320px] bg-indigo-600/5 bottom-0 right-0 rotate-45 -z-1 rounded-3xl"></div>
</div>
<div
className="lg:mr-8 order-2 md:order-1 wow animate__animated animate__fadeInLeft"
data-wow-delay=".5s"
>
<h3 className="mb-4 text-3xl leading-normal font-medium">
Data Security
</h3>
<p className="text-slate-400">
Corso provides secure data backup that protects customers against
accidental data loss, service provider downtime, and malicious
threats including ransomware attacks.
</p>
<ul className="list-none text-slate-400 mt-4">
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
End-to-end zero-trust AES-256 and TLS encryption
</li>
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
Support for air-gapped backup storage
</li>
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
Choice of backup storage provider and geo location
</li>
</ul>
</div>
</div>
</div>
<div className="container md:mt-24 mt-16">
<div className="grid md:grid-cols-2 grid-cols-1 items-center mt-8 gap-[30px]">
<div
className="relative wow animate__animated animate__fadeInLeft"
data-wow-delay=".5s"
>
<img
src="assets/images/why/data.svg"
className="rounded-lg"
alt="Data extraction dashboard"
/>
<div className="overflow-hidden absolute lg:h-[400px] h-[320px] lg:w-[400px] w-[320px] bg-indigo-600/5 bottom-0 left-0 rotate-45 -z-1 rounded-3xl"></div>
</div>
<div
className="lg:ml-8 wow animate__animated animate__fadeInRight"
data-wow-delay=".5s"
>
<h3 className="mb-4 text-3xl leading-normal font-medium">
Robust Backups
</h3>
<p className="text-slate-400">
Corso, purpose-built for M365 protection, provides easy-to-use
comprehensive backup and restore workflows that reduces backup
time, improve time-to-recovery, reduce admin overhead, and replace
unreliable scripts or workarounds.
</p>
<ul className="list-none text-slate-400 mt-4">
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
Constantly updated M365 Graph Data engine
</li>
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
Purpose-built, flexible, fine-grained data protection workflows
</li>
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
High-performance backup and recovery data movers
</li>
</ul>
<div className="mt-4">
<a
href="https://docs.corsobackup.io/quickstart"
target="_blank"
className="btn btn-link !no-underline link-underline link-underline-black text-indigo-600 hover:text-indigo-600 after:bg-indigo-600 duration-500 ease-in-out"
>
Use The Quick Start For Your First Backup{" "}
<Icon icon="uim:angle-right-b" className="align-middle" />
</a>
</div>
</div>
</div>
</div>
<div className="container md:mt-24 mt-16">
<div className="grid md:grid-cols-2 grid-cols-1 items-center gap-[30px]">
<div
className="relative order-1 md:order-2 wow animate__animated animate__fadeInRight"
data-wow-delay=".5s"
>
<img
src="assets/images/why/savings.svg"
className="rounded-lg"
alt="Adding money to a savings jar"
/>
<div className="overflow-hidden absolute lg:h-[400px] h-[320px] lg:w-[400px] w-[320px] bg-indigo-600/5 bottom-0 right-0 rotate-45 -z-1 rounded-3xl"></div>
</div>
<div
className="lg:mr-8 order-2 md:order-1 wow animate__animated animate__fadeInLeft"
data-wow-delay=".5s"
>
<h3 className="mb-4 text-3xl leading-normal font-medium">
Cost Savings
</h3>
<p className="text-slate-400">
Corso, a 100% open-source tool, provides a free alternative for
cost-conscious teams. It further reduces storage costs by
supporting flexible retention policies and efficiently compressing
and deduplicating data before storing it in low-cost cloud object
storage.
</p>
<ul className="list-none text-slate-400 mt-4">
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
Free forever OSS with no licensing costs
</li>
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
Client-side compression and deduplication
</li>
<li className="mb-1 flex">
<Icon
className="text-indigo-600 text-xl mr-2"
icon="material-symbols:check-circle-outline"
/>{" "}
Support for S3-compliant storage including AWS Glacier IA
</li>
</ul>
<div className="mt-4">
<a
href="https://docs.corsobackup.io/setup/repos"
target="_blank"
className="btn btn-link !no-underline link-underline link-underline-black text-indigo-600 hover:text-indigo-600 after:bg-indigo-600 duration-500 ease-in-out"
>
Read about our Object Storage support{" "}
<Icon icon="uim:angle-right-b" className="align-middle" />
</a>
</div>
</div>
</div>
</div>
{/* Accordions */}
<div className="container md:mb-8 mb-4 md:mt-24 mt-16 wow animate__animated animate__fadeInUp">
<div className="grid grid-cols-1 pb-8 text-center">
<h3 className="mb-6 mt-8 md:text-4xl text-3xl md:leading-normal leading-normal font-bold">
Frequently Asked Questions
</h3>
</div>
<div className="relative grid md:grid-cols-12 grid-cols-1 items-center gap-[30px]">
<div className="md:col-span-6">
<div className="relative">
<div className="relative rounded-xl overflow-hidden shadow-md dark:shadow-gray-800">
<div
className="w-full jarallax py-72 bg-slate-400 custom-bg_ bg-no-repeat bg-top"
data-jarallax='{"speed": 0.1}'
></div>
</div>
</div>
</div>
<div className="md:col-span-6">
<div className="accordion space-y-3" id="accordionExample">
<div className="accordion-item relative shadow dark:shadow-gray-800 rounded-md overflow-hidden">
<h2
className="accordion-header !cursor-pointer font-semibold"
id="headingOne"
>
<button
className="transition accordion-button border-none outline-none collapsed focus:outline-none !bg-transparent flex justify-between items-center p-5 w-full font-medium text-left"
type="button"
data-bs-toggle="collapse"
data-bs-target="#collapseOne"
aria-expanded="false"
aria-controls="collapseOne"
>
<span>What platforms does Corso run on?</span>
</button>
</h2>
<div
id="collapseOne"
className="accordion-collapse collapse"
aria-labelledby="headingOne"
data-bs-parent="#accordionExample"
>
<div className="accordion-body p-5">
<p className="text-slate-400 !visible dark:text-gray-400">
Corso has both native binaries and container images for
Windows, Linux, and macOS.
</p>
</div>
</div>
</div>
<div className="accordion-item relative shadow dark:shadow-gray-800 rounded-md overflow-hidden">
<h2
className="accordion-header !cursor-pointer font-semibold"
id="heading2"
>
<button
className="transition accordion-button border-none outline-none collapsed focus:outline-none !bg-transparent flex justify-between items-center p-5 w-full font-medium text-left"
type="button"
data-bs-toggle="collapse"
data-bs-target="#collapse2"
aria-expanded="false"
aria-controls="collapse2"
>
<span>
What Microsoft 365 services can I backup using Corso?
</span>
</button>
</h2>
<div
id="collapse2"
className="accordion-collapse collapse"
aria-labelledby="heading2"
data-bs-parent="#accordionExample"
>
<div className="accordion-body p-5">
<p className="text-slate-400 !visible dark:text-gray-400">
Corso currently supports OneDrive and Exchange. Support
for Teams and SharePoint is in active development and is
therefore not recommended for production use.
</p>
</div>
</div>
</div>
<div className="accordion-item relative shadow dark:shadow-gray-800 rounded-md overflow-hidden">
<h2
className="accordion-header !cursor-pointer font-semibold"
id="heading3"
>
<button
className="transition accordion-button border-none outline-none collapsed focus:outline-none !bg-transparent flex justify-between items-center p-5 w-full font-medium text-left"
type="button"
data-bs-toggle="collapse"
data-bs-target="#collapse3"
aria-expanded="false"
aria-controls="collapse3"
>
<span>What object storage does Corso support?</span>
</button>
</h2>
<div
id="collapse3"
className="accordion-collapse collapse"
aria-labelledby="heading3"
data-bs-parent="#accordionExample"
>
<div className="accordion-body p-5">
<p className="text-slate-400 dark:text-gray-400 !visible">
Corso supports any S3-compliant object storage system
including AWS S3 (including Glacier Instant Access),
Google Cloud Storage, and Backblaze. Azure Blob support is
coming soon.
</p>
</div>
</div>
</div>
<div className="accordion-item relative shadow dark:shadow-gray-800 rounded-md overflow-hidden">
<h2
className="accordion-header !cursor-pointer font-semibold"
id="heading4"
>
<button
className="transition accordion-button border-none outline-none collapsed focus:outline-none !bg-transparent flex justify-between items-center p-5 w-full font-medium text-left"
type="button"
data-bs-toggle="collapse"
data-bs-target="#collapse4"
aria-expanded="false"
aria-controls="collapse4"
>
<span>How can I get help for Corso?</span>
</button>
</h2>
<div
id="collapse4"
className="accordion-collapse collapse"
aria-labelledby="heading4"
data-bs-parent="#accordionExample"
>
<div className="accordion-body p-5">
<p className="text-slate-400 dark:text-gray-400 !visible">
If you are unable to find an answer in our documentation,
please file{" "}
<a
href="https://github.com/alcionai/corso/issues"
className="text-indigo-600"
target="_blank"
>
GitHub issues
</a>{" "}
for bugs or join the{" "}
<a
href="https://discord.gg/63DTTSnuhT"
className="text-indigo-600"
target="_blank"
>
Discord community
</a>
.
</p>
</div>
</div>
</div>
<div className="accordion-item relative shadow dark:shadow-gray-800 rounded-md overflow-hidden">
<h2
className="accordion-header !cursor-pointer font-semibold"
id="heading5"
>
<button
className="transition accordion-button border-none outline-none collapsed focus:outline-none !bg-transparent flex justify-between items-center p-5 w-full font-medium text-left"
type="button"
data-bs-toggle="collapse"
data-bs-target="#collapse5"
aria-expanded="false"
aria-controls="collapse5"
>
<span>What is Corso's open-source license?</span>
</button>
</h2>
<div
id="collapse5"
className="accordion-collapse collapse"
aria-labelledby="heading5"
data-bs-parent="#accordionExample"
>
<div className="accordion-body p-5">
<p className="text-slate-400 dark:text-gray-400 !visible">
Corso's source code is licensed under the OSI-approved
Apache v2 open-source license.
</p>
</div>
</div>
</div>
<div className="accordion-item relative shadow dark:shadow-gray-800 rounded-md overflow-hidden">
<h2
className="accordion-header !cursor-pointer font-semibold"
id="heading6"
>
<button
className="transition accordion-button border-none outline-none collapsed focus:outline-none !bg-transparent flex justify-between items-center p-5 w-full font-medium text-left"
type="button"
data-bs-toggle="collapse"
data-bs-target="#collapse6"
aria-expanded="false"
aria-controls="collapse6"
>
<span>How do I request a new feature?</span>
</button>
</h2>
<div
id="collapse6"
className="accordion-collapse collapse"
aria-labelledby="heading6"
data-bs-parent="#accordionExample"
>
<div className="accordion-body p-5">
<p className="text-slate-400 dark:text-gray-400 !visible">
You can request new features by creating a{" "}
<a
href="https://github.com/alcionai/corso/issues"
className="text-indigo-600"
target="_blank"
>
new GitHub issue
</a>{" "}
and labeling it as an enhancement.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -1,9 +1,45 @@
/** /**
* Any CSS included here will be global. The classic template CUSTOM TO THE NEW HOME PAGE
* bundles Infima by default. Infima is a CSS framework designed to
* work well for content-centric websites.
*/ */
@import url('https://fonts.googleapis.com/css2?family=Nunito&display=swap');
*{
font-family: 'Nunito', sans-serif !important;
}
html{
scroll-behavior: smooth !important;
}
.link-underline {
border-bottom-width: 0;
background-image: linear-gradient(transparent, transparent), linear-gradient(#4f46E5, #4f46E5);
background-size: 0 2px;
background-position: 0 100%;
background-repeat: no-repeat;
transition: background-size .5s ease-in-out;
}
.link-underline-black {
background-image: linear-gradient(transparent, transparent), linear-gradient(#4f46E5, #4f46E5);
}
.link-underline:hover {
background-size: 100% 2px;
background-position: 0 100%
}
@tailwind utilities;
@tailwind components;
.custom-bg_{
background: url("../../static/assets/images/cta.jpg")
}
/* You can override the default Infima variables here. */ /* You can override the default Infima variables here. */
:root { :root {
--ifm-color-primary: #1e204e; --ifm-color-primary: #1e204e;

View File

@ -1,40 +1,14 @@
import React from 'react'; import React from "react";
import clsx from 'clsx'; import Layout from "@theme/Layout";
import Layout from '@theme/Layout'; import { MainComp } from "../components/parts/MainComp";
import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import styles from './index.module.css';
import HomepageFeatures from '@site/src/components/HomepageFeatures';
function HomepageHeader() {
const {siteConfig} = useDocusaurusContext();
return (
<header className={clsx('hero hero--primary', styles.heroBanner)}>
<div className="container">
<h1 className="hero__title">{siteConfig.title}</h1>
<p className="hero__subtitle">{siteConfig.tagline}</p>
<div className={styles.buttons}>
<Link
className="button button--secondary button--lg"
to="/docs/quickstart">
Corso Quickstart
</Link>
</div>
</div>
</header>
);
}
export default function Home() { export default function Home() {
const {siteConfig} = useDocusaurusContext();
return ( return (
<Layout <Layout
title={`${siteConfig.title}`} title="Home Page"
description="Documentation for Corso, a free, secure, and open-source backup tool for Microsoft 365"> description="Documentation for Corso, a free, secure, and open-source backup tool for Microsoft 365"
<HomepageHeader /> >
<main> <MainComp />
<HomepageFeatures />
</main>
</Layout> </Layout>
); );
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

BIN
docs/static/assets/images/blog/work.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 138 KiB

BIN
docs/static/assets/images/corso_demo.mp4 vendored Normal file

Binary file not shown.

BIN
docs/static/assets/images/cta.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

1
docs/static/assets/images/favicon.svg vendored Normal file
View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1350 1350"><defs><style>.cls-1{fill:#205eab;}</style></defs><path class="cls-1" d="M733.67,1251.47c-75.58,0-146.63-29.43-200.08-82.88L40,675,533.6,181.42c53.43-53.45,124.49-82.89,200.08-82.89s146.63,29.43,200.07,82.89l293.52,293.51c110.32,110.33,110.32,289.83,0,400.14l-293.52,293.52c-53.43,53.44-124.49,82.88-200.07,82.88ZM145.48,675l440.85,440.86c81.26,81.24,213.44,81.22,294.68,0l293.52-293.52c81.24-81.24,81.24-213.43,0-294.68L881.01,234.15c-39.36-39.36-91.68-61.04-147.33-61.04s-107.99,21.68-147.34,61.04L145.48,675Z"/><g><path class="cls-1" d="M1079.78,673.48l-14.74-92.16c-2.24-15.96-14.18-24.79-32.94-24.79l-109.95-.31c-17.69,0-30.7-8.84-32.94-24.79l-.38-2.62c-3.57-25.34-21.36-46.39-45.77-54.13l-147.73-54.08c-3.68-1.19-7.09-3.07-10.03-5.56-1.06-.9-1.78-2.14-2.17-3.48l-27.63-94.9c-.28-.96-.79-1.85-1.56-2.48-8.12-6.68-20.56-4.33-25.58,5.17l-54.49,122.05c-1.98,3.74-3.12,7.88-3.33,12.12l6.69,55.63c-.31,5.88-2.41,11.57-6,16.24l-108.67,108.07c-11.57,11.57-35.77,35.77-35.77,35.77l304.33,304.36,27.13-111.43c2.33-13.05,13.15-22.89,26.34-23.96l57.58-4.64c179.88-7.69,181.76-59.61,233.29-140.3,3-4.72,4.6-10.19,4.6-15.74,0-1.33-.1-2.69-.29-4.02Zm-236.75-89.74c-13.26,3.33-50.23,1.19-53.56-12.07-3.33-13.24,28.27-32.6,41.51-35.91,13.26-3.33,26.7,4.72,30.03,17.98,3.31,13.24-4.74,26.7-17.98,30.01Z"/><path class="cls-1" d="M781.88,435.5l-29.01-108.92c-.32-1.19-1.04-2.24-2.04-2.96-6.43-4.6-15.71-2.63-19.55,4.64l-36.4,75.39,87,31.84Z"/><path class="cls-1" d="M726.53,992.3l-1.88,7.71c-4.28,17.56-26.12,23.68-38.91,10.9l-274.22-274.22-26.1-26.1,29.7-29.7,26.1,26.1,285.31,285.31Z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 523"><defs><style>.cls-1{fill:#205eab;}</style></defs><g><path class="cls-1" d="M134.51,129.94c28.63,0,54.6,7.95,75.81,22.79,11.67,7.95,14.31,23.33,6.36,36.58-7.42,12.19-25.98,12.73-37.64,5.83-12.73-7.42-28.63-12.19-44.53-12.19-41.35,0-77.93,30.22-77.93,76.34s36.58,75.81,77.93,75.81c15.91,0,31.81-4.77,44.53-12.19,11.66-6.89,30.22-6.36,37.64,5.83,7.95,13.25,5.3,28.63-6.36,36.58-21.21,14.84-47.18,22.8-75.81,22.8C63.47,388.12,2.5,337.76,2.5,259.29S63.47,129.94,134.51,129.94Z"/><path class="cls-1" d="M261.22,258.23c0-78.46,58.85-128.3,128.83-128.3s129.88,49.83,129.88,128.3-59.37,129.89-129.88,129.89-128.83-51.43-128.83-129.89Zm204.64,0c0-45.59-34.46-75.28-75.81-75.28s-74.75,29.69-74.75,75.28,33.93,76.87,74.75,76.87,75.81-30.22,75.81-76.87Z"/><path class="cls-1" d="M633.91,293.75v64.15c0,14.84-12.19,27.57-28.1,27.57-14.84,0-26.51-12.72-26.51-27.57V160.15c0-14.84,11.67-27.57,26.51-27.57,15.91,0,28.1,12.72,28.1,27.57v31.81c12.73-44,37.11-62.03,67.86-62.03,7.95,0,15.91,.53,23.33,2.12,13.79,3.18,22.8,16.97,19.62,31.28-4.77,23.86-28.63,18.03-44.53,18.03-46.65,0-66.27,46.65-66.27,112.39Z"/><path class="cls-1" d="M788.19,302.24c13.25-5.3,23.33,1.59,27.57,10.6,10.08,19.09,29.16,29.69,53.55,29.69s42.94-11.13,42.94-29.69c0-15.9-15.38-22.79-33.4-27.03l-33.4-7.95c-52.48-14.32-71.57-42.94-68.39-82.7,3.18-36.58,42.94-65.21,88.53-65.21,32.87,0,63.09,10.6,79.53,36.58,7.42,12.72,3.71,25.44-4.77,31.81-9.01,7.42-20.15,6.89-31.81-3.18-13.78-12.19-29.69-16.97-42.41-16.97-13.79,0-29.16,4.77-34.46,13.25-4.24,6.89-4.77,13.78-2.12,21.21,3.18,9.54,18.02,14.31,31.28,18.02l38.17,9.54c53.54,13.25,64.68,48.24,64.68,73.16,0,47.71-41.88,74.75-98.61,74.75-38.17,0-76.87-20.15-90.13-56.2-4.24-13.25,1.59-25.44,13.25-29.68Z"/><path class="cls-1" d="M1006.61,258.23c0-78.46,58.85-128.3,128.83-128.3s129.88,49.83,129.88,128.3-59.37,129.89-129.88,129.89-128.83-51.43-128.83-129.89Zm204.64,0c0-45.59-34.46-75.28-75.81-75.28s-74.75,29.69-74.75,75.28,33.93,76.87,74.75,76.87,75.81-30.22,75.81-76.87Z"/></g><path class="cls-1" d="M1658.37,520.7c-33.98,0-65.93-13.23-89.96-37.26l-221.94-221.93,221.94-221.93c24.03-24.03,55.98-37.27,89.96-37.27s65.93,13.23,89.96,37.27l131.98,131.97c49.6,49.61,49.6,130.31,0,179.92l-131.98,131.98c-24.03,24.03-55.98,37.26-89.96,37.26Zm-264.47-259.2l198.22,198.22c36.53,36.53,95.97,36.52,132.5,0l131.98-131.98c36.53-36.53,36.53-95.97,0-132.5l-131.98-131.97c-17.7-17.7-41.22-27.44-66.25-27.44s-48.55,9.75-66.25,27.44l-198.22,198.22Z"/><g><path class="cls-1" d="M1813.99,260.82l-6.63-41.44c-1.01-7.17-6.37-11.15-14.81-11.15l-49.44-.14c-7.95,0-13.8-3.97-14.81-11.15l-.17-1.18c-1.61-11.39-9.61-20.86-20.58-24.34l-66.42-24.32c-1.66-.53-3.19-1.38-4.51-2.5-.48-.41-.8-.96-.97-1.57l-12.42-42.67c-.13-.43-.36-.83-.7-1.12-3.65-3-9.25-1.95-11.5,2.32l-24.5,54.88c-.89,1.68-1.4,3.54-1.5,5.45l3.01,25.01c-.14,2.64-1.08,5.2-2.7,7.3l-48.86,48.59c-5.2,5.2-16.08,16.08-16.08,16.08l136.84,136.85,12.2-50.1c1.05-5.87,5.91-10.29,11.84-10.77l25.89-2.09c80.88-3.46,81.72-26.8,104.9-63.08,1.35-2.12,2.07-4.58,2.07-7.08,0-.6-.04-1.21-.13-1.81Zm-106.45-40.35c-5.96,1.5-22.58,.54-24.08-5.43-1.5-5.95,12.71-14.66,18.66-16.15,5.96-1.5,12,2.12,13.5,8.08,1.49,5.95-2.13,12-8.08,13.49Z"/><path class="cls-1" d="M1680.04,153.81l-13.04-48.97c-.14-.53-.47-1.01-.92-1.33-2.89-2.07-7.06-1.18-8.79,2.09l-16.37,33.9,39.12,14.32Z"/><path class="cls-1" d="M1655.16,404.17l-.85,3.47c-1.93,7.9-11.75,10.65-17.49,4.9l-123.3-123.3-11.74-11.74,13.35-13.35,11.74,11.74,128.28,128.28Z"/></g></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 523"><defs><style>.cls-1{fill:#fff;}</style></defs><g><path class="cls-1" d="M134.51,129.94c28.63,0,54.6,7.95,75.81,22.79,11.67,7.95,14.31,23.33,6.36,36.58-7.42,12.19-25.98,12.73-37.64,5.83-12.73-7.42-28.63-12.19-44.53-12.19-41.35,0-77.93,30.22-77.93,76.34s36.58,75.81,77.93,75.81c15.91,0,31.81-4.77,44.53-12.19,11.66-6.89,30.22-6.36,37.64,5.83,7.95,13.25,5.3,28.63-6.36,36.58-21.21,14.84-47.18,22.8-75.81,22.8C63.47,388.12,2.5,337.76,2.5,259.29S63.47,129.94,134.51,129.94Z"/><path class="cls-1" d="M261.22,258.23c0-78.46,58.85-128.3,128.83-128.3s129.88,49.83,129.88,128.3-59.37,129.89-129.88,129.89-128.83-51.43-128.83-129.89Zm204.64,0c0-45.59-34.46-75.28-75.81-75.28s-74.75,29.69-74.75,75.28,33.93,76.87,74.75,76.87,75.81-30.22,75.81-76.87Z"/><path class="cls-1" d="M633.91,293.75v64.15c0,14.84-12.19,27.57-28.1,27.57-14.84,0-26.51-12.72-26.51-27.57V160.15c0-14.84,11.67-27.57,26.51-27.57,15.91,0,28.1,12.72,28.1,27.57v31.81c12.73-44,37.11-62.03,67.86-62.03,7.95,0,15.91,.53,23.33,2.12,13.79,3.18,22.8,16.97,19.62,31.28-4.77,23.86-28.63,18.03-44.53,18.03-46.65,0-66.27,46.65-66.27,112.39Z"/><path class="cls-1" d="M788.19,302.24c13.25-5.3,23.33,1.59,27.57,10.6,10.08,19.09,29.16,29.69,53.55,29.69s42.94-11.13,42.94-29.69c0-15.9-15.38-22.79-33.4-27.03l-33.4-7.95c-52.48-14.32-71.57-42.94-68.39-82.7,3.18-36.58,42.94-65.21,88.53-65.21,32.87,0,63.09,10.6,79.53,36.58,7.42,12.72,3.71,25.44-4.77,31.81-9.01,7.42-20.15,6.89-31.81-3.18-13.78-12.19-29.69-16.97-42.41-16.97-13.79,0-29.16,4.77-34.46,13.25-4.24,6.89-4.77,13.78-2.12,21.21,3.18,9.54,18.02,14.31,31.28,18.02l38.17,9.54c53.54,13.25,64.68,48.24,64.68,73.16,0,47.71-41.88,74.75-98.61,74.75-38.17,0-76.87-20.15-90.13-56.2-4.24-13.25,1.59-25.44,13.25-29.68Z"/><path class="cls-1" d="M1006.61,258.23c0-78.46,58.85-128.3,128.83-128.3s129.88,49.83,129.88,128.3-59.37,129.89-129.88,129.89-128.83-51.43-128.83-129.89Zm204.64,0c0-45.59-34.46-75.28-75.81-75.28s-74.75,29.69-74.75,75.28,33.93,76.87,74.75,76.87,75.81-30.22,75.81-76.87Z"/></g><path class="cls-1" d="M1658.37,520.7c-33.98,0-65.93-13.23-89.96-37.26l-221.94-221.93,221.94-221.93c24.03-24.03,55.98-37.27,89.96-37.27s65.93,13.23,89.96,37.27l131.98,131.97c49.6,49.61,49.6,130.31,0,179.92l-131.98,131.98c-24.03,24.03-55.98,37.26-89.96,37.26Zm-264.47-259.2l198.22,198.22c36.53,36.53,95.97,36.52,132.5,0l131.98-131.98c36.53-36.53,36.53-95.97,0-132.5l-131.98-131.97c-17.7-17.7-41.22-27.44-66.25-27.44s-48.55,9.75-66.25,27.44l-198.22,198.22Z"/><g><path class="cls-1" d="M1813.99,260.82l-6.63-41.44c-1.01-7.17-6.37-11.15-14.81-11.15l-49.44-.14c-7.95,0-13.8-3.97-14.81-11.15l-.17-1.18c-1.61-11.39-9.61-20.86-20.58-24.34l-66.42-24.32c-1.66-.53-3.19-1.38-4.51-2.5-.48-.41-.8-.96-.97-1.57l-12.42-42.67c-.13-.43-.36-.83-.7-1.12-3.65-3-9.25-1.95-11.5,2.32l-24.5,54.88c-.89,1.68-1.4,3.54-1.5,5.45l3.01,25.01c-.14,2.64-1.08,5.2-2.7,7.3l-48.86,48.59c-5.2,5.2-16.08,16.08-16.08,16.08l136.84,136.85,12.2-50.1c1.05-5.87,5.91-10.29,11.84-10.77l25.89-2.09c80.88-3.46,81.72-26.8,104.9-63.08,1.35-2.12,2.07-4.58,2.07-7.08,0-.6-.04-1.21-.13-1.81Zm-106.45-40.35c-5.96,1.5-22.58,.54-24.08-5.43-1.5-5.95,12.71-14.66,18.66-16.15,5.96-1.5,12,2.12,13.5,8.08,1.49,5.95-2.13,12-8.08,13.49Z"/><path class="cls-1" d="M1680.04,153.81l-13.04-48.97c-.14-.53-.47-1.01-.92-1.33-2.89-2.07-7.06-1.18-8.79,2.09l-16.37,33.9,39.12,14.32Z"/><path class="cls-1" d="M1655.16,404.17l-.85,3.47c-1.93,7.9-11.75,10.65-17.49,4.9l-123.3-123.3-11.74-11.74,13.35-13.35,11.74,11.74,128.28,128.28Z"/></g></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1350 1350"><defs><style>.cls-1{fill:#205eab;}</style></defs><path class="cls-1" d="M733.67,1251.47c-75.58,0-146.63-29.43-200.08-82.88L40,675,533.6,181.42c53.43-53.45,124.49-82.89,200.08-82.89s146.63,29.43,200.07,82.89l293.52,293.51c110.32,110.33,110.32,289.83,0,400.14l-293.52,293.52c-53.43,53.44-124.49,82.88-200.07,82.88ZM145.48,675l440.85,440.86c81.26,81.24,213.44,81.22,294.68,0l293.52-293.52c81.24-81.24,81.24-213.43,0-294.68L881.01,234.15c-39.36-39.36-91.68-61.04-147.33-61.04s-107.99,21.68-147.34,61.04L145.48,675Z"/><g><path class="cls-1" d="M1079.78,673.48l-14.74-92.16c-2.24-15.96-14.18-24.79-32.94-24.79l-109.95-.31c-17.69,0-30.7-8.84-32.94-24.79l-.38-2.62c-3.57-25.34-21.36-46.39-45.77-54.13l-147.73-54.08c-3.68-1.19-7.09-3.07-10.03-5.56-1.06-.9-1.78-2.14-2.17-3.48l-27.63-94.9c-.28-.96-.79-1.85-1.56-2.48-8.12-6.68-20.56-4.33-25.58,5.17l-54.49,122.05c-1.98,3.74-3.12,7.88-3.33,12.12l6.69,55.63c-.31,5.88-2.41,11.57-6,16.24l-108.67,108.07c-11.57,11.57-35.77,35.77-35.77,35.77l304.33,304.36,27.13-111.43c2.33-13.05,13.15-22.89,26.34-23.96l57.58-4.64c179.88-7.69,181.76-59.61,233.29-140.3,3-4.72,4.6-10.19,4.6-15.74,0-1.33-.1-2.69-.29-4.02Zm-236.75-89.74c-13.26,3.33-50.23,1.19-53.56-12.07-3.33-13.24,28.27-32.6,41.51-35.91,13.26-3.33,26.7,4.72,30.03,17.98,3.31,13.24-4.74,26.7-17.98,30.01Z"/><path class="cls-1" d="M781.88,435.5l-29.01-108.92c-.32-1.19-1.04-2.24-2.04-2.96-6.43-4.6-15.71-2.63-19.55,4.64l-36.4,75.39,87,31.84Z"/><path class="cls-1" d="M726.53,992.3l-1.88,7.71c-4.28,17.56-26.12,23.68-38.91,10.9l-274.22-274.22-26.1-26.1,29.7-29.7,26.1,26.1,285.31,285.31Z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1350 1350"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="M733.67,1251.47c-75.58,0-146.63-29.43-200.08-82.88L40,675,533.6,181.42c53.43-53.45,124.49-82.89,200.08-82.89s146.63,29.43,200.07,82.89l293.52,293.51c110.32,110.33,110.32,289.83,0,400.14l-293.52,293.52c-53.43,53.44-124.49,82.88-200.07,82.88ZM145.48,675l440.85,440.86c81.26,81.24,213.44,81.22,294.68,0l293.52-293.52c81.24-81.24,81.24-213.43,0-294.68L881.01,234.15c-39.36-39.36-91.68-61.04-147.33-61.04s-107.99,21.68-147.34,61.04L145.48,675Z"/><g><path class="cls-1" d="M1079.78,673.48l-14.74-92.16c-2.24-15.96-14.18-24.79-32.94-24.79l-109.95-.31c-17.69,0-30.7-8.84-32.94-24.79l-.38-2.62c-3.57-25.34-21.36-46.39-45.77-54.13l-147.73-54.08c-3.68-1.19-7.09-3.07-10.03-5.56-1.06-.9-1.78-2.14-2.17-3.48l-27.63-94.9c-.28-.96-.79-1.85-1.56-2.48-8.12-6.68-20.56-4.33-25.58,5.17l-54.49,122.05c-1.98,3.74-3.12,7.88-3.33,12.12l6.69,55.63c-.31,5.88-2.41,11.57-6,16.24l-108.67,108.07c-11.57,11.57-35.77,35.77-35.77,35.77l304.33,304.36,27.13-111.43c2.33-13.05,13.15-22.89,26.34-23.96l57.58-4.64c179.88-7.69,181.76-59.61,233.29-140.3,3-4.72,4.6-10.19,4.6-15.74,0-1.33-.1-2.69-.29-4.02Zm-236.75-89.74c-13.26,3.33-50.23,1.19-53.56-12.07-3.33-13.24,28.27-32.6,41.51-35.91,13.26-3.33,26.7,4.72,30.03,17.98,3.31,13.24-4.74,26.7-17.98,30.01Z"/><path class="cls-1" d="M781.88,435.5l-29.01-108.92c-.32-1.19-1.04-2.24-2.04-2.96-6.43-4.6-15.71-2.63-19.55,4.64l-36.4,75.39,87,31.84Z"/><path class="cls-1" d="M726.53,992.3l-1.88,7.71c-4.28,17.56-26.12,23.68-38.91,10.9l-274.22-274.22-26.1-26.1,29.7-29.7,26.1,26.1,285.31,285.31Z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
docs/static/assets/images/modern.mp4 vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="PowerShell" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="204.691px" height="154.521px" viewBox="0 0 204.691 154.521" style="enable-background:new 0 0 204.691 154.521;"
xml:space="preserve">
<g>
<path style="display:none;fill-rule:evenodd;clip-rule:evenodd;fill:#2671BE;" d="M-47.547,226.872
c0-97.129,0.094-194.259-0.195-291.387c-0.021-6.982,1.404-8.411,8.388-8.389c94.397,0.292,188.798,0.292,283.195,0
c6.984-0.022,8.41,1.407,8.389,8.389c-0.289,97.128-0.195,194.258-0.195,291.387c-3.238,2.008-6.837,1.129-10.268,1.131
c-93.015,0.049-186.031,0.049-279.047,0C-40.711,228.001-44.31,228.88-47.547,226.872z"/>
<path style="fill-rule:evenodd;clip-rule:evenodd;fill:#E0EAF5;" d="M120.14,0.032c23.011-0.008,46.023-0.078,69.034,0.019
c13.68,0.056,17.537,4.627,14.588,18.137c-8.636,39.566-17.466,79.092-26.415,118.589c-2.83,12.484-9.332,17.598-22.465,17.637
c-46.023,0.137-92.046,0.152-138.068-0.006c-15.043-0.053-19-5.148-15.759-19.404C9.849,96.287,18.69,57.582,27.602,18.892
C30.997,4.148,36.099,0.1,51.104,0.057C74.116-0.008,97.128,0.04,120.14,0.032z"/>
<path style="fill-rule:evenodd;clip-rule:evenodd;fill:#2671BE;" d="M85.365,149.813c-23.014-0.008-46.029,0.098-69.042-0.053
c-11.67-0.076-13.792-2.83-11.165-14.244c8.906-38.71,18.099-77.355,26.807-116.109C34.3,9.013,39.337,4.419,50.473,4.522
c46.024,0.427,92.056,0.137,138.083,0.184c11.543,0.011,13.481,2.48,10.89,14.187c-8.413,38.007-16.879,76.003-25.494,113.965
c-3.224,14.207-6.938,16.918-21.885,16.951C129.833,149.856,107.598,149.821,85.365,149.813z"/>
<path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FDFDFE;" d="M104.948,73.951c-1.543-1.81-3.237-3.894-5.031-5.886
c-10.173-11.3-20.256-22.684-30.61-33.815c-4.738-5.094-6.248-10.041-0.558-15.069c5.623-4.97,11.148-4.53,16.306,1.188
c14.365,15.919,28.713,31.856,43.316,47.556c5.452,5.864,4.182,9.851-1.823,14.196c-23.049,16.683-45.968,33.547-68.862,50.443
c-5.146,3.799-10.052,4.75-14.209-0.861c-4.586-6.189-0.343-9.871,4.414-13.335c17.013-12.392,33.993-24.83,50.9-37.366
C101.146,79.256,104.527,78.238,104.948,73.951z"/>
<path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FCFDFD;" d="M112.235,133.819c-6.196,0-12.401,0.213-18.583-0.068
c-4.932-0.223-7.9-2.979-7.838-8.174c0.06-4.912,2.536-8.605,7.463-8.738c13.542-0.363,27.104-0.285,40.651-0.02
c4.305,0.084,7.483,2.889,7.457,7.375c-0.031,5.146-2.739,9.133-8.25,9.465c-6.944,0.42-13.931,0.104-20.899,0.104
C112.235,133.78,112.235,133.8,112.235,133.819z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 115 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 24 KiB

8
docs/tailwind.config.js Normal file
View File

@ -0,0 +1,8 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.{js,jsx,ts,tsx}"],
theme: {
extend: {},
},
plugins: [require("tw-elements/dist/plugin")],
};