All files / packages/components/src card.web.tsx

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

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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61                                                4825x                       6336x                                                
import type React from "react";
 
import {
	CardBody,
	CardFooter,
	CardHeader,
	Card as CardRaw,
} from "@heroui/card";
 
import { Divider } from "~components/divider";
 
export type Props = React.PropsWithChildren<{
	className?: string;
	testID?: string;
	bodyClassName?: string;
	header?: React.ReactNode;
	headerClassName?: string;
	footer?: React.ReactNode;
	footerClassName?: string;
	onPress?: () => void;
}>;
 
export const Card: React.FC<
	Props & { as?: React.ComponentProps<typeof CardRaw>["as"] }
> = ({
	className,
	testID,
	bodyClassName,
	header,
	headerClassName,
	footer,
	footerClassName,
	children,
	as,
	...props
}) => (
	<CardRaw
		data-testid={testID}
		className={className}
		as={as}
		isPressable={Boolean(props.onPress)}
		{...props}
	>
		{/* oxlint-disable-next-line typescript/strict-boolean-expressions */}
		{header ? (
			<>
				<CardHeader className={headerClassName}>{header}</CardHeader>
				<Divider />
			</>
		) : null}
		<CardBody className={bodyClassName}>{children}</CardBody>
		{/* oxlint-disable-next-line typescript/strict-boolean-expressions */}
		{footer ? (
			<>
				<Divider />
				<CardFooter className={footerClassName}>{footer}</CardFooter>
			</>
		) : null}
	</CardRaw>
);