{{-- Premium Opening Hours Component A beautiful day-by-day schedule editor with open/closed toggles and time pickers. Inspired by modern UI patterns with smooth transitions and elegant design. Usage in DataDefinition: 'opening_hours' => [ 'text' => trans('common.opening_hours'), 'type' => 'opening_hours', 'help' => trans('common.opening_hours_help'), 'default' => [ 'monday' => ['open' => '09:00', 'close' => '17:00', 'closed' => false], ... ], 'validate' => ['nullable', 'array'], 'actions' => ['edit', 'view'], ], --}} @props([ 'name' => 'opening_hours', 'value' => [], 'label' => null, 'help' => null, 'required' => false, 'class' => '', ]) @php // Default hours structure for all days $defaultHours = [ 'monday' => ['open' => '09:00', 'close' => '17:00', 'closed' => false], 'tuesday' => ['open' => '09:00', 'close' => '17:00', 'closed' => false], 'wednesday' => ['open' => '09:00', 'close' => '17:00', 'closed' => false], 'thursday' => ['open' => '09:00', 'close' => '17:00', 'closed' => false], 'friday' => ['open' => '09:00', 'close' => '17:00', 'closed' => false], 'saturday' => ['open' => '10:00', 'close' => '16:00', 'closed' => false], 'sunday' => ['open' => '10:00', 'close' => '16:00', 'closed' => true], ]; // Merge provided value with defaults $hours = is_array($value) ? array_merge($defaultHours, $value) : $defaultHours; // Day labels (translatable) $days = [ 'monday' => trans('common.monday'), 'tuesday' => trans('common.tuesday'), 'wednesday' => trans('common.wednesday'), 'thursday' => trans('common.thursday'), 'friday' => trans('common.friday'), 'saturday' => trans('common.saturday'), 'sunday' => trans('common.sunday'), ]; @endphp
{{-- Label Row --}} @if ($label)
@if ($help) {!! $help !!} @endif
@endif {{-- Hours Card --}}
{{-- Header --}}
{{ trans('common.weekly_schedule') ?? 'Weekly Schedule' }}
{{-- Days List --}}
@foreach($days as $dayKey => $dayLabel) @php $dayHours = $hours[$dayKey] ?? $defaultHours[$dayKey]; $isClosed = $dayHours['closed'] ?? false; @endphp
{{-- Day Name --}}
{{ $dayLabel }}
{{-- Open/Closed Toggle --}}
{{-- Time Inputs (shown when open) --}}
{{-- Open Time --}} {{-- Close Time --}}
{{-- Closed Indicator (shown when closed) --}}
{{ trans('common.not_open_this_day') ?? 'Not open this day' }}
@endforeach