Story 4.1.5: Wireframe: Inline Registration Accordion (Hybrid Approach)

Story: Story 4.1.5 (Registration Wizard) + Story 4.1.6 (Confirmation)

Last updated: January 2, 2026 Reading time: 15 minutes File size: 37.51 KB

Overview

This wireframe demonstrates a hybrid registration approach:

  1. Primary UX: Inline expandable registration within hero section (accordion-style 2-step wizard)
  2. Secondary UX: Dedicated /register/:eventCode route using same components (for shareable links)

Design Principles

  • Seamless Integration: Registration blends into hero section without modal/popup
  • Accordion Pattern: Step 1 collapses when Step 2 expands (compact, focused experience)
  • Dark Theme Consistency: Maintains zinc-950 background, blue-400 accents from existing design
  • Progressive Disclosure: Only show what’s needed at each step
  • Component Reuse: Same wizard components work inline and in dedicated page

State 1: Hero Section - Default State (Collapsed)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    [Unicorn.studio Interactive Background]                 β”‚
β”‚                                                                            β”‚
β”‚                                                                            β”‚
β”‚                                                                            β”‚
β”‚               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚               β”‚  πŸ”΅ Next Event β€’ 12 days until event    β”‚                 β”‚
β”‚               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚                                                                            β”‚
β”‚                                                                            β”‚
β”‚                       Zero Trust Journey                                  β”‚
β”‚                  Cloud-Native Security at Scale                           β”‚
β”‚                                                                            β”‚
β”‚                    πŸ“… March 15, 2025                                      β”‚
β”‚                    πŸ“ Kursaal Bern                                        β”‚
β”‚                                                                            β”‚
β”‚                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                              β”‚
β”‚                  β”‚  Register Now           β”‚  ← Click to expand           β”‚
β”‚                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                              β”‚
β”‚                  (blue-400 button, rounded-lg)                            β”‚
β”‚                                                                            β”‚
β”‚                                                                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              ↓ scroll down ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                            β”‚
β”‚  Event Logistics (EventLogistics component)                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”‚
β”‚  β”‚ πŸ“… Date    β”‚ πŸ• Time    β”‚ πŸ“ Locationβ”‚ πŸ‘₯ Capacityβ”‚                    β”‚
β”‚  β”‚ Mar 15     β”‚ 18:00-21:00β”‚ Kursaal    β”‚ 87 / 120   β”‚                    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚
β”‚                                                                            β”‚
β”‚  Event Program (Timeline, sessions, speakers...)                          β”‚
β”‚                                                                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Visual Characteristics:

  • Full-screen hero (h-screen)
  • Unicorn.studio background (z-0 layer)
  • Content centered and bottom-aligned (items-end pb-16)
  • β€œRegister Now” button has hover state (scale-105)
  • Countdown timer badge floats above title

State 2: Hero Section - Expanded with Step 1 (Registration Form Visible)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            [Unicorn.studio Background - Semi-transparent overlay]          β”‚
β”‚                                                                            β”‚
β”‚               Zero Trust Journey                                          β”‚
β”‚               Cloud-Native Security at Scale                              β”‚
β”‚               πŸ“… March 15, 2025  β€’  πŸ“ Kursaal Bern                       β”‚
β”‚                                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ ━━━━━━━━━━━━━━━━━━━━━●━━━━━━━━━━━━━━━━━━━━━━━━━━━○                  β”‚ β”‚
β”‚  β”‚        1. Your Details (Current)         2. Confirm Registration      β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ STEP 1: YOUR DETAILS ───────────────────────┐   β”‚
β”‚  β”‚ (Accordion - EXPANDED, height: auto, opacity: 1)                    β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  Personal Information                                                β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  First Name *                    Last Name *                         β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”‚   β”‚
β”‚  β”‚  β”‚                     β”‚        β”‚                     β”‚             β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β”‚   β”‚
β”‚  β”‚  (shadcn Input component, zinc-900 bg, zinc-100 text)               β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  Email Address *                                                     β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚   β”‚
β”‚  β”‚  β”‚                                                      β”‚           β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚   β”‚
β”‚  β”‚  ℹ️ We'll send your ticket and event updates here                   β”‚   β”‚
β”‚  β”‚  (zinc-500 helper text, text-sm)                                    β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  Company *                       Role *                              β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”‚   β”‚
β”‚  β”‚  β”‚                     β”‚        β”‚                     β”‚             β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  ❗ First Name is required                                           β”‚   β”‚
β”‚  β”‚  (Validation error: red-400 text, only shows on blur if invalid)    β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  [Cancel]                                         [Next: Review β†’]  β”‚   β”‚
β”‚  β”‚  (zinc-800 outline)                              (blue-400 solid)   β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ STEP 2: CONFIRM REGISTRATION ───────────────────┐   β”‚
β”‚  β”‚ (Accordion - COLLAPSED, height: 0, opacity: 0, display: none)       β”‚   β”‚
β”‚  β”‚ ... content hidden ...                                               β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              ↓ smooth height transition (500ms)

