What's Included
- TypeScript source (Button.tsx)
- useCamera hook with permission handling
- PermissionState fallback component
- Camera zoom + constants module
- Demo App.tsx entry
About the Project
Built with react-native-reanimated — a single shared progress value drives multiple useAnimatedStyle worklets that interpolate shadow offset, shadow radius, inset highlights and label scale in one frame, so the press feedback stays on the UI thread. The button surface is a live expo-camera CameraView (front-facing, zoomed) layered under an expo-blur BlurView with stacked inset boxShadows to fake a glass rim. expo-camera permissions are managed by a small useCamera hook with a PermissionState fallback. Tested on Expo SDK 51 (iOS + Android); requires a development build because expo-camera is not supported in Expo Go on iOS for video preview.