Files
takeone-youtube-clone/resources/views/auth/register.blade.php
T
ghassanandClaude Opus 4.7 7dd92aaeb2 feat(a11y,admin): skip link, aria-labels, Ready label, title + age fixes
A11y:
- Skip-to-content link lands first in the body and jumps to #main
  past the header + sidebar for keyboard users.
- aria-label on the icon buttons that previously carried only an
  icon: hamburger menu (+ aria-controls="sidebar"), mobile search
  toggle, account menu (also drops the duplicate alt on the avatar
  since the button name already speaks the user's name).

Admin:
- Dashboard stat card renamed "Live Videos" → "Ready" (matches the
  DB status column; nothing on this card is actually live).

Settings:
- Duplicate "Prefer not to say" option on the Gender select — the
  empty placeholder shared the same label as the real option.
  Placeholder is now "Select…"; the real "Prefer not to say" option
  stays unchanged.
- Birthday picker caps the Year dropdown at (this year − 13) and
  the server-side register validation requires the same, so a
  client bypass can't let a <13 user through.

Titles:
- Admin layout uses "{Page} | TAKEONE" to match the frontend format
  (was "{Page} — TAKEONE"). User pages that said "| TAKEONE" literal
  now interpolate config('app.name'). Shorts and Welcome moved from
  " - " to " | " separator.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-10-21 10:53:23 +03:00

68 lines
2.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('layouts.auth')
@section('title', 'Create Account | ' . config('app.name'))
@section('content')
<div class="auth-card">
<h1 class="auth-title">Create account</h1>
<p class="auth-subtitle">Join {{ config('app.name') }} today</p>
@if($errors->any())
<div class="auth-error">
<i class="bi bi-exclamation-circle-fill"></i>
<span>{{ $errors->first() }}</span>
</div>
@endif
<form method="POST" action="{{ route('register.store') }}">
@csrf
<div class="form-group">
<label class="form-label">Name</label>
<input type="text" name="name" class="form-input" value="{{ old('name') }}" placeholder="Your name" required autofocus>
</div>
<div class="form-group">
<label class="form-label">Email</label>
<input type="email" name="email" class="form-input" value="{{ old('email') }}" placeholder="[email protected]" required>
</div>
<div class="form-group">
<label class="form-label">Password</label>
<input type="password" name="password" class="form-input" placeholder="At least 8 characters" required>
</div>
<div class="form-group">
<label class="form-label">Confirm Password</label>
<input type="password" name="password_confirmation" class="form-input" placeholder="••••••••" required>
</div>
<div class="form-group">
{{-- COPPA / platform minimum age: 13 at sign-up. maxYear caps
the year dropdown at (this year − 13). --}}
<x-date-picker name="birthday" label="Date of Birth" :value="old('birthday')"
:max-year="(int) date('Y') - 13" required />
</div>
<div class="form-group">
<x-gender-select name="gender" label="Gender" :value="old('gender')" required />
</div>
<div class="form-group">
<x-country-select name="nationality" label="Nationality" :value="old('nationality')" placeholder="Select nationality" required />
</div>
{{-- Honeypot: hidden from real users, bots fill it in --}}
<div style="position:absolute;left:-9999px;top:-9999px;height:0;overflow:hidden;" aria-hidden="true">
<input type="text" name="_hp" value="" autocomplete="off" tabindex="-1">
</div>
<button type="submit" class="btn-primary">Create Account</button>
</form>
</div>
@endsection
@section('footer_link')
Already have an account? <a href="{{ route('login') }}">Sign in</a>
@endsection