import { motion } from 'framer-motion'; import { useStyles } from '~/hooks'; import { Components } from '~/utils/components-list'; import { _unstable_createComponent, _unstable_createEl, createPolymorphicComponent, } from '../../utils'; import { AvatarGenerated } from '../Avatar/AvatarGenerated'; import { Box } from '../Box'; import { Button } from '../Button'; import { Tag } from '../Tag'; import { useNavProps } from './Nav'; import { useNavMobileProps } from './NavMobile'; import type { NavConnectionDef } from './defs'; import { styles } from './styles'; const MotionStack = motion(Box.Stack); const _NavConnection = _unstable_createComponent( Components.NavConnection, ({ whenOpened = 'show', ...props }) => { const navProps = useNavProps(); const mobileProps = useNavMobileProps(); const classes = useStyles(styles, props); const hasProps = navProps.network || navProps.account; const connectButton = ( ); const content = ( <> {navProps.network && ( } > {navProps.network.name} )} {navProps.account && ( )} ); if (!mobileProps?.onOpenChange && !hasProps) { return connectButton; } if (!mobileProps?.onOpenChange || whenOpened === 'no-effect') { return ( {content} ); } const animContent = ( {content} ); return ( <> {!mobileProps.isOpen && whenOpened === 'hide' && animContent} {mobileProps.isOpen && whenOpened === 'show' && animContent} ); }, ); export const NavConnection = createPolymorphicComponent(_NavConnection); NavConnection.id = 'NavConnection';