@props([ 'alpineDisabled' => null, 'alpineValid' => null, 'disabled' => false, 'inlinePrefix' => false, 'inlineSuffix' => false, 'prefix' => null, 'prefixActions' => [], 'prefixIcon' => null, 'prefixIconColor' => 'gray', 'prefixIconAlias' => null, 'suffix' => null, 'suffixActions' => [], 'suffixIcon' => null, 'suffixIconColor' => 'gray', 'suffixIconAlias' => null, 'valid' => true, ]) @php $prefixActions = array_filter( $prefixActions, fn (\Filament\Forms\Components\Actions\Action $prefixAction): bool => $prefixAction->isVisible(), ); $suffixActions = array_filter( $suffixActions, fn (\Filament\Forms\Components\Actions\Action $suffixAction): bool => $suffixAction->isVisible(), ); $hasPrefix = count($prefixActions) || $prefixIcon || filled($prefix); $hasSuffix = count($suffixActions) || $suffixIcon || filled($suffix); $hasAlpineDisabledClasses = filled($alpineDisabled); $hasAlpineValidClasses = filled($alpineValid); $hasAlpineClasses = $hasAlpineDisabledClasses || $hasAlpineValidClasses; $enabledWrapperClasses = 'bg-white dark:bg-white/5 [&:not(:has(.fi-ac-action:focus))]:focus-within:ring-2'; $disabledWrapperClasses = 'fi-disabled bg-gray-50 dark:bg-transparent'; $validWrapperClasses = 'ring-gray-950/10'; $invalidWrapperClasses = 'fi-invalid ring-danger-600 dark:ring-danger-500'; $enabledValidWrapperClasses = 'dark:ring-white/20 [&:not(:has(.fi-ac-action:focus))]:focus-within:ring-primary-600 dark:[&:not(:has(.fi-ac-action:focus))]:focus-within:ring-primary-500'; $enabledInvalidWrapperClasses = '[&:not(:has(.fi-ac-action:focus))]:focus-within:ring-danger-600 dark:[&:not(:has(.fi-ac-action:focus))]:focus-within:ring-danger-500'; $disabledValidWrapperClasses = 'dark:ring-white/10'; $actionsClasses = 'flex items-center gap-3'; $labelClasses = 'fi-input-wrp-label whitespace-nowrap text-sm text-gray-500 dark:text-gray-400'; $getIconClasses = fn (string | array $color = 'gray'): string => \Illuminate\Support\Arr::toCssClasses([ 'fi-input-wrp-icon h-5 w-5', match ($color) { 'gray' => 'text-gray-400 dark:text-gray-500', default => 'text-custom-500', }, ]); $getIconStyles = fn (string | array $color = 'gray'): string => \Illuminate\Support\Arr::toCssStyles([ \Filament\Support\get_color_css_variables( $color, shades: [500], alias: 'input-wrapper.icon', ) => $color !== 'gray', ]); $wireTarget = $attributes->whereStartsWith(['wire:target'])->first(); $hasLoadingIndicator = filled($wireTarget); if ($hasLoadingIndicator) { $loadingIndicatorTarget = html_entity_decode($wireTarget, ENT_QUOTES); } @endphp
except(['wire:target']) ->class([ 'fi-input-wrp flex rounded-lg shadow-sm ring-1 transition duration-75', $enabledWrapperClasses => (! $hasAlpineClasses) && (! $disabled), $disabledWrapperClasses => (! $hasAlpineClasses) && $disabled, $validWrapperClasses => (! $hasAlpineClasses) && $valid, $invalidWrapperClasses => (! $hasAlpineClasses) && (! $valid), $enabledValidWrapperClasses => (! $hasAlpineClasses) && (! $disabled) && $valid, $enabledInvalidWrapperClasses => (! $hasAlpineClasses) && (! $disabled) && (! $valid), $disabledValidWrapperClasses => (! $hasAlpineClasses) && $disabled && $valid, ]) }} > @if ($hasPrefix || $hasLoadingIndicator) @endif
$hasLoadingIndicator && (! $hasPrefix) && $inlinePrefix, ]) > {{ $slot }}
@if ($hasSuffix)
$inlineSuffix && filled($suffix), 'ps-2' => $inlineSuffix && blank($suffix), 'border-s border-gray-200 ps-3 dark:border-white/10' => ! $inlineSuffix, ]) > @if (filled($suffix)) {{ $suffix }} @endif @if ($suffixIcon) @endif @if (count($suffixActions))
@foreach ($suffixActions as $suffixAction) {{ $suffixAction }} @endforeach
@endif
@endif