diff options
author | Ivan Chen <ivan@tagg.id> | 2021-07-23 18:55:27 -0400 |
---|---|---|
committer | Ivan Chen <ivan@tagg.id> | 2021-07-23 18:55:27 -0400 |
commit | c3febe151a34456cecbe84ffaac6eeea56254005 (patch) | |
tree | 3e1465a0e195c3b9676513606089a3dd141b0176 /src/components/common/GradientProgressBar.tsx | |
parent | 811426f6a4d2e3495d45c0ed1b209f2ea539e26f (diff) | |
parent | e39fcbd9e35f6a5e36afe248e24bea0dd3859202 (diff) |
Merge branch 'master' into tma994-bugfix-camera-screen-preview
# Conflicts:
# src/components/moments/TrimmerPlayer.tsx
# src/screens/upload/EditMedia.tsx
Diffstat (limited to 'src/components/common/GradientProgressBar.tsx')
-rw-r--r-- | src/components/common/GradientProgressBar.tsx | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/components/common/GradientProgressBar.tsx b/src/components/common/GradientProgressBar.tsx new file mode 100644 index 00000000..fc62bd3c --- /dev/null +++ b/src/components/common/GradientProgressBar.tsx @@ -0,0 +1,48 @@ +import React, {FC} from 'react'; +import {StyleSheet, ViewProps, ViewStyle} from 'react-native'; +import LinearGradient from 'react-native-linear-gradient'; +import Animated, {useAnimatedStyle} from 'react-native-reanimated'; +import { + TAGG_LIGHT_BLUE_2, + TAGG_LIGHT_BLUE_3, + TAGG_PURPLE, +} from '../../constants'; +import {normalize} from '../../utils'; + +interface GradientProgressBarProps extends ViewProps { + progress: Animated.SharedValue<number>; +} + +const GradientProgressBar: FC<GradientProgressBarProps> = ({ + style, + progress, +}) => { + const animatedProgressStyle = useAnimatedStyle<ViewStyle>(() => ({ + width: `${(1 - progress.value) * 100}%`, + })); + return ( + <LinearGradient + style={[styles.bar, style]} + useAngle={true} + colors={[TAGG_PURPLE, TAGG_LIGHT_BLUE_2]}> + <Animated.View style={[styles.blank, animatedProgressStyle]} /> + </LinearGradient> + ); +}; +const styles = StyleSheet.create({ + container: { + borderRadius: 6.5, + }, + bar: { + height: normalize(10), + borderRadius: 6.5, + }, + blank: { + alignSelf: 'flex-end', + height: normalize(10), + width: '80%', + backgroundColor: TAGG_LIGHT_BLUE_3, + }, +}); + +export default GradientProgressBar; |