build: split themes config in theme directories (#26635)

This commit is contained in:
Frédéric Péters 2018-09-23 09:26:59 +02:00
parent eb80450715
commit 52295b5270
84 changed files with 607 additions and 659 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
themes.json
/sdist/
/static/*/style.css
/static/*/style.css.map

View File

@ -3,7 +3,7 @@ NAME="publik-base-theme"
prefix = /usr
all: icons css
all: themes.json icons css
static/includes/_data_uris.scss: $(wildcard static/includes/img/*)
python make_data_uris.py static/includes/
@ -14,14 +14,15 @@ static/grandlyon-gnm/_data_uris.scss: $(wildcard static/grandlyon-gnm/img/*)
static/toodego/_data_uris.scss: $(wildcard static/toodego/img/*)
python make_data_uris.py static/toodego/
THEMEFILES=$(shell python get_themes.py)
themes.json: $(wildcard static/*/config.json)
python create_themes_json.py
%.css: export LC_ALL=C.UTF-8
.SECONDEXPANSION:
%.css: %.scss $(wildcard static/includes/*.scss) static/includes/_data_uris.scss static/grandlyon-gnm/_data_uris.scss static/toodego/_data_uris.scss $$(wildcard $$(@D)/*.scss)
sass $< $@
css: $(THEMEFILES)
css: $(wildcard static/*/style.css)
rm -rf static/*/.sass-cache/
icons:
@ -55,7 +56,7 @@ clean:
DIST_FILES = \
Makefile \
desc.xml \
get_themes.py \
create_themes_json.py \
make_data_uris.py \
static templates themes.json \
src
@ -71,6 +72,7 @@ dist: clean
install:
mkdir -p $(DESTDIR)$(prefix)/share/publik/themes/publik-base
cp -r static templates themes.json desc.xml $(DESTDIR)$(prefix)/share/publik/themes/publik-base
rm $(DESTDIR)$(prefix)/share/publik/themes/publik-base/static/*/config.json
mkdir -p $(DESTDIR)$(prefix)/share/wcs/themes/
ln -s $(prefix)/share/publik/themes/publik-base $(DESTDIR)$(prefix)/share/wcs/themes/publik-base

20
create_themes_json.py Normal file
View File

@ -0,0 +1,20 @@
#! /usr/bin/env python
import json
import os
themes = []
for dirname in sorted(os.listdir('static')):
config = os.path.join('static', dirname, 'config.json')
if not os.path.exists(config):
continue
theme = json.load(open(os.path.join('static', dirname, 'config.json')))
theme['id'] = dirname
if not 'variables' in theme:
theme['variables'] = {}
if not theme['variables'].get('css_variant'):
theme['variables']['css_variant'] = dirname
themes.append(theme)
with open('themes.json', 'w') as fd:
json.dump(themes, fd, indent=2, sort_keys=True)

View File

@ -1,6 +0,0 @@
#! /usr/bin/env python
import json
for theme in json.load(open('themes.json')):
print 'static/%s/style.css' % theme['id']

View File

@ -0,0 +1,6 @@
{
"label": "Alfortville",
"variables": {
"theme_color": "#804697"
}
}

View File

@ -0,0 +1,8 @@
{
"label": "Alpes-Maritimes",
"variables": {
"favicon": "alpes-maritimes/img/favicon.ico",
"no_extra_js": true,
"theme_color": "#13ACBD"
}
}

View File

@ -0,0 +1,6 @@
{
"label": "Amiens Métropole",
"variables": {
"theme_color": "#077aca"
}
}

View File

@ -0,0 +1,6 @@
{
"label": "Amiens",
"variables": {
"theme_color": "#4A95DB"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Arpajon",
"variables": {
"favicon": "arpajon/img/favicon-32x32.png",
"theme_color": "#00d3cc"
}
}

7
static/blois/config.json Normal file
View File

@ -0,0 +1,7 @@
{
"label": "Blois",
"variables": {
"no_extra_js": false,
"theme_color": "#02b4da"
}
}

7
static/bron/config.json Normal file
View File

@ -0,0 +1,7 @@
{
"label": "Bron",
"variables": {
"no_extra_js": true,
"theme_color": "#ff8400"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Châteauroux",
"variables": {
"no_extra_js": true,
"theme_color": "#0779B7"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Clapotis-les-Canards",
"variables": {
"no_extra_js": true,
"theme_color": "#018B9D"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Clisson, Sèvre & Maine Agglo",
"variables": {
"no_extra_js": true,
"theme_color": "#C25D1B"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Clisson",
"variables": {
"no_extra_js": true,
"theme_color": "#C52F1E"
}
}

View File

@ -0,0 +1,12 @@
{
"label": "Côtes-d'Armor",
"variables": {
"favicon": "cotes-d-armor/img/favicon.ico",
"icon_prefix": "img/launcher-icon-",
"icon_sizes": [
"180"
],
"no_extra_js": true,
"theme_color": "#44db6f"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Dardilly",
"variables": {
"no_extra_js": true,
"theme_color": "#008FCB"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Dauphine",
"variables": {
"no_extra_js": true,
"theme_color": "#00428F"
}
}

7
static/dreux/config.json Normal file
View File

@ -0,0 +1,7 @@
{
"label": "Dreux",
"variables": {
"no_extra_js": true,
"theme_color": "#d29340"
}
}

View File

@ -0,0 +1,9 @@
{
"label": "Fondettes",
"variables": {
"favicon": "fondettes/favicon.png",
"logo_link_url": "http://www.fondettes.fr/",
"no_extra_js": true,
"theme_color": "#2A697C"
}
}

View File

@ -0,0 +1,6 @@
{
"label": "Fontenay-sous-Bois 2017",
"variables": {
"theme_color": "#5ba1e1"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Fontenay-sous-Bois 2018",
"variables": {
"no_extra_js": true,
"theme_color": "#da3838"
}
}

View File

@ -0,0 +1,6 @@
{
"label": "Fontenay-sous-Bois",
"variables": {
"theme_color": "#FF6E00"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Gorges",
"variables": {
"no_extra_js": true,
"theme_color": "#268682"
}
}

View File

@ -0,0 +1,16 @@
{
"label": "Guichet Numérique Grand Lyon",
"variables": {
"icon_prefix": "img/launcher-icon-",
"icon_sizes": [
"48",
"96",
"192",
"256",
"512"
],
"no_extra_js": false,
"pwa_display": "standalone",
"theme_color": "#DA0D02"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "SAU Grand Lyon",
"variables": {
"no_extra_js": false,
"theme_color": "#E42320"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Grand Lyon",
"variables": {
"no_extra_js": true,
"theme_color": "#FF0303"
}
}

View File

@ -0,0 +1,8 @@
{
"label": "Grenoble Métropole",
"variables": {
"email_header_img": "img/logo-metro.png",
"no_extra_js": false,
"theme_color": "#FFEC44"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Gréville-Hague",
"variables": {
"no_extra_js": true,
"theme_color": "#431403"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Grosboule-les-Bains",
"variables": {
"no_extra_js": false,
"theme_color": "#13b29c"
}
}

View File

@ -0,0 +1,8 @@
{
"label": "Groupe Up",
"variables": {
"apa_users_grid": "grid-1-3",
"no_extra_js": true,
"theme_color": "#f59100"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Haute Goulaine",
"variables": {
"no_extra_js": true,
"theme_color": "#B0D500"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Hautes-Alpes 2018",
"variables": {
"no_extra_js": false,
"theme_color": "#B73720"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Hautes-Alpes",
"variables": {
"no_extra_js": true,
"theme_color": "#D1351C"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Jobourg",
"variables": {
"no_extra_js": true,
"theme_color": "#426C92"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "La Hague",
"variables": {
"no_extra_js": true,
"theme_color": "#5ABEB9"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "La Réunion",
"variables": {
"no_extra_js": true,
"theme_color": "#024395"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "La Seyne-sur-Mer",
"variables": {
"no_extra_js": true,
"theme_color": "#1DA1AE"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Le Nord",
"variables": {
"no_extra_js": true,
"theme_color": "#6B7A99"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Lozère",
"variables": {
"no_extra_js": true,
"theme_color": "#A8BC01"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Marcoussis",
"variables": {
"no_extra_js": true,
"theme_color": "#2B8AE8"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Massoins",
"variables": {
"no_extra_js": true,
"theme_color": "#4DB2EC"
}
}

7
static/meaux/config.json Normal file
View File

@ -0,0 +1,7 @@
{
"label": "Meaux",
"variables": {
"no_extra_js": true,
"theme_color": "#C5C0B4"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Metz Métropole",
"variables": {
"no_extra_js": false,
"theme_color": "#9c007f"
}
}

7
static/metz/config.json Normal file
View File

@ -0,0 +1,7 @@
{
"label": "Metz",
"variables": {
"no_extra_js": true,
"theme_color": "#FABB00"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Meudon",
"variables": {
"no_extra_js": false,
"theme_color": "#260c4e"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Meyzieu 2018",
"variables": {
"no_extra_js": false,
"theme_color": "#3997a5"
}
}

View File

@ -0,0 +1,6 @@
{
"label": "Meyzieu",
"variables": {
"theme_color": "#007CB5"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Ministère de l'Intérieur",
"variables": {
"no_extra_js": true,
"theme_color": "#34567C"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Montpellier",
"overlay": "montpellier-theme",
"variables": {
"theme_color": "#EA5B0C"
}
}

View File

@ -0,0 +1,8 @@
{
"label": "Moselle",
"variables": {
"include_top_links": false,
"no_extra_js": false,
"theme_color": "#f7433a"
}
}

View File

@ -0,0 +1,6 @@
{
"label": "Nancy 2017",
"variables": {
"theme_color": "#f15252"
}
}

7
static/nancy/config.json Normal file
View File

@ -0,0 +1,7 @@
{
"label": "Nancy",
"variables": {
"no_extra_js": true,
"theme_color": "#94BCBB"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Nanterre",
"variables": {
"no_extra_js": true,
"theme_color": "#D81E41"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Omonville-la-Rogue",
"variables": {
"no_extra_js": true,
"theme_color": "#BAC197"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Orléans",
"variables": {
"email_header_img": "images/logo_mairie.jpg",
"theme_color": "#34697D"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Oullins",
"variables": {
"no_extra_js": true,
"theme_color": "#D24B19"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Pays de Grasse",
"variables": {
"no_extra_js": true,
"theme_color": "#DB378E"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Perpette-les-Andouillettes",
"variables": {
"no_extra_js": true,
"theme_color": "#005712"
}
}

View File

@ -0,0 +1,6 @@
{
"label": "Pr@tic - CDG59",
"variables": {
"theme_color": "#005EA9"
}
}

View File

@ -0,0 +1,6 @@
{
"label": "Publik",
"variables": {
"theme_color": "#E80E89"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Rochefort",
"variables": {
"no_extra_js": false,
"theme_color": "#D24E38"
}
}

7
static/rouen/config.json Normal file
View File

@ -0,0 +1,7 @@
{
"label": "Rouen",
"variables": {
"no_extra_js": true,
"theme_color": "#EE787C"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Saint-Lô Agglo",
"variables": {
"no_extra_js": true,
"theme_color": "#79bb2e"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Saint-Vallier-de-Thiey",
"variables": {
"no_extra_js": true,
"theme_color": "#2DBBE5"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Saône et Loire (CD71)",
"variables": {
"no_extra_js": true,
"theme_color": "#009DDF"
}
}

View File

@ -0,0 +1,8 @@
{
"label": "Seine-et-Marne (aides sociales)",
"variables": {
"apa_users_grid": "grid-1-3",
"no_extra_js": true,
"theme_color": "#0a7ec2"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Seine-et-Marne",
"variables": {
"no_extra_js": true,
"theme_color": "#007084"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "SICOVAL",
"variables": {
"no_extra_js": true,
"theme_color": "#F8AD4A"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "SICTIAM",
"variables": {
"no_extra_js": true,
"theme_color": "#0E88BE"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Somme (CD80)",
"variables": {
"no_extra_js": true,
"theme_color": "#87A738"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Sospel",
"variables": {
"no_extra_js": true,
"theme_color": "#333333"
}
}

View File

@ -0,0 +1,9 @@
{
"label": "Mon Strasbourg",
"variables": {
"email_header_img": "img/logo-eurometropole.png",
"favicon": "strasbourg-2018/img/favicon.png",
"no_extra_js": false,
"theme_color": "#31455D"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Strasbourg",
"variables": {
"no_extra_js": true,
"theme_color": "#31455D"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Tonneville",
"variables": {
"no_extra_js": true,
"theme_color": "#ED3237"
}
}

View File

@ -0,0 +1,19 @@
{
"label": "Toodego",
"variables": {
"favicon": "toodego/img/favicon.ico",
"global_title": "Toodego",
"icon_prefix": "img/launcher-icon-",
"icon_sizes": [
"48",
"96",
"192",
"256",
"512"
],
"include_top_links": false,
"no_extra_js": false,
"pwa_display": "standalone",
"theme_color": "#DC1822"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Tournai",
"variables": {
"no_extra_js": true,
"theme_color": "#D62D8A"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Urville-Nacqueville",
"variables": {
"no_extra_js": true,
"theme_color": "#4585AB"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Vaulx-en-Velin",
"variables": {
"no_extra_js": true,
"theme_color": "#0C89A1"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Vénissieux",
"variables": {
"no_extra_js": true,
"theme_color": "#2dbdbd"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Villejuif",
"variables": {
"no_extra_js": true,
"theme_color": "#1ba39c"
}
}

View File

@ -0,0 +1,8 @@
{
"label": "Villeurbanne 2018",
"variables": {
"email_header_img": "images/logo.png",
"no_extra_js": true,
"theme_color": "#0094aa"
}
}

View File

@ -0,0 +1,7 @@
{
"label": "Villeurbanne",
"variables": {
"no_extra_js": true,
"theme_color": "#01A0BE"
}
}

View File

@ -1,649 +0,0 @@
[
{"id": "alfortville",
"label": "Alfortville",
"variables": {
"css_variant": "alfortville",
"theme_color": "#804697"
}
},
{"id": "amiens",
"label": "Amiens",
"variables": {
"css_variant": "amiens",
"theme_color": "#4A95DB"
}
},
{"id": "amiens-metropole",
"label": "Amiens Métropole",
"variables": {
"css_variant": "amiens-metropole",
"theme_color": "#077aca"
}
},
{"id": "alpes-maritimes",
"label": "Alpes-Maritimes",
"variables": {
"css_variant": "alpes-maritimes",
"no_extra_js": true,
"theme_color": "#13ACBD",
"favicon": "alpes-maritimes/img/favicon.ico"
}
},
{"id": "arpajon",
"label": "Arpajon",
"variables": {
"css_variant": "arpajon",
"theme_color": "#00d3cc",
"favicon": "arpajon/img/favicon-32x32.png"
}
},
{"id": "blois",
"label": "Blois",
"variables": {
"css_variant": "blois",
"no_extra_js": false,
"theme_color": "#02b4da"
}
},
{"id": "bron",
"label": "Bron",
"variables": {
"css_variant": "bron",
"no_extra_js": true,
"theme_color": "#ff8400"
}
},
{"id": "chateauroux",
"label": "Châteauroux",
"variables": {
"css_variant": "chateauroux",
"no_extra_js": true,
"theme_color": "#0779B7"
}
},
{"id": "clapotis-les-canards",
"label": "Clapotis-les-Canards",
"variables": {
"css_variant": "clapotis-les-canards",
"no_extra_js": true,
"theme_color": "#018B9D"
}
},
{"id": "clisson",
"label": "Clisson",
"variables": {
"css_variant": "clisson",
"no_extra_js": true,
"theme_color": "#C52F1E"
}
},
{"id": "clisson-sevre-et-maine-agglo",
"label": "Clisson, Sèvre & Maine Agglo",
"variables": {
"css_variant": "clisson-sevre-et-maine-agglo",
"no_extra_js": true,
"theme_color": "#C25D1B"
}
},
{"id": "cotes-d-armor",
"label": "Côtes-d'Armor",
"variables": {
"css_variant": "cotes-d-armor",
"no_extra_js": true,
"theme_color": "#44db6f",
"favicon": "cotes-d-armor/img/favicon.ico",
"icon_sizes": ["180"],
"icon_prefix": "img/launcher-icon-"
}
},
{"id": "dardilly",
"label": "Dardilly",
"variables": {
"css_variant": "dardilly",
"no_extra_js": true,
"theme_color": "#008FCB"
}
},
{"id": "dreux",
"label": "Dreux",
"variables": {
"css_variant": "dreux",
"no_extra_js": true,
"theme_color": "#d29340"
}
},
{"id": "dauphine",
"label": "Dauphine",
"variables": {
"css_variant": "dauphine",
"no_extra_js": true,
"theme_color": "#00428F"
}
},
{"id": "fondettes",
"label": "Fondettes",
"variables": {
"css_variant": "fondettes",
"theme_color": "#2A697C",
"favicon": "fondettes/favicon.png",
"logo_link_url": "http://www.fondettes.fr/",
"no_extra_js": true
}
},
{"id": "gorges",
"label": "Gorges",
"variables": {
"css_variant": "gorges",
"no_extra_js": true,
"theme_color": "#268682"
}
},
{"id": "grandlyon",
"label": "Grand Lyon",
"variables": {
"css_variant": "grandlyon",
"no_extra_js": true,
"theme_color": "#FF0303"
}
},
{"id": "grandlyon-gnm",
"label": "Guichet Numérique Grand Lyon",
"variables": {
"css_variant": "grandlyon-gnm",
"no_extra_js": false,
"theme_color": "#DA0D02",
"icon_sizes": ["48", "96", "192", "256", "512"],
"icon_prefix": "img/launcher-icon-",
"pwa_display": "standalone"
}
},
{"id": "grandlyon-sau",
"label": "SAU Grand Lyon",
"variables": {
"css_variant": "grandlyon-sau",
"no_extra_js": false,
"theme_color": "#E42320"
}
},
{"id": "grenoble-metropole",
"label": "Grenoble Métropole",
"variables": {
"css_variant": "grenoble-metropole",
"no_extra_js": false,
"theme_color": "#FFEC44",
"email_header_img": "img/logo-metro.png"
}
},
{"id": "fontenay-sous-bois",
"label": "Fontenay-sous-Bois",
"variables": {
"css_variant": "fontenay-sous-bois",
"theme_color": "#FF6E00"
}
},
{"id": "fontenay-sous-bois-2017",
"label": "Fontenay-sous-Bois 2017",
"variables": {
"css_variant": "fontenay-sous-bois-2017",
"theme_color": "#5ba1e1"
}
},
{"id": "fontenay-sous-bois-2018",
"label": "Fontenay-sous-Bois 2018",
"variables": {
"css_variant": "fontenay-sous-bois-2018",
"no_extra_js": true,
"theme_color": "#da3838"
}
},
{"id": "greville-hague",
"label": "Gréville-Hague",
"variables": {
"css_variant": "greville-hague",
"no_extra_js": true,
"theme_color": "#431403"
}
},
{"id": "grosboule-les-bains",
"label": "Grosboule-les-Bains",
"variables": {
"css_variant": "grosboule-les-bains",
"no_extra_js": false,
"theme_color": "#13b29c"
}
},
{"id": "groupe-up",
"label": "Groupe Up",
"variables": {
"css_variant": "groupe-up",
"no_extra_js": true,
"theme_color": "#f59100",
"apa_users_grid": "grid-1-3"
}
},
{"id": "haute-goulaine",
"label": "Haute Goulaine",
"variables": {
"css_variant": "haute-goulaine",
"no_extra_js": true,
"theme_color": "#B0D500"
}
},
{"id": "hautes-alpes",
"label": "Hautes-Alpes",
"variables": {
"css_variant": "hautes-alpes",
"no_extra_js": true,
"theme_color": "#D1351C"
}
},
{"id": "hautes-alpes-2018",
"label": "Hautes-Alpes 2018",
"variables": {
"css_variant": "hautes-alpes-2018",
"no_extra_js": false,
"theme_color": "#B73720"
}
},
{"id": "jobourg",
"label": "Jobourg",
"variables": {
"css_variant": "jobourg",
"no_extra_js": true,
"theme_color": "#426C92"
}
},
{"id": "la-hague",
"label": "La Hague",
"variables": {
"css_variant": "la-hague",
"no_extra_js": true,
"theme_color": "#5ABEB9"
}
},
{"id": "la-reunion",
"label": "La Réunion",
"variables": {
"css_variant": "la-reunion",
"no_extra_js": true,
"theme_color": "#024395"
}
},
{"id": "la-seyne-sur-mer",
"label": "La Seyne-sur-Mer",
"variables": {
"css_variant": "la-seyne-sur-mer",
"no_extra_js": true,
"theme_color": "#1DA1AE"
}
},
{"id": "lenord",
"label": "Le Nord",
"variables": {
"css_variant": "lenord",
"no_extra_js": true,
"theme_color": "#6B7A99"
}
},
{"id": "lozere",
"label": "Lozère",
"variables": {
"css_variant": "lozere",
"no_extra_js": true,
"theme_color": "#A8BC01"
}
},
{"id": "marcoussis",
"label": "Marcoussis",
"variables": {
"css_variant": "marcoussis",
"no_extra_js": true,
"theme_color": "#2B8AE8"
}
},
{"id": "meudon",
"label": "Meudon",
"variables": {
"css_variant": "meudon",
"no_extra_js": false,
"theme_color": "#260c4e"
}
},
{"id": "massoins",
"label": "Massoins",
"variables": {
"css_variant": "massoins",
"no_extra_js": true,
"theme_color": "#4DB2EC"
}
},
{"id": "meaux",
"label": "Meaux",
"variables": {
"css_variant": "meaux",
"no_extra_js": true,
"theme_color": "#C5C0B4"
}
},
{"id": "metz",
"label": "Metz",
"variables": {
"css_variant": "metz",
"no_extra_js": true,
"theme_color": "#FABB00"
}
},
{"id": "metz-metropole",
"label": "Metz Métropole",
"variables": {
"css_variant": "metz-metropole",
"no_extra_js": false,
"theme_color": "#9c007f"
}
},
{"id": "meyzieu",
"label": "Meyzieu",
"variables": {
"css_variant": "meyzieu",
"theme_color": "#007CB5"
}
},
{"id": "meyzieu-2018",
"label": "Meyzieu 2018",
"variables": {
"css_variant": "meyzieu-2018",
"theme_color": "#3997a5",
"no_extra_js": false
}
},
{"id": "montpellier",
"label": "Montpellier",
"variables": {
"css_variant": "montpellier",
"theme_color": "#EA5B0C"
},
"overlay": "montpellier-theme"
},
{"id": "moselle",
"label": "Moselle",
"variables": {
"css_variant": "moselle",
"include_top_links": false,
"no_extra_js": false,
"theme_color": "#f7433a"
}
},
{"id": "nancy",
"label": "Nancy",
"variables": {
"css_variant": "nancy",
"no_extra_js": true,
"theme_color": "#94BCBB"
}
},
{"id": "nancy-2017",
"label": "Nancy 2017",
"variables": {
"css_variant": "nancy-2017",
"theme_color": "#f15252"
}
},
{"id": "nanterre",
"label": "Nanterre",
"variables": {
"css_variant": "nanterre",
"no_extra_js": true,
"theme_color": "#D81E41"
}
},
{"id": "omonville-la-rogue",
"label": "Omonville-la-Rogue",
"variables": {
"css_variant": "omonville-la-rogue",
"no_extra_js": true,
"theme_color": "#BAC197"
}
},
{"id": "orleans",
"label": "Orléans",
"variables": {
"css_variant": "orleans",
"email_header_img": "images/logo_mairie.jpg",
"theme_color": "#34697D"
}
},
{"id": "oullins",
"label": "Oullins",
"variables": {
"css_variant": "oullins",
"no_extra_js": true,
"theme_color": "#D24B19"
}
},
{"id": "pays-de-grasse",
"label": "Pays de Grasse",
"variables": {
"css_variant": "pays-de-grasse",
"no_extra_js": true,
"theme_color": "#DB378E"
}
},
{"id": "perpette-les-andouillettes",
"label": "Perpette-les-Andouillettes",
"variables": {
"css_variant": "perpette-les-andouillettes",
"no_extra_js": true,
"theme_color": "#005712"
}
},
{"id": "publik",
"label": "Publik",
"variables": {
"css_variant": "publik",
"theme_color": "#E80E89"
}
},
{"id": "pratic",
"label": "Pr@tic - CDG59",
"variables": {
"css_variant": "pratic",
"theme_color": "#005EA9"
}
},
{"id": "rochefort",
"label": "Rochefort",
"variables": {
"css_variant": "rochefort",
"no_extra_js": false,
"theme_color": "#D24E38"
}
},
{"id": "rouen",
"label": "Rouen",
"variables": {
"css_variant": "rouen",
"no_extra_js": true,
"theme_color": "#EE787C"
}
},
{"id": "saint-lo-agglo",
"label": "Saint-Lô Agglo",
"variables": {
"css_variant": "saint-lo-agglo",
"no_extra_js": true,
"theme_color": "#79bb2e"
}
},
{"id": "saint-vallier-de-thiey",
"label": "Saint-Vallier-de-Thiey",
"variables": {
"css_variant": "saint-vallier-de-thiey",
"no_extra_js": true,
"theme_color": "#2DBBE5"
}
},
{"id": "saone-et-loire-cd71",
"label": "Saône et Loire (CD71)",
"variables": {
"css_variant": "saone-et-loire-cd71",
"no_extra_js": true,
"theme_color": "#009DDF"
}
},
{"id": "seine-et-marne",
"label": "Seine-et-Marne",
"variables": {
"css_variant": "seine-et-marne",
"no_extra_js": true,
"theme_color": "#007084"
}
},
{"id": "seine-et-marne-apa",
"label": "Seine-et-Marne (aides sociales)",
"variables": {
"css_variant": "seine-et-marne-apa",
"no_extra_js": true,
"theme_color": "#0a7ec2",
"apa_users_grid": "grid-1-3"
}
},
{"id": "sicoval",
"label": "SICOVAL",
"variables": {
"css_variant": "sicoval",
"no_extra_js": true,
"theme_color": "#F8AD4A"
}
},
{"id": "sictiam",
"label": "SICTIAM",
"variables": {
"css_variant": "sictiam",
"no_extra_js": true,
"theme_color": "#0E88BE"
}
},
{"id": "somme-cd80",
"label": "Somme (CD80)",
"variables": {
"css_variant": "somme-cd80",
"no_extra_js": true,
"theme_color": "#87A738"
}
},
{"id": "sospel",
"label": "Sospel",
"variables": {
"css_variant": "sospel",
"no_extra_js": true,
"theme_color": "#333333"
}
},
{"id": "strasbourg",
"label": "Strasbourg",
"variables": {
"css_variant": "strasbourg",
"no_extra_js": true,
"theme_color": "#31455D"
}
},
{"id": "strasbourg-2018",
"label": "Mon Strasbourg",
"variables": {
"css_variant": "strasbourg-2018",
"email_header_img": "img/logo-eurometropole.png",
"favicon": "strasbourg-2018/img/favicon.png",
"no_extra_js": false,
"theme_color": "#31455D"
}
},
{"id": "tonneville",
"label": "Tonneville",
"variables": {
"css_variant": "tonneville",
"no_extra_js": true,
"theme_color": "#ED3237"
}
},
{"id": "toodego",
"label": "Toodego",
"variables": {
"global_title": "Toodego",
"css_variant": "toodego",
"no_extra_js": false,
"include_top_links": false,
"theme_color": "#DC1822",
"favicon": "toodego/img/favicon.ico",
"icon_sizes": ["48", "96", "192", "256", "512"],
"icon_prefix": "img/launcher-icon-",
"pwa_display": "standalone"
}
},
{"id": "tournai",
"label": "Tournai",
"variables": {
"css_variant": "tournai",
"theme_color": "#D62D8A",
"no_extra_js": true
}
},
{"id": "urville-nacqueville",
"label": "Urville-Nacqueville",
"variables": {
"css_variant": "urville-nacqueville",
"no_extra_js": true,
"theme_color": "#4585AB"
}
},
{"id": "vaulx-en-velin",
"label": "Vaulx-en-Velin",
"variables": {
"css_variant": "vaulx-en-velin",
"no_extra_js": true,
"theme_color": "#0C89A1"
}
},
{"id": "venissieux",
"label": "Vénissieux",
"variables": {
"css_variant": "venissieux",
"no_extra_js": true,
"theme_color": "#2dbdbd"
}
},
{"id": "villejuif",
"label": "Villejuif",
"variables": {
"css_variant": "villejuif",
"no_extra_js": true,
"theme_color": "#1ba39c"
}
} ,
{"id": "villeurbanne",
"label": "Villeurbanne",
"variables": {
"css_variant": "villeurbanne",
"no_extra_js": true,
"theme_color": "#01A0BE"
}
},
{"id": "villeurbanne-2018",
"label": "Villeurbanne 2018",
"variables": {
"css_variant": "villeurbanne-2018",
"no_extra_js": true,
"email_header_img": "images/logo.png",
"theme_color": "#0094aa"
}
},
{"id": "minint",
"label": "Ministère de l'Intérieur",
"variables": {
"css_variant": "minint",
"no_extra_js": true,
"theme_color": "#34567C"
}
}
]