aboutsummaryrefslogtreecommitdiff
path: root/src/components/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/common')
-rw-r--r--src/components/common/DateLabel.tsx58
-rw-r--r--src/components/common/index.ts1
2 files changed, 59 insertions, 0 deletions
diff --git a/src/components/common/DateLabel.tsx b/src/components/common/DateLabel.tsx
new file mode 100644
index 00000000..145c614c
--- /dev/null
+++ b/src/components/common/DateLabel.tsx
@@ -0,0 +1,58 @@
+import React from 'react';
+import {StyleSheet, Text} from 'react-native';
+import moment from 'moment';
+
+interface DateLabelProps {
+ timestamp: string;
+ type: 'default' | 'short' | 'small';
+ decorate?: (date: string) => string;
+}
+
+const DateLabel: React.FC<DateLabelProps> = ({
+ timestamp,
+ type,
+ decorate = (date) => `${date}`,
+}) => {
+ let parsedDate = moment(timestamp);
+
+ if (!parsedDate) {
+ return <React.Fragment />;
+ }
+
+ switch (type) {
+ case 'default':
+ return (
+ <Text style={styles.default}>
+ {decorate(parsedDate.format('h:mm a • MMM D, YYYY'))}
+ </Text>
+ );
+
+ case 'short':
+ return (
+ <Text style={styles.default}>
+ {decorate(parsedDate.format('MMM D'))}
+ </Text>
+ );
+
+ case 'small':
+ return (
+ <Text style={styles.smallAndBlue}>
+ {decorate(parsedDate.format('MMM D'))}
+ </Text>
+ );
+ }
+};
+
+const styles = StyleSheet.create({
+ default: {
+ fontSize: 15,
+ color: '#c4c4c4',
+ },
+ smallAndBlue: {
+ fontSize: 14,
+ fontWeight: 'bold',
+ color: '#8FA9C2',
+ },
+});
+
+export default DateLabel;
diff --git a/src/components/common/index.ts b/src/components/common/index.ts
index cb9d641b..cd72a70b 100644
--- a/src/components/common/index.ts
+++ b/src/components/common/index.ts
@@ -8,4 +8,5 @@ export {default as SocialIcon} from './SocialIcon';
export {default as TabsGradient} from './TabsGradient';
export {default as RecentSearches} from '../search/RecentSearches';
export {default as LoadingIndicator} from './LoadingIndicator';
+export {default as DateLabel} from './DateLabel';
export * from './post';