import React from 'react' import {StyleSheet, View} from 'react-native' import {usePalette} from 'lib/hooks/usePalette' import {Text} from './text/Text' import {TextLink} from './Link' import {isDesktopWeb} from 'platform/detection' /** * These utilities are used to define long documents in an html-like * DSL. See for instance /locale/en/privacy-policy.tsx */ export function H1({children}: React.PropsWithChildren<{}>) { const pal = usePalette('default') return ( {children} ) } export function H2({children}: React.PropsWithChildren<{}>) { const pal = usePalette('default') return ( {children} ) } export function H3({children}: React.PropsWithChildren<{}>) { const pal = usePalette('default') return ( {children} ) } export function H4({children}: React.PropsWithChildren<{}>) { const pal = usePalette('default') return ( {children} ) } export function P({children}: React.PropsWithChildren<{}>) { const pal = usePalette('default') return ( {children} ) } export function UL({ children, isChild, }: React.PropsWithChildren<{isChild: boolean}>) { return ( {markChildProps(children)} ) } export function OL({ children, isChild, }: React.PropsWithChildren<{isChild: boolean}>) { return ( {markChildProps(children)} ) } export function LI({ children, value, }: React.PropsWithChildren<{value?: string}>) { const pal = usePalette('default') return ( {value || <>•} {markChildProps(children)} ) } export function A({children, href}: React.PropsWithChildren<{href: string}>) { const pal = usePalette('default') return ( ) } export function STRONG({children}: React.PropsWithChildren<{}>) { const pal = usePalette('default') return ( {children} ) } export function EM({children}: React.PropsWithChildren<{}>) { const pal = usePalette('default') return ( {children} ) } function markChildProps(children) { return React.Children.map(children, child => { if (React.isValidElement(child)) { return React.cloneElement(child, {isChild: true}) } return child }) } const styles = StyleSheet.create({ h1: { marginTop: 20, marginBottom: 10, letterSpacing: 0.8, }, h2: { marginTop: 20, marginBottom: 10, letterSpacing: 0.8, }, h3: { marginBottom: 10, }, h4: { marginBottom: 10, fontWeight: 'bold', }, p: { marginBottom: 10, }, ul: { marginBottom: 10, paddingLeft: isDesktopWeb ? 18 : 4, }, ulChild: { paddingTop: 10, marginBottom: 0, }, ol: { marginBottom: 10, paddingLeft: isDesktopWeb ? 18 : 4, }, olChild: { paddingTop: 10, marginBottom: 0, }, li: { flexDirection: 'row', paddingRight: 20, marginBottom: 10, }, liBullet: { paddingRight: 10, }, liText: {}, a: { marginBottom: 10, }, em: { fontStyle: 'italic', }, })