JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://cdn.ink.sapo.pt/2.1.0/js/ink.min.js"></script>
<script src="http://cdn.ink.sapo.pt/2.1.0/js/ink-ui.min.js"></script>
<script src="http://cdn.ink.sapo.pt/2.1.0/js/autoload.js"></script>
<link rel="stylesheet" href="http://cdn.ink.sapo.pt/2.1.0/css/ink-min.css">
<span>Proposal</span>
<ul class="ink-tree-view">
  <li class="open parent"><a href="#">root</a>
    <ul>
      <li><a href="#">child 1</a></li>
      <li class="parent"><a href="#">child 2</a>
        <ul>
          <li><a href="#">grandchild 2a</a></li>
          <li class="parent"><a href="#">grandchild 2b</a>
            <ul>
              <li><a href="#">grandgrandchild 1bA</a></li>
              <li><a href="#">grandgrandchild 1bB</a></li>
            </ul>
          </li>
        </ul>
      </li>
      <li><a href="#">child 3</a></li>
    </ul>
  </li>
</ul>
<script>
    // There are two ways to run the code...
    // 1 - If you know you have the component and its dependencies already loaded, just do:
    var treeview = new Ink.UI.TreeView( '.ink-tree-view' );
 
    // 2 - If you're not sure the component or its dependencies are loaded at runtime, do:
    Ink.requireModules( ['Ink.UI.TreeView_1'], function(TreeView){
        new TreeView( '.ink-tree-view' );
    });
</script>

CSS

.ink-tree-view span {
    border: 1px solid red;
}
.parent > a:before {
    display: inline-block;
    margin-right: .3em;
    font-family: FontAwesome;
    content: "\f055";
    color: #555;
    margin-left: -1.2em;
}
.parent.open > a:before {
content: "\f056";
}