Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
"heroLocation": "Yaound\u00e9, Cameroon",
"viewAgenda": "View Agenda",
"callForSpeakers": "Call For Speakers",
"getYourTicket": "Get Your Ticket",
"viewReport": "View the 2026 Report",
"wrapNotice": "We're done for 2026!",
"supportAttendees": "Support Attendees",
"welcomeTitle": "Welcome to",
"welcomeTitleHighlight": "PyCon Cameroon 2026",
Expand Down Expand Up @@ -73,8 +74,8 @@
"technicalSessions": "Technical Sessions",
"workshopsStat": "Workshops",
"daysOfLearning": "Days of Learning",
"readyToJoin": "Ready to Join Us?",
"readyToJoinText": "Be part of Cameroon's first PyCon and help shape the future of Python in Africa.",
"wrapTitle": "Thank You for an Amazing 2026!",
"wrapText": "PyCon & UbuCon Cameroon 2026 is over. Relive the three days, the numbers and the people in our event report, and help us build the next edition.",
"submitATalk": "Submit a Talk",
"sponsorshipDeck": "Sponsorship Deck",
"sponsorsTitle": "Our",
Expand Down
7 changes: 4 additions & 3 deletions src/i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
"heroLocation": "Yaound\u00e9, Cameroun",
"viewAgenda": "Voir l'agenda",
"callForSpeakers": "Appel aux intervenants",
"getYourTicket": "Obtenez votre billet",
"viewReport": "Voir le rapport 2026",
"wrapNotice": "C'est fini pour 2026 !",
"supportAttendees": "Parrainer des participants",
"welcomeTitle": "Bienvenue \u00e0",
"welcomeTitleHighlight": "PyCon Cameroun 2026",
Expand Down Expand Up @@ -73,8 +74,8 @@
"technicalSessions": "Sessions techniques",
"workshopsStat": "Ateliers",
"daysOfLearning": "Jours d'apprentissage",
"readyToJoin": "Pr\u00eat \u00e0 nous rejoindre ?",
"readyToJoinText": "Faites partie du premier PyCon du Cameroun et contribuez \u00e0 fa\u00e7onner l'avenir de Python en Afrique.",
"wrapTitle": "Merci pour cette \u00e9dition 2026 !",
"wrapText": "PyCon & UbuCon Cameroon 2026, c'est fini. Revivez les trois jours, les chiffres et les visages dans notre rapport d'activit\u00e9, et aidez-nous \u00e0 construire la prochaine \u00e9dition.",
"submitATalk": "Soumettre une conf\u00e9rence",
"sponsorshipDeck": "Dossier de sponsoring",
"sponsorsTitle": "Nos",
Expand Down
4 changes: 4 additions & 0 deletions src/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -2430,6 +2430,10 @@ img {
flex-wrap: wrap;
}

.hero-buttons .btn {
gap: 0.5em;
}

@media (min-width: 992px) {
.hero-buttons {
flex-wrap: nowrap;
Expand Down
19 changes: 10 additions & 9 deletions src/pages/Home.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { Link } from 'react-router-dom';
import { useLocalizedPath } from '../hooks/useLocalizedPath';
import { Calendar, MapPin, CalendarDays, Ticket } from 'lucide-react';
import { Calendar, MapPin, CalendarDays, FileText } from 'lucide-react';
import { useTranslation } from 'react-i18next';
import useScrollAnimation from '../hooks/useScrollAnimation';
import LazyImage from '../components/LazyImage';
Expand Down Expand Up @@ -32,6 +32,7 @@ const Home = () => {
</div>

<div className="hero-content animate-fade-scale">
<span className="report-day-badge" style={{ fontSize: '1rem', padding: '6px 18px', marginBottom: 'var(--spacing-md)' }}>{t('home.wrapNotice')}</span>
<h1 className="hero-title">
<span className="highlight">PyCon</span> Cameroon 2026
</h1>
Expand All @@ -43,11 +44,11 @@ const Home = () => {
</div>

<div className="hero-buttons">
<Link to={l('/agenda')} className="btn btn-primary btn-lg">
<CalendarDays size="1em" style={{ verticalAlign: '-0.125em' }} /> {t('home.viewAgenda')}
<Link to={l('/report')} className="btn btn-primary btn-lg">
<FileText size="1em" style={{ verticalAlign: '-0.125em' }} /> {t('home.viewReport')}
</Link>
<Link to={l('/attend')} className="btn btn-secondary btn-lg">
<Ticket size="1em" style={{ verticalAlign: '-0.125em' }} /> {t('home.getYourTicket')}
<Link to={l('/agenda')} className="btn btn-secondary btn-lg">
<CalendarDays size="1em" style={{ verticalAlign: '-0.125em' }} /> {t('home.viewAgenda')}
</Link>
</div>
</div>
Expand Down Expand Up @@ -224,13 +225,13 @@ const Home = () => {
<section className="section" id="home-cta"
style={{ background: 'linear-gradient(135deg, var(--color-orange) 0%, var(--color-red) 100%)' }}>
<div className="container text-center">
<h2 style={{ color: 'white', marginBottom: 'var(--spacing-sm)' }}>{t('home.readyToJoin')}</h2>
<h2 style={{ color: 'white', marginBottom: 'var(--spacing-sm)' }}>{t('home.wrapTitle')}</h2>
<p style={{ color: 'rgba(255,255,255,0.9)', fontSize: '1.25rem', marginBottom: 'var(--spacing-md)' }}>
{t('home.readyToJoinText')}
{t('home.wrapText')}
</p>
<div className="flex justify-center gap-sm flex-wrap">
<Link to={l('/attend')} className="btn btn-lg" style={{ background: 'white', color: 'var(--color-orange)' }}>
{t('home.getYourTicket')}
<Link to={l('/report')} className="btn btn-lg" style={{ background: 'white', color: 'var(--color-orange)' }}>
{t('home.viewReport')}
</Link>
<a href={sponsorshipDeckUrl} target="_blank" rel="noopener noreferrer" className="btn btn-lg btn-secondary" style={{ borderColor: 'white', color: 'white' }}>
{t('home.sponsorshipDeck')}
Expand Down
Loading