Add Alpine.js menu component

This commit is contained in:
Bruno
2024-09-06 19:31:31 +01:00
parent 04eb4f15a7
commit ad5bd16a4f
6 changed files with 41 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
<button
x-ref="button"
@click="menuOpen = !menuOpen"
@keydown.escape="menuOpen = false"
class="flex items-center"
>
{{ $slot }}
</button>

View File

@@ -0,0 +1,3 @@
<div x-on:click="menuOpen = false">
{{ $slot }}
</div>

View File

@@ -0,0 +1,3 @@
<div x-data="{ menuOpen: false }" class="relative">
{{ $slot }}
</div>

View File

@@ -0,0 +1,10 @@
<div>
<button
class="flex items-center w-full gap-2 px-3 py-1 text-sm text-left transition-colors rounded hover:bg-light-base-400 dark:hover:bg-base-700 text-light-base-950 dark:text-base-50"
{{ $attributes->merge([
'type' => 'button',
]) }}
>
{{ $slot }}
</button>
</div>

View File

@@ -0,0 +1,8 @@
<div>
<a
{{ $attributes }}
class="flex items-center w-full gap-2 px-3 py-1 text-sm text-left transition-colors rounded hover:bg-light-base-400 dark:hover:bg-base-700 text-light-base-950 dark:text-base-50"
>
{{ $slot }}
</a>
</div>

View File

@@ -0,0 +1,9 @@
<div
x-show="menuOpen"
x-anchor.bottom-end="$refs.button"
@click.away="menuOpen = false"
class="min-w-[10rem] z-20 border bg-light-base-200 dark:bg-base-950 border-light-base-300 dark:border-base-500 divide-y rounded-md shadow-lg p-1.5 outline-nonea"
x-cloak
>
{{ $slot }}
</div>