diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/view/com/posts/ComposerPrompt.tsx (renamed from src/view/com/posts/PromptButtons.tsx) | 2 | ||||
-rw-r--r-- | src/view/com/posts/ComposerPrompt.web.tsx | 41 | ||||
-rw-r--r-- | src/view/com/posts/Feed.tsx | 6 | ||||
-rw-r--r-- | src/view/com/util/FAB.web.tsx | 8 | ||||
-rw-r--r-- | src/view/shell/web/left-column.tsx | 26 |
5 files changed, 77 insertions, 6 deletions
diff --git a/src/view/com/posts/PromptButtons.tsx b/src/view/com/posts/ComposerPrompt.tsx index 2a8e5808f..1ddc28756 100644 --- a/src/view/com/posts/PromptButtons.tsx +++ b/src/view/com/posts/ComposerPrompt.tsx @@ -3,7 +3,7 @@ import {StyleSheet, TouchableOpacity, View} from 'react-native' import {Text} from '../util/text/Text' import {usePalette} from '../../lib/hooks/usePalette' -export function PromptButtons({ +export function ComposerPrompt({ onPressCompose, }: { onPressCompose: (imagesOpen?: boolean) => void diff --git a/src/view/com/posts/ComposerPrompt.web.tsx b/src/view/com/posts/ComposerPrompt.web.tsx new file mode 100644 index 000000000..96c09f0b3 --- /dev/null +++ b/src/view/com/posts/ComposerPrompt.web.tsx @@ -0,0 +1,41 @@ +import React from 'react' +import {StyleSheet, TouchableWithoutFeedback, View} from 'react-native' +import {Text} from '../util/text/Text' +import {usePalette} from '../../lib/hooks/usePalette' +import {s} from '../../lib/styles' + +export function ComposerPrompt({ + onPressCompose, +}: { + onPressCompose: (imagesOpen?: boolean) => void +}) { + const pal = usePalette('default') + return ( + <TouchableWithoutFeedback onPress={() => onPressCompose(false)}> + <View style={[pal.view, pal.border, styles.container]}> + <Text type="xl" style={pal.textLight}> + What's up? + </Text> + <View style={s.flex1} /> + <View style={[styles.btn, pal.btn]}> + <Text>Post</Text> + </View> + </View> + </TouchableWithoutFeedback> + ) +} + +const styles = StyleSheet.create({ + container: { + paddingVertical: 16, + paddingHorizontal: 18, + flexDirection: 'row', + alignItems: 'center', + borderTopWidth: 1, + }, + btn: { + paddingVertical: 6, + paddingHorizontal: 14, + borderRadius: 30, + }, +}) diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index db05caa3c..409ce4af2 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -13,7 +13,7 @@ import {EmptyState} from '../util/EmptyState' import {ErrorMessage} from '../util/error/ErrorMessage' import {FeedModel} from '../../../state/models/feed-view' import {FeedItem} from './FeedItem' -import {PromptButtons} from './PromptButtons' +import {ComposerPrompt} from './ComposerPrompt' import {OnScrollCb} from '../../lib/hooks/useOnMainScroll' import {s} from '../../lib/styles' @@ -43,7 +43,7 @@ export const Feed = observer(function Feed({ // like PureComponent, shouldComponentUpdate, etc const renderItem = ({item}: {item: any}) => { if (item === COMPOSE_PROMPT_ITEM) { - return <PromptButtons onPressCompose={onPressCompose} /> + return <ComposerPrompt onPressCompose={onPressCompose} /> } else if (item === EMPTY_FEED_ITEM) { return ( <EmptyState @@ -87,7 +87,7 @@ export const Feed = observer(function Feed({ return ( <View testID={testID} style={style}> <CenteredView> - {!data && <PromptButtons onPressCompose={onPressCompose} />} + {!data && <ComposerPrompt onPressCompose={onPressCompose} />} {feed.isLoading && !data && <PostFeedLoadingPlaceholder />} {feed.hasError && ( <ErrorMessage diff --git a/src/view/com/util/FAB.web.tsx b/src/view/com/util/FAB.web.tsx new file mode 100644 index 000000000..dcffef29e --- /dev/null +++ b/src/view/com/util/FAB.web.tsx @@ -0,0 +1,8 @@ +import React from 'react' +import {GestureResponderEvent, View} from 'react-native' +import {IconProp} from '@fortawesome/fontawesome-svg-core' + +type OnPress = ((event: GestureResponderEvent) => void) | undefined +export const FAB = (_opts: {icon: IconProp; onPress: OnPress}) => { + return <View /> +} diff --git a/src/view/shell/web/left-column.tsx b/src/view/shell/web/left-column.tsx index 5e3aba5bb..44559b6ad 100644 --- a/src/view/shell/web/left-column.tsx +++ b/src/view/shell/web/left-column.tsx @@ -1,10 +1,11 @@ import React from 'react' -import {Pressable, StyleSheet, View} from 'react-native' +import {Pressable, StyleSheet, TouchableOpacity, View} from 'react-native' import {observer} from 'mobx-react-lite' +import LinearGradient from 'react-native-linear-gradient' import {Link} from '../../com/util/Link' import {Text} from '../../com/util/text/Text' import {UserAvatar} from '../../com/util/UserAvatar' -import {colors} from '../../lib/styles' +import {s, colors, gradients} from '../../lib/styles' import {useStores} from '../../../state' import {usePalette} from '../../lib/hooks/usePalette' import { @@ -63,6 +64,7 @@ export const NavItem = observer( export const DesktopLeftColumn = observer(() => { const store = useStores() const pal = usePalette('default') + const onPressCompose = () => store.shell.openComposer({}) const avi = ( <UserAvatar handle={store.me.handle} @@ -105,6 +107,17 @@ export const DesktopLeftColumn = observer(() => { icon={<CogIcon strokeWidth={1.5} />} iconFilled={<CogIcon strokeWidth={2} />} /> + <TouchableOpacity onPress={onPressCompose}> + <LinearGradient + colors={[gradients.blueLight.start, gradients.blueLight.end]} + start={{x: 0, y: 0}} + end={{x: 1, y: 1}} + style={styles.composeBtn}> + <Text type="xl-medium" style={[s.white, s.textCenter]}> + New Post + </Text> + </LinearGradient> + </TouchableOpacity> </View> ) }) @@ -148,4 +161,13 @@ const styles = StyleSheet.create({ navItemLabel: { fontSize: 19, }, + composeBtn: { + marginTop: 20, + marginBottom: 10, + marginLeft: 10, + marginRight: 20, + borderRadius: 30, + paddingHorizontal: 20, + paddingVertical: 12, + }, }) |