about summary refs log tree commit diff
path: root/src/view/com/util/layouts/TitleColumnLayout.tsx
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-08-30 16:18:21 -0700
committerPaul Frazee <pfrazee@gmail.com>2023-08-30 16:18:21 -0700
commitf9cab178b9ee2a0ccfde7e0e2cbabff7600de69c (patch)
treec8609bd39cad46a232153a3d3a598ed1b667a027 /src/view/com/util/layouts/TitleColumnLayout.tsx
parent9446c67880331452b3f79dabda183c23718edfa1 (diff)
parent59dcedeea25804188b3503dbf166fa794af20612 (diff)
downloadvoidsky-f9cab178b9ee2a0ccfde7e0e2cbabff7600de69c.tar.zst
Merge branch 'ansh/app-812-add-custom-feed-discovery-to-onboarding' into main
Diffstat (limited to 'src/view/com/util/layouts/TitleColumnLayout.tsx')
-rw-r--r--src/view/com/util/layouts/TitleColumnLayout.tsx69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/view/com/util/layouts/TitleColumnLayout.tsx b/src/view/com/util/layouts/TitleColumnLayout.tsx
new file mode 100644
index 000000000..49ad9fcdb
--- /dev/null
+++ b/src/view/com/util/layouts/TitleColumnLayout.tsx
@@ -0,0 +1,69 @@
+import React from 'react'
+import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native'
+import {usePalette} from 'lib/hooks/usePalette'
+import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle'
+
+interface Props {
+  testID?: string
+  title: JSX.Element
+  horizontal: boolean
+  titleStyle?: StyleProp<ViewStyle>
+  contentStyle?: StyleProp<ViewStyle>
+}
+
+export function TitleColumnLayout({
+  testID,
+  title,
+  horizontal,
+  children,
+  titleStyle,
+  contentStyle,
+}: React.PropsWithChildren<Props>) {
+  const pal = usePalette('default')
+  const titleBg = useColorSchemeStyle(pal.viewLight, pal.view)
+  const contentBg = useColorSchemeStyle(pal.view, {
+    backgroundColor: pal.colors.background,
+    borderColor: pal.colors.border,
+    borderLeftWidth: 1,
+  })
+
+  const layoutStyles = horizontal ? styles2Column : styles1Column
+  return (
+    <View testID={testID} style={layoutStyles.container}>
+      <View style={[layoutStyles.title, titleBg, titleStyle]}>{title}</View>
+      <View style={[layoutStyles.content, contentBg, contentStyle]}>
+        {children}
+      </View>
+    </View>
+  )
+}
+
+const styles2Column = StyleSheet.create({
+  container: {
+    flexDirection: 'row',
+    height: '100%',
+  },
+  title: {
+    flex: 1,
+    paddingHorizontal: 40,
+    paddingBottom: 80,
+    justifyContent: 'center',
+  },
+  content: {
+    flex: 2,
+    paddingHorizontal: 40,
+    justifyContent: 'center',
+  },
+})
+
+const styles1Column = StyleSheet.create({
+  container: {},
+  title: {
+    paddingHorizontal: 40,
+    paddingVertical: 40,
+  },
+  content: {
+    paddingHorizontal: 40,
+    paddingVertical: 40,
+  },
+})