@tileflow/maps 0.1.0-alpha.16 → 0.1.0-alpha.17

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.
Files changed (99) hide show
  1. package/README.md +60 -58
  2. package/THIRD_PARTY_NOTICES.md +7 -0
  3. package/assets/streets/build-trees.mjs +167 -273
  4. package/assets/streets/climate/NOTICE.txt +9 -0
  5. package/assets/streets/climate/build.py +47 -0
  6. package/assets/streets/climate/koppen-geiger-1991-2020.tif +0 -0
  7. package/assets/streets/climate/recipe.json +13 -0
  8. package/assets/streets/icons/streets-tree-columnar-dark.pattern.svg +200 -105
  9. package/assets/streets/icons/streets-tree-columnar.pattern.svg +200 -105
  10. package/assets/streets/icons/streets-tree-conifer-dark.pattern.svg +260 -200
  11. package/assets/streets/icons/streets-tree-conifer.pattern.svg +260 -200
  12. package/assets/streets/icons/streets-tree-open-dark.pattern.svg +170 -200
  13. package/assets/streets/icons/streets-tree-open.pattern.svg +170 -200
  14. package/assets/streets/icons/streets-tree-round-dark.pattern.svg +160 -158
  15. package/assets/streets/icons/streets-tree-round.pattern.svg +160 -158
  16. package/assets/streets/icons/streets-tree-tall-dark.pattern.svg +166 -156
  17. package/assets/streets/icons/streets-tree-tall.pattern.svg +166 -156
  18. package/assets/streets/icons/unified-day-aerialway.svg +11 -0
  19. package/assets/streets/icons/unified-day-airport.svg +11 -0
  20. package/assets/streets/icons/unified-day-bank.svg +11 -0
  21. package/assets/streets/icons/unified-day-bar.svg +11 -0
  22. package/assets/streets/icons/unified-day-beach.svg +11 -0
  23. package/assets/streets/icons/unified-day-beauty.svg +11 -0
  24. package/assets/streets/icons/unified-day-bookstore.svg +11 -0
  25. package/assets/streets/icons/unified-day-buddhist.svg +11 -0
  26. package/assets/streets/icons/unified-day-bus.svg +11 -0
  27. package/assets/streets/icons/unified-day-campsite.svg +11 -0
  28. package/assets/streets/icons/unified-day-car-repair.svg +11 -0
  29. package/assets/streets/icons/unified-day-car.svg +11 -0
  30. package/assets/streets/icons/unified-day-charging-station.svg +11 -0
  31. package/assets/streets/icons/unified-day-christian.svg +11 -0
  32. package/assets/streets/icons/unified-day-clothing.svg +11 -0
  33. package/assets/streets/icons/unified-day-coffee.svg +11 -0
  34. package/assets/streets/icons/unified-day-college.svg +11 -0
  35. package/assets/streets/icons/unified-day-community.svg +11 -0
  36. package/assets/streets/icons/unified-day-convenience.svg +11 -0
  37. package/assets/streets/icons/unified-day-dentist.svg +11 -0
  38. package/assets/streets/icons/unified-day-doctor.svg +11 -0
  39. package/assets/streets/icons/unified-day-dog-park.svg +11 -0
  40. package/assets/streets/icons/unified-day-drinking-water.svg +11 -0
  41. package/assets/streets/icons/unified-day-education.svg +11 -0
  42. package/assets/streets/icons/unified-day-electronics.svg +11 -0
  43. package/assets/streets/icons/unified-day-embassy.svg +11 -0
  44. package/assets/streets/icons/unified-day-fast-food.svg +11 -0
  45. package/assets/streets/icons/unified-day-ferry.svg +11 -0
  46. package/assets/streets/icons/unified-day-fire-station.svg +11 -0
  47. package/assets/streets/icons/unified-day-fitness.svg +11 -0
  48. package/assets/streets/icons/unified-day-florist.svg +11 -0
  49. package/assets/streets/icons/unified-day-food.svg +11 -0
  50. package/assets/streets/icons/unified-day-fuel.svg +11 -0
  51. package/assets/streets/icons/unified-day-garden.svg +11 -0
  52. package/assets/streets/icons/unified-day-golf.svg +11 -0
  53. package/assets/streets/icons/unified-day-grocery.svg +11 -0
  54. package/assets/streets/icons/unified-day-harbor.svg +11 -0
  55. package/assets/streets/icons/unified-day-hardware.svg +11 -0
  56. package/assets/streets/icons/unified-day-health.svg +11 -0
  57. package/assets/streets/icons/unified-day-jewish.svg +11 -0
  58. package/assets/streets/icons/unified-day-laundry.svg +11 -0
  59. package/assets/streets/icons/unified-day-library.svg +11 -0
  60. package/assets/streets/icons/unified-day-lodging.svg +11 -0
  61. package/assets/streets/icons/unified-day-major-transit.svg +11 -0
  62. package/assets/streets/icons/unified-day-mountain.svg +11 -0
  63. package/assets/streets/icons/unified-day-muslim.svg +11 -0
  64. package/assets/streets/icons/unified-day-natural.svg +11 -0
  65. package/assets/streets/icons/unified-day-nature.svg +11 -0
  66. package/assets/streets/icons/unified-day-parking-garage.svg +11 -0
  67. package/assets/streets/icons/unified-day-parking.svg +11 -0
  68. package/assets/streets/icons/unified-day-pharmacy.svg +11 -0
  69. package/assets/streets/icons/unified-day-playground.svg +11 -0
  70. package/assets/streets/icons/unified-day-plaza.svg +11 -0
  71. package/assets/streets/icons/unified-day-police.svg +11 -0
  72. package/assets/streets/icons/unified-day-post.svg +11 -0
  73. package/assets/streets/icons/unified-day-prison.svg +11 -0
  74. package/assets/streets/icons/unified-day-rail-light.svg +11 -0
  75. package/assets/streets/icons/unified-day-rail.svg +11 -0
  76. package/assets/streets/icons/unified-day-services.svg +11 -0
  77. package/assets/streets/icons/unified-day-shopping.svg +11 -0
  78. package/assets/streets/icons/unified-day-sport.svg +11 -0
  79. package/assets/streets/icons/unified-day-stadium.svg +11 -0
  80. package/assets/streets/icons/unified-day-swimming.svg +11 -0
  81. package/assets/streets/icons/unified-day-toilet.svg +11 -0
  82. package/assets/streets/icons/unified-day-town-hall.svg +11 -0
  83. package/assets/streets/icons/unified-day-waterfall.svg +11 -0
  84. package/assets/streets/icons/unified-day-worship.svg +11 -0
  85. package/assets/streets/models/streets-tree-columnar.far.glb +0 -0
  86. package/assets/streets/models/streets-tree-columnar.glb +0 -0
  87. package/assets/streets/models/streets-tree-conifer.far.glb +0 -0
  88. package/assets/streets/models/streets-tree-conifer.glb +0 -0
  89. package/assets/streets/models/streets-tree-open.far.glb +0 -0
  90. package/assets/streets/models/streets-tree-open.glb +0 -0
  91. package/assets/streets/models/streets-tree-round.far.glb +0 -0
  92. package/assets/streets/models/streets-tree-round.glb +0 -0
  93. package/assets/streets/models/streets-tree-tall.far.glb +0 -0
  94. package/assets/streets/models/streets-tree-tall.glb +0 -0
  95. package/dist/index.d.ts +829 -132
  96. package/dist/index.js +1268 -468
  97. package/package.json +3 -4
  98. package/docs/design-and-assets.md +0 -247
  99. package/docs/map-1777.md +0 -91
