feat(client): add app skeleton with routing, state and i18n

Add vue-router routes with accessible navigation (document title + focus management), Pinia session store, vue-i18n (PL/EN) and the default layout. Replace the landing page with routed views and remove the old MainView.
This commit is contained in:
Rafał Tyński
2026-10-04 04:04:35 +02:00
parent 92a904b8a9
commit 804ad617ad
18 changed files with 728 additions and 239 deletions
+94
View File
@@ -0,0 +1,94 @@
export const pl = {
app: {
name: 'TarninaHub',
tagline: 'Małopolski Hub Innowacji Społecznych',
skipLink: 'Przejdź do treści głównej',
footer: 'TarninaHub — Małopolski Hub Innowacji Społecznych · Projekt hackathonowy',
},
nav: {
label: 'Menu główne',
home: 'Strona główna',
submissions: 'Zgłoś potrzebę',
matchmaking: 'Dopasuj rozwiązanie',
knowledge: 'Zasobnik wiedzy',
ideas: 'Kreator pomysłów',
tester: 'Tester innowacji',
communication: 'Komunikacja',
partners: 'Partnerstwa',
panel: 'Panel',
login: 'Zaloguj się',
logout: 'Wyloguj się',
openMenu: 'Otwórz menu główne',
},
theme: {
label: 'Motyw',
change: 'Zmień motyw',
light: 'Jasny',
dark: 'Ciemny',
highContrast: 'Wysoki kontrast',
system: 'Systemowy',
},
a11y: {
prefsLabel: 'Ustawienia dostępności',
fontScale: 'Rozmiar tekstu',
fontIncrease: 'Powiększ tekst',
fontDecrease: 'Pomniejsz tekst',
fontReset: 'Przywróć domyślny rozmiar tekstu',
},
common: {
loading: 'Ładowanie…',
close: 'Zamknij',
retry: 'Spróbuj ponownie',
backHome: 'Wróć na stronę główną',
errorTitle: 'Wystąpił problem',
},
home: {
heroTitle: 'Dobre pomysły nie mogą pozostać niezauważone',
heroLead:
'TarninaHub łączy potrzeby mieszkańców Małopolski z wiedzą, sprawdzonymi rozwiązaniami i ludźmi gotowymi do działania. Wspólnie sprawiamy, by wartościowe inicjatywy społeczne trafiały tam, gdzie są najbardziej potrzebne.',
ctaHow: 'Zobacz, jak to działa',
ctaAudience: 'Dla kogo jest TarninaHub?',
missionTitle: 'Nasza misja',
missionText:
'Chcemy, aby żadna wartościowa inicjatywa społeczna nie przepadła z powodu braku informacji, kontaktu lub wsparcia. Technologia ma skracać drogę od pomysłu do działania i ułatwiać współpracę między mieszkańcami, instytucjami i organizacjami społecznymi.',
howTitle: 'Jak to działa?',
steps: {
submit: {
title: 'Zgłoś potrzebę',
text: 'Opisz problem społeczny krótkim zgłoszeniem — bez formalności, prostym językiem.',
},
solve: {
title: 'Znajdź rozwiązanie',
text: 'Zobacz sprawdzone inicjatywy i wiedzę dopasowaną do Twojej lokalizacji i tematu.',
},
act: {
title: 'Połącz siły',
text: 'Zaproś mieszkańców, instytucje i organizacje, a następnie wspólnie zrealizujcie projekt.',
},
},
audienceTitle: 'Dla kogo?',
features: {
residents: {
title: 'Potrzeby mieszkańców',
text: 'Mieszkańcy i lokalne społeczności zgłaszają realne problemy: dostęp do opieki, transport, wsparcie seniorów, aktywizację młodzieży.',
},
solutions: {
title: 'Sprawdzone rozwiązania',
text: 'Baza wiedzy i gotowych pomysłów, które zadziałały w innych gminach, instytucjach i organizacjach społecznych.',
},
people: {
title: 'Ludzie gotowi do działania',
text: 'Łączymy wolontariuszy, ekspertów, NGOs i samorządy, aby wspólnie wdrażać wartościowe inicjatywy.',
},
},
},
placeholder: {
text: 'Ten moduł jest w przygotowaniu. Wróć wkrótce.',
},
notFound: {
title: 'Nie znaleziono strony',
text: 'Podany adres nie istnieje lub został przeniesiony.',
},
}
export type Messages = typeof pl