const React = require('react');
const MarkdownBlock = require('../../core/CompLibrary').MarkdownBlock;
const CodeExamples = require(`${process.cwd()}/core/CodeExamples`);
const docUrl = require(`${process.cwd()}/core/UrlUtils`).docUrl;

const FEATURES = [
  {
    image: 'img/strong-type-system.svg',
    title: 'Strong, Static Type System',
    content: 'Write types, then code. Benefit from the safety of type systems.'
  },
  {
    image: 'img/syntax-agnostic.svg',
    title: 'Polyglot',
    content:
      'Code in your language. Write PascaLIGO, CameLIGO, ReasonLIGO or add your own syntax.'
  },
  {
    image: 'img/easy-integration.svg',
    title: 'Easy Integration',
    content: 'You can use LIGO as a NodeJS library with Granary'
  }
];

const PARTNERS = [
  {
    name: 'Nomadic Labs',
    image: 'img/nomadic-logo.png',
    link: 'https://www.nomadic-labs.com/',
    pinned: true
  },
  {
    name: 'Tocqueville Group',
    image: 'img/tq-logo.svg',
    link: 'https://tqgroup.io/',
    pinned: true
  },
  {
    name: 'Stove Labs',
    image: 'img/stove-logo.png',
    link: 'https://stove-labs.com',
    pinned: true
  }
];

const Feature = (config, props) => (
  <div className="feature" key={props.title}>
    <img src={`${config.baseUrl}${props.image}`} />
    <h1>{props.title}</h1>
    <p>{props.content}</p>
  </div>
);

const Partner = (config, props) => (
  <a
    href={props.link}
    title={props.name}
    target="_blank"
    rel="noopener noreferrer"
  >
    <img src={`${config.baseUrl}${props.image}`} />
  </a>
);

module.exports = props => {
  return (
    <div id="homePage">
      <div id="intro" className="centered">
        <div id="callToAction">
          <ul>
            <li className="primary">
              <a href="https://ide.ligolang.org">Try Online</a>
            </li>
            <li className="secondary">
              <a href={docUrl(props.config, 'intro/installation')}>Install</a>
            </li>
          </ul>
        </div>
        <div id="preview">
          <h1>A friendly Smart Contract Language for Tezos</h1>
          <p>Michelson was never so easy</p>
          <CodeExamples MarkdownBlock={MarkdownBlock}></CodeExamples>
        </div>
      </div>
      <div id="features" className="centered">
        {FEATURES.map(entry => Feature(props.config, entry))}
      </div>
      <div id="partners">
        <div className="centered wrapper">
          <span id="heading">Our Partners</span>
          <div id="list">
            {PARTNERS.filter(entry => entry.pinned).map(entry =>
              Partner(props.config, entry)
            )}
          </div>
        </div>
      </div>
    </div>
  );
};