import Header from '../Components/Header'
import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
import { List, ListItem, Code } from '../Components/Texttools';


export default function Home() {
    return (
        <>
            <Header
                name="Privacy"
                subtext="Privacy is a right - Here's how we handle it"
                gradient={["71AFE5", "6576CC"]}
                wave="web/waves/header/clicksforms"
                buttons={[]}
            />
            <AutoLayout>
                <Panel halfSize={true}>
                    <Title>Transparency</Title>
                    <Text>Everything we store about you and your Discord  will be listed.</Text>
                    <List colour={"6576CC"}>
                        <ListItem><a href="https://clicksminuteper.github.io/policies/rsm">RSM</a></ListItem>
                        <ListItem><a href="https://clicksminuteper.github.io/policies/clicksforms">ClicksForms</a></ListItem>
                        <ListItem>GPS does not store any information</ListItem>
                    </List>
                    <Text>Have any questions or concerns? <a href="/support">Let us know</a> and we can investigate if you believe there are any mistakes</Text>
                </Panel>
                <Panel halfSize={true}>
                    <Title>Security</Title>
                    <Text>We will do everything we can to protect user data, including high security. You can <a href="/support">message us</a> if you would like to learn more about how we do this</Text>
                </Panel>
            </AutoLayout>
        </>
    )
}
