aboutsummaryrefslogtreecommitdiff
path: root/src/components/common/GradientProgressBar.tsx
diff options
context:
space:
mode:
authorIvan Chen <ivan@tagg.id>2021-07-23 18:55:27 -0400
committerIvan Chen <ivan@tagg.id>2021-07-23 18:55:27 -0400
commitc3febe151a34456cecbe84ffaac6eeea56254005 (patch)
tree3e1465a0e195c3b9676513606089a3dd141b0176 /src/components/common/GradientProgressBar.tsx
parent811426f6a4d2e3495d45c0ed1b209f2ea539e26f (diff)
parente39fcbd9e35f6a5e36afe248e24bea0dd3859202 (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.tsx48
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;