JSFiddle - React, Tailwind, and code Playground

by BeNdErR

HTML

<nav role='navigation' class="menu">
  <label for="menu">Menu <i class="fa fa-bars"></i></label>
  <input type="checkbox" id="menu">
  <ul>
    <li><a href="#">Tutti</a></li>
    <li class="menu-hasdropdown">
      <a href="#">About 
        <label title="toggle menu" for="about">
          <i class="fa fa-caret-down"></i>
        </label>
      </a>
      <input type="checkbox" id="about">
      <ul class="menu-dropdown">
        <li><a href="">History</a></li>
        <li><a href="">Mission</a></li>
        <li class="menu-hasdropdown menu-hasflyout">
          <a href="">Services
            <label title="toggle menu" for="services">
              <i class="fa fa-caret-down menu-downicon"></i>
              <i class="fa fa-caret-right menu-righticon"></i>
            </label>        
          </a>
          <input type="checkbox" id="services">
          <ul class="menu-dropdown">
            <li><a href="">Service 1</a></li>
            <li><a href="">Service 2</a></li>
            <li><a href="">Service 3</a></li>
          </ul>
        </li>
      </ul>
    </li>
    <li><a href="#">Clients</a></li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>

SCSS

$menu_background: #035e8d;
$menu_color: #e2e2e2;
$menu_breakpoint : 1024px;
$menu_toggle_background: black;
$menu_padding: 15px 20px;
$menu_border: 1px solid rgba(255, 255, 255, 0.1);
$menu_padding: 15px 20px;
$menu_icon_padding: 5px 10px;

@mixin show () {
  display: block;
  animation: grow .5s ease-in-out; // optional animation
}

@mixin hide () {
  display: none;
}

.menu {
  background: $menu_background;
  font-family: 'Roboto'sans-serif;
  line-height: 1.5;

  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  &,
  &.menu a {
    color: $menu_color;
    text-decoration: none;
  }

  & a {
    display: block;
    white-space: nowrap;
  }

  & label:hover {
    cursor: pointer;
  }

  .menu-dropdown a {
    padding: $menu_padding;
    border-bottom: $menu_border;
  }
}

.menu-dropdown,
.menu input[type="checkbox"] {
  @include hide;
}

@media screen and (min-width: $menu_breakpoint + 1px) {

  .menu>label,
  input[type="checkbox"] {
    @include hide;
  }

  .menu a {
    padding: $menu_padding;
  }

  .menu>ul>li {
    display: inline-block;
  }

  .menu-hasdropdown {
    position: relative;

    &:hover {
      >ul {
        @include show;
      }
    }
  }

  .menu-hasdropdown>ul {
    position: absolute;
    top: 100%;
    left: 0;
    background: $menu_background;
  }

  .menu-hasflyout>ul {
    left: 100%;
    top: 0;
  }

  .menu-hasflyout .menu-downicon {
    @include hide;
  }
  
  .menu {
    max-width: 1024px;
    margin: 0 auto;
  }
}

@media screen and (max-width: $menu_breakpoint) { 
  .menu > ul,
  .menu-righticon {
    @include hide;
  }
  
  input[type="checkbox"]:checked + ul {
    @include show;
  }
  
  .menu > label {
    background: $menu_toggle_background;
    display: block;
    padding: $menu_padding;
    text-align: right;
  }
  
  .menu a {
    padding: $menu_padding;
  }
  .menu > ul i {
    float: right;
    padding: $menu_icon_padding;
    background: darken($menu_background,15%);
  }
  .menu-dropdown a {
   ...