Alexis Bruneteau 14eff8d0da feat: Rebuild frontend with Next.js and shadcn/ui components
- Migrate from React CRA to Next.js 15 with modern architecture
- Implement comprehensive shadcn/ui component library
- Create complete dashboard system with layouts and navigation
- Build authentication pages (login, register) with proper forms
- Implement vote management pages (active, upcoming, history, archives)
- Add user profile management with security settings
- Configure Tailwind CSS with custom dark theme (accent: #e8704b)
- Setup TypeScript with strict type checking
- Backup old React-based frontend to .backups/frontend-old
- All pages compile successfully and build passes linting

Pages created:
- Home page with hero section and features
- Authentication (login/register)
- Dashboard with stats and vote cards
- Vote management (active, upcoming, history, archives)
- User profile with form validation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 17:02:14 +01:00

149 lines
2.2 KiB
CSS

/* RegisterPage.css */
.register-page {
min-height: 100vh;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
}
.register-container {
background: white;
padding: 40px;
border-radius: 10px;
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
max-width: 500px;
width: 100%;
}
.register-container h2 {
text-align: center;
color: #333;
margin-bottom: 30px;
}
.form-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 15px;
margin-bottom: 15px;
}
.form-group {
margin-bottom: 20px;
}
.form-group label {
display: block;
margin-bottom: 8px;
color: #555;
font-weight: bold;
}
.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="password"] {
width: 100%;
padding: 12px;
border: 2px solid #ddd;
border-radius: 5px;
font-size: 1em;
transition: border-color 0.3s;
box-sizing: border-box;
}
.form-group input:focus {
outline: none;
border-color: #667eea;
}
.terms-checkbox {
display: flex;
align-items: flex-start;
margin-bottom: 20px;
gap: 10px;
}
.terms-checkbox input[type="checkbox"] {
margin-top: 5px;
cursor: pointer;
}
.terms-checkbox label {
margin: 0;
font-weight: normal;
color: #666;
font-size: 0.95em;
}
.terms-checkbox a {
color: #667eea;
text-decoration: none;
}
.terms-checkbox a:hover {
text-decoration: underline;
}
.btn {
width: 100%;
padding: 12px;
background: #667eea;
color: white;
border: none;
border-radius: 5px;
font-size: 1.1em;
font-weight: bold;
cursor: pointer;
transition: background 0.3s;
}
.btn:hover:not(:disabled) {
background: #5568d3;
}
.btn:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.btn-primary {
background: #667eea;
}
.error-message {
background: #ffebee;
color: #d32f2f;
padding: 12px;
border-radius: 5px;
margin-bottom: 20px;
text-align: center;
}
.login-link {
text-align: center;
margin-top: 20px;
color: #666;
}
.login-link a {
color: #667eea;
text-decoration: none;
font-weight: bold;
}
.login-link a:hover {
text-decoration: underline;
}
@media (max-width: 600px) {
.form-row {
grid-template-columns: 1fr;
}
.register-container {
padding: 20px;
}
}