1
0
mirror of https://github.com/checktheroads/hyperglass synced 2024-05-11 05:55:08 +00:00
2020-12-15 01:18:04 -07:00

52 lines
1.4 KiB
TypeScript

import { Box } from '@chakra-ui/react';
import { useColorValue } from '~/context';
import { useOpposingColor } from '~/hooks';
import type { TTableRow } from './types';
export const TableRow = (props: TTableRow) => {
const {
index = 0,
doStripe = false,
highlight = false,
highlightBg = 'primary',
doHorizontalBorders = false,
...rest
} = props;
const alpha = useColorValue('100', '200');
const alphaHover = useColorValue('200', '100');
const bgStripe = useColorValue('blackAlpha.50', 'whiteAlpha.50');
let hoverBg = useColorValue('blackAlpha.50', 'whiteAlpha.50');
const rowBorder = useColorValue(
{ borderTop: '1px', borderTopColor: 'blackAlpha.100' },
{ borderTop: '1px', borderTopColor: 'whiteAlpha.100' },
);
let bg;
if (highlight) {
bg = `${highlightBg}.${alpha}`;
hoverBg = `${highlightBg}.${alphaHover}`;
} else if (doStripe && index % 2 !== 0) {
bg = bgStripe;
}
const defaultBg = useColorValue('white', 'black');
const color = useOpposingColor(bg ?? defaultBg);
const borderProps = doHorizontalBorders && index !== 0 ? rowBorder : {};
return (
<Box
as="tr"
bg={bg}
css={{ '& > td': { color } }}
fontWeight={highlight ? 'bold' : undefined}
_hover={{
cursor: 'pointer',
backgroundColor: highlight ? `${highlightBg}.${alphaHover}` : hoverBg,
}}
{...borderProps}
{...rest}
/>
);
};