import React from 'react' import {View} from 'react-native' import {useSafeAreaInsets} from 'react-native-safe-area-context' import {useLingui} from '@lingui/react' import {msg} from '@lingui/macro' import {IS_DEV} from '#/env' import {isWeb} from '#/platform/detection' import {useOnboardingDispatch} from '#/state/shell' import { useTheme, atoms as a, useBreakpoints, web, native, flatten, TextStyleProp, } from '#/alf' import {P, leading, Text} from '#/components/Typography' import {ChevronLeft_Stroke2_Corner0_Rounded as ChevronLeft} from '#/components/icons/Chevron' import {Button, ButtonIcon} from '#/components/Button' import {ScrollView} from '#/view/com/util/Views' import {createPortalGroup} from '#/components/Portal' import {Context} from '#/screens/Onboarding/state' const COL_WIDTH = 500 export const OnboardingControls = createPortalGroup() export function Layout({children}: React.PropsWithChildren<{}>) { const {_} = useLingui() const t = useTheme() const insets = useSafeAreaInsets() const {gtMobile} = useBreakpoints() const onboardDispatch = useOnboardingDispatch() const {state, dispatch} = React.useContext(Context) const scrollview = React.useRef(null) const prevActiveStep = React.useRef(state.activeStep) React.useEffect(() => { if (state.activeStep !== prevActiveStep.current) { prevActiveStep.current = state.activeStep scrollview.current?.scrollTo({y: 0, animated: false}) } }, [state]) const paddingTop = gtMobile ? a.py_5xl : a.py_lg const dialogLabel = _(msg`Set up your account`) return ( {IS_DEV && ( )} {!gtMobile && state.hasPrev && ( )} {Array(state.totalSteps) .fill(0) .map((_, i) => ( ))} {children} {gtMobile && (state.hasPrev ? ( ) : ( ))} ) } export function Title({ children, style, }: React.PropsWithChildren) { return ( {children} ) } export function Description({ children, style, }: React.PropsWithChildren) { const t = useTheme() return (

{children}

) }