feat(home): rebuild the landing page on a shared panel system
The homepage mixed four different translucent washes (surface 44-60% plus a backdrop-filter each), rendered the same four counters twice, and showed a dangling "Welcome to " eyebrow because the localized string expected the hotel name. A missing theme wallpaper replaced the whole sky gradient with flat white, and stale CMS image references produced broken images and 404s. Replace the ad-hoc panels with one opaque, theme-derived `.panel` token set (surface, border, shadow, header, radius) and a `.panel-float` variant for the counter strip that straddles the hero edge. The strip is now the single home of the four headline counters; a failed read renders "unavailable" instead of silently dropping a cell. Add the fourth feature card (Games) that already had translated copy, link recent users to their profiles, and fall back to themed placeholders for news covers and camera photos without an upload. Add `pages.home.heroEyebrow` to all 25 locales, layer the CMS wallpaper over `--site-bg-gradient` instead of replacing it, and keep the sky in dark mode. Add `publicAssetExists` so local uploads that no longer exist are skipped (wallpaper, help topics) rather than rendered broken. Fix the `/help` topic icons to use the `/assets/images/help-center/` base the detail page already used. Throttle the spotlight glow to one update per animation frame, drop the dead `.glass-chip` rules, define the missing `.panel-float`, and fix the stat divider and reduced-motion selectors. Stat labels use the readable text token so they clear WCAG AA, and the language button's accessible name now contains its visible label. Verified: tsc, biome, 3590 unit tests, i18n audit unchanged, axe 0 violations at 390/768/1024/1280/1440 in light and dark, quality e2e 16/16.
This commit is contained in:
1 parent
ecd8e5852c
commit
97454f361b
35 files changed
+933
-659
No files matched your search
@@ -5353,6 +5353,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Welcome to {hotelName}",
|
||||
"heroEyebrow": "أهلاً بك",
|
||||
"welcomeSubtitle": "Your retro hotel, now powered by Next.js",
|
||||
"welcomeBody": "Hang out, collect furni, and meet friends.",
|
||||
"enterHotel": "Enter {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Добре дошли в {hotelName}",
|
||||
"heroEyebrow": "Добре дошли",
|
||||
"welcomeSubtitle": "Вашият ретро хотел, сега захранван от Next.js",
|
||||
"welcomeBody": "Излизайте, събирайте мебели и се срещайте с приятели.",
|
||||
"enterHotel": "Въведете {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Vítejte v {hotelName}",
|
||||
"heroEyebrow": "Vítejte",
|
||||
"welcomeSubtitle": "Váš retro hotel, nyní poháněný Next.js",
|
||||
"welcomeBody": "Setkejte se, sbírejte nábytek a setkejte se s přáteli.",
|
||||
"enterHotel": "Zadejte {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Velkommen til {hotelName}",
|
||||
"heroEyebrow": "Velkommen",
|
||||
"welcomeSubtitle": "Dit retrohotel, nu drevet af Next.js",
|
||||
"welcomeBody": "Hæng ud, saml møbler og mød venner.",
|
||||
"enterHotel": "Indtast {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Willkommen bei {hotelName}",
|
||||
"heroEyebrow": "Willkommen",
|
||||
"welcomeSubtitle": "Dein Retro-Hotel, jetzt mit Next.js",
|
||||
"welcomeBody": "Abhängen, Möbel sammeln und Freunde treffen.",
|
||||
"enterHotel": "{hotelName} betreten",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Καλώς ήρθατε στο {hotelName}",
|
||||
"heroEyebrow": "Καλώς ήρθατε",
|
||||
"welcomeSubtitle": "Το ρετρό ξενοδοχείο σας, τώρα με την υποστήριξη του Next.js",
|
||||
"welcomeBody": "Κάντε παρέα, μαζέψτε έπιπλα και συναντήστε φίλους.",
|
||||
"enterHotel": "Εισαγάγετε {hotelName}",
|
||||
|
||||
@@ -278,6 +278,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Welcome to {hotelName}",
|
||||
"heroEyebrow": "Welcome",
|
||||
"welcomeSubtitle": "Your retro hotel, now powered by Next.js",
|
||||
"welcomeBody": "Hang out, collect furni, and meet friends.",
|
||||
"enterHotel": "Enter {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Bienvenido a {hotelName}",
|
||||
"heroEyebrow": "Bienvenido",
|
||||
"welcomeSubtitle": "Tu hotel retro, ahora impulsado por Next.js",
|
||||
"welcomeBody": "Pasa el rato, colecciona furni y conoce amigos.",
|
||||
"enterHotel": "Entrar a {hotelName}",
|
||||
|
||||
@@ -5353,6 +5353,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Welcome to {hotelName}",
|
||||
"heroEyebrow": "Tervetuloa",
|
||||
"welcomeSubtitle": "Your retro hotel, now powered by Next.js",
|
||||
"welcomeBody": "Hang out, collect furni, and meet friends.",
|
||||
"enterHotel": "Enter {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Bienvenue sur {hotelName}",
|
||||
"heroEyebrow": "Bienvenue",
|
||||
"welcomeSubtitle": "Votre hôtel rétro, désormais propulsé par Next.js",
|
||||
"welcomeBody": "Traînez, collectionnez des meubles et rencontrez des amis.",
|
||||
"enterHotel": "Entrer dans {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Dobro došli u {hotelName}",
|
||||
"heroEyebrow": "Dobrodošli",
|
||||
"welcomeSubtitle": "Vaš retro hotel, sada pokreće Next.js",
|
||||
"welcomeBody": "Družite se, skupljajte namještaj i upoznajte prijatelje.",
|
||||
"enterHotel": "Unesite {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Üdvözöljük itt: {hotelName}",
|
||||
"heroEyebrow": "Üdvözöljük",
|
||||
"welcomeSubtitle": "Az Ön retro szállodája, amelyet most a Next.js üzemeltet",
|
||||
"welcomeBody": "Tárcsázz, gyűjts bútorokat és találkozz barátokkal.",
|
||||
"enterHotel": "Írja be a következőt: {hotelName}",
|
||||
|
||||
@@ -274,6 +274,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Benvenuto su {hotelName}",
|
||||
"heroEyebrow": "Benvenuto",
|
||||
"welcomeSubtitle": "Il tuo hotel retrò, ora con tecnologia Next.js",
|
||||
"welcomeBody": "Rilassati, colleziona furni e fai nuove amicizie.",
|
||||
"enterHotel": "Entra in {hotelName}",
|
||||
|
||||
@@ -5353,6 +5353,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Welcome to {hotelName}",
|
||||
"heroEyebrow": "ようこそ",
|
||||
"welcomeSubtitle": "Your retro hotel, now powered by Next.js",
|
||||
"welcomeBody": "Hang out, collect furni, and meet friends.",
|
||||
"enterHotel": "Enter {hotelName}",
|
||||
|
||||
@@ -274,6 +274,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Welkom bij {hotelName}",
|
||||
"heroEyebrow": "Welkom",
|
||||
"welcomeSubtitle": "Je retro hotel, nu mogelijk gemaakt door Next.js",
|
||||
"welcomeBody": "Rondhangen, meubels verzamelen en vrienden ontmoeten.",
|
||||
"enterHotel": "{hotelName} betreden",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Velkommen til {hotelName}",
|
||||
"heroEyebrow": "Velkommen",
|
||||
"welcomeSubtitle": "Ditt retrohotell, nå drevet av Next.js",
|
||||
"welcomeBody": "Heng med, samle møbler og møt venner.",
|
||||
"enterHotel": "Skriv inn {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Witamy w {hotelName}",
|
||||
"heroEyebrow": "Witamy",
|
||||
"welcomeSubtitle": "Twój hotel w stylu retro, teraz obsługiwany przez Next.js",
|
||||
"welcomeBody": "Spędzaj czas, zbieraj meble i spotykaj się z przyjaciółmi.",
|
||||
"enterHotel": "Wpisz {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Bem-vindo ao {hotelName}",
|
||||
"heroEyebrow": "Bem-vindo",
|
||||
"welcomeSubtitle": "Seu hotel retrô, agora com tecnologia Next.js",
|
||||
"welcomeBody": "Saia, colete mobis e encontre amigos.",
|
||||
"enterHotel": "Digite {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Bun venit la {hotelName}",
|
||||
"heroEyebrow": "Bine ai venit",
|
||||
"welcomeSubtitle": "Hotelul tău retro, acum dezvoltat de Next.js",
|
||||
"welcomeBody": "Ieșiți, strângeți mobilier și întâlniți-vă cu prietenii.",
|
||||
"enterHotel": "Introdu {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Добро пожаловать в {hotelName}",
|
||||
"heroEyebrow": "Добро пожаловать",
|
||||
"welcomeSubtitle": "Ваш ретро-отель на базе Next.js",
|
||||
"welcomeBody": "Тусуйтесь, собирайте мебель и встречайтесь с друзьями.",
|
||||
"enterHotel": "Введите {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Vitajte v {hotelName}",
|
||||
"heroEyebrow": "Vitajte",
|
||||
"welcomeSubtitle": "Váš retro hotel, ktorý teraz používa Next.js",
|
||||
"welcomeBody": "Stretnite sa, zbierajte nábytok a stretávajte sa s priateľmi.",
|
||||
"enterHotel": "Zadajte {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Добро дошли у {hotelName}",
|
||||
"heroEyebrow": "Добродошли",
|
||||
"welcomeSubtitle": "Your retro hotel, now powered by Next.js",
|
||||
"welcomeBody": "Hang out, collect furni, and meet friends.",
|
||||
"enterHotel": "Унесите {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Välkommen till {hotelName}",
|
||||
"heroEyebrow": "Välkommen",
|
||||
"welcomeSubtitle": "Ditt retrohotell, nu drivs av Next.js",
|
||||
"welcomeBody": "Umgås, samla möbler och träffa vänner.",
|
||||
"enterHotel": "Ange {hotelName}",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "{hotelName}'e hoş geldiniz",
|
||||
"heroEyebrow": "Hoş geldiniz",
|
||||
"welcomeSubtitle": "Retro oteliniz artık Next.js tarafından destekleniyor",
|
||||
"welcomeBody": "Takılın, mobilya toplayın ve arkadaşlarla tanışın.",
|
||||
"enterHotel": "{hotelName} girin",
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Ласкаво просимо до {hotelName}",
|
||||
"heroEyebrow": "Ласкаво просимо",
|
||||
"welcomeSubtitle": "Ваш ретро-готель, тепер на базі Next.js",
|
||||
"welcomeBody": "Гуляйте, збирайте меблі та зустрічайтеся з друзями.",
|
||||
"enterHotel": "Введіть {hotelName}",
|
||||
|
||||
Reference in new issue
Block a user