sackey 6b878bb0a0
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
Initial commit
2025-09-12 16:19:56 +00:00

54 lines
2.1 KiB
PHP

@pure
@php $iconVariant ??= $attributes->pluck('icon:variant'); @endphp
@php $iconTrailing ??= $attributes->pluck('icon:trailing'); @endphp
@props([
'iconVariant' => 'micro',
'iconTrailing' => null,
'initials' => null,
'chevron' => true,
'circle' => null,
'avatar' => null,
'name' => null,
])
@php
$iconTrailing = $iconTrailing ?? ($chevron ? 'chevron-down' : null);
// When using the outline icon variant, we need to size it down to match the default icon sizes...
$iconClasses = Flux::classes('text-zinc-400 dark:text-white/80 group-hover:text-zinc-800 dark:group-hover:text-white')
->add($iconVariant === 'outline' ? 'size-4' : '');
$classes = Flux::classes()
->add('group flex items-center')
->add('rounded-lg has-data-[circle=true]:rounded-full')
->add('[ui-dropdown>&]:w-full') // Without this, the "name" won't get truncated in a sidebar dropdown...
->add('p-1 hover:bg-zinc-800/5 dark:hover:bg-white/10')
;
@endphp
<button type="button" {{ $attributes->class($classes) }} data-flux-sidebar-profile>
<div class="shrink-0">
<?php if ($avatar instanceof \Illuminate\View\ComponentSlot): ?>
{{ $avatar }}
<?php else: ?>
<flux:avatar :attributes="Flux::attributesAfter('avatar:', $attributes, ['src' => $avatar, 'size' => 'sm', 'circle' => $circle, 'name' => $name, 'initials' => $initials])" />
<?php endif; ?>
</div>
<?php if ($name): ?>
<span class="in-data-flux-sidebar-collapsed-desktop:hidden mx-2 text-sm text-zinc-500 dark:text-white/80 group-hover:text-zinc-800 dark:group-hover:text-white font-medium truncate">
{{ $name }}
</span>
<?php endif; ?>
<?php if (is_string($iconTrailing) && $iconTrailing !== ''): ?>
<div class="in-data-flux-sidebar-collapsed-desktop:hidden shrink-0 ms-auto size-8 flex justify-center items-center">
<flux:icon :icon="$iconTrailing" :variant="$iconVariant" :class="$iconClasses" />
</div>
<?php elseif ($iconTrailing): ?>
{{ $iconTrailing }}
<?php endif; ?>
</button>