Interaction Flow:

  1. User clicks β€œRegister Now” button
  2. Button fades out (200ms)
  3. Hero section expands smoothly (500ms ease-in-out)
  4. Step 1 form fades in (300ms with 200ms delay)
  5. Unicorn.studio background dims slightly (opacity: 0.7)
  6. Page scrolls to keep form in view (auto-scroll)

Form Behavior:

  • Validation: Real-time validation with react-hook-form + zod
  • Error Display: Inline errors below fields (red-400 text)
  • Required Fields: Asterisk (*) in label
  • Helper Text: Light gray (zinc-500) below inputs

State 3: Step 1 β†’ Step 2 Accordion Transition

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            [Unicorn.studio Background - Semi-transparent overlay]          β”‚
β”‚                                                                            β”‚
β”‚               Zero Trust Journey                                          β”‚
β”‚               Cloud-Native Security at Scale                              β”‚
β”‚               πŸ“… March 15, 2025  β€’  πŸ“ Kursaal Bern                       β”‚
β”‚                                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━●━━━━━━━━━━━━━━━━━━━━━━━━━━━ β”‚ β”‚
β”‚  β”‚        1. Your Details                   2. Confirm Registration (Current) β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ STEP 1: YOUR DETAILS ───────────────────────┐   β”‚
β”‚  β”‚ (Accordion - COLLAPSED, Collapsible component)                       β”‚   β”‚
β”‚  β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚   β”‚
β”‚  β”‚ β”‚  βœ“ Personal Information Complete                               β”‚  β”‚   β”‚
β”‚  β”‚ β”‚  John Smith β€’ john.smith@techcorp.ch                           β”‚  β”‚   β”‚
β”‚  β”‚ β”‚  TechCorp AG β€’ Senior Developer                 [Edit]         β”‚  β”‚   β”‚
β”‚  β”‚ β”‚  (zinc-800 bg, zinc-300 text, compact summary)                 β”‚  β”‚   β”‚
β”‚  β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ STEP 2: CONFIRM REGISTRATION ───────────────────┐   β”‚
β”‚  β”‚ (Accordion - EXPANDED, height: auto, opacity: 1)                    β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  Review Your Registration                                            β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚   β”‚
β”‚  β”‚  β”‚ Event:     Zero Trust Journey                                  β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ Date:      March 15, 2025                                      β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ Time:      18:00 - 21:00                                       β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ Location:  Kursaal Bern                                        β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ Price:     FREE (including coffee & networking)                β”‚ β”‚   β”‚
β”‚  β”‚  β”‚                                                                β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ Attendee:  John Smith (john.smith@techcorp.ch)                β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ Company:   TechCorp AG β€’ Senior Developer                     β”‚ β”‚   β”‚
β”‚  β”‚  β”‚ (zinc-900/50 bg, border-zinc-800, rounded-lg, p-4)            β”‚ β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  Communication Preferences                                           β”‚   β”‚
β”‚  β”‚  β˜‘ Send me event reminders (1 week and 1 day before)                β”‚   β”‚
β”‚  β”‚  ☐ Subscribe to BATbern newsletter (monthly)                         β”‚   β”‚
β”‚  β”‚  (shadcn Checkbox, default: reminders=true, newsletter=false)        β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  Special Requests (Optional)                                         β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚   β”‚
β”‚  β”‚  β”‚ Dietary requirements, accessibility needs, etc.                β”‚ β”‚   β”‚
β”‚  β”‚  β”‚                                                                β”‚ β”‚   β”‚
β”‚  β”‚  β”‚                                                                β”‚ β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚
β”‚  β”‚  (shadcn Textarea, 4 rows, zinc-900 bg)                             β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  Terms & Conditions                                                  β”‚   β”‚
β”‚  β”‚  β˜‘ I agree to the event terms and photo/video policy *               β”‚   β”‚
β”‚  β”‚  (Required checkbox, links to terms page)                            β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  πŸ’‘ Want to manage all your registrations?                           β”‚   β”‚
β”‚  β”‚     [Create a free account β†’]                                        β”‚   β”‚
β”‚  β”‚  (zinc-800 bg, blue-400 link, rounded-lg, p-3, mt-4)               β”‚   β”‚
β”‚  β”‚                                                                      β”‚   β”‚
β”‚  β”‚  [Cancel]  [← Back]                    [Complete Registration]      β”‚   β”‚
β”‚  β”‚  (outline)  (outline)                  (blue-400 solid, disabled    β”‚   β”‚
β”‚  β”‚                                          until terms checked)        β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Accordion Animation:

  • Step 1 Collapse: 300ms ease-out (height: auto β†’ collapsed summary)
  • Step 2 Expand: 300ms ease-in (height: 0 β†’ auto), 100ms delay
  • Smooth Transition: Uses shadcn Collapsible component with CSS transitions
  • Scroll Behavior: Auto-scroll to keep Step 2 header visible

