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:
@@ -123,6 +123,7 @@ interface GalleryYaml {
|
||||
hero?: string | string[];
|
||||
albums?: string[];
|
||||
exifOnHover?: boolean;
|
||||
map?: boolean;
|
||||
theme?:
|
||||
| string
|
||||
| {
|
||||
@@ -236,6 +237,8 @@ export interface AppConfig {
|
||||
theme: ThemeConfig;
|
||||
/** Footer social links config. */
|
||||
footer: FooterConfig | null;
|
||||
/** Show the /map page. Default: false. */
|
||||
map: boolean;
|
||||
cacheTtl: number;
|
||||
rateLimitRpm: number;
|
||||
}
|
||||
@@ -392,6 +395,7 @@ export function getConfig(): AppConfig {
|
||||
website: gallery.footer.website,
|
||||
}
|
||||
: null,
|
||||
map: gallery.map === true,
|
||||
cacheTtl: env.CACHE_TTL * 1000,
|
||||
rateLimitRpm: env.RATE_LIMIT_RPM,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user