feat: player-first registration with age gate toggle #32

Merged
forgejo_admin merged 1 commit from 29-registration-player-first-age-gate into main 2026-03-16 23:12:51 +00:00

Summary

Restructures the registration form to put the player as the primary entity. Player info comes first, followed by an age gate radio toggle that conditionally reveals either a parent/guardian section (under 18, default) or a player email field (18+). Waiver signature is now checkbox + typed full name instead of just a checkbox.

Changes

  • register.html -- Restructured form flow:
    • Step 1 (Player Info): unchanged, player name and details first
    • Step 2 (Age & Contact): new "Are you 18 or older?" radio toggle replacing fixed parent section. "No" (default) shows parent/guardian fields (first name, last name, email, phone). "Yes" shows player email field only.
    • Step 3 (Waiver & Release): label dynamically changes between "Parent/Guardian Signature" and "Player Signature" based on age gate. Signature = checkbox agreement + typed full name input (digital signature). Submit requires both checked and name filled.
    • Step 4 (Payment): unchanged
    • Progress bar updated: Player Info > Age & Contact > Waiver > Pay
    • Confirmation email dynamically shows parent or player email based on age gate selection
    • Waiver text neutralized (removed "my child's" phrasing for age-agnostic language)
    • Added CSS for radio group and conditional section show/hide
    • Minimal JS: age gate toggle, submit state validation, dynamic confirmation email

Review Checklist

  • Player name and details are FIRST on the form
  • "Are you 18 or older?" radio buttons appear after player details
  • "No" (default) shows Parent/Guardian section with first name, last name, email, phone
  • "Yes" shows Player email field instead (no parent section)
  • Waiver label says "Parent/Guardian Signature" when under 18, "Player Signature" when 18+
  • Waiver signature = checkbox + full name text input
  • Submit button disabled until both checkbox checked and name typed
  • Confirmation shows the signer's email as login email
  • Progress indicator: Player Info > Age & Contact > Waiver > Pay
  • Dark theme and existing visual style preserved

Test Plan

  • Open register.html in browser
  • Verify player info section appears first
  • Default state: "No" selected, parent/guardian fields visible, player email hidden
  • Toggle to "Yes": parent fields hide, player email appears, waiver label changes to "Player Signature"
  • Toggle back to "No": parent fields reappear, waiver resets, label changes back to "Parent/Guardian Signature"
  • Waiver: submit button stays disabled until both checkbox is checked AND full name is typed
  • Click "Register & Pay $30": confirmation shows the correct email (parent or player depending on toggle)
  • Visual style matches existing dark theme throughout
  • Plan: plan-wkq (traceability)
  • Closes #29
## Summary Restructures the registration form to put the player as the primary entity. Player info comes first, followed by an age gate radio toggle that conditionally reveals either a parent/guardian section (under 18, default) or a player email field (18+). Waiver signature is now checkbox + typed full name instead of just a checkbox. ## Changes - `register.html` -- Restructured form flow: - Step 1 (Player Info): unchanged, player name and details first - Step 2 (Age & Contact): new "Are you 18 or older?" radio toggle replacing fixed parent section. "No" (default) shows parent/guardian fields (first name, last name, email, phone). "Yes" shows player email field only. - Step 3 (Waiver & Release): label dynamically changes between "Parent/Guardian Signature" and "Player Signature" based on age gate. Signature = checkbox agreement + typed full name input (digital signature). Submit requires both checked and name filled. - Step 4 (Payment): unchanged - Progress bar updated: Player Info > Age & Contact > Waiver > Pay - Confirmation email dynamically shows parent or player email based on age gate selection - Waiver text neutralized (removed "my child's" phrasing for age-agnostic language) - Added CSS for radio group and conditional section show/hide - Minimal JS: age gate toggle, submit state validation, dynamic confirmation email ## Review Checklist - [ ] Player name and details are FIRST on the form - [ ] "Are you 18 or older?" radio buttons appear after player details - [ ] "No" (default) shows Parent/Guardian section with first name, last name, email, phone - [ ] "Yes" shows Player email field instead (no parent section) - [ ] Waiver label says "Parent/Guardian Signature" when under 18, "Player Signature" when 18+ - [ ] Waiver signature = checkbox + full name text input - [ ] Submit button disabled until both checkbox checked and name typed - [ ] Confirmation shows the signer's email as login email - [ ] Progress indicator: Player Info > Age & Contact > Waiver > Pay - [ ] Dark theme and existing visual style preserved ## Test Plan - Open `register.html` in browser - Verify player info section appears first - Default state: "No" selected, parent/guardian fields visible, player email hidden - Toggle to "Yes": parent fields hide, player email appears, waiver label changes to "Player Signature" - Toggle back to "No": parent fields reappear, waiver resets, label changes back to "Parent/Guardian Signature" - Waiver: submit button stays disabled until both checkbox is checked AND full name is typed - Click "Register & Pay $30": confirmation shows the correct email (parent or player depending on toggle) - Visual style matches existing dark theme throughout ## Related - Plan: `plan-wkq` (traceability) - Closes #29
Reorganizes register.html so player info comes first, followed by
an "Are you 18+" radio toggle that conditionally shows either a
parent/guardian section (under 18) or player email field (18+).
Waiver signature is now checkbox + typed full name. Progress steps
updated to: Player Info > Age & Contact > Waiver > Pay.

