@unmap/themes 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/index.d.ts +142 -11
- package/dist/index.js +886 -183
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -76,6 +76,17 @@ var verdant = {
|
|
|
76
76
|
800: "#1E4128",
|
|
77
77
|
900: "#0B2815"
|
|
78
78
|
};
|
|
79
|
+
var fern = {
|
|
80
|
+
100: "#D3F3C5",
|
|
81
|
+
200: "#C3E6B3",
|
|
82
|
+
300: "#AFD59E",
|
|
83
|
+
400: "#96BF83",
|
|
84
|
+
500: "#76A560",
|
|
85
|
+
600: "#518535",
|
|
86
|
+
700: "#37621E",
|
|
87
|
+
800: "#1E4305",
|
|
88
|
+
900: "#0F2900"
|
|
89
|
+
};
|
|
79
90
|
var sandstone = {
|
|
80
91
|
100: "#F5E8D0",
|
|
81
92
|
200: "#E7D9BF",
|
|
@@ -187,22 +198,106 @@ var aqua = {
|
|
|
187
198
|
950: "#081B1D",
|
|
188
199
|
980: "#060E0F"
|
|
189
200
|
};
|
|
201
|
+
var linen = {
|
|
202
|
+
25: "#FCF6E6",
|
|
203
|
+
50: "#F6F0E0",
|
|
204
|
+
100: "#EDE7D7",
|
|
205
|
+
200: "#E2DCCC",
|
|
206
|
+
300: "#D5CFC0",
|
|
207
|
+
400: "#C4BEAF",
|
|
208
|
+
500: "#AAA495",
|
|
209
|
+
600: "#8B8677",
|
|
210
|
+
700: "#696457",
|
|
211
|
+
800: "#4B4639",
|
|
212
|
+
850: "#383427",
|
|
213
|
+
900: "#272317",
|
|
214
|
+
950: "#1B170B",
|
|
215
|
+
1e3: "#0F0B03"
|
|
216
|
+
};
|
|
217
|
+
var coral = {
|
|
218
|
+
25: "#FFF3F1",
|
|
219
|
+
50: "#FFEBE8",
|
|
220
|
+
100: "#FFDFDB",
|
|
221
|
+
200: "#FFCFC8",
|
|
222
|
+
300: "#FFBDB3",
|
|
223
|
+
400: "#FFA195",
|
|
224
|
+
500: "#F47C6E",
|
|
225
|
+
600: "#C76559",
|
|
226
|
+
700: "#974A42",
|
|
227
|
+
800: "#6C332D",
|
|
228
|
+
850: "#512520",
|
|
229
|
+
900: "#391814",
|
|
230
|
+
950: "#270F0C",
|
|
231
|
+
1e3: "#170705"
|
|
232
|
+
};
|
|
233
|
+
var peach = {
|
|
234
|
+
100: "#FFE2CC",
|
|
235
|
+
200: "#FFCEAA",
|
|
236
|
+
300: "#F4B98D",
|
|
237
|
+
400: "#E0A171",
|
|
238
|
+
500: "#CA8248",
|
|
239
|
+
600: "#AC5E0D",
|
|
240
|
+
700: "#804300",
|
|
241
|
+
800: "#572B00",
|
|
242
|
+
900: "#361900"
|
|
243
|
+
};
|
|
244
|
+
var indigo = {
|
|
245
|
+
25: "#F7F6F9",
|
|
246
|
+
50: "#F0EFF6",
|
|
247
|
+
100: "#E8E6F1",
|
|
248
|
+
200: "#DDD9EC",
|
|
249
|
+
300: "#D0CBE6",
|
|
250
|
+
400: "#C0B8DE",
|
|
251
|
+
500: "#A89BD3",
|
|
252
|
+
600: "#8B76C5",
|
|
253
|
+
700: "#6D4BB5",
|
|
254
|
+
800: "#4B3977",
|
|
255
|
+
850: "#362C53",
|
|
256
|
+
900: "#251F36",
|
|
257
|
+
950: "#181422",
|
|
258
|
+
1e3: "#0C0A11"
|
|
259
|
+
};
|
|
260
|
+
var azure = {
|
|
261
|
+
100: "#D4EBFF",
|
|
262
|
+
200: "#B6DDFF",
|
|
263
|
+
300: "#92CBFB",
|
|
264
|
+
400: "#74B3E8",
|
|
265
|
+
500: "#5299D2",
|
|
266
|
+
600: "#227AB9",
|
|
267
|
+
700: "#005B91",
|
|
268
|
+
800: "#003D64",
|
|
269
|
+
900: "#002641",
|
|
270
|
+
950: "#00192D",
|
|
271
|
+
980: "#000E1C"
|
|
272
|
+
};
|
|
273
|
+
var amber = {
|
|
274
|
+
200: "#FEEAC1",
|
|
275
|
+
300: "#F3C96F",
|
|
276
|
+
400: "#E7AF0E",
|
|
277
|
+
500: "#C99700",
|
|
278
|
+
600: "#C19100",
|
|
279
|
+
700: "#916D00"
|
|
280
|
+
};
|
|
190
281
|
|
|
191
282
|
// src/recipe.ts
|
|
192
283
|
var THEME_BASES = [
|
|
193
284
|
"base",
|
|
194
285
|
"muted",
|
|
195
286
|
"outdoor",
|
|
196
|
-
"decimal",
|
|
197
287
|
"blueprint",
|
|
198
288
|
"blush",
|
|
199
289
|
"orchid",
|
|
200
290
|
"canopy",
|
|
201
|
-
"lagoon"
|
|
291
|
+
"lagoon",
|
|
292
|
+
"tropic",
|
|
293
|
+
"sunset",
|
|
294
|
+
"bold",
|
|
295
|
+
"pastel"
|
|
202
296
|
];
|
|
203
297
|
var RETIRED_BASES = {
|
|
204
298
|
relief: "outdoor",
|
|
205
|
-
street: "base"
|
|
299
|
+
street: "base",
|
|
300
|
+
decimal: "blueprint"
|
|
206
301
|
};
|
|
207
302
|
function normalizeThemeBase(base) {
|
|
208
303
|
if (THEME_BASES.includes(base)) return base;
|
|
@@ -301,6 +396,7 @@ var STOCK_RAMPS = {
|
|
|
301
396
|
wave,
|
|
302
397
|
sky,
|
|
303
398
|
verdant,
|
|
399
|
+
fern,
|
|
304
400
|
sandstone,
|
|
305
401
|
graphite,
|
|
306
402
|
mist,
|
|
@@ -309,7 +405,13 @@ var STOCK_RAMPS = {
|
|
|
309
405
|
rose,
|
|
310
406
|
lilac,
|
|
311
407
|
aqua,
|
|
312
|
-
ember
|
|
408
|
+
ember,
|
|
409
|
+
linen,
|
|
410
|
+
coral,
|
|
411
|
+
peach,
|
|
412
|
+
indigo,
|
|
413
|
+
azure,
|
|
414
|
+
amber
|
|
313
415
|
};
|
|
314
416
|
function buildRecipes(r) {
|
|
315
417
|
const BASE_LIGHT = {
|
|
@@ -610,14 +712,17 @@ function buildRecipes(r) {
|
|
|
610
712
|
};
|
|
611
713
|
const OUTDOOR_LIGHT = {
|
|
612
714
|
background: r.ink[200],
|
|
613
|
-
|
|
715
|
+
// Warm paper, not the near-white ink the style launched on (2026-09-09): a green reads as
|
|
716
|
+
// vegetation against warm land and as a polygon against white, which is the difference
|
|
717
|
+
// between an outdoor map and a diagram. Mapbox Outdoors' land is hsl(60, 20%, 85%).
|
|
718
|
+
earth: r.paper[100],
|
|
614
719
|
water: r.wave[300],
|
|
615
|
-
parkA: r.
|
|
616
|
-
parkB: r.
|
|
617
|
-
woodA: r.
|
|
618
|
-
woodB: r.
|
|
619
|
-
scrubA: r.
|
|
620
|
-
scrubB: r.
|
|
720
|
+
parkA: r.fern[300],
|
|
721
|
+
parkB: r.fern[400],
|
|
722
|
+
woodA: r.fern[300],
|
|
723
|
+
woodB: r.fern[400],
|
|
724
|
+
scrubA: r.fern[200],
|
|
725
|
+
scrubB: r.fern[300],
|
|
621
726
|
sand: r.sandstone[300],
|
|
622
727
|
beach: r.sandstone[300],
|
|
623
728
|
glacier: r.ink[25],
|
|
@@ -667,7 +772,7 @@ function buildRecipes(r) {
|
|
|
667
772
|
blue: "#2D6E8F",
|
|
668
773
|
// Peaks, parks, forests and gardens all come through green. On this flavour they are the
|
|
669
774
|
// POIs worth finding, so it carries a full step more weight than elsewhere.
|
|
670
|
-
green: r.
|
|
775
|
+
green: r.fern[800],
|
|
671
776
|
lapis: "#3F5C93",
|
|
672
777
|
pink: "#8F4A6B",
|
|
673
778
|
red: "#9B4340",
|
|
@@ -676,25 +781,25 @@ function buildRecipes(r) {
|
|
|
676
781
|
turquoise: r.wave[700]
|
|
677
782
|
},
|
|
678
783
|
landcover: {
|
|
679
|
-
grassland: r.
|
|
784
|
+
grassland: r.fern[200],
|
|
680
785
|
barren: r.sandstone[300],
|
|
681
786
|
urban_area: r.ink[100],
|
|
682
787
|
farmland: r.sandstone[200],
|
|
683
788
|
glacier: r.ink[25],
|
|
684
|
-
scrub: r.
|
|
685
|
-
forest: r.
|
|
789
|
+
scrub: r.fern[300],
|
|
790
|
+
forest: r.fern[400]
|
|
686
791
|
}
|
|
687
792
|
};
|
|
688
793
|
const OUTDOOR_DARK = {
|
|
689
794
|
background: r.ink[1e3],
|
|
690
795
|
earth: r.ink[950],
|
|
691
796
|
water: r.wave[980],
|
|
692
|
-
parkA: r.
|
|
693
|
-
parkB: r.
|
|
694
|
-
woodA: r.
|
|
695
|
-
woodB: r.
|
|
696
|
-
scrubA: r.
|
|
697
|
-
scrubB: r.
|
|
797
|
+
parkA: r.fern[700],
|
|
798
|
+
parkB: r.fern[600],
|
|
799
|
+
woodA: r.fern[700],
|
|
800
|
+
woodB: r.fern[600],
|
|
801
|
+
scrubA: r.fern[800],
|
|
802
|
+
scrubB: r.fern[700],
|
|
698
803
|
sand: r.sandstone[500],
|
|
699
804
|
beach: r.sandstone[500],
|
|
700
805
|
glacier: r.ink[700],
|
|
@@ -743,7 +848,7 @@ function buildRecipes(r) {
|
|
|
743
848
|
},
|
|
744
849
|
pois: {
|
|
745
850
|
blue: "#7FC4E8",
|
|
746
|
-
green: r.
|
|
851
|
+
green: r.fern[300],
|
|
747
852
|
lapis: "#8FB0EA",
|
|
748
853
|
pink: "#E3A0C0",
|
|
749
854
|
red: "#EE968F",
|
|
@@ -752,161 +857,13 @@ function buildRecipes(r) {
|
|
|
752
857
|
turquoise: r.wave[400]
|
|
753
858
|
},
|
|
754
859
|
landcover: {
|
|
755
|
-
grassland: r.
|
|
860
|
+
grassland: r.fern[700],
|
|
756
861
|
barren: r.sandstone[500],
|
|
757
862
|
urban_area: r.ink[950],
|
|
758
|
-
farmland: r.
|
|
863
|
+
farmland: r.fern[900],
|
|
759
864
|
glacier: r.ink[700],
|
|
760
|
-
scrub: r.
|
|
761
|
-
forest: r.
|
|
762
|
-
}
|
|
763
|
-
};
|
|
764
|
-
const DECIMAL_LIGHT = {
|
|
765
|
-
background: r.jade[100],
|
|
766
|
-
earth: r.jade[25],
|
|
767
|
-
water: r.jade[200],
|
|
768
|
-
parkA: r.jade[50],
|
|
769
|
-
parkB: r.jade[100],
|
|
770
|
-
woodA: r.jade[50],
|
|
771
|
-
woodB: r.jade[100],
|
|
772
|
-
scrubA: r.jade[50],
|
|
773
|
-
scrubB: r.jade[100],
|
|
774
|
-
sand: r.jade[50],
|
|
775
|
-
beach: r.jade[50],
|
|
776
|
-
glacier: r.jade[25],
|
|
777
|
-
institutional: r.jade[50],
|
|
778
|
-
pedestrian: r.jade[50],
|
|
779
|
-
aerodrome: r.jade[50],
|
|
780
|
-
runway: r.jade[200],
|
|
781
|
-
pier: r.jade[200],
|
|
782
|
-
buildings: r.jade[100],
|
|
783
|
-
railway: r.jade[500],
|
|
784
|
-
boundaries: r.jade[600],
|
|
785
|
-
roads: {
|
|
786
|
-
other: r.jade[200],
|
|
787
|
-
otherCasing: r.jade[25],
|
|
788
|
-
minor: r.jade[300],
|
|
789
|
-
minorCasing: r.jade[25],
|
|
790
|
-
service: r.jade[200],
|
|
791
|
-
serviceCasing: r.jade[25],
|
|
792
|
-
major: r.jade[400],
|
|
793
|
-
majorCasing: r.jade[25],
|
|
794
|
-
highway: r.jade[500],
|
|
795
|
-
highwayCasing: r.jade[25],
|
|
796
|
-
link: r.jade[400],
|
|
797
|
-
linkCasing: r.jade[25]
|
|
798
|
-
},
|
|
799
|
-
tunnelFill: r.jade[100],
|
|
800
|
-
tunnelCasing: r.jade[200],
|
|
801
|
-
bridgeCasing: r.jade[600],
|
|
802
|
-
labels: {
|
|
803
|
-
city: r.jade[1e3],
|
|
804
|
-
cityHalo: r.jade[25],
|
|
805
|
-
state: r.jade[700],
|
|
806
|
-
stateHalo: r.jade[25],
|
|
807
|
-
country: r.jade[700],
|
|
808
|
-
subplace: r.jade[700],
|
|
809
|
-
subplaceHalo: r.jade[25],
|
|
810
|
-
address: r.jade[700],
|
|
811
|
-
addressHalo: r.jade[25],
|
|
812
|
-
roadMinor: r.jade[700],
|
|
813
|
-
roadMinorHalo: r.jade[25],
|
|
814
|
-
roadMajor: r.jade[800],
|
|
815
|
-
roadMajorHalo: r.jade[25],
|
|
816
|
-
ocean: r.jade[800]
|
|
817
|
-
},
|
|
818
|
-
pois: {
|
|
819
|
-
blue: r.jade[700],
|
|
820
|
-
green: r.jade[700],
|
|
821
|
-
lapis: r.jade[700],
|
|
822
|
-
pink: r.jade[700],
|
|
823
|
-
red: r.jade[700],
|
|
824
|
-
slategray: r.jade[700],
|
|
825
|
-
tangerine: r.jade[700],
|
|
826
|
-
turquoise: r.jade[700]
|
|
827
|
-
},
|
|
828
|
-
landcover: {
|
|
829
|
-
grassland: r.jade[50],
|
|
830
|
-
barren: r.jade[50],
|
|
831
|
-
urban_area: r.jade[50],
|
|
832
|
-
farmland: r.jade[50],
|
|
833
|
-
glacier: r.jade[25],
|
|
834
|
-
scrub: r.jade[50],
|
|
835
|
-
forest: r.jade[100]
|
|
836
|
-
}
|
|
837
|
-
};
|
|
838
|
-
const DECIMAL_DARK = {
|
|
839
|
-
background: r.jade[1e3],
|
|
840
|
-
earth: r.jade[1e3],
|
|
841
|
-
water: r.jade[900],
|
|
842
|
-
parkA: r.jade[950],
|
|
843
|
-
parkB: r.jade[900],
|
|
844
|
-
woodA: r.jade[950],
|
|
845
|
-
woodB: r.jade[900],
|
|
846
|
-
scrubA: r.jade[950],
|
|
847
|
-
scrubB: r.jade[900],
|
|
848
|
-
sand: r.jade[950],
|
|
849
|
-
beach: r.jade[950],
|
|
850
|
-
glacier: r.jade[900],
|
|
851
|
-
institutional: r.jade[950],
|
|
852
|
-
pedestrian: r.jade[950],
|
|
853
|
-
aerodrome: r.jade[950],
|
|
854
|
-
runway: r.jade[850],
|
|
855
|
-
pier: r.jade[850],
|
|
856
|
-
buildings: r.jade[900],
|
|
857
|
-
railway: r.jade[800],
|
|
858
|
-
boundaries: r.jade[700],
|
|
859
|
-
roads: {
|
|
860
|
-
other: r.jade[850],
|
|
861
|
-
otherCasing: r.jade[1e3],
|
|
862
|
-
minor: r.jade[800],
|
|
863
|
-
minorCasing: r.jade[1e3],
|
|
864
|
-
service: r.jade[850],
|
|
865
|
-
serviceCasing: r.jade[1e3],
|
|
866
|
-
major: r.jade[700],
|
|
867
|
-
majorCasing: r.jade[1e3],
|
|
868
|
-
highway: r.jade[600],
|
|
869
|
-
highwayCasing: r.jade[1e3],
|
|
870
|
-
link: r.jade[700],
|
|
871
|
-
linkCasing: r.jade[1e3]
|
|
872
|
-
},
|
|
873
|
-
tunnelFill: r.jade[900],
|
|
874
|
-
tunnelCasing: r.jade[1e3],
|
|
875
|
-
bridgeCasing: r.jade[1e3],
|
|
876
|
-
labels: {
|
|
877
|
-
city: r.jade[500],
|
|
878
|
-
cityHalo: r.jade[1e3],
|
|
879
|
-
state: r.jade[600],
|
|
880
|
-
stateHalo: r.jade[1e3],
|
|
881
|
-
country: r.jade[600],
|
|
882
|
-
subplace: r.jade[600],
|
|
883
|
-
subplaceHalo: r.jade[1e3],
|
|
884
|
-
address: r.jade[600],
|
|
885
|
-
addressHalo: r.jade[1e3],
|
|
886
|
-
roadMinor: r.jade[600],
|
|
887
|
-
roadMinorHalo: r.jade[1e3],
|
|
888
|
-
roadMajor: r.jade[500],
|
|
889
|
-
roadMajorHalo: r.jade[1e3],
|
|
890
|
-
ocean: r.jade[500]
|
|
891
|
-
},
|
|
892
|
-
pois: {
|
|
893
|
-
blue: r.jade[600],
|
|
894
|
-
green: r.jade[600],
|
|
895
|
-
lapis: r.jade[600],
|
|
896
|
-
pink: r.jade[600],
|
|
897
|
-
red: r.jade[600],
|
|
898
|
-
slategray: r.jade[600],
|
|
899
|
-
tangerine: r.jade[600],
|
|
900
|
-
turquoise: r.jade[600]
|
|
901
|
-
},
|
|
902
|
-
landcover: {
|
|
903
|
-
grassland: r.jade[950],
|
|
904
|
-
barren: r.jade[950],
|
|
905
|
-
urban_area: r.jade[950],
|
|
906
|
-
farmland: r.jade[950],
|
|
907
|
-
glacier: r.jade[900],
|
|
908
|
-
scrub: r.jade[950],
|
|
909
|
-
forest: r.jade[900]
|
|
865
|
+
scrub: r.fern[800],
|
|
866
|
+
forest: r.fern[600]
|
|
910
867
|
}
|
|
911
868
|
};
|
|
912
869
|
const BLUEPRINT_LIGHT = {
|
|
@@ -1428,8 +1385,11 @@ function buildRecipes(r) {
|
|
|
1428
1385
|
}
|
|
1429
1386
|
};
|
|
1430
1387
|
const CANOPY_DARK = {
|
|
1431
|
-
|
|
1432
|
-
|
|
1388
|
+
// `linen` rather than `paper` for the ground alone: paper is packed solid here (1000 casings,
|
|
1389
|
+
// 950 background, 900 earth, 850 scrub), so there is no free step to move to, and `base`
|
|
1390
|
+
// owns paper[900]. The straw tint also suits a style whose light half is sandstone.
|
|
1391
|
+
background: r.linen[950],
|
|
1392
|
+
earth: r.linen[900],
|
|
1433
1393
|
water: r.cobalt[950],
|
|
1434
1394
|
parkA: r.verdant[900],
|
|
1435
1395
|
parkB: r.verdant[800],
|
|
@@ -1649,16 +1609,626 @@ function buildRecipes(r) {
|
|
|
1649
1609
|
forest: r.wave[800]
|
|
1650
1610
|
}
|
|
1651
1611
|
};
|
|
1612
|
+
const TROPIC_LIGHT = {
|
|
1613
|
+
background: r.linen[100],
|
|
1614
|
+
// A step below `sunset`, whose warm duotone owns the lightest cream. Tropic's cream sitting
|
|
1615
|
+
// slightly deeper is also what lets its full-strength teal water carry the style.
|
|
1616
|
+
earth: r.linen[50],
|
|
1617
|
+
water: r.aqua[500],
|
|
1618
|
+
parkA: r.jade[300],
|
|
1619
|
+
parkB: r.jade[400],
|
|
1620
|
+
woodA: r.jade[400],
|
|
1621
|
+
woodB: r.jade[500],
|
|
1622
|
+
scrubA: r.fern[200],
|
|
1623
|
+
scrubB: r.fern[300],
|
|
1624
|
+
sand: r.sandstone[200],
|
|
1625
|
+
beach: r.sandstone[100],
|
|
1626
|
+
glacier: r.ink[25],
|
|
1627
|
+
institutional: r.linen[100],
|
|
1628
|
+
pedestrian: r.linen[50],
|
|
1629
|
+
aerodrome: r.linen[200],
|
|
1630
|
+
runway: r.linen[300],
|
|
1631
|
+
pier: r.aqua[300],
|
|
1632
|
+
buildings: r.linen[200],
|
|
1633
|
+
railway: r.linen[400],
|
|
1634
|
+
boundaries: r.coral[700],
|
|
1635
|
+
roads: {
|
|
1636
|
+
other: "#FFFFFF",
|
|
1637
|
+
otherCasing: r.linen[200],
|
|
1638
|
+
minor: "#FFFFFF",
|
|
1639
|
+
minorCasing: r.linen[200],
|
|
1640
|
+
service: "#FFFFFF",
|
|
1641
|
+
serviceCasing: r.linen[200],
|
|
1642
|
+
major: "#FFFFFF",
|
|
1643
|
+
majorCasing: r.linen[300],
|
|
1644
|
+
highway: r.coral[500],
|
|
1645
|
+
highwayCasing: r.coral[700],
|
|
1646
|
+
link: r.coral[400],
|
|
1647
|
+
linkCasing: r.coral[600]
|
|
1648
|
+
},
|
|
1649
|
+
tunnelFill: r.linen[100],
|
|
1650
|
+
tunnelCasing: r.linen[200],
|
|
1651
|
+
bridgeCasing: r.linen[500],
|
|
1652
|
+
labels: {
|
|
1653
|
+
city: r.aqua[950],
|
|
1654
|
+
cityHalo: r.linen[25],
|
|
1655
|
+
state: r.aqua[800],
|
|
1656
|
+
stateHalo: r.linen[25],
|
|
1657
|
+
country: r.aqua[800],
|
|
1658
|
+
subplace: r.aqua[800],
|
|
1659
|
+
subplaceHalo: r.linen[25],
|
|
1660
|
+
address: r.linen[700],
|
|
1661
|
+
addressHalo: r.linen[25],
|
|
1662
|
+
roadMinor: r.linen[700],
|
|
1663
|
+
roadMinorHalo: r.linen[25],
|
|
1664
|
+
roadMajor: r.aqua[900],
|
|
1665
|
+
roadMajorHalo: r.linen[25],
|
|
1666
|
+
ocean: r.aqua[980]
|
|
1667
|
+
},
|
|
1668
|
+
pois: {
|
|
1669
|
+
blue: r.wave[700],
|
|
1670
|
+
green: r.verdant[700],
|
|
1671
|
+
lapis: r.sky[700],
|
|
1672
|
+
pink: r.rose[600],
|
|
1673
|
+
red: r.rose[700],
|
|
1674
|
+
slategray: r.graphite[700],
|
|
1675
|
+
tangerine: r.sandstone[500],
|
|
1676
|
+
turquoise: r.aqua[700]
|
|
1677
|
+
},
|
|
1678
|
+
landcover: {
|
|
1679
|
+
grassland: r.fern[200],
|
|
1680
|
+
barren: r.sandstone[200],
|
|
1681
|
+
urban_area: r.linen[100],
|
|
1682
|
+
farmland: r.sandstone[100],
|
|
1683
|
+
glacier: r.ink[25],
|
|
1684
|
+
scrub: r.fern[300],
|
|
1685
|
+
forest: r.jade[400]
|
|
1686
|
+
}
|
|
1687
|
+
};
|
|
1688
|
+
const TROPIC_DARK = {
|
|
1689
|
+
background: r.aqua[980],
|
|
1690
|
+
earth: r.aqua[950],
|
|
1691
|
+
water: r.aqua[700],
|
|
1692
|
+
parkA: r.jade[850],
|
|
1693
|
+
parkB: r.jade[800],
|
|
1694
|
+
woodA: r.jade[800],
|
|
1695
|
+
woodB: r.jade[700],
|
|
1696
|
+
scrubA: r.ink[900],
|
|
1697
|
+
scrubB: r.ink[850],
|
|
1698
|
+
sand: r.sandstone[500],
|
|
1699
|
+
beach: r.ink[900],
|
|
1700
|
+
glacier: r.ink[800],
|
|
1701
|
+
institutional: r.ink[900],
|
|
1702
|
+
pedestrian: r.aqua[900],
|
|
1703
|
+
aerodrome: r.ink[900],
|
|
1704
|
+
runway: r.ink[850],
|
|
1705
|
+
pier: r.aqua[600],
|
|
1706
|
+
buildings: r.ink[900],
|
|
1707
|
+
railway: r.ink[700],
|
|
1708
|
+
boundaries: r.coral[400],
|
|
1709
|
+
roads: {
|
|
1710
|
+
other: r.ink[850],
|
|
1711
|
+
otherCasing: r.aqua[980],
|
|
1712
|
+
minor: r.ink[800],
|
|
1713
|
+
minorCasing: r.aqua[980],
|
|
1714
|
+
service: r.ink[850],
|
|
1715
|
+
serviceCasing: r.aqua[980],
|
|
1716
|
+
major: r.ink[700],
|
|
1717
|
+
majorCasing: r.aqua[980],
|
|
1718
|
+
highway: r.coral[500],
|
|
1719
|
+
highwayCasing: r.aqua[980],
|
|
1720
|
+
link: r.coral[600],
|
|
1721
|
+
linkCasing: r.aqua[980]
|
|
1722
|
+
},
|
|
1723
|
+
tunnelFill: r.ink[900],
|
|
1724
|
+
tunnelCasing: r.aqua[980],
|
|
1725
|
+
bridgeCasing: r.aqua[980],
|
|
1726
|
+
labels: {
|
|
1727
|
+
city: r.linen[25],
|
|
1728
|
+
cityHalo: r.aqua[950],
|
|
1729
|
+
state: r.aqua[300],
|
|
1730
|
+
stateHalo: r.aqua[950],
|
|
1731
|
+
country: r.aqua[300],
|
|
1732
|
+
subplace: r.aqua[300],
|
|
1733
|
+
subplaceHalo: r.aqua[950],
|
|
1734
|
+
address: r.ink[400],
|
|
1735
|
+
addressHalo: r.aqua[950],
|
|
1736
|
+
roadMinor: r.ink[400],
|
|
1737
|
+
roadMinorHalo: r.aqua[950],
|
|
1738
|
+
roadMajor: r.linen[100],
|
|
1739
|
+
roadMajorHalo: r.aqua[950],
|
|
1740
|
+
ocean: r.aqua[200]
|
|
1741
|
+
},
|
|
1742
|
+
pois: {
|
|
1743
|
+
blue: r.wave[400],
|
|
1744
|
+
green: r.verdant[400],
|
|
1745
|
+
lapis: r.sky[400],
|
|
1746
|
+
pink: r.rose[400],
|
|
1747
|
+
red: r.rose[400],
|
|
1748
|
+
slategray: r.graphite[400],
|
|
1749
|
+
tangerine: r.sandstone[400],
|
|
1750
|
+
turquoise: r.aqua[400]
|
|
1751
|
+
},
|
|
1752
|
+
landcover: {
|
|
1753
|
+
grassland: r.ink[900],
|
|
1754
|
+
barren: r.sandstone[500],
|
|
1755
|
+
urban_area: r.aqua[950],
|
|
1756
|
+
farmland: r.ink[900],
|
|
1757
|
+
glacier: r.ink[800],
|
|
1758
|
+
scrub: r.ink[850],
|
|
1759
|
+
forest: r.jade[800]
|
|
1760
|
+
}
|
|
1761
|
+
};
|
|
1762
|
+
const SUNSET_LIGHT = {
|
|
1763
|
+
background: r.linen[100],
|
|
1764
|
+
earth: r.linen[25],
|
|
1765
|
+
water: r.indigo[700],
|
|
1766
|
+
parkA: r.peach[100],
|
|
1767
|
+
parkB: r.peach[200],
|
|
1768
|
+
woodA: r.peach[200],
|
|
1769
|
+
woodB: r.peach[300],
|
|
1770
|
+
scrubA: r.linen[100],
|
|
1771
|
+
scrubB: r.peach[100],
|
|
1772
|
+
sand: r.peach[200],
|
|
1773
|
+
beach: r.peach[100],
|
|
1774
|
+
glacier: r.linen[25],
|
|
1775
|
+
institutional: r.linen[100],
|
|
1776
|
+
pedestrian: r.linen[50],
|
|
1777
|
+
aerodrome: r.linen[200],
|
|
1778
|
+
runway: r.linen[300],
|
|
1779
|
+
pier: r.indigo[300],
|
|
1780
|
+
buildings: r.linen[200],
|
|
1781
|
+
railway: r.linen[400],
|
|
1782
|
+
boundaries: r.indigo[600],
|
|
1783
|
+
roads: {
|
|
1784
|
+
other: "#FFFFFF",
|
|
1785
|
+
otherCasing: r.linen[200],
|
|
1786
|
+
minor: "#FFFFFF",
|
|
1787
|
+
minorCasing: r.linen[200],
|
|
1788
|
+
service: "#FFFFFF",
|
|
1789
|
+
serviceCasing: r.linen[200],
|
|
1790
|
+
major: "#FFFFFF",
|
|
1791
|
+
majorCasing: r.coral[300],
|
|
1792
|
+
highway: r.coral[500],
|
|
1793
|
+
highwayCasing: r.coral[700],
|
|
1794
|
+
link: r.coral[400],
|
|
1795
|
+
linkCasing: r.coral[600]
|
|
1796
|
+
},
|
|
1797
|
+
tunnelFill: r.linen[100],
|
|
1798
|
+
tunnelCasing: r.linen[200],
|
|
1799
|
+
bridgeCasing: r.linen[500],
|
|
1800
|
+
labels: {
|
|
1801
|
+
city: r.indigo[900],
|
|
1802
|
+
cityHalo: r.linen[25],
|
|
1803
|
+
state: r.indigo[800],
|
|
1804
|
+
stateHalo: r.linen[25],
|
|
1805
|
+
country: r.indigo[800],
|
|
1806
|
+
subplace: r.indigo[800],
|
|
1807
|
+
subplaceHalo: r.linen[25],
|
|
1808
|
+
address: r.linen[700],
|
|
1809
|
+
addressHalo: r.linen[25],
|
|
1810
|
+
roadMinor: r.linen[700],
|
|
1811
|
+
roadMinorHalo: r.linen[25],
|
|
1812
|
+
roadMajor: r.indigo[900],
|
|
1813
|
+
roadMajorHalo: r.linen[25],
|
|
1814
|
+
ocean: r.linen[25]
|
|
1815
|
+
},
|
|
1816
|
+
pois: {
|
|
1817
|
+
blue: r.wave[700],
|
|
1818
|
+
green: r.verdant[700],
|
|
1819
|
+
lapis: r.sky[700],
|
|
1820
|
+
pink: r.rose[600],
|
|
1821
|
+
red: r.rose[700],
|
|
1822
|
+
slategray: r.graphite[700],
|
|
1823
|
+
tangerine: r.sandstone[500],
|
|
1824
|
+
turquoise: r.aqua[700]
|
|
1825
|
+
},
|
|
1826
|
+
// A step lighter than the parks: the field tint sits under them at up to 0.6 opacity, and at
|
|
1827
|
+
// the parks' own steps it turned the whole city orange rather than cream with peach in it.
|
|
1828
|
+
landcover: {
|
|
1829
|
+
grassland: r.linen[100],
|
|
1830
|
+
barren: r.linen[200],
|
|
1831
|
+
urban_area: r.linen[50],
|
|
1832
|
+
farmland: r.peach[100],
|
|
1833
|
+
glacier: r.linen[25],
|
|
1834
|
+
scrub: r.linen[100],
|
|
1835
|
+
forest: r.peach[200]
|
|
1836
|
+
}
|
|
1837
|
+
};
|
|
1838
|
+
const SUNSET_DARK = {
|
|
1839
|
+
background: r.indigo[950],
|
|
1840
|
+
earth: r.indigo[900],
|
|
1841
|
+
water: r.indigo[1e3],
|
|
1842
|
+
parkA: r.indigo[850],
|
|
1843
|
+
parkB: r.indigo[800],
|
|
1844
|
+
woodA: r.indigo[850],
|
|
1845
|
+
woodB: r.indigo[800],
|
|
1846
|
+
scrubA: r.indigo[900],
|
|
1847
|
+
scrubB: r.indigo[850],
|
|
1848
|
+
sand: r.peach[800],
|
|
1849
|
+
beach: r.indigo[850],
|
|
1850
|
+
glacier: r.indigo[700],
|
|
1851
|
+
institutional: r.indigo[850],
|
|
1852
|
+
pedestrian: r.indigo[850],
|
|
1853
|
+
aerodrome: r.indigo[850],
|
|
1854
|
+
runway: r.indigo[800],
|
|
1855
|
+
pier: r.indigo[600],
|
|
1856
|
+
buildings: r.indigo[850],
|
|
1857
|
+
railway: r.indigo[700],
|
|
1858
|
+
boundaries: r.peach[300],
|
|
1859
|
+
roads: {
|
|
1860
|
+
other: r.indigo[800],
|
|
1861
|
+
otherCasing: r.indigo[950],
|
|
1862
|
+
minor: r.indigo[700],
|
|
1863
|
+
minorCasing: r.indigo[950],
|
|
1864
|
+
service: r.indigo[800],
|
|
1865
|
+
serviceCasing: r.indigo[950],
|
|
1866
|
+
major: r.indigo[600],
|
|
1867
|
+
majorCasing: r.indigo[950],
|
|
1868
|
+
highway: r.coral[500],
|
|
1869
|
+
highwayCasing: r.indigo[950],
|
|
1870
|
+
link: r.coral[600],
|
|
1871
|
+
linkCasing: r.indigo[950]
|
|
1872
|
+
},
|
|
1873
|
+
tunnelFill: r.indigo[850],
|
|
1874
|
+
tunnelCasing: r.indigo[950],
|
|
1875
|
+
bridgeCasing: r.indigo[950],
|
|
1876
|
+
labels: {
|
|
1877
|
+
city: r.peach[100],
|
|
1878
|
+
cityHalo: r.indigo[900],
|
|
1879
|
+
state: r.peach[300],
|
|
1880
|
+
stateHalo: r.indigo[900],
|
|
1881
|
+
country: r.peach[300],
|
|
1882
|
+
subplace: r.peach[300],
|
|
1883
|
+
subplaceHalo: r.indigo[900],
|
|
1884
|
+
address: r.indigo[400],
|
|
1885
|
+
addressHalo: r.indigo[900],
|
|
1886
|
+
roadMinor: r.indigo[400],
|
|
1887
|
+
roadMinorHalo: r.indigo[900],
|
|
1888
|
+
roadMajor: r.peach[100],
|
|
1889
|
+
roadMajorHalo: r.indigo[900],
|
|
1890
|
+
ocean: r.indigo[500]
|
|
1891
|
+
},
|
|
1892
|
+
pois: {
|
|
1893
|
+
blue: r.wave[400],
|
|
1894
|
+
green: r.verdant[400],
|
|
1895
|
+
lapis: r.sky[400],
|
|
1896
|
+
pink: r.rose[400],
|
|
1897
|
+
red: r.rose[400],
|
|
1898
|
+
slategray: r.graphite[400],
|
|
1899
|
+
tangerine: r.sandstone[400],
|
|
1900
|
+
turquoise: r.aqua[400]
|
|
1901
|
+
},
|
|
1902
|
+
landcover: {
|
|
1903
|
+
grassland: r.indigo[900],
|
|
1904
|
+
barren: r.peach[800],
|
|
1905
|
+
urban_area: r.indigo[900],
|
|
1906
|
+
farmland: r.indigo[850],
|
|
1907
|
+
glacier: r.indigo[700],
|
|
1908
|
+
scrub: r.indigo[850],
|
|
1909
|
+
forest: r.indigo[800]
|
|
1910
|
+
}
|
|
1911
|
+
};
|
|
1912
|
+
const BOLD_LIGHT = {
|
|
1913
|
+
background: r.paper[100],
|
|
1914
|
+
// A step below `base`, which owns the lightest paper: two styles cannot share a land colour
|
|
1915
|
+
// (the /styles suite asserts twelve distinct earths), and the saturated water, parks and
|
|
1916
|
+
// amber highway read better off a ground that is a shade warmer than the default map's.
|
|
1917
|
+
earth: r.paper[50],
|
|
1918
|
+
water: r.azure[500],
|
|
1919
|
+
parkA: r.fern[300],
|
|
1920
|
+
parkB: r.fern[400],
|
|
1921
|
+
woodA: r.jade[500],
|
|
1922
|
+
woodB: r.jade[600],
|
|
1923
|
+
scrubA: r.fern[200],
|
|
1924
|
+
scrubB: r.fern[300],
|
|
1925
|
+
sand: r.sandstone[200],
|
|
1926
|
+
beach: r.sandstone[100],
|
|
1927
|
+
glacier: r.ink[25],
|
|
1928
|
+
institutional: r.paper[100],
|
|
1929
|
+
pedestrian: r.paper[50],
|
|
1930
|
+
aerodrome: r.paper[200],
|
|
1931
|
+
runway: r.paper[300],
|
|
1932
|
+
pier: r.azure[300],
|
|
1933
|
+
buildings: r.paper[200],
|
|
1934
|
+
railway: r.paper[400],
|
|
1935
|
+
boundaries: r.indigo[600],
|
|
1936
|
+
roads: {
|
|
1937
|
+
other: "#FFFFFF",
|
|
1938
|
+
otherCasing: r.paper[200],
|
|
1939
|
+
minor: "#FFFFFF",
|
|
1940
|
+
minorCasing: r.paper[200],
|
|
1941
|
+
service: "#FFFFFF",
|
|
1942
|
+
serviceCasing: r.paper[200],
|
|
1943
|
+
major: "#FFFFFF",
|
|
1944
|
+
majorCasing: r.paper[300],
|
|
1945
|
+
highway: r.amber[400],
|
|
1946
|
+
highwayCasing: r.amber[600],
|
|
1947
|
+
link: r.amber[300],
|
|
1948
|
+
linkCasing: r.amber[500]
|
|
1949
|
+
},
|
|
1950
|
+
tunnelFill: r.paper[100],
|
|
1951
|
+
tunnelCasing: r.paper[200],
|
|
1952
|
+
bridgeCasing: r.paper[500],
|
|
1953
|
+
labels: {
|
|
1954
|
+
city: r.ink[1e3],
|
|
1955
|
+
cityHalo: r.paper[25],
|
|
1956
|
+
state: r.ink[700],
|
|
1957
|
+
stateHalo: r.paper[25],
|
|
1958
|
+
country: r.ink[700],
|
|
1959
|
+
subplace: r.ink[700],
|
|
1960
|
+
subplaceHalo: r.paper[25],
|
|
1961
|
+
address: r.ink[700],
|
|
1962
|
+
addressHalo: r.paper[25],
|
|
1963
|
+
roadMinor: r.ink[700],
|
|
1964
|
+
roadMinorHalo: r.paper[25],
|
|
1965
|
+
roadMajor: r.ink[800],
|
|
1966
|
+
roadMajorHalo: r.paper[25],
|
|
1967
|
+
ocean: r.azure[950]
|
|
1968
|
+
},
|
|
1969
|
+
pois: {
|
|
1970
|
+
blue: r.wave[700],
|
|
1971
|
+
green: r.verdant[700],
|
|
1972
|
+
lapis: r.sky[700],
|
|
1973
|
+
pink: r.rose[600],
|
|
1974
|
+
red: r.rose[700],
|
|
1975
|
+
slategray: r.graphite[700],
|
|
1976
|
+
tangerine: r.sandstone[500],
|
|
1977
|
+
turquoise: r.aqua[700]
|
|
1978
|
+
},
|
|
1979
|
+
landcover: {
|
|
1980
|
+
grassland: r.fern[200],
|
|
1981
|
+
barren: r.sandstone[200],
|
|
1982
|
+
urban_area: r.paper[100],
|
|
1983
|
+
farmland: r.sandstone[100],
|
|
1984
|
+
glacier: r.ink[25],
|
|
1985
|
+
scrub: r.fern[300],
|
|
1986
|
+
forest: r.jade[400]
|
|
1987
|
+
}
|
|
1988
|
+
};
|
|
1989
|
+
const BOLD_DARK = {
|
|
1990
|
+
// A warm ground under cool detail. `outdoor` owns ink[950] and ink is packed below it here
|
|
1991
|
+
// (900 scrub and buildings, 850 runway), so the ground moves to paper, which is where this
|
|
1992
|
+
// style's light half already sits.
|
|
1993
|
+
background: r.paper[1e3],
|
|
1994
|
+
earth: r.paper[950],
|
|
1995
|
+
water: r.azure[800],
|
|
1996
|
+
parkA: r.fern[800],
|
|
1997
|
+
parkB: r.fern[700],
|
|
1998
|
+
woodA: r.jade[850],
|
|
1999
|
+
woodB: r.jade[800],
|
|
2000
|
+
scrubA: r.ink[900],
|
|
2001
|
+
scrubB: r.ink[850],
|
|
2002
|
+
sand: r.sandstone[500],
|
|
2003
|
+
beach: r.ink[900],
|
|
2004
|
+
glacier: r.ink[800],
|
|
2005
|
+
institutional: r.ink[900],
|
|
2006
|
+
pedestrian: r.ink[900],
|
|
2007
|
+
aerodrome: r.ink[900],
|
|
2008
|
+
runway: r.ink[850],
|
|
2009
|
+
pier: r.azure[600],
|
|
2010
|
+
buildings: r.ink[900],
|
|
2011
|
+
railway: r.ink[700],
|
|
2012
|
+
boundaries: r.indigo[500],
|
|
2013
|
+
roads: {
|
|
2014
|
+
other: r.ink[850],
|
|
2015
|
+
otherCasing: r.ink[1e3],
|
|
2016
|
+
minor: r.ink[800],
|
|
2017
|
+
minorCasing: r.ink[1e3],
|
|
2018
|
+
service: r.ink[850],
|
|
2019
|
+
serviceCasing: r.ink[1e3],
|
|
2020
|
+
major: r.ink[700],
|
|
2021
|
+
majorCasing: r.ink[1e3],
|
|
2022
|
+
highway: r.amber[500],
|
|
2023
|
+
highwayCasing: r.ink[1e3],
|
|
2024
|
+
link: r.amber[600],
|
|
2025
|
+
linkCasing: r.ink[1e3]
|
|
2026
|
+
},
|
|
2027
|
+
tunnelFill: r.ink[900],
|
|
2028
|
+
tunnelCasing: r.ink[1e3],
|
|
2029
|
+
bridgeCasing: r.ink[1e3],
|
|
2030
|
+
labels: {
|
|
2031
|
+
city: r.ink[25],
|
|
2032
|
+
cityHalo: r.ink[950],
|
|
2033
|
+
state: r.ink[300],
|
|
2034
|
+
stateHalo: r.ink[950],
|
|
2035
|
+
country: r.ink[300],
|
|
2036
|
+
subplace: r.ink[300],
|
|
2037
|
+
subplaceHalo: r.ink[950],
|
|
2038
|
+
address: r.ink[400],
|
|
2039
|
+
addressHalo: r.ink[950],
|
|
2040
|
+
roadMinor: r.ink[400],
|
|
2041
|
+
roadMinorHalo: r.ink[950],
|
|
2042
|
+
roadMajor: r.ink[100],
|
|
2043
|
+
roadMajorHalo: r.ink[950],
|
|
2044
|
+
ocean: r.azure[300]
|
|
2045
|
+
},
|
|
2046
|
+
pois: {
|
|
2047
|
+
blue: r.wave[400],
|
|
2048
|
+
green: r.verdant[400],
|
|
2049
|
+
lapis: r.sky[400],
|
|
2050
|
+
pink: r.rose[400],
|
|
2051
|
+
red: r.rose[400],
|
|
2052
|
+
slategray: r.graphite[400],
|
|
2053
|
+
tangerine: r.sandstone[400],
|
|
2054
|
+
turquoise: r.aqua[400]
|
|
2055
|
+
},
|
|
2056
|
+
landcover: {
|
|
2057
|
+
grassland: r.ink[900],
|
|
2058
|
+
barren: r.sandstone[500],
|
|
2059
|
+
urban_area: r.ink[950],
|
|
2060
|
+
farmland: r.ink[900],
|
|
2061
|
+
glacier: r.ink[800],
|
|
2062
|
+
scrub: r.ink[850],
|
|
2063
|
+
forest: r.jade[850]
|
|
2064
|
+
}
|
|
2065
|
+
};
|
|
2066
|
+
const PASTEL_LIGHT = {
|
|
2067
|
+
background: r.lilac[50],
|
|
2068
|
+
earth: r.lilac[25],
|
|
2069
|
+
water: r.cobalt[400],
|
|
2070
|
+
parkA: r.jade[300],
|
|
2071
|
+
parkB: r.jade[400],
|
|
2072
|
+
woodA: r.fern[300],
|
|
2073
|
+
woodB: r.fern[400],
|
|
2074
|
+
scrubA: r.jade[200],
|
|
2075
|
+
scrubB: r.jade[300],
|
|
2076
|
+
sand: r.sandstone[200],
|
|
2077
|
+
beach: r.sandstone[100],
|
|
2078
|
+
glacier: r.ink[25],
|
|
2079
|
+
institutional: r.lilac[100],
|
|
2080
|
+
pedestrian: r.lilac[50],
|
|
2081
|
+
aerodrome: r.lilac[200],
|
|
2082
|
+
runway: r.lilac[300],
|
|
2083
|
+
pier: r.cobalt[300],
|
|
2084
|
+
buildings: r.lilac[200],
|
|
2085
|
+
railway: r.lilac[400],
|
|
2086
|
+
boundaries: r.indigo[500],
|
|
2087
|
+
roads: {
|
|
2088
|
+
other: "#FFFFFF",
|
|
2089
|
+
otherCasing: r.lilac[200],
|
|
2090
|
+
minor: "#FFFFFF",
|
|
2091
|
+
minorCasing: r.lilac[200],
|
|
2092
|
+
service: "#FFFFFF",
|
|
2093
|
+
serviceCasing: r.lilac[200],
|
|
2094
|
+
major: "#FFFFFF",
|
|
2095
|
+
majorCasing: r.lilac[300],
|
|
2096
|
+
highway: r.coral[400],
|
|
2097
|
+
highwayCasing: r.coral[500],
|
|
2098
|
+
link: r.coral[300],
|
|
2099
|
+
linkCasing: r.coral[400]
|
|
2100
|
+
},
|
|
2101
|
+
tunnelFill: r.lilac[100],
|
|
2102
|
+
tunnelCasing: r.lilac[200],
|
|
2103
|
+
bridgeCasing: r.lilac[500],
|
|
2104
|
+
labels: {
|
|
2105
|
+
city: r.lilac[1e3],
|
|
2106
|
+
cityHalo: r.lilac[25],
|
|
2107
|
+
state: r.lilac[700],
|
|
2108
|
+
stateHalo: r.lilac[25],
|
|
2109
|
+
country: r.lilac[700],
|
|
2110
|
+
subplace: r.lilac[700],
|
|
2111
|
+
subplaceHalo: r.lilac[25],
|
|
2112
|
+
address: r.lilac[700],
|
|
2113
|
+
addressHalo: r.lilac[25],
|
|
2114
|
+
roadMinor: r.lilac[700],
|
|
2115
|
+
roadMinorHalo: r.lilac[25],
|
|
2116
|
+
roadMajor: r.lilac[800],
|
|
2117
|
+
roadMajorHalo: r.lilac[25],
|
|
2118
|
+
ocean: r.cobalt[800]
|
|
2119
|
+
},
|
|
2120
|
+
pois: {
|
|
2121
|
+
blue: r.wave[700],
|
|
2122
|
+
green: r.verdant[700],
|
|
2123
|
+
lapis: r.sky[700],
|
|
2124
|
+
pink: r.rose[600],
|
|
2125
|
+
red: r.rose[700],
|
|
2126
|
+
slategray: r.graphite[700],
|
|
2127
|
+
tangerine: r.sandstone[500],
|
|
2128
|
+
turquoise: r.aqua[700]
|
|
2129
|
+
},
|
|
2130
|
+
landcover: {
|
|
2131
|
+
grassland: r.jade[200],
|
|
2132
|
+
barren: r.sandstone[200],
|
|
2133
|
+
urban_area: r.lilac[100],
|
|
2134
|
+
farmland: r.amber[200],
|
|
2135
|
+
glacier: r.ink[25],
|
|
2136
|
+
scrub: r.jade[300],
|
|
2137
|
+
forest: r.fern[400]
|
|
2138
|
+
}
|
|
2139
|
+
};
|
|
2140
|
+
const PASTEL_DARK = {
|
|
2141
|
+
background: r.lilac[1e3],
|
|
2142
|
+
earth: r.lilac[950],
|
|
2143
|
+
// Water lighter than land, which `blueprint`, `tropic` and `bold` already do: the three
|
|
2144
|
+
// styles whose water is the thing you remember about them. This one's is periwinkle, and at
|
|
2145
|
+
// cobalt[950] the dark half had turned it near-black, so the name stopped being true after
|
|
2146
|
+
// sundown. Lifting it also unpins the ground, which had to sit at `orchid`'s lilac[900]
|
|
2147
|
+
// because the only free step below was within 1.01:1 of that near-black water.
|
|
2148
|
+
water: r.cobalt[800],
|
|
2149
|
+
parkA: r.jade[850],
|
|
2150
|
+
parkB: r.jade[800],
|
|
2151
|
+
woodA: r.fern[800],
|
|
2152
|
+
woodB: r.fern[700],
|
|
2153
|
+
scrubA: r.lilac[850],
|
|
2154
|
+
scrubB: r.jade[850],
|
|
2155
|
+
sand: r.sandstone[500],
|
|
2156
|
+
beach: r.lilac[850],
|
|
2157
|
+
glacier: r.lilac[700],
|
|
2158
|
+
institutional: r.lilac[850],
|
|
2159
|
+
pedestrian: r.lilac[850],
|
|
2160
|
+
aerodrome: r.lilac[850],
|
|
2161
|
+
runway: r.lilac[800],
|
|
2162
|
+
pier: r.cobalt[600],
|
|
2163
|
+
buildings: r.lilac[850],
|
|
2164
|
+
railway: r.lilac[700],
|
|
2165
|
+
boundaries: r.indigo[400],
|
|
2166
|
+
roads: {
|
|
2167
|
+
other: r.lilac[800],
|
|
2168
|
+
otherCasing: r.lilac[1e3],
|
|
2169
|
+
minor: r.lilac[700],
|
|
2170
|
+
minorCasing: r.lilac[1e3],
|
|
2171
|
+
service: r.lilac[800],
|
|
2172
|
+
serviceCasing: r.lilac[1e3],
|
|
2173
|
+
major: r.lilac[600],
|
|
2174
|
+
majorCasing: r.lilac[1e3],
|
|
2175
|
+
highway: r.coral[400],
|
|
2176
|
+
highwayCasing: r.lilac[1e3],
|
|
2177
|
+
link: r.coral[500],
|
|
2178
|
+
linkCasing: r.lilac[1e3]
|
|
2179
|
+
},
|
|
2180
|
+
tunnelFill: r.lilac[850],
|
|
2181
|
+
tunnelCasing: r.lilac[1e3],
|
|
2182
|
+
bridgeCasing: r.lilac[1e3],
|
|
2183
|
+
labels: {
|
|
2184
|
+
city: r.lilac[25],
|
|
2185
|
+
cityHalo: r.lilac[950],
|
|
2186
|
+
state: r.lilac[300],
|
|
2187
|
+
stateHalo: r.lilac[950],
|
|
2188
|
+
country: r.lilac[300],
|
|
2189
|
+
subplace: r.lilac[300],
|
|
2190
|
+
subplaceHalo: r.lilac[950],
|
|
2191
|
+
address: r.lilac[400],
|
|
2192
|
+
addressHalo: r.lilac[950],
|
|
2193
|
+
roadMinor: r.lilac[400],
|
|
2194
|
+
roadMinorHalo: r.lilac[950],
|
|
2195
|
+
roadMajor: r.lilac[100],
|
|
2196
|
+
roadMajorHalo: r.lilac[950],
|
|
2197
|
+
ocean: r.cobalt[400]
|
|
2198
|
+
},
|
|
2199
|
+
pois: {
|
|
2200
|
+
blue: r.wave[400],
|
|
2201
|
+
green: r.verdant[400],
|
|
2202
|
+
lapis: r.sky[400],
|
|
2203
|
+
pink: r.rose[400],
|
|
2204
|
+
red: r.rose[400],
|
|
2205
|
+
slategray: r.graphite[400],
|
|
2206
|
+
tangerine: r.sandstone[400],
|
|
2207
|
+
turquoise: r.aqua[400]
|
|
2208
|
+
},
|
|
2209
|
+
landcover: {
|
|
2210
|
+
grassland: r.lilac[850],
|
|
2211
|
+
barren: r.sandstone[500],
|
|
2212
|
+
urban_area: r.lilac[900],
|
|
2213
|
+
farmland: r.lilac[850],
|
|
2214
|
+
glacier: r.lilac[700],
|
|
2215
|
+
scrub: r.lilac[850],
|
|
2216
|
+
forest: r.fern[800]
|
|
2217
|
+
}
|
|
2218
|
+
};
|
|
1652
2219
|
return {
|
|
1653
2220
|
base: { light: BASE_LIGHT, dark: BASE_DARK },
|
|
1654
2221
|
muted: { light: MUTED_LIGHT, dark: MUTED_DARK },
|
|
1655
2222
|
outdoor: { light: OUTDOOR_LIGHT, dark: OUTDOOR_DARK },
|
|
1656
|
-
decimal: { light: DECIMAL_LIGHT, dark: DECIMAL_DARK },
|
|
1657
2223
|
blueprint: { light: BLUEPRINT_LIGHT, dark: BLUEPRINT_DARK },
|
|
1658
2224
|
blush: { light: BLUSH_LIGHT, dark: BLUSH_DARK },
|
|
1659
2225
|
orchid: { light: ORCHID_LIGHT, dark: ORCHID_DARK },
|
|
1660
2226
|
canopy: { light: CANOPY_LIGHT, dark: CANOPY_DARK },
|
|
1661
|
-
lagoon: { light: LAGOON_LIGHT, dark: LAGOON_DARK }
|
|
2227
|
+
lagoon: { light: LAGOON_LIGHT, dark: LAGOON_DARK },
|
|
2228
|
+
tropic: { light: TROPIC_LIGHT, dark: TROPIC_DARK },
|
|
2229
|
+
sunset: { light: SUNSET_LIGHT, dark: SUNSET_DARK },
|
|
2230
|
+
bold: { light: BOLD_LIGHT, dark: BOLD_DARK },
|
|
2231
|
+
pastel: { light: PASTEL_LIGHT, dark: PASTEL_DARK }
|
|
1662
2232
|
};
|
|
1663
2233
|
}
|
|
1664
2234
|
var RECIPES = buildRecipes(STOCK_RAMPS);
|
|
@@ -1833,12 +2403,15 @@ var STYLE_THEMES = {
|
|
|
1833
2403
|
base: { v: 1, name: "base", base: "base" },
|
|
1834
2404
|
muted: { v: 1, name: "muted", base: "muted" },
|
|
1835
2405
|
outdoor: { v: 1, name: "outdoor", base: "outdoor" },
|
|
1836
|
-
decimal: { v: 1, name: "decimal", base: "decimal" },
|
|
1837
2406
|
blueprint: { v: 1, name: "blueprint", base: "blueprint" },
|
|
1838
2407
|
blush: { v: 1, name: "blush", base: "blush" },
|
|
1839
2408
|
orchid: { v: 1, name: "orchid", base: "orchid" },
|
|
1840
2409
|
canopy: { v: 1, name: "canopy", base: "canopy" },
|
|
1841
|
-
lagoon: { v: 1, name: "lagoon", base: "lagoon" }
|
|
2410
|
+
lagoon: { v: 1, name: "lagoon", base: "lagoon" },
|
|
2411
|
+
tropic: { v: 1, name: "tropic", base: "tropic" },
|
|
2412
|
+
sunset: { v: 1, name: "sunset", base: "sunset" },
|
|
2413
|
+
bold: { v: 1, name: "bold", base: "bold" },
|
|
2414
|
+
pastel: { v: 1, name: "pastel", base: "pastel" }
|
|
1842
2415
|
};
|
|
1843
2416
|
|
|
1844
2417
|
// src/oklch.ts
|
|
@@ -2088,11 +2661,15 @@ function generateTheme(base, seeds) {
|
|
|
2088
2661
|
cobalt: reRamp(STOCK_RAMPS.cobalt, seeds.land, CHROMA_CAP),
|
|
2089
2662
|
rose: reRamp(STOCK_RAMPS.rose, seeds.land, CHROMA_CAP),
|
|
2090
2663
|
lilac: reRamp(STOCK_RAMPS.lilac, seeds.land, NEUTRAL_CHROMA_CAP),
|
|
2664
|
+
linen: reRamp(STOCK_RAMPS.linen, seeds.land, NEUTRAL_CHROMA_CAP),
|
|
2665
|
+
indigo: reRamp(STOCK_RAMPS.indigo, seeds.land, CHROMA_CAP),
|
|
2091
2666
|
aqua: reRamp(STOCK_RAMPS.aqua, seeds.nature, CHROMA_CAP),
|
|
2092
2667
|
wave: reRamp(STOCK_RAMPS.wave, seeds.water, CHROMA_CAP),
|
|
2093
2668
|
sky: reRamp(STOCK_RAMPS.sky, seeds.water, CHROMA_CAP),
|
|
2094
2669
|
mist: reRamp(STOCK_RAMPS.mist, seeds.water, CHROMA_CAP),
|
|
2095
|
-
|
|
2670
|
+
azure: reRamp(STOCK_RAMPS.azure, seeds.water, CHROMA_CAP),
|
|
2671
|
+
verdant: reRamp(STOCK_RAMPS.verdant, seeds.nature, CHROMA_CAP),
|
|
2672
|
+
peach: reRamp(STOCK_RAMPS.peach, seeds.nature, CHROMA_CAP)
|
|
2096
2673
|
};
|
|
2097
2674
|
const generated = buildRecipes(ramps);
|
|
2098
2675
|
const doc = { v: 1, base, seeds: { ...seeds } };
|
|
@@ -2140,6 +2717,48 @@ var THEME_PRESETS = [
|
|
|
2140
2717
|
{
|
|
2141
2718
|
name: "chinook",
|
|
2142
2719
|
seeds: { land: "#9C8A5D", water: "#56789C", nature: "#8A9A5B", accent: "#D95D39" }
|
|
2720
|
+
},
|
|
2721
|
+
// The seven below (2026-09-09) are deliberately unlike one another and unlike the landscapes
|
|
2722
|
+
// above: each is one idea pushed to the edge of what the generator allows. Land is capped at a
|
|
2723
|
+
// cast, so the idea lives in the water and nature seeds, which can go to full chroma.
|
|
2724
|
+
//
|
|
2725
|
+
// Fifteen is the ceiling for a three-character code: the preset index sits above bit 8, and
|
|
2726
|
+
// index 15 pushes every style past 62² (`preset.ts`). A sixteenth preset still works, at four
|
|
2727
|
+
// characters, but `preset.test.ts` holds the curated set to three.
|
|
2728
|
+
{
|
|
2729
|
+
// Lava for water, scorched olive for nature, warm ash land, a sulphur accent.
|
|
2730
|
+
name: "magma",
|
|
2731
|
+
seeds: { land: "#8A7A72", water: "#D6461A", nature: "#5C5A32", accent: "#FFC61A" }
|
|
2732
|
+
},
|
|
2733
|
+
{
|
|
2734
|
+
// Electric cyan water, acid-green nature, a violet cast on the land, hot-pink accent.
|
|
2735
|
+
name: "neon",
|
|
2736
|
+
seeds: { land: "#7C78A0", water: "#00D5F2", nature: "#8CE800", accent: "#FF2E9E" }
|
|
2737
|
+
},
|
|
2738
|
+
{
|
|
2739
|
+
// Bubblegum water, turquoise nature, a pink cast, a lemon accent.
|
|
2740
|
+
name: "candy",
|
|
2741
|
+
seeds: { land: "#A3808E", water: "#FF6FB5", nature: "#2ED1C2", accent: "#FFD400" }
|
|
2742
|
+
},
|
|
2743
|
+
{
|
|
2744
|
+
// Deep violet water, plum nature, violet land, a lime accent.
|
|
2745
|
+
name: "ultraviolet",
|
|
2746
|
+
seeds: { land: "#7A6E9E", water: "#5A2ECC", nature: "#9B4DCA", accent: "#C8FF3A" }
|
|
2747
|
+
},
|
|
2748
|
+
{
|
|
2749
|
+
// No chroma anywhere but the accent: a greyscale map with one red.
|
|
2750
|
+
name: "noir",
|
|
2751
|
+
seeds: { land: "#808080", water: "#6E6E6E", nature: "#707070", accent: "#E10600" }
|
|
2752
|
+
},
|
|
2753
|
+
{
|
|
2754
|
+
// Brown everything: a walnut cast, tea-coloured water, ochre nature, oxblood accent.
|
|
2755
|
+
name: "sepia",
|
|
2756
|
+
seeds: { land: "#8B7355", water: "#8C6A42", nature: "#A48A4A", accent: "#7A1F1F" }
|
|
2757
|
+
},
|
|
2758
|
+
{
|
|
2759
|
+
// Ultramarine water, navy-teal nature, a blue cast on the land, a coral accent.
|
|
2760
|
+
name: "ultramarine",
|
|
2761
|
+
seeds: { land: "#6F7A9C", water: "#1F3BFF", nature: "#215E7A", accent: "#FF6A4D" }
|
|
2143
2762
|
}
|
|
2144
2763
|
];
|
|
2145
2764
|
var wrap = (h) => (h % 360 + 360) % 360;
|
|
@@ -2247,7 +2866,11 @@ var STYLE_SLOTS = [
|
|
|
2247
2866
|
"blush",
|
|
2248
2867
|
"orchid",
|
|
2249
2868
|
"canopy",
|
|
2250
|
-
"lagoon"
|
|
2869
|
+
"lagoon",
|
|
2870
|
+
"tropic",
|
|
2871
|
+
"sunset",
|
|
2872
|
+
"bold",
|
|
2873
|
+
"pastel"
|
|
2251
2874
|
];
|
|
2252
2875
|
var STYLE_BITS = 5n;
|
|
2253
2876
|
var KIND_BITS = 2n;
|
|
@@ -2421,7 +3044,8 @@ function decodePreset(code) {
|
|
|
2421
3044
|
rest >>= bits;
|
|
2422
3045
|
return value;
|
|
2423
3046
|
};
|
|
2424
|
-
const
|
|
3047
|
+
const slot = STYLE_SLOTS[Number(take(STYLE_BITS))];
|
|
3048
|
+
const base = slot ? normalizeThemeBase(slot) : null;
|
|
2425
3049
|
if (!base) throw new ThemeError("invalid theme", ["preset style is out of range"]);
|
|
2426
3050
|
const kind = take(KIND_BITS);
|
|
2427
3051
|
const hasLayers = take(1n) === 1n;
|
|
@@ -2540,6 +3164,77 @@ async function decodeDeflate(code) {
|
|
|
2540
3164
|
}
|
|
2541
3165
|
return validateTheme(parsed);
|
|
2542
3166
|
}
|
|
3167
|
+
|
|
3168
|
+
// src/seeds-from-palette.ts
|
|
3169
|
+
var CHROMATIC_FLOOR = 0.04;
|
|
3170
|
+
var HUE_DEDUP = 20;
|
|
3171
|
+
var WATER_HUE = { lo: 190, hi: 270 };
|
|
3172
|
+
var NATURE_HUE = { lo: 100, hi: 170 };
|
|
3173
|
+
var DISPLAY_L = { lo: 0.35, hi: 0.7 };
|
|
3174
|
+
var wrapHue = (h) => (h % 360 + 360) % 360;
|
|
3175
|
+
var hueDelta = (a, b) => {
|
|
3176
|
+
const d = Math.abs(wrapHue(a) - wrapHue(b));
|
|
3177
|
+
return Math.min(d, 360 - d);
|
|
3178
|
+
};
|
|
3179
|
+
var inBand = (h, band) => {
|
|
3180
|
+
const hue = wrapHue(h);
|
|
3181
|
+
return hue >= band.lo && hue <= band.hi;
|
|
3182
|
+
};
|
|
3183
|
+
var normalizeHex = (hex) => {
|
|
3184
|
+
const raw = hex.startsWith("#") ? hex.slice(1) : hex;
|
|
3185
|
+
return `#${raw.slice(0, 6).toUpperCase()}`;
|
|
3186
|
+
};
|
|
3187
|
+
var parse = (color) => {
|
|
3188
|
+
if (!/^#?[0-9a-fA-F]{6}/.test(color.hex)) return null;
|
|
3189
|
+
const hex = normalizeHex(color.hex);
|
|
3190
|
+
const { l, c, h } = hexToOklch(hex);
|
|
3191
|
+
if (!Number.isFinite(l) || !Number.isFinite(c) || !Number.isFinite(h)) return null;
|
|
3192
|
+
return { hex, proportion: Math.max(color.proportion, 0), l, c, h, score: 0 };
|
|
3193
|
+
};
|
|
3194
|
+
var displaySeed = (color) => oklchToHex({
|
|
3195
|
+
l: Math.min(DISPLAY_L.hi, Math.max(DISPLAY_L.lo, color.l)),
|
|
3196
|
+
c: color.c,
|
|
3197
|
+
h: color.h
|
|
3198
|
+
});
|
|
3199
|
+
var byScore = (a, b) => b.score - a.score || b.proportion - a.proportion || a.hex.localeCompare(b.hex);
|
|
3200
|
+
var distinctHues = (ranked) => {
|
|
3201
|
+
const out = [];
|
|
3202
|
+
for (const color of ranked) {
|
|
3203
|
+
if (out.some((kept) => hueDelta(kept.h, color.h) < HUE_DEDUP)) continue;
|
|
3204
|
+
out.push(color);
|
|
3205
|
+
}
|
|
3206
|
+
return out;
|
|
3207
|
+
};
|
|
3208
|
+
var pickInBand = (candidates, band) => candidates.find((color) => inBand(color.h, band));
|
|
3209
|
+
function fromNeutrals(neutrals) {
|
|
3210
|
+
const mid = neutrals.slice().sort((a, b) => Math.abs(a.l - 0.5) - Math.abs(b.l - 0.5))[0] ?? parse({ hex: "#808080", proportion: 1 });
|
|
3211
|
+
const grey = displaySeed(mid);
|
|
3212
|
+
return { land: grey, water: grey, nature: grey, accent: DEFAULT_SEEDS.accent };
|
|
3213
|
+
}
|
|
3214
|
+
function seedsFromPalette(colors) {
|
|
3215
|
+
const parsed = colors.map(parse).filter((c) => c !== null);
|
|
3216
|
+
if (parsed.length === 0) return { ...DEFAULT_SEEDS };
|
|
3217
|
+
const chromatic = parsed.filter((c) => c.c >= CHROMATIC_FLOOR);
|
|
3218
|
+
if (chromatic.length === 0) return fromNeutrals(parsed);
|
|
3219
|
+
const total = chromatic.reduce((sum, c) => sum + c.proportion, 0) || 1;
|
|
3220
|
+
for (const color of chromatic) {
|
|
3221
|
+
color.score = 0.7 * (color.proportion / total) + 0.3 * Math.min(color.c / 0.15, 1);
|
|
3222
|
+
}
|
|
3223
|
+
const ranked = chromatic.slice().sort(byScore);
|
|
3224
|
+
const distinct = distinctHues(ranked);
|
|
3225
|
+
const land = distinct[0];
|
|
3226
|
+
const rest = distinct.slice(1);
|
|
3227
|
+
const water = pickInBand(rest, WATER_HUE) ?? rest[0] ?? land;
|
|
3228
|
+
const afterWater = distinct.filter((c) => c !== land && c !== water);
|
|
3229
|
+
const nature = pickInBand(afterWater, NATURE_HUE) ?? afterWater[0] ?? land;
|
|
3230
|
+
const accent = ranked.slice().sort((a, b) => b.c - a.c || byScore(a, b))[0];
|
|
3231
|
+
return {
|
|
3232
|
+
land: displaySeed(land),
|
|
3233
|
+
water: displaySeed(water),
|
|
3234
|
+
nature: displaySeed(nature),
|
|
3235
|
+
accent: accent.hex
|
|
3236
|
+
};
|
|
3237
|
+
}
|
|
2543
3238
|
export {
|
|
2544
3239
|
BUILDINGS_3D_LAYER_ID,
|
|
2545
3240
|
DEFAULT_LAYER_VISIBILITY,
|
|
@@ -2559,21 +3254,26 @@ export {
|
|
|
2559
3254
|
THEME_CODE_PREFIX,
|
|
2560
3255
|
THEME_PRESETS,
|
|
2561
3256
|
ThemeError,
|
|
3257
|
+
amber,
|
|
2562
3258
|
applyThemeLayers,
|
|
2563
3259
|
aqua,
|
|
3260
|
+
azure,
|
|
2564
3261
|
buildRecipes,
|
|
2565
3262
|
cobalt,
|
|
2566
3263
|
contrast,
|
|
2567
3264
|
contrastWarnings,
|
|
3265
|
+
coral,
|
|
2568
3266
|
decodePreset,
|
|
2569
3267
|
decodeTheme,
|
|
2570
3268
|
effectiveLayerOrder,
|
|
2571
3269
|
ember,
|
|
2572
3270
|
encodePreset,
|
|
2573
3271
|
encodeTheme,
|
|
3272
|
+
fern,
|
|
2574
3273
|
generateTheme,
|
|
2575
3274
|
graphite,
|
|
2576
3275
|
hexToOklch,
|
|
3276
|
+
indigo,
|
|
2577
3277
|
ink,
|
|
2578
3278
|
isLayerVisible,
|
|
2579
3279
|
isStockLayerOrder,
|
|
@@ -2582,17 +3282,20 @@ export {
|
|
|
2582
3282
|
jade,
|
|
2583
3283
|
layerGroupOf,
|
|
2584
3284
|
lilac,
|
|
3285
|
+
linen,
|
|
2585
3286
|
makeFlavor,
|
|
2586
3287
|
mergeRecipe,
|
|
2587
3288
|
mist,
|
|
2588
3289
|
normalizeThemeBase,
|
|
2589
3290
|
oklchToHex,
|
|
2590
3291
|
paper,
|
|
3292
|
+
peach,
|
|
2591
3293
|
presetId,
|
|
2592
3294
|
registryThemeKey,
|
|
2593
3295
|
resolveTheme,
|
|
2594
3296
|
rose,
|
|
2595
3297
|
sandstone,
|
|
3298
|
+
seedsFromPalette,
|
|
2596
3299
|
shuffleSeeds,
|
|
2597
3300
|
sky,
|
|
2598
3301
|
validateTheme,
|