···1212import {useNavigation} from '@react-navigation/native'
1313import {InfiniteData, UseInfiniteQueryResult} from '@tanstack/react-query'
14141515+import {useGenerateStarterPackMutation} from '#/lib/generate-starterpack'
1616+import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset'
1717+import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
1818+import {NavigationProp} from '#/lib/routes/types'
1919+import {parseStarterPackUri} from '#/lib/strings/starter-pack'
1520import {logger} from '#/logger'
1616-import {useGenerateStarterPackMutation} from 'lib/generate-starterpack'
1717-import {useBottomBarOffset} from 'lib/hooks/useBottomBarOffset'
1818-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
1919-import {NavigationProp} from 'lib/routes/types'
2020-import {parseStarterPackUri} from 'lib/strings/starter-pack'
2121-import {List, ListRef} from 'view/com/util/List'
2222-import {Text} from 'view/com/util/text/Text'
2323-import {atoms as a, useTheme} from '#/alf'
2121+import {List, ListRef} from '#/view/com/util/List'
2222+import {Text} from '#/view/com/util/text/Text'
2323+import {atoms as a, ios, useTheme} from '#/alf'
2424import {Button, ButtonIcon, ButtonText} from '#/components/Button'
2525import {useDialogControl} from '#/components/Dialog'
2626import {LinearGradientBackground} from '#/components/LinearGradientBackground'
···132132 keyExtractor={keyExtractor}
133133 refreshing={isPTRing}
134134 headerOffset={headerOffset}
135135+ progressViewOffset={ios(0)}
135136 contentContainerStyle={{paddingBottom: headerOffset + bottomBarOffset}}
136137 indicatorStyle={t.name === 'light' ? 'black' : 'white'}
137138 removeClippedSubviews={true}
+9-5
src/screens/Profile/Header/index.tsx
···77 RichText as RichTextAPI,
88} from '@atproto/api'
991010-import {usePalette} from 'lib/hooks/usePalette'
1111-import {LoadingPlaceholder} from 'view/com/util/LoadingPlaceholder'
1010+import {LoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder'
1111+import {useTheme} from '#/alf'
1212import {ProfileHeaderLabeler} from './ProfileHeaderLabeler'
1313import {ProfileHeaderStandard} from './ProfileHeaderStandard'
14141515let ProfileHeaderLoading = (_props: {}): React.ReactNode => {
1616- const pal = usePalette('default')
1616+ const t = useTheme()
1717 return (
1818- <View style={pal.view}>
1818+ <View style={t.atoms.bg}>
1919 <LoadingPlaceholder width="100%" height={150} style={{borderRadius: 0}} />
2020 <View
2121- style={[pal.view, {borderColor: pal.colors.background}, styles.avi]}>
2121+ style={[
2222+ t.atoms.bg,
2323+ {borderColor: t.atoms.bg.backgroundColor},
2424+ styles.avi,
2525+ ]}>
2226 <LoadingPlaceholder width={90} height={90} style={styles.br45} />
2327 </View>
2428 <View style={styles.content}>
+8-6
src/screens/Profile/Sections/Feed.tsx
···44import {useLingui} from '@lingui/react'
55import {useQueryClient} from '@tanstack/react-query'
6677+import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
88+import {usePalette} from '#/lib/hooks/usePalette'
79import {isNative} from '#/platform/detection'
810import {FeedDescriptor} from '#/state/queries/post-feed'
911import {RQKEY as FEED_RQKEY} from '#/state/queries/post-feed'
1012import {truncateAndInvalidate} from '#/state/queries/util'
1111-import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender'
1212-import {usePalette} from 'lib/hooks/usePalette'
1313+import {Feed} from '#/view/com/posts/Feed'
1414+import {EmptyState} from '#/view/com/util/EmptyState'
1515+import {ListRef} from '#/view/com/util/List'
1616+import {LoadLatestBtn} from '#/view/com/util/load-latest/LoadLatestBtn'
1317import {Text} from '#/view/com/util/text/Text'
1414-import {Feed} from 'view/com/posts/Feed'
1515-import {EmptyState} from 'view/com/util/EmptyState'
1616-import {ListRef} from 'view/com/util/List'
1717-import {LoadLatestBtn} from 'view/com/util/load-latest/LoadLatestBtn'
1818+import {ios} from '#/alf'
1819import {SectionRef} from './types'
19202021interface FeedSectionProps {
···8283 onScrolledDownChange={setIsScrolledDown}
8384 renderEmptyState={renderPostsEmpty}
8485 headerOffset={headerHeight}
8686+ progressViewOffset={ios(0)}
8587 renderEndOfFeed={ProfileEndOfFeed}
8688 ignoreFilterFor={ignoreFilterFor}
8789 initialNumToRender={
+3-2
src/view/com/feeds/ProfileFeedgens.tsx
···1515import {isNative, isWeb} from '#/platform/detection'
1616import {usePreferencesQuery} from '#/state/queries/preferences'
1717import {RQKEY, useProfileFeedgensQuery} from '#/state/queries/profile-feedgens'
1818+import {EmptyState} from '#/view/com/util/EmptyState'
1819import {FeedLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder'
1919-import {EmptyState} from 'view/com/util/EmptyState'
2020-import {atoms as a, useTheme} from '#/alf'
2020+import {atoms as a, ios, useTheme} from '#/alf'
2121import * as FeedCard from '#/components/FeedCard'
2222import {ErrorMessage} from '../util/error/ErrorMessage'
2323import {List, ListRef} from '../util/List'
···191191 refreshing={isPTRing}
192192 onRefresh={onRefresh}
193193 headerOffset={headerOffset}
194194+ progressViewOffset={ios(0)}
194195 contentContainerStyle={isNative && {paddingBottom: headerOffset + 100}}
195196 indicatorStyle={t.name === 'light' ? 'black' : 'white'}
196197 removeClippedSubviews={true}
+4-3
src/view/com/lists/ProfileLists.tsx
···1010import {useLingui} from '@lingui/react'
1111import {useQueryClient} from '@tanstack/react-query'
12121313+import {useAnalytics} from '#/lib/analytics/analytics'
1314import {cleanError} from '#/lib/strings/errors'
1415import {logger} from '#/logger'
1516import {isNative, isWeb} from '#/platform/detection'
1617import {RQKEY, useProfileListsQuery} from '#/state/queries/profile-lists'
1717-import {useAnalytics} from 'lib/analytics/analytics'
1818+import {EmptyState} from '#/view/com/util/EmptyState'
1819import {FeedLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder'
1919-import {EmptyState} from 'view/com/util/EmptyState'
2020-import {atoms as a, useTheme} from '#/alf'
2020+import {atoms as a, ios, useTheme} from '#/alf'
2121import * as ListCard from '#/components/ListCard'
2222import {ErrorMessage} from '../util/error/ErrorMessage'
2323import {List, ListRef} from '../util/List'
···192192 refreshing={isPTRing}
193193 onRefresh={onRefresh}
194194 headerOffset={headerOffset}
195195+ progressViewOffset={ios(0)}
195196 contentContainerStyle={
196197 isNative && {paddingBottom: headerOffset + 100}
197198 }
···4455import {usePalette} from '#/lib/hooks/usePalette'
66import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
77-import {Pager, PagerRef, RenderTabBarFnProps} from 'view/com/pager/Pager'
77+import {Pager, PagerRef, RenderTabBarFnProps} from '#/view/com/pager/Pager'
88import {ListMethods} from '../util/List'
99import {TabBar} from './TabBar'
1010
+6-3
src/view/com/posts/Feed.tsx
···1414import {useLingui} from '@lingui/react'
1515import {useQueryClient} from '@tanstack/react-query'
16161717+import {useAnalytics} from '#/lib/analytics/analytics'
1718import {DISCOVER_FEED_URI, KNOWN_SHUTDOWN_FEEDS} from '#/lib/constants'
1919+import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
1820import {logEvent, useGate} from '#/lib/statsig/statsig'
2121+import {useTheme} from '#/lib/ThemeContext'
1922import {logger} from '#/logger'
2023import {isWeb} from '#/platform/detection'
2124import {listenPostCreated} from '#/state/events'
···3033 usePostFeedQuery,
3134} from '#/state/queries/post-feed'
3235import {useSession} from '#/state/session'
3333-import {useAnalytics} from 'lib/analytics/analytics'
3434-import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender'
3535-import {useTheme} from 'lib/ThemeContext'
3636import {
3737 ProgressGuide,
3838 SuggestedFeeds,
···167167 renderEndOfFeed,
168168 testID,
169169 headerOffset = 0,
170170+ progressViewOffset,
170171 desktopFixedHeightOffset,
171172 ListHeaderComponent,
172173 extraData,
···187188 renderEndOfFeed?: () => JSX.Element
188189 testID?: string
189190 headerOffset?: number
191191+ progressViewOffset?: number
190192 desktopFixedHeightOffset?: number
191193 ListHeaderComponent?: () => JSX.Element
192194 extraData?: any
···548550 refreshing={isPTRing}
549551 onRefresh={onRefresh}
550552 headerOffset={headerOffset}
553553+ progressViewOffset={progressViewOffset}
551554 contentContainerStyle={{
552555 minHeight: Dimensions.get('window').height * 1.5,
553556 }}
+9-8
src/view/com/util/List.tsx
···44import {updateActiveVideoViewAsync} from '@haileyok/bluesky-video'
5566import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED'
77-import {usePalette} from '#/lib/hooks/usePalette'
77+import {useDedupe} from '#/lib/hooks/useDedupe'
88import {useScrollHandlers} from '#/lib/ScrollContext'
99-import {useDedupe} from 'lib/hooks/useDedupe'
1010-import {addStyle} from 'lib/styles'
1111-import {isIOS} from 'platform/detection'
99+import {addStyle} from '#/lib/styles'
1010+import {isIOS} from '#/platform/detection'
1111+import {useTheme} from '#/alf'
1212import {FlatList_INTERNAL} from './Views'
13131414export type ListMethods = FlatList_INTERNAL
···4444 onItemSeen,
4545 headerOffset,
4646 style,
4747+ progressViewOffset,
4748 ...props
4849 }: ListProps<ItemT>,
4950 ref: React.Ref<ListMethods>,
5051) {
5152 const isScrolledDown = useSharedValue(false)
5252- const pal = usePalette('default')
5353+ const t = useTheme()
5354 const dedupe = useDedupe(400)
54555556 function handleScrolledDownChange(didScrollDown: boolean) {
···120121 <RefreshControl
121122 refreshing={refreshing ?? false}
122123 onRefresh={onRefresh}
123123- tintColor={pal.colors.text}
124124- titleColor={pal.colors.text}
125125- progressViewOffset={headerOffset}
124124+ tintColor={t.atoms.text.color}
125125+ titleColor={t.atoms.text.color}
126126+ progressViewOffset={progressViewOffset ?? headerOffset}
126127 />
127128 )
128129 }
+3-2
src/view/screens/Profile.tsx
···3737import {useComposerControls} from '#/state/shell/composer'
3838import {ProfileFeedgens} from '#/view/com/feeds/ProfileFeedgens'
3939import {ProfileLists} from '#/view/com/lists/ProfileLists'
4040+import {PagerWithHeader} from '#/view/com/pager/PagerWithHeader'
4041import {ErrorScreen} from '#/view/com/util/error/ErrorScreen'
4142import {FAB} from '#/view/com/util/fab/FAB'
4243import {ListRef} from '#/view/com/util/List'
4344import {CenteredView} from '#/view/com/util/Views'
4444-import {PagerWithHeader} from 'view/com/pager/PagerWithHeader'
4545import {ProfileHeader, ProfileHeaderLoading} from '#/screens/Profile/Header'
4646import {ProfileFeedSection} from '#/screens/Profile/Sections/Feed'
4747import {ProfileLabelsSection} from '#/screens/Profile/Sections/Labels'
···363363 items={sectionTitles}
364364 onPageSelected={onPageSelected}
365365 onCurrentPageSelected={onCurrentPageSelected}
366366- renderHeader={renderHeader}>
366366+ renderHeader={renderHeader}
367367+ allowHeaderOverScroll>
367368 {showFiltersTab
368369 ? ({headerHeight, isFocused, scrollElRef}) => (
369370 <ProfileLabelsSection