revite/src/pages/login/Login.tsx

75 lines
2.7 KiB
TypeScript
Raw Normal View History

2021-06-18 15:21:54 -04:00
import { Helmet } from "react-helmet";
2021-07-05 06:23:23 -04:00
import { Route, Switch } from "react-router-dom";
import { LIBRARY_VERSION } from "revolt.js";
2021-06-18 15:21:54 -04:00
import styles from "./Login.module.scss";
2021-07-05 06:23:23 -04:00
import { Text } from "preact-i18n";
2021-06-18 15:21:54 -04:00
import { useContext } from "preact/hooks";
2021-07-05 06:23:23 -04:00
2021-06-18 15:21:54 -04:00
import { ThemeContext } from "../../context/Theme";
import { AppContext } from "../../context/revoltjs/RevoltClient";
2021-07-05 06:23:23 -04:00
import LocaleSelector from "../../components/common/LocaleSelector";
2021-06-18 15:21:54 -04:00
2021-07-05 06:23:23 -04:00
import { APP_VERSION } from "../../version";
2021-06-18 15:21:54 -04:00
import background from "./background.jpg";
import { FormCreate } from "./forms/FormCreate";
2021-07-05 06:23:23 -04:00
import { FormLogin } from "./forms/FormLogin";
2021-06-18 15:21:54 -04:00
import { FormResend } from "./forms/FormResend";
import { FormReset, FormSendReset } from "./forms/FormReset";
2021-06-19 07:34:53 -04:00
export default function Login() {
2021-07-05 06:25:20 -04:00
const theme = useContext(ThemeContext);
const client = useContext(AppContext);
2021-06-18 15:21:54 -04:00
2021-07-05 06:25:20 -04:00
return (
<div className={styles.login}>
<Helmet>
<meta name="theme-color" content={theme.background} />
</Helmet>
<div className={styles.content}>
<div className={styles.attribution}>
<span>
API:{" "}
<code>{client.configuration?.revolt ?? "???"}</code>{" "}
&middot; revolt.js: <code>{LIBRARY_VERSION}</code>{" "}
&middot; App: <code>{APP_VERSION}</code>
</span>
<span>
<LocaleSelector />
</span>
</div>
<div className={styles.modal}>
<Switch>
<Route path="/login/create">
<FormCreate />
</Route>
<Route path="/login/resend">
<FormResend />
</Route>
<Route path="/login/reset/:token">
<FormReset />
</Route>
<Route path="/login/reset">
<FormSendReset />
</Route>
<Route path="/">
<FormLogin />
</Route>
</Switch>
</div>
<div className={styles.attribution}>
<span>
<Text id="general.image_by" /> &lrm;@lorenzoherrera
&rlm;· unsplash.com
</span>
</div>
</div>
<div
className={styles.bg}
style={{ background: `url('${background}')` }}
/>
</div>
);
2021-07-05 06:23:23 -04:00
}