feat: enhance routing with dedicated error pages, improve navigation handling, and add internal path checks

This commit is contained in:
2026-05-06 13:37:28 +02:00
parent 11c299310c
commit 575e2b4779
6 changed files with 88 additions and 47 deletions
+15 -5
View File
@@ -8,7 +8,7 @@ Sito web moderno e responsivo sviluppato con **Svelte + Vite** per presentare se
- 📱 **Design completamente responsivo**
- ⬆️ **Navbar collapsibile** con hide/show al scroll
- 🎨 **Sistema di componenti riusabili**
- 🚀 **Routing client-side** con pagine di errore dedicate
- 🚀 **Routing client-side** con pagine dedicate e fallback 404
-**Accessibilità** e buone pratiche web
## 🛠️ Requisiti
@@ -58,16 +58,19 @@ src/
## 🗺️ Routing
Il routing è gestito in `src/App.svelte` tramite `window.location.pathname`.
Il routing è gestito in `src/App.svelte` leggendo `window.location.pathname` e reagendo ai cambi di History API.
| Route | Componente | Descrizione |
|-------|-----------|-------------|
| `/` | `Hero` + `Services` | Home page |
| `/contatti`, `/contacts` | `Contacts` | Pagina contatti |
| `/403` | `Forbidden` | Accesso negato |
| `/404` | `NotFound` | Pagina non trovata |
| `/500` | `ServerError` | Errore server |
| `/errore` | `ErrorGeneric` | Errore generico |
| `/*` | `NotFound` | Pagina non trovata (404) |
| qualsiasi altra route | `NotFound` | Fallback 404 per pagine non ancora create |
Le voci della navbar puntano a route reali come `/servizi`, `/metodo`, `/progetti` e `/chi-siamo`: se una pagina non esiste ancora, il contenuto mostrato è il 404 ma l'URL resta quello richiesto.
## 🎨 Tema e Stili
@@ -141,19 +144,24 @@ Componente button/link riusabile con tema integrato.
- `href` - se presente, renderizza come `<a>` tag
- `borderWidth` - spessore bordo interno (default: `'0px'`)
Se `href` punta a una route interna, il click usa la navigazione client-side e aggiorna il contenuto senza ricaricare la pagina.
### Header
Navbar sticky che si nascondi al scroll verso il basso e riappare al scroll verso l'alto.
Navbar sticky che si nasconde al scroll verso il basso e riappare al scroll verso l'alto.
Le voci della navbar usano route interne. Le pagine non ancora create devono restituire 404.
Modifica il contenuto in `src/components/Header/Header.svelte`.
### ThemeToggle
Pulsante per switchare tra tema light e dark. Il tema viene salvato in `localStorage`.
Pulsante per switchare tra tema light e dark. Il tema viene salvato in `localStorage` e come backup in cookie, così resta disponibile anche dopo operazioni che puliscono parte dello storage del browser.
## 📱 Modificare i contenuti
- **Header/Navigazione:** `src/components/Header/Header.svelte`
- **Routing e redirect:** `src/App.svelte`, `src/lib/navigation.js`, `src/lib/errorRouting.js`
- **Sezione hero:** `src/components/Hero/Hero.svelte`
- **Servizi:** `src/components/Services/Services.svelte`
- **Footer:** `src/components/Footer/Footer.svelte`
@@ -181,6 +189,8 @@ const getRoute = (path) => {
<MyPage />
```
Se non aggiungi la route in `getRoute`, il path continuerà a mostrare il fallback 404.
## 🚀 Build e Deploy
### Build di produzione