This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
authentik/website/src/pages/index.jsx

180 lines
7.9 KiB
React
Raw Normal View History

import React from "react";
import clsx from "clsx";
import Layout from "@theme/Layout";
import Link from "@docusaurus/Link";
import BrowserOnly from "@docusaurus/core/lib/client/exports/BrowserOnly";
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
import useBaseUrl from "@docusaurus/useBaseUrl";
import styles from "./styles.module.css";
import Comparison from "../comparison";
import 'react-before-after-slider-component/dist/build.css';
const features = [
{
title: "Easy to Use",
description: (
<>
Identity made easy. authentik makes single-sign on (SSO), user
enrollment, and access control simple.
</>
),
},
{
title: "Realise your workflow",
description: (
<>
authentik lets you build your workflow as you need it, no
limitations.
</>
),
},
{
title: "Powered by Python",
description: (
<>
Implement custom verification or access control logic using
Python code.
</>
),
},
];
function Feature({ imageUrl, title, description }) {
const imgUrl = useBaseUrl(imageUrl);
return (
<div className={clsx("col col--4", styles.feature)}>
{imgUrl && (
<div className="text--center">
<img
className={styles.featureImage}
src={imgUrl}
alt={title}
/>
</div>
)}
<h3>{title}</h3>
<p>{description}</p>
</div>
);
}
function Home() {
const context = useDocusaurusContext();
const { siteConfig = {} } = context;
return (
<Layout title="Welcome" description={siteConfig.tagline}>
<header className={clsx("hero hero--primary", styles.heroBanner)}>
<div className="container">
<div className="row">
<div className="col padding-top--lg">
<h1 className="hero__title">
Making authentication simple.
</h1>
<p className="hero__subtitle">
2020-12-05 21:08:42 +00:00
authentik is an open-source Identity Provider
focused on flexibility and versatility
</p>
<div className={styles.buttons}>
<Link
className={clsx(
"button button--outline button--secondary button--lg",
styles.getStarted
)}
to={useBaseUrl("docs/installation/")}
>
Get Started
</Link>
</div>
</div>
<div className="col text--center hero_image">
2020-12-05 21:08:42 +00:00
<img alt="authentik logo" src={useBaseUrl("img/icon_top_brand.svg")} />
</div>
</div>
</div>
</header>
<main>
<section className={styles.features}>
<div className="container">
2020-12-05 21:08:42 +00:00
<div className={clsx("row", styles.rowFeatures)}>
{features.map((props, idx) => (
<Feature key={idx} {...props} />
))}
</div>
<div className="row">
<div className="col col--5">
2020-12-05 21:08:42 +00:00
<div>
<BrowserOnly>
{() => {
const ReactBeforeSliderComponent = require('react-before-after-slider-component');
return <ReactBeforeSliderComponent
firstImage={{
id: 1,
imageUrl: useBaseUrl("img/screen_apps_light.jpg"),
}}
secondImage={{
id: 2,
imageUrl: useBaseUrl("img/screen_apps_dark.jpg"),
}}
/>
}}
</BrowserOnly>
2020-12-05 21:08:42 +00:00
</div>
</div>
<div className="col col--5 col--offset-2 padding-vert--xl">
2020-12-05 21:08:42 +00:00
<h2>What is authentik?</h2>
<p>
2020-12-05 21:08:42 +00:00
authentik is an open-source Identity Provider
focused on flexibility and versatility. You
2020-12-05 21:08:42 +00:00
can use authentik in an existing environment
to add support for new protocols, implement
sign-up/recovery/etc. in your application so
you don't have to deal with it, and many other
things.
</p>
</div>
</div>
2020-12-05 21:08:42 +00:00
<div className="row">
<div className="col col--5 col--offset-2 padding-vert--xl">
<h2>Utmost flexibility</h2>
2020-12-05 21:08:42 +00:00
<p>
You can adopt authentik to your environment,
2020-12-29 19:38:38 +00:00
regardless of your requirements. Need an Active-Directory
integrated SSO Provider? Do you want
2020-12-05 21:08:42 +00:00
to implement a custom enrollment process for your
customers? Are you developing an application and
don't want to deal with User verification and recovery?
authentik can do all of that, and more!
</p>
</div>
<div className="col col--5">
<div>
<BrowserOnly>
{() => {
const ReactBeforeSliderComponent = require('react-before-after-slider-component');
return <ReactBeforeSliderComponent
firstImage={{
id: 1,
imageUrl: useBaseUrl("img/screen_admin_light.jpg"),
}}
secondImage={{
id: 2,
imageUrl: useBaseUrl("img/screen_admin_dark.jpg"),
}}
/>
}}
</BrowserOnly>
2020-12-05 21:08:42 +00:00
</div>
</div>
</div>
</div>
</section>
<section>
<Comparison></Comparison>
</section>
</main>
</Layout>
);
}
export default Home;