Snapshot of main at 9f39a6e1e (2026-11-02)
This commit is contained in:
commit
6ccf1792d7
2580 files changed
+1040202
No files matched your search
@@ -0,0 +1,28 @@
|
||||
<x-guest-layout>
|
||||
<x-jetstream.authentication-card>
|
||||
<x-slot name="logo">
|
||||
<x-jetstream.application-mark class="hidden md:block md:h-20 xl:h-28 w-auto md:mt-3" />
|
||||
</x-slot>
|
||||
|
||||
<div class="mb-4 text-sm text-theme-secondary">
|
||||
{{ __('This is a secure area of the application. Please confirm your password before continuing.') }}
|
||||
</div>
|
||||
|
||||
<x-jetstream.validation-errors class="mb-4" />
|
||||
|
||||
<form method="POST" action="{{ route('password.confirm') }}">
|
||||
@csrf
|
||||
|
||||
<div>
|
||||
<x-jetstream.label for="password" value="{{ __('Password') }}" />
|
||||
<x-jetstream.input id="password" class="block mt-1 w-full" type="password" name="password" required autocomplete="current-password" autofocus />
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end mt-4">
|
||||
<x-jetstream.button class="ml-4">
|
||||
{{ __('Confirm') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
</form>
|
||||
</x-jetstream.authentication-card>
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,37 @@
|
||||
<x-guest-layout>
|
||||
<x-jetstream.authentication-card>
|
||||
<x-slot name="logo">
|
||||
<x-jetstream.application-mark class="hidden md:block md:h-20 xl:h-28 w-auto md:mt-3" />
|
||||
</x-slot>
|
||||
|
||||
<div class="mb-4 text-sm text-theme-secondary">
|
||||
{{ __('Forgot the profile\'s password? No problem. Just let us know the email address of this profile and we will email a password reset link that will allow you to choose a new one.') }}
|
||||
</div>
|
||||
|
||||
@if (session('status'))
|
||||
<div class="mb-4 font-medium text-sm text-green-600">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<x-jetstream.validation-errors class="mb-4" />
|
||||
|
||||
<form method="POST" action="{{ \Mcamara\LaravelLocalization\Facades\LaravelLocalization::localizeURL(parse_url(route('non-user.password.email', ['profileType' => $profileType]), PHP_URL_PATH)) }}">
|
||||
@csrf
|
||||
@if (!empty($profileId))
|
||||
<input type="hidden" name="profileId" value="{{ $profileId }}">
|
||||
@endif
|
||||
|
||||
<div class="block">
|
||||
<x-jetstream.label for="email" value="{{ __('Email') }}" />
|
||||
<x-jetstream.input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus />
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-end mt-4">
|
||||
<x-jetstream.button>
|
||||
{{ __('Email Password Reset Link') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
</form>
|
||||
</x-jetstream.authentication-card>
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,34 @@
|
||||
<x-guest-layout>
|
||||
<x-jetstream.authentication-card>
|
||||
<x-slot name="logo">
|
||||
<x-jetstream.application-mark class="hidden md:block md:h-20 xl:h-28 w-auto md:mt-3" />
|
||||
</x-slot>
|
||||
|
||||
<div class="mb-4 text-sm text-theme-secondary">
|
||||
{{ __('Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.') }}
|
||||
</div>
|
||||
|
||||
@if (session('status'))
|
||||
<div class="mb-4 font-medium text-sm text-green-600">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<x-jetstream.validation-errors class="mb-4" />
|
||||
|
||||
<form method="POST" action="{{ \LaravelLocalization::localizeURL(route('password.email')) }}">
|
||||
@csrf
|
||||
|
||||
<div class="block">
|
||||
<x-jetstream.label for="email" value="{{ __('Email') }}" />
|
||||
<x-jetstream.input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus />
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-end mt-4">
|
||||
<x-jetstream.button>
|
||||
{{ __('Email Password Reset Link') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
</form>
|
||||
</x-jetstream.authentication-card>
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,151 @@
|
||||
@php
|
||||
if (request()->has('redirect')) {
|
||||
session(['url.intended' => request()->query('redirect')]);
|
||||
}
|
||||
@endphp
|
||||
<x-guest-layout>
|
||||
<x-jetstream.authentication-card>
|
||||
<x-slot name="logo">
|
||||
<x-jetstream.application-mark class="hidden md:block md:h-20 xl:h-28 w-auto md:mt-3" />
|
||||
</x-slot>
|
||||
|
||||
@if(isMaintenanceMode() || session('maintenance_mode_active'))
|
||||
<div class="mb-6 rounded-md bg-gray-50 border border-gray-300 p-4">
|
||||
<div class="flex">
|
||||
<div class="flex-shrink-0">
|
||||
<svg class="h-5 w-5 text-gray-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path fill-rule="evenodd" d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</div>
|
||||
<div class="ml-3">
|
||||
<h3 class="text-sm font-medium text-gray-800">
|
||||
{{ __('Site under maintenance') }}
|
||||
</h3>
|
||||
<div class="mt-2 text-sm text-gray-600">
|
||||
<p>
|
||||
{{ __('The site is currently undergoing maintenance, and login is temporarily unavailable. Thank you for your patience.') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="mb-4">
|
||||
@if(session('maintenance_mode_active'))
|
||||
{{-- Show maintenance error without "Whoops!" heading --}}
|
||||
<div class="rounded-md bg-red-50 border border-red-200 p-4">
|
||||
<div class="flex">
|
||||
<div class="flex-shrink-0">
|
||||
<svg class="h-5 w-5 text-red-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</div>
|
||||
<div class="ml-3">
|
||||
<div class="text-sm text-red-800">
|
||||
@foreach ($errors->all() as $error)
|
||||
<p>{{ $error }}</p>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
{{-- Show standard validation errors with "Whoops!" heading --}}
|
||||
<x-jetstream.validation-errors />
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (session('status'))
|
||||
<div class="mb-4 font-medium text-sm text-green-600">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{-- Shown only for a guest who clicked "Reserve a spot" on an event.
|
||||
The same login page serves other guest redirects (reactions, for
|
||||
one), so the reason parameter — not merely the presence of a
|
||||
redirect — is what gates this. --}}
|
||||
@if (request()->query('reason') === 'reserve' && request()->filled('redirect'))
|
||||
<div class="mb-6 p-4 rounded-md bg-theme-surface border border-theme-border">
|
||||
<p class="text-sm text-theme-primary">
|
||||
{{ __('To reserve a spot a :platform account is required. Please log in to continue.', ['platform' => platform_name()]) }}
|
||||
</p>
|
||||
@php
|
||||
// The link is a placeholder rather than a separate string:
|
||||
// "register here" puts the link in a different position in
|
||||
// Dutch and German, and two half-sentences cannot express
|
||||
// that.
|
||||
$registerLink = '<a href="' . e(route('register', array_filter([
|
||||
'redirect' => request()->query('redirect'),
|
||||
'reason' => request()->query('reason'),
|
||||
]))) . '" class="underline text-theme-brand hover:text-opacity-80">'
|
||||
. e(__('here')) . '</a>';
|
||||
@endphp
|
||||
<p class="mt-2 text-sm text-theme-primary">
|
||||
{!! __('No account yet? You can register :link.', ['link' => $registerLink]) !!}
|
||||
</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('login') }}">
|
||||
@csrf
|
||||
|
||||
<div>
|
||||
<x-jetstream.label for="name" value="{!! __('Email or username') !!}" />
|
||||
<x-jetstream.input id="name" class="block mt-1 w-full" type="text" name="name" value="{{ old('name', request()->input('name')) }}" required autofocus autocomplete="username" />
|
||||
</div>
|
||||
|
||||
<div class="mt-4" x-data="{ showPassword: false }">
|
||||
<x-jetstream.label for="password" value="{{ __('Password') }}" />
|
||||
<div class="relative">
|
||||
<x-jetstream.input id="password" class="block mt-1 w-full pr-10" type="password" ::type="showPassword ? 'text' : 'password'" name="password" required autocomplete="current-password" />
|
||||
<div class="absolute inset-y-0 right-0 pr-3 flex items-center text-sm leading-5">
|
||||
<button type="button" @click="showPassword = !showPassword" class="ring-opacity-70 hover:opacity-90 focus:outline-none focus:text-theme-primary">
|
||||
<template x-if="showPassword">
|
||||
<x-icon name="eye" class="h-5 w-5" />
|
||||
</template>
|
||||
<template x-if="!showPassword">
|
||||
<x-icon name="eye-slash" class="h-5 w-5 opacity-70" />
|
||||
</template>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-end mt-8 mb-8">
|
||||
@if (Route::has('password.request'))
|
||||
<a class="underline text-sm text-theme-primary hover:text-theme-primary" href="{{ route('password.request') }}">
|
||||
{{ __('Forgot your password?') }}
|
||||
</a>
|
||||
@endif
|
||||
|
||||
<x-jetstream.button class="ml-4">
|
||||
{{ __('Log in') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
</form>
|
||||
</x-jetstream.authentication-card>
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
// Check if there's a redirect parameter in the URL
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const redirectUrl = urlParams.get('redirect');
|
||||
|
||||
if (redirectUrl) {
|
||||
// Send to server to store in session
|
||||
fetch('{{ route("store-intended-url") }}', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||
},
|
||||
body: JSON.stringify({ url: redirectUrl })
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,94 @@
|
||||
<x-guest-layout>
|
||||
<x-jetstream.authentication-card>
|
||||
<x-slot name="logo">
|
||||
<x-jetstream.application-mark class="hidden md:block md:h-20 xl:h-28 w-auto md:mt-3" />
|
||||
</x-slot>
|
||||
|
||||
<x-jetstream.section-title>
|
||||
<x-slot name="title">{{ __('Please introduce yourself in a few sentences') }}</x-slot>
|
||||
<x-slot name="description">
|
||||
<div class="my-4">{{ __('Other Timebankers like to know who you are before they start their first exchange with you.') }}</div>
|
||||
<div class="my-4">{{ __('Explaining why you like to be part of our time economy can also help with getting new exhanges.') }}</div>
|
||||
|
||||
<!--- Stepper --->
|
||||
<h1 class="mt-12 text-theme-secondary">{{ __('Step 2 of 3') }}</h1>
|
||||
<div class="mb-10 mt-2 relative inset-x-0 bottom-0 h-4 rounded-full overflow-hidden">
|
||||
<div class=" w-full h-full bg-theme-surface absolute "></div>
|
||||
<div class=" h-full bg-theme-secondary absolute" style="width:66%"></div>
|
||||
</div>
|
||||
|
||||
</x-slot>
|
||||
</x-jetstream.section-title>
|
||||
|
||||
|
||||
<div class="mt-5 md:mt-0 md:col-span-2">
|
||||
<x-jetstream.validation-errors class="mb-4" />
|
||||
|
||||
<!---- Right section --->
|
||||
<div class="px-4 py-5 bg-theme-background sm:p-6 shadow sm:rounded-tl-md sm:rounded-tr-md">
|
||||
<div class="mt-0 text-2xl">
|
||||
{{ __('') }}
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-6 gap-6">
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
|
||||
<form method="POST" action="{{ route('register-step2.create') }}" enctype="multipart/form-data">
|
||||
@csrf
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="mt-4">
|
||||
<x-jetstream.label for="photo" value="{{ __('Profile photo') }}" />
|
||||
<input type="file" name="photo" />
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mt-4">
|
||||
<x-jetstream.label for="about" value="{{ __('Short intro about yourself') }}" />
|
||||
<x-jetstream.input id="about" class="block mt-1 w-full" type="text" name="about" :value="old('about')" required autofocus autocomplete="about" />
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<x-jetstream.label for="motivation" value="{{ __('Why do you like to joinTimebank.cc?') }}" />
|
||||
<x-jetstream.input id="motivation" class="block mt-1 w-full" type="text" name="motivation" :value="old('motivation')" required autofocus autocomplete="motivation" />
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<x-jetstream.label for="date_of_birth" value="{{ __('Date of birth') }}" />
|
||||
<x-jetstream.input id="date_of_birth" class="block mt-1 w-full" type="text" name="date_of_birth" :value="old('date_of_birth')" required autofocus autocomplete="date_of_birth" />
|
||||
</div>
|
||||
|
||||
|
||||
@if (Laravel\Jetstream\Jetstream::hasTermsAndPrivacyPolicyFeature())
|
||||
<div class="mt-4">
|
||||
<x-jetstream.label for="terms">
|
||||
<div class="flex items-center">
|
||||
<x-jetstream.checkbox name="terms" id="terms" />
|
||||
|
||||
<div class="ml-2">
|
||||
{!! __('I agree to the :terms_of_service and :privacy_policy', [
|
||||
'terms_of_service' => '<a target="_blank" href="'.route('app.terms.show').'" class="underline text-sm text-theme-primary hover:text-theme-primary">'.__('Terms of Service').'</a>',
|
||||
'privacy_policy' => '<a target="_blank" href="'.route('policy.show').'" class="underline text-sm text-theme-primary hover:text-theme-primary">'.__('Privacy Policy').'</a>',
|
||||
]) !!}
|
||||
</div>
|
||||
</div>
|
||||
</x-jetstream.label>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-end mt-4">
|
||||
<x-jetstream.button class="ml-4">
|
||||
{{ __('Register') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</x-jetstream.authentication-card>
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,60 @@
|
||||
<x-guest-layout>
|
||||
<x-jetstream.authentication-card>
|
||||
<x-slot name="logo">
|
||||
<x-jetstream.application-mark class="hidden md:block md:h-20 xl:h-28 w-auto md:mt-3" />
|
||||
</x-slot>
|
||||
|
||||
<x-jetstream.validation-errors class="mb-4" />
|
||||
|
||||
<form method="POST" action="{{ route('register') }}">
|
||||
@csrf
|
||||
|
||||
<div>
|
||||
<x-jetstream.label for="name" value="{{ __('Name') }}" />
|
||||
<x-jetstream.input id="name" class="block mt-1 w-full" type="text" name="name" :value="old('name')" required autofocus autocomplete="name" />
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<x-jetstream.label for="email" value="{{ __('Email') }}" />
|
||||
<x-jetstream.input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required />
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<x-jetstream.label for="password" value="{{ __('Password') }}" />
|
||||
<x-jetstream.input id="password" class="block mt-1 w-full" type="password" name="password" required autocomplete="new-password" />
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<x-jetstream.label for="password_confirmation" value="{{ __('Confirm Password') }}" />
|
||||
<x-jetstream.input id="password_confirmation" class="block mt-1 w-full" type="password" name="password_confirmation" required autocomplete="new-password" />
|
||||
</div>
|
||||
|
||||
@if (Laravel\Jetstream\Jetstream::hasTermsAndPrivacyPolicyFeature())
|
||||
<div class="mt-4">
|
||||
<x-jetstream.label for="terms">
|
||||
<div class="flex items-center">
|
||||
<x-jetstream.checkbox name="terms" id="terms" />
|
||||
|
||||
<div class="ml-2">
|
||||
{!! __('I agree to the :terms_of_service and :privacy_policy', [
|
||||
'terms_of_service' => '<a target="_blank" href="'.route('app.terms.show').'" class="underline text-sm text-gray-600 hover:text-gray-900">'.__('Terms of Service').'</a>',
|
||||
'privacy_policy' => '<a target="_blank" href="'.route('policy.show').'" class="underline text-sm text-gray-600 hover:text-gray-900">'.__('Privacy Policy').'</a>',
|
||||
]) !!}
|
||||
</div>
|
||||
</div>
|
||||
</x-jetstream.label>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="flex items-center justify-end mt-4">
|
||||
<a class="underline text-sm text-gray-600 hover:text-gray-900" href="{{ route('login') }}">
|
||||
{{ __('Already registered?') }}
|
||||
</a>
|
||||
|
||||
<x-jetstream.button class="ml-4">
|
||||
{{ __('Register') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
</form>
|
||||
</x-jetstream.authentication-card>
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,14 @@
|
||||
@php
|
||||
// Keep the intended destination when a guest arrives from login's
|
||||
// "register here" link, so registration returns them to the action they
|
||||
// started — reserving a spot, for instance.
|
||||
if (request()->has('redirect')) {
|
||||
session(['url.intended' => request()->query('redirect')]);
|
||||
}
|
||||
@endphp
|
||||
<x-guest-layout>
|
||||
<div class="flex items-center justify-center min-h-screen">
|
||||
<!-- Registration Livewire Component (contains modals) -->
|
||||
@livewire('registration')
|
||||
</div>
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,72 @@
|
||||
<x-guest-layout>
|
||||
<x-jetstream.authentication-card>
|
||||
<x-slot name="logo">
|
||||
<x-jetstream.application-mark class="hidden md:block md:h-20 xl:h-28 w-auto md:mt-3" />
|
||||
</x-slot>
|
||||
|
||||
@if(session('password_reset_errors'))
|
||||
<div class="mb-4">
|
||||
<div class="font-medium text-sm text-red-600">{{ __('Whoops! Something went wrong.') }}</div>
|
||||
<ul class="mt-3 list-disc list-inside text-sm text-red-600">
|
||||
@foreach(array_merge(...array_values(session('password_reset_errors'))) as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ \Mcamara\LaravelLocalization\Facades\LaravelLocalization::localizeURL(parse_url(route('non-user.password.update', ['profileType' => $profileType]), PHP_URL_PATH)) }}">
|
||||
@csrf
|
||||
|
||||
<input type="hidden" name="token" value="{{ $token }}">
|
||||
<input type="hidden" name="profileType" value="{{ $profileType }}">
|
||||
|
||||
|
||||
<div class="block">
|
||||
<x-jetstream.label for="email" value="{{ __('Email') }}" />
|
||||
<x-jetstream.input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email', $email)" required autofocus />
|
||||
</div>
|
||||
|
||||
<div class="mt-4" x-data="{ showPassword: false }">
|
||||
<x-jetstream.label for="password" value="{{ __('Password') }}" />
|
||||
<div class="relative">
|
||||
<x-jetstream.input id="password" class="block mt-1 w-full pr-10" type="password" ::type="showPassword ? 'text' : 'password'" name="password" required autocomplete="new-password" />
|
||||
<div class="absolute inset-y-0 right-0 pr-3 flex items-center text-sm leading-5">
|
||||
<button type="button" @click="showPassword = !showPassword" class="text-theme-muted hover:text-theme-primary focus:outline-none focus:text-theme-primary ring-opacity-70 hover:opacity-90">
|
||||
<template x-if="showPassword">
|
||||
<x-icon name="eye" class="h-5 w-5" />
|
||||
</template>
|
||||
<template x-if="!showPassword">
|
||||
<x-icon name="eye-slash" class="h-5 w-5 opacity-70" />
|
||||
</template>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4" x-data="{ showPassword: false }">
|
||||
<x-jetstream.label for="password_confirmation" value="{{ __('Confirm Password') }}" />
|
||||
<div class="relative">
|
||||
<x-jetstream.input id="password_confirmation" class="block mt-1 w-full pr-10" type="password" ::type="showPassword ? 'text' : 'password'" name="password_confirmation" required autocomplete="new-password" />
|
||||
<div class="absolute inset-y-0 right-0 pr-3 flex items-center text-sm leading-5">
|
||||
<button type="button" @click="showPassword = !showPassword" class="text-theme-muted hover:text-theme-primary focus:outline-none focus:text-theme-primary ring-opacity-70 hover:opacity-90">
|
||||
<template x-if="showPassword">
|
||||
<x-icon name="eye" class="h-5 w-5" />
|
||||
</template>
|
||||
<template x-if="!showPassword">
|
||||
<x-icon name="eye-slash" class="h-5 w-5 opacity-70" />
|
||||
</template>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex items-center justify-end mt-4">
|
||||
<x-jetstream.button>
|
||||
{{ __('Reset password') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
</form>
|
||||
</x-jetstream.authentication-card>
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,61 @@
|
||||
<x-guest-layout>
|
||||
<x-jetstream.authentication-card>
|
||||
<x-slot name="logo">
|
||||
<x-jetstream.application-mark class="hidden md:block md:h-20 xl:h-28 w-auto md:mt-3" />
|
||||
</x-slot>
|
||||
|
||||
<x-jetstream.validation-errors class="mb-4" />
|
||||
|
||||
<form method="POST" action="{{ \LaravelLocalization::localizeURL(route('password.update')) }}">
|
||||
@csrf
|
||||
|
||||
<input type="hidden" name="token" value="{{ $request->route('token') }}">
|
||||
|
||||
<div class="block">
|
||||
<x-jetstream.label for="email" value="{{ __('Email') }}" />
|
||||
<x-jetstream.input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email', $request->email)" required autofocus />
|
||||
</div>
|
||||
|
||||
<div class="mt-4" x-data="{ showPassword: false }">
|
||||
<x-jetstream.label for="password" value="{{ __('Password') }}" />
|
||||
<div class="relative">
|
||||
<x-jetstream.input id="password" class="block mt-1 w-full pr-10" type="password" ::type="showPassword ? 'text' : 'password'" name="password" required autocomplete="new-password" />
|
||||
<div class="absolute inset-y-0 right-0 pr-3 flex items-center text-sm leading-5">
|
||||
<button type="button" @click="showPassword = !showPassword" class="text-theme-muted hover:text-theme-primary focus:outline-none focus:text-theme-primary">
|
||||
<template x-if="!showPassword">
|
||||
<x-icon name="eye" class="h-5 w-5" />
|
||||
</template>
|
||||
<template x-if="showPassword">
|
||||
<x-icon name="eye-slash" class="h-5 w-5" />
|
||||
</template>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4" x-data="{ showPassword: false }">
|
||||
<x-jetstream.label for="password_confirmation" value="{{ __('Confirm Password') }}" />
|
||||
<div class="relative">
|
||||
<x-jetstream.input id="password_confirmation" class="block mt-1 w-full pr-10" type="password" ::type="showPassword ? 'text' : 'password'" name="password_confirmation" required autocomplete="new-password" />
|
||||
<div class="absolute inset-y-0 right-0 pr-3 flex items-center text-sm leading-5">
|
||||
<button type="button" @click="showPassword = !showPassword" class="text-theme-muted hover:text-theme-primary focus:outline-none focus:text-theme-primary">
|
||||
<template x-if="!showPassword">
|
||||
<x-icon name="eye" class="h-5 w-5" />
|
||||
</template>
|
||||
<template x-if="showPassword">
|
||||
<x-icon name="eye-slash" class="h-5 w-5" />
|
||||
</template>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex items-center justify-end mt-4">
|
||||
<x-jetstream.button>
|
||||
{{ __('Reset password') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
</form>
|
||||
</x-jetstream.authentication-card>
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,57 @@
|
||||
t<x-guest-layout>
|
||||
<x-jetstream.authentication-card>
|
||||
<x-slot name="logo">
|
||||
<x-jetstream.application-mark class="hidden md:block md:h-20 xl:h-28 w-auto md:mt-3" />
|
||||
</x-slot>
|
||||
|
||||
<div x-data="{ recovery: false }">
|
||||
<div class="mb-4 text-sm text-theme-secondary" x-show="! recovery">
|
||||
{{ __('Please confirm access to your account by entering the authentication code provided by your authenticator application.') }}
|
||||
</div>
|
||||
|
||||
<div class="mb-4 text-sm text-theme-secondary" x-show="recovery">
|
||||
{{ __('Please confirm access to your account by entering one of your emergency recovery codes.') }}
|
||||
</div>
|
||||
|
||||
<x-jetstream.validation-errors class="mb-4" />
|
||||
|
||||
<form method="POST" action="{{ route('two-factor.login') }}">
|
||||
@csrf
|
||||
|
||||
<div class="mt-4" x-show="! recovery">
|
||||
<x-jetstream.label for="code" value="{{ __('Code') }}" />
|
||||
<x-jetstream.input id="code" class="block mt-1 w-full" type="text" inputmode="numeric" name="code" autofocus x-ref="code" autocomplete="one-time-code" />
|
||||
</div>
|
||||
|
||||
<div class="mt-4" x-show="recovery">
|
||||
<x-jetstream.label for="recovery_code" value="{{ __('Recovery Code') }}" />
|
||||
<x-jetstream.input id="recovery_code" class="block mt-1 w-full" type="text" name="recovery_code" x-ref="recovery_code" autocomplete="one-time-code" />
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-end mt-4">
|
||||
<button type="button" class="text-sm text-theme-secondary hover:text-theme-primary underline cursor-pointer"
|
||||
x-show="! recovery"
|
||||
x-on:click="
|
||||
recovery = true;
|
||||
$nextTick(() => { $refs.recovery_code.focus() })
|
||||
">
|
||||
{{ __('Use a recovery code') }}
|
||||
</button>
|
||||
|
||||
<button type="button" class="text-sm text-theme-secondary hover:text-theme-primary underline cursor-pointer"
|
||||
x-show="recovery"
|
||||
x-on:click="
|
||||
recovery = false;
|
||||
$nextTick(() => { $refs.code.focus() })
|
||||
">
|
||||
{{ __('Use an authentication code') }}
|
||||
</button>
|
||||
|
||||
<x-jetstream.button class="ml-4">
|
||||
{{ __('Log in') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</x-jetstream.authentication-card>
|
||||
</x-guest-layout>
|
||||
@@ -0,0 +1,53 @@
|
||||
<x-app-layout>
|
||||
<div class="min-h-screen flex flex-col justify-center items-center py-6 relative overflow-hidden">
|
||||
<!-- Background Image -->
|
||||
<div class="absolute inset-0 z-0">
|
||||
@livewire('welcome.login-landing-post', ['type' => 'SiteContents\Welcome\Landing' ?? null, 'random' => true, 'limit' => 1])
|
||||
</div>
|
||||
|
||||
<!-- Verification Card -->
|
||||
<div class="mx-8 sm:max-w-md px-12 py-6 bg-theme-background dark:bg-theme-secondary backdrop-blur-sm shadow-2xl rounded-lg z-20 relative">
|
||||
<div class="flex justify-center mb-8">
|
||||
<x-jetstream.application-mark class="h-20 xl:h-28 w-auto" />
|
||||
</div>
|
||||
|
||||
<div class="mb-4 text-sm text-theme-secondary">
|
||||
{{ __('Before continuing, could you verify your email address by clicking on the link we just emailed to you? If you didn\'t receive the email, we will gladly send you another.') }}
|
||||
</div>
|
||||
|
||||
@if (session('status') == 'verification-link-sent')
|
||||
<div class="mb-4 font-medium text-sm text-green-600">
|
||||
{{ __('A new verification link has been sent to the email address you provided in your profile settings.') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="mt-4 mb-4 flex flex-col gap-4">
|
||||
<form method="POST" action="{{ route('verification.send') }}" class="flex justify-center">
|
||||
@csrf
|
||||
|
||||
<div>
|
||||
<x-jetstream.button type="submit">
|
||||
{{ __('Resend Verification Email') }}
|
||||
</x-jetstream.button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="flex flex-col gap-2">
|
||||
<a
|
||||
href="{{ LaravelLocalization::localizeURL(route('profile.settings')) }}"
|
||||
class="underline text-sm text-theme-secondary hover:text-theme-primary"
|
||||
>
|
||||
{{ __('Edit Profile') }}</a>
|
||||
|
||||
<form method="POST" action="{{ route('logout') }}" class="inline">
|
||||
@csrf
|
||||
|
||||
<button type="submit" class="underline text-sm text-theme-secondary hover:text-theme-primary">
|
||||
{{ __('Log out') }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
Reference in new issue
Block a user