React

by Abdul Ahmad

HTML

<div id="app"></div>

SCSS

html, body {
  margin: 0;
  font-family: helvetica;
}

.hero {
  padding: 100px 0;
  background: #0063ff;
}

.page-width {
  max-width: 1000px;
  padding: 0 16px;
  margin: 0 auto;
  display: flex;
  align-items: stretch;
}

.column {
  border: 1px dashed darken(#0063ff, 10%);
  width: 50%;
  min-height: 100px;
}

.left-content-wrap {
  border: 1px dashed red;
  box-sizing: border-box;
  height: 100%;
  display: flex;
  align-content: center;
}

.left-content {
  margin-top: auto;
  margin-bottom: auto;
  border: 1px dashed darken(#0063ff, 10%);
  box-sizing: border-box;
  
  h1 {
    margin: 0;
  }
  
  p {
    margin-bottom: 0;
  }
}

.image {
  width: 100%;
  padding-bottom: 100%;
  border-radius: 100%;
  border: 1px solid black;
  margin-bottom: -50px;
  margin-top: 50px;
}

React

function Hero({ renderLeftContent, renderRightContent }) {
  return (
    <div class='hero'>
      <div class='page-width'>
        <div class='column'>
          { renderLeftContent() }
        </div>
        <div class='column'>
          { renderRightContent() }
        </div>
      </div>
    </div>
  );
}

function SpecificHeroForSection() {
	return (
  	<Hero
      alignItems='stretch'
      renderLeftContent={() => (
        <div class='left-content-wrap'>
          <div class='left-content'>
            <h1>
              title
            </h1>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
            </p>
          </div>
        </div>
      )}
      renderRightContent={() => (
        <div class='image'>

        </div>
      )}
    />
  );
}



ReactDOM.render(<SpecificHeroForSection />, document.querySelector("#app"))