import React, { FC } from 'react';
import TeaserFeature from './TeaserFeature';
import CircleContainer from './CircleContainer';

const Teaser = (props) => (
  <>
    <section className="elements-area" style={{borderBottom: '1px solid #cecece'}}>
      <div className={"row"}>
        <div className={"col-9 container-lg d-flex align-items-center justify-content-center"}>
          <div className={"left-claim-section"}>
            <div className={"top-claim-area"}>
              <div className={"top-claim-area-subtitle"}>
                <span className={"top-claim-area-subtitle-text"}>All-In-One</span>
              </div>
              <div className={"top-claim-area-main-title"}>
                Industrial IoT Toolbox
              </div>
            </div>
            <div className="apache-teaser">Apache StreamPipes is a self-service Industrial IoT toolbox to enable
              non-technical
              users to
              connect, analyze and explore IoT data streams.
            </div>
            <div className={"after-apache-teaser"}></div>
            <div className={"teaser-actions text-center"}>
              <a href="/download" className="sp-button sp-button-large sp-button-blue sp-button-margin"><i
                className="fas fa-download"></i> Download</a>
              <a href="/docs/user-guide-introduction"
                 className="sp-button sp-button-large sp-button-gray sp-button-margin"><i
                className="fas fa-book"></i> Documentation
              </a>
              <a href="https://www.github.com/apache/streampipes"
                 className="sp-button sp-button-large sp-button-gray sp-button-margin"><i
                className="fab fa-github"></i> Github
              </a>
            </div>

            <div className="container-header">
              <div className="row">
                <div className="col-12 col-lg-4">
                  <TeaserFeature
                    icon={"fa-table-columns"}
                    title={"Easy to use"}
                    subtitle={"Intuitive and fully integrated web-based user interface"}>
                  </TeaserFeature>
                </div>
                <div className="col-12 col-lg-4">
                  <TeaserFeature
                    icon={"fa-bolt"}
                    title={"Powerful"}
                    subtitle={"Quickly implement your IIoT use cases"}>
                  </TeaserFeature>
                </div>
                <div className="col-12 col-lg-4">
                  <TeaserFeature
                    icon={"fa-code"}
                    title={"Extensible"}
                    subtitle={"Developer tools for Java, Python and TypeScript"}>
                  </TeaserFeature>
                </div>
                {/*<a href="https://www.apache.org/events/current-event.html">*/}
                {/*  <img src="https://www.apache.org/events/current-event-125x125.png"*/}
                {/*       className={"event-image"}/>*/}
                {/*</a>*/}
              </div>
            </div>
          </div>
        </div>
        <div className={"col-3 teaser-image"}>
        </div>
      </div>
    </section>
  </>
)

export default Teaser;
