parent
6f450b4982
commit
88f879ffe9
|
@ -186,19 +186,19 @@ export function createThemes({
|
||||||
white: color.gray_0,
|
white: color.gray_0,
|
||||||
black: color.trueBlack,
|
black: color.trueBlack,
|
||||||
|
|
||||||
contrast_25: color.gray_1000,
|
contrast_25: color.gray_975,
|
||||||
contrast_50: color.gray_975,
|
contrast_50: color.gray_950,
|
||||||
contrast_100: color.gray_950,
|
contrast_100: color.gray_900,
|
||||||
contrast_200: color.gray_900,
|
contrast_200: color.gray_800,
|
||||||
contrast_300: color.gray_800,
|
contrast_300: color.gray_700,
|
||||||
contrast_400: color.gray_700,
|
contrast_400: color.gray_600,
|
||||||
contrast_500: color.gray_600,
|
contrast_500: color.gray_500,
|
||||||
contrast_600: color.gray_500,
|
contrast_600: color.gray_400,
|
||||||
contrast_700: color.gray_400,
|
contrast_700: color.gray_300,
|
||||||
contrast_800: color.gray_300,
|
contrast_800: color.gray_200,
|
||||||
contrast_900: color.gray_200,
|
contrast_900: color.gray_100,
|
||||||
contrast_950: color.gray_100,
|
contrast_950: color.gray_50,
|
||||||
contrast_975: color.gray_50,
|
contrast_975: color.gray_25,
|
||||||
|
|
||||||
primary_25: color.primary_975,
|
primary_25: color.primary_975,
|
||||||
primary_50: color.primary_950,
|
primary_50: color.primary_950,
|
||||||
|
@ -400,7 +400,7 @@ export function createThemes({
|
||||||
color: darkPalette.contrast_400,
|
color: darkPalette.contrast_400,
|
||||||
},
|
},
|
||||||
text_contrast_medium: {
|
text_contrast_medium: {
|
||||||
color: darkPalette.contrast_700,
|
color: darkPalette.contrast_600,
|
||||||
},
|
},
|
||||||
text_contrast_high: {
|
text_contrast_high: {
|
||||||
color: darkPalette.contrast_900,
|
color: darkPalette.contrast_900,
|
||||||
|
|
|
@ -202,28 +202,10 @@ export const Button = React.forwardRef<View, ButtonProps>(
|
||||||
} else if (color === 'secondary') {
|
} else if (color === 'secondary') {
|
||||||
if (variant === 'solid') {
|
if (variant === 'solid') {
|
||||||
if (!disabled) {
|
if (!disabled) {
|
||||||
baseStyles.push({
|
baseStyles.push(t.atoms.bg_contrast_25)
|
||||||
backgroundColor: select(t.name, {
|
hoverStyles.push(t.atoms.bg_contrast_50)
|
||||||
light: t.palette.contrast_25,
|
|
||||||
dim: t.palette.contrast_100,
|
|
||||||
dark: t.palette.contrast_100,
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
hoverStyles.push({
|
|
||||||
backgroundColor: select(t.name, {
|
|
||||||
light: t.palette.contrast_50,
|
|
||||||
dim: t.palette.contrast_200,
|
|
||||||
dark: t.palette.contrast_200,
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
baseStyles.push({
|
baseStyles.push(t.atoms.bg_contrast_100)
|
||||||
backgroundColor: select(t.name, {
|
|
||||||
light: t.palette.contrast_100,
|
|
||||||
dim: t.palette.contrast_25,
|
|
||||||
dark: t.palette.contrast_25,
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
} else if (variant === 'outline') {
|
} else if (variant === 'outline') {
|
||||||
baseStyles.push(a.border, t.atoms.bg, {
|
baseStyles.push(a.border, t.atoms.bg, {
|
||||||
|
|
|
@ -249,7 +249,9 @@ function DialogError({details}: {details?: string}) {
|
||||||
const control = Dialog.useDialogContext()
|
const control = Dialog.useDialogContext()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialog.ScrollableInner style={a.gap_md} label={_(msg`An error has occurred`)}>
|
<Dialog.ScrollableInner
|
||||||
|
style={a.gap_md}
|
||||||
|
label={_(msg`An error has occurred`)}>
|
||||||
<Dialog.Close />
|
<Dialog.Close />
|
||||||
<ErrorScreen
|
<ErrorScreen
|
||||||
title={_(msg`Oh no!`)}
|
title={_(msg`Oh no!`)}
|
||||||
|
|
|
@ -193,6 +193,7 @@ export function createInput(Component: typeof TextInput) {
|
||||||
lineHeight: a.text_md.fontSize * 1.1875,
|
lineHeight: a.text_md.fontSize * 1.1875,
|
||||||
textAlignVertical: rest.multiline ? 'top' : undefined,
|
textAlignVertical: rest.multiline ? 'top' : undefined,
|
||||||
minHeight: rest.multiline ? 80 : undefined,
|
minHeight: rest.multiline ? 80 : undefined,
|
||||||
|
minWidth: 0,
|
||||||
},
|
},
|
||||||
// fix for autofill styles covering border
|
// fix for autofill styles covering border
|
||||||
web({
|
web({
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import {Dimensions, StyleProp, StyleSheet, TextStyle} from 'react-native'
|
import {Dimensions, StyleProp, StyleSheet, TextStyle} from 'react-native'
|
||||||
import {Theme, TypographyVariant} from './ThemeContext'
|
|
||||||
import {isWeb} from 'platform/detection'
|
import {isWeb} from 'platform/detection'
|
||||||
|
import {Theme, TypographyVariant} from './ThemeContext'
|
||||||
|
|
||||||
// 1 is lightest, 2 is light, 3 is mid, 4 is dark, 5 is darkest
|
// 1 is lightest, 2 is light, 3 is mid, 4 is dark, 5 is darkest
|
||||||
export const colors = {
|
export const colors = {
|
||||||
|
|
|
@ -295,9 +295,9 @@ export const darkTheme: Theme = {
|
||||||
...defaultTheme.palette,
|
...defaultTheme.palette,
|
||||||
default: {
|
default: {
|
||||||
background: darkPalette.black,
|
background: darkPalette.black,
|
||||||
backgroundLight: darkPalette.contrast_50,
|
backgroundLight: darkPalette.contrast_25,
|
||||||
text: darkPalette.white,
|
text: darkPalette.white,
|
||||||
textLight: darkPalette.contrast_700,
|
textLight: darkPalette.contrast_600,
|
||||||
textInverted: darkPalette.black,
|
textInverted: darkPalette.black,
|
||||||
link: darkPalette.primary_500,
|
link: darkPalette.primary_500,
|
||||||
border: darkPalette.contrast_100,
|
border: darkPalette.contrast_100,
|
||||||
|
@ -344,7 +344,7 @@ export const dimTheme: Theme = {
|
||||||
default: {
|
default: {
|
||||||
...darkTheme.palette.default,
|
...darkTheme.palette.default,
|
||||||
background: dimPalette.black,
|
background: dimPalette.black,
|
||||||
backgroundLight: dimPalette.contrast_50,
|
backgroundLight: dimPalette.contrast_25,
|
||||||
text: dimPalette.white,
|
text: dimPalette.white,
|
||||||
textLight: dimPalette.contrast_700,
|
textLight: dimPalette.contrast_700,
|
||||||
textInverted: dimPalette.black,
|
textInverted: dimPalette.black,
|
||||||
|
|
|
@ -193,13 +193,11 @@ const styles = StyleSheet.create({
|
||||||
tabBarContainer: {
|
tabBarContainer: {
|
||||||
// @ts-ignore web-only
|
// @ts-ignore web-only
|
||||||
position: 'sticky',
|
position: 'sticky',
|
||||||
overflow: 'hidden',
|
|
||||||
top: 0,
|
top: 0,
|
||||||
zIndex: 1,
|
zIndex: 1,
|
||||||
},
|
},
|
||||||
tabBarContainerDesktop: {
|
tabBarContainerDesktop: {
|
||||||
marginHorizontal: 'auto',
|
marginHorizontal: 'auto',
|
||||||
paddingHorizontal: 2,
|
|
||||||
width: 600,
|
width: 600,
|
||||||
borderLeftWidth: 1,
|
borderLeftWidth: 1,
|
||||||
borderRightWidth: 1,
|
borderRightWidth: 1,
|
||||||
|
|
|
@ -180,7 +180,7 @@ const desktopStyles = StyleSheet.create({
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
top: '100%',
|
top: '100%',
|
||||||
borderBottomWidth: 1,
|
borderBottomWidth: StyleSheet.hairlineWidth,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -660,7 +660,7 @@ function ExpandedPostDetails({
|
||||||
a.flex_row,
|
a.flex_row,
|
||||||
a.align_center,
|
a.align_center,
|
||||||
a.flex_wrap,
|
a.flex_wrap,
|
||||||
a.gap_sm,
|
a.gap_xs,
|
||||||
s.mt2,
|
s.mt2,
|
||||||
s.mb10,
|
s.mb10,
|
||||||
]}>
|
]}>
|
||||||
|
|
|
@ -480,9 +480,7 @@ let Feed = ({
|
||||||
// -prf
|
// -prf
|
||||||
return <DiscoverFallbackHeader />
|
return <DiscoverFallbackHeader />
|
||||||
}
|
}
|
||||||
return (
|
return <FeedSlice slice={item.slice} hideTopBorder={index === 0} />
|
||||||
<FeedSlice slice={item.slice} hideTopBorder={index === 0 && !isWeb} />
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,11 +91,7 @@ let PostMeta = (opts: PostMetaOpts): React.ReactNode => {
|
||||||
</Text>
|
</Text>
|
||||||
</ProfileHoverCard>
|
</ProfileHoverCard>
|
||||||
{!isAndroid && (
|
{!isAndroid && (
|
||||||
<Text
|
<Text type="md" style={pal.textLight} accessible={false}>
|
||||||
type="md"
|
|
||||||
style={pal.textLight}
|
|
||||||
lineHeight={1.2}
|
|
||||||
accessible={false}>
|
|
||||||
·
|
·
|
||||||
</Text>
|
</Text>
|
||||||
)}
|
)}
|
||||||
|
@ -104,7 +100,6 @@ let PostMeta = (opts: PostMetaOpts): React.ReactNode => {
|
||||||
<TextLinkOnWebOnly
|
<TextLinkOnWebOnly
|
||||||
type="md"
|
type="md"
|
||||||
style={pal.textLight}
|
style={pal.textLight}
|
||||||
lineHeight={1.2}
|
|
||||||
text={timeElapsed}
|
text={timeElapsed}
|
||||||
accessibilityLabel={niceDate(opts.timestamp)}
|
accessibilityLabel={niceDate(opts.timestamp)}
|
||||||
title={niceDate(opts.timestamp)}
|
title={niceDate(opts.timestamp)}
|
||||||
|
|
|
@ -80,7 +80,7 @@ export function AccessibilitySettingsScreen({}: Props) {
|
||||||
style={s.flex1}
|
style={s.flex1}
|
||||||
contentContainerStyle={[
|
contentContainerStyle={[
|
||||||
s.flex1,
|
s.flex1,
|
||||||
{paddingBottom: 200},
|
{paddingBottom: 100},
|
||||||
isMobile && pal.viewLight,
|
isMobile && pal.viewLight,
|
||||||
]}>
|
]}>
|
||||||
<Text type="xl-bold" style={[pal.text, styles.heading]}>
|
<Text type="xl-bold" style={[pal.text, styles.heading]}>
|
||||||
|
|
|
@ -145,6 +145,7 @@ export function LanguageSettingsScreen(_props: Props) {
|
||||||
backgroundColor: pal.viewLight.backgroundColor,
|
backgroundColor: pal.viewLight.backgroundColor,
|
||||||
color: pal.text.color,
|
color: pal.text.color,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
|
fontFamily: 'inherit',
|
||||||
letterSpacing: 0.5,
|
letterSpacing: 0.5,
|
||||||
fontWeight: '500',
|
fontWeight: '500',
|
||||||
paddingHorizontal: 14,
|
paddingHorizontal: 14,
|
||||||
|
@ -236,6 +237,7 @@ export function LanguageSettingsScreen(_props: Props) {
|
||||||
backgroundColor: pal.viewLight.backgroundColor,
|
backgroundColor: pal.viewLight.backgroundColor,
|
||||||
color: pal.text.color,
|
color: pal.text.color,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
|
fontFamily: 'inherit',
|
||||||
letterSpacing: 0.5,
|
letterSpacing: 0.5,
|
||||||
fontWeight: '500',
|
fontWeight: '500',
|
||||||
paddingHorizontal: 14,
|
paddingHorizontal: 14,
|
||||||
|
|
|
@ -571,7 +571,7 @@ export function Explore() {
|
||||||
keyExtractor={item => item.key}
|
keyExtractor={item => item.key}
|
||||||
// @ts-ignore web only -prf
|
// @ts-ignore web only -prf
|
||||||
desktopFixedHeight
|
desktopFixedHeight
|
||||||
contentContainerStyle={{paddingBottom: 200}}
|
contentContainerStyle={{paddingBottom: 100}}
|
||||||
keyboardShouldPersistTaps="handled"
|
keyboardShouldPersistTaps="handled"
|
||||||
keyboardDismissMode="on-drag"
|
keyboardDismissMode="on-drag"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -783,7 +783,7 @@ let SearchInputBox = ({
|
||||||
}}>
|
}}>
|
||||||
<MagnifyingGlassIcon
|
<MagnifyingGlassIcon
|
||||||
style={[pal.icon, styles.headerSearchIcon]}
|
style={[pal.icon, styles.headerSearchIcon]}
|
||||||
size={21}
|
size={20}
|
||||||
/>
|
/>
|
||||||
<TextInput
|
<TextInput
|
||||||
testID="searchTextInput"
|
testID="searchTextInput"
|
||||||
|
@ -1071,6 +1071,7 @@ const styles = StyleSheet.create({
|
||||||
headerSearchInput: {
|
headerSearchInput: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
fontSize: 17,
|
fontSize: 17,
|
||||||
|
minWidth: 0,
|
||||||
},
|
},
|
||||||
headerCancelBtn: {
|
headerCancelBtn: {
|
||||||
paddingLeft: 10,
|
paddingLeft: 10,
|
||||||
|
|
|
@ -325,7 +325,7 @@ export function SettingsScreen({}: Props) {
|
||||||
</View>
|
</View>
|
||||||
</SimpleViewHeader>
|
</SimpleViewHeader>
|
||||||
<ScrollView
|
<ScrollView
|
||||||
style={[s.hContentRegion, isMobile && pal.viewLight]}
|
style={[isMobile && pal.viewLight]}
|
||||||
scrollIndicatorInsets={{right: 1}}
|
scrollIndicatorInsets={{right: 1}}
|
||||||
// @ts-ignore web only -prf
|
// @ts-ignore web only -prf
|
||||||
dataSet={{'stable-gutters': 1}}>
|
dataSet={{'stable-gutters': 1}}>
|
||||||
|
|
|
@ -36,7 +36,7 @@ function StorybookInner() {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<CenteredView style={[t.atoms.bg]}>
|
<CenteredView style={[t.atoms.bg]}>
|
||||||
<View style={[a.p_xl, a.gap_5xl, {paddingBottom: 200}]}>
|
<View style={[a.p_xl, a.gap_5xl, {paddingBottom: 100}]}>
|
||||||
{!showContainedList ? (
|
{!showContainedList ? (
|
||||||
<>
|
<>
|
||||||
<View style={[a.flex_row, a.align_start, a.gap_md]}>
|
<View style={[a.flex_row, a.align_start, a.gap_md]}>
|
||||||
|
|
|
@ -33,6 +33,7 @@ import {NavSignupCard} from '#/view/shell/NavSignupCard'
|
||||||
import {formatCountShortOnly} from 'view/com/util/numeric/format'
|
import {formatCountShortOnly} from 'view/com/util/numeric/format'
|
||||||
import {Text} from 'view/com/util/text/Text'
|
import {Text} from 'view/com/util/text/Text'
|
||||||
import {UserAvatar} from 'view/com/util/UserAvatar'
|
import {UserAvatar} from 'view/com/util/UserAvatar'
|
||||||
|
import {atoms as a} from '#/alf'
|
||||||
import {useTheme as useAlfTheme} from '#/alf'
|
import {useTheme as useAlfTheme} from '#/alf'
|
||||||
import {Button, ButtonIcon, ButtonText} from '#/components/Button'
|
import {Button, ButtonIcon, ButtonText} from '#/components/Button'
|
||||||
import {
|
import {
|
||||||
|
@ -96,29 +97,42 @@ let DrawerProfileCard = ({
|
||||||
numberOfLines={1}>
|
numberOfLines={1}>
|
||||||
@{account.handle}
|
@{account.handle}
|
||||||
</Text>
|
</Text>
|
||||||
<Text type="xl" style={[pal.textLight, styles.profileCardFollowers]}>
|
<View
|
||||||
<Trans>
|
style={[
|
||||||
<Text type="xl-medium" style={pal.text}>
|
styles.profileCardFollowers,
|
||||||
{formatCountShortOnly(profile?.followersCount ?? 0)}
|
a.gap_xs,
|
||||||
</Text>{' '}
|
a.flex_row,
|
||||||
<Plural
|
a.align_center,
|
||||||
value={profile?.followersCount || 0}
|
a.flex_wrap,
|
||||||
one="follower"
|
]}>
|
||||||
other="followers"
|
<Text type="xl" style={pal.textLight}>
|
||||||
/>
|
<Trans>
|
||||||
</Trans>{' '}
|
<Text type="xl-medium" style={pal.text}>
|
||||||
·{' '}
|
{formatCountShortOnly(profile?.followersCount ?? 0)}
|
||||||
<Trans>
|
</Text>{' '}
|
||||||
<Text type="xl-medium" style={pal.text}>
|
<Plural
|
||||||
{formatCountShortOnly(profile?.followsCount ?? 0)}
|
value={profile?.followersCount || 0}
|
||||||
</Text>{' '}
|
one="follower"
|
||||||
<Plural
|
other="followers"
|
||||||
value={profile?.followsCount || 0}
|
/>
|
||||||
one="following"
|
</Trans>
|
||||||
other="following"
|
</Text>
|
||||||
/>
|
<Text type="xl" style={pal.textLight}>
|
||||||
</Trans>
|
·
|
||||||
</Text>
|
</Text>
|
||||||
|
<Text type="xl" style={pal.textLight}>
|
||||||
|
<Trans>
|
||||||
|
<Text type="xl-medium" style={pal.text}>
|
||||||
|
{formatCountShortOnly(profile?.followsCount ?? 0)}
|
||||||
|
</Text>{' '}
|
||||||
|
<Plural
|
||||||
|
value={profile?.followsCount || 0}
|
||||||
|
one="following"
|
||||||
|
other="following"
|
||||||
|
/>
|
||||||
|
</Trans>
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -610,7 +624,7 @@ const styles = StyleSheet.create({
|
||||||
backgroundColor: '#1B1919',
|
backgroundColor: '#1B1919',
|
||||||
},
|
},
|
||||||
main: {
|
main: {
|
||||||
paddingLeft: 20,
|
paddingHorizontal: 20,
|
||||||
paddingTop: 20,
|
paddingTop: 20,
|
||||||
},
|
},
|
||||||
smallSpacer: {
|
smallSpacer: {
|
||||||
|
@ -627,14 +641,12 @@ const styles = StyleSheet.create({
|
||||||
},
|
},
|
||||||
profileCardFollowers: {
|
profileCardFollowers: {
|
||||||
marginTop: 16,
|
marginTop: 16,
|
||||||
paddingRight: 10,
|
|
||||||
},
|
},
|
||||||
|
|
||||||
menuItem: {
|
menuItem: {
|
||||||
flexDirection: 'row',
|
flexDirection: 'row',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
paddingVertical: 16,
|
paddingVertical: 16,
|
||||||
paddingRight: 10,
|
|
||||||
},
|
},
|
||||||
menuItemIconWrapper: {
|
menuItemIconWrapper: {
|
||||||
width: 24,
|
width: 24,
|
||||||
|
|
|
@ -11,6 +11,7 @@ import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
|
||||||
import {s} from 'lib/styles'
|
import {s} from 'lib/styles'
|
||||||
import {TextLink} from 'view/com/util/Link'
|
import {TextLink} from 'view/com/util/Link'
|
||||||
import {Text} from 'view/com/util/text/Text'
|
import {Text} from 'view/com/util/text/Text'
|
||||||
|
import {atoms as a} from '#/alf'
|
||||||
import {ProgressGuideList} from '#/components/ProgressGuide/List'
|
import {ProgressGuideList} from '#/components/ProgressGuide/List'
|
||||||
import {DesktopFeeds} from './Feeds'
|
import {DesktopFeeds} from './Feeds'
|
||||||
import {DesktopSearch} from './Search'
|
import {DesktopSearch} from './Search'
|
||||||
|
@ -56,7 +57,7 @@ export function DesktopRightNav({routeName}: {routeName: string}) {
|
||||||
paddingTop: hasSession ? 0 : 18,
|
paddingTop: hasSession ? 0 : 18,
|
||||||
},
|
},
|
||||||
]}>
|
]}>
|
||||||
<View style={[{flexWrap: 'wrap'}, s.flexRow]}>
|
<View style={[{flexWrap: 'wrap'}, s.flexRow, a.gap_xs]}>
|
||||||
{hasSession && (
|
{hasSession && (
|
||||||
<>
|
<>
|
||||||
<TextLink
|
<TextLink
|
||||||
|
@ -69,7 +70,7 @@ export function DesktopRightNav({routeName}: {routeName: string}) {
|
||||||
text={_(msg`Feedback`)}
|
text={_(msg`Feedback`)}
|
||||||
/>
|
/>
|
||||||
<Text type="md" style={pal.textLight}>
|
<Text type="md" style={pal.textLight}>
|
||||||
·
|
·
|
||||||
</Text>
|
</Text>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
@ -80,7 +81,7 @@ export function DesktopRightNav({routeName}: {routeName: string}) {
|
||||||
text={_(msg`Privacy`)}
|
text={_(msg`Privacy`)}
|
||||||
/>
|
/>
|
||||||
<Text type="md" style={pal.textLight}>
|
<Text type="md" style={pal.textLight}>
|
||||||
·
|
·
|
||||||
</Text>
|
</Text>
|
||||||
<TextLink
|
<TextLink
|
||||||
type="md"
|
type="md"
|
||||||
|
@ -89,7 +90,7 @@ export function DesktopRightNav({routeName}: {routeName: string}) {
|
||||||
text={_(msg`Terms`)}
|
text={_(msg`Terms`)}
|
||||||
/>
|
/>
|
||||||
<Text type="md" style={pal.textLight}>
|
<Text type="md" style={pal.textLight}>
|
||||||
·
|
·
|
||||||
</Text>
|
</Text>
|
||||||
<TextLink
|
<TextLink
|
||||||
type="md"
|
type="md"
|
||||||
|
|
|
@ -2,7 +2,6 @@ import React from 'react'
|
||||||
import {
|
import {
|
||||||
ActivityIndicator,
|
ActivityIndicator,
|
||||||
StyleSheet,
|
StyleSheet,
|
||||||
TextInput,
|
|
||||||
TouchableOpacity,
|
TouchableOpacity,
|
||||||
View,
|
View,
|
||||||
ViewStyle,
|
ViewStyle,
|
||||||
|
@ -12,7 +11,7 @@ import {
|
||||||
moderateProfile,
|
moderateProfile,
|
||||||
ModerationDecision,
|
ModerationDecision,
|
||||||
} from '@atproto/api'
|
} from '@atproto/api'
|
||||||
import {msg, Trans} from '@lingui/macro'
|
import {msg} from '@lingui/macro'
|
||||||
import {useLingui} from '@lingui/react'
|
import {useLingui} from '@lingui/react'
|
||||||
import {StackActions, useNavigation} from '@react-navigation/native'
|
import {StackActions, useNavigation} from '@react-navigation/native'
|
||||||
import {useQueryClient} from '@tanstack/react-query'
|
import {useQueryClient} from '@tanstack/react-query'
|
||||||
|
@ -24,11 +23,11 @@ import {s} from '#/lib/styles'
|
||||||
import {useModerationOpts} from '#/state/preferences/moderation-opts'
|
import {useModerationOpts} from '#/state/preferences/moderation-opts'
|
||||||
import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete'
|
import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete'
|
||||||
import {usePalette} from 'lib/hooks/usePalette'
|
import {usePalette} from 'lib/hooks/usePalette'
|
||||||
import {MagnifyingGlassIcon2} from 'lib/icons'
|
|
||||||
import {NavigationProp} from 'lib/routes/types'
|
import {NavigationProp} from 'lib/routes/types'
|
||||||
import {precacheProfile} from 'state/queries/profile'
|
import {precacheProfile} from 'state/queries/profile'
|
||||||
import {Link} from '#/view/com/util/Link'
|
import {Link} from '#/view/com/util/Link'
|
||||||
import {UserAvatar} from '#/view/com/util/UserAvatar'
|
import {UserAvatar} from '#/view/com/util/UserAvatar'
|
||||||
|
import {SearchInput} from 'view/com/util/forms/SearchInput'
|
||||||
import {Text} from 'view/com/util/text/Text'
|
import {Text} from 'view/com/util/text/Text'
|
||||||
import {atoms as a} from '#/alf'
|
import {atoms as a} from '#/alf'
|
||||||
|
|
||||||
|
@ -183,47 +182,12 @@ export function DesktopSearch() {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={[styles.container, pal.view]}>
|
<View style={[styles.container, pal.view]}>
|
||||||
<View
|
<SearchInput
|
||||||
style={[{backgroundColor: pal.colors.backgroundLight}, styles.search]}>
|
query={query}
|
||||||
<View style={[styles.inputContainer]}>
|
onChangeQuery={onChangeText}
|
||||||
<MagnifyingGlassIcon2
|
onPressCancelSearch={onPressCancelSearch}
|
||||||
size={18}
|
onSubmitQuery={onSubmit}
|
||||||
style={[pal.textLight, styles.iconWrapper]}
|
/>
|
||||||
/>
|
|
||||||
<TextInput
|
|
||||||
testID="searchTextInput"
|
|
||||||
placeholder={_(msg`Search`)}
|
|
||||||
placeholderTextColor={pal.colors.textLight}
|
|
||||||
selectTextOnFocus
|
|
||||||
returnKeyType="search"
|
|
||||||
value={query}
|
|
||||||
style={[pal.textLight, styles.input]}
|
|
||||||
onChangeText={onChangeText}
|
|
||||||
onSubmitEditing={onSubmit}
|
|
||||||
accessibilityRole="search"
|
|
||||||
accessibilityLabel={_(msg`Search`)}
|
|
||||||
accessibilityHint=""
|
|
||||||
autoCorrect={false}
|
|
||||||
autoComplete="off"
|
|
||||||
autoCapitalize="none"
|
|
||||||
/>
|
|
||||||
{query ? (
|
|
||||||
<View style={styles.cancelBtn}>
|
|
||||||
<TouchableOpacity
|
|
||||||
onPress={onPressCancelSearch}
|
|
||||||
accessibilityRole="button"
|
|
||||||
accessibilityLabel={_(msg`Cancel search`)}
|
|
||||||
accessibilityHint={_(msg`Exits inputting search query`)}
|
|
||||||
onAccessibilityEscape={onPressCancelSearch}>
|
|
||||||
<Text type="lg" style={[pal.link]}>
|
|
||||||
<Trans>Cancel</Trans>
|
|
||||||
</Text>
|
|
||||||
</TouchableOpacity>
|
|
||||||
</View>
|
|
||||||
) : undefined}
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
|
|
||||||
{query !== '' && isActive && moderationOpts && (
|
{query !== '' && isActive && moderationOpts && (
|
||||||
<View style={[pal.view, pal.borderDark, styles.resultsContainer]}>
|
<View style={[pal.view, pal.borderDark, styles.resultsContainer]}>
|
||||||
{isFetching && !autocompleteData?.length ? (
|
{isFetching && !autocompleteData?.length ? (
|
||||||
|
@ -262,33 +226,6 @@ const styles = StyleSheet.create({
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
width: 300,
|
width: 300,
|
||||||
},
|
},
|
||||||
search: {
|
|
||||||
paddingHorizontal: 16,
|
|
||||||
paddingVertical: 2,
|
|
||||||
width: 300,
|
|
||||||
borderRadius: 20,
|
|
||||||
},
|
|
||||||
inputContainer: {
|
|
||||||
flexDirection: 'row',
|
|
||||||
},
|
|
||||||
iconWrapper: {
|
|
||||||
position: 'relative',
|
|
||||||
top: 2,
|
|
||||||
paddingVertical: 7,
|
|
||||||
marginRight: 8,
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
flex: 1,
|
|
||||||
fontSize: 18,
|
|
||||||
width: '100%',
|
|
||||||
paddingTop: 7,
|
|
||||||
paddingBottom: 7,
|
|
||||||
},
|
|
||||||
cancelBtn: {
|
|
||||||
paddingRight: 4,
|
|
||||||
paddingLeft: 10,
|
|
||||||
paddingVertical: 7,
|
|
||||||
},
|
|
||||||
resultsContainer: {
|
resultsContainer: {
|
||||||
marginTop: 10,
|
marginTop: 10,
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
|
@ -296,8 +233,4 @@ const styles = StyleSheet.create({
|
||||||
borderWidth: 1,
|
borderWidth: 1,
|
||||||
borderRadius: 6,
|
borderRadius: 6,
|
||||||
},
|
},
|
||||||
noResults: {
|
|
||||||
textAlign: 'center',
|
|
||||||
paddingVertical: 10,
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue