Initial commit

This commit is contained in:
2025-11-20 23:21:05 +08:00
commit 13bc6db529
378 changed files with 54527 additions and 0 deletions

View File

@@ -0,0 +1,170 @@
<section>
<header>
<h2 class="text-lg font-medium text-gray-900">
{{ __('Profile Information') }}
</h2>
<p class="mt-1 text-sm text-gray-600">
{{ __("Update your account's profile information and email address.") }}
</p>
</header>
<form id="send-verification" method="post" action="{{ route('verification.send') }}">
@csrf
</form>
<form method="post" action="{{ route('profile.update') }}" class="mt-6 space-y-6" enctype="multipart/form-data">
@if ($user->profilePhotoUrl())
<div class="flex items-center space-x-4">
<img src="{{ $user->profilePhotoUrl() }}" alt="{{ __('Profile photo for :name', ['name' => $user->name]) }}" class="h-16 w-16 rounded-full object-cover">
<p class="text-sm text-gray-600">{{ __('This is your current profile photo.') }}</p>
</div>
@endif
<div>
<x-input-label for="profile_photo" :value="__('Profile Photo')" />
<input
id="profile_photo"
name="profile_photo"
type="file"
class="mt-1 block w-full text-sm text-gray-900 file:mr-4 file:rounded-md file:border-0 file:bg-indigo-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-indigo-700 hover:file:bg-indigo-100"
accept="image/*"
/>
<x-input-error class="mt-2" :messages="$errors->get('profile_photo')" />
</div>
@csrf
@method('patch')
<div>
<x-input-label for="name" :value="__('Name')" />
<x-text-input id="name" name="name" type="text" class="mt-1 block w-full" :value="old('name', $user->name)" required autofocus autocomplete="name" />
<x-input-error class="mt-2" :messages="$errors->get('name')" />
</div>
<div>
<x-input-label for="email" :value="__('Email')" />
<x-text-input id="email" name="email" type="email" class="mt-1 block w-full" :value="old('email', $user->email)" required autocomplete="username" />
<x-input-error class="mt-2" :messages="$errors->get('email')" />
@if ($user instanceof \Illuminate\Contracts\Auth\MustVerifyEmail && ! $user->hasVerifiedEmail())
<div>
<p class="text-sm mt-2 text-gray-800">
{{ __('Your email address is unverified.') }}
<button form="send-verification" class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
{{ __('Click here to re-send the verification email.') }}
</button>
</p>
@if (session('status') === 'verification-link-sent')
<p class="mt-2 font-medium text-sm text-green-600">
{{ __('A new verification link has been sent to your email address.') }}
</p>
@endif
</div>
@endif
</div>
<div>
<x-input-label for="phone" :value="__('Phone')" />
<x-text-input
id="phone"
name="phone"
type="text"
class="mt-1 block w-full"
:value="old('phone', optional($member)->phone)"
autocomplete="tel"
/>
<x-input-error class="mt-2" :messages="$errors->get('phone')" />
</div>
<div>
<x-input-label for="address_line_1" :value="__('Address Line 1')" />
<x-text-input
id="address_line_1"
name="address_line_1"
type="text"
class="mt-1 block w-full"
:value="old('address_line_1', optional($member)->address_line_1)"
/>
<x-input-error class="mt-2" :messages="$errors->get('address_line_1')" />
</div>
<div>
<x-input-label for="address_line_2" :value="__('Address Line 2')" />
<x-text-input
id="address_line_2"
name="address_line_2"
type="text"
class="mt-1 block w-full"
:value="old('address_line_2', optional($member)->address_line_2)"
/>
<x-input-error class="mt-2" :messages="$errors->get('address_line_2')" />
</div>
<div class="grid gap-4 sm:grid-cols-2">
<div>
<x-input-label for="city" :value="__('City')" />
<x-text-input
id="city"
name="city"
type="text"
class="mt-1 block w-full"
:value="old('city', optional($member)->city)"
/>
<x-input-error class="mt-2" :messages="$errors->get('city')" />
</div>
<div>
<x-input-label for="postal_code" :value="__('Postal Code')" />
<x-text-input
id="postal_code"
name="postal_code"
type="text"
class="mt-1 block w-full"
:value="old('postal_code', optional($member)->postal_code)"
/>
<x-input-error class="mt-2" :messages="$errors->get('postal_code')" />
</div>
</div>
<div>
<x-input-label for="emergency_contact_name" :value="__('Emergency Contact Name')" />
<x-text-input
id="emergency_contact_name"
name="emergency_contact_name"
type="text"
class="mt-1 block w-full"
:value="old('emergency_contact_name', optional($member)->emergency_contact_name)"
/>
<x-input-error class="mt-2" :messages="$errors->get('emergency_contact_name')" />
</div>
<div>
<x-input-label for="emergency_contact_phone" :value="__('Emergency Contact Phone')" />
<x-text-input
id="emergency_contact_phone"
name="emergency_contact_phone"
type="text"
class="mt-1 block w-full"
:value="old('emergency_contact_phone', optional($member)->emergency_contact_phone)"
/>
<x-input-error class="mt-2" :messages="$errors->get('emergency_contact_phone')" />
</div>
<div class="flex items-center gap-4">
<x-primary-button>{{ __('Save') }}</x-primary-button>
@if (session('status') === 'profile-updated')
<p
x-data="{ show: true }"
x-show="show"
x-transition
x-init="setTimeout(() => show = false, 2000)"
class="text-sm text-gray-600"
>{{ __('Saved.') }}</p>
@endif
</div>
</form>
</section>