{"_id":"@atomiqlab/react-native-mapbox-navigation","_rev":"17-3805bd2acd297d6ed77d28899b45dbf7","name":"@atomiqlab/react-native-mapbox-navigation","dist-tags":{"latest":"3.1.0"},"versions":{"1.1.0":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"1.1.0","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@1.1.0","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"bf9a032432e9454f1006ff326dbe32fedb1fe7cc","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-1.1.0.tgz","fileCount":22,"integrity":"sha512-gUMR4JiVgaTktp3aL1iAWx14jh2dn6645hq5t9GdNDXGPR4fB5PUufxpZzdpnTpYqihZ/9WX37uyYFYnqgZlmA==","signatures":[{"sig":"MEUCIQDX3smYcawApuhjy9ajYiZ4YJ6sFfhkBqnbO6mGEIGyAAIgI7/iPyVlITSuunBJgCggpQHVNZReUtOh7zfoT+/hcVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93644},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"0de140fbf36d9aab3a7e3d518fc6d89718af15b7","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","verify":"node ./scripts/verify-release.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_1.1.0_1771591273123_0.2980580392576426","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"1.1.1","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@1.1.1","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"d8b118c91c6f731eb5dead464f44fdd514d9d9b6","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-1.1.1.tgz","fileCount":22,"integrity":"sha512-PtEtGSGzsTqycpe+XVP9wiX9wd53uAHizTOTKsL+8+kG2DkJcWhq6yJqw+mU4YOsvquY7S6A4LL+CaciJZ7VxQ==","signatures":[{"sig":"MEUCIQCf/sb86HObEO03SjwNG7pb9xsyhfmQIKx0XbgZDWfeDAIgOSFbLYo8EFTmO7pfCLSXLtFXMuXEB5uwOf05kfPw7vA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94118},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"3dd67cd849168fb2a293bdb04688b9c89ecfc2c3","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","verify":"node ./scripts/verify-release.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_1.1.1_1771593261261_0.19057371090116182","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"1.1.2","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@1.1.2","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"927cafab17d26a5268070dbaef5b53f9aa3414ee","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-1.1.2.tgz","fileCount":23,"integrity":"sha512-dha7lSUz69Pahp5jqKRoZh43lZSBFVXsBf73WtwDgSYwdOkrN7t1E95oZwGjsBpmo+3jeQJHz6gp9VRhB9B1TA==","signatures":[{"sig":"MEUCIFyQQQbQQ8kTMQnxC5KZy/j/dMpy8vyM5YnUdgdUHPHhAiEAxY0RxmiloYPSNaRYhtxq0le4jnaVUPKJe3u31pIOcBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115690},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"49512270ec360db6fdd361504cf48c961e80e33e","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","verify":"node ./scripts/verify-release.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_1.1.2_1771611866986_0.19688395343180698","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"1.1.3","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@1.1.3","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"4d986efe04ecaea9c679bb2dec4e7c342f5cf25b","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-1.1.3.tgz","fileCount":27,"integrity":"sha512-86KNffhBpZyNS1z05fVlDBneikuU6ArhfOyfBkP1VjpOJV+PIPQnClrgioT61Kx7Tp2e1Imqo7dwiBowBMLEXw==","signatures":[{"sig":"MEQCICCBvk5BpKtMosHbfn0LlYs6M2xocEQYzGwZN2yOgY/DAiAA34Y4JaxQsGwtNNatsZp4dGWiWVN3gWBIXThWE936pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1628322},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"e5d664f7eb74ace5f2eaebbbeb31bef5408680a4","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","verify":"node ./scripts/verify-release.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_1.1.3_1771665957745_0.9596779866123211","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"1.1.4","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@1.1.4","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"760ff4e20fae7d9d9dfcae1338d36dc5709ac658","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-1.1.4.tgz","fileCount":27,"integrity":"sha512-7P8rgTzx9DPOVttKGSgzQBXkLVUvO3vDqVVg6pTmJkcxX08okEBwW2JbEOlcbs1BhgL5USDKmzDMfsvwRThZjg==","signatures":[{"sig":"MEQCH1QgNfiw6vtQgJrSWdBHsxUO9bizKs6OMxcJmD2ZpcICIQCaUEE3ySUdRHc1kLHfJczP4kQeRWJHKl9uBu+KlkivDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@1.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1628230},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"857d1321b1d214b8f85d0fc25e26109736e8d9c7","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","verify":"node ./scripts/verify-release.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_1.1.4_1771667003659_0.4265055223696792","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"1.1.5","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@1.1.5","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"e3b42339c5bce34fc1c116d7fe0f9dcc476d3a1b","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-1.1.5.tgz","fileCount":27,"integrity":"sha512-GwK0gYemsLp1e6Xz2Gatw+EkK/+0rF3tJiARc4HY0oylOwWPSIMMFSmPoS1gSAB9XbHBVc4ROySuXRpbalmiAw==","signatures":[{"sig":"MEYCIQCKtuRUrd26SleIJ/QqRCRmm+wvbcUr4rwGS1AnX0ukRwIhALdmWV/CPJOoA/7piRU/5x0N0bbex4rP090Y1cgF3nvr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@1.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1628230},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"2d0c9269a06fd923d7ae1795bb436289dd764a70","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","verify":"node ./scripts/verify-release.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_1.1.5_1771667897788_0.07296892034368474","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"2.0.0","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@2.0.0","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"fc489a78498563f658a4c9af0fbe686e1dfe7244","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-2.0.0.tgz","fileCount":30,"integrity":"sha512-RtZSYA9IGKjgn0PrRQKNWmoKSgfsWCsdC3c9t/yfhrurc6pNE1zH672WeKTvP0i0Igt2XDqlxuW/dB+7s2LWjA==","signatures":[{"sig":"MEYCIQC3WAzpJTCKbgUdskMt36ibhOxtH/5UaLv3rc3vzP1soAIhAKx0nL6rDfF9DGv3Y4QWiTNpxCSRIQZTwel6kTUZIzU8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1932285},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"8e41e5a6e8327e0f427a9aba934f57d4d934437f","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","verify":"node ./scripts/verify-release.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_2.0.0_1772473363494_0.790475480404744","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"2.0.1","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@2.0.1","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"042a16b1f7903859665cd0ac61e2ef14672be1ad","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-2.0.1.tgz","fileCount":26,"integrity":"sha512-PxYbgAPFVs++yzu9hevaYUsPOGr0BMuCn2Ys70g9rHRe09BEEUhKR8rkqzPLJdXyebMK6mQss1WAXNvFDsppMg==","signatures":[{"sig":"MEUCIB9WptgOWUiDlvkxIVK/ezGZeaqUnlbDCA2z+dJQl1PFAiEA76mAJm2JWufpbKCN9SeWERgLNApORR9klWMFRCMMQak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":201027},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"2818efd8f5ae675b7d0d9e981058481928c49437","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","verify":"node ./scripts/verify-release.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_2.0.1_1772579487977_0.6384406623844692","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"2.0.2","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@2.0.2","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"79bef38c59ceb2b46de2c30a2b8ff1d1fa289b6c","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-2.0.2.tgz","fileCount":24,"integrity":"sha512-3/XjN99fbeIhv93TwLhGIexJM9go7CWXLyu4XTpKnp2+HjG2N7fxq4Yyt6lH2wZekiBIDQ7ny7DdFsu6dRJotQ==","signatures":[{"sig":"MEYCIQCeZj76ZNkdLTw2yspEcHM9BapMeuwSXPlljZUw1hERqwIhAKFWC+sErm7HJ0LvL3mstAgVlPVBq2TnZq8cqUkcdoYK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":197605},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"f1c341ed145580714c5f4bfffeb8d2a0c07601cf","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","verify":"node ./scripts/verify-release.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_2.0.2_1772625380598_0.07822973411188938","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"2.0.3","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@2.0.3","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"df6502bdecd3a65540b51693e3a37194f6fba62e","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-2.0.3.tgz","fileCount":25,"integrity":"sha512-tqDkYNjE0Yu1EL4SeNk3lei+ZKoVLfK2TNj2KQu8ZBOywWqJs/HXb0iNxbNlYC5OfIwMhERDCtOWHeeoZIXkNg==","signatures":[{"sig":"MEYCIQCbkUyBcdxlNJSCz50zZYLRHEHKv12qLcEJJJCIJNV/pQIhAKn+H0rxmCWukUMLV45LYZa2sXfiCLWt4Os0QQDAEZaE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@2.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":223515},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"f070b94a042b15afb7407cd522eef2f3416e3983","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","format":"biome format --write","verify":"node ./scripts/verify-release.mjs","biome:check":"biome check"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.5","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_2.0.3_1772723667026_0.5364565320815","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"2.0.4","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@2.0.4","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"e3a7fbc8a6533f79b2b76cfaee6d693b77d1d00e","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-2.0.4.tgz","fileCount":25,"integrity":"sha512-mVa2OPnznLnBtZ1NpUMZLtncG61mfI5CohpbhG/KJzI5hmjdKcNdr4oxi2u21SPyeKcYo+UZKbA+vk/zNc3tDA==","signatures":[{"sig":"MEQCIHQQQIGrGlTScEL8BXrl5M1vz2r9ovHmsqRAcPgZCHW3AiAAuzBB8/dmJCNuCMB102ETJcOuhNm/R5cTfPHGqzn/og==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@2.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":260451},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"cfbddf6e310531354e088ac75ea6ef3a1665621b","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","format":"biome format --write","verify":"node ./scripts/verify-release.mjs","biome:check":"biome check"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.5","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_2.0.4_1781056514761_0.0016616467424481751","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"2.1.0","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@2.1.0","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"6a9caf29a72678a454a223eaaef9f3a8a3aa3f7b","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-2.1.0.tgz","fileCount":29,"integrity":"sha512-6TrrShgHPS7lWJQ24h7lBeI+8L5yJvetiMa/m2iMxqKgkiVJgZSz1kreOmeERY66re57/KuQEwDtJk7XTPEOzg==","signatures":[{"sig":"MEQCIAVDy2uUg6mp3r4UxrXlWTyIVbu2+i9LXw7IBOk7YjgxAiBQck0ZJyDNHAAA+blZI6ox6sD0Qb/rJZ55M1Cn8UHZqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":366721},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"c16cdd699276ff3e3430f5bc779ddd278a9d05bf","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","format":"biome format --write","verify":"node ./scripts/verify-release.mjs","biome:check":"biome check"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.5","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_2.1.0_1788789279346_0.8149122331486935","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"2.1.1","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@2.1.1","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"31fd14059e2fb866531320fbd506d0e91b46d924","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-2.1.1.tgz","fileCount":29,"integrity":"sha512-bRTzHFwStfDx8Dyc6w5OQjZvyay+nrvuzRAQOa4TOd5HyvwOXvSYdkAtauIlDSHVDLc+LR9fyifNXHCNX9b12Q==","signatures":[{"sig":"MEQCIAXBfI49Ur/m4e9lty9ZnqnchdQkuYJgRscZMCN1IJ9QAiBOOwXPadlHyOEhY4adSVGIxKpQ+jEVZkBSEZgcDsPuLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":373029},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"8822794e7746b359cde682df2f6b9fe891fa8b8f","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","format":"biome format --write","verify":"node ./scripts/verify-release.mjs","biome:check":"biome check"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.5","expo-module-scripts":"^3.0.0"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_2.1.1_1788948472897_0.3667874591415696","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"2.2.0","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@2.2.0","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"106168322d76a6f89d655848940428db81f2dbfb","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-2.2.0.tgz","fileCount":28,"integrity":"sha512-dbUHBFds0UDsezMzSNQpXs+YD8yJv7aDUBNHFH9IDNMYJ5f01qritaAr2uWyBGj3WAeB6a+qpqVOCQWXtH/wOg==","signatures":[{"sig":"MEUCIQCs7s6fmXHvxiSF33MpHkPInFH59/U+3VxNvh71lJmp4wIgYxUj6/oWmFq+NZuBlimLvizQVFSKzLtZAdBIKy8DTjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":371825},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"650c54e3a9f8775a6365378fe53f2581dc24d0f5","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","format":"biome format --write","verify":"node ./scripts/verify-release.mjs","biome:check":"biome check"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.5","expo-module-scripts":"^56.0.3"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_2.2.0_1788966146421_0.9104882793153548","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"3.0.0","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@3.0.0","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"c64289c5b9210c5e97349ce35ab6c7426c38b132","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-3.0.0.tgz","fileCount":32,"integrity":"sha512-+59/uI+Se0797W418recS8KUL9ySyv76yrT0tgH7KltxuhPOiDvkAOlpbWZG05L7DBwFeRdKneTcwfjKUdY16g==","signatures":[{"sig":"MEYCIQDLTqPNG4XBsOaUKZcPC+R1Zd+BmQ/BB27OQcwvTK4aGAIhAJYiCMxHkvbz0ZYhSUhep4mBkH3Lghe12cIUJhYggb5W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDu0CtuBLziUsLYoh3vZ84WuJIJfP0elAkU6ESahTLMqAIhALKGZ2Cz9+3fTsZY4XDtGVGM3m5Ti/IOPLbKPJDk59KS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":567165},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"e19099b2c6306145e9f7caea26c165bcfc2b1a27","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","format":"biome format --write","verify":"node ./scripts/verify-release.mjs","biome:check":"biome check","verify:parity":"node ./scripts/verify-parity.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.5","expo-module-scripts":"^56.0.3"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_3.0.0_1789548150452_0.9440409136070602","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@atomiqlab/react-native-mapbox-navigation","version":"3.0.1","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"license":"MIT","_id":"@atomiqlab/react-native-mapbox-navigation@3.0.1","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"03301be4d3d24b520fd6c2c3f00da164e536fcfc","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-3.0.1.tgz","fileCount":32,"integrity":"sha512-JUaJ3fmGXBjvRJWk+38snhOg0hhAaKR3592BXY4DMr+viRTBx+c2OFsLfDY7PMneFrPiMf1ShkSrneDLKLRjuA==","signatures":[{"sig":"MEYCIQCYORZ3zOsvcwHkr/p4Nnl7XpPS4F/olEtg6LqqlJ65XgIhAMoR82qjLdpgy/SFqNS+/hbSPFSTmh1YZa2bCYOQ0PDm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCs8zbkC3IYQwex8DUo6mpW9oRyFpUfUqSpHIRCS4QGHgIgRxv3WwcDzXhtaoH/ZYSSqCjmr4lI1V5+BExsiwTLjzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":571290},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","types":"src/index.tsx","engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"ed0f7ed8b7f36a24d713a3ab1f02c77db407f685","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","format":"biome format --write","verify":"node ./scripts/verify-release.mjs","biome:check":"biome check","verify:parity":"node ./scripts/verify-parity.mjs"},"_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.5","expo-module-scripts":"^56.0.3"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-mapbox-navigation_3.0.1_1789554755278_0.8695337502828582","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"_id":"@atomiqlab/react-native-mapbox-navigation@3.1.0","bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"dist":{"shasum":"57f8d5fd94c115e399312112f009041076b9f320","tarball":"https://registry.npmjs.org/@atomiqlab/react-native-mapbox-navigation/-/react-native-mapbox-navigation-3.1.0.tgz","fileCount":34,"integrity":"sha512-+Lbo2b+G0XnO2gbO8p6v4ktkQcyuJYutFNqhRjpklTQqNRLbDKgHCvzd+W6kmmbdNhXvTw//6+gq3l1O9AFdJg==","signatures":[{"sig":"MEUCICSylWIXP3wOPqMW4Bz9oYOI0lEj7VTYde6QWVFR4rr5AiEA1g7dELIDhH2jwAaffhgfJlYD2KR3RM9JeeLCvizu4BQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC1X5GIquBnFDD7A3vbNn0ygzxovwnFMPOXEIoLrkRbvAIhAJqq6lJja2fYgcEdkjGAwP9zNeQmZQNA6U4hlm+4Q7qZ"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomiqlab%2freact-native-mapbox-navigation@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":602891},"expo":{"plugins":["./app.plugin.js"]},"main":"src/index.tsx","name":"@atomiqlab/react-native-mapbox-navigation","types":"src/index.tsx","mapbox":{"maps":"11.30.1","turf":"4.0.0","navigation":"3.30.1"},"engines":{"node":">=18"},"exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"88af0d5505caaed52ee04d58e03ec3a9095945bd","license":"MIT","scripts":{"lint":"expo-module lint -- --ext .ts,.tsx","test":"expo-module test --passWithNoTests","build":"expo-module build","clean":"expo-module clean","format":"biome format --write","verify":"node ./scripts/verify-release.mjs","biome:check":"biome check","verify:parity":"node ./scripts/verify-parity.mjs"},"version":"3.1.0","_npmUser":{"name":"atomiq-dev","email":"info@atomiq.rw"},"homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"_npmVersion":"10.8.2","description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","directories":{},"maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"sideEffects":false,"_nodeVersion":"20.20.2","react-native":"src/index.tsx","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.5","expo-module-scripts":"^56.0.3"},"peerDependencies":{"expo":">=50","react":"*","react-native":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-mapbox-navigation_3.1.0_1789670632936_0.39939947895949013"}}},"time":{"created":"2026-02-20T12:41:13.015Z","modified":"2026-09-17T18:43:53.431Z","1.1.0":"2026-02-20T12:41:13.289Z","1.1.1":"2026-02-20T13:14:21.461Z","1.1.2":"2026-02-20T18:24:27.143Z","1.1.3":"2026-02-21T09:25:57.956Z","1.1.4":"2026-02-21T09:43:23.862Z","1.1.5":"2026-02-21T09:58:18.044Z","2.0.0":"2026-03-02T17:42:43.726Z","2.0.1":"2026-03-03T23:11:28.126Z","2.0.2":"2026-03-04T11:56:20.752Z","2.0.3":"2026-03-05T15:14:27.184Z","2.0.4":"2026-06-10T01:55:14.936Z","2.1.0":"2026-09-07T13:54:39.500Z","2.1.1":"2026-09-09T10:07:53.030Z","2.2.0":"2026-09-09T15:02:26.561Z","3.0.0":"2026-09-16T08:42:30.549Z","3.0.1":"2026-09-16T10:32:35.376Z","3.1.0":"2026-09-17T18:43:53.023Z"},"bugs":{"url":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation/issues"},"license":"MIT","homepage":"https://github.com/ATOMIQTECH/react-native-mapbox-navigation#readme","keywords":["react-native","expo","mapbox","navigation","turn-by-turn"],"repository":{"url":"git+https://github.com/ATOMIQTECH/react-native-mapbox-navigation.git","type":"git"},"description":"Native Mapbox turn-by-turn navigation for Expo and React Native (iOS + Android)","maintainers":[{"name":"atomiq-dev","email":"info@atomiq.rw"}],"readme":"# @atomiqlab/react-native-mapbox-navigation\n\nEmbedded Mapbox turn-by-turn navigation for Expo and React Native on iOS and Android.\n\n## What You Get\n\n- Native Mapbox navigation UI embedded in a React Native view, on Navigation SDK **v3**\n- Expo config plugin for Mapbox token wiring and required native permissions\n- Theme the route line, traffic colours, maneuver banner and buttons with `colors`\n- Routing controls: profile, road-class and point exclusions, vehicle dimensions\n- Mapbox Standard / 3D styles, with `mapStyleConfig` for lighting and 3D objects\n- Optional React overlay bottom sheet\n- Optional React overlay floating buttons\n- Per-button control over the built-in native floating buttons\n- Package-managed end-of-route rating modal, or a custom replacement\n- Runtime helpers (`setMuted`, `stopNavigation`, etc.) and event listeners\n\n## Installation\n\n```bash\nnpm install @atomiqlab/react-native-mapbox-navigation\n```\n\nThis is a native module. After installing or changing config, rebuild the native app (`npx expo prebuild`, `npx expo run:ios`, `npx expo run:android`, or your normal native build flow).\n\n## Required Mapbox Tokens\n\nThe config plugin validates tokens during prebuild.\n\n- `EXPO_PUBLIC_MAPBOX_ACCESS_TOKEN`\n  A Mapbox public token starting with `pk.`\n- `MAPBOX_DOWNLOADS_TOKEN`\n  A Mapbox secret token starting with `sk.` and including `DOWNLOADS:READ`\n\nThe plugin also accepts these fallbacks:\n\n- `MAPBOX_PUBLIC_TOKEN`\n- `expo.extra.mapboxPublicToken`\n- `expo.extra.expoPublicMapboxAccessToken`\n- `expo.extra.mapboxAccessToken`\n- `expo.extra.mapboxDownloadsToken`\n\nExample `.env`:\n\n```bash\nEXPO_PUBLIC_MAPBOX_ACCESS_TOKEN=pk.your_public_token\nMAPBOX_DOWNLOADS_TOKEN=sk.your_secret_token\n```\n\n## Expo Config Plugin\n\nThe package ships with an Expo config plugin that:\n\n- injects the Mapbox Maven repository on Android\n- writes `mapbox_access_token` into Android resources\n- sets `MBXAccessToken` in `Info.plist`\n- adds required Android location/foreground-service permissions\n- adds iOS location usage strings and `location` / `audio` background modes\n- reconciles the Mapbox Maps SDK with `@rnmapbox/maps` when that package is\n  also installed — see [Using with `@rnmapbox/maps`](#using-with-rnmapboxmaps)\n\nIf you manage plugins explicitly, add the package to your app config:\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\"@atomiqlab/react-native-mapbox-navigation\"]\n  }\n}\n```\n\n### Plugin options\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\n      [\n        \"@atomiqlab/react-native-mapbox-navigation\",\n        {\n          \"backgroundLocation\": false,\n          \"backgroundAudio\": true,\n          \"locationWhenInUsePermission\": \"We use your location for turn-by-turn navigation.\"\n        }\n      ]\n    ]\n  }\n}\n```\n\n| Option | Default | Effect |\n| --- | --- | --- |\n| `backgroundLocation` | `false` | Adds `ACCESS_BACKGROUND_LOCATION` on Android. **Opt-in**: it triggers a Google Play policy review and a prominent-disclosure requirement, so it is no longer added automatically. |\n| `backgroundAudio` | `true` | Keeps the iOS `audio` background mode so spoken guidance continues while backgrounded. Set `false` if you don't need it at App Store review. |\n| `locationWhenInUsePermission` | package default | Overrides the iOS location usage description. |\n| `rnmapboxMapsCompat` | `true` | Shares one Mapbox Maps SDK with `@rnmapbox/maps` when it is installed. Set `false` only if you want to wire the two packages together yourself. |\n\n## Using with `@rnmapbox/maps`\n\nInstall both packages and add both plugins. There is nothing else to configure —\nno Podfile edits, no Maps version to keep in step, and the order of the two\nentries in `plugins` does not matter.\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\"@atomiqlab/react-native-mapbox-navigation\", \"@rnmapbox/maps\"]\n  }\n}\n```\n\nThe two packages need the same Mapbox Maps SDK and, left alone, ask two\ndifferent build systems for it. The config plugin settles both platforms:\n\n- **iOS.** Mapbox ships no CocoaPods artifacts for Navigation SDK v3, so the\n  Navigation SDK — and the Maps SDK under it — arrive over Swift Package\n  Manager, while `@rnmapbox/maps` declares `MapboxMaps` as a *pod*. One app\n  resolving the same framework through both resolvers does not link. The plugin\n  writes `$RNMapboxMapsSwiftPackageManager = 'manual'` into the Podfile, which\n  stops `@rnmapbox/maps` declaring any Mapbox pod, and `ios/spm.rb` then points\n  its pod target at the same Swift package. Your `Podfile.lock` ends up with no\n  Mapbox pods at all.\n- **Android.** Mapbox publishes each artifact twice — `com.mapbox.maps:android`\n  and the 16 KB page-size `com.mapbox.maps:android-ndk27` — and the two carry\n  the same classes, so an app that resolves one of each fails\n  `checkDebugDuplicateClasses`. `@rnmapbox/maps` picks its variant from your\n  `targetSdkVersion` while this package is always on `-ndk27`, so the plugin\n  redirects the plain coordinate and holds the whole app to one variant at the\n  Maps version Navigation v3 is built against.\n\nThat version is published in this package's `package.json` if you need to read\nit:\n\n```js\nrequire(\"@atomiqlab/react-native-mapbox-navigation/package.json\").mapbox.maps;\n```\n\nBoth paths apply only when `@rnmapbox/maps` is actually resolvable from your\nproject, and both run after `expo prebuild`, so re-run it (or `--clean`) after\nadding either package. `example/` exercises this combination — see its\n**With `@rnmapbox/maps`** scenario.\n\n## Minimal Usage\n\nRequest location permission in your app before enabling navigation. The view will emit `LOCATION_PERMISSION_REQUIRED` if mounted without permission.\n\n```tsx\nimport * as Location from \"expo-location\";\nimport { useEffect, useState } from \"react\";\nimport {\n  MapboxNavigationView,\n  type Waypoint,\n} from \"@atomiqlab/react-native-mapbox-navigation\";\n\nconst DESTINATION: Waypoint = {\n  latitude: 37.7847,\n  longitude: -122.4073,\n  name: \"Union Square\",\n};\n\nexport function EmbeddedNavigation() {\n  const [granted, setGranted] = useState(false);\n  const [origin, setOrigin] = useState<Waypoint | undefined>(undefined);\n\n  useEffect(() => {\n    void (async () => {\n      const permission = await Location.requestForegroundPermissionsAsync();\n      if (!permission.granted) {\n        return;\n      }\n\n      const position = await Location.getCurrentPositionAsync({});\n      setOrigin({\n        latitude: position.coords.latitude,\n        longitude: position.coords.longitude,\n        name: \"Current Location\",\n      });\n      setGranted(true);\n    })();\n  }, []);\n\n  return (\n    <MapboxNavigationView\n      enabled={granted}\n      style={{ flex: 1 }}\n      startOrigin={origin}\n      destination={DESTINATION}\n      shouldSimulateRoute\n    />\n  );\n}\n```\n\n## Platform Behavior\n\n- Android can start without `startOrigin`; it falls back to the device location.\n- iOS currently requires `startOrigin` to begin routing.\n- Only one embedded navigation session should be active at a time.\n- The package uses native UI for the main map/navigation chrome and React overlays for custom controls.\n\n## Display-Only Navigation Markers\n\n`navigationMarkers` renders lightweight native pin annotations directly on the embedded navigation map.\nThese are **display-only** — they do not affect routing. Use `waypoints` for intermediate route stops.\n\n```tsx\n<MapboxNavigationView\n  enabled\n  style={{ flex: 1 }}\n  startOrigin={origin}\n  destination={destination}\n  navigationMarkers={[\n    {\n      id: \"pickup-1\",\n      latitude: 37.7858,\n      longitude: -122.4064,\n      label: \"Pickup – Alice\",\n      glyph: \"P\",\n      badge: \"2\",\n      variant: \"primary\",\n      size: \"large\",\n      selected: true,\n    },\n    {\n      id: \"dropoff-1\",\n      latitude: 37.7901,\n      longitude: -122.4019,\n      label: \"Dropoff – Alice\",\n      glyph: \"D\",\n      variant: \"success\",\n    },\n    {\n      id: \"custom-stop\",\n      latitude: 37.788,\n      longitude: -122.408,\n      label: \"Custom Stop\",\n      glyph: \"★\",\n      // Fully custom color — overrides `variant`\n      color: \"#7C3AED\",\n      badgeColor: \"#5B21B6\",\n      opacity: 0.9,\n      markerStyle: \"dot\",   // simple circle, no tail\n      size: \"small\",\n    },\n  ]}\n/>\n```\n\n### Marker fields\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `id` | `string` | **required** | Stable key — used to update/remove markers in place |\n| `latitude` | `number` | **required** | WGS84 latitude |\n| `longitude` | `number` | **required** | WGS84 longitude |\n| `label` | `string` | — | Accessibility label and debug description |\n| `glyph` | `string` | `\"•\"` | Short text rendered inside the bubble (max 2 chars) |\n| `badge` | `string` | — | Badge text in the upper-right corner (max 3 chars) |\n| `variant` | `NavigationMarkerVariant` | `\"default\"` | Semantic color preset |\n| `color` | `string` | — | Custom fill hex — `#RGB`, `#RRGGBB` or `#RRGGBBAA` (e.g. `\"#7C3AED\"`). Overrides `variant` |\n| `badgeColor` | `string` | — | Custom badge hex, same forms. Falls back to a darker shade of `color`/`variant` |\n| `opacity` | `number` | auto | Marker opacity 0..1. Overrides the `variant`/`selected` default |\n| `size` | `NavigationMarkerSize` | `\"medium\"` | Size preset |\n| `markerStyle` | `NavigationMarkerStyle` | `\"pin\"` | `\"pin\"` = bubble + tail, `\"dot\"` = circle only |\n| `showTail` | `boolean` | `true` | Show the pointer tail (only applies to `\"pin\"` style) |\n| `selected` | `boolean` | auto | Forwarded to the native annotation `selected` state |\n| `allowOverlap` | `boolean` | `true` | Allow overlap with other annotations |\n| `anchorOffsetY` | `number` | auto | Custom Y-axis pixel offset from the anchor point |\n\n### Variant presets\n\n| Variant | Fill color | Badge color | Default opacity |\n|---------|-----------|-------------|-----------------|\n| `\"default\"` | `#1F2937` | `#111827` | 0.92 (unselected) / 1 |\n| `\"primary\"` | `#2563EB` | `#1D4ED8` | 1 |\n| `\"success\"` | `#15803D` | `#166534` | 1 |\n| `\"warning\"` | `#C2410C` | `#9A3412` | 1 |\n| `\"danger\"` | `#B91C1C` | `#991B1B` | 1 |\n| `\"muted\"` | `#475569` | `#334155` | 0.72 |\n\nUse `color` + `badgeColor` + `opacity` together for fully custom branding without touching `variant`.\n\n## Custom Navigation Pointer (Location Puck)\n\nReplace the standard blue location puck with a 3D model, your own 2D images, a\nrecolored default puck, or nothing at all — via the `locationPuck` prop.\n\n### 3D model\n\n```tsx\n<MapboxNavigationView\n  enabled\n  destination={{ latitude: 37.7749, longitude: -122.4194 }}\n  locationPuck={{\n    type: '3d',\n    modelUri: require('./assets/car.glb'),\n    scale: 12,\n    rotation: [0, 0, 180],\n  }}\n/>\n```\n\nTo `require()` a `.glb`/`.gltf` file, register the extension with Metro:\n\n```js\n// metro.config.js\nconst config = getDefaultConfig(__dirname)\nconfig.resolver.assetExts.push('glb', 'gltf')\nmodule.exports = config\n```\n\nA remote URL or a native asset path works too, and needs no Metro change:\n\n```tsx\nlocationPuck={{ type: '3d', modelUri: 'https://cdn.example.com/car.glb' }}\nlocationPuck={{ type: '3d', modelUri: { uri: 'asset://car.glb' } }}\n```\n\nRemote models are downloaded once and cached on disk on both platforms.\n\n> **On `require()` and release builds.** A `require()`'d model resolves through\n> React Native's asset registry, which returns a Metro packager URL in\n> development and a bundled asset reference in release builds. The dev path\n> works out of the box; for production builds the most predictable options are a\n> remote `https://` URL or a model placed in the native bundle and referenced\n> explicitly (`asset://car.glb` on Android, a bundle resource name on iOS).\n> Verify your release build before shipping a `require()`'d model.\n\n### 2D images\n\n```tsx\nlocationPuck={{\n  type: '2d',\n  bearingImage: require('./assets/arrow.png'),\n  shadowImage: require('./assets/shadow.png'),\n  scale: 1.2,\n}}\n```\n\n`bearingImage` rotates to follow the course; `topImage` stays unrotated and\n`shadowImage` draws underneath.\n\n### Tinted default puck\n\nKeeps Mapbox's puck shape and just recolors it — no assets required.\n\n```tsx\nlocationPuck={{ type: 'tinted', color: '#2563EB', haloColor: '#FFFFFF' }}\n```\n\n### Hiding the pointer\n\nFor apps that draw their own vehicle marker:\n\n```tsx\nlocationPuck={{ type: 'none' }}\n```\n\nLocation updates keep flowing; only the pointer is hidden.\n\n### Per-navigation-state pointers\n\nPass an object keyed by state instead of a single appearance. `default` covers\nevery state you don't override.\n\n```tsx\nlocationPuck={{\n  default: { type: 'tinted', color: '#2563EB' },\n  activeNavigation: {\n    type: '3d',\n    modelUri: require('./assets/car.glb'),\n    scale: 12,\n  },\n  arrival: { type: '2d', bearingImage: require('./assets/pin.png') },\n}}\n```\n\nStates: `default`, `freeDrive`, `destinationPreview`, `routePreview`,\n`activeNavigation`, `arrival`, `idle`.\n\nAndroid maps these onto Mapbox's native `LocationPuckOptions`. iOS has no\nper-state puck API, so the pointer is swapped as the session transitions —\nin practice `default`, `activeNavigation`, and `arrival` are the ones that\nmatter there.\n\n### Appearance fields\n\n| Field | Types | Notes |\n| --- | --- | --- |\n| `modelUri` | `3d` | `require()`, `https://` URL, or `{ uri }`. Required. |\n| `topImage` / `bearingImage` / `shadowImage` | `2d` | At least one required. |\n| `color` / `haloColor` / `bearingColor` | `tinted` | Hex strings (`#RGB`, `#RRGGBB`, `#RRGGBBAA`), read identically on both platforms. |\n| `scale` | `3d`, `2d`, `tinted` | Number, or `[x, y, z]` for `3d`. |\n| `scaleExpression` | `3d`, `2d` | Mapbox style expression as a JSON string. Overrides `scale`. |\n| `rotation` | `3d` | `[x, y, z]` degrees. Corrects a model's authored axis. |\n| `translation` | `3d` | `[x, y, z]` metres. **Android only** — the iOS puck API has no equivalent. |\n| `opacity` | all | `0`–`1`. |\n\nInvalid values degrade to the SDK default rather than throwing — a 3D model that\nfails to download, or a `2d` puck whose images all fail to load, leaves the\nstandard puck in place and logs a warning natively.\n\n### Sizing a 3D model\n\nModel scale is interpreted in the glTF's own units, and differs between\nplatforms and between models, so expect to tune `scale` per model. For\nzoom-dependent sizing use `scaleExpression`, which behaves consistently on both\nplatforms:\n\n```tsx\nlocationPuck={{\n  type: '3d',\n  modelUri: require('./assets/car.glb'),\n  scaleExpression: JSON.stringify([\n    'interpolate', ['linear'], ['zoom'],\n    14, [8, 8, 8],\n    18, [24, 24, 24],\n  ]),\n}}\n```\n\n## Theming (`colors`)\n\nMapbox's defaults are its own brand blue — the route line on iOS, the maneuver\nbanner on Android. `colors` overrides 24 of them. Anything you omit keeps the\nMapbox default, and changes apply live.\n\n```tsx\n<MapboxNavigationView\n  destination={destination}\n  colors={{\n    routeLine: '#1E9E5A',\n    routeLineCasing: '#14532D',\n    congestionHeavy: '#DC2626',\n    maneuverBackground: '#14532D',\n    maneuverText: '#FFFFFF',\n    maneuverTurnIcon: '#FFFFFF',\n    floatingButtonBackground: '#14532D',\n    floatingButtonIcon: '#FFFFFF',\n  }}\n/>\n```\n\n| Group | Keys |\n| --- | --- |\n| Route line | `routeLine`, `routeLineCasing`, `routeLineTraversed`, `routeLineAlternative`, `routeLineAlternativeCasing`, `restrictedRoad` |\n| Traffic | `congestionLow`, `congestionModerate`, `congestionHeavy`, `congestionSevere`, `congestionUnknown` |\n| On-map turn arrow | `maneuverArrow`, `maneuverArrowStroke` |\n| Maneuver banner | `maneuverBackground`, `maneuverSubBackground`, `maneuverText`, `maneuverSecondaryText`, `maneuverDistanceText`, `maneuverTurnIcon` |\n| Floating buttons | `floatingButtonBackground`, `floatingButtonIcon` |\n| Trip progress bar (iOS) | `tripProgressBackground`, `tripProgressText`, `tripProgressIcon` |\n\nThree things worth knowing:\n\n- Use `#RGB`, `#RRGGBB` or `#RRGGBBAA` — all three read the same way on both\n  platforms, with eight digits taking alpha last as CSS does, so `'#14532D80'`\n  is that green at 50%. (Before 3.1.0 the eight-digit form meant `#RRGGBBAA` on\n  iOS and `#AARRGGBB` on Android; see the changelog if you relied on that.)\n- `routeLine` also sets the `low` and `unknown` congestion colours. Congestion\n  shading is painted over the base line, and those two bands cover most of a\n  typical route, so without it a recoloured route still looks blue.\n- Treat it as a theme you set, not a value you toggle. On iOS the chrome colours\n  go through `UIAppearance`, which has no \"unset\", so *removing* a key leaves its\n  last colour until the app relaunches. Changing a key's value always works —\n  but that includes alpha, so `'#00000000'` permanently paints a piece of chrome\n  transparent rather than hiding it. Use the `shows*` props to turn UI off.\n\n## Routing Options\n\n```tsx\n<MapboxNavigationView\n  destination={destination}\n  routeProfile='driving'\n  routeExclusions={{ roadClasses: ['toll', 'ferry'] }}\n  vehicle={{ maxHeight: 4.2, maxWeight: 18 }}\n/>\n```\n\n| Prop | What it does |\n| --- | --- |\n| `routeProfile` | `driving-traffic` (default), `driving`, `walking` or `cycling`. Only `driving-traffic` carries live traffic, so the `congestion*` colours have nothing to shade on the other three. |\n| `routeExclusions` | `roadClasses` avoids `toll`, `motorway`, `ferry`, `tunnel`, `restricted`, `unpaved`, `cashOnlyTolls`; `locations` avoids up to 50 specific points. |\n| `vehicle` | `maxHeight` / `maxWidth` in metres, `maxWeight` in metric tons, so oversized vehicles avoid roads they cannot use. |\n\nChanging any of these re-requests the route.\n\n`vehicle` and most `roadClasses` are driving-only *at the API*, and the API\nrejects rather than ignores them elsewhere — `max_height` on `walking` answers\n`422`. Sending them would fail the whole route request, so the package drops them\non non-driving profiles and tells you through `onError`\n(`VEHICLE_NOT_SUPPORTED_BY_PROFILE`, `ROAD_CLASS_NOT_SUPPORTED_BY_PROFILE`,\n`EXCLUDED_LOCATIONS_NOT_SUPPORTED_BY_PROFILE`).\n\n## Standard / 3D Map Styles\n\nMapbox's Standard styles work as-is — both platforms place the navigation layers\nin Standard's `middle` slot, so the route draws above the basemap but below\nlabels, POIs and 3D extrusions. `mapStyleConfig` configures the basemap:\n\n```tsx\n<MapboxNavigationView\n  destination={destination}\n  mapStyleUriDay='mapbox://styles/mapbox/standard'\n  mapStyleConfig={{ lightPreset: 'dusk', show3dObjects: true }}\n/>\n```\n\n`lightPreset` takes `day`, `dusk`, `dawn` or `night` — independent of `uiTheme`,\nwhich picks the day or night *style*. The rest are booleans:\n`show3dObjects`, `showRoadLabels`, `showPlaceLabels`,\n`showPointOfInterestLabels`, `showTransitLabels`. Styles with no configurable\nimport report `MAP_STYLE_CONFIG_UNSUPPORTED` once through `onError` rather than\nsilently doing nothing.\n\n## Overlay Bottom Sheet\n\n`bottomSheet` is overlay-only. The package renders a React layer above the native navigation UI.\n\n```tsx\n<MapboxNavigationView\n  enabled\n  style={{ flex: 1 }}\n  startOrigin={origin}\n  destination={destination}\n  bottomSheet={{\n    enabled: true,\n    mode: \"overlay\",\n    initialState: \"hidden\",\n    collapsedHeight: 120,\n    expandedHeight: 320,\n    collapsedBottomOffset: 24,\n    showHandle: true,\n    colorMode: \"dark\",\n    builtInQuickActions: [\"overview\", \"recenter\", \"toggleMute\", \"stop\"],\n  }}\n  bottomSheetComponent={YourBottomSheet}\n/>\n```\n\nSupported bottom-sheet entry points:\n\n- `bottomSheetContent`\n- `renderBottomSheet(context)`\n- `bottomSheetComponent`\n\n`BottomSheetRenderContext` includes:\n\n- `state`\n- `hidden`\n- `expanded`\n- `show(state?)`\n- `hide()`\n- `expand()`\n- `collapse()`\n- `toggle()`\n- `bannerInstruction`\n- `routeProgress`\n- `location`\n- `stopNavigation()`\n- `emitAction(actionId)`\n\nState behavior:\n\n- Android uses `collapsed` and `expanded`\n- iOS maps collapsed behavior to `hidden` / `expanded`\n\n## Custom Floating Buttons\n\nCustom floating buttons are independent from the bottom sheet. You can render them with or without `bottomSheet`.\n\n```tsx\nimport {\n  MapboxNavigationFloatingButton,\n  MapboxNavigationFloatingButtonsStack,\n  type FloatingButtonsRenderContext,\n} from \"@atomiqlab/react-native-mapbox-navigation\";\n\nfunction ActionRail({\n  stopNavigation,\n  emitAction,\n}: FloatingButtonsRenderContext) {\n  return (\n    <MapboxNavigationFloatingButtonsStack>\n      <MapboxNavigationFloatingButton\n        accessibilityLabel=\"Open chat\"\n        onPress={() => emitAction(\"chat\")}\n      >\n        CHAT\n      </MapboxNavigationFloatingButton>\n      <MapboxNavigationFloatingButton\n        accessibilityLabel=\"Stop navigation\"\n        onPress={() => {\n          void stopNavigation();\n        }}\n      >\n        END\n      </MapboxNavigationFloatingButton>\n    </MapboxNavigationFloatingButtonsStack>\n  );\n}\n\n<MapboxNavigationView\n  enabled\n  style={{ flex: 1 }}\n  startOrigin={origin}\n  destination={destination}\n  floatingButtonsComponent={ActionRail}\n/>\n```\n\nSupported floating-button entry points:\n\n- `floatingButtons`\n- `renderFloatingButtons(context)`\n- `floatingButtonsComponent`\n\n`FloatingButtonsRenderContext` includes:\n\n- `show(state?)`\n- `hide()`\n- `expand()`\n- `collapse()`\n- `toggle()`\n- `bannerInstruction`\n- `routeProgress`\n- `location`\n- `stopNavigation()`\n- `emitAction(actionId)`\n\nBy default, custom floating buttons automatically hide after arrival. Set `hideFloatingButtonsOnArrival={false}` if you need them to remain visible.\n\nThe default package helpers:\n\n- `MapboxNavigationFloatingButton`\n- `MapboxNavigationFloatingButtonsStack`\n\napply the same rounded dark rail styling used by the package examples.\n\n## Native Floating Buttons\n\nUse `nativeFloatingButtons` to control built-in native map buttons without removing your custom React buttons.\n\n```tsx\n<MapboxNavigationView\n  enabled\n  style={{ flex: 1 }}\n  startOrigin={origin}\n  destination={destination}\n  nativeFloatingButtons={{\n    showCameraModeButton: false,\n    showCompassButton: false,\n  }}\n  floatingButtonsComponent={ActionRail}\n/>\n```\n\nSupported keys:\n\n- `showOverviewButton` (iOS)\n- `showAudioGuidanceButton` (iOS + Android)\n- `showFeedbackButton` (iOS)\n- `showCameraModeButton` (Android)\n- `showRecenterButton` (Android)\n- `showCompassButton` (Android action button)\n\n## End-of-Route Feedback\n\nThe library can show a package-managed rating modal when the trip finishes.\n\n```tsx\n<MapboxNavigationView\n  enabled\n  style={{ flex: 1 }}\n  startOrigin={origin}\n  destination={destination}\n  showsEndOfRouteFeedback\n  onEndOfRouteFeedbackSubmit={({ rating, arrival }) => {\n    console.log(\"Trip rating:\", rating, arrival?.name);\n  }}\n/>\n```\n\nYou can also replace the default modal with your own UI:\n\n- `renderEndOfRouteFeedback(context)`\n- `endOfRouteFeedbackComponent`\n\n`EndOfRouteFeedbackRenderContext` includes:\n\n- `arrival`\n- `dismiss()`\n- `submitRating(rating)`\n- `stopNavigation()`\n\nImportant:\n\n- `showsEndOfRouteFeedback` controls the package React modal, not a native Mapbox rating flow\n- a custom end-of-route renderer is automatically treated as enabled unless you explicitly set `showsEndOfRouteFeedback={false}`\n\n## Runtime Functions\n\n```ts\nimport {\n  advanceToNextWaypoint,\n  getNavigationSettings,\n  resumeCameraFollowing,\n  setDistanceUnit,\n  setLanguage,\n  setMuted,\n  setVoiceVolume,\n  stopNavigation,\n} from \"@atomiqlab/react-native-mapbox-navigation\";\n```\n\nAvailable functions:\n\n- `setMuted(muted: boolean): Promise<void>`\n- `setVoiceVolume(volume: number): Promise<void>`\n- `setDistanceUnit(unit: \"metric\" | \"imperial\"): Promise<void>`\n- `setLanguage(language: string): Promise<void>`\n- `getNavigationSettings(): Promise<NavigationSettings>`\n- `stopNavigation(): Promise<boolean>`\n- `resumeCameraFollowing(): Promise<boolean>`\n- `advanceToNextWaypoint(): Promise<boolean>`\n\n`getNavigationSettings().isNavigating` now reflects real embedded session state.\n`setLanguage()` affects routes requested *after* the call on iOS, since spoken\ninstruction language is fixed per route request there.\n\n### Advancing a waypoint on a business event\n\nOn a multi-stop route the SDK normally advances a leg when the driver physically\narrives. When a stop is instead completed by an app event — a passenger marked\npicked up, a parcel handed over — advance it explicitly:\n\n```tsx\nawait advanceToNextWaypoint()\n```\n\nThe native SDK removes the completed leg, recomputes the ETA and re-focuses the\nnext waypoint, all without tearing down the session. Resolves `false` when there\nis no active session or the route is already on its final leg.\n\n`RouteProgress.legIndex` tells you which leg is active, so leg transitions are\nobservable from `onRouteProgressChange` without extra events.\n\n## Component Callbacks\n\n`MapboxNavigationView` supports these callbacks:\n\n- `onLocationChange(location)`\n- `onRouteProgressChange(progress)`\n- `onRouteChange(event)`\n- `onJourneyDataChange(data)`\n- `onBannerInstruction(instruction)`\n- `onArrive(event)` — final destination only\n- `onWaypointArrive(event)` — an intermediate `waypoints` stop\n- `onOffRoute(event)` — user left or rejoined the route\n- `onCameraFollowingStateChange(state)`\n- `onCancelNavigation()`\n- `onError(error)`\n- `onOverlayBottomSheetActionPress(event)`\n- `onEndOfRouteFeedbackSubmit(event)`\n- `onDestinationPreview(event)` Android-only\n- `onDestinationChanged(event)` Android-only\n\n### Multi-stop routes\n\n`onArrive` fires **only** at the final destination; each intermediate\n`waypoints` stop fires `onWaypointArrive`. Both payloads carry `index`,\n`isFinalDestination` and `remainingWaypoints`.\n\n```tsx\n<MapboxNavigationView\n  waypoints={[stopA, stopB]}\n  destination={finalStop}\n  onWaypointArrive={({ index, remainingWaypoints }) => {\n    console.log(`Reached stop ${index}, ${remainingWaypoints} to go`)\n  }}\n  onArrive={() => console.log('Trip complete')}\n/>\n```\n\n### Event throughput\n\nMapbox reports progress on every location fix, so `onLocationChange`,\n`onRouteProgressChange` and `onJourneyDataChange` each cross the native bridge\nseveral times a second. If your UI only needs periodic updates, throttle them\nnatively — the payload is then never serialized or sent at all:\n\n```tsx\n<MapboxNavigationView eventThrottleMs={500} ... />\n```\n\nDiscrete events (`onArrive`, `onWaypointArrive`, `onBannerInstruction`,\n`onError`) are never throttled. Default is `0` (every update), clamped to\n`0`–`10000`.\n\n## Listener Helpers\n\nYou can also subscribe outside the component tree:\n\n```ts\nimport {\n  addArriveListener,\n  addBannerInstructionListener,\n  addBottomSheetActionPressListener,\n  addCameraFollowingStateChangeListener,\n  addCancelNavigationListener,\n  addDestinationChangedListener,\n  addDestinationPreviewListener,\n  addErrorListener,\n  addJourneyDataChangeListener,\n  addLocationChangeListener,\n  addOffRouteListener,\n  addRouteChangeListener,\n  addRouteProgressChangeListener,\n  addWaypointArriveListener,\n} from \"@atomiqlab/react-native-mapbox-navigation\";\n```\n\nEach returns a subscription — call `.remove()` when done. Subscriptions are\nreference-counted natively, so an event nobody subscribes to is never sent\nacross the bridge.\n\n## SDK Coverage\n\nWhat the package wraps today, and what it deliberately does not.\n\n### Wrapped\n\n| Area | Exposed as |\n| --- | --- |\n| Route request (origin, waypoints, alternatives, language, units) | `startOrigin`, `waypoints`, `destination`, `routeAlternatives`, `language`, `distanceUnit` |\n| Turn-by-turn guidance + banner instructions | `onBannerInstruction`, `onRouteProgressChange`, `onJourneyDataChange` |\n| Camera (follow / overview, pitch, zoom) | `cameraMode`, `cameraPitch`, `cameraZoom`, `resumeCameraFollowing()`, `onCameraFollowingStateChange` |\n| Voice guidance (mute, volume) | `mute`, `voiceVolume`, `setMuted()`, `setVoiceVolume()` |\n| Map styling (day/night, theme) | `mapStyleUri`, `mapStyleUriDay`, `mapStyleUriNight`, `uiTheme` |\n| Standard / 3D style configuration (lighting, 3D objects, label categories) | `mapStyleConfig` |\n| Route line, traffic, turn arrow, maneuver banner, button and trip-progress colours | `colors` |\n| Routing profile (driving / walking / cycling) | `routeProfile` |\n| Road-class and point exclusions | `routeExclusions` |\n| Vehicle dimensions (height / width / weight) | `vehicle` |\n| Location puck (2D / 3D / tinted / hidden / per-state) | `locationPuck` |\n| Display-only map markers | `navigationMarkers` |\n| Native UI visibility | `showsTripProgress`, `showsManeuverView`, `showsSpeedLimits`, `showsWayNameLabel`, `nativeFloatingButtons` |\n| Route line traversal (both), tunnel styling / intersection annotations / continuous alternatives (iOS) | `routeLineTracksTraversal`, `usesNightStyleWhileInTunnel`, `annotatesIntersectionsAlongRoute`, `showsContinuousAlternatives` |\n| Arrival, multi-stop waypoints, off-route | `onArrive`, `onWaypointArrive`, `onOffRoute` |\n| Programmatic leg advance on multi-stop routes | `advanceToNextWaypoint()`, `RouteProgress.legIndex` |\n| Map day/night tiles forced to match the app theme | `uiTheme` (drives `StyleManager` on iOS) |\n| Route simulation | `shouldSimulateRoute` |\n| Session control | `stopNavigation()`, `getNavigationSettings()` |\n\n### Not wrapped yet\n\nDeliberate gaps, roughly in order of how often they get asked for. Each is\nadditive — none require breaking changes.\n\n| Capability | Platform support | Note |\n| --- | --- | --- |\n| Destination marker customization | Android `destinationMarkerAnnotationOptions` | iOS equivalent is the `didAdd finalDestinationAnnotation` delegate hook. |\n| Building highlight on arrival | Android `enableBuildingHighlightOnArrival`, `buildingHighlightOptions` | Cheap to add; Android-only. |\n| Free-drive mode (navigate with no destination) | Android `NavigationViewApi.startFreeDrive()` | Would need a `mode` prop; `destination` is currently required. |\n| Alternative-route selection | iOS `didUpdateAlternatives` / `didSelect continuousAlternative` | Currently alternatives can be shown but not chosen programmatically. |\n| Manual reroute / route refresh triggers | Both | `onOffRoute` reports it; forcing one is not exposed. |\n| Road objects / upcoming alerts (tunnels, tolls, rest stops) | `RouteProgress.upcomingRoadObjects` on both | Rich data, needs a serialization design. |\n| Speed limit value as data | Both (`LocationMatcherResult.speedLimit`) | The native badge is exposed; the raw number is not. |\n| Voice instruction events | Both | Only mute/volume are wrapped, not per-instruction callbacks. |\n| EV routing / charging stations | Both | Large, specialized surface, and not verifiable without EV routing data. |\n| Road cameras, pole-style route annotations | Both | iOS keeps these in a separate SPM product this package does not link. |\n| Route callouts | iOS | Behind `@_spi(ExperimentalMapboxAPI)`, with no Android counterpart. |\n| Line width and traffic gradient | Both | `colors` covers colour; widths and gradients are still SDK defaults. |\n| CarPlay / Android Auto | Both | Out of scope for an embedded RN view. |\n| Full-screen navigation UI | Both | Removed in `2.0.0`; embedded-only by design. |\n\n\n## Current Limitations\n\nThese are important review findings from the current codebase and the docs below reflect them intentionally:\n\n- The package targets the Mapbox Navigation **v3** SDKs (iOS `3.30.1`, Android `3.30.1`) and Maps SDK `11.30.1`. See [CHANGELOG.md](./CHANGELOG.md) for the `3.0.0` breaking changes.\n- `androidActionButtons` is ignored on both platforms and is marked `@deprecated` — use `nativeFloatingButtons`, or render your own with `floatingButtons`.\n- Navigation SDK v3 removed Android's Drop-In UI, so the Android chrome is assembled from discrete widgets. Consequences: `showsTripProgress` and `showsSpeedLimits` have no Android effect (use the themeable `bottomSheet` overlay for trip progress), and neither do `showsReportFeedback`, `showsEndOfRouteFeedback`, `showsWayNameLabel`, `showsContinuousAlternatives`, `usesNightStyleWhileInTunnel` or `annotatesIntersectionsAlongRoute`. Each is logged once at runtime rather than silently ignored.\n- `nativeFloatingButtons` controls only the voice toggle on Android; v3 ships no widget for the camera, recenter or compass buttons there.\n- `onDestinationPreview` no longer fires on either platform — it mirrored a Drop-In preview phase that v3 removed. `onDestinationChanged` is unaffected.\n- `locationPuck` accepts per-state pointers on both platforms, but only the `activeNavigation` / `default` entry has a visible effect on Android; v3's puck component takes a single puck.\n- `locationPuck.translation` is Android-only; the iOS puck API has no model-translation equivalent.\n- Automatic sunrise/sunset style switching is iOS-only. On Android `uiTheme` drives the day/night choice, including following the system night-mode setting.\n- `MapboxNavigationView` is embedded-only. There is no full-screen activity/controller API.\n\n## Supporting Docs\n\n- [QUICKSTART.md](./QUICKSTART.md)\n- [docs/USAGE.md](./docs/USAGE.md)\n- [docs/TROUBLESHOOTING.md](./docs/TROUBLESHOOTING.md)\n- [CHANGELOG.md](./CHANGELOG.md)\n\n## Contributors\n\n- 🧑‍💻 **Remy Tresor**  \n  [![GitHub](https://img.shields.io/badge/GitHub-Remy--Tresor250-181717?style=for-the-badge&logo=github)](https://github.com/Remy-Tresor250)\n\n- 🧑‍💻 **Irere Emmanuel**  \n  [![GitHub](https://img.shields.io/badge/GitHub-Irere123-181717?style=for-the-badge&logo=github)](https://github.com/Irere123)","readmeFilename":"README.md"}