package/README.md CHANGED
@@ -65,7 +65,7 @@ The CLI owns the interface; compiler and runtime changes require rebuilding thos
65
65
  - `baedeker`: warm travel-atlas styling, serif labels, original engraved patterns, and contours.
66
66
  - `civica`: illustrated civic-print styling with warm paper, olive parks, blue annotations, and
67
67
  vermilion landmarks.
68
- - [`map1777` (1777)](docs/map-1777.md): 1777 ink and watercolor on current data, with 3D and four times of day.
68
+ - `map1777` (1777): 1777 ink and watercolor on current data, with 3D and four times of day.
69
69
  - `siegfried`: a terrain atlas with coordinated light/dark ink palettes, contours, and engraved patterns.
70
70
  - `soundings`: bathymetric reference cartography with depth bands, continuous relief, and port context.
71
71
  - `blueprint`: a dark architectural drawing style, with a default camera centered on San Francisco.
@@ -76,31 +76,30 @@ to create an application-owned map.
76
76
 
77
77
  ### Streets appearance
78
78
 
79
- Streets follows the visual direction of [Mapbox Standard](https://docs.mapbox.com/playground/standard-style/)
80
- (twelve theme/time combinations), calibrated on 2026-10-18. Inspector offers **Default**, **Faded**, and
81
- **Monochrome** in its Theme control, independently of the Time of day control's `day`, `dawn`,
82
- `dusk`, and `night` presets. Each of the twelve combinations selects a complete theme, including
83
- its map colors and artwork. Default retains the configuration key `light` for compatibility:
84
- `theme="light" timeOfDay="night"` selects `dark`, while `theme="light" timeOfDay="day"`
85
- selects `light`. The other concrete themes are `dawn`, `dusk`, `faded`, `monochrome`,
86
- `dawn-faded`, `dawn-monochrome`, `dusk-faded`, `dusk-monochrome`, `dark-faded`, and
87
- `dark-monochrome`. Dawn and day use light artwork; dusk and night use dark artwork. Time presets
88
- adjust authored map colors; selecting one does not apply a global lighting tint to the flat map.
89
- Ground, water, vegetation, roads, zoning, labels and halos use independently evaluated colors
90
- from Standard's 2026-10-08 style, including each material's theme LUT, lighting, emission and
91
- transparency. Ground colors are checked against sRGB framebuffer samples from Mapbox GL JS
92
- 3.28.1 across all twelve combinations; footprints and 3D roofs use separate GPU measurements.
93
- Water retains its own material and zoom 5–7 / 13–14 transitions; it no longer inherits a
94
- swimming pool's color offset. Background emission changes between zoom 13 and 14. These values
95
- are baked into theme tokens, so they add no lighting or LUT work per frame.
96
- Scene-sun lighting preserves unshadowed roof paint while allowing light color to affect walls.
97
- The underlying tile data and rendering pipeline differ, so these are close palette matches rather
98
- than a pixel-identical copy. Streets' own semantic design retains slate-blue
99
- roads, uppercase road names, warm building footprints, green parks, and compact category-colored
100
- POI discs. Dark mode uses pale discs with dark pictograms. Pictograms adapted from Maki follow
101
- World's transport mode and POI type: metro, rail, tram, bus, ferry, cable-car, and airport stations
102
- are distinct, as are bars, cafés, museums, galleries, car dealers, and places of worship by
103
- religion.
79
+ Streets has twelve theme/time combinations. Inspector offers **Default**, **Faded**, and
80
+ **Monochrome** independently of the Time of day control's `day`, `dawn`, `dusk`, and `night`
81
+ presets. Default retains the configuration key `light`: `theme="light" timeOfDay="night"`
82
+ selects `dark`, while `theme="light" timeOfDay="day"` selects `light`. The other concrete themes
83
+ are `dawn`, `dusk`, `faded`, `monochrome`, `dawn-faded`, `dawn-monochrome`, `dusk-faded`,
84
+ `dusk-monochrome`, `dark-faded`, and `dark-monochrome`. Each combination selects a complete
85
+ palette and artwork; time presets do not apply a global lighting tint to the flat map.
86
+
87
+ Scene lighting is calibrated against Mapbox Standard. Streets owns its cartography: slate-blue
88
+ roads with stronger regional outlines, neutral urban surfaces, pale warm rural ground, green
89
+ parks and subtle cream buildings. Its palette is not a fixed copy of the provider's reference
90
+ colors. Day uses category-colored POI discs; dark mode uses pale discs with dark pictograms.
91
+ Maki pictograms distinguish transport modes and POI types. Scene-sun lighting preserves
92
+ unshadowed roof paint while allowing light color to affect walls.
93
+
94
+ At regional scales, the default day theme uses a packaged, attributed climate underlay to
95
+ separate humid and dry regions. It fades out by zoom 11, where mapped land cover and land use
96
+ supply local detail. Climate is broad context, not a claim of surveyed vegetation at a specific
97
+ site. The other themes retain their own authored land-cover palettes. Urban and education
98
+ areas use neutral surfaces; farmland stays pale, while mapped orchards and nurseries remain
99
+ green. Underground footprints flagged `hide_3d` are omitted from the flat building layers. Streets
100
+ suspends duplicate flat building footprints in 3D so roads remain visible under open landmarks;
101
+ 2D mode restores ordinary footprints. Normal 3D buildings keep a small neutral/active tone difference. Authored models use
102
+ the neutral building color and independently configurable window shading.
104
103
 
105
104
  Streets packages DINish Medium for roads, house numbers and POIs, and Bold for shields, approximating
106
105
  the reference's DIN Pro lettering. Other roles retain Noto Sans Regular, Bold and Italic. All
@@ -110,26 +109,25 @@ Maki's 15px artwork is composed into a centered 12px box, leaving room inside th
110
109
  interior. Their 1x and 2x atlases rasterize these SVG compositions separately; the map displays
111
110
  each complete icon at native scale instead of rescaling the bitmap as the zoom changes.
112
111
 
113
- The light surface palette is compared with lossless captures of Standard with 3D buildings and
114
- trees disabled. Parks use a stronger green with lighter lawns and meadows drawn above them;
115
- flat buildings use a neutral cream. Day keeps regional connections clear through z10, softens avenues at z12–14 and retains a
116
- readable local grid. Colors and widths recover their original detail at z15. Widths interpolate
117
- exponentially (base 1.5), including fractional zooms. Motorways and trunks start at z3, primary roads at z6, secondary and tertiary
118
- roads at z8, streets and links at z12, and service roads at z15. Surface casings begin at z15
119
- (z16 for service roads and tracks), growing independently of the carriageway gap.
120
- Major overview strokes include bridges and tunnels until structural layers take over at z13.
121
- Local structures join streets at z12. Links retain narrower widths and draw before receiving roads.
122
- Surface and bridge casings are continuous; tunnel casings are dashed. Construction carriageway
123
- fills and marks draw below roads in service, including motorway ramps.
124
- Borders use Standard's 2026-10-08 style, theme LUTs and unshadowed ground lighting, without
125
- carriageway emissive lift. HD-road borders match across classes, bridges, tunnels and roundabouts
126
- from z15; lower-zoom tunnels retain class colors. Paths keep separate emission. Streets uses the reference border colors without an additional darkening multiplier. These baked
127
- 2D colors exclude fog and Standard's full lighting pipeline.
128
- Surface caps round at z14; tunnels retain butt caps and bridges use round fills.
129
- Crosswalks and compact blue-gray arrows with filled triangular heads fade in from z16.5.
130
- Day overview colors, from motorway/trunk to primary, secondary, tertiary and local:
131
- `#AAB9C9`, `#D5DBDF`, `#DEE3E6`, `#E3E7E9`, `#DDE2E5`. Unpaved roads follow the same city hierarchy. From z15: `#AAB9C9`
132
- for motorway/trunk/primary; `#BDCCD9` for secondary/local.
112
+ The day road network keeps major routes distinct at regional and city scales. Motorways and
113
+ trunks gain a darker outline from z6 through z14, blending into the detailed treatment at z15.
114
+ Regional connector widths remain readable between towns; their city casing palette holds through z14.
115
+ Primary, secondary, tertiary and local roads widen slightly at intermediate zooms and converge
116
+ with their detailed profiles at z15. Local streets become readable when their geometry arrives
117
+ at z12. Casing passes sit below all receiving road fills, preventing exposed round segment caps
118
+ at junctions. Links remain narrower and draw before receiving roads. Tunnel casings are dashed;
119
+ surface and bridge casings are continuous. Construction fills and marks draw below roads in
120
+ service. Crosswalks and compact blue-gray arrows fade in from z16.5.
121
+
122
+ Daytime surface footpaths and cycleways use white strokes over mapped green ground and a
123
+ muted gray-earth stroke elsewhere, at 92% of their authored width and without a casing.
124
+ The shared `roads.pathGround` compiler and browser protocol clip the green portions from the
125
+ same vector tiles; a complete ground-colored path remains visible if context cannot load.
126
+ Road carriageway outlines draw above these paths. This treatment belongs to the Streets
127
+ definition and survives normal artifact regeneration; other themes retain their own path styles.
128
+ Road palettes, width profiles, building outlines and the overview backgrounds are authored here
129
+ in Maps; consumers inherit them without installing a separately edited style snapshot.
130
+
133
131
  From z13, pedestrian plazas use an opaque pale surface above commercial zoning and below
134
132
  explicit grass, gardens and parks. The `roads.pedestrian.surface` token follows the ground's
135
133
  theme and time of day. From z17, mapped sidewalks add a translucent tint and dot pattern through
@@ -156,12 +154,12 @@ and draw above flat footprints but below 3D buildings, with viewport-aligned let
156
154
  southeast at dawn, southwest at dusk and western moonlight at night. Monochrome has distinct
157
155
  directions and strengths. Tileflow holds zoom 14+ values; Standard varies intensity below z14.
158
156
  Shading differs; `controller.setSun({date, location})` uses the real sun instead of presets.
159
- Landmark material profiles and subtle dusk/night illumination are covered in
160
- [3D buildings](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/buildings-3d.md).
157
+ Streets enables `camera.adaptivePerspective`. See camera, landmark and lighting settings in
158
+ [3D buildings](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/README.md).
161
159
  The buildings' `threeDimensional.lighting` and `shadows` options control the effect, and each
162
160
  theme's `lighting.sun.shadowIntensity` and `lighting.ambient` control its strength.
163
161
  Street lights are opt-in: set `roads.streetLights.enabled: true`.
164
- Core rounds corners and shades facades; Streets uses `groundOcclusion: 0.12` for ground contact.
162
+ Streets uses `groundOcclusion: 0.07` and `groundOcclusionRadius: 1.5` for subtle ground contact.
165
163
  `buildings.threeDimensional.occlusion: false` disables contact and model occlusion.
166
164
  `buildings.contactShadow` styles the flat fallback.
167
165
  Streets selects Core's `labels.roadPlacement: 'ground'`: street names follow the road plane below
@@ -170,9 +168,9 @@ Road names retain class zoom/size curves, favor major roads and add padding thro
170
168
  Pedestrian paths group separately. Compact types preserve language;
171
169
  `labels.roadNameFormat: 'full'` keeps source names.
172
170
  Disabling roads omits their names.
173
- Road rings, ramp and surface ordering use [Core's replaceable defaults](../core/docs/cartographic-defaults.md).
171
+ Road rings, ramp and surface ordering use [Core's replaceable defaults](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/README.md).
174
172
  Streets owns colors, widths, typography and time-of-day themes.
175
- Each theme paints a [street sky](../core/docs/street-sky.md) with night stars; `atmosphere: true`
173
+ Each theme paints a [street sky](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/README.md) with night stars; `atmosphere: true`
176
174
  on a globe map adds space around it. Mercator and native targets remain supported.
177
175
 
178
176
  Streets enables model trees by default (`mode: '3d'`, `fallback: 'none'`). They stay three-dimensional
@@ -189,7 +187,7 @@ changing source heights. All presets style bark and crowns independently.
189
187
  The models have 222–386 triangles nearby and 44–78 at distance, using Core's instanced tree
190
188
  renderer; flat crowns use the existing sprite atlas. Tree locations and attributes still come
191
189
  from the source tiles. The artwork does not add trees to parks whose data has none. See
192
- [3D trees](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/trees-3d.md) for
190
+ [3D trees](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/README.md) for
193
191
  browser rendering and platform support. To remove both representations, extend the map:
194
192
 
195
193
  <!-- docs:check -->
@@ -207,9 +205,12 @@ export default defineMap({
207
205
  ```
208
206
 
209
207
  POIs follow World ranks and category density, with extra detail for parks and transport.
208
+ Generic airport POIs are limited to rank 0 to reduce misplaced business listings; the dedicated
209
+ aerodrome layer continues to label mapped airports. This display policy does not repair source data.
210
+ Road-reference repetition is reduced at z11–13 and retains its detail interval from z14.
210
211
  Gardens stay at ranks 0–1 at every zoom, keeping principal destinations while omitting botanical
211
212
  collections and some small independent gardens. Other park and landmark types retain their usual
212
- eligibility. See [Streets POI selection and placement](docs/design-and-assets.md#streets-pois).
213
+ eligibility.
213
214
 
214
215
  Cities and districts hand over at z15, smaller settlements at z13. Co-located cities share one
215
216
  anchor. Districts use rank gates below z12, then source availability and collisions. Street names use 0.15 em letter spacing and
@@ -221,7 +222,6 @@ The map uses Tileflow data and assets, including packaged DINish and Noto Sans f
221
222
  reference uses DIN Pro Medium, so font shapes and stroke weight
222
223
  remain an approximation. Available POIs, abbreviated names,
223
224
  proprietary landmark models, transit branding, and building detail can differ from the reference.
224
- See [map design and asset provenance](https://github.com/tileflow/tileflow-sdk/blob/main/packages/maps/docs/design-and-assets.md).
225
225
 
226
226
  ### Blueprint naming
227
227
 
@@ -318,10 +318,7 @@ for inheritance and styling, or the
318
318
  [public exports](https://github.com/tileflow/tileflow-sdk/blob/main/packages/maps/src/index.ts)
319
319
  for exact names. The installed package's definitions and README take precedence over a newer `main`.
320
320
 
321
- ## Design and asset reference
322
-
323
- The [design and asset notes](https://github.com/tileflow/tileflow-sdk/blob/main/packages/maps/docs/design-and-assets.md) describe each map's visual grammar, source references, and third-party asset boundaries. They are also included under
324
- `docs/` in the installed package.
321
+ ## Streets themes
325
322
 
326
323
  Streets offers three time-of-day families: `light` (displayed as Default), `faded`, and `monochrome`, each with
327
324
  `day`, `dawn`, `dusk`, and `night`. For example, `theme="faded" timeOfDay="night"` resolves to
@@ -329,3 +326,8 @@ Streets offers three time-of-day families: `light` (displayed as Default), `fade
329
326
  concrete theme names remain available for existing applications and captures. This catalog
330
327
  is inherited when extending Streets without overriding it.
331
328
  See the [time-of-day contract](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/README.md#style-with-themes-and-semantic-modules).
329
+
330
+ Streets packages its low-zoom climate artwork and attribution, contrasted routes and compact trees.
331
+ Models inherit ordinary-building shading. Glass parts can be recoloured independently through
332
+ `modelColors.glass`; windows use `modelLighting.window.colorScale: 0.94`.
333
+ Other maps can override their colour and material without regenerating the model.
@@ -205,3 +205,10 @@ Cívica includes five unmodified upstream font files under `assets/civica/fonts/
205
205
  component filenames and source revisions for Tileflow's generic font preparation pipeline.
206
206
  `assets/civica/fonts/README.md` records individual pinned source links and verified OpenType full
207
207
  names. No font file has been subsetted, renamed internally, or modified.
208
+
209
+ ## Historical climate context
210
+
211
+ Streets uses a smoothed colour proxy derived from Beck et al. (2023),
212
+ https://doi.org/10.1038/s41597-023-02549-6, under CC BY 4.0.
213
+ Source, attribution and adaptation details: assets/streets/climate/NOTICE.txt.
214
+ The image is historical context, not live vegetation.