import styled, { css } from 'styled-components'; import { Flex, Text, Favicon, Row, BoxProps, Icon, Button, } from '../../../general'; import { AvatarRow, ContactData } from '../../general/Avatar/AvatarRow'; const widths = { collapsed: 40, expanded: 270, }; const TabRow = styled(Row)<{ collapsed?: boolean }>` flex-direction: column; flex: 1; padding: 4px 4px 4px 6px; align-items: space-between; text-align: left; background-color: rgba(var(--rlm-overlay-hover-rgba)); &:hover { background-color: rgba(var(--rlm-overlay-active-rgba)); } ${(props) => props.collapsed && css` min-height: 30px; width: 30px; padding: 6px 0px; align-items: center; justify-content: center; text-align: left; `} `; export type TabProps = { favicon: string; url: string; title: string; collapsed?: boolean; multiplayer?: { host: string; peers: ContactData[]; }; width?: number; onNavigate: (url: string) => void; onClose: (url: string) => void; } & BoxProps; export const Tab = ({ id, favicon, collapsed, url, title, onNavigate, onClose, multiplayer, }: TabProps) => { if (collapsed) { return ( onNavigate(url)}> {multiplayer && ( )} ); } let multiplayerRow = null; if (multiplayer) { multiplayerRow = ( {multiplayer.host} ); } return ( {!collapsed && ( {title} )} ) => { evt.stopPropagation(); onClose(url); }} > {multiplayerRow} ); };