summaryrefslogtreecommitdiff
path: root/app_expo/components/text/text.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'app_expo/components/text/text.tsx')
-rw-r--r--app_expo/components/text/text.tsx28
1 files changed, 28 insertions, 0 deletions
diff --git a/app_expo/components/text/text.tsx b/app_expo/components/text/text.tsx
new file mode 100644
index 0000000..d9ffc8c
--- /dev/null
+++ b/app_expo/components/text/text.tsx
@@ -0,0 +1,28 @@
+import * as React from 'react'
+import { Text as ReactNativeText } from 'react-native'
+import { presets } from './text.presets'
+import { TextProps } from './text.props'
+import { translate } from '../../i18n'
+
+/**
+ * For your text displaying needs.
+ *
+ * This component is a HOC over the built-in React Native one.
+ */
+export function Text(props: TextProps) {
+ // grab the props
+ const { preset = 'default', tx, txOptions, text, children, style: styleOverride, ...rest } = props
+
+ // figure out which content to use
+ const i18nText = tx && translate(tx, txOptions)
+ const content = i18nText || text || children
+
+ const style = presets[preset] || presets.default
+ const styles = [style, styleOverride]
+
+ return (
+ <ReactNativeText {...rest} style={styles}>
+ {content}
+ </ReactNativeText>
+ )
+}