JSFiddle - React, Tailwind, and code Playground

by Uday Hiwarale

HTML

<link href="https://fonts.googleapis.com/css?family=Poppins:300,400,600,700&display=swap" rel="stylesheet">

<user-card></user-card>

<template id="userCardTemplate">
  <img src="https://semantic-ui.com/images/avatar2/large/patrick.png" class="image">
  
  <div class="container">
    <p class="name">User Name 2</p>
    <p class="email">[email protected]</p>
    <button class="button">Follow John</button>
  </div>
</template>

CSS

user-card {
  display: flex;
  align-items: center;
  width: 450px;
  height: 180px;
  background-color: #d4d4d4;
  border: 1px solid #d5d5d5;
  box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.1);
  border-radius: 3px;
  overflow: hidden;
  padding: 10px;
  box-sizing: border-box;
  font-family: 'Poppins', sans-serif;
}

user-card>.image {
  flex: 0 0 auto;
  width: 160px;
  height: 160px;
  vertical-align: middle;
  border-radius: 5px;
}

user-card>.container {
  box-sizing: border-box;
  padding: 20px;
  height: 160px;
}

user-card>.container>.name {
  font-size: 20px;
  font-weight: 600;
  line-height: 1;
  margin: 0;
  margin-bottom: 5px;
}

user-card>.container>.email {
  font-size: 12px;
  opacity: 0.75;
  line-height: 1;
  margin: 0;
  margin-bottom: 15px;
}

user-card>.container>.button {
  padding: 10px 25px;
  font-size: 12px;
  border-radius: 5px;
  text-transform: uppercase;
}

JavaScript

// create user card class
class UserCard extends HTMLElement {
  constructor() {
    super();
  }

  connectedCallback() {
    var templateElem = document.getElementById( 'userCardTemplate' );
    var content = templateElem.content.cloneNode( true );

    this.appendChild( content );
  }
}

// define user card element
customElements.define('user-card', UserCard);