Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/scripts/components/auth/LoginFormContainer.tsx
10264 views
1
import React, { forwardRef } from 'react';
2
import { Form } from 'formik';
3
import styled from 'styled-components/macro';
4
import { breakpoint } from '@/theme';
5
import FlashMessageRender from '@/components/FlashMessageRender';
6
import tw from 'twin.macro';
7
8
type Props = React.DetailedHTMLProps<React.FormHTMLAttributes<HTMLFormElement>, HTMLFormElement> & {
9
title?: string;
10
};
11
12
const Container = styled.div`
13
${breakpoint('sm')`
14
${tw`w-4/5 mx-auto`}
15
`};
16
17
${breakpoint('md')`
18
${tw`p-10`}
19
`};
20
21
${breakpoint('lg')`
22
${tw`w-3/5`}
23
`};
24
25
${breakpoint('xl')`
26
${tw`w-full`}
27
max-width: 700px;
28
`};
29
`;
30
31
export default forwardRef<HTMLFormElement, Props>(({ title, ...props }, ref) => (
32
<Container>
33
{title && <h2 css={tw`text-3xl text-center text-neutral-100 font-medium py-4`}>{title}</h2>}
34
<FlashMessageRender css={tw`mb-2 px-1`} />
35
<Form {...props} ref={ref}>
36
<div css={tw`md:flex w-full bg-white shadow-lg rounded-lg p-6 md:pl-0 mx-1`}>
37
<div css={tw`flex-none select-none mb-6 md:mb-0 self-center`}>
38
<img src={'/assets/svgs/pterodactyl.svg'} css={tw`block w-48 md:w-64 mx-auto`} />
39
</div>
40
<div css={tw`flex-1`}>{props.children}</div>
41
</div>
42
</Form>
43
<p css={tw`text-center text-neutral-500 text-xs mt-4`}>
44
&copy; 2015 - {new Date().getFullYear()}&nbsp;
45
<a
46
rel={'noopener nofollow noreferrer'}
47
href={'https://pterodactyl.io'}
48
target={'_blank'}
49
css={tw`no-underline text-neutral-500 hover:text-neutral-300`}
50
>
51
Pterodactyl Software
52
</a>
53
</p>
54
</Container>
55
));
56
57