/** * In the Web build, we center all content so that it mirrors the * mobile experience (a single narrow column). We then place a UI * shell around the content if you're in desktop. * * Because scrolling is handled by components deep in the hierarchy, * we can't just wrap the top-level element with a max width. The * centering has to be done at the ScrollView. * * These components wrap the RN ScrollView-based components to provide * consistent layout. It also provides for views that * need to match layout but which aren't scrolled. */ import React from 'react' import { FlatList as RNFlatList, FlatListProps, ScrollView as RNScrollView, ScrollViewProps, StyleSheet, View, ViewProps, } from 'react-native' import {addStyle, colors} from 'lib/styles' export function CenteredView({ style, ...props }: React.PropsWithChildren) { style = addStyle(style, styles.container) return } export const FlatList = React.forwardRef(function ( { contentContainerStyle, ...props }: React.PropsWithChildren>, ref: React.Ref, ) { contentContainerStyle = addStyle( contentContainerStyle, styles.containerScroll, ) return ( ) }) export const ScrollView = React.forwardRef(function ( {contentContainerStyle, ...props}: React.PropsWithChildren, ref: React.Ref, ) { contentContainerStyle = addStyle( contentContainerStyle, styles.containerScroll, ) return ( ) }) const styles = StyleSheet.create({ container: { width: '100%', maxWidth: 600, marginLeft: 'auto', marginRight: 'auto', }, containerScroll: { width: '100%', minHeight: '100vh', maxWidth: 600, marginLeft: 'auto', marginRight: 'auto', }, containerLight: { backgroundColor: colors.gray1, }, containerDark: { backgroundColor: colors.gray7, }, })