Files
CHOMPStation2/tgui/packages/tgui-panel/chat/ChatTabs.tsx
CHOMPStation2StaffMirrorBot 3aa9314ff4 [MIRROR] Moves UIs to TGUI core (#9967)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2025-01-29 01:34:31 +01:00

73 lines
1.8 KiB
TypeScript

/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
*/
import { useDispatch, useSelector } from 'tgui/backend';
import { Box, Button, Stack, Tabs } from 'tgui-core/components';
import { openChatSettings } from '../settings/actions';
import { addChatPage, changeChatPage } from './actions';
import { selectChatPages, selectCurrentChatPage } from './selectors';
const UnreadCountWidget = ({ value }) => (
<Box
style={{
fontSize: '0.7em',
borderRadius: '0.25em',
width: '1.7em',
lineHeight: '1.55em',
backgroundColor: 'crimson',
color: '#fff',
}}
>
{Math.min(value, 99)}
</Box>
);
export const ChatTabs = (props) => {
const pages = useSelector(selectChatPages);
const currentPage = useSelector(selectCurrentChatPage);
const dispatch = useDispatch();
return (
<Stack align="center">
<Stack.Item>
<Tabs textAlign="center">
{pages.map((page) => (
<Tabs.Tab
key={page.id}
selected={page === currentPage}
rightSlot={
!page.hideUnreadCount &&
page.unreadCount > 0 && (
<UnreadCountWidget value={page.unreadCount} />
)
}
onClick={() =>
dispatch(
changeChatPage({
pageId: page.id,
}),
)
}
>
{page.name}
</Tabs.Tab>
))}
</Tabs>
</Stack.Item>
<Stack.Item ml={1}>
<Button
color="transparent"
icon="plus"
onClick={() => {
dispatch(addChatPage());
dispatch(openChatSettings());
}}
/>
</Stack.Item>
</Stack>
);
};