All files / design-system/components Divider.tsx

100% Statements 4/4
100% Branches 3/3
100% Functions 1/1
100% Lines 4/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44    12x                                                     4x 3x     1x                    
import { styled, GetProps, YStack, XStack, Text } from 'tamagui';
 
const DividerLine = styled(YStack, {
  name: 'Divider',
  backgroundColor: '$borderColor',
 
  variants: {
    orientation: {
      horizontal: { height: 1, width: '100%' },
      vertical: { width: 1, height: '100%' },
    },
    thickness: {
      thin: {},
      medium: {},
      thick: {},
    },
  } as const,
 
  defaultVariants: {
    orientation: 'horizontal',
    thickness: 'thin',
  },
});
 
type DividerProps = GetProps<typeof DividerLine> & {
  label?: string;
};
 
export function Divider({ label, orientation = 'horizontal', ...props }: DividerProps) {
  if (!label) {
    return <DividerLine orientation={orientation} {...props} />;
  }
 
  return (
    <XStack alignItems="center" gap="$3">
      <DividerLine orientation="horizontal" flex={1} {...props} />
      <Text fontSize="$3" color="$foregroundSubtle">
        {label}
      </Text>
      <DividerLine orientation="horizontal" flex={1} {...props} />
    </XStack>
  );
}