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

// import FeatureImages from '../public/Features/RSM/Images.svg';
// import FeatureAutomate from '../public/Features/RSM/Automate.svg';
// import FeatureCAPTCHA from '../public/Features/RSM/CAPTCHA.svg';
// import FeatureDeveloped from '../public/Features/RSM/Developed.svg';
// import FeatureLogging from '../public/Features/RSM/Logging.svg';
// import FeatureNSFW from '../public/Features/RSM/NSFW.svg';
// import FeaturePunish from '../public/Features/RSM/Punish.svg';
// import FeatureRaids from '../public/Features/RSM/Raids.svg';
// import FeatureStatistics from '../public/Features/RSM/Statistics.svg';
// import FeatureTags from '../public/Features/RSM/Tags.svg';

export default function Home() {
  return (
    <>
      <Header
        name="RSM"
        subtext="Moderation Redefined"
        gradient={["F27878", "D96B6B"]}
        wave="web/waves/header/rsm"
        buttons={[
          // {color: "424242", buttonText: "FFFFFF", link: "#features", text: "Features"},
          {color: "424242", buttonText: "FFFFFF", link: "#commands", text: "Commands"},
          {color: "424242", buttonText: "FFFFFF", link: "#privacy", text: "Privacy"},
          {color: "F27878", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
        ]}
      />
      <AutoLayout>
        <Panel halfSize={true} id="commands">
          <Title>Commands</Title>
          <Divider />
          <Text>Standard commands to use RSM</Text>
          <List colour="F27878">
            <ListItem><Code colour="F27878">m!info</Code> Shows all commands and info.</ListItem>
            <ListItem><Code colour="F27878">m!stats</Code> Shows the bot statistics</ListItem>
            <ListItem><Code colour="F27878">m!settings</Code> Shows your servers log settings.</ListItem>
            <ListItem><Code colour="F27878">m!user</Code> Shows information about a user.</ListItem>
            <ListItem><Code colour="F27878">m!avatar</Code> Shows a users avatar.</ListItem>
            <ListItem><Code colour="F27878">m!roleall</Code> Role all humans or bots in the server.</ListItem>
            <ListItem><Code colour="F27878">m!suggest</Code> Sends a suggestion to add to the bot for voting.</ListItem>
            <ListItem><Code colour="F27878">m!ping</Code> Checks the bots ping time.</ListItem>
            <ListItem><Code colour="F27878">m!server</Code> Shows all information about your server.</ListItem>
            <ListItem><Code colour="F27878">m!tag</Code> m!tag create/delete title text, or m!tag title</ListItem>
            <ListItem><Code colour="F27878">m!role</Code> With Role: Shows information about a role.</ListItem>
            <ListItem><Code colour="F27878">m!role</Code> With Mention: Lets you edit or view a users roles.</ListItem>
            <ListItem><Code colour="F27878">m!viewas</Code> Shows the channels that a member can see.</ListItem>
            <ListItem><Code colour="F27878">m!verify</Code> Lets users verify in your server.</ListItem>
            <ListItem><Code colour="F27878">m!setverify</Code> Sets the role given when you m!verify. Name or ID.</ListItem>
            <ListItem><Code colour="F27878">m!mail</Code> Creates a modmail ticket if set up.</ListItem>
            <ListItem><Code colour="F27878">m!prefix</Code> Shows the bots prefix. Use @ if unknown.</ListItem>
            <ListItem><Code colour="F27878">m!setprefix</Code> Sets the bots prefix. You can always @ the bot.</ListItem>
          </List>
        </Panel>
        <Panel halfSize={true}>
          <Title>Moderation Commands</Title>
          <Divider />
          <Text>Moderation commands to set up systems and moderate users</Text>
          <List colour="F27878">
            <ListItem><Code colour="F27878">m!warn</Code> Warns a member.</ListItem>
            <ListItem><Code colour="F27878">m!clear</Code> Clears messages from a channel</ListItem>
            <ListItem><Code colour="F27878">m!kick</Code> Kicks a member.</ListItem>
            <ListItem><Code colour="F27878">m!softban</Code> Soft bans a member.</ListItem>
            <ListItem><Code colour="F27878">m!ban</Code> Bans a member.</ListItem>
            <ListItem><Code colour="F27878">m!unban</Code> Unbans a member.</ListItem>
            <ListItem><Code colour="F27878">m!purge</Code> Deletes messages in the channel.</ListItem>
            <ListItem><Code colour="F27878">m!punish</Code> Punishes a user.</ListItem>
            <ListItem><Code colour="F27878">m!setlog</Code> Sets the servers log channel.</ListItem>
            <ListItem><Code colour="F27878">m!ignore</Code> Stops logging users, roles and channels provided.</ListItem>
            <ListItem><Code colour="F27878">m!ignored</Code> Shows the ignored users, roles and channels.</ListItem>
            <ListItem><Code colour="F27878">m!stafflog</Code> Sets the staff log channel for reports and messages.</ListItem>
            <ListItem><Code colour="F27878">m!auto</Code> Lets you edit your server automations.</ListItem>
            <ListItem><Code colour="F27878">m!modmail</Code> Shows the setup for the mail command.</ListItem>
          </List>
        </Panel>
        <Panel halfSize={false}>
          <Title>Emergency Commands</Title>
          <Divider />
          <Text>Moderation commands to set up systems and moderate users</Text>
          <List colour="F27878">
            <ListItem><Code colour="F27878">m!slowmode</Code> Sets the channel slowmode.</ListItem>
            <ListItem><Code colour="F27878">m!lock</Code> Locks the channel. Applies slowmode and stops messages being sent.</ListItem>
            <ListItem><Code colour="F27878">m!unlock</Code> Unlocks the channel. Slowmode is removed and messages can be sent.</ListItem>
          </List>
        </Panel>
        <Panel halfSize={true} id="privacy">
          <Title>Privacy</Title>
          <Divider />
          <Text>You should always know what we know and store about you, so <a href="https://clicksminuteper.github.io/policies/rsm">here</a> is the complete list.</Text>
        </Panel>
        <Panel halfSize={true} id="invite">
          <Title>Invite</Title>
          <Divider />
          <CardRow>
            <Card
              wave="rsm"
              icon="bots/rsm/circle"
              buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
              title="RSM"
              subtext="Invite RSM to your server"
              buttons={[
                  {color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands", text: "Invite"}
              ]}
              url="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands"
            />
          </CardRow>
        </Panel>
      </AutoLayout>
    </>
  )
}
