From 99360f7bd90480b0c382014fa7d889aef8c433a4 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Fri, 27 Jan 2023 00:16:07 -0600 Subject: Implement basic web composer --- src/view/shell/web/DesktopLeftColumn.tsx | 173 +++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 src/view/shell/web/DesktopLeftColumn.tsx (limited to 'src/view/shell/web/DesktopLeftColumn.tsx') diff --git a/src/view/shell/web/DesktopLeftColumn.tsx b/src/view/shell/web/DesktopLeftColumn.tsx new file mode 100644 index 000000000..44559b6ad --- /dev/null +++ b/src/view/shell/web/DesktopLeftColumn.tsx @@ -0,0 +1,173 @@ +import React from 'react' +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 {s, colors, gradients} from '../../lib/styles' +import {useStores} from '../../../state' +import {usePalette} from '../../lib/hooks/usePalette' +import { + HomeIcon, + HomeIconSolid, + BellIcon, + BellIconSolid, + MagnifyingGlassIcon, + CogIcon, +} from '../../lib/icons' + +interface NavItemProps { + label: string + count?: number + href: string + icon: JSX.Element + iconFilled: JSX.Element + isProfile?: boolean +} +export const NavItem = observer( + ({label, count, href, icon, iconFilled, isProfile}: NavItemProps) => { + const store = useStores() + const pal = usePalette('default') + const isCurrent = store.nav.tab.current.url === href + return ( + [ + // @ts-ignore Pressable state differs for RNW -prf + state.hovered && {backgroundColor: pal.colors.backgroundLight}, + ]}> + + + {isCurrent ? iconFilled : icon} + {typeof count === 'number' && count > 0 && ( + + {count} + + )} + + + {label} + + + + ) + }, +) + +export const DesktopLeftColumn = observer(() => { + const store = useStores() + const pal = usePalette('default') + const onPressCompose = () => store.shell.openComposer({}) + const avi = ( + + ) + return ( + + + } + iconFilled={} + /> + } + iconFilled={} + /> + } + iconFilled={} + /> + } + iconFilled={} + /> + + + + New Post + + + + + ) +}) + +const styles = StyleSheet.create({ + container: { + position: 'absolute', + left: 'calc(50vw - 530px)', + width: '230px', + height: '100%', + borderRightWidth: 1, + paddingTop: 5, + }, + navItem: { + paddingVertical: 10, + paddingHorizontal: 10, + flexDirection: 'row', + alignItems: 'center', + }, + navItemIconWrapper: { + flexDirection: 'row', + width: 30, + justifyContent: 'center', + marginRight: 5, + }, + navItemProfile: { + width: 40, + marginRight: 10, + }, + navItemCount: { + position: 'absolute', + top: -5, + left: 15, + backgroundColor: colors.red3, + color: colors.white, + fontSize: 12, + fontWeight: 'bold', + paddingHorizontal: 4, + borderRadius: 6, + }, + navItemLabel: { + fontSize: 19, + }, + composeBtn: { + marginTop: 20, + marginBottom: 10, + marginLeft: 10, + marginRight: 20, + borderRadius: 30, + paddingHorizontal: 20, + paddingVertical: 12, + }, +}) -- cgit 1.4.1