Usage
Create animations like this in just 2 additional lines of code!!
Single animation
Lets add a simple micro interaction to a button when the user presses it.
import { AnimatedWrapper } from 'react-native-micro-interactions';
return(
<AnimatedWrapper animationTrigger='press' animationType='click'>
<TouchableOpacity style={styles.container}>
<Text>Press me!</Text>
</TouchableOpacity>
</AnimatedWrapper>
)
const styles = StyleSheet.create({
container: {
alignItems: 'center',
justifyContent: 'center',
backgroundColor: "red",
paddingVertical: 15,
marginVertical: 10,
borderRadius: 10,
width: 200,
},
});
You check out different types of animations in the Animations section
Pre-defined triggers
The animationTrigger
property is responsible for defining the trigger on which the animation will start. You can choose from these pre defined triggers or create your custom trigger
Triggers | Description |
---|---|
init | When a component is first rendered on the screen. |
press | When the user presses the component. |
long_press | When the user long presses the component |
Custom Trigger
Define a ref
which can be used to trigger the animation anytime using the runAnimation()
method.
import { AnimatedWrapper, AnimatedWrapperRef } from 'react-native-micro-interactions';
// Define a ref to trigger it anywhere
const submitRef = useRef<AnimatedWrapperRef>(null);
return(
<AnimatedWrapper animationType='buzz' ref={submitRef}>
<TouchableOpacity
style={styles.container}
onPress={() => { submitRef.current?.runAnimation() }}
>
<Text>Submit</Text>
</TouchableOpacity>
</AnimatedWrapper>
)
const styles = StyleSheet.create({
container: {
alignItems: 'center',
justifyContent: 'center',
backgroundColor: "red",
paddingVertical: 15,
marginVertical: 10,
borderRadius: 10,
width: 200,
},
});
Group Animations
You can also animate each item in a component as a group without any extra config.
Check out Group Animations
Customization
You can further customise the and abstract the configuration using a config file.
Step 1 - Create a mint.config.ts
file in your project root.
Step 2 - In you App.tsx, wrap your entry code in a MintProvider
import { MintProvider } from 'react-native-micro-interactions';
import MintConfig from "../mint.config"
<MintProvider config={MintConfig}>
// Your entry code
</MintProvider>
Step 3 - Add this to mint.config.ts
.Customize the values as you like and they will applied by default.
export default AnimationConfig({
"click": {
shrink: 0.9,
shrinkDuration: 50,
},
"buzz": {
frequency: 2,
rotation: 2,
duration: 50,
},
"popIn": {
duration: 250,
withBounce: true,
},
"textSlideVertical": {
duration:100,
offset: 30,
},
"textSlideHorizontal": {
duration:100,
offset: 30,
}
})