import Card from '../Components/Card'
import TileRow from '../Components/TileRow'
import Header from '../Components/Header'
import AutoSpacing from '../Components/AutoSpacing'
import SectionHeading from '../Components/SectionHeading'
import Paragraph from '../Components/Paragraph'
import CardRow from '../Components/CardRow'

export default function Home() {
  return (
    <>
      <Header
        name="ClicksForms"
        subtext="Custom forms on Discord"
        gradient={["71AFE5", "6576CC"]}
        wave="CF"
        buttons={[
          {color: "6576CC", buttonText: "FFFFFF", link: "#features", text: "Features"},
          {color: "6576CC", buttonText: "FFFFFF", link: "#commands", text: "Commands"},
          {color: "6576CC", buttonText: "FFFFFF", link: "#services", text: "Services"},
          {color: "775EBF", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
        ]}
        hideArrow={true}
      />
      <AutoSpacing>
        <SectionHeading id="features">Features</SectionHeading>
          <TileRow divless={true}>
            <img alt="Anonymous forms"       src="/Features/ClicksForms/Anonymous.svg" />
            <img alt="Discord buttons"       src="/Features/ClicksForms/Buttons.svg" />
            <img alt="Export formats"        src="/Features/ClicksForms/Export.svg" />
            <img alt="Up to 25 Forms"        src="/Features/ClicksForms/Forms.svg" />
            <img alt="Multiple Choice"       src="/Features/ClicksForms/Multichoice.svg" />
            <img alt="Up to 25 questions"    src="/Features/ClicksForms/Questions.svg" />
            <img alt="Many question types"   src="/Features/ClicksForms/Types.svg" />
            <img alt="Easily view responses" src="/Features/ClicksForms/Responses.svg" />
            </TileRow>
            <SectionHeading id="commands">Commands</SectionHeading>
            <Paragraph><code>/accept</code>: Completes a form you are asked to fill in</Paragraph>
            <Paragraph><code>/apply</code>: Apply to a form</Paragraph>
            <Paragraph><code>/create</code>: Creates a new form</Paragraph>
            <Paragraph><code>/download</code>: Downloads a form from a service e.g. Google Forms</Paragraph>
            <Paragraph><code>/help</code>: Lists all commands</Paragraph>
            <Paragraph><code>/responses</code>: Lets you view responses to your servers form</Paragraph>
            <Paragraph><code>/manage</code>: Lets you manage your servers forms</Paragraph>
            <SectionHeading id="services">Services</SectionHeading>
            <Paragraph>ClicksForms support services like <a href="https://forms.google.com">Google Forms</a> through our Add-on (Awaiting approval)</Paragraph>
            <Paragraph>Our API is public. You can view it on <a href="https://clicksminuteper.github.io/docs/clicksforms">GitHub</a></Paragraph>
            <SectionHeading id="invite">Invite</SectionHeading>
            <CardRow>
            <Card
            wave="CF"
            buttonText={"FFFFFF"} gradient={["71AFE5", "6576CC"]}
            title="Invite"
            subtext="Invite ClicksForms to your server"
            buttons={[
              {color: "775EBF", link: "https://discord.com/api/oauth2/authorize?client_id=805392054678192169&permissions=2416307200&scope=bot%20applications.commands", text: "Invite"}
            ]}
          />
        </CardRow>
        <SectionHeading>Legal</SectionHeading>
        <Paragraph>Our privacy policy can be viewed on <a href="https://clicksminuteper.net/clicksforms/privacy">GitHub</a></Paragraph>
      </AutoSpacing>
    </>
  )
}