Submit Button States:

  • Disabled (default): Gray, cursor-not-allowed, opacity-50
    • Condition: Terms checkbox unchecked
  • Enabled: Blue-400, cursor-pointer, opacity-100
    • Condition: Terms checkbox checked
  • Loading: β€œCompleting Registration…” with spinner
    • Condition: API call in progress

State 4: Registration Success β†’ Redirect

[Immediately after successful submission]

Redirect to: /registration-confirmation/BAT-2025-000123

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  [Confetti animation - canvas-confetti package]                            β”‚
β”‚                                                                            β”‚
β”‚                    πŸŽ‰ Registration Confirmed!                              β”‚
β”‚                                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚                                                                      β”‚ β”‚
β”‚  β”‚                    [QR Code - 200x200px]                             β”‚ β”‚
β”‚  β”‚                                                                      β”‚ β”‚
β”‚  β”‚         Confirmation Code: BAT-2025-000123                           β”‚ β”‚
β”‚  β”‚         (large, blue-400 text, centered)                             β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                            β”‚
β”‚  ℹ️ Confirmation email sent to john.smith@techcorp.ch                      β”‚
β”‚                                                                            β”‚
β”‚  What's Next?                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”‚
β”‚  β”‚ πŸ“… Add to      β”‚  β”‚ πŸ’Ύ Download    β”‚  β”‚ πŸ”— Share       β”‚              β”‚
β”‚  β”‚   Calendar     β”‚  β”‚   QR Code      β”‚  β”‚   Event        β”‚              β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
β”‚                                                                            β”‚
β”‚  πŸ’‘ Want to manage your registration and get personalized updates?         β”‚
β”‚     [Create Your Free Account β†’]                                           β”‚
β”‚  (prominent CTA for anonymous users to convert to full account)           β”‚
β”‚                                                                            β”‚
β”‚  [Register Another Person] (link back to /register/:eventCode)            β”‚
β”‚                                                                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Confirmation Page Features:

  • Confetti animation on page load (3 seconds)
  • QR code for event check-in (generated server-side)
  • Calendar export (.ics file download)
  • Social sharing (LinkedIn, Twitter/X, Email)
  • β€œCreate account” CTA for anonymous users
  • Shareable confirmation code

