Collapse classes

Simple collapse (with Vue.js)

<div class="dropdown-component dropdown-primary">
    <div class="dropdown dropdown-default" @click="show()">
        <div class="p-2">
            Simple dropdown
        </div>
        <div>
            <svg>
                ...content
            </svg>
        </div>
    </div>
    <div ref="body" class="dropdown-list dropdown-list-default dropdown-bottom hidden">
        <ul>
            <li class="dropdown-item">...</li>   
        </ul>
    </div>
</div>
Class name
@apply
.dropdown-component
@apply relative
.dropdown, .dropdown-hover
@apply relative flex items-center justify-between
.dropdown-default
"@apply px-3 font-semibold rounded-lg shadow-lg clickeable
.dropdown-list
@apply absolute inset-x-0 f-col
.dropdown-list-default
@apply shadow-lg p-4 rounded-md text-black
.dropdown-item
@apply p-1 text-lg font-bold cursor-pointer select-none

Structure

.dropdown-component
.dropdown
.body
ul

If you use .dropdown-hover, you don't need any JS code. For .dropdown, you just need toggle display: hidden.