feat: add smart map view with location-level clustering

- /map page with Leaflet (CartoDB dark tiles)
- Photos clustered by city/country (not per-photo)
- /api/map endpoint with encrypted cover asset IDs
- Configurable via gallery.yaml (map: true/false)
- Conditional nav link in header
- CSP updated for Leaflet CDN and tile servers
- Theme-aware popups with cover thumbnails and album links
This commit is contained in:
ralksta
2026-02-15 23:07:04 +01:00
parent 424f7558c6
commit 62a7b178d6
13 changed files with 555 additions and 3 deletions

View File

@@ -38,7 +38,8 @@ export const metadata: Metadata = {
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
const { theme } = getConfig();
const config = getConfig();
const { theme } = config;
const fontsUrl = getGoogleFontsUrl(theme);
// Inject theme values as CSS custom properties
@@ -78,6 +79,11 @@ export default function RootLayout({ children }: { children: React.ReactNode })
<Link href="/about" className="header__nav-link">
About
</Link>
{config.map && (
<Link href="/map" className="header__nav-link">
Map
</Link>
)}
<ThemeToggle />
</nav>
</header>