Alternative Flow: Dedicated Registration Page

Route: /register/:eventCode

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  ← Back to Event                                                           β”‚
β”‚                                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Event Registration                                                   β”‚ β”‚
β”‚  β”‚  Zero Trust Journey β€’ March 15, 2025 β€’ Kursaal Bern                  β”‚ β”‚
β”‚  β”‚  (Mini event context, compact header, zinc-900 bg)                   β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ ━━━━━━━━━━━━━━━━━━━━━●━━━━━━━━━━━━━━━━━━━━━━━━━━━○                  β”‚ β”‚
β”‚  β”‚        1. Your Details (Current)         2. Confirm Registration      β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                            β”‚
β”‚  [Same RegistrationAccordion component as inline version]                 β”‚
β”‚  [Step 1 and Step 2 components identical to inline flow]                  β”‚
β”‚                                                                            β”‚
β”‚  Key Differences:                                                          β”‚
β”‚  - No Unicorn.studio background (simple dark background)                  β”‚
β”‚  - Full-page layout (not hero section)                                    β”‚
β”‚  - "Back to Event" breadcrumb at top                                      β”‚
β”‚  - Max-width container (max-w-3xl, centered)                              β”‚
β”‚  - Uses PublicLayout wrapper                                              β”‚
β”‚                                                                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Use Cases for Dedicated Page:

  1. Shareable Links: Event organizers share /register/BATbern025 directly
  2. Email CTAs: Confirmation emails link to dedicated page
  3. Social Sharing: LinkedIn/Twitter posts link to dedicated page
  4. Bookmarks: Users can bookmark registration page
  5. Deep Linking: Mobile apps can deep-link to registration

Benefits of Hybrid Approach:

  • βœ… Inline registration reduces friction for homepage visitors
  • βœ… Dedicated page supports marketing/sharing use cases
  • βœ… Same components = no code duplication
  • βœ… Consistent UX across both flows

Mobile Responsive Design

Mobile View (< 640px)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ [Unicorn.studio BG]       β”‚
β”‚                           β”‚
β”‚   Zero Trust Journey      β”‚
β”‚   Cloud-Native Security   β”‚
β”‚                           β”‚
β”‚   πŸ“… March 15, 2025       β”‚
β”‚   πŸ“ Kursaal Bern         β”‚
β”‚                           β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚   β”‚ Register Now     β”‚   β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        ↓ expands ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Zero Trust Journey      β”‚
β”‚   πŸ“… Mar 15 β€’ πŸ“ Bern     β”‚
β”‚                           β”‚
β”‚ ━━━━●━━━━━━━━━━━━━━━○    β”‚
β”‚   1. Details   2. Confirm β”‚
β”‚                           β”‚
β”‚ β”Œβ”€ STEP 1: DETAILS ────┐ β”‚
β”‚ β”‚                      β”‚ β”‚
β”‚ β”‚ First Name *         β”‚ β”‚
β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚
β”‚ β”‚ β”‚                  β”‚ β”‚ β”‚
β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚
β”‚ β”‚                      β”‚ β”‚
β”‚ β”‚ Last Name *          β”‚ β”‚
β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚
β”‚ β”‚ β”‚                  β”‚ β”‚ β”‚
β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚
β”‚ β”‚                      β”‚ β”‚
β”‚ β”‚ (Stacked layout)     β”‚ β”‚
β”‚ β”‚                      β”‚ β”‚
β”‚ β”‚ [Cancel] [Next β†’]    β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Mobile Optimizations:

  • Single Column: All fields stack vertically
  • Full Width: Inputs use full container width
  • Larger Touch Targets: Buttons min-height 44px (iOS guideline)
  • Simplified Header: Event title + date only (no description)
  • Sticky Progress Bar: Progress indicator sticks to top on scroll
  • Auto-Scroll: Form auto-scrolls to keep input in view (avoid keyboard overlap)

