···1import React from 'react'
0203import {useTheme} from '#/alf'
4-import * as TextField from '#/components/forms/TextField'
5import {DateFieldProps} from '#/components/forms/DateField/types'
6import {toSimpleDateString} from '#/components/forms/DateField/utils'
7-import DatePicker from 'react-native-date-picker'
8-import {isAndroid} from 'platform/detection'
9import {DateFieldButton} from './index.shared'
1011export * as utils from '#/components/forms/DateField/utils'
···1import React from 'react'
2+import DatePicker from 'react-native-date-picker'
34+import {isAndroid} from 'platform/detection'
5import {useTheme} from '#/alf'
06import {DateFieldProps} from '#/components/forms/DateField/types'
7import {toSimpleDateString} from '#/components/forms/DateField/utils'
8+import * as TextField from '#/components/forms/TextField'
09import {DateFieldButton} from './index.shared'
1011export * as utils from '#/components/forms/DateField/utils'
+4-4
src/components/forms/DateField/index.shared.tsx
···1import React from 'react'
2-import {View, Pressable} from 'react-native'
34-import {atoms as a, android, useTheme, web} from '#/alf'
5-import {Text} from '#/components/Typography'
6-import {useInteractionState} from '#/components/hooks/useInteractionState'
7import * as TextField from '#/components/forms/TextField'
08import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
09import {localizeDate} from './utils'
1011// looks like a TextField.Input, but is just a button. It'll do something different on each platform on press
···1import React from 'react'
2+import {Pressable, View} from 'react-native'
34+import {android, atoms as a, useTheme, web} from '#/alf'
005import * as TextField from '#/components/forms/TextField'
6+import {useInteractionState} from '#/components/hooks/useInteractionState'
7import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
8+import {Text} from '#/components/Typography'
9import {localizeDate} from './utils'
1011// looks like a TextField.Input, but is just a button. It'll do something different on each platform on press
+8-8
src/components/forms/DateField/index.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-4-import {useTheme, atoms as a} from '#/alf'
5-import * as TextField from '#/components/forms/TextField'
6-import {toSimpleDateString} from '#/components/forms/DateField/utils'
7-import {DateFieldProps} from '#/components/forms/DateField/types'
8import DatePicker from 'react-native-date-picker'
000009import * as Dialog from '#/components/Dialog'
00010import {DateFieldButton} from './index.shared'
11-import {Button, ButtonText} from '#/components/Button'
12-import {Trans, msg} from '@lingui/macro'
13-import {useLingui} from '@lingui/react'
1415export * as utils from '#/components/forms/DateField/utils'
16export const Label = TextField.Label
···1import React from 'react'
2import {View} from 'react-native'
000003import DatePicker from 'react-native-date-picker'
4+import {msg, Trans} from '@lingui/macro'
5+import {useLingui} from '@lingui/react'
6+7+import {atoms as a, useTheme} from '#/alf'
8+import {Button, ButtonText} from '#/components/Button'
9import * as Dialog from '#/components/Dialog'
10+import {DateFieldProps} from '#/components/forms/DateField/types'
11+import {toSimpleDateString} from '#/components/forms/DateField/utils'
12+import * as TextField from '#/components/forms/TextField'
13import {DateFieldButton} from './index.shared'
0001415export * as utils from '#/components/forms/DateField/utils'
16export const Label = TextField.Label
+4-4
src/components/forms/DateField/index.web.tsx
···1import React from 'react'
2-import {TextInput, TextInputProps, StyleSheet} from 'react-native'
3// @ts-ignore
4import {unstable_createElement} from 'react-native-web'
5-import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
67-import * as TextField from '#/components/forms/TextField'
8-import {toSimpleDateString} from '#/components/forms/DateField/utils'
9import {DateFieldProps} from '#/components/forms/DateField/types'
0001011export * as utils from '#/components/forms/DateField/utils'
12export const Label = TextField.Label
···1import React from 'react'
2+import {StyleSheet, TextInput, TextInputProps} from 'react-native'
3// @ts-ignore
4import {unstable_createElement} from 'react-native-web'
05006import {DateFieldProps} from '#/components/forms/DateField/types'
7+import {toSimpleDateString} from '#/components/forms/DateField/utils'
8+import * as TextField from '#/components/forms/TextField'
9+import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
1011export * as utils from '#/components/forms/DateField/utils'
12export const Label = TextField.Label
+1-1
src/components/forms/FormError.tsx
···1import React from 'react'
2import {View} from 'react-native'
304import {Warning_Stroke2_Corner0_Rounded as Warning} from '#/components/icons/Warning'
5import {Text} from '#/components/Typography'
6-import {atoms as a, useTheme} from '#/alf'
78export function FormError({error}: {error?: string}) {
9 const t = useTheme()
···1import React from 'react'
2import {View} from 'react-native'
34+import {atoms as a, useTheme} from '#/alf'
5import {Warning_Stroke2_Corner0_Rounded as Warning} from '#/components/icons/Warning'
6import {Text} from '#/components/Typography'
078export function FormError({error}: {error?: string}) {
9 const t = useTheme()
+3-3
src/components/forms/HostingProvider.tsx
···3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
506import {isAndroid} from '#/platform/detection'
07import {atoms as a, useTheme} from '#/alf'
8import {Globe_Stroke2_Corner0_Rounded as Globe} from '#/components/icons/Globe'
9import {PencilLine_Stroke2_Corner0_Rounded as Pencil} from '#/components/icons/Pencil'
010import {useDialogControl} from '../Dialog'
11import {Text} from '../Typography'
12-import {ServerInputDialog} from '#/view/com/auth/server-input'
13-import {toNiceDomain} from '#/lib/strings/url-helpers'
14-import {Button} from '../Button'
1516export function HostingProvider({
17 serviceUrl,
···3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56+import {toNiceDomain} from '#/lib/strings/url-helpers'
7import {isAndroid} from '#/platform/detection'
8+import {ServerInputDialog} from '#/view/com/auth/server-input'
9import {atoms as a, useTheme} from '#/alf'
10import {Globe_Stroke2_Corner0_Rounded as Globe} from '#/components/icons/Globe'
11import {PencilLine_Stroke2_Corner0_Rounded as Pencil} from '#/components/icons/Pencil'
12+import {Button} from '../Button'
13import {useDialogControl} from '../Dialog'
14import {Text} from '../Typography'
0001516export function HostingProvider({
17 serviceUrl,
+10-10
src/screens/Login/ChooseAccountForm.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {Trans, msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56-import {useAnalytics} from 'lib/analytics/analytics'
7-import {UserAvatar} from '../../view/com/util/UserAvatar'
8-import {colors} from 'lib/styles'
9-import {useSession, useSessionApi, SessionAccount} from '#/state/session'
10import {useProfileQuery} from '#/state/queries/profile'
011import {useLoggedOutViewControls} from '#/state/shell/logged-out'
12import * as Toast from '#/view/com/util/Toast'
13-import {Button} from '#/components/Button'
14import {atoms as a, useTheme} from '#/alf'
15-import {Text} from '#/components/Typography'
16-import {ChevronRight_Stroke2_Corner0_Rounded as Chevron} from '#/components/icons/Chevron'
17-import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check'
18import * as TextField from '#/components/forms/TextField'
00019import {FormContainer} from './FormContainer'
20-import {logEvent} from '#/lib/statsig/statsig'
2122function AccountItem({
23 account,
···1import React from 'react'
2import {View} from 'react-native'
3+import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56+import {useAnalytics} from '#/lib/analytics/analytics'
7+import {logEvent} from '#/lib/statsig/statsig'
8+import {colors} from '#/lib/styles'
09import {useProfileQuery} from '#/state/queries/profile'
10+import {SessionAccount, useSession, useSessionApi} from '#/state/session'
11import {useLoggedOutViewControls} from '#/state/shell/logged-out'
12import * as Toast from '#/view/com/util/Toast'
13+import {UserAvatar} from '#/view/com/util/UserAvatar'
14import {atoms as a, useTheme} from '#/alf'
15+import {Button} from '#/components/Button'
0016import * as TextField from '#/components/forms/TextField'
17+import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check'
18+import {ChevronRight_Stroke2_Corner0_Rounded as Chevron} from '#/components/icons/Chevron'
19+import {Text} from '#/components/Typography'
20import {FormContainer} from './FormContainer'
02122function AccountItem({
23 account,
+11-11
src/screens/Login/ForgotPasswordForm.tsx
···1-import React, {useState, useEffect} from 'react'
2import {ActivityIndicator, Keyboard, View} from 'react-native'
3import {ComAtprotoServerDescribeServer} from '@atproto/api'
4-import * as EmailValidator from 'email-validator'
5import {BskyAgent} from '@atproto/api'
6-import {Trans, msg} from '@lingui/macro'
7import {useLingui} from '@lingui/react'
089-import * as TextField from '#/components/forms/TextField'
10-import {HostingProvider} from '#/components/forms/HostingProvider'
11-import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
12-import {atoms as a, useTheme} from '#/alf'
13-import {useAnalytics} from 'lib/analytics/analytics'
14-import {isNetworkError} from 'lib/strings/errors'
15-import {cleanError} from 'lib/strings/errors'
16import {logger} from '#/logger'
017import {Button, ButtonText} from '#/components/Button'
000018import {Text} from '#/components/Typography'
19import {FormContainer} from './FormContainer'
20-import {FormError} from '#/components/forms/FormError'
2122type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
23
···1+import React, {useEffect, useState} from 'react'
2import {ActivityIndicator, Keyboard, View} from 'react-native'
3import {ComAtprotoServerDescribeServer} from '@atproto/api'
04import {BskyAgent} from '@atproto/api'
5+import {msg, Trans} from '@lingui/macro'
6import {useLingui} from '@lingui/react'
7+import * as EmailValidator from 'email-validator'
89+import {useAnalytics} from '#/lib/analytics/analytics'
10+import {isNetworkError} from '#/lib/strings/errors'
11+import {cleanError} from '#/lib/strings/errors'
000012import {logger} from '#/logger'
13+import {atoms as a, useTheme} from '#/alf'
14import {Button, ButtonText} from '#/components/Button'
15+import {FormError} from '#/components/forms/FormError'
16+import {HostingProvider} from '#/components/forms/HostingProvider'
17+import * as TextField from '#/components/forms/TextField'
18+import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
19import {Text} from '#/components/Typography'
20import {FormContainer} from './FormContainer'
02122type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
23
+2-2
src/screens/Login/FormContainer.tsx
···1import React from 'react'
2import {
3 ScrollView,
04 StyleSheet,
5 View,
6- type StyleProp,
7 type ViewStyle,
8} from 'react-native'
9010import {atoms as a, useBreakpoints, useTheme} from '#/alf'
11import {Text} from '#/components/Typography'
12-import {isWeb} from '#/platform/detection'
1314export function FormContainer({
15 testID,
···1import React from 'react'
2import {
3 ScrollView,
4+ type StyleProp,
5 StyleSheet,
6 View,
07 type ViewStyle,
8} from 'react-native'
910+import {isWeb} from '#/platform/detection'
11import {atoms as a, useBreakpoints, useTheme} from '#/alf'
12import {Text} from '#/components/Typography'
01314export function FormContainer({
15 testID,
+12-12
src/screens/Login/LoginForm.tsx
···1-import React, {useState, useRef} from 'react'
2import {
3 ActivityIndicator,
4 Keyboard,
···7 View,
8} from 'react-native'
9import {ComAtprotoServerDescribeServer} from '@atproto/api'
10-import {Trans, msg} from '@lingui/macro'
11import {useLingui} from '@lingui/react'
1213-import {useAnalytics} from 'lib/analytics/analytics'
14-import {createFullHandle} from 'lib/strings/handles'
15-import {isNetworkError} from 'lib/strings/errors'
16-import {useSessionApi} from '#/state/session'
17-import {cleanError} from 'lib/strings/errors'
18import {logger} from '#/logger'
19-import {Button, ButtonIcon, ButtonText} from '#/components/Button'
20import {atoms as a, useTheme} from '#/alf'
21-import {Text} from '#/components/Typography'
0022import * as TextField from '#/components/forms/TextField'
23import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
24import {Lock_Stroke2_Corner0_Rounded as Lock} from '#/components/icons/Lock'
25-import {HostingProvider} from '#/components/forms/HostingProvider'
26-import {FormContainer} from './FormContainer'
27-import {FormError} from '#/components/forms/FormError'
28import {Loader} from '#/components/Loader'
002930type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
31
···1+import React, {useRef, useState} from 'react'
2import {
3 ActivityIndicator,
4 Keyboard,
···7 View,
8} from 'react-native'
9import {ComAtprotoServerDescribeServer} from '@atproto/api'
10+import {msg, Trans} from '@lingui/macro'
11import {useLingui} from '@lingui/react'
1213+import {useAnalytics} from '#/lib/analytics/analytics'
14+import {isNetworkError} from '#/lib/strings/errors'
15+import {cleanError} from '#/lib/strings/errors'
16+import {createFullHandle} from '#/lib/strings/handles'
017import {logger} from '#/logger'
18+import {useSessionApi} from '#/state/session'
19import {atoms as a, useTheme} from '#/alf'
20+import {Button, ButtonIcon, ButtonText} from '#/components/Button'
21+import {FormError} from '#/components/forms/FormError'
22+import {HostingProvider} from '#/components/forms/HostingProvider'
23import * as TextField from '#/components/forms/TextField'
24import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
25import {Lock_Stroke2_Corner0_Rounded as Lock} from '#/components/icons/Lock'
00026import {Loader} from '#/components/Loader'
27+import {Text} from '#/components/Typography'
28+import {FormContainer} from './FormContainer'
2930type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
31
+4-3
src/screens/Login/PasswordUpdatedForm.tsx
···1import React, {useEffect} from 'react'
2import {View} from 'react-native'
3-import {useAnalytics} from 'lib/analytics/analytics'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6-import {FormContainer} from './FormContainer'
007import {Button, ButtonText} from '#/components/Button'
8import {Text} from '#/components/Typography'
9-import {atoms as a, useBreakpoints} from '#/alf'
1011export const PasswordUpdatedForm = ({
12 onPressNext,
···1import React, {useEffect} from 'react'
2import {View} from 'react-native'
03import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5+6+import {useAnalytics} from '#/lib/analytics/analytics'
7+import {atoms as a, useBreakpoints} from '#/alf'
8import {Button, ButtonText} from '#/components/Button'
9import {Text} from '#/components/Typography'
10+import {FormContainer} from './FormContainer'
1112export const PasswordUpdatedForm = ({
13 onPressNext,
+12-12
src/screens/Login/SetNewPasswordForm.tsx
···1-import React, {useState, useEffect} from 'react'
2import {ActivityIndicator, View} from 'react-native'
3import {BskyAgent} from '@atproto/api'
4-import {useAnalytics} from 'lib/analytics/analytics'
056-import {isNetworkError} from 'lib/strings/errors'
7-import {cleanError} from 'lib/strings/errors'
8-import {checkAndFormatResetCode} from 'lib/strings/password'
09import {logger} from '#/logger'
10-import {Trans, msg} from '@lingui/macro'
11-import {useLingui} from '@lingui/react'
12-import {FormContainer} from './FormContainer'
13-import {Text} from '#/components/Typography'
14import * as TextField from '#/components/forms/TextField'
15import {Lock_Stroke2_Corner0_Rounded as Lock} from '#/components/icons/Lock'
16import {Ticket_Stroke2_Corner0_Rounded as Ticket} from '#/components/icons/Ticket'
17-import {Button, ButtonText} from '#/components/Button'
18-import {useTheme, atoms as a} from '#/alf'
19-import {FormError} from '#/components/forms/FormError'
2021export const SetNewPasswordForm = ({
22 error,
···1+import React, {useEffect, useState} from 'react'
2import {ActivityIndicator, View} from 'react-native'
3import {BskyAgent} from '@atproto/api'
4+import {msg, Trans} from '@lingui/macro'
5+import {useLingui} from '@lingui/react'
67+import {useAnalytics} from '#/lib/analytics/analytics'
8+import {isNetworkError} from '#/lib/strings/errors'
9+import {cleanError} from '#/lib/strings/errors'
10+import {checkAndFormatResetCode} from '#/lib/strings/password'
11import {logger} from '#/logger'
12+import {atoms as a, useTheme} from '#/alf'
13+import {Button, ButtonText} from '#/components/Button'
14+import {FormError} from '#/components/forms/FormError'
015import * as TextField from '#/components/forms/TextField'
16import {Lock_Stroke2_Corner0_Rounded as Lock} from '#/components/icons/Lock'
17import {Ticket_Stroke2_Corner0_Rounded as Ticket} from '#/components/icons/Ticket'
18+import {Text} from '#/components/Typography'
19+import {FormContainer} from './FormContainer'
02021export const SetNewPasswordForm = ({
22 error,
+11-11
src/screens/Login/index.tsx
···1import React from 'react'
2import {KeyboardAvoidingView} from 'react-native'
3-import {useAnalytics} from '#/lib/analytics/analytics'
04import {useLingui} from '@lingui/react'
56-import {LoggedOutLayout} from '#/view/com/util/layouts/LoggedOutLayout'
7-import {SessionAccount, useSession} from '#/state/session'
8import {DEFAULT_SERVICE} from '#/lib/constants'
9-import {useLoggedOutView} from '#/state/shell/logged-out'
10-import {useServiceQuery} from '#/state/queries/service'
11-import {msg} from '@lingui/macro'
12import {logger} from '#/logger'
13-import {atoms as a} from '#/alf'
14-import {ChooseAccountForm} from './ChooseAccountForm'
0015import {ForgotPasswordForm} from '#/screens/Login/ForgotPasswordForm'
0016import {SetNewPasswordForm} from '#/screens/Login/SetNewPasswordForm'
17-import {PasswordUpdatedForm} from '#/screens/Login/PasswordUpdatedForm'
18-import {LoginForm} from '#/screens/Login/LoginForm'
19import {ScreenTransition} from './ScreenTransition'
20-import {LayoutAnimationConfig} from 'react-native-reanimated'
2122enum Forms {
23 Login,
···1import React from 'react'
2import {KeyboardAvoidingView} from 'react-native'
3+import {LayoutAnimationConfig} from 'react-native-reanimated'
4+import {msg} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67+import {useAnalytics} from '#/lib/analytics/analytics'
08import {DEFAULT_SERVICE} from '#/lib/constants'
0009import {logger} from '#/logger'
10+import {useServiceQuery} from '#/state/queries/service'
11+import {SessionAccount, useSession} from '#/state/session'
12+import {useLoggedOutView} from '#/state/shell/logged-out'
13+import {LoggedOutLayout} from '#/view/com/util/layouts/LoggedOutLayout'
14import {ForgotPasswordForm} from '#/screens/Login/ForgotPasswordForm'
15+import {LoginForm} from '#/screens/Login/LoginForm'
16+import {PasswordUpdatedForm} from '#/screens/Login/PasswordUpdatedForm'
17import {SetNewPasswordForm} from '#/screens/Login/SetNewPasswordForm'
18+import {atoms as a} from '#/alf'
19+import {ChooseAccountForm} from './ChooseAccountForm'
20import {ScreenTransition} from './ScreenTransition'
02122enum Forms {
23 Login,
+5-4
src/screens/Signup/StepCaptcha.tsx
···3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {nanoid} from 'nanoid/non-secure'
000006import {useSignupContext, useSubmitSignup} from '#/screens/Signup/state'
7-import {CaptchaWebView} from 'view/com/auth/create/CaptchaWebView'
8-import {createFullHandle} from 'lib/strings/handles'
9-import {isWeb} from 'platform/detection'
10import {atoms as a, useTheme} from '#/alf'
11import {FormError} from '#/components/forms/FormError'
12-import {ScreenTransition} from '#/screens/Login/ScreenTransition'
1314const CAPTCHA_PATH = '/gate/signup'
15
···3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {nanoid} from 'nanoid/non-secure'
6+7+import {createFullHandle} from '#/lib/strings/handles'
8+import {isWeb} from '#/platform/detection'
9+import {CaptchaWebView} from '#/view/com/auth/create/CaptchaWebView'
10+import {ScreenTransition} from '#/screens/Login/ScreenTransition'
11import {useSignupContext, useSubmitSignup} from '#/screens/Signup/state'
00012import {atoms as a, useTheme} from '#/alf'
13import {FormError} from '#/components/forms/FormError'
01415const CAPTCHA_PATH = '/gate/signup'
16
+11-10
src/screens/Signup/StepHandle.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {useFocusEffect} from '@react-navigation/native'
4-import {useLingui} from '@lingui/react'
5import {msg, Trans} from '@lingui/macro'
6-import {TimesLarge_Stroke2_Corner0_Rounded as Times} from '#/components/icons/Times'
7-import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check'
8-import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
9-import * as TextField from '#/components/forms/TextField'
10-import {useSignupContext} from '#/screens/Signup/state'
11-import {Text} from '#/components/Typography'
12-import {atoms as a, useTheme} from '#/alf'
13import {
14 createFullHandle,
15 IsValidHandle,
16 validateHandle,
17-} from 'lib/strings/handles'
18import {ScreenTransition} from '#/screens/Login/ScreenTransition'
00000001920export function StepHandle() {
21 const {_} = useLingui()
···1import React from 'react'
2import {View} from 'react-native'
003import {msg, Trans} from '@lingui/macro'
4+import {useLingui} from '@lingui/react'
5+import {useFocusEffect} from '@react-navigation/native'
6+00007import {
8 createFullHandle,
9 IsValidHandle,
10 validateHandle,
11+} from '#/lib/strings/handles'
12import {ScreenTransition} from '#/screens/Login/ScreenTransition'
13+import {useSignupContext} from '#/screens/Signup/state'
14+import {atoms as a, useTheme} from '#/alf'
15+import * as TextField from '#/components/forms/TextField'
16+import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
17+import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check'
18+import {TimesLarge_Stroke2_Corner0_Rounded as Times} from '#/components/icons/Times'
19+import {Text} from '#/components/Typography'
2021export function StepHandle() {
22 const {_} = useLingui()
+11-10
src/screens/Signup/index.tsx
···1import React from 'react'
2import {ScrollView, View} from 'react-native'
03import {useLingui} from '@lingui/react'
4-import {msg, Trans} from '@lingui/macro'
0000005import {
6 initialState,
7 reducer,
···9 SignupStep,
10 useSubmitSignup,
11} from '#/screens/Signup/state'
0012import {StepInfo} from '#/screens/Signup/StepInfo'
13-import {StepHandle} from '#/screens/Signup/StepHandle'
14-import {StepCaptcha} from '#/screens/Signup/StepCaptcha'
15import {atoms as a, useTheme} from '#/alf'
16import {Button, ButtonText} from '#/components/Button'
17-import {Text} from '#/components/Typography'
18-import {LoggedOutLayout} from 'view/com/util/layouts/LoggedOutLayout'
19-import {FEEDBACK_FORM_URL} from 'lib/constants'
20import {InlineLink} from '#/components/Link'
21-import {useServiceQuery} from 'state/queries/service'
22-import {getAgent} from 'state/session'
23-import {createFullHandle} from 'lib/strings/handles'
24-import {useAnalytics} from 'lib/analytics/analytics'
2526export function Signup({onPressBack}: {onPressBack: () => void}) {
27 const {_} = useLingui()
···1import React from 'react'
2import {ScrollView, View} from 'react-native'
3+import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5+6+import {useAnalytics} from '#/lib/analytics/analytics'
7+import {FEEDBACK_FORM_URL} from '#/lib/constants'
8+import {createFullHandle} from '#/lib/strings/handles'
9+import {useServiceQuery} from '#/state/queries/service'
10+import {getAgent} from '#/state/session'
11+import {LoggedOutLayout} from '#/view/com/util/layouts/LoggedOutLayout'
12import {
13 initialState,
14 reducer,
···16 SignupStep,
17 useSubmitSignup,
18} from '#/screens/Signup/state'
19+import {StepCaptcha} from '#/screens/Signup/StepCaptcha'
20+import {StepHandle} from '#/screens/Signup/StepHandle'
21import {StepInfo} from '#/screens/Signup/StepInfo'
0022import {atoms as a, useTheme} from '#/alf'
23import {Button, ButtonText} from '#/components/Button'
00024import {InlineLink} from '#/components/Link'
25+import {Text} from '#/components/Typography'
0002627export function Signup({onPressBack}: {onPressBack: () => void}) {
28 const {_} = useLingui()
+10-10
src/screens/Signup/state.ts
···1import React, {useCallback} from 'react'
2import {LayoutAnimation} from 'react-native'
3-import * as EmailValidator from 'email-validator'
4-import {useLingui} from '@lingui/react'
5-import {msg} from '@lingui/macro'
6-import {cleanError} from 'lib/strings/errors'
7import {
8 ComAtprotoServerCreateAccount,
9 ComAtprotoServerDescribeServer,
10} from '@atproto/api'
00011000012import {logger} from '#/logger'
13-import {DEFAULT_SERVICE, IS_PROD_SERVICE} from 'lib/constants'
14-import {createFullHandle, validateHandle} from 'lib/strings/handles'
15-import {getAge} from 'lib/strings/time'
16-import {useSessionApi} from 'state/session'
17import {
18 DEFAULT_PROD_FEEDS,
19 usePreferencesSetBirthDateMutation,
20 useSetSaveFeedsMutation,
21-} from 'state/queries/preferences'
22-import {useOnboardingDispatch} from 'state/shell'
02324export type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
25
···1import React, {useCallback} from 'react'
2import {LayoutAnimation} from 'react-native'
00003import {
4 ComAtprotoServerCreateAccount,
5 ComAtprotoServerDescribeServer,
6} from '@atproto/api'
7+import {msg} from '@lingui/macro'
8+import {useLingui} from '@lingui/react'
9+import * as EmailValidator from 'email-validator'
1011+import {DEFAULT_SERVICE, IS_PROD_SERVICE} from '#/lib/constants'
12+import {cleanError} from '#/lib/strings/errors'
13+import {createFullHandle, validateHandle} from '#/lib/strings/handles'
14+import {getAge} from '#/lib/strings/time'
15import {logger} from '#/logger'
000016import {
17 DEFAULT_PROD_FEEDS,
18 usePreferencesSetBirthDateMutation,
19 useSetSaveFeedsMutation,
20+} from '#/state/queries/preferences'
21+import {useSessionApi} from '#/state/session'
22+import {useOnboardingDispatch} from '#/state/shell'
2324export type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
25