JSFiddle - React, Tailwind, and code Playground

by Daniel Flores

HTML

<div class="sm-queue">
	<h4>Message Folders</h4>
	<ul class="sm-folder-list">
		<li class="expandable active show" id="sm_folder_unsorted">
			<div class="inside">
				<i class="icon-mod-unsorted"></i> Unsorted
			</div>
			<div class="outside">
				<a class="download-unsorted" href="#" target="_blank" title="Download CSV"><i class="icon-mod-download"></i></a>
			</div>
		</li>
	</ul>
</div>

CSS

* {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;    
}
[class^="icon-"], 
[class*=" icon-"] {
    background-color: black;
    display: inline-block;
    width: 14px;
    height: 14px;
    line-height: 14px;
    margin-top: 0;
    vertical-align: middle;    
}
ul {
    margin: 0;
    padding: 0;
}

/* Button CSS */
.sm-queue {
    width: 215px;
}
.sm-folder-list li {
    line-height: 18px;
    padding: 5px;
    margin-bottom: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    cursor: pointer;
    -webkit-box-shadow:  0px 0px 2px 0px rgba(0, 0, 0, .25);
    box-shadow:  0px 0px 2px 0px rgba(0, 0, 0, .25);
}
.sm-folder-list li.active,
.sm-folder-list li:hover {
    box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.25);
}
.sm-folder-list li.active {
    cursor: default;
}
.sm-folder-list li.expandable {
    overflow: hidden;
    position: relative;
    height: 28px;
    line-height: 18px;
    padding: 0;

    -webkit-transition: all .25s ease;
    -moz-transition: all .25s ease;
    -ms-transition: all .25s ease;
    -o-transition: all .25s ease;
    transition: all .25s ease;
}
.sm-folder-list li.expandable.show:hover {
    width: 250px;
}

.sm-folder-list li.expandable > .inside,
.sm-folder-list li.expandable > .outside {
    display: inline-block;
}
.sm-folder-list li.expandable > .outside a,
.sm-folder-list li.expandable > .outside span {
    cursor: pointer;
    margin-left: 5px;
}
.sm-folder-list li.expandable > .inside {
    padding: 5px;
    width: 205px;
}
.inside .badge {
    float: right;
}

.unsorted { background-color: #FFFFFF; }
.queued   { background-color: #ECFDE0; }
.elevated { background-color: #ECEDF2; }
.removed  { background-color: #FFF9F9; }