From c24d0254bcb13c49793b80b5357ec4cd2ca4688f Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Thu, 26 Jan 2023 19:06:46 -0600 Subject: Add left column of web shell --- src/view/shell/web/left-column.tsx | 164 +++++++++++++++++++++++++------------ 1 file changed, 111 insertions(+), 53 deletions(-) (limited to 'src/view/shell/web/left-column.tsx') diff --git a/src/view/shell/web/left-column.tsx b/src/view/shell/web/left-column.tsx index 3ce6c2eca..b7309d9c5 100644 --- a/src/view/shell/web/left-column.tsx +++ b/src/view/shell/web/left-column.tsx @@ -1,57 +1,115 @@ import React from 'react' -import {View} from 'react-native' +import {Pressable, StyleSheet, View} from 'react-native' +import {observer} from 'mobx-react-lite' +import {Link} from '../../com/util/Link' +import {Text} from '../../com/util/text/Text' +import {colors} from '../../lib/styles' +import {useStores} from '../../../state' +import {usePalette} from '../../lib/hooks/usePalette' +import { + HomeIcon, + HomeIconSolid, + BellIcon, + BellIconSolid, + MagnifyingGlassIcon, + CogIcon, +} from '../../lib/icons' -// export const NavItem: React.FC<{label: string; screen: string}> = ({ -// label, -// screen, -// }) => { -// const Link = <> // TODO -// return ( -// -// [ -// // @ts-ignore it does exist! (react-native-web) -prf -// state.hovered && styles.navItemHovered, -// ]}> -// -// {label} -// -// -// -// ) -// } - -export const DesktopLeftColumn: React.FC = () => { - // TODO - return - // return ( - // - // - // - // - // - // ) +interface NavItemProps { + label: string + count?: number + href: string + icon: JSX.Element + iconFilled: JSX.Element } +export const NavItem = observer( + ({label, count, href, icon, iconFilled}: 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') + return ( + + } + iconFilled={} + /> + } + iconFilled={} + /> + } + iconFilled={} + /> + } + iconFilled={} + /> + + ) +}) -// const styles = StyleSheet.create({ -// container: { -// position: 'absolute', -// left: 'calc(50vw - 500px)', -// width: '200px', -// height: '100%', -// }, -// navItemHovered: { -// backgroundColor: 'gray', -// }, -// navItemLink: { -// padding: '1rem', -// }, -// navItemLinkSelected: { -// color: 'blue', -// }, -// }) +const styles = StyleSheet.create({ + container: { + position: 'absolute', + left: 'calc(50vw - 500px)', + width: '200px', + height: '100%', + borderRightWidth: 1, + }, + navItem: { + padding: '1rem', + flexDirection: 'row', + alignItems: 'center', + }, + navItemIconWrapper: { + flexDirection: 'row', + width: 30, + justifyContent: 'center', + marginRight: 5, + }, + navItemCount: { + position: 'absolute', + top: -5, + left: 15, + backgroundColor: colors.red3, + color: colors.white, + fontSize: 12, + paddingHorizontal: 4, + borderRadius: 4, + }, +}) -- cgit 1.4.1