···11import React from 'react'
22+import DatePicker from 'react-native-date-picker'
2344+import {isAndroid} from 'platform/detection'
35import {useTheme} from '#/alf'
44-import * as TextField from '#/components/forms/TextField'
56import {DateFieldProps} from '#/components/forms/DateField/types'
67import {toSimpleDateString} from '#/components/forms/DateField/utils'
77-import DatePicker from 'react-native-date-picker'
88-import {isAndroid} from 'platform/detection'
88+import * as TextField from '#/components/forms/TextField'
99import {DateFieldButton} from './index.shared'
10101111export * as utils from '#/components/forms/DateField/utils'
+4-4
src/components/forms/DateField/index.shared.tsx
···11import React from 'react'
22-import {View, Pressable} from 'react-native'
22+import {Pressable, View} from 'react-native'
3344-import {atoms as a, android, useTheme, web} from '#/alf'
55-import {Text} from '#/components/Typography'
66-import {useInteractionState} from '#/components/hooks/useInteractionState'
44+import {android, atoms as a, useTheme, web} from '#/alf'
75import * as TextField from '#/components/forms/TextField'
66+import {useInteractionState} from '#/components/hooks/useInteractionState'
87import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
88+import {Text} from '#/components/Typography'
99import {localizeDate} from './utils'
10101111// 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
···11import React from 'react'
22import {View} from 'react-native'
33-44-import {useTheme, atoms as a} from '#/alf'
55-import * as TextField from '#/components/forms/TextField'
66-import {toSimpleDateString} from '#/components/forms/DateField/utils'
77-import {DateFieldProps} from '#/components/forms/DateField/types'
83import DatePicker from 'react-native-date-picker'
44+import {msg, Trans} from '@lingui/macro'
55+import {useLingui} from '@lingui/react'
66+77+import {atoms as a, useTheme} from '#/alf'
88+import {Button, ButtonText} from '#/components/Button'
99import * as Dialog from '#/components/Dialog'
1010+import {DateFieldProps} from '#/components/forms/DateField/types'
1111+import {toSimpleDateString} from '#/components/forms/DateField/utils'
1212+import * as TextField from '#/components/forms/TextField'
1013import {DateFieldButton} from './index.shared'
1111-import {Button, ButtonText} from '#/components/Button'
1212-import {Trans, msg} from '@lingui/macro'
1313-import {useLingui} from '@lingui/react'
14141515export * as utils from '#/components/forms/DateField/utils'
1616export const Label = TextField.Label
+4-4
src/components/forms/DateField/index.web.tsx
···11import React from 'react'
22-import {TextInput, TextInputProps, StyleSheet} from 'react-native'
22+import {StyleSheet, TextInput, TextInputProps} from 'react-native'
33// @ts-ignore
44import {unstable_createElement} from 'react-native-web'
55-import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
6577-import * as TextField from '#/components/forms/TextField'
88-import {toSimpleDateString} from '#/components/forms/DateField/utils'
96import {DateFieldProps} from '#/components/forms/DateField/types'
77+import {toSimpleDateString} from '#/components/forms/DateField/utils'
88+import * as TextField from '#/components/forms/TextField'
99+import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
10101111export * as utils from '#/components/forms/DateField/utils'
1212export const Label = TextField.Label
+1-1
src/components/forms/FormError.tsx
···11import React from 'react'
22import {View} from 'react-native'
3344+import {atoms as a, useTheme} from '#/alf'
45import {Warning_Stroke2_Corner0_Rounded as Warning} from '#/components/icons/Warning'
56import {Text} from '#/components/Typography'
66-import {atoms as a, useTheme} from '#/alf'
7788export function FormError({error}: {error?: string}) {
99 const t = useTheme()
+3-3
src/components/forms/HostingProvider.tsx
···33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
5566+import {toNiceDomain} from '#/lib/strings/url-helpers'
67import {isAndroid} from '#/platform/detection'
88+import {ServerInputDialog} from '#/view/com/auth/server-input'
79import {atoms as a, useTheme} from '#/alf'
810import {Globe_Stroke2_Corner0_Rounded as Globe} from '#/components/icons/Globe'
911import {PencilLine_Stroke2_Corner0_Rounded as Pencil} from '#/components/icons/Pencil'
1212+import {Button} from '../Button'
1013import {useDialogControl} from '../Dialog'
1114import {Text} from '../Typography'
1212-import {ServerInputDialog} from '#/view/com/auth/server-input'
1313-import {toNiceDomain} from '#/lib/strings/url-helpers'
1414-import {Button} from '../Button'
15151616export function HostingProvider({
1717 serviceUrl,
+10-10
src/screens/Login/ChooseAccountForm.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {Trans, msg} from '@lingui/macro'
33+import {msg, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
5566-import {useAnalytics} from 'lib/analytics/analytics'
77-import {UserAvatar} from '../../view/com/util/UserAvatar'
88-import {colors} from 'lib/styles'
99-import {useSession, useSessionApi, SessionAccount} from '#/state/session'
66+import {useAnalytics} from '#/lib/analytics/analytics'
77+import {logEvent} from '#/lib/statsig/statsig'
88+import {colors} from '#/lib/styles'
109import {useProfileQuery} from '#/state/queries/profile'
1010+import {SessionAccount, useSession, useSessionApi} from '#/state/session'
1111import {useLoggedOutViewControls} from '#/state/shell/logged-out'
1212import * as Toast from '#/view/com/util/Toast'
1313-import {Button} from '#/components/Button'
1313+import {UserAvatar} from '#/view/com/util/UserAvatar'
1414import {atoms as a, useTheme} from '#/alf'
1515-import {Text} from '#/components/Typography'
1616-import {ChevronRight_Stroke2_Corner0_Rounded as Chevron} from '#/components/icons/Chevron'
1717-import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check'
1515+import {Button} from '#/components/Button'
1816import * as TextField from '#/components/forms/TextField'
1717+import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check'
1818+import {ChevronRight_Stroke2_Corner0_Rounded as Chevron} from '#/components/icons/Chevron'
1919+import {Text} from '#/components/Typography'
1920import {FormContainer} from './FormContainer'
2020-import {logEvent} from '#/lib/statsig/statsig'
21212222function AccountItem({
2323 account,
+11-11
src/screens/Login/ForgotPasswordForm.tsx
···11-import React, {useState, useEffect} from 'react'
11+import React, {useEffect, useState} from 'react'
22import {ActivityIndicator, Keyboard, View} from 'react-native'
33import {ComAtprotoServerDescribeServer} from '@atproto/api'
44-import * as EmailValidator from 'email-validator'
54import {BskyAgent} from '@atproto/api'
66-import {Trans, msg} from '@lingui/macro'
55+import {msg, Trans} from '@lingui/macro'
76import {useLingui} from '@lingui/react'
77+import * as EmailValidator from 'email-validator'
8899-import * as TextField from '#/components/forms/TextField'
1010-import {HostingProvider} from '#/components/forms/HostingProvider'
1111-import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
1212-import {atoms as a, useTheme} from '#/alf'
1313-import {useAnalytics} from 'lib/analytics/analytics'
1414-import {isNetworkError} from 'lib/strings/errors'
1515-import {cleanError} from 'lib/strings/errors'
99+import {useAnalytics} from '#/lib/analytics/analytics'
1010+import {isNetworkError} from '#/lib/strings/errors'
1111+import {cleanError} from '#/lib/strings/errors'
1612import {logger} from '#/logger'
1313+import {atoms as a, useTheme} from '#/alf'
1714import {Button, ButtonText} from '#/components/Button'
1515+import {FormError} from '#/components/forms/FormError'
1616+import {HostingProvider} from '#/components/forms/HostingProvider'
1717+import * as TextField from '#/components/forms/TextField'
1818+import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
1819import {Text} from '#/components/Typography'
1920import {FormContainer} from './FormContainer'
2020-import {FormError} from '#/components/forms/FormError'
21212222type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
2323
+2-2
src/screens/Login/FormContainer.tsx
···11import React from 'react'
22import {
33 ScrollView,
44+ type StyleProp,
45 StyleSheet,
56 View,
66- type StyleProp,
77 type ViewStyle,
88} from 'react-native'
991010+import {isWeb} from '#/platform/detection'
1011import {atoms as a, useBreakpoints, useTheme} from '#/alf'
1112import {Text} from '#/components/Typography'
1212-import {isWeb} from '#/platform/detection'
13131414export function FormContainer({
1515 testID,
+12-12
src/screens/Login/LoginForm.tsx
···11-import React, {useState, useRef} from 'react'
11+import React, {useRef, useState} from 'react'
22import {
33 ActivityIndicator,
44 Keyboard,
···77 View,
88} from 'react-native'
99import {ComAtprotoServerDescribeServer} from '@atproto/api'
1010-import {Trans, msg} from '@lingui/macro'
1010+import {msg, Trans} from '@lingui/macro'
1111import {useLingui} from '@lingui/react'
12121313-import {useAnalytics} from 'lib/analytics/analytics'
1414-import {createFullHandle} from 'lib/strings/handles'
1515-import {isNetworkError} from 'lib/strings/errors'
1616-import {useSessionApi} from '#/state/session'
1717-import {cleanError} from 'lib/strings/errors'
1313+import {useAnalytics} from '#/lib/analytics/analytics'
1414+import {isNetworkError} from '#/lib/strings/errors'
1515+import {cleanError} from '#/lib/strings/errors'
1616+import {createFullHandle} from '#/lib/strings/handles'
1817import {logger} from '#/logger'
1919-import {Button, ButtonIcon, ButtonText} from '#/components/Button'
1818+import {useSessionApi} from '#/state/session'
2019import {atoms as a, useTheme} from '#/alf'
2121-import {Text} from '#/components/Typography'
2020+import {Button, ButtonIcon, ButtonText} from '#/components/Button'
2121+import {FormError} from '#/components/forms/FormError'
2222+import {HostingProvider} from '#/components/forms/HostingProvider'
2223import * as TextField from '#/components/forms/TextField'
2324import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
2425import {Lock_Stroke2_Corner0_Rounded as Lock} from '#/components/icons/Lock'
2525-import {HostingProvider} from '#/components/forms/HostingProvider'
2626-import {FormContainer} from './FormContainer'
2727-import {FormError} from '#/components/forms/FormError'
2826import {Loader} from '#/components/Loader'
2727+import {Text} from '#/components/Typography'
2828+import {FormContainer} from './FormContainer'
29293030type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
3131
+4-3
src/screens/Login/PasswordUpdatedForm.tsx
···11import React, {useEffect} from 'react'
22import {View} from 'react-native'
33-import {useAnalytics} from 'lib/analytics/analytics'
43import {msg, Trans} from '@lingui/macro'
54import {useLingui} from '@lingui/react'
66-import {FormContainer} from './FormContainer'
55+66+import {useAnalytics} from '#/lib/analytics/analytics'
77+import {atoms as a, useBreakpoints} from '#/alf'
78import {Button, ButtonText} from '#/components/Button'
89import {Text} from '#/components/Typography'
99-import {atoms as a, useBreakpoints} from '#/alf'
1010+import {FormContainer} from './FormContainer'
10111112export const PasswordUpdatedForm = ({
1213 onPressNext,
+12-12
src/screens/Login/SetNewPasswordForm.tsx
···11-import React, {useState, useEffect} from 'react'
11+import React, {useEffect, useState} from 'react'
22import {ActivityIndicator, View} from 'react-native'
33import {BskyAgent} from '@atproto/api'
44-import {useAnalytics} from 'lib/analytics/analytics'
44+import {msg, Trans} from '@lingui/macro'
55+import {useLingui} from '@lingui/react'
5666-import {isNetworkError} from 'lib/strings/errors'
77-import {cleanError} from 'lib/strings/errors'
88-import {checkAndFormatResetCode} from 'lib/strings/password'
77+import {useAnalytics} from '#/lib/analytics/analytics'
88+import {isNetworkError} from '#/lib/strings/errors'
99+import {cleanError} from '#/lib/strings/errors'
1010+import {checkAndFormatResetCode} from '#/lib/strings/password'
911import {logger} from '#/logger'
1010-import {Trans, msg} from '@lingui/macro'
1111-import {useLingui} from '@lingui/react'
1212-import {FormContainer} from './FormContainer'
1313-import {Text} from '#/components/Typography'
1212+import {atoms as a, useTheme} from '#/alf'
1313+import {Button, ButtonText} from '#/components/Button'
1414+import {FormError} from '#/components/forms/FormError'
1415import * as TextField from '#/components/forms/TextField'
1516import {Lock_Stroke2_Corner0_Rounded as Lock} from '#/components/icons/Lock'
1617import {Ticket_Stroke2_Corner0_Rounded as Ticket} from '#/components/icons/Ticket'
1717-import {Button, ButtonText} from '#/components/Button'
1818-import {useTheme, atoms as a} from '#/alf'
1919-import {FormError} from '#/components/forms/FormError'
1818+import {Text} from '#/components/Typography'
1919+import {FormContainer} from './FormContainer'
20202121export const SetNewPasswordForm = ({
2222 error,
+11-11
src/screens/Login/index.tsx
···11import React from 'react'
22import {KeyboardAvoidingView} from 'react-native'
33-import {useAnalytics} from '#/lib/analytics/analytics'
33+import {LayoutAnimationConfig} from 'react-native-reanimated'
44+import {msg} from '@lingui/macro'
45import {useLingui} from '@lingui/react'
5666-import {LoggedOutLayout} from '#/view/com/util/layouts/LoggedOutLayout'
77-import {SessionAccount, useSession} from '#/state/session'
77+import {useAnalytics} from '#/lib/analytics/analytics'
88import {DEFAULT_SERVICE} from '#/lib/constants'
99-import {useLoggedOutView} from '#/state/shell/logged-out'
1010-import {useServiceQuery} from '#/state/queries/service'
1111-import {msg} from '@lingui/macro'
129import {logger} from '#/logger'
1313-import {atoms as a} from '#/alf'
1414-import {ChooseAccountForm} from './ChooseAccountForm'
1010+import {useServiceQuery} from '#/state/queries/service'
1111+import {SessionAccount, useSession} from '#/state/session'
1212+import {useLoggedOutView} from '#/state/shell/logged-out'
1313+import {LoggedOutLayout} from '#/view/com/util/layouts/LoggedOutLayout'
1514import {ForgotPasswordForm} from '#/screens/Login/ForgotPasswordForm'
1515+import {LoginForm} from '#/screens/Login/LoginForm'
1616+import {PasswordUpdatedForm} from '#/screens/Login/PasswordUpdatedForm'
1617import {SetNewPasswordForm} from '#/screens/Login/SetNewPasswordForm'
1717-import {PasswordUpdatedForm} from '#/screens/Login/PasswordUpdatedForm'
1818-import {LoginForm} from '#/screens/Login/LoginForm'
1818+import {atoms as a} from '#/alf'
1919+import {ChooseAccountForm} from './ChooseAccountForm'
1920import {ScreenTransition} from './ScreenTransition'
2020-import {LayoutAnimationConfig} from 'react-native-reanimated'
21212222enum Forms {
2323 Login,
+5-4
src/screens/Signup/StepCaptcha.tsx
···33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55import {nanoid} from 'nanoid/non-secure'
66+77+import {createFullHandle} from '#/lib/strings/handles'
88+import {isWeb} from '#/platform/detection'
99+import {CaptchaWebView} from '#/view/com/auth/create/CaptchaWebView'
1010+import {ScreenTransition} from '#/screens/Login/ScreenTransition'
611import {useSignupContext, useSubmitSignup} from '#/screens/Signup/state'
77-import {CaptchaWebView} from 'view/com/auth/create/CaptchaWebView'
88-import {createFullHandle} from 'lib/strings/handles'
99-import {isWeb} from 'platform/detection'
1012import {atoms as a, useTheme} from '#/alf'
1113import {FormError} from '#/components/forms/FormError'
1212-import {ScreenTransition} from '#/screens/Login/ScreenTransition'
13141415const CAPTCHA_PATH = '/gate/signup'
1516
+11-10
src/screens/Signup/StepHandle.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {useFocusEffect} from '@react-navigation/native'
44-import {useLingui} from '@lingui/react'
53import {msg, Trans} from '@lingui/macro'
66-import {TimesLarge_Stroke2_Corner0_Rounded as Times} from '#/components/icons/Times'
77-import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check'
88-import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
99-import * as TextField from '#/components/forms/TextField'
1010-import {useSignupContext} from '#/screens/Signup/state'
1111-import {Text} from '#/components/Typography'
1212-import {atoms as a, useTheme} from '#/alf'
44+import {useLingui} from '@lingui/react'
55+import {useFocusEffect} from '@react-navigation/native'
66+137import {
148 createFullHandle,
159 IsValidHandle,
1610 validateHandle,
1717-} from 'lib/strings/handles'
1111+} from '#/lib/strings/handles'
1812import {ScreenTransition} from '#/screens/Login/ScreenTransition'
1313+import {useSignupContext} from '#/screens/Signup/state'
1414+import {atoms as a, useTheme} from '#/alf'
1515+import * as TextField from '#/components/forms/TextField'
1616+import {At_Stroke2_Corner0_Rounded as At} from '#/components/icons/At'
1717+import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check'
1818+import {TimesLarge_Stroke2_Corner0_Rounded as Times} from '#/components/icons/Times'
1919+import {Text} from '#/components/Typography'
19202021export function StepHandle() {
2122 const {_} = useLingui()
+11-10
src/screens/Signup/index.tsx
···11import React from 'react'
22import {ScrollView, View} from 'react-native'
33+import {msg, Trans} from '@lingui/macro'
34import {useLingui} from '@lingui/react'
44-import {msg, Trans} from '@lingui/macro'
55+66+import {useAnalytics} from '#/lib/analytics/analytics'
77+import {FEEDBACK_FORM_URL} from '#/lib/constants'
88+import {createFullHandle} from '#/lib/strings/handles'
99+import {useServiceQuery} from '#/state/queries/service'
1010+import {getAgent} from '#/state/session'
1111+import {LoggedOutLayout} from '#/view/com/util/layouts/LoggedOutLayout'
512import {
613 initialState,
714 reducer,
···916 SignupStep,
1017 useSubmitSignup,
1118} from '#/screens/Signup/state'
1919+import {StepCaptcha} from '#/screens/Signup/StepCaptcha'
2020+import {StepHandle} from '#/screens/Signup/StepHandle'
1221import {StepInfo} from '#/screens/Signup/StepInfo'
1313-import {StepHandle} from '#/screens/Signup/StepHandle'
1414-import {StepCaptcha} from '#/screens/Signup/StepCaptcha'
1522import {atoms as a, useTheme} from '#/alf'
1623import {Button, ButtonText} from '#/components/Button'
1717-import {Text} from '#/components/Typography'
1818-import {LoggedOutLayout} from 'view/com/util/layouts/LoggedOutLayout'
1919-import {FEEDBACK_FORM_URL} from 'lib/constants'
2024import {InlineLink} from '#/components/Link'
2121-import {useServiceQuery} from 'state/queries/service'
2222-import {getAgent} from 'state/session'
2323-import {createFullHandle} from 'lib/strings/handles'
2424-import {useAnalytics} from 'lib/analytics/analytics'
2525+import {Text} from '#/components/Typography'
25262627export function Signup({onPressBack}: {onPressBack: () => void}) {
2728 const {_} = useLingui()
+10-10
src/screens/Signup/state.ts
···11import React, {useCallback} from 'react'
22import {LayoutAnimation} from 'react-native'
33-import * as EmailValidator from 'email-validator'
44-import {useLingui} from '@lingui/react'
55-import {msg} from '@lingui/macro'
66-import {cleanError} from 'lib/strings/errors'
73import {
84 ComAtprotoServerCreateAccount,
95 ComAtprotoServerDescribeServer,
106} from '@atproto/api'
77+import {msg} from '@lingui/macro'
88+import {useLingui} from '@lingui/react'
99+import * as EmailValidator from 'email-validator'
11101111+import {DEFAULT_SERVICE, IS_PROD_SERVICE} from '#/lib/constants'
1212+import {cleanError} from '#/lib/strings/errors'
1313+import {createFullHandle, validateHandle} from '#/lib/strings/handles'
1414+import {getAge} from '#/lib/strings/time'
1215import {logger} from '#/logger'
1313-import {DEFAULT_SERVICE, IS_PROD_SERVICE} from 'lib/constants'
1414-import {createFullHandle, validateHandle} from 'lib/strings/handles'
1515-import {getAge} from 'lib/strings/time'
1616-import {useSessionApi} from 'state/session'
1716import {
1817 DEFAULT_PROD_FEEDS,
1918 usePreferencesSetBirthDateMutation,
2019 useSetSaveFeedsMutation,
2121-} from 'state/queries/preferences'
2222-import {useOnboardingDispatch} from 'state/shell'
2020+} from '#/state/queries/preferences'
2121+import {useSessionApi} from '#/state/session'
2222+import {useOnboardingDispatch} from '#/state/shell'
23232424export type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
2525