Component Architecture

Component Tree

HomePage
└── HeroSection [Enhanced with registration state]
    β”œβ”€β”€ Hero Content (default state)
    β”‚   β”œβ”€β”€ Countdown Badge
    β”‚   β”œβ”€β”€ Event Title
    β”‚   β”œβ”€β”€ Event Date & Location
    β”‚   └── "Register Now" Button
    └── RegistrationSection (expandable)
        β”œβ”€β”€ Registration Header
        β”‚   β”œβ”€β”€ Event Mini Summary
        β”‚   └── Progress Indicator
        └── RegistrationWizard
            └── RegistrationAccordion
                β”œβ”€β”€ PersonalDetailsStep (Collapsible)
                β”‚   β”œβ”€β”€ Form Fields (shadcn Input)
                β”‚   β”œβ”€β”€ Validation (react-hook-form + zod)
                β”‚   └── Navigation Buttons
                └── ConfirmRegistrationStep (Collapsible)
                    β”œβ”€β”€ Summary Card
                    β”œβ”€β”€ Communication Preferences (shadcn Checkbox)
                    β”œβ”€β”€ Special Requests (shadcn Textarea)
                    β”œβ”€β”€ Terms Checkbox (shadcn Checkbox)
                    β”œβ”€β”€ Account Creation CTA
                    └── Navigation Buttons

RegistrationPage (Dedicated Route)
└── PublicLayout
    β”œβ”€β”€ Breadcrumb ("Back to Event")
    └── RegistrationWizard [Same component as inline]
        └── RegistrationAccordion [Reused]

State Management

typescript
// HeroSection.tsx state
const [isRegistrationExpanded, setIsRegistrationExpanded] = useState(false);

// RegistrationWizard.tsx state
const [currentStep, setCurrentStep] = useState(1); // 1 or 2
const [formData, setFormData] = useState({
  firstName: '',
  lastName: '',
  email: '',
  company: '',
  role: '',
  termsAccepted: false,
  communicationPreferences: {
    newsletterSubscribed: false,
    eventReminders: true,
  },
  specialRequests: '',
});
const [isSubmitting, setIsSubmitting] = useState(false);

API Requirements

Registration Flow APIs

  1. Check Duplicate Email (optional, before submission)

    • GET /api/v1/events/{eventCode}/registrations?filter[email]={email}
    • Returns: 200 with empty array (OK) or 200 with registration (duplicate)
    • UI: Show warning if duplicate found
  2. Submit Registration

    • POST /api/v1/events/{eventCode}/registrations
    • Payload:
      json
      {
        "email": "john.smith@techcorp.ch",
        "firstName": "John",
        "lastName": "Smith",
        "company": "TechCorp AG",
        "role": "Senior Developer",
        "termsAccepted": true,
        "communicationPreferences": {
          "newsletterSubscribed": false,
          "eventReminders": true
        },
        "specialRequests": "Vegetarian meal"
      }
      
    • Response (201 Created):
      json
      {
        "id": "reg_123",
        "confirmationCode": "BAT-2025-000123",
        "eventCode": "BATbern025",
        "status": "confirmed",
        "registrationDate": "2025-03-01T10:30:00Z",
        "firstName": "John",
        "lastName": "Smith",
        "email": "john.smith@techcorp.ch",
        "company": "TechCorp AG"
      }
      
  3. Get Registration for Confirmation Page

    • GET /api/v1/events/{eventCode}/registrations/{confirmationCode}
    • Public access (no auth required)
    • Returns: Full registration details
  4. Get QR Code

    • GET /api/v1/events/{eventCode}/registrations/{confirmationCode}/qr
    • Public access
    • Returns: PNG image (200x200px)

Design System Integration

Colors (from Story 4.1.1)

css
/* Background */
--background: 240 10% 3.9%; /* zinc-950 */

/* Text */
--foreground: 240 5% 96%; /* zinc-100 */

/* Accent */
--primary: 200 98% 39%; /* blue-400 */

/* Card Background */
--card: 240 4% 16%; /* zinc-900/50 */

/* Border */
--border: 240 4% 26%; /* zinc-800 */

/* Muted */
--muted-foreground: 240 4% 46%; /* zinc-500 */

/* Destructive (Errors) */
--destructive: 0 84% 60%; /* red-400 */

Typography

  • Headings: font-light (font-weight: 300)
  • Body: font-normal (font-weight: 400)
  • Labels: font-medium (font-weight: 500)
  • Font Family: Sans-serif (system default)

Spacing

  • Container Padding: px-4 (mobile), px-6 (tablet), px-8 (desktop)
  • Section Spacing: py-12 (mobile), py-16 (desktop)
  • Form Field Spacing: space-y-4 (between fields)
  • Button Spacing: gap-4 (between buttons)

Shadows

  • Card Shadow: shadow-lg (large shadow for cards)
  • Button Hover: shadow-md (medium shadow on hover)

Accessibility Considerations

WCAG 2.1 AA Compliance

  1. Keyboard Navigation

    • All form fields accessible via Tab key
    • β€œEnter” key submits current step
    • β€œEscape” key cancels registration (with confirmation)
    • Focus indicators visible (blue-400 ring)
  2. Screen Reader Support

    • Form labels properly associated with inputs
    • Error messages announced via aria-live regions
    • Progress indicator has aria-current
    • Required fields marked with aria-required=β€œtrue”
  3. Color Contrast

    • Text: zinc-100 on zinc-950 (21:1 ratio) βœ…
    • Accent: blue-400 on zinc-950 (8.2:1 ratio) βœ…
    • Errors: red-400 on zinc-950 (5.1:1 ratio) βœ…
  4. Form Validation

    • Inline errors with descriptive messages
    • Error summary at top of form (if multiple errors)
    • Focus moves to first error on submission

Performance Considerations

  1. Lazy Loading

    • RegistrationWizard component lazy-loaded on button click
    • Reduces initial bundle size
  2. Animations

    • CSS transitions (GPU-accelerated)
    • No layout thrashing (will-change: height)
    • Smooth 60fps animations
  3. API Optimization

    • Debounce email duplicate check (300ms)
    • Single API call on final submission
    • Optimistic UI updates
  4. Form State

    • Local state management (no global state overhead)
    • Form data persisted in localStorage (recovery on refresh)

Testing Scenarios

Manual Testing Checklist

Inline Registration Flow:

Dedicated Page Flow:

  • Navigate to /register/BATbern025

Validation:

Responsive:

Error Handling:


Change Log

Date Version Description Author
2025-11-08 1.0 Initial wireframe creation for inline registration accordion Sally (UX Expert)

Notes

  • Component Reuse: RegistrationWizard and child components work in both inline and dedicated page contexts
  • Design Consistency: All components follow shadcn dark theme established in Story 4.1.1
  • Anonymous Registration: Per ADR-005, no authentication required for registration
  • Account Linking: β€œCreate account” CTA shown after registration for anonymous users to convert

Dependencies:

  • Story 4.1.1 (shadcn dark theme) βœ…
  • Story 4.1.3 (Hero section) βœ…
  • shadcn components: input, textarea, checkbox, collapsible βœ…
  • Backend: POST /api/v1/events/{eventCode}/registrations βœ…

Next Steps:

  • Implement RegistrationWizard container component
  • Implement PersonalDetailsStep with validation
  • Implement ConfirmRegistrationStep with preferences
  • Enhance HeroSection with expansion logic
  • Create RegistrationPage for dedicated route