JSFiddle - React, Tailwind, and code Playground
HTML
<main id="page" class="page">
<aside class="page__sidebar"></aside>
<section class="page__content">
<button id="button" type="button" @onclick="toggle()">Toggle Sidebar</button>
</section>
</main>
CSS
.page {
height: 100vh;
display: flex;
flex-direction: row;
}
.page--min .page__sidebar {
width: 80px;
}
.page__sidebar {
width: 300px;
background: black;
transition: width 3s;
}
.page__sidebar {
height: 100%;
}
.page__content {
padding: 20px;
height: calc(100% - 40px);
}
JavaScript
let isOpen = true;
const page = document.getElementById('page');
const button = document.getElementById('button');
button.addEventListener('click', () => {
if (isOpen) page.classList.add('page--min');
else page.classList.remove('page--min');
isOpen = !isOpen;
}, false);