{"_rev":"3-e86f0770251ddb436424b805e6c1725b","time":{"created":"2026-01-19T15:02:30.796Z","modified":"2026-01-19T15:02:31.269Z","1.0.0":"2026-01-19T14:35:08.155Z","1.0.1":"2026-01-19T15:02:31.012Z"},"_id":"@bugraongundev/features-bus-stops","name":"@bugraongundev/features-bus-stops","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.1":{"name":"@bugraongundev/features-bus-stops","version":"1.0.1","description":"Twin SDK Bus Stops Feature (MapLibre layer + stop detail sheet + API service)","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p tsconfig.json","clean":"rimraf dist"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0","@maplibre/maplibre-react-native":"^10.0.0","react-native-vector-icons":"^10.0.0","react-i18next":"^15.0.0"},"devDependencies":{"@types/react":"^19.1.8","@types/react-native":"^0.73.0","@types/react-native-vector-icons":"^6.4.18","rimraf":"^6.0.1","typescript":"^5.6.3"},"publishConfig":{"access":"public"},"_id":"@bugraongundev/features-bus-stops@1.0.1","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-1oKI2q0IBCDtwj+JhYXmeJuBGTZkm8EhTY6KC279mZYeRwXYuJWfbcgZ/bWiANUbR6suCRntcoM9kGBjoMxd3A==","shasum":"370b8512a59431a0f0e84b9edd47b90386a778b9","tarball":"https://registry.npmjs.org/@bugraongundev/features-bus-stops/-/features-bus-stops-1.0.1.tgz","fileCount":22,"unpackedSize":43607,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGHQlwWIJcTqW03AgxsLgTx3kF5VuoAjjlFCPzfb1N4HAiEA28OPsXopc6GY0V+QQNddQGNqBZ8GIh96/C6ILg7j3h4="}]},"_npmUser":{"name":"bugraongun","email":"bugraogn@gmail.com"},"directories":{},"maintainers":[{"name":"bugraongun","email":"bugraogn@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/features-bus-stops_1.0.1_1768834950870_0.7449076881765124"},"_hasShrinkwrap":false}},"maintainers":[{"name":"bugraongun","email":"bugraogn@gmail.com"}],"description":"Twin SDK Bus Stops Feature (MapLibre layer + stop detail sheet + API service)","readme":"# @bugraongundev/features-bus-stops\r\n\r\nBus stops feature package for Twin SDK.\r\n\r\n## What it includes\r\n\r\n- `BusStopsLayer`: MapLibre vector tile layer for bus stops\r\n- `StopDetailSheet`: Stop detail modal (fetches stop data)\r\n- `busStopService`: API helper for stop detail\r\n- Types: `BusStopFeature`, `BusStopData`, etc.\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install @bugraongundev/features-bus-stops\r\n```\r\n\r\n## Peer dependencies\r\n\r\nThis package expects the host app to provide:\r\n\r\n- `react`\r\n- `react-native`\r\n- `@maplibre/maplibre-react-native`\r\n- `react-native-vector-icons`\r\n- `react-i18next`\r\n\r\n## Usage\r\n\r\n```tsx\r\nimport React, { useState } from 'react';\r\nimport { View } from 'react-native';\r\nimport * as MapLibreGL from '@maplibre/maplibre-react-native';\r\nimport { BusStopsLayer, StopDetailSheet } from '@bugraongundev/features-bus-stops';\r\nimport type { BusStopFeature, BusStopData } from '@bugraongundev/features-bus-stops';\r\n\r\nexport function MapScreen() {\r\n  const [selectedStop, setSelectedStop] = useState<BusStopFeature | null>(null);\r\n  const [selectedData, setSelectedData] = useState<BusStopData | null>(null);\r\n  const [visible, setVisible] = useState(false);\r\n\r\n  return (\r\n    <View style={{ flex: 1 }}>\r\n      <MapLibreGL.MapView style={{ flex: 1 }}>\r\n        <BusStopsLayer\r\n          enabled={true}\r\n          tilesUrl=\"<YOUR_TILES_URL>\"\r\n          onStopPress={(stopNo, coordinates, stopName) => {\r\n            setSelectedStop({\r\n              type: 'Feature',\r\n              geometry: { type: 'Point', coordinates },\r\n              properties: { durak_id: stopNo, durak_adi: stopName },\r\n            });\r\n            setVisible(true);\r\n          }}\r\n        />\r\n      </MapLibreGL.MapView>\r\n\r\n      <StopDetailSheet\r\n        visible={visible}\r\n        onClose={() => {\r\n          setVisible(false);\r\n          setSelectedStop(null);\r\n          setSelectedData(null);\r\n        }}\r\n        stopData={selectedData}\r\n        stopFeature={selectedStop}\r\n        apiUrl=\"<YOUR_API_URL>\"\r\n        isDarkMode={false}\r\n      />\r\n    </View>\r\n  );\r\n}\r\n```\r\n\r\n\r\n","readmeFilename":"README.md"}