Commit 5322799a authored by Max Alekseenko's avatar Max Alekseenko

fixes after review

parent bc7f97b8
...@@ -35,7 +35,7 @@ const Home = () => { ...@@ -35,7 +35,7 @@ const Home = () => {
</Heading> </Heading>
<Box display={{ base: 'none', lg: 'flex' }}> <Box display={{ base: 'none', lg: 'flex' }}>
{ config.features.account.isEnabled && <ProfileMenuDesktop isHomePage/> } { config.features.account.isEnabled && <ProfileMenuDesktop isHomePage/> }
<WalletMenuDesktop isHomePage/> { config.features.blockchainInteraction.isEnabled && <WalletMenuDesktop isHomePage/> }
</Box> </Box>
</Flex> </Flex>
<LightMode> <LightMode>
......
...@@ -75,7 +75,7 @@ const Web3ModalProvider = ({ children, fallback }: Props) => { ...@@ -75,7 +75,7 @@ const Web3ModalProvider = ({ children, fallback }: Props) => {
const web3ModalTheme = useColorModeValue('light', 'dark'); const web3ModalTheme = useColorModeValue('light', 'dark');
if (!wagmiConfig || !ethereumClient || !feature.isEnabled) { if (!wagmiConfig || !ethereumClient || !feature.isEnabled) {
return typeof fallback === 'function' ? fallback() : (fallback || null); return typeof fallback === 'function' ? fallback() : (fallback || <>{ children }</>); // eslint-disable-line react/jsx-no-useless-fragment
} }
return ( return (
......
...@@ -10,7 +10,11 @@ import NetworkMenuButton from 'ui/snippets/networkMenu/NetworkMenuButton'; ...@@ -10,7 +10,11 @@ import NetworkMenuButton from 'ui/snippets/networkMenu/NetworkMenuButton';
import NetworkMenuContentMobile from 'ui/snippets/networkMenu/NetworkMenuContentMobile'; import NetworkMenuContentMobile from 'ui/snippets/networkMenu/NetworkMenuContentMobile';
import useNetworkMenu from 'ui/snippets/networkMenu/useNetworkMenu'; import useNetworkMenu from 'ui/snippets/networkMenu/useNetworkMenu';
const Burger = () => { interface Props {
isAppPage?: boolean;
}
const Burger = ({ isAppPage }: Props) => {
const iconColor = useColorModeValue('gray.600', 'white'); const iconColor = useColorModeValue('gray.600', 'white');
const { isOpen, onOpen, onClose } = useDisclosure(); const { isOpen, onOpen, onClose } = useDisclosure();
const networkMenu = useNetworkMenu(); const networkMenu = useNetworkMenu();
...@@ -57,7 +61,7 @@ const Burger = () => { ...@@ -57,7 +61,7 @@ const Burger = () => {
</Flex> </Flex>
{ networkMenu.isOpen ? { networkMenu.isOpen ?
<NetworkMenuContentMobile tabs={ networkMenu.availableTabs } items={ networkMenu.data }/> : <NetworkMenuContentMobile tabs={ networkMenu.availableTabs } items={ networkMenu.data }/> :
<NavigationMobile onNavLinkClick={ onClose }/> <NavigationMobile onNavLinkClick={ onClose } isAppPage={ isAppPage }/>
} }
</DrawerBody> </DrawerBody>
</DrawerContent> </DrawerContent>
......
...@@ -45,12 +45,10 @@ const Header = ({ isHomePage, isAppPage, renderSearchBar }: Props) => { ...@@ -45,12 +45,10 @@ const Header = ({ isHomePage, isAppPage, renderSearchBar }: Props) => {
> >
<Burger/> <Burger/>
<NetworkLogo/> <NetworkLogo/>
<Box display="flex"> <Flex columnGap={ 2 }>
{ config.features.account.isEnabled ? <ProfileMenuMobile/> : <Box boxSize={ 10 }/> } { config.features.account.isEnabled ? <ProfileMenuMobile/> : <Box boxSize={ 10 }/> }
<Box ml={ 2 }> { config.features.blockchainInteraction.isEnabled && <WalletMenuMobile/> }
<WalletMenuMobile/> </Flex>
</Box>
</Box>
</Flex> </Flex>
{ !isHomePage && searchBar } { !isHomePage && searchBar }
</Box> </Box>
...@@ -65,7 +63,7 @@ const Header = ({ isHomePage, isAppPage, renderSearchBar }: Props) => { ...@@ -65,7 +63,7 @@ const Header = ({ isHomePage, isAppPage, renderSearchBar }: Props) => {
> >
{ isAppPage && ( { isAppPage && (
<Box display="flex" alignItems="center" gap={ 3 }> <Box display="flex" alignItems="center" gap={ 3 }>
<Burger/> <Burger isAppPage/>
<NetworkLogo isCollapsed/> <NetworkLogo isCollapsed/>
</Box> </Box>
) } ) }
...@@ -74,7 +72,7 @@ const Header = ({ isHomePage, isAppPage, renderSearchBar }: Props) => { ...@@ -74,7 +72,7 @@ const Header = ({ isHomePage, isAppPage, renderSearchBar }: Props) => {
</Box> </Box>
<Box display="flex"> <Box display="flex">
{ config.features.account.isEnabled && <ProfileMenuDesktop/> } { config.features.account.isEnabled && <ProfileMenuDesktop/> }
<WalletMenuDesktop/> { config.features.blockchainInteraction.isEnabled && <WalletMenuDesktop/> }
</Box> </Box>
</HStack> </HStack>
) } ) }
......
...@@ -17,10 +17,11 @@ import useNavLinkStyleProps from './useNavLinkStyleProps'; ...@@ -17,10 +17,11 @@ import useNavLinkStyleProps from './useNavLinkStyleProps';
type Props = { type Props = {
item: NavGroupItem; item: NavGroupItem;
onClick: () => void; onClick: () => void;
isExpanded?: boolean;
} }
const NavLinkGroup = ({ item, onClick }: Props) => { const NavLinkGroup = ({ item, onClick, isExpanded }: Props) => {
const styleProps = useNavLinkStyleProps({ isActive: item.isActive }); const styleProps = useNavLinkStyleProps({ isActive: item.isActive, isExpanded });
return ( return (
<Box as="li" listStyleType="none" w="100%" onClick={ onClick }> <Box as="li" listStyleType="none" w="100%" onClick={ onClick }>
......
...@@ -11,9 +11,10 @@ import NavLinkGroupMobile from './NavLinkGroupMobile'; ...@@ -11,9 +11,10 @@ import NavLinkGroupMobile from './NavLinkGroupMobile';
interface Props { interface Props {
onNavLinkClick?: () => void; onNavLinkClick?: () => void;
isAppPage?: boolean;
} }
const NavigationMobile = ({ onNavLinkClick }: Props) => { const NavigationMobile = ({ onNavLinkClick, isAppPage }: Props) => {
const { mainNavItems, accountNavItems } = useNavItems(); const { mainNavItems, accountNavItems } = useNavItems();
const [ openedGroupIndex, setOpenedGroupIndex ] = React.useState(-1); const [ openedGroupIndex, setOpenedGroupIndex ] = React.useState(-1);
...@@ -61,9 +62,9 @@ const NavigationMobile = ({ onNavLinkClick }: Props) => { ...@@ -61,9 +62,9 @@ const NavigationMobile = ({ onNavLinkClick }: Props) => {
> >
{ mainNavItems.map((item, index) => { { mainNavItems.map((item, index) => {
if (isGroupItem(item)) { if (isGroupItem(item)) {
return <NavLinkGroupMobile key={ item.text } item={ item } onClick={ onGroupItemOpen(index) }/>; return <NavLinkGroupMobile key={ item.text } item={ item } onClick={ onGroupItemOpen(index) } isExpanded={ isAppPage }/>;
} else { } else {
return <NavLink key={ item.text } item={ item } onClick={ onNavLinkClick }/>; return <NavLink key={ item.text } item={ item } onClick={ onNavLinkClick } isCollapsed={ isAppPage ? false : undefined }/>;
} }
}) } }) }
</VStack> </VStack>
......
import type { IconButtonProps } from '@chakra-ui/react'; import type { IconButtonProps } from '@chakra-ui/react';
import { Popover, PopoverContent, PopoverBody, PopoverTrigger, IconButton, useColorModeValue, Tooltip, Box } from '@chakra-ui/react'; import { Popover, PopoverContent, PopoverBody, PopoverTrigger, IconButton, Tooltip, Box } from '@chakra-ui/react';
import React from 'react'; import React from 'react';
import useFetchProfileInfo from 'lib/hooks/useFetchProfileInfo'; import useFetchProfileInfo from 'lib/hooks/useFetchProfileInfo';
...@@ -8,6 +8,8 @@ import * as mixpanel from 'lib/mixpanel/index'; ...@@ -8,6 +8,8 @@ import * as mixpanel from 'lib/mixpanel/index';
import UserAvatar from 'ui/shared/UserAvatar'; import UserAvatar from 'ui/shared/UserAvatar';
import ProfileMenuContent from 'ui/snippets/profileMenu/ProfileMenuContent'; import ProfileMenuContent from 'ui/snippets/profileMenu/ProfileMenuContent';
import useMenuButtonColors from '../useMenuButtonColors';
type Props = { type Props = {
isHomePage?: boolean; isHomePage?: boolean;
}; };
...@@ -15,6 +17,7 @@ type Props = { ...@@ -15,6 +17,7 @@ type Props = {
const ProfileMenuDesktop = ({ isHomePage }: Props) => { const ProfileMenuDesktop = ({ isHomePage }: Props) => {
const { data, error, isPending } = useFetchProfileInfo(); const { data, error, isPending } = useFetchProfileInfo();
const loginUrl = useLoginUrl(); const loginUrl = useLoginUrl();
const { themedBackground, themedBorderColor, themedColor } = useMenuButtonColors();
const [ hasMenu, setHasMenu ] = React.useState(false); const [ hasMenu, setHasMenu ] = React.useState(false);
React.useEffect(() => { React.useEffect(() => {
...@@ -51,16 +54,13 @@ const ProfileMenuDesktop = ({ isHomePage }: Props) => { ...@@ -51,16 +54,13 @@ const ProfileMenuDesktop = ({ isHomePage }: Props) => {
}, [ hasMenu, isHomePage ]); }, [ hasMenu, isHomePage ]);
let iconButtonStyles: Partial<IconButtonProps> = {}; let iconButtonStyles: Partial<IconButtonProps> = {};
const themedBackground = useColorModeValue('blackAlpha.50', 'whiteAlpha.50');
const themedBorderColor = useColorModeValue('gray.300', 'gray.700');
const themedColor = useColorModeValue('blackAlpha.800', 'gray.400');
if (hasMenu) { if (hasMenu) {
iconButtonStyles = { iconButtonStyles = {
bg: isHomePage ? '#EBF8FF' : themedBackground, bg: isHomePage ? 'blue.50' : themedBackground,
}; };
} else if (isHomePage) { } else if (isHomePage) {
iconButtonStyles = { iconButtonStyles = {
color: '#fff', color: 'white',
}; };
} else { } else {
iconButtonStyles = { iconButtonStyles = {
......
import { Drawer, DrawerOverlay, DrawerContent, DrawerBody, useDisclosure, IconButton, useColorModeValue } from '@chakra-ui/react'; import { Drawer, DrawerOverlay, DrawerContent, DrawerBody, useDisclosure, IconButton } from '@chakra-ui/react';
import type { IconButtonProps } from '@chakra-ui/react'; import type { IconButtonProps } from '@chakra-ui/react';
import React from 'react'; import React from 'react';
...@@ -8,11 +8,13 @@ import * as mixpanel from 'lib/mixpanel/index'; ...@@ -8,11 +8,13 @@ import * as mixpanel from 'lib/mixpanel/index';
import UserAvatar from 'ui/shared/UserAvatar'; import UserAvatar from 'ui/shared/UserAvatar';
import ProfileMenuContent from 'ui/snippets/profileMenu/ProfileMenuContent'; import ProfileMenuContent from 'ui/snippets/profileMenu/ProfileMenuContent';
import useMenuButtonColors from '../useMenuButtonColors';
const ProfileMenuMobile = () => { const ProfileMenuMobile = () => {
const { isOpen, onOpen, onClose } = useDisclosure(); const { isOpen, onOpen, onClose } = useDisclosure();
const { data, error, isPending } = useFetchProfileInfo(); const { data, error, isPending } = useFetchProfileInfo();
const loginUrl = useLoginUrl(); const loginUrl = useLoginUrl();
const { themedBackground, themedBorderColor, themedColor } = useMenuButtonColors();
const [ hasMenu, setHasMenu ] = React.useState(false); const [ hasMenu, setHasMenu ] = React.useState(false);
const handleSignInClick = React.useCallback(() => { const handleSignInClick = React.useCallback(() => {
...@@ -41,10 +43,6 @@ const ProfileMenuMobile = () => { ...@@ -41,10 +43,6 @@ const ProfileMenuMobile = () => {
}; };
})(); })();
const themedBackground = useColorModeValue('blackAlpha.50', 'whiteAlpha.50');
const themedBorderColor = useColorModeValue('gray.300', 'gray.700');
const themedColor = useColorModeValue('blackAlpha.800', 'gray.400');
return ( return (
<> <>
<IconButton <IconButton
......
import { useColorModeValue } from '@chakra-ui/react';
export default function useMenuColors() {
const themedBackground = useColorModeValue('blackAlpha.50', 'whiteAlpha.50');
const themedBorderColor = useColorModeValue('gray.300', 'gray.700');
const themedColor = useColorModeValue('blackAlpha.800', 'gray.400');
return { themedBackground, themedBorderColor, themedColor };
}
import { Box, Button, Text, useColorModeValue } from '@chakra-ui/react'; import { Box, Button, Text } from '@chakra-ui/react';
import React from 'react'; import React from 'react';
import getDefaultTransitionProps from 'theme/utils/getDefaultTransitionProps'; import getDefaultTransitionProps from 'theme/utils/getDefaultTransitionProps';
...@@ -9,43 +9,39 @@ type Props = { ...@@ -9,43 +9,39 @@ type Props = {
disconnect?: () => void; disconnect?: () => void;
}; };
const WalletMenuContent = ({ address, disconnect }: Props) => { const WalletMenuContent = ({ address, disconnect }: Props) => (
const primaryTextColor = useColorModeValue('blackAlpha.800', 'whiteAlpha.800'); <Box>
return ( <Text
<Box> fontSize="sm"
<Text fontWeight={ 600 }
fontSize="sm" mb={ 1 }
fontWeight={ 600 } { ...getDefaultTransitionProps() }
mb={ 1 } >
color={ primaryTextColor } My wallet
{ ...getDefaultTransitionProps() } </Text>
> <Text
My wallet fontSize="sm"
</Text> mb={ 5 }
<Text fontWeight={ 400 }
fontSize="sm" color="text_secondary"
mb={ 5 } { ...getDefaultTransitionProps() }
fontWeight={ 400 } >
color="gray.500" Your wallet is used to interact with apps and contracts in the explorer.
{ ...getDefaultTransitionProps() } </Text>
> <AddressEntity
Your wallet is used to interact with apps and contracts in the explorer. address={{ hash: address }}
</Text> noLink
<AddressEntity noTooltip
address={{ hash: address }} truncation="dynamic"
noLink fontSize="sm"
noTooltip fontWeight={ 700 }
truncation="dynamic" color="text"
fontSize="sm" mb={ 6 }
fontWeight={ 700 } />
color={ primaryTextColor } <Button size="sm" width="full" variant="outline" onClick={ disconnect }>
mb={ 6 } Disconnect
/> </Button>
<Button size="sm" width="full" variant="outline" onClick={ disconnect }> </Box>
Disconnect );
</Button>
</Box>
);
};
export default WalletMenuContent; export default WalletMenuContent;
import type { ButtonProps } from '@chakra-ui/react'; import type { ButtonProps } from '@chakra-ui/react';
import { Popover, PopoverContent, PopoverBody, PopoverTrigger, Button, useColorModeValue, Box, useBoolean, Tooltip } from '@chakra-ui/react'; import { Popover, PopoverContent, PopoverBody, PopoverTrigger, Button, Box, useBoolean, Tooltip } from '@chakra-ui/react';
import React from 'react'; import React from 'react';
import AddressIdenticon from 'ui/shared/entities/address/AddressIdenticon'; import AddressIdenticon from 'ui/shared/entities/address/AddressIdenticon';
...@@ -7,12 +7,15 @@ import HashStringShorten from 'ui/shared/HashStringShorten'; ...@@ -7,12 +7,15 @@ import HashStringShorten from 'ui/shared/HashStringShorten';
import useWallet from 'ui/snippets/walletMenu/useWallet'; import useWallet from 'ui/snippets/walletMenu/useWallet';
import WalletMenuContent from 'ui/snippets/walletMenu/WalletMenuContent'; import WalletMenuContent from 'ui/snippets/walletMenu/WalletMenuContent';
import useMenuButtonColors from '../useMenuButtonColors';
type Props = { type Props = {
isHomePage?: boolean; isHomePage?: boolean;
}; };
const WalletMenuDesktop = ({ isHomePage }: Props) => { const WalletMenuDesktop = ({ isHomePage }: Props) => {
const { isWalletConnected, address, connect, disconnect, isModalOpening, isModalOpen } = useWallet(); const { isWalletConnected, address, connect, disconnect, isModalOpening, isModalOpen } = useWallet();
const { themedBackground, themedBorderColor, themedColor } = useMenuButtonColors();
const [ isPopoverOpen, setIsPopoverOpen ] = useBoolean(false); const [ isPopoverOpen, setIsPopoverOpen ] = useBoolean(false);
const [ isTooltipShown, setIsTooltipShown ] = useBoolean(false); const [ isTooltipShown, setIsTooltipShown ] = useBoolean(false);
...@@ -32,12 +35,9 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => { ...@@ -32,12 +35,9 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => {
}, [ isWalletConnected, isHomePage ]); }, [ isWalletConnected, isHomePage ]);
let buttonStyles: Partial<ButtonProps> = {}; let buttonStyles: Partial<ButtonProps> = {};
const themedBackground = useColorModeValue('blackAlpha.50', 'whiteAlpha.50');
const themedBorderColor = useColorModeValue('gray.300', 'gray.700');
const themedColor = useColorModeValue('blackAlpha.800', 'gray.400');
if (isWalletConnected) { if (isWalletConnected) {
buttonStyles = { buttonStyles = {
bg: isHomePage ? '#EBF8FF' : themedBackground, bg: isHomePage ? 'blue.50' : themedBackground,
color: isHomePage ? 'blackAlpha.800' : themedColor, color: isHomePage ? 'blackAlpha.800' : themedColor,
_hover: { _hover: {
color: isHomePage ? 'blackAlpha.800' : themedColor, color: isHomePage ? 'blackAlpha.800' : themedColor,
...@@ -45,7 +45,7 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => { ...@@ -45,7 +45,7 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => {
}; };
} else if (isHomePage) { } else if (isHomePage) {
buttonStyles = { buttonStyles = {
color: '#FFFFFF', color: 'white',
}; };
} else { } else {
buttonStyles = { buttonStyles = {
......
import { Drawer, DrawerOverlay, DrawerContent, DrawerBody, useDisclosure, IconButton, useColorModeValue, Icon } from '@chakra-ui/react'; import { Drawer, DrawerOverlay, DrawerContent, DrawerBody, useDisclosure, IconButton, Icon } from '@chakra-ui/react';
import React from 'react'; import React from 'react';
import walletIcon from 'icons/wallet.svg'; import walletIcon from 'icons/wallet.svg';
...@@ -6,13 +6,12 @@ import AddressIdenticon from 'ui/shared/entities/address/AddressIdenticon'; ...@@ -6,13 +6,12 @@ import AddressIdenticon from 'ui/shared/entities/address/AddressIdenticon';
import useWallet from 'ui/snippets/walletMenu/useWallet'; import useWallet from 'ui/snippets/walletMenu/useWallet';
import WalletMenuContent from 'ui/snippets/walletMenu/WalletMenuContent'; import WalletMenuContent from 'ui/snippets/walletMenu/WalletMenuContent';
import useMenuButtonColors from '../useMenuButtonColors';
const WalletMenuMobile = () => { const WalletMenuMobile = () => {
const { isOpen, onOpen, onClose } = useDisclosure(); const { isOpen, onOpen, onClose } = useDisclosure();
const { isWalletConnected, address, connect, disconnect, isModalOpening, isModalOpen } = useWallet(); const { isWalletConnected, address, connect, disconnect, isModalOpening, isModalOpen } = useWallet();
const { themedBackground, themedBorderColor, themedColor } = useMenuButtonColors();
const themedBackground = useColorModeValue('blackAlpha.50', 'whiteAlpha.50');
const themedBorderColor = useColorModeValue('gray.300', 'gray.700');
const themedColor = useColorModeValue('blackAlpha.800', 'gray.400');
return ( return (
<> <>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment