@tileflow/maps 0.1.0-alpha.12 → 0.1.0-alpha.13

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 CHANGED
@@ -168,8 +168,8 @@ Streets selects Core's `labels.roadPlacement: 'ground'`: street names follow the
168
168
  buildings; POIs, transit names and shields remain above. Disabling roads omits their names.
169
169
  Road rings, ramp and surface ordering use [Core's replaceable defaults](../core/docs/cartographic-defaults.md).
170
170
  Streets owns its colors, widths, typography and optional time-of-day themes.
171
- Browser atmosphere is separately enabled with `atmosphere: true` on a globe map; the base definition
172
- also remains usable with Mercator and native targets.
171
+ Each theme paints a [street sky](../core/docs/street-sky.md) with night stars; `atmosphere: true`
172
+ on a globe map adds space around it. Mercator and native targets remain supported.
173
173
 
174
174
  Streets enables model trees by default (`mode: '3d'`, `fallback: 'none'`). They stay three-dimensional
175
175
  in overhead and tilted interactive browser views. Disabling vegetation removes all trees. Renderers
@@ -84,8 +84,8 @@ contains Tileflow-authored style code and original patterns plus the separately
84
84
  Garamond files documented below. `baedeker` is an official Tileflow map; it is not affiliated with
85
85
  or endorsed by Baedeker or Wagner & Debes.
86
86
 
87
- At runtime, Baedeker derives contour vectors in the browser from Mapterhorn terrain tiles. No
88
- Mapterhorn tile is packaged or redistributed by `@tileflow/maps`. Mapterhorn publishes the full
87
+ At runtime, Baedeker derives contour vectors in the browser from Tileflow Terrain tiles, which
88
+ carry Mapterhorn terrain data. No terrain tile is packaged or redistributed by `@tileflow/maps`. Mapterhorn publishes the full
89
89
  catalog of its constituent open terrain sources and their individual attribution and license terms
90
90
  at <https://mapterhorn.com/attribution/>. The compiled Style carries that link as source
91
91
  attribution.
@@ -97,15 +97,15 @@ code and artwork. Its architectural-blueprint direction uses general drafting co
97
97
  package does not include or redistribute an architectural drawing, CAD file, municipal plan,
98
98
  survey sheet, font, source image, or third-party symbol artwork.
99
99
 
100
- At runtime, Blueprint derives contour vectors in the browser from Mapterhorn terrain tiles. No
101
- Mapterhorn tile is packaged or redistributed by `@tileflow/maps`. Mapterhorn publishes the full
100
+ At runtime, Blueprint derives contour vectors in the browser from Tileflow Terrain tiles, which
101
+ carry Mapterhorn terrain data. No terrain tile is packaged or redistributed by `@tileflow/maps`. Mapterhorn publishes the full
102
102
  catalog of its constituent open terrain sources and their individual attribution and license terms
103
103
  at <https://mapterhorn.com/attribution/>. The compiled Style carries that link as source
104
104
  attribution.
105
105
 
106
106
  ## Nautical-chart references
107
107
 
108
- The `soundings` map and its eleven SVG symbols and patterns are original Tileflow code and artwork.
108
+ The `soundings` map and its twenty-seven SVG symbols and patterns are original Tileflow code and artwork.
109
109
  Its visual grammar was informed by NOAA's
110
110
  [Historical Map & Chart Collection](https://historicalcharts.noaa.gov/) and the IHO
111
111
  [S-4 and INT 1 standards index](https://iho.int/standards-and-specifications) as cartographic
@@ -130,8 +130,8 @@ not a reproduced or historically documented swisstopo colourway.
130
130
  - Historical reference: <https://www.swisstopo.admin.ch/en/siegfried-map>
131
131
  - 1873 conventional signs: <https://www.swisstopo.admin.ch/dam/en/sd-web/4OmbRYHBFpcd/Zeichenerklaerung-Siegfriedkarte-EN.pdf>
132
132
 
133
- At runtime, Siegfried derives contour vectors in the browser from Mapterhorn terrain tiles. No
134
- Mapterhorn tile is packaged or redistributed by `@tileflow/maps`. Mapterhorn publishes the full
133
+ At runtime, Siegfried derives contour vectors in the browser from Tileflow Terrain tiles, which
134
+ carry Mapterhorn terrain data. No terrain tile is packaged or redistributed by `@tileflow/maps`. Mapterhorn publishes the full
135
135
  catalog of its constituent open terrain sources and their individual attribution and license terms
136
136
  at <https://mapterhorn.com/attribution/>. The compiled Style carries that link as source
137
137
  attribution.
package/assets/README.md CHANGED
@@ -66,15 +66,20 @@ wetland. The 18 runtime IDs use `siegfried-<motif>` for the historical light tre
66
66
  packaged Cormorant Garamond faces selected by both themes. See `siegfried/README.md` and the
67
67
  package-level `THIRD_PARTY_NOTICES.md` for provenance and licensing.
68
68
 
69
- The Soundings directory contains eleven original nautical symbols and intrinsic-size patterns:
70
- `soundings-harbor`, `soundings-lighthouse`, `soundings-light-flare`, `soundings-buoy-port`,
71
- `soundings-buoy-starboard`, `soundings-buoy-cardinal`, `soundings-buoy-pillar`,
72
- `soundings-wreck`, `soundings-rock-awash`, `soundings-paper-grain`, and `soundings-water-dots`.
73
- They express familiar paper-chart concepts without bundling a historical chart, specification
74
- artwork, or navigation data. Official Soundings draws its paper and water patterns and, through
75
- theme `nautical.*` image tokens, the buoy, light, lighthouse, wreck, and harbor symbols for its
76
- Nautical marks. `tileflow.icons.json` declares those eight point symbols as SDF icons, drawn in the
77
- central 12 of 24 pixels, so each mark takes its own colour; `soundings-rock-awash` remains
69
+ The Soundings directory contains twenty-seven original nautical symbols and intrinsic-size patterns:
70
+ `soundings-harbor`, `soundings-marina`, `soundings-lighthouse`, `soundings-light-flare`,
71
+ `soundings-buoy-port`, `soundings-buoy-starboard`, `soundings-buoy-cardinal`,
72
+ `soundings-buoy-pillar`, `soundings-wreck`, `soundings-rock-awash`, six notice boards
73
+ (`soundings-notice` and its `-prohibition`, `-regulation`, `-restriction`, `-recommendation`, and
74
+ `-information` variants), `soundings-distance-mark`, eight small-craft facilities
75
+ (`soundings-facility`, `soundings-fuel-station`, `soundings-water-tap`, `soundings-slipway`,
76
+ `soundings-pump-out`, `soundings-visitor-berth`, `soundings-boat-hoist`, and `soundings-boatyard`),
77
+ `soundings-paper-grain`, and `soundings-water-dots`. They express familiar paper-chart and inland
78
+ waterway concepts without bundling a historical chart, specification artwork, sign artwork, or
79
+ navigation data. Official Soundings draws its paper and water patterns and, through theme
80
+ `nautical.*` image tokens, its point symbols for Nautical marks. `tileflow.icons.json` declares those
81
+ twenty-four point symbols as SDF icons, drawn in the central 12 of 24 pixels, so each mark takes its
82
+ own colour; `soundings-rock-awash` remains
78
83
  fixed-colour artwork and is unused because rocks are drawn as chart crosses. A generic World POI is
79
84
  deliberately not relabelled as a harbour. Soundings uses GEBCO-derived depth bands only as broad
80
85
  cartographic context, and neither it nor its Nautical marks is a navigation product.
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Boat hoist</title>
3
+ <desc>Original Tileflow boat crane pictogram.</desc>
4
+ <g fill="#000000">
5
+ <rect x="6.4" y="4" width="2.8" height="23.4"/>
6
+ <rect x="3.6" y="26.2" width="8.4" height="2.6" rx="1.3"/>
7
+ <path d="M13.4 17.6h15.2l-3 5.8H16.4l-3-5.8Z"/>
8
+ </g>
9
+ <path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.2" d="M7.8 5.4h15.6M21 5.4v8.2M15.4 17.6l5.6-4 5.6 4"/>
10
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Boatyard</title>
3
+ <desc>Original Tileflow pictogram of a boat on a cradle ashore.</desc>
4
+ <path d="M3.6 10.8h24.8l-4.6 8.6H8.2l-4.6-8.6Z" fill="#000000"/>
5
+ <path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.2" d="m10.4 19.4-2.4 7.4M21.6 19.4l2.4 7.4M4.6 27.6h22.8"/>
6
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Distance mark</title>
3
+ <desc>Original Tileflow waterway distance post pictogram.</desc>
4
+ <g fill="#000000">
5
+ <rect x="10.6" y="4" width="10.8" height="7.6" rx="1.2"/>
6
+ <rect x="14.8" y="10.8" width="2.4" height="15.4"/>
7
+ <rect x="10.2" y="25.4" width="11.6" height="2.6" rx="1.3"/>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Facility</title>
3
+ <desc>Original Tileflow small-craft facility pictogram.</desc>
4
+ <circle cx="16" cy="16" r="10.4" fill="none" stroke="#000000" stroke-width="2.4"/>
5
+ <circle cx="16" cy="16" r="4" fill="#000000"/>
6
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Fuel station</title>
3
+ <desc>Original Tileflow fuel pump pictogram.</desc>
4
+ <path fill="#000000" fill-rule="evenodd" d="M8.2 4.4h10.4a1.2 1.2 0 0 1 1.2 1.2v20.8H7V5.6a1.2 1.2 0 0 1 1.2-1.2Zm1.8 3v6h6.8v-6H10Z"/>
5
+ <path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.8 11.2h2.4a1.4 1.4 0 0 1 1.4 1.4v9.2a1.9 1.9 0 0 0 3.8 0V10.4l-2.8-3.2"/>
6
+ <rect x="5" y="26" width="16.6" height="2.6" rx="1" fill="#000000"/>
7
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Marina</title>
3
+ <desc>Original Tileflow marina pictogram: a sailing yacht.</desc>
4
+ <g fill="#000000">
5
+ <path d="M14.6 2.6v17.2H5.8L14.6 2.6Z"/>
6
+ <path d="M17 5.8 25.6 19.8H17V5.8Z"/>
7
+ <path d="M3.8 22h24.4l-3.6 5.8H7.4L3.8 22Z"/>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Information notice</title>
3
+ <desc>Original Tileflow information board pictogram with a letter i.</desc>
4
+ <rect x="5.2" y="3.2" width="21.6" height="19.6" rx="1.6" fill="none" stroke="#000000" stroke-linejoin="round" stroke-width="2.4"/>
5
+ <g fill="#000000">
6
+ <circle cx="16" cy="7.9" r="1.7"/>
7
+ <rect x="14.7" y="10.8" width="2.6" height="8.2" rx="1.1"/>
8
+ <rect x="14.8" y="22" width="2.4" height="8"/>
9
+ </g>
10
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Prohibition notice</title>
3
+ <desc>Original Tileflow prohibition board pictogram with a diagonal bar.</desc>
4
+ <g fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.4">
5
+ <rect x="5.2" y="3.2" width="21.6" height="19.6" rx="1.6"/>
6
+ <path d="m9.4 7 13.2 12"/>
7
+ </g>
8
+ <rect x="14.8" y="22" width="2.4" height="8" fill="#000000"/>
9
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Recommendation notice</title>
3
+ <desc>Original Tileflow recommendation pictogram: a diamond board on a post.</desc>
4
+ <path d="M16 2.4 26.4 12.8 16 23.2 5.6 12.8 16 2.4Z" fill="none" stroke="#000000" stroke-linejoin="round" stroke-width="2.4"/>
5
+ <g fill="#000000">
6
+ <path d="m16 8.6 4.2 4.2-4.2 4.2-4.2-4.2 4.2-4.2Z"/>
7
+ <rect x="14.8" y="22.4" width="2.4" height="7.6"/>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Regulation notice</title>
3
+ <desc>Original Tileflow mandatory board pictogram with a central disc.</desc>
4
+ <rect x="5.2" y="3.2" width="21.6" height="19.6" rx="1.6" fill="none" stroke="#000000" stroke-linejoin="round" stroke-width="2.4"/>
5
+ <g fill="#000000">
6
+ <circle cx="16" cy="13" r="4.4"/>
7
+ <rect x="14.8" y="22" width="2.4" height="8"/>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Restriction notice</title>
3
+ <desc>Original Tileflow restriction board pictogram with an exclamation mark.</desc>
4
+ <rect x="5.2" y="3.2" width="21.6" height="19.6" rx="1.6" fill="none" stroke="#000000" stroke-linejoin="round" stroke-width="2.4"/>
5
+ <g fill="#000000">
6
+ <rect x="14.7" y="6.8" width="2.6" height="8.4" rx="1.3"/>
7
+ <circle cx="16" cy="18.4" r="1.6"/>
8
+ <rect x="14.8" y="22" width="2.4" height="8"/>
9
+ </g>
10
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Notice board</title>
3
+ <desc>Original Tileflow inland notice board pictogram.</desc>
4
+ <g fill="none" stroke="#000000" stroke-linejoin="round" stroke-width="2.4">
5
+ <rect x="5.2" y="3.2" width="21.6" height="19.6" rx="1.6"/>
6
+ </g>
7
+ <g fill="#000000">
8
+ <rect x="10" y="10.6" width="12" height="2.4" rx="1.2"/>
9
+ <rect x="14.8" y="22" width="2.4" height="8"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Pump-out</title>
3
+ <desc>Original Tileflow holding-tank pump-out pictogram.</desc>
4
+ <g fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.4">
5
+ <path d="M6.8 14.4v10.4a3 3 0 0 0 3 3h12.4a3 3 0 0 0 3-3V14.4"/>
6
+ <path d="M16 23V4.6M10.8 9.6 16 4.4l5.2 5.2"/>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Slipway</title>
3
+ <desc>Original Tileflow slipway pictogram: a ramp running into the water.</desc>
4
+ <path d="M3.6 21.6 26.4 7.2v14.4H3.6Z" fill="#000000"/>
5
+ <path fill="none" stroke="#000000" stroke-linecap="round" stroke-width="2" d="M3 26.6c2.2-1.2 4.4-1.2 6.6 0s4.4 1.2 6.6 0 4.4-1.2 6.6 0 4.4 1.2 6.2.1"/>
6
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Visitor berth</title>
3
+ <desc>Original Tileflow mooring bollard pictogram for visitor berths and moorings.</desc>
4
+ <g fill="#000000">
5
+ <rect x="7.6" y="5" width="16.8" height="5" rx="2.5"/>
6
+ <rect x="12.4" y="9.4" width="7.2" height="6"/>
7
+ <path d="M10.2 15h11.6l2 11.4H8.2L10.2 15Z"/>
8
+ <rect x="5" y="25.6" width="22" height="2.6" rx="1.3"/>
9
+ </g>
10
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-16 -16 64 64">
2
+ <title>Water tap</title>
3
+ <desc>Original Tileflow drinking water tap pictogram.</desc>
4
+ <g fill="#000000">
5
+ <rect x="10.4" y="3.6" width="11.2" height="2.6" rx="1.3"/>
6
+ <rect x="14.8" y="5.6" width="2.4" height="4.4"/>
7
+ <path d="M4.8 9.4h14.6a6.4 6.4 0 0 1 6.4 6.4v2.4h-5v-2.2a1.2 1.2 0 0 0-1.2-1.2H4.8V9.4Z"/>
8
+ <path d="M23.3 20.6c1.7 2.5 2.6 4.1 2.6 5.2a2.6 2.6 0 0 1-5.2 0c0-1.1.9-2.7 2.6-5.2Z"/>
9
+ </g>
10
+ </svg>
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "icons": {
4
+ "soundings-boat-hoist": {
5
+ "representation": "sdf",
6
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
7
+ },
8
+ "soundings-boatyard": {
9
+ "representation": "sdf",
10
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
11
+ },
4
12
  "soundings-buoy-cardinal": {
5
13
  "representation": "sdf",
6
14
  "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
@@ -17,6 +25,18 @@
17
25
  "representation": "sdf",
18
26
  "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
19
27
  },
28
+ "soundings-distance-mark": {
29
+ "representation": "sdf",
30
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
31
+ },
32
+ "soundings-facility": {
33
+ "representation": "sdf",
34
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
35
+ },
36
+ "soundings-fuel-station": {
37
+ "representation": "sdf",
38
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
39
+ },
20
40
  "soundings-harbor": {
21
41
  "representation": "sdf",
22
42
  "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
@@ -29,6 +49,50 @@
29
49
  "representation": "sdf",
30
50
  "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
31
51
  },
52
+ "soundings-marina": {
53
+ "representation": "sdf",
54
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
55
+ },
56
+ "soundings-notice": {
57
+ "representation": "sdf",
58
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
59
+ },
60
+ "soundings-notice-information": {
61
+ "representation": "sdf",
62
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
63
+ },
64
+ "soundings-notice-prohibition": {
65
+ "representation": "sdf",
66
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
67
+ },
68
+ "soundings-notice-recommendation": {
69
+ "representation": "sdf",
70
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
71
+ },
72
+ "soundings-notice-regulation": {
73
+ "representation": "sdf",
74
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
75
+ },
76
+ "soundings-notice-restriction": {
77
+ "representation": "sdf",
78
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
79
+ },
80
+ "soundings-pump-out": {
81
+ "representation": "sdf",
82
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
83
+ },
84
+ "soundings-slipway": {
85
+ "representation": "sdf",
86
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
87
+ },
88
+ "soundings-visitor-berth": {
89
+ "representation": "sdf",
90
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
91
+ },
92
+ "soundings-water-tap": {
93
+ "representation": "sdf",
94
+ "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
95
+ },
32
96
  "soundings-wreck": {
33
97
  "representation": "sdf",
34
98
  "defaults": {"color": "#263D3F", "haloColor": "#F7FBF8", "haloWidth": 1, "haloBlur": 0}
package/dist/index.d.ts CHANGED
@@ -126,7 +126,6 @@ declare const baedeker: {
126
126
  readonly attribution: "Terrain: <a href=\"https://mapterhorn.com/attribution\">© Mapterhorn</a>";
127
127
  readonly contours: {
128
128
  readonly demMaxZoom: 12;
129
- readonly demUrl: "https://tiles.mapterhorn.com/{z}/{x}/{y}.webp";
130
129
  readonly index: {
131
130
  readonly color: "#5C554A";
132
131
  readonly opacity: 0.5;
@@ -320,6 +319,13 @@ declare const streets: {
320
319
  readonly dark: "dark";
321
320
  };
322
321
  readonly projection: "globe";
322
+ readonly sky: {
323
+ readonly color: _tileflow_core.TileflowThemeTokenReference<"color">;
324
+ readonly horizonColor: _tileflow_core.TileflowThemeTokenReference<"color">;
325
+ readonly horizonBlend: _tileflow_core.TileflowThemeTokenReference<"number">;
326
+ readonly glowColor: _tileflow_core.TileflowThemeTokenReference<"color">;
327
+ readonly starIntensity: 0.6;
328
+ };
323
329
  readonly data: {
324
330
  readonly generation: "v1";
325
331
  readonly selection: {
@@ -534,7 +540,6 @@ declare const blueprint: {
534
540
  readonly attribution: "Terrain: <a href=\"https://mapterhorn.com/attribution\">© Mapterhorn</a>";
535
541
  readonly contours: {
536
542
  readonly demMaxZoom: 12;
537
- readonly demUrl: "https://tiles.mapterhorn.com/{z}/{x}/{y}.webp";
538
543
  readonly index: {
539
544
  readonly color: "#6F9AB2";
540
545
  readonly opacity: 0.46;
@@ -649,7 +654,6 @@ declare const siegfried: {
649
654
  readonly attribution: "Terrain: <a href=\"https://mapterhorn.com/attribution\">© Mapterhorn</a>";
650
655
  readonly contours: {
651
656
  readonly demMaxZoom: 12;
652
- readonly demUrl: "https://tiles.mapterhorn.com/{z}/{x}/{y}.webp";
653
657
  readonly index: {
654
658
  readonly color: _tileflow_core.TileflowThemeTokenReference<"color">;
655
659
  readonly opacity: 0.86;
package/dist/index.js CHANGED
@@ -752,7 +752,6 @@ var baedeker = bindOfficialMapTheme(
752
752
  attribution: 'Terrain: <a href="https://mapterhorn.com/attribution">\xA9 Mapterhorn</a>',
753
753
  contours: {
754
754
  demMaxZoom: 12,
755
- demUrl: "https://tiles.mapterhorn.com/{z}/{x}/{y}.webp",
756
755
  index: {
757
756
  color: baedekerPalette.hachure,
758
757
  opacity: 0.5,
@@ -2055,7 +2054,6 @@ var blueprint = bindOfficialMapTheme(
2055
2054
  attribution: 'Terrain: <a href="https://mapterhorn.com/attribution">\xA9 Mapterhorn</a>',
2056
2055
  contours: {
2057
2056
  demMaxZoom: 12,
2058
- demUrl: "https://tiles.mapterhorn.com/{z}/{x}/{y}.webp",
2059
2057
  index: {
2060
2058
  color: blueprintPalette.contour,
2061
2059
  opacity: 0.46,
@@ -6647,7 +6645,6 @@ var siegfried = bindOfficialMapTheme(
6647
6645
  attribution: 'Terrain: <a href="https://mapterhorn.com/attribution">\xA9 Mapterhorn</a>',
6648
6646
  contours: {
6649
6647
  demMaxZoom: 12,
6650
- demUrl: "https://tiles.mapterhorn.com/{z}/{x}/{y}.webp",
6651
6648
  index: {
6652
6649
  color: siegfriedPalette.brown,
6653
6650
  opacity: 0.86,
@@ -7522,15 +7519,31 @@ var soundingsTheme = defineOfficialTheme({
7522
7519
  }
7523
7520
  },
7524
7521
  // Nautical marks use the chart symbols of this directory. They are single-colour silhouettes:
7525
- // buoys and light flares take each mark's own colour from the data, the others print in ink.
7522
+ // buoys, light flares and notice boards take each mark's own colour, the others print in ink.
7526
7523
  images: {
7527
7524
  "nautical.buoy": "soundings-buoy-pillar",
7528
7525
  "nautical.buoy.cardinal": "soundings-buoy-cardinal",
7529
7526
  "nautical.buoy.port": "soundings-buoy-port",
7530
7527
  "nautical.buoy.starboard": "soundings-buoy-starboard",
7528
+ "nautical.distance-mark": "soundings-distance-mark",
7529
+ "nautical.facility": "soundings-facility",
7530
+ "nautical.facility.boat-hoist": "soundings-boat-hoist",
7531
+ "nautical.facility.boatyard": "soundings-boatyard",
7532
+ "nautical.facility.fuel-station": "soundings-fuel-station",
7533
+ "nautical.facility.pump-out": "soundings-pump-out",
7534
+ "nautical.facility.slipway": "soundings-slipway",
7535
+ "nautical.facility.visitor-berth": "soundings-visitor-berth",
7536
+ "nautical.facility.water-tap": "soundings-water-tap",
7531
7537
  "nautical.harbour": "soundings-harbor",
7532
7538
  "nautical.light": "soundings-light-flare",
7533
7539
  "nautical.lighthouse": "soundings-lighthouse",
7540
+ "nautical.marina": "soundings-marina",
7541
+ "nautical.notice": "soundings-notice",
7542
+ "nautical.notice.information": "soundings-notice-information",
7543
+ "nautical.notice.prohibition": "soundings-notice-prohibition",
7544
+ "nautical.notice.recommendation": "soundings-notice-recommendation",
7545
+ "nautical.notice.regulation": "soundings-notice-regulation",
7546
+ "nautical.notice.restriction": "soundings-notice-restriction",
7534
7547
  "nautical.port": "soundings-harbor",
7535
7548
  "nautical.wreck": "soundings-wreck"
7536
7549
  },
@@ -7858,11 +7871,18 @@ var soundings = bindOfficialMapTheme(
7858
7871
  // printed ink. Technical magenta stays on operational areas, traffic separation and cables.
7859
7872
  nautical: nautical({
7860
7873
  beacons: { marker: { strokeColor: soundingsPalette.ink } },
7874
+ // Bridges and berths are structures, printed in the chart ink like piers.
7875
+ berths: { outline: { color: soundingsPalette.ink } },
7876
+ bridges: { outline: { color: soundingsPalette.ink } },
7861
7877
  buoys: { icon: { haloColor: soundingsPalette.ink }, text: chartInk },
7878
+ distanceMarks: { icon: chartInk, text: { ...chartInk, color: soundingsPalette.inkMuted } },
7879
+ facilities: { icon: chartInk, text: { ...chartInk, color: soundingsPalette.inkMuted } },
7862
7880
  harbours: { icon: chartInk, text: { ...chartInk, color: soundingsPalette.inkMuted } },
7863
7881
  hazards: { marker: { strokeColor: soundingsPalette.ink }, text: chartInk },
7882
+ labels: { bridges: { text: chartInk } },
7864
7883
  lighthouses: { icon: chartInk, text: chartInk },
7865
7884
  lights: { text: { ...chartInk, color: soundingsPalette.inkMuted } },
7885
+ notices: { icon: { haloColor: soundingsPalette.water }, text: chartInk },
7866
7886
  ports: { icon: chartInk, text: chartInk },
7867
7887
  wrecks: { icon: chartInk, text: chartInk }
7868
7888
  }),
@@ -10131,6 +10151,41 @@ var standardRoadCasingProfiles = {
10131
10151
  };
10132
10152
  var streetsRoadCasingProfiles = standardRoadCasingProfiles;
10133
10153
 
10154
+ // src/official/streets-sky.ts
10155
+ var skies = {
10156
+ day: { color: "#5C9CE6", horizon: "#DCEBF7", blend: 0.6, glow: "#FFE7B8" },
10157
+ dawn: { color: "#7F9FD6", horizon: "#F6D4BC", blend: 0.75, glow: "#FFC77A" },
10158
+ dusk: { color: "#4A4784", horizon: "#E7A3A4", blend: 0.8, glow: "#FFA552" },
10159
+ night: { color: "#0B1630", horizon: "#26365A", blend: 0.6, glow: "#B4645A" }
10160
+ };
10161
+ function channels(hex2) {
10162
+ const value = Number.parseInt(hex2.slice(1), 16);
10163
+ return [value >> 16, value >> 8 & 255, value & 255];
10164
+ }
10165
+ function hex(rgb) {
10166
+ return `#${rgb.map(
10167
+ (channel) => Math.max(0, Math.min(255, Math.round(channel))).toString(16).padStart(2, "0").toUpperCase()
10168
+ ).join("")}`;
10169
+ }
10170
+ function inFamily(color, family) {
10171
+ const rgb = channels(color);
10172
+ const gray = rgb[0] * 0.2126 + rgb[1] * 0.7152 + rgb[2] * 0.0722;
10173
+ if (family === "monochrome") return hex([gray, gray, gray]);
10174
+ if (family === "faded") return hex(rgb.map((channel) => channel + (gray - channel) * 0.35));
10175
+ return color;
10176
+ }
10177
+ function streetsSkyTokens(preset, family) {
10178
+ const sky = skies[preset];
10179
+ return {
10180
+ colors: {
10181
+ "sky.color": inFamily(sky.color, family),
10182
+ "sky.horizon": inFamily(sky.horizon, family),
10183
+ "sky.glow": inFamily(sky.glow, family)
10184
+ },
10185
+ numbers: { "sky.horizonBlend": sky.blend }
10186
+ };
10187
+ }
10188
+
10134
10189
  // src/official/streets-theme-colors.ts
10135
10190
  var streetsSurfaceProfiles = {
10136
10191
  "default-dawn": {
@@ -10602,9 +10657,9 @@ var streetsDarkColors = {
10602
10657
  "vegetation.tree.conifer.c": "#405348"
10603
10658
  };
10604
10659
  function parseStreetsColor(value) {
10605
- const hex = /^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.exec(value);
10606
- if (hex) {
10607
- const digits = hex[1];
10660
+ const hex2 = /^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.exec(value);
10661
+ if (hex2) {
10662
+ const digits = hex2[1];
10608
10663
  const expanded = digits.length < 5 ? [...digits].map((digit) => digit + digit).join("") : digits;
10609
10664
  return {
10610
10665
  r: Number.parseInt(expanded.slice(0, 2), 16),
@@ -10631,8 +10686,8 @@ function formatStreetsColor({ a, b, g, r }, format) {
10631
10686
  if (format.startsWith("rgba")) {
10632
10687
  return `rgba(${channel(r)}, ${channel(g)}, ${channel(b)}, ${Number(a.toFixed(3))})`;
10633
10688
  }
10634
- const hex = (value) => channel(value).toString(16).padStart(2, "0").toUpperCase();
10635
- return `#${hex(r)}${hex(g)}${hex(b)}${format.length === 9 ? hex(a * 255) : ""}`;
10689
+ const hex2 = (value) => channel(value).toString(16).padStart(2, "0").toUpperCase();
10690
+ return `#${hex2(r)}${hex2(g)}${hex2(b)}${format.length === 9 ? hex2(a * 255) : ""}`;
10636
10691
  }
10637
10692
  function adjustStreetsColors(colors, transform) {
10638
10693
  return Object.fromEntries(
@@ -10732,7 +10787,8 @@ function streetsPaletteColors(preset, colorTheme) {
10732
10787
  ...calibratedStreetsColors(preset, colorTheme),
10733
10788
  ...streetsCartographyColors(colorTheme, preset),
10734
10789
  "buildings.floodLight": !isDarkStreetsPreset(preset) ? "#FFFFFF" : colorTheme === "monochrome" ? "#E5E5E5" : colorTheme === "faded" ? "#F8E4C4" : "#F5CFA8",
10735
- ...streetsModelLighting(preset, colorTheme).colors
10790
+ ...streetsModelLighting(preset, colorTheme).colors,
10791
+ ...streetsSkyTokens(preset, colorTheme).colors
10736
10792
  };
10737
10793
  }
10738
10794
  function streetsLightingNumbers(preset, colorTheme) {
@@ -10742,7 +10798,8 @@ function streetsLightingNumbers(preset, colorTheme) {
10742
10798
  // Light colours already include the Faded lookup table; lamp activation uses the
10743
10799
  // corresponding untransformed brightness, independently of that appearance change.
10744
10800
  "buildings.floodLight.brightnessScale": colorTheme === "faded" ? { day: 1, dawn: 0.9203658119566795, dusk: 0.47333738050439994, night: 0.42688225390661877 }[preset] : 1,
10745
- ...streetsModelLighting(preset, colorTheme).numbers
10801
+ ...streetsModelLighting(preset, colorTheme).numbers,
10802
+ ...streetsSkyTokens(preset, colorTheme).numbers
10746
10803
  };
10747
10804
  }
10748
10805
  var streetsFonts = {
@@ -12525,6 +12582,14 @@ var streets = bindOfficialMapTheme(
12525
12582
  systemThemes: { light: "light", dark: "dark" },
12526
12583
  projection: "globe",
12527
12584
  // 'globe' | 'mercator'. Globe becomes planar at street zooms.
12585
+ // Each theme paints the sky seen when the camera tilts up the street; night shows stars.
12586
+ sky: {
12587
+ color: token9.color("sky.color"),
12588
+ horizonColor: token9.color("sky.horizon"),
12589
+ horizonBlend: token9.number("sky.horizonBlend"),
12590
+ glowColor: token9.color("sky.glow"),
12591
+ starIntensity: 0.6
12592
+ },
12528
12593
  data: {
12529
12594
  generation: "v1",
12530
12595
  selection: { kind: "current", product: "world-v1" },
@@ -109,11 +109,14 @@ fallback traced from broad GEBCO band polygons until native contour geometry is
109
109
  show the absolute `min_depth` value, not an inferred range or vessel-specific safety contour.
110
110
  Ferries are ordinary World context. Navigation marks come from `tileflow-nautical`: the theme's
111
111
  `nautical.*` image tokens select the Soundings chart symbols for buoys (port can, starboard cone,
112
- cardinal double cone, and a pillar for other buoys), lights, lighthouses, wrecks, harbours, and
113
- ports. Buoys and light flares take each mark's own colour from the data; beacons stay small coloured
114
- dots, rocks are chart crosses and stars, and lighthouse, wreck, harbour, and port symbols are
115
- printed in the chart ink. Technical magenta remains reserved for operational overlays: restricted,
116
- military, anchorage, and traffic-separation areas, traffic-separation lines, and cables. Coverage is
112
+ cardinal double cone, and a pillar for other buoys), lights, lighthouses, wrecks, harbours, marinas,
113
+ ports, inland notice boards by function, distance marks, and small-craft facilities. Buoys, light
114
+ flares, and notice boards take each mark's own colour from the data; beacons stay small coloured
115
+ dots, rocks are chart crosses and stars, and the other symbols are printed in the chart ink. Light
116
+ flares flash in their rhythm in browser maps. Bridges and berths are drawn as ink structures with
117
+ their clearances, and marinas and harbours as light outlines. Technical magenta remains reserved for
118
+ operational overlays: restricted, military, anchorage, and traffic-separation areas,
119
+ traffic-separation lines, and submarine and overhead cables. Coverage is
117
120
  a faint tint before marks appear. The map shows a "Not for navigation" notice wherever it is
118
121
  displayed. Soundings is reference cartography and is not a navigation product.
119
122
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tileflow/maps",
3
- "version": "0.1.0-alpha.12",
3
+ "version": "0.1.0-alpha.13",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Official themed Streets, Baedeker, Cívica, 1777, Siegfried, Soundings, and Blueprint maps for Tileflow.",
6
6
  "type": "module",
@@ -52,12 +52,12 @@
52
52
  "access": "public"
53
53
  },
54
54
  "peerDependencies": {
55
- "@tileflow/core": ">=0.1.0-alpha.38 <0.1.0-beta.0"
55
+ "@tileflow/core": ">=0.1.0-alpha.39 <0.1.0-beta.0"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@maplibre/maplibre-gl-style-spec": "24.8.5",
59
59
  "@maplibre/maplibre-gl-style-spec-v6": "npm:@maplibre/maplibre-gl-style-spec@26.4.4",
60
- "@tileflow/core": "0.1.0-alpha.38"
60
+ "@tileflow/core": "0.1.0-alpha.39"
61
61
  },
62
62
  "scripts": {
63
63
  "build": "tsup src/index.ts --format esm --dts --clean --no-splitting",