/* * Copyright (c) 2015 Nordic Semiconductor ASA * * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause */ import React from 'react'; import classNames from '../utils/classNames'; type PickedCardTitleProps = 'ref' | 'className'; interface CardTitleProps extends Pick, PickedCardTitleProps> { cardTitle: React.ReactNode; cardSubtitle?: React.ReactNode; cardTitleClassName?: string; cardSubtitleClassName?: string; } type CardTitleComponent = React.FC; const CardTitle: CardTitleComponent = ({ className, cardTitle, cardSubtitle, ...attrs }) => { if (cardSubtitle) { return (

{cardTitle}

{cardSubtitle}

); } return (

{cardTitle}

); }; type PickedCardHeaderProps = | 'ref' | 'className' | 'onPointerEnter' | 'onPointerLeave'; type CardHeaderProps = Pick< React.ComponentPropsWithRef<'header'>, PickedCardHeaderProps >; interface CardHeaderComponent extends React.FC { Title: CardTitleComponent; } const CardHeader: CardHeaderComponent = ({ children, className, ...attrs }) => (
{children}
); CardHeader.Title = CardTitle; type PickedCardBodyProps = 'ref' | 'className'; type CardBodyProps = Pick< React.ComponentPropsWithRef<'div'>, PickedCardBodyProps >; type CardBodyComponent = React.FC; const CardBody: CardBodyComponent = ({ className, children, ...attrs }) => (
{children}
); type PickedCardProps = 'ref' | 'className'; type CardProps = Pick, PickedCardProps>; interface CardComponent extends React.FC { Header: CardHeaderComponent; Body: CardBodyComponent; } const Card: CardComponent = ({ children, className, ...attrs }) => (
{children}
); Card.Header = CardHeader; Card.Body = CardBody; export default Card;