Closes #29

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

Self-Review

Scope: Single file (register.html), 153 additions / 29 deletions. No unrelated changes.

Acceptance Criteria Check

  • Player name and details are FIRST on the form (Step 1, lines 439-509)
  • "Are you 18 or older?" radio buttons appear after player details (Step 2, lines 514-526)
  • "No" (default, checked) shows Parent/Guardian section: first name, last name, email, phone (lines 529-551)
  • "Yes" shows Player email field instead, no parent section (lines 553-560)
  • Waiver label says "Parent/Guardian Signature" when under 18, "Player Signature" when 18+ (JS handleAgeGate())
  • Waiver signature = checkbox + full name text input (lines 578-589)
  • Submit disabled until both checkbox checked AND name typed (updateSubmitState())
  • Confirmation shows signer's email dynamically based on age gate (showConfirmation())
  • Progress indicator updated: Player Info > Age & Contact > Waiver > Pay
  • Dark theme and existing visual style preserved -- all CSS uses existing design tokens

Implementation Notes

  • Waiver text neutralized from "my child's participation" to "participation" so it reads correctly for both parent and adult-player contexts
  • Age gate resets waiver checkbox and signature on toggle to prevent stale state
  • New CSS is minimal: .radio-group, .radio-option, .age-section for show/hide, .signature-group for spacing
  • No changes to other files

No Issues Found

Clean pass. Ready for visual verification.

## Self-Review **Scope**: Single file (`register.html`), 153 additions / 29 deletions. No unrelated changes. ### Acceptance Criteria Check - [x] Player name and details are FIRST on the form (Step 1, lines 439-509) - [x] "Are you 18 or older?" radio buttons appear after player details (Step 2, lines 514-526) - [x] "No" (default, checked) shows Parent/Guardian section: first name, last name, email, phone (lines 529-551) - [x] "Yes" shows Player email field instead, no parent section (lines 553-560) - [x] Waiver label says "Parent/Guardian Signature" when under 18, "Player Signature" when 18+ (JS `handleAgeGate()`) - [x] Waiver signature = checkbox + full name text input (lines 578-589) - [x] Submit disabled until both checkbox checked AND name typed (`updateSubmitState()`) - [x] Confirmation shows signer's email dynamically based on age gate (`showConfirmation()`) - [x] Progress indicator updated: Player Info > Age & Contact > Waiver > Pay - [x] Dark theme and existing visual style preserved -- all CSS uses existing design tokens ### Implementation Notes - Waiver text neutralized from "my child's participation" to "participation" so it reads correctly for both parent and adult-player contexts - Age gate resets waiver checkbox and signature on toggle to prevent stale state - New CSS is minimal: `.radio-group`, `.radio-option`, `.age-section` for show/hide, `.signature-group` for spacing - No changes to other files ### No Issues Found Clean pass. Ready for visual verification.
forgejo_admin deleted branch 29-registration-player-first-age-gate 2026-03-16 23:12:51 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo_admin/westside-playground!32
No description provided.