Collapsible
A collapsible component is used to display content that can be expanded and collapsed.
You have 3 new notifications
  Someone mentioned you.
 You have a new email.
 You have a text message.
 ---
---
<div x-cloak x-data x-collapsible>  <div class="flex justify-between items-center">    <div class="text-sm">You have 3 new notifications</div>    <button x-collapsible:trigger>      <i class="i-lucide-plus w-5 h-5"></i>    </button>  </div>
  <div data-part="messages">    <div data-part="message" class="!mb-0">Someone mentioned you.</div>    <div x-collapsible:content>      <div data-part="message">You have a new email.</div>      <div data-part="message">You have a text message.</div>    </div>  </div></div>
<style>  [data-part="root"] {    @apply w-64;  }
  [data-part="trigger"] {    @apply inline-flex justify-center items-center w-6 h-6 bg-white text-zinc-900 border border-zinc-200/60 rounded-full cursor-pointer;  }
  [data-part="trigger"] > i {    @apply transition-transform duration-200 ease-in-out;  }
  [data-part="trigger"][data-state="open"] > i {    @apply rotate-45;  }
  [data-part="trigger"][data-state="closed"] > i {    @apply rotate-0;  }
  [data-part="content"] {    @apply overflow-hidden;  }
  @keyframes expand {    from {      height: 0;    }    to {      height: var(--height);    }  }
  @keyframes collapse {    from {      height: var(--height);    }    to {      height: 0;    }  }
  [data-part="content"][data-state="open"] {    animation: expand 200ms cubic-bezier(0, 0, 0.38, 0.9);  }
  [data-part="content"][data-state="closed"] {    animation: collapse 200ms cubic-bezier(0, 0, 0.38, 0.9);  }
  [data-part="message"] {    @apply my-2 px-3 py-2 bg-white text-sm text-zinc-800 rounded border border-zinc-200/60;  }</style>