From a9520c6c1181d6e2782e09bf2083ac58258bca2c Mon Sep 17 00:00:00 2001 From: ginifizz Date: Fri, 12 Jun 2026 15:17:46 +0200 Subject: [PATCH 1/3] a11y(con): add image alt text and semantic landmarks --- .../2025/call-for-papers/components/logos.tsx | 20 +++++++++---------- .../2026/call-for-papers/components/logos.tsx | 20 +++++++++---------- .../[edition]/conferences/ConferencesPage.tsx | 1 + .../[slug]/components/ConferenceSpeaker.tsx | 6 +++++- .../schedule/components/SlotAvatar.tsx | 2 +- .../[edition]/speakers/[slug]/SpeakerPage.tsx | 7 ++++++- pwa/components/con/home/LastEdition.tsx | 2 +- pwa/components/con/layout/Footer.tsx | 4 ++-- pwa/components/con/layout/LayoutBase.tsx | 2 +- pwa/components/con/review/ReviewItem.tsx | 2 +- pwa/components/con/speakers/SpeakerImage.tsx | 5 ++++- .../con/speakers/SpeakerImage2025.tsx | 2 +- pwa/components/con/speakers/SpeakerItem.tsx | 2 +- 13 files changed, 44 insertions(+), 31 deletions(-) diff --git a/pwa/app/(con)/[locale]/con/2025/call-for-papers/components/logos.tsx b/pwa/app/(con)/[locale]/con/2025/call-for-papers/components/logos.tsx index 2892dd64a..0c1494354 100644 --- a/pwa/app/(con)/[locale]/con/2025/call-for-papers/components/logos.tsx +++ b/pwa/app/(con)/[locale]/con/2025/call-for-papers/components/logos.tsx @@ -1,16 +1,16 @@ export function Logos() { return ( <> - - - - - - - - - - + API Platform + Caddy + Elastic + FrankenPHP + JavaScript + Laravel + PHP + RabbitMQ + React Admin + Xdebug ); } diff --git a/pwa/app/(con)/[locale]/con/2026/call-for-papers/components/logos.tsx b/pwa/app/(con)/[locale]/con/2026/call-for-papers/components/logos.tsx index 2892dd64a..0c1494354 100644 --- a/pwa/app/(con)/[locale]/con/2026/call-for-papers/components/logos.tsx +++ b/pwa/app/(con)/[locale]/con/2026/call-for-papers/components/logos.tsx @@ -1,16 +1,16 @@ export function Logos() { return ( <> - - - - - - - - - - + API Platform + Caddy + Elastic + FrankenPHP + JavaScript + Laravel + PHP + RabbitMQ + React Admin + Xdebug ); } diff --git a/pwa/app/(con)/[locale]/con/[edition]/conferences/ConferencesPage.tsx b/pwa/app/(con)/[locale]/con/[edition]/conferences/ConferencesPage.tsx index c045ab311..26d9df1da 100644 --- a/pwa/app/(con)/[locale]/con/[edition]/conferences/ConferencesPage.tsx +++ b/pwa/app/(con)/[locale]/con/[edition]/conferences/ConferencesPage.tsx @@ -206,6 +206,7 @@ export default function SpeakerPageListTemplate({ ); diff --git a/pwa/app/(con)/[locale]/con/[edition]/conferences/[slug]/components/ConferenceSpeaker.tsx b/pwa/app/(con)/[locale]/con/[edition]/conferences/[slug]/components/ConferenceSpeaker.tsx index 1da303875..bba614dc9 100644 --- a/pwa/app/(con)/[locale]/con/[edition]/conferences/[slug]/components/ConferenceSpeaker.tsx +++ b/pwa/app/(con)/[locale]/con/[edition]/conferences/[slug]/components/ConferenceSpeaker.tsx @@ -51,7 +51,11 @@ const ConferenceSpeaker = ({ conference }: SpeakerProps) => { placeholder={placeholder} /> ) : ( - + )} diff --git a/pwa/app/(con)/[locale]/con/[edition]/schedule/components/SlotAvatar.tsx b/pwa/app/(con)/[locale]/con/[edition]/schedule/components/SlotAvatar.tsx index c5280d042..75c7c7779 100644 --- a/pwa/app/(con)/[locale]/con/[edition]/schedule/components/SlotAvatar.tsx +++ b/pwa/app/(con)/[locale]/con/[edition]/schedule/components/SlotAvatar.tsx @@ -48,7 +48,7 @@ export default function Avatar({ ) : ( ) : ( - + )}
diff --git a/pwa/components/con/home/LastEdition.tsx b/pwa/components/con/home/LastEdition.tsx index 1b5a0c176..c2ad383cd 100644 --- a/pwa/components/con/home/LastEdition.tsx +++ b/pwa/components/con/home/LastEdition.tsx @@ -44,7 +44,7 @@ export default function LastEdition({ diff --git a/pwa/components/con/layout/Footer.tsx b/pwa/components/con/layout/Footer.tsx index f5cb53094..7a7f37726 100644 --- a/pwa/components/con/layout/Footer.tsx +++ b/pwa/components/con/layout/Footer.tsx @@ -21,7 +21,7 @@ export default function Footer({ }: FooterProps) { const { t, locale } = useContext(LanguageContext); return ( -
+
@@ -126,6 +126,6 @@ export default function Footer({
-
+
); } diff --git a/pwa/components/con/layout/LayoutBase.tsx b/pwa/components/con/layout/LayoutBase.tsx index d6fc08821..c31db44b5 100644 --- a/pwa/components/con/layout/LayoutBase.tsx +++ b/pwa/components/con/layout/LayoutBase.tsx @@ -25,7 +25,7 @@ export default function LayoutBase({
diff --git a/pwa/app/(con)/[locale]/con/2026/layout.tsx b/pwa/app/(con)/[locale]/con/2026/layout.tsx index 8d4c9125f..19f1b2944 100644 --- a/pwa/app/(con)/[locale]/con/2026/layout.tsx +++ b/pwa/app/(con)/[locale]/con/2026/layout.tsx @@ -5,8 +5,10 @@ import nav from "data/con/2026/nav"; import footer from "data/con/2026/footer"; import { Metadata } from "next"; import { getEditionEventData } from "utils/con"; -import { i18n } from "i18n/i18n-config"; +import { i18n, Locale } from "i18n/i18n-config"; import { getRootUrl } from "utils"; +import { getAllSpeakers } from "api/con/speakers"; +import { getAllConferences } from "api/con/conferences"; type Props = { params: { edition: string; locale: string }; @@ -38,8 +40,17 @@ export async function generateMetadata({ params }: Props): Promise { }; } -function EditionLayout({ children }: { children: React.ReactNode }) { - const eventData = getEditionEventData("2026"); +async function EditionLayout({ + children, + params, +}: { + children: React.ReactNode; + params: { locale: string }; +}) { + const locale = (params?.locale || i18n.defaultLocale) as Locale; + const speakers = await getAllSpeakers("2026", locale); + const talks = await getAllConferences("2026", true, locale); + const eventData = getEditionEventData("2026", speakers, talks); return (