import React from 'react' import {View} from 'react-native' import {Image} from 'expo-image' import {LinearGradient} from 'expo-linear-gradient' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {FeedSourceInfo, useFeedSourceInfoQuery} from '#/state/queries/feed' import {FeedConfig} from '#/screens/Onboarding/StepAlgoFeeds' import {atoms as a, useTheme} from '#/alf' import * as Toggle from '#/components/forms/Toggle' import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check' import {RichText} from '#/components/RichText' import {Text} from '#/components/Typography' function PrimaryFeedCardInner({ feed, config, }: { feed: FeedSourceInfo config: FeedConfig }) { const t = useTheme() const ctx = Toggle.useItemContext() const styles = React.useMemo( () => ({ active: [t.atoms.bg_contrast_25], selected: [ a.shadow_md, { backgroundColor: t.name === 'light' ? t.palette.primary_50 : t.palette.primary_950, }, ], selectedHover: [ { backgroundColor: t.name === 'light' ? t.palette.primary_25 : t.palette.primary_975, }, ], textSelected: [{color: t.palette.white}], checkboxSelected: [ { borderColor: t.palette.white, }, ], }), [t], ) return ( {ctx.selected && config.gradient && ( v[1])} locations={config.gradient.values.map(v => v[0])} start={{x: 0, y: 0}} end={{x: 1, y: 1}} style={[a.absolute, a.inset_0]} /> )} {feed.displayName} by @{feed.creatorHandle} {ctx.selected && } ) } export function PrimaryFeedCard({config}: {config: FeedConfig}) { const {_} = useLingui() const {data: feed} = useFeedSourceInfoQuery({uri: config.uri}) return !feed ? ( ) : ( ) } function FeedCardInner({feed}: {feed: FeedSourceInfo; config: FeedConfig}) { const t = useTheme() const ctx = Toggle.useItemContext() const styles = React.useMemo( () => ({ active: [t.atoms.bg_contrast_25], selected: [ { backgroundColor: t.name === 'light' ? t.palette.primary_50 : t.palette.primary_950, }, ], selectedHover: [ { backgroundColor: t.name === 'light' ? t.palette.primary_25 : t.palette.primary_975, }, ], textSelected: [], checkboxSelected: [ { backgroundColor: t.palette.primary_500, }, ], }), [t], ) return ( {feed.displayName} @{feed.creatorHandle} {ctx.selected && } ) } export function FeedCard({config}: {config: FeedConfig}) { const {_} = useLingui() const {data: feed} = useFeedSourceInfoQuery({uri: config.uri}) return !feed ? ( ) : feed.avatar ? ( ) : null } export function FeedCardPlaceholder({primary}: {primary?: boolean}) { const t = useTheme() return ( ) }