Commit 35656375 authored by Mahmoud Aglan's avatar Mahmoud Aglan

Redesign event registration form — single column, polished UI

- Remove 2-column grid (caused fields cramming side-by-side)
- All fields stack full-width for clean readability
- Radio/checkbox options in bordered card-style containers
- Proper focus states using site accent color
- Shadow and rounded inputs for depth
- Better section dividers with centered lines
- Submit button with icon, shadow, and loading spinner
- Error states with icon indicators
- Terms field highlighted with amber background
Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
parent b975a75e
...@@ -14,47 +14,58 @@ ...@@ -14,47 +14,58 @@
</div> </div>
@else @else
{{-- Registration Form --}} {{-- Registration Form --}}
<form wire:submit="submit" class="space-y-5" x-data="eventForm(@js($event->form_fields), @js($fields))"> <form wire:submit="submit" class="space-y-6" x-data="eventForm(@js($event->form_fields), @js($fields))">
@error('form') @error('form')
<div class="p-4 bg-red-50 border border-red-200 rounded-xl text-red-700 text-sm">{{ $message }}</div> <div class="p-4 bg-red-50 border border-red-200 rounded-xl text-red-700 text-sm flex items-center gap-2">
<svg class="w-5 h-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z"/></svg>
{{ $message }}
</div>
@enderror @enderror
<div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <div class="space-y-5">
@foreach($event->form_fields as $fieldIndex => $field) @foreach($event->form_fields as $fieldIndex => $field)
@php @php
$hasCondition = !empty($field['condition_field']) && !empty($field['condition_value']); $hasCondition = !empty($field['condition_field']) && !empty($field['condition_value']);
$colSpan = ($field['width'] ?? 'full') === 'full' || $field['type'] === 'section_divider' ? 'md:col-span-2' : '';
@endphp @endphp
{{-- Section Divider --}} {{-- Section Divider --}}
@if($field['type'] === 'section_divider') @if($field['type'] === 'section_divider')
<div class="{{ $colSpan }} pt-4 pb-1" <div class="pt-3 pb-1"
@if($hasCondition) x-show="isVisible('{{ $field['key'] }}')" x-transition @endif> @if($hasCondition) x-show="isVisible('{{ $field['key'] }}')" x-transition @endif>
<h4 class="text-base font-semibold text-gray-800 border-b border-gray-200 pb-2">{{ $field['label'] }}</h4> <div class="flex items-center gap-3">
<div class="h-px flex-1 bg-gray-200"></div>
<h4 class="text-sm font-bold text-gray-700 uppercase tracking-wide">{{ $field['label'] }}</h4>
<div class="h-px flex-1 bg-gray-200"></div>
</div>
@if(!empty($field['description'])) @if(!empty($field['description']))
<p class="text-xs text-gray-500 mt-1">{{ $field['description'] }}</p> <p class="text-xs text-gray-500 mt-1.5 text-center">{{ $field['description'] }}</p>
@endif @endif
</div> </div>
@continue @continue
@endif @endif
<div class="{{ $colSpan }}" <div class="space-y-1.5"
@if($hasCondition) x-show="isVisible('{{ $field['key'] }}')" x-transition @endif> @if($hasCondition) x-show="isVisible('{{ $field['key'] }}')" x-transition @endif>
{{-- Label --}} {{-- Label --}}
@if($field['type'] !== 'terms') @if($field['type'] !== 'terms')
<label class="block text-sm font-medium text-gray-700 mb-1"> <label class="flex items-center gap-1.5 text-sm font-semibold text-gray-800">
{{ $field['label'] }} {{ $field['label'] }}
@if($field['is_required'] ?? false) <span class="text-red-500">*</span> @endif @if($field['is_required'] ?? false)
<span class="text-red-500 text-xs">*</span>
@endif
@if($field['is_unique'] ?? false) @if($field['is_unique'] ?? false)
<span class="text-xs text-orange-500 ms-1">({{ __('فريد') }})</span> <span class="inline-flex items-center gap-0.5 text-[10px] text-amber-600 bg-amber-50 px-1.5 py-0.5 rounded-full font-medium">
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
{{ __('فريد') }}
</span>
@endif @endif
</label> </label>
@endif @endif
{{-- Description --}} {{-- Description --}}
@if(!empty($field['description']) && $field['type'] !== 'section_divider') @if(!empty($field['description']) && $field['type'] !== 'section_divider')
<p class="text-xs text-gray-400 mb-1.5">{{ $field['description'] }}</p> <p class="text-xs text-gray-500">{{ $field['description'] }}</p>
@endif @endif
@switch($field['type']) @switch($field['type'])
...@@ -68,9 +79,9 @@ ...@@ -68,9 +79,9 @@
@if(in_array($field['type'], ['email', 'phone', 'national_id'])) dir="ltr" @endif @if(in_array($field['type'], ['email', 'phone', 'national_id'])) dir="ltr" @endif
@if(!empty($field['max_length'])) maxlength="{{ $field['max_length'] }}" @endif @if(!empty($field['max_length'])) maxlength="{{ $field['max_length'] }}" @endif
@if(!empty($field['pattern'])) pattern="{{ $field['pattern'] }}" @endif @if(!empty($field['pattern'])) pattern="{{ $field['pattern'] }}" @endif
class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text-gray-900 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 @error('fields.'.$field['key']) border-red-500 @enderror"> class="w-full px-4 py-3 bg-white text-gray-900 border border-gray-200 rounded-xl text-sm shadow-sm placeholder:text-gray-400 focus:ring-2 focus:ring-[var(--site-accent,#2563eb)] focus:border-[var(--site-accent,#2563eb)] transition-shadow @error('fields.'.$field['key']) border-red-400 ring-1 ring-red-400 @enderror">
@if(!empty($field['max_length'])) @if(!empty($field['max_length']))
<p class="text-xs text-gray-400 mt-1 text-end" dir="ltr"> <p class="text-[11px] text-gray-400 mt-0.5 text-end" dir="ltr">
<span x-text="($wire.fields['{{ $field['key'] }}'] || '').length"></span>/{{ $field['max_length'] }} <span x-text="($wire.fields['{{ $field['key'] }}'] || '').length"></span>/{{ $field['max_length'] }}
</p> </p>
@endif @endif
...@@ -81,16 +92,16 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text- ...@@ -81,16 +92,16 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text-
placeholder="{{ $field['placeholder'] ?? '' }}" placeholder="{{ $field['placeholder'] ?? '' }}"
@if(!empty($field['min_value'])) min="{{ $field['min_value'] }}" @endif @if(!empty($field['min_value'])) min="{{ $field['min_value'] }}" @endif
@if(!empty($field['max_value'])) max="{{ $field['max_value'] }}" @endif @if(!empty($field['max_value'])) max="{{ $field['max_value'] }}" @endif
class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text-gray-900 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 @error('fields.'.$field['key']) border-red-500 @enderror"> class="w-full px-4 py-3 bg-white text-gray-900 border border-gray-200 rounded-xl text-sm shadow-sm placeholder:text-gray-400 focus:ring-2 focus:ring-[var(--site-accent,#2563eb)] focus:border-[var(--site-accent,#2563eb)] transition-shadow @error('fields.'.$field['key']) border-red-400 ring-1 ring-red-400 @enderror">
@break @break
@case('textarea') @case('textarea')
<textarea wire:model="fields.{{ $field['key'] }}" rows="3" <textarea wire:model="fields.{{ $field['key'] }}" rows="3"
placeholder="{{ $field['placeholder'] ?? '' }}" placeholder="{{ $field['placeholder'] ?? '' }}"
@if(!empty($field['max_length'])) maxlength="{{ $field['max_length'] }}" @endif @if(!empty($field['max_length'])) maxlength="{{ $field['max_length'] }}" @endif
class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text-gray-900 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 @error('fields.'.$field['key']) border-red-500 @enderror"></textarea> class="w-full px-4 py-3 bg-white text-gray-900 border border-gray-200 rounded-xl text-sm shadow-sm placeholder:text-gray-400 focus:ring-2 focus:ring-[var(--site-accent,#2563eb)] focus:border-[var(--site-accent,#2563eb)] transition-shadow resize-none @error('fields.'.$field['key']) border-red-400 ring-1 ring-red-400 @enderror"></textarea>
@if(!empty($field['max_length'])) @if(!empty($field['max_length']))
<p class="text-xs text-gray-400 mt-1 text-end" dir="ltr"> <p class="text-[11px] text-gray-400 mt-0.5 text-end" dir="ltr">
<span x-text="($wire.fields['{{ $field['key'] }}'] || '').length"></span>/{{ $field['max_length'] }} <span x-text="($wire.fields['{{ $field['key'] }}'] || '').length"></span>/{{ $field['max_length'] }}
</p> </p>
@endif @endif
...@@ -98,12 +109,12 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text- ...@@ -98,12 +109,12 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text-
@case('date') @case('date')
<input type="date" wire:model="fields.{{ $field['key'] }}" dir="ltr" <input type="date" wire:model="fields.{{ $field['key'] }}" dir="ltr"
class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text-gray-900 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 @error('fields.'.$field['key']) border-red-500 @enderror"> class="w-full px-4 py-3 bg-white text-gray-900 border border-gray-200 rounded-xl text-sm shadow-sm focus:ring-2 focus:ring-[var(--site-accent,#2563eb)] focus:border-[var(--site-accent,#2563eb)] transition-shadow @error('fields.'.$field['key']) border-red-400 ring-1 ring-red-400 @enderror">
@break @break
@case('select') @case('select')
<select wire:model.live="fields.{{ $field['key'] }}" <select wire:model.live="fields.{{ $field['key'] }}"
class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text-gray-900 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 @error('fields.'.$field['key']) border-red-500 @enderror"> class="w-full px-4 py-3 bg-white text-gray-900 border border-gray-200 rounded-xl text-sm shadow-sm focus:ring-2 focus:ring-[var(--site-accent,#2563eb)] focus:border-[var(--site-accent,#2563eb)] transition-shadow @error('fields.'.$field['key']) border-red-400 ring-1 ring-red-400 @enderror">
<option value="">{{ $field['placeholder'] ?? __('اختر...') }}</option> <option value="">{{ $field['placeholder'] ?? __('اختر...') }}</option>
@foreach($field['options'] ?? [] as $option) @foreach($field['options'] ?? [] as $option)
<option value="{{ $option['value'] }}">{{ $option['label'] }}</option> <option value="{{ $option['value'] }}">{{ $option['label'] }}</option>
...@@ -115,72 +126,74 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text- ...@@ -115,72 +126,74 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text-
@if($field['allow_other'] ?? false) @if($field['allow_other'] ?? false)
<div x-show="$wire.fields['{{ $field['key'] }}'] === '__other__'" x-transition class="mt-2"> <div x-show="$wire.fields['{{ $field['key'] }}'] === '__other__'" x-transition class="mt-2">
<input type="text" wire:model="fields.{{ $field['key'] }}_other" placeholder="{{ __('حدد...') }}" <input type="text" wire:model="fields.{{ $field['key'] }}_other" placeholder="{{ __('حدد...') }}"
class="w-full px-4 py-2.5 border border-gray-300 rounded-xl text-sm bg-white text-gray-900 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"> class="w-full px-4 py-2.5 bg-white text-gray-900 border border-gray-200 rounded-xl text-sm shadow-sm placeholder:text-gray-400 focus:ring-2 focus:ring-[var(--site-accent,#2563eb)] focus:border-[var(--site-accent,#2563eb)]">
</div> </div>
@endif @endif
@break @break
@case('radio') @case('radio')
<div class="space-y-2 @error('fields.'.$field['key']) ring-1 ring-red-400 rounded-xl p-2 @enderror"> <div class="bg-white border border-gray-200 rounded-xl overflow-hidden divide-y divide-gray-100 shadow-sm @error('fields.'.$field['key']) border-red-400 ring-1 ring-red-400 @enderror">
@foreach($field['options'] ?? [] as $option) @foreach($field['options'] ?? [] as $option)
<label class="flex items-center gap-2.5 cursor-pointer p-2 rounded-lg hover:bg-gray-50 transition-colors"> <label class="flex items-center gap-3 cursor-pointer px-4 py-3 hover:bg-gray-50 transition-colors">
<input type="radio" wire:model.live="fields.{{ $field['key'] }}" value="{{ $option['value'] }}" <input type="radio" wire:model.live="fields.{{ $field['key'] }}" value="{{ $option['value'] }}"
class="text-blue-600 focus:ring-blue-500"> class="w-4 h-4 text-[var(--site-accent,#2563eb)] border-gray-300 focus:ring-[var(--site-accent,#2563eb)]">
<span class="text-sm text-gray-700">{{ $option['label'] }}</span> <span class="text-sm text-gray-800 font-medium">{{ $option['label'] }}</span>
</label> </label>
@endforeach @endforeach
@if($field['allow_other'] ?? false) @if($field['allow_other'] ?? false)
<label class="flex items-center gap-2.5 cursor-pointer p-2 rounded-lg hover:bg-gray-50 transition-colors"> <label class="flex items-center gap-3 cursor-pointer px-4 py-3 hover:bg-gray-50 transition-colors">
<input type="radio" wire:model.live="fields.{{ $field['key'] }}" value="__other__" <input type="radio" wire:model.live="fields.{{ $field['key'] }}" value="__other__"
class="text-blue-600 focus:ring-blue-500"> class="w-4 h-4 text-[var(--site-accent,#2563eb)] border-gray-300 focus:ring-[var(--site-accent,#2563eb)]">
<span class="text-sm text-gray-700">{{ __('أخرى') }}</span> <span class="text-sm text-gray-800 font-medium">{{ __('أخرى') }}</span>
</label> </label>
<div x-show="$wire.fields['{{ $field['key'] }}'] === '__other__'" x-transition class="ms-6"> <div x-show="$wire.fields['{{ $field['key'] }}'] === '__other__'" x-transition class="px-4 py-3 bg-gray-50">
<input type="text" wire:model="fields.{{ $field['key'] }}_other" placeholder="{{ __('حدد...') }}" <input type="text" wire:model="fields.{{ $field['key'] }}_other" placeholder="{{ __('حدد...') }}"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm bg-white text-gray-900 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"> class="w-full px-3 py-2 bg-white text-gray-900 border border-gray-200 rounded-lg text-sm shadow-sm placeholder:text-gray-400 focus:ring-2 focus:ring-[var(--site-accent,#2563eb)] focus:border-[var(--site-accent,#2563eb)]">
</div> </div>
@endif @endif
</div> </div>
@break @break
@case('multi_select') @case('multi_select')
<div class="space-y-2 border border-gray-300 rounded-xl p-3 @error('fields.'.$field['key']) border-red-500 @enderror"> <div class="bg-white border border-gray-200 rounded-xl overflow-hidden divide-y divide-gray-100 shadow-sm @error('fields.'.$field['key']) border-red-400 ring-1 ring-red-400 @enderror">
@foreach($field['options'] ?? [] as $option) @foreach($field['options'] ?? [] as $option)
<label class="flex items-center gap-2.5 cursor-pointer p-1.5 rounded-lg hover:bg-gray-50 transition-colors"> <label class="flex items-center gap-3 cursor-pointer px-4 py-3 hover:bg-gray-50 transition-colors">
<input type="checkbox" wire:model="fields.{{ $field['key'] }}" value="{{ $option['value'] }}" <input type="checkbox" wire:model="fields.{{ $field['key'] }}" value="{{ $option['value'] }}"
class="rounded text-blue-600 focus:ring-blue-500"> class="w-4 h-4 rounded text-[var(--site-accent,#2563eb)] border-gray-300 focus:ring-[var(--site-accent,#2563eb)]">
<span class="text-sm text-gray-700">{{ $option['label'] }}</span> <span class="text-sm text-gray-800 font-medium">{{ $option['label'] }}</span>
</label> </label>
@endforeach @endforeach
@if($field['allow_other'] ?? false) @if($field['allow_other'] ?? false)
<label class="flex items-center gap-2.5 cursor-pointer p-1.5 rounded-lg hover:bg-gray-50 transition-colors"> <label class="flex items-center gap-3 cursor-pointer px-4 py-3 hover:bg-gray-50 transition-colors">
<input type="checkbox" wire:model="fields.{{ $field['key'] }}" value="__other__" <input type="checkbox" wire:model="fields.{{ $field['key'] }}" value="__other__"
class="rounded text-blue-600 focus:ring-blue-500"> class="w-4 h-4 rounded text-[var(--site-accent,#2563eb)] border-gray-300 focus:ring-[var(--site-accent,#2563eb)]">
<span class="text-sm text-gray-700">{{ __('أخرى') }}</span> <span class="text-sm text-gray-800 font-medium">{{ __('أخرى') }}</span>
</label> </label>
<div x-show="($wire.fields['{{ $field['key'] }}'] || []).includes('__other__')" x-transition class="ms-6"> <div x-show="($wire.fields['{{ $field['key'] }}'] || []).includes('__other__')" x-transition class="px-4 py-3 bg-gray-50">
<input type="text" wire:model="fields.{{ $field['key'] }}_other" placeholder="{{ __('حدد...') }}" <input type="text" wire:model="fields.{{ $field['key'] }}_other" placeholder="{{ __('حدد...') }}"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm bg-white text-gray-900 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"> class="w-full px-3 py-2 bg-white text-gray-900 border border-gray-200 rounded-lg text-sm shadow-sm placeholder:text-gray-400 focus:ring-2 focus:ring-[var(--site-accent,#2563eb)] focus:border-[var(--site-accent,#2563eb)]">
</div> </div>
@endif @endif
</div> </div>
@break @break
@case('checkbox') @case('checkbox')
<label class="flex items-center gap-2.5 cursor-pointer"> <label class="flex items-center gap-3 cursor-pointer bg-white border border-gray-200 rounded-xl px-4 py-3 shadow-sm hover:bg-gray-50 transition-colors">
<input type="checkbox" wire:model="fields.{{ $field['key'] }}" class="rounded text-blue-600 focus:ring-blue-500"> <input type="checkbox" wire:model="fields.{{ $field['key'] }}"
<span class="text-sm text-gray-700">{{ $field['placeholder'] ?? $field['label'] }}</span> class="w-4 h-4 rounded text-[var(--site-accent,#2563eb)] border-gray-300 focus:ring-[var(--site-accent,#2563eb)]">
<span class="text-sm text-gray-800 font-medium">{{ $field['placeholder'] ?? $field['label'] }}</span>
</label> </label>
@break @break
@case('terms') @case('terms')
<label class="flex items-start gap-2.5 cursor-pointer"> <label class="flex items-start gap-3 cursor-pointer bg-amber-50 border border-amber-200 rounded-xl px-4 py-3.5">
<input type="checkbox" wire:model="fields.{{ $field['key'] }}" class="rounded text-blue-600 focus:ring-blue-500 mt-0.5"> <input type="checkbox" wire:model="fields.{{ $field['key'] }}"
<span class="text-sm text-gray-700"> class="w-4 h-4 rounded text-[var(--site-accent,#2563eb)] border-gray-300 focus:ring-[var(--site-accent,#2563eb)] mt-0.5">
<span class="text-sm text-gray-800">
{{ $field['label'] }} {{ $field['label'] }}
@if($field['is_required'] ?? false) <span class="text-red-500">*</span> @endif @if($field['is_required'] ?? false) <span class="text-red-500">*</span> @endif
@if(!empty($field['terms_url'])) @if(!empty($field['terms_url']))
<a href="{{ $field['terms_url'] }}" target="_blank" rel="noopener" class="text-blue-600 underline hover:text-blue-800">{{ __('اقرأ الشروط') }}</a> <a href="{{ $field['terms_url'] }}" target="_blank" rel="noopener" class="text-[var(--site-accent,#2563eb)] underline hover:no-underline font-medium">{{ __('اقرأ الشروط') }}</a>
@endif @endif
</span> </span>
</label> </label>
...@@ -189,24 +202,37 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm bg-white text- ...@@ -189,24 +202,37 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm bg-white text-
@case('location') @case('location')
<input type="text" wire:model="fields.{{ $field['key'] }}" dir="ltr" <input type="text" wire:model="fields.{{ $field['key'] }}" dir="ltr"
placeholder="{{ $field['placeholder'] ?? __('أدخل رابط الموقع أو الإحداثيات') }}" placeholder="{{ $field['placeholder'] ?? __('أدخل رابط الموقع أو الإحداثيات') }}"
class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm bg-white text-gray-900 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 @error('fields.'.$field['key']) border-red-500 @enderror"> class="w-full px-4 py-3 bg-white text-gray-900 border border-gray-200 rounded-xl text-sm shadow-sm placeholder:text-gray-400 focus:ring-2 focus:ring-[var(--site-accent,#2563eb)] focus:border-[var(--site-accent,#2563eb)] transition-shadow @error('fields.'.$field['key']) border-red-400 ring-1 ring-red-400 @enderror">
@break @break
@case('file_upload') @case('file_upload')
<input type="file" wire:model="fields.{{ $field['key'] }}" <div class="relative">
class="w-full px-4 py-3 border border-gray-300 rounded-xl text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500 file:me-3 file:py-1 file:px-3 file:rounded-lg file:border-0 file:text-sm file:bg-blue-50 file:text-blue-700 @error('fields.'.$field['key']) border-red-500 @enderror"> <input type="file" wire:model="fields.{{ $field['key'] }}"
class="w-full px-4 py-3 bg-white text-gray-900 border border-gray-200 rounded-xl text-sm shadow-sm file:me-3 file:py-1.5 file:px-4 file:rounded-lg file:border-0 file:text-sm file:font-medium file:bg-[var(--site-accent,#2563eb)]/10 file:text-[var(--site-accent,#2563eb)] hover:file:bg-[var(--site-accent,#2563eb)]/20 @error('fields.'.$field['key']) border-red-400 ring-1 ring-red-400 @enderror">
</div>
@break @break
@endswitch @endswitch
@error('fields.'.$field['key']) <p class="mt-1 text-xs text-red-600">{{ $message }}</p> @enderror @error('fields.'.$field['key'])
<p class="flex items-center gap-1 mt-1 text-xs text-red-600">
<svg class="w-3.5 h-3.5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01"/></svg>
{{ $message }}
</p>
@enderror
</div> </div>
@endforeach @endforeach
</div> </div>
<button type="submit" wire:loading.attr="disabled" wire:target="submit" <button type="submit" wire:loading.attr="disabled" wire:target="submit"
class="w-full py-3.5 bg-blue-600 text-white rounded-xl font-medium hover:bg-blue-700 transition-colors disabled:opacity-50"> class="w-full py-4 bg-[var(--site-accent,#2563eb)] text-white rounded-xl font-bold text-base shadow-lg shadow-[var(--site-accent,#2563eb)]/25 hover:shadow-xl hover:shadow-[var(--site-accent,#2563eb)]/30 hover:brightness-110 transition-all disabled:opacity-50 disabled:shadow-none">
<span wire:loading.remove wire:target="submit">{{ __('تسجيل') }}</span> <span wire:loading.remove wire:target="submit" class="flex items-center justify-center gap-2">
<span wire:loading wire:target="submit">{{ __('جارٍ التسجيل...') }}</span> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
{{ __('تسجيل') }}
</span>
<span wire:loading wire:target="submit" class="flex items-center justify-center gap-2">
<svg class="w-5 h-5 animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"/><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"/></svg>
{{ __('جارٍ التسجيل...') }}
</span>
</button> </button>
</form> </form>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment