From 4b671a211b49283e80732e11a9484b57167243e3 Mon Sep 17 00:00:00 2001 From: kbe Date: Mon, 8 Sep 2025 17:59:12 +0200 Subject: [PATCH] Update all views to use new design system components and styling Co-authored-by: Qwen-Coder --- .../aperonight_premium_light_login_1.html | 738 ------------------ .../aperonight_premium_light_theme.css | 125 --- .../aperonight_premium_login_1.html | 710 ----------------- .../aperonight_premium_theme.css | 125 --- .../design_iterations/dashboard_2.html | 385 --------- .../design_iterations/dashboard_3.html | 556 ------------- .../design_iterations/default_ui_darkmode.css | 521 ------------- .../design_iterations/festival_theme.css | 53 -- .../festival_ticket_page.html | 538 ------------- .../design_iterations/quantic_login_1.html | 480 ------------ .../quantic_telecom_theme.css | 71 -- app/views/components/_footer.html.erb | 110 ++- app/views/components/_header.html.erb | 150 ++-- app/views/components/_ticket_card.html.erb | 14 +- app/views/devise/confirmations/new.html.erb | 66 +- app/views/devise/passwords/edit.html.erb | 86 +- app/views/devise/passwords/new.html.erb | 76 +- app/views/devise/registrations/edit.html.erb | 158 ++-- app/views/devise/registrations/new.html.erb | 115 ++- app/views/devise/sessions/new.html.erb | 110 +-- .../devise/shared/_error_messages.html.erb | 23 +- app/views/devise/shared/_links.html.erb | 89 ++- app/views/devise/unlocks/new.html.erb | 61 +- app/views/events/index.html.erb | 182 ++--- app/views/events/payment_success.html.erb | 4 +- app/views/layouts/application.html.erb | 40 +- app/views/onboarding/index.html.erb | 28 +- app/views/orders/checkout.html.erb | 107 +-- app/views/orders/new.html.erb | 2 +- app/views/pages/dashboard.html.erb | 159 ++-- app/views/pages/home.html.erb | 265 +++---- app/views/promoter/events/index.html.erb | 8 +- app/views/promoter/events/show.html.erb | 22 +- .../promoter/ticket_types/index.html.erb | 10 +- app/views/tickets/checkout.html.erb | 2 +- app/views/tickets/new.html.erb | 2 +- app/views/tickets/payment_success.html.erb | 4 +- rule-tests/.gitkeep | 0 rules/.gitkeep | 0 39 files changed, 1068 insertions(+), 5127 deletions(-) delete mode 100644 .superdesign/design_iterations/aperonight_premium_light_login_1.html delete mode 100644 .superdesign/design_iterations/aperonight_premium_light_theme.css delete mode 100644 .superdesign/design_iterations/aperonight_premium_login_1.html delete mode 100644 .superdesign/design_iterations/aperonight_premium_theme.css delete mode 100644 .superdesign/design_iterations/dashboard_2.html delete mode 100644 .superdesign/design_iterations/dashboard_3.html delete mode 100755 .superdesign/design_iterations/default_ui_darkmode.css delete mode 100644 .superdesign/design_iterations/festival_theme.css delete mode 100644 .superdesign/design_iterations/festival_ticket_page.html delete mode 100644 .superdesign/design_iterations/quantic_login_1.html delete mode 100644 .superdesign/design_iterations/quantic_telecom_theme.css create mode 100644 rule-tests/.gitkeep create mode 100644 rules/.gitkeep diff --git a/.superdesign/design_iterations/aperonight_premium_light_login_1.html b/.superdesign/design_iterations/aperonight_premium_light_login_1.html deleted file mode 100644 index a59a8b7..0000000 --- a/.superdesign/design_iterations/aperonight_premium_light_login_1.html +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - Connexion - AperoNight | Plateforme Événementielle Premium - - - - - - - - - - -
-
- -
-
-
-
- -
-
-

AperoNight

-

Plateforme Événementielle Premium

-

Connexion sécurisée • Interface professionnelle

- -
-
- - Connexion Sécurisée -
-
-
- - - - - - -
-
- - - - \ No newline at end of file diff --git a/.superdesign/design_iterations/aperonight_premium_light_theme.css b/.superdesign/design_iterations/aperonight_premium_light_theme.css deleted file mode 100644 index d7f1a4a..0000000 --- a/.superdesign/design_iterations/aperonight_premium_light_theme.css +++ /dev/null @@ -1,125 +0,0 @@ -:root { - /* AperoNight Premium Light Theme - Professional Event Platform */ - - /* Base Colors - Clean Light Background with Professional Accents */ - --background: oklch(0.9800 0.0050 240); - --foreground: oklch(0.1500 0.0200 240); - --surface: oklch(0.9600 0.0080 240); - --surface-elevated: oklch(0.9400 0.0120 240); - - /* Card & Dialog surfaces */ - --card: oklch(1.0000 0 0); - --card-foreground: oklch(0.1500 0.0200 240); - --popover: oklch(1.0000 0 0); - --popover-foreground: oklch(0.1500 0.0200 240); - - /* Primary - Professional Electric Blue */ - --primary: oklch(0.5200 0.2200 220); - --primary-foreground: oklch(0.9900 0.0050 220); - --primary-hover: oklch(0.4600 0.2400 220); - --primary-light: oklch(0.9200 0.1000 220); - --primary-dark: oklch(0.3800 0.2600 220); - - /* Secondary - Sophisticated Light Gray */ - --secondary: oklch(0.9200 0.0100 240); - --secondary-foreground: oklch(0.3000 0.0300 240); - --secondary-hover: oklch(0.8800 0.0150 240); - - /* Accent - Vibrant Cyan (Events Energy) */ - --accent: oklch(0.6500 0.2400 200); - --accent-foreground: oklch(0.9900 0.0050 200); - --accent-light: oklch(0.9400 0.1200 200); - --accent-dark: oklch(0.5000 0.2800 200); - - /* Success - Event Success Green */ - --success: oklch(0.6000 0.2000 140); - --success-foreground: oklch(0.9800 0.0100 140); - --success-light: oklch(0.9600 0.0800 140); - - /* Warning - Premium Amber */ - --warning: oklch(0.7200 0.1800 60); - --warning-foreground: oklch(0.2500 0.0400 60); - --warning-light: oklch(0.9600 0.0800 60); - - /* Error - Professional Red */ - --destructive: oklch(0.5600 0.2200 20); - --destructive-foreground: oklch(0.9800 0.0100 20); - --destructive-light: oklch(0.9600 0.1000 20); - - /* Muted tones */ - --muted: oklch(0.9400 0.0100 240); - --muted-foreground: oklch(0.5200 0.0300 240); - --muted-dark: oklch(0.8800 0.0200 240); - - /* Borders and inputs */ - --border: oklch(0.8800 0.0200 240); - --input: oklch(0.9800 0.0080 240); - --input-border: oklch(0.8600 0.0300 240); - --ring: oklch(0.5200 0.2200 220); - - /* Typography - Premium Event Platform */ - --font-sans: 'Inter', 'Plus Jakarta Sans', system-ui, sans-serif; - --font-display: 'Space Grotesk', 'Outfit', system-ui, sans-serif; - --font-mono: 'JetBrains Mono', 'Fira Code', monospace; - - /* Spacing and layout */ - --radius: 0.75rem; - --spacing: 1rem; - - /* Light theme shadow system */ - --shadow-xs: 0 1px 3px 0 hsl(240 15% 15% / 0.08), 0 1px 2px -1px hsl(240 15% 15% / 0.06); - --shadow-sm: 0 2px 6px -1px hsl(240 15% 15% / 0.10), 0 2px 4px -2px hsl(240 15% 15% / 0.08); - --shadow: 0 4px 8px -2px hsl(240 15% 15% / 0.12), 0 2px 4px -2px hsl(240 15% 15% / 0.08); - --shadow-md: 0 8px 16px -4px hsl(240 15% 15% / 0.14), 0 4px 6px -2px hsl(240 15% 15% / 0.10); - --shadow-lg: 0 16px 24px -4px hsl(240 15% 15% / 0.16), 0 8px 8px -4px hsl(240 15% 15% / 0.08); - --shadow-xl: 0 20px 32px -8px hsl(240 15% 15% / 0.18), 0 8px 16px -8px hsl(240 15% 15% / 0.10); - --shadow-2xl: 0 32px 64px -12px hsl(240 15% 15% / 0.22); - - /* Subtle accent shadows for light theme */ - --shadow-electric: 0 4px 16px -2px hsl(220 80% 60% / 0.15), 0 2px 8px -2px hsl(220 80% 60% / 0.10); - --shadow-accent: 0 4px 16px -2px hsl(200 80% 60% / 0.18), 0 2px 8px -2px hsl(200 80% 60% / 0.12); - - /* Light theme gradients */ - --gradient-primary: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%); - --gradient-background: linear-gradient(135deg, - oklch(0.9800 0.0050 240) 0%, - oklch(0.9600 0.0080 235) 25%, - oklch(0.9400 0.0120 230) 50%, - oklch(0.9600 0.0080 225) 75%, - oklch(0.9800 0.0050 220) 100%); - --gradient-card: linear-gradient(135deg, - oklch(1.0000 0 0) 0%, - oklch(0.9900 0.0050 235) 100%); - - /* Light theme pattern overlays */ - --grid-color: oklch(0.8500 0.0300 240); - --dot-color: oklch(0.8000 0.0400 220); - --connection-color: oklch(0.7500 0.0800 210); - - /* Light glassmorphism */ - --glass-bg: oklch(1.0000 0 0 / 0.85); - --glass-border: oklch(0.8800 0.0200 240 / 0.25); - --glass-backdrop: blur(16px) saturate(180%); - - /* Professional interaction states */ - --hover-lift: translateY(-2px); - --hover-scale: scale(1.02); - --focus-ring: 0 0 0 3px var(--ring); - - /* Event-specific colors for light theme */ - --event-vip: oklch(0.6800 0.2200 45); - --event-premium: oklch(0.5800 0.2000 280); - --event-standard: oklch(0.6200 0.1600 160); - --event-available: oklch(0.6000 0.1800 140); - --event-limited: oklch(0.7000 0.1800 50); - --event-sold-out: oklch(0.5800 0.2000 15); - - /* Radius variations */ - --radius-xs: calc(var(--radius) - 4px); - --radius-sm: calc(var(--radius) - 2px); - --radius-md: var(--radius); - --radius-lg: calc(var(--radius) + 4px); - --radius-xl: calc(var(--radius) + 8px); - --radius-2xl: calc(var(--radius) + 12px); - --radius-full: 9999px; -} \ No newline at end of file diff --git a/.superdesign/design_iterations/aperonight_premium_login_1.html b/.superdesign/design_iterations/aperonight_premium_login_1.html deleted file mode 100644 index b5007e7..0000000 --- a/.superdesign/design_iterations/aperonight_premium_login_1.html +++ /dev/null @@ -1,710 +0,0 @@ - - - - - - Connexion - AperoNight | Plateforme Événementielle Premium - - - - - - - - - - -
-
- -
-
-
-
- -
-
-

AperoNight

-

Plateforme Événementielle Premium

-

Connexion sécurisée • Interface professionnelle

- -
-
- - Connexion Sécurisée -
-
-
- - - - - - -
-
- - - - \ No newline at end of file diff --git a/.superdesign/design_iterations/aperonight_premium_theme.css b/.superdesign/design_iterations/aperonight_premium_theme.css deleted file mode 100644 index b625a53..0000000 --- a/.superdesign/design_iterations/aperonight_premium_theme.css +++ /dev/null @@ -1,125 +0,0 @@ -:root { - /* AperoNight Premium Theme - Telecom Inspired */ - - /* Base Colors - Sophisticated Navy & Electric Accents */ - --background: oklch(0.1200 0.0300 240); - --foreground: oklch(0.9500 0.0100 240); - --surface: oklch(0.1600 0.0400 240); - --surface-elevated: oklch(0.2000 0.0500 240); - - /* Card & Dialog surfaces */ - --card: oklch(0.9800 0.0100 240); - --card-foreground: oklch(0.1500 0.0200 240); - --popover: oklch(0.9800 0.0100 240); - --popover-foreground: oklch(0.1500 0.0200 240); - - /* Primary - Premium Electric Blue */ - --primary: oklch(0.5500 0.2400 220); - --primary-foreground: oklch(0.9800 0.0100 220); - --primary-hover: oklch(0.4800 0.2600 220); - --primary-light: oklch(0.8500 0.1200 220); - --primary-dark: oklch(0.3500 0.2800 220); - - /* Secondary - Sophisticated Slate */ - --secondary: oklch(0.8800 0.0200 240); - --secondary-foreground: oklch(0.2500 0.0300 240); - --secondary-hover: oklch(0.8200 0.0300 240); - - /* Accent - Vibrant Cyan (Events Energy) */ - --accent: oklch(0.6800 0.2600 200); - --accent-foreground: oklch(0.9800 0.0100 200); - --accent-light: oklch(0.8800 0.1400 200); - --accent-dark: oklch(0.4500 0.3000 200); - - /* Success - Event Success Green */ - --success: oklch(0.6200 0.2200 140); - --success-foreground: oklch(0.9600 0.0200 140); - --success-light: oklch(0.9200 0.1000 140); - - /* Warning - Premium Gold */ - --warning: oklch(0.7500 0.2000 60); - --warning-foreground: oklch(0.2000 0.0300 60); - --warning-light: oklch(0.9400 0.1000 60); - - /* Error - Professional Red */ - --destructive: oklch(0.5800 0.2400 20); - --destructive-foreground: oklch(0.9700 0.0200 20); - --destructive-light: oklch(0.9300 0.1200 20); - - /* Muted tones */ - --muted: oklch(0.8800 0.0200 240); - --muted-foreground: oklch(0.4800 0.0400 240); - --muted-dark: oklch(0.7500 0.0300 240); - - /* Borders and inputs */ - --border: oklch(0.8400 0.0300 240); - --input: oklch(0.9600 0.0200 240); - --input-border: oklch(0.8200 0.0400 240); - --ring: oklch(0.5500 0.2400 220); - - /* Typography - Premium Event Platform */ - --font-sans: 'Inter', 'Plus Jakarta Sans', system-ui, sans-serif; - --font-display: 'Space Grotesk', 'Outfit', system-ui, sans-serif; - --font-mono: 'JetBrains Mono', 'Fira Code', monospace; - - /* Spacing and layout */ - --radius: 0.75rem; - --spacing: 1rem; - - /* Premium shadow system */ - --shadow-xs: 0 1px 3px 0 hsl(240 30% 8% / 0.08), 0 1px 2px -1px hsl(240 30% 8% / 0.06); - --shadow-sm: 0 2px 6px -1px hsl(240 30% 8% / 0.10), 0 2px 4px -2px hsl(240 30% 8% / 0.08); - --shadow: 0 4px 8px -2px hsl(240 30% 8% / 0.12), 0 2px 4px -2px hsl(240 30% 8% / 0.08); - --shadow-md: 0 8px 16px -4px hsl(240 30% 8% / 0.14), 0 4px 6px -2px hsl(240 30% 8% / 0.10); - --shadow-lg: 0 16px 24px -4px hsl(240 30% 8% / 0.16), 0 8px 8px -4px hsl(240 30% 8% / 0.08); - --shadow-xl: 0 20px 32px -8px hsl(240 30% 8% / 0.20), 0 8px 16px -8px hsl(240 30% 8% / 0.12); - --shadow-2xl: 0 32px 64px -12px hsl(240 30% 8% / 0.25); - - /* Electric/Glow shadows for premium effects */ - --shadow-electric: 0 4px 16px -2px hsl(220 100% 70% / 0.20), 0 2px 8px -2px hsl(220 100% 70% / 0.15); - --shadow-accent: 0 4px 16px -2px hsl(200 100% 70% / 0.25), 0 2px 8px -2px hsl(200 100% 70% / 0.20); - - /* Premium gradients */ - --gradient-primary: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%); - --gradient-background: linear-gradient(135deg, - oklch(0.1200 0.0300 240) 0%, - oklch(0.1000 0.0400 235) 25%, - oklch(0.0800 0.0500 230) 50%, - oklch(0.1000 0.0400 225) 75%, - oklch(0.1200 0.0300 220) 100%); - --gradient-card: linear-gradient(135deg, - oklch(0.9900 0.0100 240) 0%, - oklch(0.9700 0.0200 235) 100%); - - /* Tech pattern overlays */ - --grid-color: oklch(0.3000 0.0500 240); - --dot-color: oklch(0.2500 0.0600 220); - --connection-color: oklch(0.4000 0.1200 210); - - /* Glass morphism for premium feel */ - --glass-bg: oklch(0.9800 0.0100 240 / 0.80); - --glass-border: oklch(0.8500 0.0300 240 / 0.30); - --glass-backdrop: blur(16px) saturate(200%); - - /* Professional states */ - --hover-lift: translateY(-2px); - --hover-scale: scale(1.02); - --focus-ring: 0 0 0 3px var(--ring); - - /* Event-specific colors */ - --event-vip: oklch(0.6500 0.2500 45); - --event-premium: oklch(0.5500 0.2200 280); - --event-standard: oklch(0.6000 0.1800 160); - --event-available: oklch(0.6200 0.2000 140); - --event-limited: oklch(0.7200 0.2000 50); - --event-sold-out: oklch(0.5500 0.2200 15); - - /* Radius variations */ - --radius-xs: calc(var(--radius) - 4px); - --radius-sm: calc(var(--radius) - 2px); - --radius-md: var(--radius); - --radius-lg: calc(var(--radius) + 4px); - --radius-xl: calc(var(--radius) + 8px); - --radius-2xl: calc(var(--radius) + 12px); - --radius-full: 9999px; -} \ No newline at end of file diff --git a/.superdesign/design_iterations/dashboard_2.html b/.superdesign/design_iterations/dashboard_2.html deleted file mode 100644 index 3fab455..0000000 --- a/.superdesign/design_iterations/dashboard_2.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - Dashboard - Minimalist Typography Design - - - - - - -
- - - - -
- - -
-

Bonjour, Marie

-

Voici un aperçu de vos activités et événements

-
- - -
-
-
-
- -
-
-

Action requise

-

2 billets en attente de paiement expirent dans 25 minutes

- - -
-
-
- Soirée Jazz au Sunset - 2 billets • €70 -
- 1/3 tentatives -
-
-
-
- -
-
- - -
-
-
- Réservations - -
-
05
-
+2 ce mois
-
- -
-
- Aujourd'hui - -
-
03
-
événements
-
- -
-
- Demain - -
-
07
-
événements
-
- -
-
- À venir - -
-
15
-
cette semaine
-
-
- - -
- - -
-
-
-

Mes événements

- -
- -
- -
-
-
-
-

Concert Rock Alternative

- CONFIRMÉ -
-

Aujourd'hui 21:00 • Salle Pleyel

-
- -
- -
-
-
-
-

Networking Tech

- DEMAIN -
-

19:00 • WeWork République

-
- -
- -
-
-
-
-

Brunch du Dimanche

- DIMANCHE -
-

11:00 • Café de Flore

-
- -
-
-
-
- - -
- -
-

Actions rapides

-
- - - - - -
-
- - -
-

Aujourd'hui

-
-
-
14:00
-
-

Cours de Cuisine

-

École Ducasse

-
- -
- -
-
20:30
-
-

Festival de Cinéma

-

MK2 Bibliothèque

-
- -
- -
-
22:00
-
-

Soirée Jazz

-

Le Sunset

-
- -
-
-
- - -
-

Statistiques

-
-
- Total participations - 127 -
-
- Événements créés - 12 -
-
- Note moyenne - 4.8/5 -
-
-
-
-
- - -
-
-

Événements à venir

-
- - -
-
- -
- -
-
- -
-
-
-

Concert Électro

- €45 -
-

Samedi 21 Sept • Berghain

-
- 12 places restantes - -
-
-
- -
-
- -
-
-
-

Marché Bio

- GRATUIT -
-

Dimanche 22 Sept • Place des Vosges

-
- Accès libre - -
-
-
- -
-
- -
-
-
-

Salon du Livre

- €15 -
-

Lundi 23 Sept • Grand Palais

-
- Populaire - -
-
-
-
- - -
- -
-
- -
-
- - - - \ No newline at end of file diff --git a/.superdesign/design_iterations/dashboard_3.html b/.superdesign/design_iterations/dashboard_3.html deleted file mode 100644 index f3ec2eb..0000000 --- a/.superdesign/design_iterations/dashboard_3.html +++ /dev/null @@ -1,556 +0,0 @@ - - - - - - Dashboard - Data Visualization Enhanced - - - - - - - -
- -
-
-
-
-

Dashboard Analytics

-

Analyse détaillée de vos événements et participations

-
-
- - -
-
- - -
- -
-
-
-

Taux de participation

-

87%

-
-
- - - - -
- -
-
-
-
- +5% - vs. mois dernier -
-
- - -
-
-
-

Événements créés

-

12

-
-
- - - - -
- -
-
-
-
- +3 - ce mois -
-
- - -
-
-
-

Revenus

-

€2,340

-
-
- - - - -
- -
-
-
-
- +18% - vs. mois dernier -
-
- - -
-
-
-

Satisfaction

-

4.8

-
-
- - - - -
- -
-
-
-
- +0.2 - vs. mois dernier -
-
-
-
-
- - -
- - -
-
-
- -
-
-

Paiements en attente - Action urgente

-

2 billets expirent dans les 25 prochaines minutes

- -
-
-
-

Soirée Jazz au Sunset

-

2 billets • Tentative 1/3

-
-
-

€70

-
-
-
-

25min restantes

-
-
-
-
- -
-
- - -
- - -
-
-

Participation aux événements

-
- - - -
-
-
- -
-
- - -
-

Catégories d'événements

-
- -
-
-
-
- Concert (40%) -
-
-
- Cuisine (25%) -
-
-
- Tech (20%) -
-
-
- Art (15%) -
-
-
-
- - -
- - -
-
-
-

Timeline des événements

- -
- -
-
- -
- -
-
-
-
-

Concert Rock Alternative

-

Aujourd'hui 21:00 • Salle Pleyel

-
-
- - 156 participants -
-
- - 4.7/5 -
-
-
- CONFIRMÉ -
-
-
- -
-
-
-
-

Networking Tech

-

Demain 19:00 • WeWork République

-
-
- - 42/50 participants -
-
-
-
-
-
- DEMAIN -
-
-
- -
-
-
-
-

Brunch du Dimanche

-

Dimanche 11:00 • Café de Flore

-
-
- - 8/12 participants -
-
-
-
-
-
- EN COURS -
-
-
- -
-
-
-
-

Cours de Photographie

-

Mercredi 18:00 • Studio Martin

-
-
- - Dans 3 jours -
-
-
- PLANIFIÉ -
-
-
-
-
-
-
- - -
- -
-

Performance

-
-
- Taux de réussite -
-
-
-
- 94% -
-
- -
- Engagement -
-
-
-
- 78% -
-
- -
- Recommandations -
-
-
-
- 89% -
-
-
-
- - -
-

Top catégories

-
-
-
- -
-
-
- Concert - 40% -
-
-
-
-
-
- -
-
- -
-
-
- Cuisine - 25% -
-
-
-
-
-
- -
-
- -
-
-
- Tech - 20% -
-
-
-
-
-
- -
-
- -
-
-
- Art - 15% -
-
-
-
-
-
-
-
- - -
-

Statistiques rapides

-
-
- Événements créés - 127 -
-
- Participants totaux - 2,456 -
-
- Note moyenne - 4.8/5 -
-
- Revenus - €12,340 -
-
-
-
-
-
-
- - - - \ No newline at end of file diff --git a/.superdesign/design_iterations/default_ui_darkmode.css b/.superdesign/design_iterations/default_ui_darkmode.css deleted file mode 100755 index a84d505..0000000 --- a/.superdesign/design_iterations/default_ui_darkmode.css +++ /dev/null @@ -1,521 +0,0 @@ -/* ======================================== - Dark Mode UI Framework - A beautiful dark mode design system - ======================================== */ - -/* ======================================== - CSS Variables & Theme - ======================================== */ -:root { - /* Dark Mode Color Palette */ - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.205 0 0); - --card-foreground: oklch(0.985 0 0); - --primary: oklch(0.922 0 0); - --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.556 0 0); - - /* Spacing & Layout */ - --radius: 0.625rem; - --spacing-xs: 0.25rem; - --spacing-sm: 0.5rem; - --spacing-md: 0.75rem; - --spacing-lg: 1rem; - --spacing-xl: 1.5rem; - --spacing-2xl: 2rem; - --spacing-3xl: 3rem; - - /* Typography */ - --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; - --font-size-xs: 0.75rem; - --font-size-sm: 0.875rem; - --font-size-base: 1rem; - --font-size-lg: 1.125rem; - --font-size-xl: 1.25rem; - --font-size-2xl: 1.5rem; - --font-size-3xl: 1.875rem; - --font-size-4xl: 2.25rem; -} - -/* ======================================== - Base Styles - ======================================== */ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - background-color: var(--background); - color: var(--foreground); - font-family: var(--font-family); - line-height: 1.6; - min-height: 100vh; -} - -html.dark { - color-scheme: dark; -} - -/* ======================================== - Layout Components - ======================================== */ -.container { - max-width: 64rem; - margin: 0 auto; - padding: var(--spacing-2xl) var(--spacing-lg); -} - -.container-sm { - max-width: 42rem; -} - -.container-lg { - max-width: 80rem; -} - -.grid { - display: grid; -} - -.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } -.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } -.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } -.grid-cols-auto { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } - -.gap-sm { gap: var(--spacing-sm); } -.gap-md { gap: var(--spacing-md); } -.gap-lg { gap: var(--spacing-lg); } -.gap-xl { gap: var(--spacing-xl); } - -.flex { - display: flex; -} - -.flex-col { - flex-direction: column; -} - -.items-center { - align-items: center; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.text-center { - text-align: center; -} - -/* ======================================== - Card Components - ======================================== */ -.card { - background-color: var(--card); - color: var(--card-foreground); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: calc(var(--radius) + 4px); - padding: var(--spacing-xl); - box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1); - transition: all 0.2s ease; -} - -.card:hover { - box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); -} - -/* ======================================== - Button Components - ======================================== */ -.btn { - display: inline-flex; - align-items: center; - justify-content: center; - gap: var(--spacing-sm); - white-space: nowrap; - border-radius: var(--radius); - font-size: var(--font-size-sm); - font-weight: 500; - transition: all 0.2s; - border: none; - cursor: pointer; - padding: var(--spacing-sm) var(--spacing-lg); - min-height: 2.25rem; - outline: none; - text-decoration: none; -} - -.btn:disabled { - pointer-events: none; - opacity: 0.5; -} - -.btn-primary { - background-color: var(--primary); - color: var(--primary-foreground); -} - -.btn-primary:hover { - background-color: rgba(236, 236, 236, 0.9); -} - -.btn-outline { - background-color: transparent; - border: 1px solid var(--border); - color: var(--foreground); -} - -.btn-outline:hover { - background-color: var(--accent); -} - -.btn-ghost { - background-color: transparent; - color: var(--foreground); -} - -.btn-ghost:hover { - background-color: var(--accent); -} - -.btn-destructive { - background-color: var(--destructive); - color: white; -} - -.btn-destructive:hover { - background-color: rgba(220, 38, 38, 0.9); -} - -/* Button Sizes */ -.btn-sm { - padding: var(--spacing-xs) var(--spacing-md); - font-size: var(--font-size-xs); - min-height: 2rem; -} - -.btn-lg { - padding: var(--spacing-md) var(--spacing-xl); - font-size: var(--font-size-base); - min-height: 2.75rem; -} - -.btn-icon { - padding: var(--spacing-sm); - width: 2.25rem; - height: 2.25rem; -} - -/* ======================================== - Form Components - ======================================== */ -.form-input { - width: 100%; - background: rgba(255, 255, 255, 0.15); - border: 1px solid var(--border); - border-radius: var(--radius); - padding: var(--spacing-sm) var(--spacing-md); - color: var(--foreground); - font-size: var(--font-size-sm); - outline: none; - transition: all 0.2s; -} - -.form-input:focus { - border-color: var(--ring); - box-shadow: 0 0 0 3px rgba(136, 136, 136, 0.5); -} - -.form-input::placeholder { - color: var(--muted-foreground); -} - -/* ======================================== - Badge Components - ======================================== */ -.badge { - display: inline-flex; - align-items: center; - justify-content: center; - border-radius: var(--radius); - border: 1px solid; - padding: 0.125rem var(--spacing-sm); - font-size: var(--font-size-xs); - font-weight: 500; - white-space: nowrap; -} - -/* Priority Badge Variants */ -.badge-priority-high { - background: rgba(127, 29, 29, 0.3); - color: rgb(252, 165, 165); - border: 1px solid rgba(153, 27, 27, 0.5); -} - -.badge-priority-medium { - background: rgba(120, 53, 15, 0.3); - color: rgb(252, 211, 77); - border: 1px solid rgba(146, 64, 14, 0.5); -} - -.badge-priority-low { - background: rgba(20, 83, 45, 0.3); - color: rgb(134, 239, 172); - border: 1px solid rgba(22, 101, 52, 0.5); -} - -/* ======================================== - Tab Components - ======================================== */ -.tab-list { - display: flex; - gap: var(--spacing-sm); - margin-bottom: var(--spacing-xl); -} - -.tab-button { - background-color: transparent; - border: 1px solid rgba(255, 255, 255, 0.2); - color: var(--foreground); - text-transform: capitalize; - font-weight: 500; - transition: all 0.2s ease; - padding: var(--spacing-sm) var(--spacing-md); - border-radius: var(--radius); - cursor: pointer; - font-size: var(--font-size-sm); -} - -.tab-button:hover { - background-color: rgba(255, 255, 255, 0.05); - border-color: rgba(255, 255, 255, 0.3); -} - -.tab-button.active { - background-color: #f8f9fa !important; - color: #1a1a1a !important; - border-color: #f8f9fa !important; - font-weight: 600; -} - -.tab-button.active:hover { - background-color: #e9ecef !important; - border-color: #e9ecef !important; -} - -/* ======================================== - Typography - ======================================== */ -.text-xs { font-size: var(--font-size-xs); } -.text-sm { font-size: var(--font-size-sm); } -.text-base { font-size: var(--font-size-base); } -.text-lg { font-size: var(--font-size-lg); } -.text-xl { font-size: var(--font-size-xl); } -.text-2xl { font-size: var(--font-size-2xl); } -.text-3xl { font-size: var(--font-size-3xl); } -.text-4xl { font-size: var(--font-size-4xl); } - -.font-normal { font-weight: 400; } -.font-medium { font-weight: 500; } -.font-semibold { font-weight: 600; } -.font-bold { font-weight: 700; } - -.text-primary { color: var(--primary); } -.text-muted { color: var(--muted-foreground); } -.text-destructive { color: var(--destructive); } - -.gradient-text { - background: linear-gradient(to right, var(--primary), rgba(236, 236, 236, 0.6)); - -webkit-background-clip: text; - background-clip: text; - -webkit-text-fill-color: transparent; -} - -/* ======================================== - Icon System - ======================================== */ -.icon { - width: 1rem; - height: 1rem; - fill: currentColor; - flex-shrink: 0; -} - -.icon-sm { width: 0.875rem; height: 0.875rem; } -.icon-lg { width: 1.25rem; height: 1.25rem; } -.icon-xl { width: 1.5rem; height: 1.5rem; } -.icon-2xl { width: 2rem; height: 2rem; } - -/* ======================================== - Interactive Components - ======================================== */ -.checkbox { - width: 1rem; - height: 1rem; - border: 1px solid var(--border); - border-radius: 4px; - cursor: pointer; - position: relative; - background: rgba(255, 255, 255, 0.15); - transition: all 0.2s; -} - -.checkbox:hover { - border-color: var(--ring); -} - -.checkbox.checked { - background-color: rgb(22, 163, 74); - border-color: rgb(22, 163, 74); -} - -.checkbox.checked::after { - content: '✓'; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - color: white; - font-size: 0.75rem; - font-weight: bold; -} - -/* ======================================== - List Components - ======================================== */ -.list-item { - display: flex; - align-items: center; - gap: var(--spacing-lg); - padding: var(--spacing-lg); - border-bottom: 1px solid rgba(255, 255, 255, 0.05); - transition: background-color 0.2s; -} - -.list-item:hover { - background-color: rgba(255, 255, 255, 0.025); -} - -.list-item:last-child { - border-bottom: none; -} - -.list-item.completed { - opacity: 0.6; -} - -/* ======================================== - Empty State Component - ======================================== */ -.empty-state { - text-align: center; - padding: var(--spacing-3xl) var(--spacing-lg); - color: var(--muted-foreground); -} - -.empty-state .icon { - width: 3rem; - height: 3rem; - margin: 0 auto var(--spacing-lg); - opacity: 0.5; -} - -/* ======================================== - Utility Classes - ======================================== */ -.hidden { display: none; } -.block { display: block; } -.flex { display: flex; } -.inline-flex { display: inline-flex; } - -.w-full { width: 100%; } -.h-full { height: 100%; } -.min-h-screen { min-height: 100vh; } - -.opacity-50 { opacity: 0.5; } -.opacity-60 { opacity: 0.6; } -.opacity-75 { opacity: 0.75; } - -.transition-all { transition: all 0.2s ease; } -.transition-colors { transition: color 0.2s ease, background-color 0.2s ease; } -.transition-opacity { transition: opacity 0.2s ease; } - -/* ======================================== - Responsive Design - ======================================== */ -@media (max-width: 768px) { - .container { - padding: var(--spacing-lg); - } - - .grid-cols-auto { - grid-template-columns: 1fr; - } - - .flex-col-mobile { - flex-direction: column; - } - - .text-center-mobile { - text-align: center; - } - - .gap-sm-mobile { gap: var(--spacing-sm); } - - .hidden-mobile { display: none; } - .block-mobile { display: block; } -} - -@media (max-width: 640px) { - .text-2xl { font-size: var(--font-size-xl); } - .text-3xl { font-size: var(--font-size-2xl); } - .text-4xl { font-size: var(--font-size-3xl); } - - .container { - padding: var(--spacing-lg) var(--spacing-sm); - } -} - -/* ======================================== - Animation Utilities - ======================================== */ -@keyframes fadeIn { - from { opacity: 0; transform: translateY(10px); } - to { opacity: 1; transform: translateY(0); } -} - -.animate-fade-in { - animation: fadeIn 0.3s ease-out; -} - -/* ======================================== - Focus & Accessibility - ======================================== */ -.focus-visible:focus-visible { - outline: 2px solid var(--ring); - outline-offset: 2px; -} - -@media (prefers-reduced-motion: reduce) { - * { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - } -} \ No newline at end of file diff --git a/.superdesign/design_iterations/festival_theme.css b/.superdesign/design_iterations/festival_theme.css deleted file mode 100644 index 0d7be5f..0000000 --- a/.superdesign/design_iterations/festival_theme.css +++ /dev/null @@ -1,53 +0,0 @@ -:root { - --background: oklch(0.9961 0.0039 106.7952); - --foreground: oklch(0.0902 0.0203 286.0532); - --card: oklch(0.9961 0.0039 106.7952); - --card-foreground: oklch(0.0902 0.0203 286.0532); - --popover: oklch(0.9961 0.0039 106.7952); - --popover-foreground: oklch(0.0902 0.0203 286.0532); - --primary: oklch(0.4902 0.2314 320.7094); - --primary-foreground: oklch(0.9961 0.0039 106.7952); - --secondary: oklch(0.6471 0.1686 342.5570); - --secondary-foreground: oklch(0.0902 0.0203 286.0532); - --muted: oklch(0.9412 0.0196 106.7952); - --muted-foreground: oklch(0.4706 0.0157 286.0532); - --accent: oklch(0.7255 0.1451 51.2345); - --accent-foreground: oklch(0.0902 0.0203 286.0532); - --destructive: oklch(0.5765 0.2314 27.3319); - --destructive-foreground: oklch(0.9961 0.0039 106.7952); - --border: oklch(0.8824 0.0157 106.7952); - --input: oklch(0.8824 0.0157 106.7952); - --ring: oklch(0.4902 0.2314 320.7094); - --chart-1: oklch(0.4902 0.2314 320.7094); - --chart-2: oklch(0.6471 0.1686 342.5570); - --chart-3: oklch(0.7255 0.1451 51.2345); - --chart-4: oklch(0.5490 0.2157 142.4953); - --chart-5: oklch(0.6157 0.2275 328.3634); - --sidebar: oklch(0.9412 0.0196 106.7952); - --sidebar-foreground: oklch(0.0902 0.0203 286.0532); - --sidebar-primary: oklch(0.4902 0.2314 320.7094); - --sidebar-primary-foreground: oklch(0.9961 0.0039 106.7952); - --sidebar-accent: oklch(0.6471 0.1686 342.5570); - --sidebar-accent-foreground: oklch(0.0902 0.0203 286.0532); - --sidebar-border: oklch(0.8824 0.0157 106.7952); - --sidebar-ring: oklch(0.4902 0.2314 320.7094); - --font-sans: 'Inter', sans-serif; - --font-serif: 'Playfair Display', serif; - --font-mono: 'Fira Code', monospace; - --radius: 1rem; - --shadow-2xs: 0 1px 2px 0px hsl(320 70% 20% / 0.08); - --shadow-xs: 0 1px 3px 0px hsl(320 70% 20% / 0.10); - --shadow-sm: 0 2px 4px 0px hsl(320 70% 20% / 0.10), 0 1px 2px -1px hsl(320 70% 20% / 0.06); - --shadow: 0 4px 6px 0px hsl(320 70% 20% / 0.12), 0 2px 4px -1px hsl(320 70% 20% / 0.08); - --shadow-md: 0 6px 8px 0px hsl(320 70% 20% / 0.15), 0 4px 6px -1px hsl(320 70% 20% / 0.10); - --shadow-lg: 0 10px 15px 0px hsl(320 70% 20% / 0.20), 0 6px 8px -1px hsl(320 70% 20% / 0.15); - --shadow-xl: 0 20px 25px 0px hsl(320 70% 20% / 0.25), 0 10px 15px -1px hsl(320 70% 20% / 0.20); - --shadow-2xl: 0 25px 50px 0px hsl(320 70% 20% / 0.30); - --tracking-normal: 0em; - --spacing: 0.25rem; - - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); -} \ No newline at end of file diff --git a/.superdesign/design_iterations/festival_ticket_page.html b/.superdesign/design_iterations/festival_ticket_page.html deleted file mode 100644 index 3ad009a..0000000 --- a/.superdesign/design_iterations/festival_ticket_page.html +++ /dev/null @@ -1,538 +0,0 @@ - - - - - - Fête de l'Humanité 2025 - Billets - - - - - - - - - -
-
-
-

Fête de l'Humanité 2025

-

14-16 Septembre • La Courneuve

-

Trois jours de musique, débats, culture et solidarité au cœur du plus grand festival populaire de France

-
-
- - 3 jours -
-
- - 100+ concerts -
-
- - 500k visiteurs -
-
-
-
- -
-
- - -
- -
-
-

Choisissez vos billets

-

Découvrez nos différentes formules pour profiter pleinement du festival

-
- -
- -
-
- -
-
-
- -
-

Pass 3 Jours

-

Accès complet au festival

-
45€
-
✓ Disponible
- -
- - 0 - -
-
-
- - -
-
-
- -
-

Samedi 14

-

Journée complète

-
18€
-
✓ Disponible
- -
- - 0 - -
-
-
- - -
-
-
- -
-

Dimanche 15

-

Journée complète

-
18€
-
✓ Disponible
- -
- - 0 - -
-
-
- - -
-
-
- -
-

Lundi 16

-

Journée complète

-
18€
-
✓ Disponible
- -
- - 0 - -
-
-
- - -
-
-
- -
-

Tarif Réduit

-

Étudiants, -26 ans, RSA

-
12€
-
✓ Disponible
- -
- - 0 - -
-
-
- - -
-
-
- -
-

Gratuit

-

Enfants -12 ans

-
Gratuit
-
✓ Disponible
- -
- - 0 - -
-
-
-
-
- - -
- -
-

Récapitulatif

- -
-
- -

Votre panier est vide

-
-
- -
-
- Total billets: - 0 -
-
- Sous-total: - €0.00 -
-
- Frais de service: - €0.00 -
-
-
- TOTAL: - €0.00 -
-
-
- - -
- - -
-

🎪 Festival Highlights

-
-
- - 100+ concerts et spectacles -
-
- - Débats et conférences -
-
- - Village gastronomique -
-
- - Village solidaire -
-
- - Animations jeunesse -
-
- - Accès RER B La Courneuve -
-
-
-
-
-
-
- - - - \ No newline at end of file diff --git a/.superdesign/design_iterations/quantic_login_1.html b/.superdesign/design_iterations/quantic_login_1.html deleted file mode 100644 index d13f599..0000000 --- a/.superdesign/design_iterations/quantic_login_1.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - - - Connexion - Quantic Telecom - - - - - - - - - - -
-
- -
-
-
- -
-
-

Quantic Telecom

-

Connexion Espace Client

-

Votre espace client sécurisé

-
- - - - - -
-

- Besoin d'aide ? - Support technique -

-

© 2024 Quantic Telecom - Tous droits réservés

-
-
-
- - - - \ No newline at end of file diff --git a/.superdesign/design_iterations/quantic_telecom_theme.css b/.superdesign/design_iterations/quantic_telecom_theme.css deleted file mode 100644 index 37d2e62..0000000 --- a/.superdesign/design_iterations/quantic_telecom_theme.css +++ /dev/null @@ -1,71 +0,0 @@ -:root { - /* Quantic Telecom Brand Colors */ - --background: oklch(0.9800 0.0050 240); - --foreground: oklch(0.1500 0.0100 240); - --card: oklch(1.0000 0 0); - --card-foreground: oklch(0.1500 0.0100 240); - --popover: oklch(1.0000 0 0); - --popover-foreground: oklch(0.1500 0.0100 240); - - /* Primary - Telecom Blue */ - --primary: oklch(0.4800 0.2000 240); - --primary-foreground: oklch(0.9800 0.0050 240); - --primary-hover: oklch(0.4200 0.2200 240); - - /* Secondary - Tech Gray */ - --secondary: oklch(0.9200 0.0100 240); - --secondary-foreground: oklch(0.2500 0.0150 240); - - /* Accent - Electric Blue */ - --accent: oklch(0.6500 0.2800 220); - --accent-foreground: oklch(0.9800 0.0050 240); - - /* Muted tones */ - --muted: oklch(0.9600 0.0080 240); - --muted-foreground: oklch(0.4500 0.0120 240); - - /* Success/Error states */ - --success: oklch(0.5500 0.2000 140); - --success-foreground: oklch(0.9800 0.0050 140); - --destructive: oklch(0.5500 0.2200 20); - --destructive-foreground: oklch(0.9800 0.0050 20); - - /* Borders and inputs */ - --border: oklch(0.8800 0.0150 240); - --input: oklch(0.9600 0.0080 240); - --ring: oklch(0.4800 0.2000 240); - - /* Typography */ - --font-sans: 'Inter', 'Segoe UI', system-ui, sans-serif; - --font-serif: 'Inter', 'Segoe UI', system-ui, serif; - --font-mono: 'JetBrains Mono', 'Fira Code', monospace; - - /* Spacing and layout */ - --radius: 0.5rem; - --spacing: 1rem; - - /* Modern shadows for depth */ - --shadow-xs: 0 1px 3px 0 hsl(240 25% 3% / 0.06); - --shadow-sm: 0 1px 3px 0 hsl(240 25% 3% / 0.08), 0 1px 2px -1px hsl(240 25% 3% / 0.08); - --shadow: 0 4px 8px -2px hsl(240 25% 3% / 0.08), 0 2px 4px -2px hsl(240 25% 3% / 0.06); - --shadow-md: 0 8px 16px -4px hsl(240 25% 3% / 0.08), 0 4px 6px -2px hsl(240 25% 3% / 0.06); - --shadow-lg: 0 16px 24px -4px hsl(240 25% 3% / 0.08), 0 8px 8px -4px hsl(240 25% 3% / 0.04); - --shadow-xl: 0 20px 32px -8px hsl(240 25% 3% / 0.12), 0 8px 16px -8px hsl(240 25% 3% / 0.08); - - /* Gradients for modern appeal */ - --gradient-primary: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%); - --gradient-background: linear-gradient(135deg, oklch(0.9900 0.0030 240) 0%, oklch(0.9700 0.0080 220) 100%); - - /* Grid overlay for tech aesthetic */ - --grid-color: oklch(0.9400 0.0100 240); - - /* Glass morphism effects */ - --glass-bg: oklch(1.0000 0 0 / 0.70); - --glass-border: oklch(0.9000 0.0200 240 / 0.20); - --glass-backdrop: blur(12px) saturate(180%); - - --radius-sm: calc(var(--radius) - 2px); - --radius-md: var(--radius); - --radius-lg: calc(var(--radius) + 4px); - --radius-xl: calc(var(--radius) + 8px); -} \ No newline at end of file diff --git a/app/views/components/_footer.html.erb b/app/views/components/_footer.html.erb index 830b5a5..3dd43a0 100755 --- a/app/views/components/_footer.html.erb +++ b/app/views/components/_footer.html.erb @@ -1,40 +1,92 @@ -
+ -
-

© 2025 Aperonight. All rights reserved. • Privacy PolicyTerms of Service

+ +
+
+

+ © 2025 Aperonight. Tous droits réservés. +

+ +
\ No newline at end of file diff --git a/app/views/components/_header.html.erb b/app/views/components/_header.html.erb index f787bfa..6c9704d 100755 --- a/app/views/components/_header.html.erb +++ b/app/views/components/_header.html.erb @@ -1,22 +1,28 @@ -
+
-
+
\ No newline at end of file diff --git a/app/views/components/_ticket_card.html.erb b/app/views/components/_ticket_card.html.erb index 2f5f765..b12c98a 100755 --- a/app/views/components/_ticket_card.html.erb +++ b/app/views/components/_ticket_card.html.erb @@ -16,16 +16,12 @@
<% if sold_out %> - - - + Épuisé <% else %> - - - + <%= remaining %> disponibles <% end %> @@ -59,12 +55,10 @@
<% else %>
- - - + Indisponible
<% end %>
- + \ No newline at end of file diff --git a/app/views/devise/confirmations/new.html.erb b/app/views/devise/confirmations/new.html.erb index e6c098a..8774910 100755 --- a/app/views/devise/confirmations/new.html.erb +++ b/app/views/devise/confirmations/new.html.erb @@ -1,34 +1,52 @@ -
-
-
+
+
+ +
<%= link_to "/" do %> - Aperonight +
+ +
<% end %> -

- <%= t('devise.confirmations.new.title') %> -

-

+

<%= t('devise.confirmations.new.title') %>

+

<%= t('devise.confirmations.new.description') %>

- <%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post, class: "mt-8 space-y-6" }) do |f| %> + +
+ <%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post, class: "space-y-6" }) do |f| %> +
+
+ <%= f.label :email, class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email), + placeholder: "votre@email.com", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
+
-
- <%= f.label :email, class: "block text-sm font-medium text-neutral-700" %> -
- <%= f.email_field :email, autofocus: true, autocomplete: "email", value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email), - class: "appearance-none block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-400 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm", - placeholder: "Email" %> +
+ <%= f.button type: "submit", class: "group relative w-full flex justify-center items-center py-3 px-4 border border-transparent text-sm font-semibold rounded-xl text-white bg-gray-900 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 transition-all duration-200 shadow-lg hover:shadow-xl transform hover:-translate-y-0.5" do %> + + <%= t('devise.confirmations.new.submit') %> + <% end %> +
+ <% end %> + + +
+
+

+ Vous vous souvenez de votre mot de passe ? + Se connecter +

- -
- <%= f.submit t('devise.confirmations.new.submit'), - class: "group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-purple-600 hover:bg-purple-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-50 focus:ring-purple-500" %> -
- <% end %> - - <%= render "devise/shared/links" %> +
-
+
\ No newline at end of file diff --git a/app/views/devise/passwords/edit.html.erb b/app/views/devise/passwords/edit.html.erb index 4176737..a8757e9 100755 --- a/app/views/devise/passwords/edit.html.erb +++ b/app/views/devise/passwords/edit.html.erb @@ -1,43 +1,69 @@ -
-
-
+
+
+ +
<%= link_to "/" do %> - Aperonight +
+ +
<% end %> -

- <%= t('devise.passwords.edit.title') %> -

-

+

<%= t('devise.passwords.edit.title') %>

+

<%= t('devise.passwords.edit.description') %>

- <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put, class: "mt-8 space-y-6" }) do |f| %> - <%= f.hidden_field :reset_password_token %> + +
+ <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put, class: "space-y-6" }) do |f| %> + <%= f.hidden_field :reset_password_token %> -
-
- <%= f.label :password, t('devise.passwords.edit.new_password'), class: "block text-sm font-medium text-neutral-700" %> - <% if @minimum_password_length %> - (<%= t('devise.registrations.new.minimum_password_length', count: @minimum_password_length) %>) +
+
+ <%= f.label :password, t('devise.passwords.edit.new_password'), class: "block text-sm font-semibold text-gray-700 mb-2" %> + <% if @minimum_password_length %> +

(<%= t('devise.registrations.new.minimum_password_length', count: @minimum_password_length) %>)

+ <% end %> +
+
+ +
+ <%= f.password_field :password, autofocus: true, autocomplete: "new-password", + placeholder: "Votre nouveau mot de passe", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
+ +
+ <%= f.label :password_confirmation, t('devise.passwords.edit.confirm_new_password'), class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.password_field :password_confirmation, autocomplete: "new-password", + placeholder: "Confirmez votre nouveau mot de passe", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
+
+ +
+ <%= f.button type: "submit", class: "group relative w-full flex justify-center items-center py-3 px-4 border border-transparent text-sm font-semibold rounded-xl text-white bg-gray-900 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 transition-all duration-200 shadow-lg hover:shadow-xl transform hover:-translate-y-0.5" do %> + + <%= t('devise.passwords.edit.submit') %> <% end %> - <%= f.password_field :password, autofocus: true, autocomplete: "new-password", - class: "mt-1 block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-400 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm" %>
+ <% end %> -
- <%= f.label :password_confirmation, t('devise.passwords.edit.confirm_new_password'), class: "block text-sm font-medium text-neutral-700" %> - <%= f.password_field :password_confirmation, autocomplete: "new-password", - class: "mt-1 block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-400 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm" %> + +
+
+

+ Vous vous souvenez de votre mot de passe ? + Se connecter +

- -
- <%= f.submit t('devise.passwords.edit.submit'), - class: "group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-purple-600 hover:bg-purple-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-50 focus:ring-purple-500" %> -
- <% end %> - - <%= render "devise/shared/links" %> +
-
+
\ No newline at end of file diff --git a/app/views/devise/passwords/new.html.erb b/app/views/devise/passwords/new.html.erb index d8784db..f77fabf 100755 --- a/app/views/devise/passwords/new.html.erb +++ b/app/views/devise/passwords/new.html.erb @@ -1,46 +1,52 @@ -
-
-
+
+
+ +
<%= link_to "/" do %> - Aperonight +
+ +
<% end %> -

- Mot de passe oublié ? -

-

+

Mot de passe oublié ?

+

Entrez votre adresse email ci-dessous et nous vous enverrons un lien pour réinitialiser votre mot de passe.

- <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post, class: "mt-8 space-y-6" }) do |f| %> + +
+ <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post, class: "space-y-6" }) do |f| %> +
+
+ <%= f.label :email, "Adresse email", class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", + placeholder: "votre@email.com", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
+
-
- <%= f.label :email, "Adresse Email", class: "block text-sm font-medium text-neutral-700" %> -
- <%= f.email_field :email, autofocus: true, autocomplete: "email", - class: "appearance-none block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-400 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm", - placeholder: t('devise.passwords.new.email_placeholder') %> +
+ <%= f.button type: "submit", class: "group relative w-full flex justify-center items-center py-3 px-4 border border-transparent text-sm font-semibold rounded-xl text-white bg-gray-900 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 transition-all duration-200 shadow-lg hover:shadow-xl transform hover:-translate-y-0.5" do %> + + Envoyer le lien de réinitialisation + <% end %> +
+ <% end %> + + +
+
+

+ Vous vous souvenez de votre mot de passe ? + Se connecter +

- -
- <%= f.submit "Envoyer le lien de réinitialisation", - class: "group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-purple-600 hover:bg-purple-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-50 focus:ring-purple-500" %> -
- <% end %> - -
-
-
-
-
-
- Continuer avec -
-
- - <%= render "devise/shared/links" %>
-
-
+
\ No newline at end of file diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb index 7b05631..014ece3 100755 --- a/app/views/devise/registrations/edit.html.erb +++ b/app/views/devise/registrations/edit.html.erb @@ -1,68 +1,120 @@ -
-
-
+
+
+ +
<%= link_to "/" do %> - Aperonight +
+ +
<% end %> -

- Modifier votre compte -

-

+

Modifier votre compte

+

Gérez vos informations et préférences

- <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put, class: "mt-8 space-y-6" }) do |f| %> - <%= render "devise/shared/error_messages", resource: resource %> + +
+

Informations du compte

+ + <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put, class: "space-y-6" }) do |f| %> + <%= render "devise/shared/error_messages", resource: resource %> -
-
- <%= f.label :email, class: "block text-sm font-medium text-neutral-700" %> - <%= f.email_field :email, autofocus: true, autocomplete: "email", - class: "mt-1 block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-400 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm" %> -
- - <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> -
- En attente de confirmation pour : <%= resource.unconfirmed_email %> +
+
+ <%= f.label :email, class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
- <% end %> -
- <%= f.label :password, "Nouveau mot de passe", class: "block text-sm font-medium text-neutral-700" %> - <%= f.password_field :password, autocomplete: "new-password", - class: "mt-1 block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-400 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm" %> + <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> +
+ + En attente de confirmation pour : <%= resource.unconfirmed_email %> +
+ <% end %> + +
+
+ <%= f.label :password, "Nouveau mot de passe", class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.password_field :password, autocomplete: "new-password", + placeholder: "Laisser vide si vous ne souhaitez pas le changer", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+ <% if @minimum_password_length %> +

<%= t('devise.registrations.new.minimum_password_length', count: @minimum_password_length) %>

+ <% end %> +
+ +
+ <%= f.label :password_confirmation, "Confirmer le nouveau mot de passe", class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.password_field :password_confirmation, autocomplete: "new-password", + placeholder: "Confirmez votre nouveau mot de passe", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
+
+ +
+ <%= f.label :current_password, "Mot de passe actuel", class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.password_field :current_password, autocomplete: "current-password", + placeholder: "Requis pour confirmer vos changements", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+

Requis pour confirmer vos changements

+
-
- <%= f.label :password_confirmation, "Confirmer le nouveau mot de passe", class: "block text-sm font-medium text-neutral-700" %> - <%= f.password_field :password_confirmation, autocomplete: "new-password", - class: "mt-1 block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-400 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm" %> +
+ <%= f.button type: "submit", class: "group relative w-full flex justify-center items-center py-3 px-4 border border-transparent text-sm font-semibold rounded-xl text-white bg-gray-900 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 transition-all duration-200 shadow-lg hover:shadow-xl transform hover:-translate-y-0.5" do %> + + Mettre à jour + <% end %>
- -
- <%= f.label :current_password, "Mot de passe actuel", class: "block text-sm font-medium text-neutral-700" %> - <%= f.password_field :current_password, autocomplete: "current-password", - class: "mt-1 block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-400 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm" %> -
-
- -
- <%= f.submit "Mettre à jour", - class: "group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-purple-600 hover:bg-purple-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-50 focus:ring-purple-500" %> -
- <% end %> - -

<%= t('devise.registrations.edit.delete_account') %>

-
-

- <%= t('devise.registrations.edit.unhappy') %> <%= button_to t('devise.registrations.edit.delete_account'), registration_path(resource_name), - data: { confirm: t('devise.registrations.edit.confirm_delete'), turbo_confirm: t('devise.registrations.edit.confirm_delete') }, - method: :delete, - class: "font-medium text-red-600 hover:text-red-500" %> -

+ <% end %>
- <%= link_to t('devise.registrations.edit.back'), :back, class: "text-center block text-purple-600 hover:text-purple-500" %> + +
+

Supprimer mon compte

+

+ <%= t('devise.registrations.edit.unhappy') %> Cette action est irréversible. +

+ <%= button_to registration_path(resource_name), + data: { + confirm: t('devise.registrations.edit.confirm_delete'), + turbo_confirm: t('devise.registrations.edit.confirm_delete') + }, + method: :delete, + class: "group relative w-full flex justify-center items-center py-3 px-4 border border-red-300 text-sm font-semibold rounded-xl text-red-700 bg-red-50 hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 transition-all duration-200" do %> + + <%= t('devise.registrations.edit.delete_account') %> + <% end %> +
+ + +
+ <%= link_to :back, class: "inline-flex items-center text-purple-600 hover:text-purple-500 transition-colors" do %> + + <%= t('devise.registrations.edit.back') %> + <% end %> +
-
+
\ No newline at end of file diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index 8f2d7f3..22e2e35 100755 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -1,58 +1,91 @@ -
-
-
+
+
+ +
<%= link_to "/" do %> - Aperonight +
+ +
<% end %> -

Créer un compte

-

- ou se connecter à votre compte +

Créer un compte

+

+ ou se connecter à votre compte existant

- <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { class: "mt-8 space-y-6" }) do |f| %> + +
+ <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { class: "space-y-6" }) do |f| %> + <%= render "devise/shared/error_messages", resource: resource %> + +
+
+ <%= f.label :email, "Adresse email", class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", + placeholder: "votre@email.com", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
-
-
- <%= f.label :email, "Adresse email", class: "block text-sm font-medium text-neutral-700" %> - <%= f.email_field :email, autofocus: true, autocomplete: "email", - class: "mt-1 block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-500 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm" %> +
+ <%= f.label :password, "Mot de passe", class: "block text-sm font-semibold text-gray-700 mb-2" %> + <% if @minimum_password_length %> +

<%= t('devise.registrations.new.minimum_password_length', count: @minimum_password_length) %>

+ <% end %> +
+
+ +
+ <%= f.password_field :password, autocomplete: "new-password", + placeholder: "Votre mot de passe", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
+ +
+ <%= f.label :password_confirmation, "Confirmation du mot de passe", class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.password_field :password_confirmation, autocomplete: "new-password", + placeholder: "Confirmez votre mot de passe", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
-
- <%= f.label :password, "Mot de passe", class: "block text-sm font-medium text-neutral-700" %> - <% if @minimum_password_length %> - (<%= t('devise.registrations.new.minimum_password_length', count: @minimum_password_length) %>) +
+ <%= f.button type: "submit", class: "group relative w-full flex justify-center items-center py-3 px-4 border border-transparent text-sm font-semibold rounded-xl text-white bg-gray-900 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 transition-all duration-200 shadow-lg hover:shadow-xl transform hover:-translate-y-0.5" do %> + + Créer un compte <% end %> - <%= f.password_field :password, autocomplete: "new-password", - class: "mt-1 block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-500 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm" %>
+ <% end %> -
- <%= f.label :password_confirmation, "Confirmation du mot de passe", class: "block text-sm font-medium text-neutral-700" %> - <%= f.password_field :password_confirmation, autocomplete: "new-password", - class: "mt-1 block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-500 focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm" %> + +
+
+

+ Vous avez déjà un compte? + Se connecter +

+
-
- <%= f.submit "Créer un compte", class: "group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-purple-600 hover:bg-purple-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-50 focus:ring-purple-500" %> -
- <% end %> - -
-
-
-
-
-
- Continuer avec -
-
- -
- <%= render "devise/shared/links" %> -
+ +
+

+ En créant un compte, vous acceptez nos + conditions d'utilisation + et notre + politique de confidentialité. +

diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb index ef7818b..cf656fc 100755 --- a/app/views/devise/sessions/new.html.erb +++ b/app/views/devise/sessions/new.html.erb @@ -1,64 +1,74 @@ -
-
-
+
+
+ +
<%= link_to "/" do %> - Aperonight +
+ +
<% end %> -

- Se connecter à votre compte -

-

- ou - - créer un compte - +

Connexion à votre compte

+

+ ou créer un compte

- <%= form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: "mt-8 space-y-6" }) do |f| %> - -
-
- <%= f.label :email, "Email", class: "sr-only" %> - <%= f.email_field :email, autofocus: true, autocomplete: "email", - class: "appearance-none rounded-none relative block w-full px-3 py-2 border border-neutral-300 placeholder-neutral-500 text-neutral-900 bg-white rounded-t-md focus:outline-none focus:ring-purple-500 focus:border-purple-500 focus:z-10 sm:text-sm", - placeholder: "Adresse email" %> -
- -
- <%= f.label :password, "Mot de passe", class: "sr-only" %> - <%= f.password_field :password, autocomplete: "current-password", - class: "appearance-none rounded-none relative block w-full px-3 py-2 border border-neutral-300 placeholder-neutral-500 text-neutral-900 bg-white rounded-b-md focus:outline-none focus:ring-purple-500 focus:border-purple-500 focus:z-10 sm:text-sm", - placeholder: "Mot de passe" %> -
-
- - <% if devise_mapping.rememberable? %> -
-
- <%= f.check_box :remember_me, class: "h-4 w-4 text-purple-600 focus:ring-purple-500 border-neutral-300 rounded bg-white" %> - + +
+ <%= form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: "space-y-6" }) do |f| %> +
+
+ <%= f.label :email, "Adresse email", class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", + placeholder: "votre@email.com", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
+ <%= f.label :password, "Mot de passe", class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.password_field :password, autocomplete: "current-password", + placeholder: "Votre mot de passe", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
+
+ + <% if devise_mapping.rememberable? %> +
+ <%= f.check_box :remember_me, class: "h-4 w-4 text-purple-600 focus:ring-purple-500 border-gray-300 rounded bg-white" %> + <%= f.label :remember_me, "Se souvenir de moi", class: "ml-2 block text-sm text-gray-700" %> +
+ <% end %> + +
+ <%= f.button type: "submit", class: "group relative w-full flex justify-center items-center py-3 px-4 border border-transparent text-sm font-semibold rounded-xl text-white bg-gray-900 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 transition-all duration-200 shadow-lg hover:shadow-xl transform hover:-translate-y-0.5" do %> + + Se connecter + <% end %>
<% end %> -
- <%= f.submit "Se connecter", class: "group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-purple-600 hover:bg-purple-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-neutral-50 focus:ring-purple-500" %> -
- <% end %> - -
-
-
-
-
-
- Continuer avec + +
+
+ <%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %> + <%= link_to "Mot de passe oublié ?", new_password_path(resource_name), class: "text-sm text-purple-600 hover:text-purple-500 transition-colors" %> + <% end %> +

+ Vous n'avez pas encore de compte? + S'inscrire +

- - <%= render "devise/shared/links" %>
-
+
\ No newline at end of file diff --git a/app/views/devise/shared/_error_messages.html.erb b/app/views/devise/shared/_error_messages.html.erb index 833fbad..8f6ced9 100755 --- a/app/views/devise/shared/_error_messages.html.erb +++ b/app/views/devise/shared/_error_messages.html.erb @@ -1,5 +1,20 @@ <% if resource.errors.any? %> - <% resource.errors.full_messages.each do |message| %> - <% flash.now[:error] = message %> - <% end %> -<% end %> +
+
+
+ +
+
+

Veuillez corriger les erreurs suivantes :

+
    + <% resource.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ +
+
+<% end %> \ No newline at end of file diff --git a/app/views/devise/shared/_links.html.erb b/app/views/devise/shared/_links.html.erb index 7a31dd8..cf8e355 100755 --- a/app/views/devise/shared/_links.html.erb +++ b/app/views/devise/shared/_links.html.erb @@ -1,39 +1,58 @@ -
- <%- if controller_name != "sessions" %> -
- <%= link_to "Se connecter", new_session_path(resource_name), class: "block" %> +
+
+
+
- <% end %> - - <%- if devise_mapping.registerable? && controller_name != "registrations" %> -
- <%= link_to "Créer un compte", new_registration_path(resource_name), class: "block" %> +
+ Ou continuer avec
- <% end %> +
- <%- if devise_mapping.recoverable? && controller_name != "passwords" && controller_name != "registrations" %> -
- <%= link_to "Mot de passe oublié ?", new_password_path(resource_name), class: "block" %> -
- <% end %> - - <%- if devise_mapping.confirmable? && controller_name != "confirmations" %> -
- <%= link_to "Renvoyer le lien de confirmation", new_confirmation_path(resource_name), class: "block" %> -
- <% end %> - - <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != "unlocks" %> -
- <%= link_to "Renvoyer le lien de déblocage", new_unlock_path(resource_name), class: "block" %> -
- <% end %> - - <%- if devise_mapping.omniauthable? %> - <%- resource_class.omniauth_providers.each do |provider| %> -
- <%= button_to "Se connecter avec #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider), data: { turbo: false }, class: "block" %> -
+
+ <%- if controller_name != "sessions" %> + <%= link_to new_session_path(resource_name), class: "w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-xl shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 transition-all duration-200" do %> + + Se connecter + <% end %> <% end %> - <% end %> -
+ + <%- if devise_mapping.registerable? && controller_name != "registrations" %> + <%= link_to new_registration_path(resource_name), class: "w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-xl shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 transition-all duration-200" do %> + + S'inscrire + <% end %> + <% end %> +
+ +
+ <%- if devise_mapping.recoverable? && controller_name != "passwords" && controller_name != "registrations" %> + <%= link_to new_password_path(resource_name), class: "w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-xl shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 transition-all duration-200" do %> + + Mot de passe oublié ? + <% end %> + <% end %> + + <%- if devise_mapping.confirmable? && controller_name != "confirmations" %> + <%= link_to new_confirmation_path(resource_name), class: "w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-xl shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 transition-all duration-200" do %> + + Renvoyer le lien de confirmation + <% end %> + <% end %> + + <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != "unlocks" %> + <%= link_to new_unlock_path(resource_name), class: "w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-xl shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 transition-all duration-200" do %> + + Renvoyer le lien de déblocage + <% end %> + <% end %> + + <%- if devise_mapping.omniauthable? %> + <%- resource_class.omniauth_providers.each do |provider| %> + <%= button_to omniauth_authorize_path(resource_name, provider), data: { turbo: false }, class: "w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-xl shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 transition-all duration-200" do %> + + Se connecter avec <%= OmniAuth::Utils.camelize(provider) %> + <% end %> + <% end %> + <% end %> +
+
\ No newline at end of file diff --git a/app/views/devise/unlocks/new.html.erb b/app/views/devise/unlocks/new.html.erb index 39d51da..7aa34b8 100755 --- a/app/views/devise/unlocks/new.html.erb +++ b/app/views/devise/unlocks/new.html.erb @@ -1,15 +1,52 @@ -

Resend unlock instructions

+
+
+ +
+ <%= link_to "/" do %> +
+ +
+ <% end %> +

Renvoyer les instructions de déverrouillage

+

+ Entrez votre adresse email et nous vous enverrons les instructions de déverrouillage +

+
-<%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %> + +
+ <%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post, class: "space-y-6" }) do |f| %> +
+
+ <%= f.label :email, "Adresse email", class: "block text-sm font-semibold text-gray-700 mb-2" %> +
+
+ +
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", + placeholder: "votre@email.com", + class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %> +
+
+
-
- <%= f.label :email %>
- <%= f.email_field :email, autofocus: true, autocomplete: "email" %> +
+ <%= f.button type: "submit", class: "group relative w-full flex justify-center items-center py-3 px-4 border border-transparent text-sm font-semibold rounded-xl text-white bg-gray-900 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 transition-all duration-200 shadow-lg hover:shadow-xl transform hover:-translate-y-0.5" do %> + + Renvoyer les instructions de déverrouillage + <% end %> +
+ <% end %> + + +
+
+

+ Vous vous souvenez de votre mot de passe ? + Se connecter +

+
+
+
- -
- <%= f.submit "Resend unlock instructions" %> -
-<% end %> - -<%= render "devise/shared/links" %> +
\ No newline at end of file diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb index 803c94e..0ef9f9c 100755 --- a/app/views/events/index.html.erb +++ b/app/views/events/index.html.erb @@ -1,135 +1,117 @@ -
+
- + + <%= render 'components/breadcrumb', crumbs: [ + { name: 'Accueil', path: root_path }, + { name: 'Événements', path: events_path } + ] %> -