How lakshay1800/tabpet works
tabpet is an iOS companion overlay for Expo tab bars. The host mounts a provider and perch, supplies the active tab, and the perch seats, animates, and renders the selected animal as tabs change or the bar is dragged. Separate runtime branches support busy-state behavior, animal selection/registration, and native tab measurement and pan events. The graph follows README capabilities where source excerpts were unavailable; those links are limited to documented behavior rather than inferred implementation details.
Main entry points: companion-perch.tsx Companion perch · registry.ts Profile registry · companion-provider.tsx Companion provider · GlassPanModule.swift Expo pan module
Components 20
Host integration
- Companion provider
packages/tabpet/src/companion-provider.tsx - Companion perch
packages/tabpet/src/companion-perch.tsx - Companion state
packages/tabpet/src/companion-state.ts - Storage seam
packages/tabpet/src/storage.ts - Companion identity
packages/tabpet/src/companion-id.ts
Perch motion
- Perch geometry
packages/tabpet/src/perch-geometry.ts - Around routing
packages/tabpet/src/perch-around.ts - Perch handoff
packages/tabpet/src/perch-handoff.ts - Route reentry
packages/tabpet/src/perch-reentry.ts - Seat remeasure
packages/tabpet/src/perch-remeasure.ts
Animal profiles
- Sprite renderer
packages/tabpet/src/companion-sprite.tsx - Profile registry
packages/tabpet/src/registry.ts - Built-in animals
packages/tabpet/src/animals/all.ts - Custom profiles
packages/tabpet/src/bare.ts - Animal profile
packages/tabpet/src/animals/panda.ts
iOS bar support
- Glass pan bridge
packages/tabpet/src/native/glass-pan.ts - Expo pan module
packages/tabpet/ios/GlassPanModule.swift - Tab bar measurer
swift/Sources/TabPetUIKit/TabBarMeasurer.swift - Pan observer
swift/Sources/TabPetUIKit/TabBarPanObserver.swift
Other components
- Expo host app
Connections 20
- Expo host app → Companion provider: mounts
- Expo host app → Companion perch: sets active tab
- Companion provider → Companion state: provides config
- Companion state → Storage seam: persists state
- Companion provider → Companion identity: selects identity
- Companion perch → Perch geometry: calculates motion
- Companion perch → Around routing: plans long route
- Companion perch → Perch handoff: tracks handoff
- Companion perch → Route reentry: resumes route
- Companion perch → Seat remeasure: remeasures seat
- Companion perch → Sprite renderer: renders companion
- Sprite renderer → Profile registry: resolves profile
- Built-in animals → Profile registry: registers profiles
- Custom profiles → Profile registry: registers profile
- Profile registry → Animal profile: stores profile
- Companion perch → Glass pan bridge: reads layout; subscribes to pan
- Glass pan bridge → Expo pan module: calls native module
- Expo pan module → Tab bar measurer: measures tab bar
- Expo pan module → Pan observer: attaches pan observer
- Pan observer → Glass pan bridge: emits drag events