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}
);
};