···267 scrollEventThrottle={50}
268 onScroll={isAndroid ? onScroll : undefined}
269 keyboardShouldPersistTaps="handled"
270+ // TODO: figure out why this positions the header absolutely (rather than stickily)
271+ // on Android. fine to disable for now, because we don't have any
272+ // dialogs that use this that actually scroll -sfn
273+ stickyHeaderIndices={ios(header ? [0] : undefined)}>
274 {header}
275 {children}
276 </KeyboardAwareScrollView>
···8import {atoms as a, useTheme} from '#/alf'
9import * as TextField from '#/components/forms/TextField'
10import {StarterPack} from '#/components/icons/StarterPack'
11-import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition'
12import {Text} from '#/components/Typography'
1314export function StepDetails() {
···23 })
2425 return (
26- <ScreenTransition direction={state.transitionDirection}>
27 <View style={[a.px_xl, a.gap_xl, a.mt_4xl]}>
28 <View style={[a.gap_md, a.align_center, a.px_md, a.mb_md]}>
29 <StarterPack width={90} gradient="sky" />
···8import {atoms as a, useTheme} from '#/alf'
9import * as TextField from '#/components/forms/TextField'
10import {StarterPack} from '#/components/icons/StarterPack'
11+import {ScreenTransition} from '#/components/ScreenTransition'
12import {Text} from '#/components/Typography'
1314export function StepDetails() {
···23 })
2425 return (
26+ <ScreenTransition direction={state.transitionDirection} enabledWeb>
27 <View style={[a.px_xl, a.gap_xl, a.mt_4xl]}>
28 <View style={[a.gap_md, a.align_center, a.px_md, a.mb_md]}>
29 <StarterPack width={90} gradient="sky" />
+5-2
src/screens/StarterPack/Wizard/StepFeeds.tsx
···17import {SearchInput} from '#/components/forms/SearchInput'
18import {useThrottledValue} from '#/components/hooks/useThrottledValue'
19import {Loader} from '#/components/Loader'
20-import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition'
21import {WizardFeedCard} from '#/components/StarterPack/Wizard/WizardListCard'
22import {Text} from '#/components/Typography'
23···79 }
8081 return (
82- <ScreenTransition style={[a.flex_1]} direction={state.transitionDirection}>
00083 <View style={[a.border_b, t.atoms.border_contrast_medium]}>
84 <View style={[a.py_sm, a.px_md, {height: 60}]}>
85 <SearchInput
···17import {SearchInput} from '#/components/forms/SearchInput'
18import {useThrottledValue} from '#/components/hooks/useThrottledValue'
19import {Loader} from '#/components/Loader'
20+import {ScreenTransition} from '#/components/ScreenTransition'
21import {WizardFeedCard} from '#/components/StarterPack/Wizard/WizardListCard'
22import {Text} from '#/components/Typography'
23···79 }
8081 return (
82+ <ScreenTransition
83+ style={[a.flex_1]}
84+ direction={state.transitionDirection}
85+ enabledWeb>
86 <View style={[a.border_b, t.atoms.border_contrast_medium]}>
87 <View style={[a.py_sm, a.px_md, {height: 60}]}>
88 <SearchInput
+5-2
src/screens/StarterPack/Wizard/StepProfiles.tsx
···13import {atoms as a, useTheme} from '#/alf'
14import {SearchInput} from '#/components/forms/SearchInput'
15import {Loader} from '#/components/Loader'
16-import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition'
17import {WizardProfileCard} from '#/components/StarterPack/Wizard/WizardListCard'
18import {Text} from '#/components/Typography'
19import type * as bsky from '#/types/bsky'
···64 }
6566 return (
67- <ScreenTransition style={[a.flex_1]} direction={state.transitionDirection}>
00068 <View style={[a.border_b, t.atoms.border_contrast_medium]}>
69 <View style={[a.py_sm, a.px_md, {height: 60}]}>
70 <SearchInput
···13import {atoms as a, useTheme} from '#/alf'
14import {SearchInput} from '#/components/forms/SearchInput'
15import {Loader} from '#/components/Loader'
16+import {ScreenTransition} from '#/components/ScreenTransition'
17import {WizardProfileCard} from '#/components/StarterPack/Wizard/WizardListCard'
18import {Text} from '#/components/Typography'
19import type * as bsky from '#/types/bsky'
···64 }
6566 return (
67+ <ScreenTransition
68+ style={[a.flex_1]}
69+ direction={state.transitionDirection}
70+ enabledWeb>
71 <View style={[a.border_b, t.atoms.border_contrast_medium]}>
72 <View style={[a.py_sm, a.px_md, {height: 60}]}>
73 <SearchInput
···7import {useModalControls, useModals} from '#/state/modals'
8import {FullWindowOverlay} from '#/components/FullWindowOverlay'
9import {createCustomBackdrop} from '../util/BottomSheetCustomBackdrop'
10-import * as CreateOrEditListModal from './CreateOrEditList'
11import * as DeleteAccountModal from './DeleteAccount'
12-import * as InviteCodesModal from './InviteCodes'
13import * as ContentLanguagesSettingsModal from './lang-settings/ContentLanguagesSettings'
14import * as UserAddRemoveListsModal from './UserAddRemoveLists'
15···4445 let snapPoints: (string | number)[] = DEFAULT_SNAPPOINTS
46 let element
47- if (activeModal?.name === 'create-or-edit-list') {
48- snapPoints = CreateOrEditListModal.snapPoints
49- element = <CreateOrEditListModal.Component {...activeModal} />
50- } else if (activeModal?.name === 'user-add-remove-lists') {
51 snapPoints = UserAddRemoveListsModal.snapPoints
52 element = <UserAddRemoveListsModal.Component {...activeModal} />
53 } else if (activeModal?.name === 'delete-account') {
54 snapPoints = DeleteAccountModal.snapPoints
55 element = <DeleteAccountModal.Component />
56- } else if (activeModal?.name === 'invite-codes') {
57- snapPoints = InviteCodesModal.snapPoints
58- element = <InviteCodesModal.Component />
59 } else if (activeModal?.name === 'content-languages-settings') {
60 snapPoints = ContentLanguagesSettingsModal.snapPoints
61 element = <ContentLanguagesSettingsModal.Component />
···7import {useModalControls, useModals} from '#/state/modals'
8import {FullWindowOverlay} from '#/components/FullWindowOverlay'
9import {createCustomBackdrop} from '../util/BottomSheetCustomBackdrop'
010import * as DeleteAccountModal from './DeleteAccount'
011import * as ContentLanguagesSettingsModal from './lang-settings/ContentLanguagesSettings'
12import * as UserAddRemoveListsModal from './UserAddRemoveLists'
13···4243 let snapPoints: (string | number)[] = DEFAULT_SNAPPOINTS
44 let element
45+ if (activeModal?.name === 'user-add-remove-lists') {
00046 snapPoints = UserAddRemoveListsModal.snapPoints
47 element = <UserAddRemoveListsModal.Component {...activeModal} />
48 } else if (activeModal?.name === 'delete-account') {
49 snapPoints = DeleteAccountModal.snapPoints
50 element = <DeleteAccountModal.Component />
00051 } else if (activeModal?.name === 'content-languages-settings') {
52 snapPoints = ContentLanguagesSettingsModal.snapPoints
53 element = <ContentLanguagesSettingsModal.Component />
+1-7
src/view/com/modals/Modal.web.tsx
···6import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
7import {type Modal as ModalIface} from '#/state/modals'
8import {useModalControls, useModals} from '#/state/modals'
9-import * as CreateOrEditListModal from './CreateOrEditList'
10import * as DeleteAccountModal from './DeleteAccount'
11-import * as InviteCodesModal from './InviteCodes'
12import * as ContentLanguagesSettingsModal from './lang-settings/ContentLanguagesSettings'
13import * as UserAddRemoveLists from './UserAddRemoveLists'
14···48 }
4950 let element
51- if (modal.name === 'create-or-edit-list') {
52- element = <CreateOrEditListModal.Component {...modal} />
53- } else if (modal.name === 'user-add-remove-lists') {
54 element = <UserAddRemoveLists.Component {...modal} />
55 } else if (modal.name === 'delete-account') {
56 element = <DeleteAccountModal.Component />
57- } else if (modal.name === 'invite-codes') {
58- element = <InviteCodesModal.Component />
59 } else if (modal.name === 'content-languages-settings') {
60 element = <ContentLanguagesSettingsModal.Component />
61 } else {
···6import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
7import {type Modal as ModalIface} from '#/state/modals'
8import {useModalControls, useModals} from '#/state/modals'
09import * as DeleteAccountModal from './DeleteAccount'
010import * as ContentLanguagesSettingsModal from './lang-settings/ContentLanguagesSettings'
11import * as UserAddRemoveLists from './UserAddRemoveLists'
12···46 }
4748 let element
49+ if (modal.name === 'user-add-remove-lists') {
0050 element = <UserAddRemoveLists.Component {...modal} />
51 } else if (modal.name === 'delete-account') {
52 element = <DeleteAccountModal.Component />
0053 } else if (modal.name === 'content-languages-settings') {
54 element = <ContentLanguagesSettingsModal.Component />
55 } else {