1- <x-guest-layout >
1+ @extends (' layouts.guest' )
2+ @section (' title' , ' Create Account' )
3+
4+ @section (' content' )
5+ <div class =" text-center mb-4" >
6+ <h4 class =" fw-bold text-dark" >{{ __ (' Join Us' ) } } </h4 >
7+ <p class =" text-muted small" >{{ __ (' Create your account to get started' ) } } </p >
8+ </div >
9+
210 <form method =" POST" action =" {{ route (' register' ) } }" >
311 @csrf
412
5- <!-- Name -->
6- <div >
7- <x-input-label for =" name" :value =" __('Name')" />
8- <x-text-input id =" name" class =" block mt-1 w-full" type =" text" name =" name" :value =" old('name')" required autofocus autocomplete =" name" />
9- <x-input-error :messages =" $errors->get('name')" class =" mt-2" />
13+ {{-- Name Field --}}
14+ <div class =" mb-3" >
15+ <label class =" form-label fw-semibold" >{{ __ (' Full Name' ) } } </label >
16+ <div class =" input-group" >
17+ <span class =" input-group-text bg-light border-end-0" ><i class =" bi bi-person text-primary" ></i ></span >
18+ <input type =" text" name =" name" class =" form-control border-start-0 @error (' name' ) is-invalid @enderror "
19+ value =" {{ old (' name' ) } }" placeholder =" John Doe" required autofocus >
20+ </div >
21+ @error (' name' ) <div class =" text-danger small mt-1" >{{ $message } } </div > @enderror
1022 </div >
1123
12- <!-- Email Address -->
13- <div class =" mt-4" >
14- <x-input-label for =" email" :value =" __('Email')" />
15- <x-text-input id =" email" class =" block mt-1 w-full" type =" email" name =" email" :value =" old('email')" required autocomplete =" username" />
16- <x-input-error :messages =" $errors->get('email')" class =" mt-2" />
24+ {{-- Email Field --}}
25+ <div class =" mb-3" >
26+ <label class =" form-label fw-semibold" >{{ __ (' Email Address' ) } } </label >
27+ <div class =" input-group" >
28+ <span class =" input-group-text bg-light border-end-0" ><i class =" bi bi-envelope text-primary" ></i ></span >
29+ <input type =" email" name =" email" class =" form-control border-start-0 @error (' email' ) is-invalid @enderror "
30+ value =" {{ old (' email' ) } }" placeholder =" name@example.com" required >
31+ </div >
32+ @error (' email' ) <div class =" text-danger small mt-1" >{{ $message } } </div > @enderror
1733 </div >
1834
19- <!-- Password -->
20- <div class =" mt-4" >
21- <x-input-label for =" password" :value =" __('Password')" />
22-
23- <x-text-input id =" password" class =" block mt-1 w-full"
24- type =" password"
25- name =" password"
26- required autocomplete =" new-password" />
27-
28- <x-input-error :messages =" $errors->get('password')" class =" mt-2" />
35+ {{-- Password Field --}}
36+ <div class =" mb-3" >
37+ <label class =" form-label fw-semibold" >{{ __ (' Password' ) } } </label >
38+ <div class =" input-group" >
39+ <span class =" input-group-text bg-light border-end-0" ><i class =" bi bi-shield-lock text-primary" ></i ></span >
40+ <input type =" password" id =" password" name =" password"
41+ class =" form-control border-x-0 @error (' password' ) is-invalid @enderror "
42+ placeholder =" ••••••••" required >
43+ <button class =" btn btn-outline-light border border-start-0 text-muted" type =" button" id =" togglePassword" >
44+ <i class =" bi bi-eye" id =" eyeIcon" ></i >
45+ </button >
46+ </div >
47+ @error (' password' ) <div class =" text-danger small mt-1" >{{ $message } } </div > @enderror
2948 </div >
3049
31- <!-- Confirm Password -->
32- <div class =" mt-4" >
33- <x-input-label for =" password_confirmation" :value =" __('Confirm Password')" />
34-
35- <x-text-input id =" password_confirmation" class =" block mt-1 w-full"
36- type =" password"
37- name =" password_confirmation" required autocomplete =" new-password" />
38-
39- <x-input-error :messages =" $errors->get('password_confirmation')" class =" mt-2" />
50+ {{-- Confirm Password Field --}}
51+ <div class =" mb-4" >
52+ <label class =" form-label fw-semibold" >{{ __ (' Confirm Password' ) } } </label >
53+ <div class =" input-group" >
54+ <span class =" input-group-text bg-light border-end-0" ><i class =" bi bi-shield-check text-primary" ></i ></span >
55+ <input type =" password" id =" password_confirmation" name =" password_confirmation"
56+ class =" form-control border-start-0" placeholder =" ••••••••" required >
57+ </div >
4058 </div >
4159
42- <div class =" flex items-center justify-end mt-4" >
43- <a 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" href =" {{ route (' login' ) } }" >
44- {{ __ (' Already registered?' ) } }
45- </a >
60+ <button type =" submit" class =" btn btn-primary w-100 py-2 shadow-sm mb-3" >
61+ {{ __ (' Create Account' ) } } <i class =" bi bi-person-plus ms-1" ></i >
62+ </button >
4663
47- < x-primary-button class =" ms-4 " >
48- {{ __ ( ' Register ' ) } }
49- </ x-primary-button >
64+ < div class =" text-center " >
65+ < span class = " small text-muted " >Already have an account?</ span >
66+ <a href = " {{ route ( ' login ' ) } } " class = " small text-decoration-none fw-bold ms-1 " >Log in</ a >
5067 </div >
5168 </form >
52- </x-guest-layout >
69+
70+ {{-- Script for Password Toggle --}}
71+ <script >
72+ const togglePassword = document .querySelector (' #togglePassword' );
73+ const password = document .querySelector (' #password' );
74+ const passwordConf = document .querySelector (' #password_confirmation' );
75+ const eyeIcon = document .querySelector (' #eyeIcon' );
76+
77+ togglePassword .addEventListener (' click' , function () {
78+ const type = password .getAttribute (' type' ) === ' password' ? ' text' : ' password' ;
79+ password .setAttribute (' type' , type);
80+ passwordConf .setAttribute (' type' , type); // Toggle both for convenience
81+ eyeIcon .classList .toggle (' bi-eye' );
82+ eyeIcon .classList .toggle (' bi-eye-slash' );
83+ });
84+ </script >
85+ @endsection
0 commit comments