diff --git a/README.md b/README.md index 87aef8a..fa003f3 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,113 @@ hugo server -D hugo --minify ``` +## PARCOURSMOB Integration + +This website is designed to be served by **PARCOURSMOB**, COOPGO's inclusive mobility platform. PARCOURSMOB acts as a reverse proxy that serves Hugo static files and dynamically hydrates journey search data. + +### Architecture + +``` +┌─────────────┐ ┌──────────────┐ ┌─────────────┐ +│ Browser │────▶│ PARCOURSMOB │────▶│ Hugo Build │ +│ │◀────│ (Go app) │◀────│ (static) │ +└─────────────┘ └──────────────┘ └─────────────┘ + │ + ▼ + ┌──────────────┐ + │ APIs │ + │ - Transit │ + │ - Carpool │ + │ - Vehicles │ + │ - Knowledge │ + └──────────────┘ +``` + +### Data Hydration + +PARCOURSMOB injects search data into the page via the global variable `window.__PARCOURSMOB_DATA__`. This variable contains: + +```javascript +window.__PARCOURSMOB_DATA__ = { + searched: true, // Search was performed + departure: { /* GeoJSON Feature */ }, + destination: { /* GeoJSON Feature */ }, + departure_date: "2024-01-15", + departure_time: "08:30", + results: { + public_transit: { + number: 3, + results: [ /* OTP itineraries */ ] + }, + carpools: { + number: 2, + results: [ /* RDEX/OCSS carpools */ ] + }, + solidarity_drivers: { + number: 5 + }, + organized_carpools: { + number: 2 + }, + vehicles: { + number: 3, + results: [ /* Available vehicles */ ] + }, + local_solutions: { + number: 4, + results: [ /* Knowledge base solutions */ ] + } + } +}; +``` + +### Dynamic Pages + +#### Search Page (`/recherche/`) + +The search form sends the following parameters: +- `departure`: GeoJSON Feature of departure address (JSON stringified) +- `destination`: GeoJSON Feature of arrival address (JSON stringified) +- `departuredate`: Date in `YYYY-MM-DD` format +- `departuretime`: Time in `HH:MM` format + +Address autocomplete uses the French government Address API (`api-adresse.data.gouv.fr`). + +### Alpine.js Components + +The site uses [Alpine.js](https://alpinejs.dev/) for client-side reactivity: + +- `searchBlock()`: Search form management with autocomplete +- `rechercheApp()`: Results display and map interaction + +### MapLibre Map + +The map uses [MapLibre GL JS](https://maplibre.org/) with: +- Self-hosted PMTiles +- Custom markers for departure/arrival +- Journey display (decoded polylines) +- Geographic zones display (local solutions) + +### Configuration + +CTA (Call-to-Action) texts are configurable in the front matter of `/content/recherche/index.md`: + +```yaml +contactCTA: + transit: "To organize your trip..." + carpool: "To organize your trip..." + solidarity: "To organize your trip..." + vehicles: "For more information..." + localSolutions: "For more information..." +localSolutionsText: "Mobi'Pouce, on-demand transport..." +``` + +### Deployment + +1. Build the Hugo site: `hugo --minify` +2. Configure PARCOURSMOB to serve the `public/` folder +3. PARCOURSMOB intercepts requests to `/recherche/` and injects data + ## License This project is licensed under the **AGPLv3** (GNU Affero General Public License v3.0). diff --git a/content/recherche/index.md b/content/recherche/index.md new file mode 100644 index 0000000..6fd8498 --- /dev/null +++ b/content/recherche/index.md @@ -0,0 +1,12 @@ +--- +title: "Rechercher un trajet" +headline: "Trouvez votre solution de mobilité" +layout: recherche +contactCTA: + transit: "Pour organiser votre déplacement, vous pouvez aussi appeler la Maison de la Mobilité Solidaire au" + carpool: "Pour organiser votre déplacement, vous pouvez aussi appeler la Maison de la Mobilité Solidaire au" + solidarity: "Pour organiser votre déplacement, appelez la Maison de la Mobilité Solidaire au" + vehicles: "Pour en savoir plus et réserver un véhicule, appelez la Maison de la Mobilité Solidaire au" + localSolutions: "Pour plus d'informations et pour organiser votre déplacement, appelez la Maison de la Mobilité Solidaire au" +localSolutionsText: "Mobi'Pouce, transport à la demande, location de vélos, service de taxi gratuit... De nombreuses solutions existent sur le territoire." +--- diff --git a/static/maps/protomaps-light.json b/static/maps/protomaps-light.json new file mode 100644 index 0000000..0fce8d0 --- /dev/null +++ b/static/maps/protomaps-light.json @@ -0,0 +1,11818 @@ +{ + "version": 8, + "sources": { + "protomaps": { + "type": "vector", + "url": "pmtiles://https://coopgo-gis-data.s3.fr-par.scw.cloud/vector-tiles/pmtiles/planet.pmtiles" + } + }, + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "#cccccc" + } + }, + { + "id": "earth", + "type": "fill", + "filter": [ + "==", + "$type", + "Polygon" + ], + "source": "protomaps", + "source-layer": "earth", + "paint": { + "fill-color": "#e2dfda" + } + }, + { + "id": "landcover", + "type": "fill", + "source": "protomaps", + "source-layer": "landcover", + "paint": { + "fill-color": [ + "match", + [ + "get", + "kind" + ], + "grassland", + "rgba(210, 239, 207, 1)", + "barren", + "rgba(255, 243, 215, 1)", + "urban_area", + "rgba(230, 230, 230, 1)", + "farmland", + "rgba(216, 239, 210, 1)", + "glacier", + "rgba(255, 255, 255, 1)", + "scrub", + "rgba(234, 239, 210, 1)", + "rgba(196, 231, 210, 1)" + ], + "fill-opacity": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 5, + 1, + 7, + 0 + ] + } + }, + { + "id": "landuse_park", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "national_park", + "park", + "cemetery", + "protected_area", + "nature_reserve", + "forest", + "golf_course", + "wood", + "nature_reserve", + "forest", + "scrub", + "grassland", + "grass", + "military", + "naval_base", + "airfield" + ], + "paint": { + "fill-opacity": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 6, + 0, + 11, + 1 + ], + "fill-color": [ + "case", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "national_park", + "park", + "cemetery", + "protected_area", + "nature_reserve", + "forest", + "golf_course" + ] + ] + ], + "#9cd3b4", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "wood", + "nature_reserve", + "forest" + ] + ] + ], + "#a0d9a0", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "scrub", + "grassland", + "grass" + ] + ] + ], + "#99d2bb", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "glacier" + ] + ] + ], + "#e7e7e7", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "sand" + ] + ] + ], + "#e2e0d7", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "military", + "naval_base", + "airfield" + ] + ] + ], + "#c6dcdc", + "#e2dfda" + ] + } + }, + { + "id": "landuse_urban_green", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "allotments", + "village_green", + "playground" + ], + "paint": { + "fill-color": "#9cd3b4", + "fill-opacity": 0.7 + } + }, + { + "id": "landuse_hospital", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "==", + "kind", + "hospital" + ], + "paint": { + "fill-color": "#e4dad9" + } + }, + { + "id": "landuse_industrial", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "==", + "kind", + "industrial" + ], + "paint": { + "fill-color": "#d1dde1" + } + }, + { + "id": "landuse_school", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "school", + "university", + "college" + ], + "paint": { + "fill-color": "#e4ded7" + } + }, + { + "id": "landuse_beach", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "beach" + ], + "paint": { + "fill-color": "#e8e4d0" + } + }, + { + "id": "landuse_zoo", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "zoo" + ], + "paint": { + "fill-color": "#c6dcdc" + } + }, + { + "id": "landuse_aerodrome", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "aerodrome" + ], + "paint": { + "fill-color": "#dadbdf" + } + }, + { + "id": "roads_runway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "==", + "kind_detail", + "runway" + ], + "paint": { + "line-color": "#e9e9ed", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 10, + 0, + 12, + 4, + 18, + 30 + ] + } + }, + { + "id": "roads_taxiway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": [ + "==", + "kind_detail", + "taxiway" + ], + "paint": { + "line-color": "#e9e9ed", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 15, + 6 + ] + } + }, + { + "id": "landuse_runway", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "runway", + "taxiway" + ] + ], + "paint": { + "fill-color": "#e9e9ed" + } + }, + { + "id": "water", + "type": "fill", + "filter": [ + "==", + "$type", + "Polygon" + ], + "source": "protomaps", + "source-layer": "water", + "paint": { + "fill-color": "#80deea" + } + }, + { + "id": "water_stream", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 14, + "filter": [ + "in", + "kind", + "stream" + ], + "paint": { + "line-color": "#80deea", + "line-width": 0.5 + } + }, + { + "id": "water_river", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 9, + "filter": [ + "in", + "kind", + "river" + ], + "paint": { + "line-color": "#80deea", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1, + 18, + 12 + ] + } + }, + { + "id": "landuse_pedestrian", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "pedestrian", + "dam" + ], + "paint": { + "fill-color": "#e3e0d4" + } + }, + { + "id": "landuse_pier", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "==", + "kind", + "pier" + ], + "paint": { + "fill-color": "#e0e0e0" + } + }, + { + "id": "roads_tunnels_other_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "in", + "kind", + "other", + "path" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_tunnels_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "minor_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-dasharray": [ + 3, + 2 + ], + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "has", + "is_link" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-dasharray": [ + 3, + 2 + ], + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_major_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-dasharray": [ + 3, + 2 + ], + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 0.5, + 18, + 13 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_highway_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!has", + "is_link" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-dasharray": [ + 6, + 0.5 + ], + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_tunnels_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "in", + "kind", + "other", + "path" + ] + ], + "paint": { + "line-color": "#d5d5d5", + "line-dasharray": [ + 4.5, + 0.5 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_tunnels_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "minor_road" + ] + ], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_tunnels_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "has", + "is_link" + ] + ], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_tunnels_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_tunnels_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + [ + "get", + "kind" + ], + "highway" + ], + [ + "!", + [ + "has", + "is_link" + ] + ] + ], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "buildings", + "type": "fill", + "source": "protomaps", + "source-layer": "buildings", + "filter": [ + "in", + "kind", + "building", + "building_part" + ], + "paint": { + "fill-color": "#cccccc", + "fill-opacity": 0.5 + } + }, + { + "id": "roads_pier", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "==", + "kind_detail", + "pier" + ], + "paint": { + "line-color": "#e0e0e0", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 0.5, + 20, + 16 + ] + } + }, + { + "id": "roads_minor_service_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ], + [ + "==", + "kind_detail", + "service" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 18, + 8 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 0.8 + ] + } + }, + { + "id": "roads_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ], + [ + "!=", + "kind_detail", + "service" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": [ + "has", + "is_link" + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1.5 + ] + } + }, + { + "id": "roads_major_casing_late", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_highway_casing_late", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!has", + "is_link" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "!=", + "kind_detail", + "pier" + ] + ], + "paint": { + "line-color": "#ebebeb", + "line-dasharray": [ + 3, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "has", + "is_link" + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_minor_service", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ], + [ + "==", + "kind_detail", + "service" + ] + ], + "paint": { + "line-color": "#ebebeb", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 18, + 8 + ] + } + }, + { + "id": "roads_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ], + [ + "!=", + "kind_detail", + "service" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + "#ebebeb", + 16, + "#ffffff" + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_major_casing_early", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "maxzoom": 12, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 0.5, + 18, + 13 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_highway_casing_early", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "maxzoom": 12, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!has", + "is_link" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 1 + ] + } + }, + { + "id": "roads_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!has", + "is_link" + ] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "roads_rail", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "==", + "kind", + "rail" + ], + "paint": { + "line-dasharray": [ + 0.3, + 0.75 + ], + "line-opacity": 0.5, + "line-color": "#a7b1b3", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 6, + 0.15, + 18, + 9 + ] + } + }, + { + "id": "boundaries_country", + "type": "line", + "source": "protomaps", + "source-layer": "boundaries", + "filter": [ + "<=", + "kind_detail", + 2 + ], + "paint": { + "line-color": "#adadad", + "line-width": 0.7, + "line-dasharray": [ + "step", + [ + "zoom" + ], + [ + "literal", + [ + 2 + ] + ], + 4, + [ + "literal", + [ + 2, + 1 + ] + ] + ] + } + }, + { + "id": "boundaries", + "type": "line", + "source": "protomaps", + "source-layer": "boundaries", + "filter": [ + ">", + "kind_detail", + 2 + ], + "paint": { + "line-color": "#adadad", + "line-width": 0.4, + "line-dasharray": [ + "step", + [ + "zoom" + ], + [ + "literal", + [ + 2 + ] + ], + 4, + [ + "literal", + [ + 2, + 1 + ] + ] + ] + } + }, + { + "id": "roads_bridges_other_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_bridges_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "has", + "is_link" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 1.5 + ] + } + }, + { + "id": "roads_bridges_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 0.8 + ] + } + }, + { + "id": "roads_bridges_major_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 0.5, + 18, + 10 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1.5 + ] + } + }, + { + "id": "roads_bridges_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ] + ], + "paint": { + "line-color": "#ebebeb", + "line-dasharray": [ + 2, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_bridges_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_bridges_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "has", + "is_link" + ] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_bridges_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#f5f5f5", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_bridges_highway_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!has", + "is_link" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_bridges_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!has", + "is_link" + ] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "address_label", + "type": "symbol", + "source": "protomaps", + "source-layer": "buildings", + "minzoom": 18, + "filter": [ + "==", + "kind", + "address" + ], + "layout": { + "symbol-placement": "point", + "text-font": [ + "Noto Sans Italic" + ], + "text-field": [ + "get", + "addr_housenumber" + ], + "text-size": 12 + }, + "paint": { + "text-color": "#91888b", + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "water_waterway_label", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "minzoom": 13, + "filter": [ + "in", + "kind", + "river", + "stream" + ], + "layout": { + "symbol-placement": "line", + "text-font": [ + "Noto Sans Italic" + ], + "text-field": [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ], + "text-size": 12, + "text-letter-spacing": 0.2 + }, + "paint": { + "text-color": "#728dd4", + "text-halo-color": "#80deea", + "text-halo-width": 1 + } + }, + { + "id": "roads_labels_minor", + "type": "symbol", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 15, + "filter": [ + "in", + "kind", + "minor_road", + "other", + "path" + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "symbol-placement": "line", + "text-font": [ + "Noto Sans Regular" + ], + "text-field": [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ], + "text-size": 12 + }, + "paint": { + "text-color": "#91888b", + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "water_label_ocean", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "filter": [ + "in", + "kind", + "sea", + "ocean", + "bay", + "strait", + "fjord" + ], + "layout": { + "text-font": [ + "Noto Sans Italic" + ], + "text-field": [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 3, + 10, + 10, + 12 + ], + "text-letter-spacing": 0.1, + "text-max-width": 9, + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#728dd4", + "text-halo-width": 1, + "text-halo-color": "#80deea" + } + }, + { + "id": "earth_label_islands", + "type": "symbol", + "source": "protomaps", + "source-layer": "earth", + "filter": [ + "in", + "kind", + "island" + ], + "layout": { + "text-font": [ + "Noto Sans Italic" + ], + "text-field": [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ], + "text-size": 10, + "text-letter-spacing": 0.1, + "text-max-width": 8 + }, + "paint": { + "text-color": "#8f8f8f", + "text-halo-color": "#e0e0e0", + "text-halo-width": 1 + } + }, + { + "id": "water_label_lakes", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "filter": [ + "in", + "kind", + "lake", + "water" + ], + "layout": { + "text-font": [ + "Noto Sans Italic" + ], + "text-field": [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 3, + 10, + 6, + 12, + 10, + 12 + ], + "text-letter-spacing": 0.1, + "text-max-width": 9 + }, + "paint": { + "text-color": "#728dd4", + "text-halo-color": "#80deea", + "text-halo-width": 1 + } + }, + { + "id": "roads_labels_major", + "type": "symbol", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 11, + "filter": [ + "in", + "kind", + "highway", + "major_road" + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "symbol-placement": "line", + "text-font": [ + "Noto Sans Regular" + ], + "text-field": [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ], + "text-size": 12 + }, + "paint": { + "text-color": "#938a8d", + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "pois", + "type": "symbol", + "source": "protomaps", + "source-layer": "pois", + "filter": [ + "all", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "beach", + "forest", + "marina", + "park", + "peak", + "zoo", + "garden", + "bench", + "aerodrome", + "station", + "bus_stop", + "ferry_terminal", + "stadium", + "university", + "library", + "school", + "animal", + "toilets", + "drinking_water" + ] + ] + ], + [ + ">=", + [ + "zoom" + ], + [ + "+", + [ + "get", + "min_zoom" + ], + 0 + ] + ] + ], + "layout": { + "icon-image": [ + "match", + [ + "get", + "kind" + ], + "station", + "train_station", + [ + "get", + "kind" + ] + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-justify": "auto", + "text-field": [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 17, + 10, + 19, + 16 + ], + "text-max-width": 8, + "text-offset": [ + 1.1, + 0 + ], + "text-variable-anchor": [ + "left", + "right" + ] + }, + "paint": { + "text-color": [ + "case", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "beach", + "forest", + "marina", + "park", + "peak", + "zoo", + "garden", + "bench" + ] + ] + ], + "#20834D", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "aerodrome", + "station", + "bus_stop", + "ferry_terminal" + ] + ] + ], + "#315BCF", + [ + "in", + [ + "get", + "kind" + ], + [ + "literal", + [ + "stadium", + "university", + "library", + "school", + "animal", + "toilets", + "drinking_water" + ] + ] + ], + "#6A5B8F", + "#e2dfda" + ], + "text-halo-color": "#e2dfda", + "text-halo-width": 1 + } + }, + { + "id": "places_subplace", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": [ + "==", + "kind", + "neighbourhood" + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "text-field": [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-max-width": 7, + "text-letter-spacing": 0.1, + "text-padding": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 5, + 2, + 8, + 4, + 12, + 18, + 15, + 20 + ], + "text-size": [ + "interpolate", + [ + "exponential", + 1.2 + ], + [ + "zoom" + ], + 11, + 8, + 14, + 14, + 18, + 24 + ], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#8f8f8f", + "text-halo-color": "#e0e0e0", + "text-halo-width": 1 + } + }, + { + "id": "places_locality", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": [ + "==", + "kind", + "locality" + ], + "layout": { + "icon-image": [ + "step", + [ + "zoom" + ], + "townspot", + 8, + "" + ], + "icon-size": 0.7, + "text-field": [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ], + "text-font": [ + "case", + [ + "<=", + [ + "get", + "min_zoom" + ], + 5 + ], + [ + "literal", + [ + "Noto Sans Medium" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ], + "text-padding": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 5, + 3, + 8, + 7, + 12, + 11 + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 2, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 13 + ], + 8, + [ + ">=", + [ + "get", + "population_rank" + ], + 13 + ], + 13, + 0 + ], + 4, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 13 + ], + 10, + [ + ">=", + [ + "get", + "population_rank" + ], + 13 + ], + 15, + 0 + ], + 6, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 12 + ], + 11, + [ + ">=", + [ + "get", + "population_rank" + ], + 12 + ], + 17, + 0 + ], + 8, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 11 + ], + 11, + [ + ">=", + [ + "get", + "population_rank" + ], + 11 + ], + 18, + 0 + ], + 10, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 9 + ], + 12, + [ + ">=", + [ + "get", + "population_rank" + ], + 9 + ], + 20, + 0 + ], + 15, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 8 + ], + 12, + [ + ">=", + [ + "get", + "population_rank" + ], + 8 + ], + 22, + 0 + ] + ], + "icon-padding": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 0, + 0, + 8, + 4, + 10, + 8, + 12, + 6, + 22, + 2 + ], + "text-justify": "auto", + "text-anchor": [ + "step", + [ + "zoom" + ], + "left", + 8, + "center" + ], + "text-radial-offset": 0.4 + }, + "paint": { + "text-color": "#5c5c5c", + "text-halo-color": "#e0e0e0", + "text-halo-width": 1 + } + }, + { + "id": "places_region", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": [ + "==", + "kind", + "region" + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "text-field": [ + "step", + [ + "zoom" + ], + [ + "get", + "name:short" + ], + 6, + [ + "case", + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "has", + "script" + ], + [ + "case", + [ + "any", + [ + "is-supported-script", + [ + "get", + "name" + ] + ], + [ + "has", + "pgf:name" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {}, + "\n", + {}, + [ + "case", + [ + "all", + [ + "!", + [ + "has", + "name:fr" + ] + ], + [ + "has", + "name:en" + ], + [ + "!", + [ + "has", + "script" + ] + ] + ], + "", + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "get", + "name:en" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {} + ] + ], + [ + "all", + [ + "any", + [ + "has", + "name" + ], + [ + "has", + "pgf:name" + ] + ], + [ + "any", + [ + "has", + "name2" + ], + [ + "has", + "pgf:name2" + ] + ], + [ + "!", + [ + "any", + [ + "has", + "name3" + ], + [ + "has", + "pgf:name3" + ] + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "has", + "script2" + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + [ + "has", + "script" + ], + [ + "has", + "script2" + ], + [ + "has", + "script3" + ] + ], + [ + "format", + [ + "get", + "name:fr" + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "case", + [ + "!", + [ + "has", + "script" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "!", + [ + "has", + "script2" + ] + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script3" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ], + [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "pgf:name3" + ], + [ + "get", + "name3" + ] + ], + {}, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name" + ], + [ + "get", + "name" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + }, + "\n", + {}, + [ + "coalesce", + [ + "get", + "pgf:name2" + ], + [ + "get", + "name2" + ] + ], + { + "text-font": [ + "case", + [ + "==", + [ + "get", + "script2" + ], + "Devanagari" + ], + [ + "literal", + [ + "Noto Sans Devanagari Regular v1" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ] + } + ] + ] + ] + ] + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 3, + 11, + 7, + 16 + ], + "text-radial-offset": 0.2, + "text-anchor": "center", + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#b3b3b3", + "text-halo-color": "#e0e0e0", + "text-halo-width": 1 + } + }, + { + "id": "places_country", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": [ + "==", + "kind", + "country" + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "text-field": [ + "format", + [ + "coalesce", + [ + "get", + "name:fr" + ], + [ + "get", + "name:en" + ] + ], + {} + ], + "text-font": [ + "Noto Sans Medium" + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 2, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 10 + ], + 8, + [ + ">=", + [ + "get", + "population_rank" + ], + 10 + ], + 12, + 0 + ], + 6, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 8 + ], + 10, + [ + ">=", + [ + "get", + "population_rank" + ], + 8 + ], + 18, + 0 + ], + 8, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 7 + ], + 11, + [ + ">=", + [ + "get", + "population_rank" + ], + 7 + ], + 20, + 0 + ] + ], + "icon-padding": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 0, + 2, + 14, + 2, + 16, + 20, + 17, + 2, + 22, + 2 + ], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#a3a3a3", + "text-halo-color": "#e2dfda", + "text-halo-width": 1 + } + } + ], + "sprite": "https://protomaps.github.io/basemaps-assets/sprites/v4/light", + "glyphs": "https://protomaps.github.io/basemaps-assets/fonts/{fontstack}/{range}.pbf" +} diff --git a/themes/mms43/assets/css/main.css b/themes/mms43/assets/css/main.css index 3877a75..67c6e98 100644 --- a/themes/mms43/assets/css/main.css +++ b/themes/mms43/assets/css/main.css @@ -403,6 +403,11 @@ main { outline: 2px solid var(--color-primary); } +.form-group input.input-error { + outline: 2px solid #e53935; + background-color: #ffebee; +} + .swap-btn { display: flex; align-items: center; @@ -741,7 +746,7 @@ main { .conducteur-hero { height: 380px; background-size: cover; - background-position: center; + background-position: top; background-repeat: no-repeat; border-radius: 0 0 35px 35px; } @@ -1358,6 +1363,43 @@ main { line-height: 1.5; } +/* Messages de formulaire */ +.contact-form-message { + padding: 1rem 1.5rem; + border-radius: 10px; + margin-bottom: 1.5rem; + text-align: center; + font-size: 14px; + line-height: 1.5; +} + +.contact-form-success { + background-color: #d4edda; + color: #155724; + border: 1px solid #c3e6cb; +} + +.contact-form-error { + background-color: #f8d7da; + color: #721c24; + border: 1px solid #f5c6cb; +} + +.contact-form-submit:disabled { + opacity: 0.7; + cursor: not-allowed; +} + +.contact-form input:disabled, +.contact-form textarea:disabled { + background-color: #f5f5f5; + cursor: not-allowed; +} + +[x-cloak] { + display: none !important; +} + /* Multicheckboxes */ .contact-form-checkboxes { text-align: left; @@ -2084,3 +2126,799 @@ a { font-size: 16px; } } + +/* Autocomplete */ +.autocomplete-container { + position: relative; +} + +.autocomplete-results { + position: absolute; + top: 100%; + left: 0; + right: 0; + background: var(--color-white); + border-radius: 10px; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15); + max-height: 200px; + overflow-y: auto; + z-index: 100; + list-style: none; + margin-top: 4px; +} + +.autocomplete-results li { + padding: 0.75rem 1rem; + cursor: pointer; + font-size: 14px; + color: var(--color-text); + border-bottom: 1px solid #eee; +} + +.autocomplete-results li:last-child { + border-bottom: none; +} + +.autocomplete-results li:hover { + background-color: #f5f5f5; +} + +[x-cloak] { + display: none !important; +} + +/* Page Recherche */ +.page-recherche { + padding: 2rem; +} + +.page-recherche .search-block { + margin-top: 0; + padding-top: 1rem; + padding-bottom: 1rem; + height: auto; +} + +/* Search Results */ +.search-results-container { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2rem; + max-width: 1328px; + margin: 2rem auto 0; + padding: 0 2rem; + align-items: start; +} + +.search-results-accordions { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.result-accordion { + background-color: var(--color-secondary); + border-radius: 15px; + overflow: hidden; +} + +.accordion-header { + display: flex; + align-items: center; + width: 100%; + padding: 1rem 1.25rem; + background: transparent; + border: none; + cursor: pointer; + font-family: var(--font-family); +} + +.accordion-title { + flex: 1; + text-align: left; + font-size: 16px; + font-weight: 600; + color: var(--color-white); +} + +.accordion-badge { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 28px; + height: 28px; + padding: 0 0.5rem; + background-color: var(--color-highlight); + color: var(--color-white); + font-size: 14px; + font-weight: 700; + border-radius: 14px; + margin-right: 0.75rem; +} + +.accordion-arrow { + width: 24px; + height: 24px; + filter: brightness(0) invert(1); + transition: transform 0.3s ease; + transform: rotate(180deg); +} + +.accordion-arrow.open { + transform: rotate(0deg); +} + +.accordion-content { + background-color: var(--color-white); +} + +.accordion-inner { + padding: 1rem 1.25rem; +} + +.no-result-text { + color: var(--color-text); + font-size: 14px; + font-style: italic; + margin: 0; + text-align: center; +} + +.accordion-cta { + text-align: center; + margin: 1.5rem 1.5rem 0 1.5rem; +} + +.accordion-cta p { + font-size: 16px; + font-weight: 600; + color: #000; + margin: 0 0 0.5rem 0; +} + +.accordion-cta-phone { + display: inline-block; + font-size: 22px; + font-weight: 700; + color: #000; + text-decoration: none; +} + +.accordion-cta-phone:hover { + text-decoration: underline; +} + +/* Transport solidaire result */ +.solidarity-result { + text-align: center; +} + +.solidarity-result p { + margin: 0; + font-size: 16px; + color: var(--color-text); +} + +.solidarity-result .solidarity-count { + font-size: 24px; + font-weight: 700; + color: #000; + margin: 0.5rem 0; +} + +/* Local Solutions */ +.local-solutions-list { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.local-solution-item { + background-color: #f9fafb; + border-radius: 10px; + padding: 1rem; + cursor: pointer; + transition: all 0.2s; + border: 2px solid transparent; +} + +.local-solution-item:hover { + background-color: #f3f4f6; +} + +.local-solution-item.active { + border-color: var(--color-highlight); + background-color: #fef3e6; +} + +.local-solution-title { + font-size: 16px; + font-weight: 700; + color: #000; + margin: 0 0 0.5rem 0; +} + +.local-solution-description { + font-size: 14px; + color: var(--color-text); + margin: 0 0 0.75rem 0; + line-height: 1.4; +} + +.local-solution-link { + display: inline-block; + font-size: 14px; + font-weight: 600; + color: var(--color-highlight); + text-decoration: underline; +} + +.local-solution-link:hover { + opacity: 0.8; +} + +.local-solutions-text { + font-size: 15px; + color: var(--color-text); + text-align: center; + margin: 1.5rem 0 0 0; + line-height: 1.5; +} + +/* Search Results Map */ +.search-results-map { + min-height: 400px; + max-height: 600px; + height: 600px; + border-radius: 15px; + overflow: hidden; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); + position: sticky; + top: calc(var(--header-height) + 2rem); +} + +.search-results-map #map { + width: 100%; + height: 100%; +} + +.carpool-route-info { + position: absolute; + bottom: 1rem; + left: 50%; + transform: translateX(-50%); + background-color: rgba(0, 0, 0, 0.75); + color: #fff; + padding: 0.75rem 1.25rem; + border-radius: 8px; + font-size: 14px; + font-weight: 500; + z-index: 10; +} + +/* Map Markers */ +.map-marker { + width: 36px; + height: 36px; + border-radius: 10px; + border: 2px solid var(--color-white); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25); + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: transform 0.2s ease; +} + +.map-marker:hover { + transform: scale(1.1); +} + +.map-marker-departure { + background-color: var(--color-secondary); +} + +.map-marker-arrival { + background-color: var(--color-highlight); +} + +/* MapLibre Popup Styling */ +.maplibregl-popup-content { + padding: 12px 16px; + border-radius: 10px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + font-family: var(--font-family); + font-size: 14px; +} + +.maplibregl-popup-close-button { + font-size: 18px; + padding: 4px 8px; + color: #666; +} + +.maplibregl-popup-close-button:hover { + color: var(--color-text); + background: transparent; +} + +/* Transit Journeys */ +.transit-journeys { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.transit-journey { + background-color: #f9fafb; + border-radius: 10px; + padding: 1rem; + cursor: pointer; + transition: box-shadow 0.2s, border-color 0.2s; + border: 2px solid transparent; +} + +.transit-journey:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +.transit-journey.active { + border-color: var(--color-primary); + box-shadow: 0 2px 8px rgba(40, 57, 89, 0.2); +} + +.journey-header { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.journey-date { + font-size: 14px; + color: var(--color-text); + text-transform: capitalize; +} + +.journey-times { + display: flex; + align-items: center; + gap: 0.375rem; +} + +.journey-time { + font-size: 22px; + font-weight: 700; + color: var(--color-text); +} + +.journey-arrow { + width: 18px; + height: 18px; +} + +.journey-duration { + margin-left: auto; + font-size: 12px; + font-weight: 600; + color: var(--color-white); + background-color: var(--color-secondary); + padding: 0.2rem 0.5rem; + border-radius: 12px; +} + +.journey-separator { + height: 1px; + background-color: #e5e7eb; + margin: 0.75rem 0; +} + +.journey-legs { + display: flex; + flex-direction: column; + gap: 0; + position: relative; +} + +.journey-leg { + display: flex; + gap: 0.75rem; + align-items: flex-start; + position: relative; + padding-bottom: 0.75rem; +} + +.journey-leg:last-child { + padding-bottom: 0; +} + +/* Ligne de connexion verticale entre les icônes */ +.journey-leg:not(:last-child)::after { + content: ''; + position: absolute; + left: 18px; + top: 36px; + bottom: 0; + width: 2px; + background-color: var(--color-secondary); + transform: translateX(-50%); +} + +.leg-icon { + flex-shrink: 0; + width: 36px; + height: 36px; + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + background-color: var(--color-primary); + position: relative; + z-index: 1; +} + +.leg-icon img { + width: 20px; + height: 20px; + filter: brightness(0) invert(1); +} + +.leg-icon svg { + color: white; +} + +.leg-details { + flex: 1; + min-width: 0; +} + +.leg-line { + font-size: 15px; + font-weight: 700; + color: var(--color-text); + margin: 0; +} + +.leg-line strong { + color: var(--color-primary); +} + +.leg-text { + font-size: 13px; + color: #6b7280; + margin: 0 0 0.125rem; +} + +.leg-text strong { + color: var(--color-text); + font-weight: 500; +} + +.leg-duration { + font-size: 12px; + color: #9ca3af; +} + +.leg-operator { + font-size: 12px; + color: #6b7280; + margin: 0; +} + +.leg-direction { + font-size: 14px; + font-weight: 600; + color: var(--color-text); + margin: 0.25rem 0 0.5rem; +} + +.leg-timeline { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 0; + margin-top: 0.5rem; + position: relative; + padding-left: 10px; +} + +.leg-stop { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.leg-stop-dot { + width: 10px; + height: 10px; + border-radius: 50%; + flex-shrink: 0; +} + +.leg-stop-departure .leg-stop-dot { + background-color: #79C970; +} + +.leg-stop-arrival .leg-stop-dot { + background-color: #F70004; +} + +.leg-stop-time { + font-size: 12px; + font-weight: 600; + color: var(--color-text); + min-width: 40px; +} + +.leg-stop-name { + font-size: 12px; + color: var(--color-text); +} + +.leg-timeline-arrow { + width: 14px; + height: 14px; + margin-left: -2px; + transform: rotate(90deg); +} + +/* Carpool List */ +.carpool-list { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.carpool-item { + background-color: #f9fafb; + border-radius: 10px; + padding: 1rem; + cursor: pointer; + transition: all 0.2s; + border: 2px solid transparent; +} + +.carpool-item:hover { + background-color: #f3f4f6; +} + +.carpool-item.active { + border-color: var(--color-secondary); + background-color: #e6f7f6; +} + +.carpool-preview { + margin-bottom: 0.75rem; +} + +.carpool-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0.25rem; +} + +.carpool-driver { + font-size: 15px; + font-weight: 700; + color: var(--color-text); +} + +.carpool-price { + font-size: 16px; + font-weight: 700; + color: var(--color-primary); +} + +.carpool-date { + font-size: 13px; + color: #6b7280; + margin-bottom: 0.75rem; +} + +.carpool-route { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.carpool-place { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 14px; + color: var(--color-text); + margin: 0; +} + +.carpool-dot { + width: 10px; + height: 10px; + border-radius: 50%; + flex-shrink: 0; +} + +.carpool-dot-departure { + background-color: var(--color-secondary); +} + +.carpool-dot-arrival { + background-color: var(--color-highlight); +} + +.carpool-link-container { + text-align: center; + margin-top: 1rem; +} + +.carpool-operator-link { + color: var(--color-highlight); + font-size: 14px; + font-weight: 600; + text-decoration: underline; + transition: opacity 0.2s; +} + +.carpool-operator-link:hover { + opacity: 0.8; +} + +/* Mobile map container - hidden by default on desktop */ +.mobile-map-container { + display: none; +} + +.mobile-map-container #mobile-map { + width: 100%; + height: 100%; +} + +/* Compact search summary - hidden by default on desktop */ +.compact-search-summary { + display: none; +} + +/* Responsive */ +@media (max-width: 1024px) { + /* Hide search form on mobile when search was performed */ + .hide-on-mobile-searched { + display: none; + } + + /* Page recherche with results - no padding */ + .page-recherche.has-results { + padding: 0; + } + + /* Mobile map - full width, no margin, after header */ + .mobile-map-container { + display: block; + width: 100%; + height: 500px; + margin: 0; + position: relative; + } + + .mobile-map-container #mobile-map { + width: 100%; + height: 100%; + } + + /* Hide desktop map on mobile */ + .search-results-map { + display: none; + } + + /* Compact search summary */ + .compact-search-summary { + display: flex; + align-items: center; + justify-content: space-between; + background-color: var(--color-secondary); + padding: 1rem 1.25rem; + margin-top: -1.5rem; + border-radius: 20px 20px 0 0; + position: relative; + z-index: 10; + } + + .compact-search-content { + flex: 1; + text-decoration: none; + color: #fff; + } + + .compact-search-route { + display: flex; + align-items: center; + gap: 0.25rem; + font-size: 13px; + font-weight: 500; + margin-bottom: 0.25rem; + } + + .compact-search-place { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 120px; + font-weight: 700; + } + + .compact-search-arrow { + width: 16px; + height: 16px; + flex-shrink: 0; + filter: brightness(0) invert(1); + } + + .compact-search-date { + font-size: 12px; + opacity: 0.9; + } + + .compact-search-icon { + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + margin-left: 1rem; + } + + .compact-search-icon img { + width: 24px; + height: 24px; + filter: brightness(0) invert(1); + } + + /* Search results container adjustments */ + .search-results-container { + grid-template-columns: 1fr; + padding: 0 1rem; + margin-top: 0; + } + + .search-results-accordions { + padding-top: 1rem; + } +} + +@media (max-width: 600px) { + .search-results-container { + gap: 1rem; + padding: 0 0.75rem; + } + + .accordion-header { + padding: 0.875rem 1rem; + } + + .accordion-title { + font-size: 14px; + } + + .accordion-badge { + min-width: 24px; + height: 24px; + font-size: 12px; + } + + .compact-search-summary { + padding: 0.875rem 1rem; + } + + .compact-search-route { + font-size: 12px; + } + + .compact-search-place { + max-width: 100px; + } + + .compact-search-date { + font-size: 12px; + } + + .mobile-map-container { + height: 400px; + } +} diff --git a/themes/mms43/layouts/_partials/head/js.html b/themes/mms43/layouts/_partials/head/js.html index 16ffbed..625abcd 100644 --- a/themes/mms43/layouts/_partials/head/js.html +++ b/themes/mms43/layouts/_partials/head/js.html @@ -1,3 +1,13 @@ + + + + + + + + + + {{- with resources.Get "js/main.js" }} {{- $opts := dict "minify" (not hugo.IsDevelopment) diff --git a/themes/mms43/layouts/_partials/search-block.html b/themes/mms43/layouts/_partials/search-block.html new file mode 100644 index 0000000..c8ad04a --- /dev/null +++ b/themes/mms43/layouts/_partials/search-block.html @@ -0,0 +1,214 @@ +{{/* + Partial: search-block + + Paramètres: + - showTitle: bool (afficher le titre, défaut: true) + - action: string (URL de soumission du formulaire) + - method: string (méthode du formulaire, défaut: GET) +*/}} + +{{ $showTitle := default true .showTitle }} +{{ $action := .action }} +{{ $method := default "GET" .method }} + +{{ $iconLocation := resources.Get "images/picto/location_on_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} +{{ $iconCalendar := resources.Get "images/picto/calendar_today_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} +{{ $iconSchedule := resources.Get "images/picto/schedule_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} +{{ $iconSearch := resources.Get "images/picto/search_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} +{{ $iconSwap := resources.Get "images/picto/sync_alt_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} + +
+ {{ if $showTitle }} +

{{ site.Params.search.title }}

+ {{ end }} + +
+
+
+ + + +
    + +
+
+ + + +
+ + + +
    + +
+
+
+ +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + diff --git a/themes/mms43/layouts/_partials/search-results.html b/themes/mms43/layouts/_partials/search-results.html new file mode 100644 index 0000000..dee3822 --- /dev/null +++ b/themes/mms43/layouts/_partials/search-results.html @@ -0,0 +1,765 @@ +{{/* + Partial: search-results + Affiche les résultats de recherche en 2 colonnes : + - Gauche : accordéons par catégorie + - Droite : carte MapLibre +*/}} + +{{ $iconArrow := resources.Get "images/picto/keyboard_arrow_up_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }} +{{ $iconArrowRight := resources.Get "images/picto/arrow_right_alt_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }} +{{ $iconWalk := resources.Get "images/picto/directions_walk_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }} +{{ $iconBus := resources.Get "images/picto/directions_bus_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }} + +
+ +
+ +
+ +
+
+ + + {{ with .Params.contactCTA.transit }} +
+

{{ . }}

+ {{ site.Params.phone }} +
+ {{ end }} +
+
+
+ + +
+ +
+
+ + + {{ with .Params.contactCTA.carpool }} +
+

{{ . }}

+ {{ site.Params.phone }} +
+ {{ end }} +
+
+
+ + +
+ +
+
+ + + {{ with .Params.contactCTA.solidarity }} +
+

{{ . }}

+ {{ site.Params.phone }} +
+ {{ end }} +
+
+
+ + +
+ +
+
+ + + {{ with .Params.contactCTA.vehicles }} +
+

{{ . }}

+ {{ site.Params.phone }} +
+ {{ end }} +
+
+
+ + +
+ +
+
+ + + {{ with .Params.localSolutionsText }} +

{{ . }}

+ {{ end }} + {{ with .Params.contactCTA.localSolutions }} +
+

{{ . }}

+ {{ site.Params.phone }} +
+ {{ end }} +
+
+
+
+ + +
+
+
+
+ + diff --git a/themes/mms43/layouts/home.html b/themes/mms43/layouts/home.html index 0993cdc..270b544 100644 --- a/themes/mms43/layouts/home.html +++ b/themes/mms43/layouts/home.html @@ -7,62 +7,7 @@ -
-

{{ site.Params.search.title }}

-
- {{ $iconLocation := resources.Get "images/picto/location_on_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} - {{ $iconCalendar := resources.Get "images/picto/calendar_today_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} - {{ $iconSchedule := resources.Get "images/picto/schedule_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} - {{ $iconSearch := resources.Get "images/picto/search_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} - - {{ $iconSwap := resources.Get "images/picto/sync_alt_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} - -
-
- - -
- - - -
- - -
-
- -
-
- - -
- -
- - -
-
- - -
-
+ {{ partial "search-block.html" (dict "showTitle" true "action" "/recherche/") }}

{{ site.Params.video.title }}

diff --git a/themes/mms43/layouts/recherche.html b/themes/mms43/layouts/recherche.html new file mode 100644 index 0000000..774b827 --- /dev/null +++ b/themes/mms43/layouts/recherche.html @@ -0,0 +1,161 @@ +{{ define "main" }} + + + + {{ $iconSearch := resources.Get "images/picto/search_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }} + {{ $iconArrow := resources.Get "images/picto/arrow_right_alt_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }} + +
+ +
+ {{ partial "search-block.html" (dict "showTitle" false "action" "/recherche/") }} +
+ + + +
+ + +{{ end }} diff --git a/themes/mms43/layouts/shortcodes/contact-form.html b/themes/mms43/layouts/shortcodes/contact-form.html index 8c75642..75b6add 100644 --- a/themes/mms43/layouts/shortcodes/contact-form.html +++ b/themes/mms43/layouts/shortcodes/contact-form.html @@ -13,64 +13,132 @@ {{ $fields = .Page.Params.formFields }} {{ end }} -
-
-
- - -
-
- - -
+ + +
+ Votre message a bien été envoyé. Nous vous répondrons dans les plus brefs délais.
- {{/* Champs dynamiques */}} - {{ if $fields }} - {{ range $index, $field := $fields }} - {{ $fieldId := $field.name | default (printf "field_%d" $index) }} - {{ $fieldRequired := $field.required | default false }} + +
+ +
- {{ if eq $field.type "multicheckboxes" }} -
- {{ $field.label }} -
- {{ range $optIndex, $option := $field.options }} - - {{ end }} +
+
+
+ + +
+
+ + +
+
+ + {{/* Champs dynamiques */}} + {{ if $fields }} + {{ range $index, $field := $fields }} + {{ $fieldId := $field.name | default (printf "field_%d" $index) }} + {{ $fieldRequired := $field.required | default false }} + + {{ if eq $field.type "multicheckboxes" }} +
+ {{ $field.label }} +
+ {{ range $optIndex, $option := $field.options }} + + {{ end }} +
-
- {{ else if eq $field.type "textarea" }} -
- - -
- {{ else }} -
- - -
+ {{ else if eq $field.type "textarea" }} +
+ + +
+ {{ else }} +
+ + +
+ {{ end }} {{ end }} + {{ else }} + {{/* Champs par défaut si aucun champ dynamique n'est défini */}} +
+ + +
+
+ + +
+
+ + +
{{ end }} - {{ else }} - {{/* Champs par défaut si aucun champ dynamique n'est défini */}} -
- - -
-
- - -
-
- - -
- {{ end }} - -

{{ $privacyText }}

+ +

{{ $privacyText }}

+
+ +