import type { HTMLAttributes, RefAttributes } from 'react';
import React from 'react';
import { Heading } from '@shoptet/ui-core-web';
import type { SafeOmit } from '@shoptet/utils';
export interface InheritedDivProps
extends SafeOmit, 'children' | 'style'>, RefAttributes {}
export interface InheritedTitleProps
extends SafeOmit, 'children' | 'style'>, RefAttributes {}
// Card props
export interface CardOwnProps {
/**
* Content of the card.
*/
children: React.ReactNode;
/**
* Controls whether the card has a border.
* @default false
*/
border?: boolean;
}
export interface CardProps extends CardOwnProps, InheritedDivProps {}
// Card.Subcomponent props
export interface CardSubcomponentsOwnProps {
children: React.ReactNode;
}
export interface CardHeaderProps extends CardSubcomponentsOwnProps, InheritedDivProps {}
export interface CardFooterProps extends CardSubcomponentsOwnProps, InheritedDivProps {}
export interface CardContentProps extends CardSubcomponentsOwnProps, InheritedDivProps {}
export interface CardTitleProps extends CardSubcomponentsOwnProps, InheritedTitleProps {}
const CardHeader: React.FC = ({ children, ...rest }) => {
return (
{children}
);
};
const CardContent: React.FC = ({ children, ...rest }) => {
return (
{children}
);
};
const CardFooter: React.FC = ({ children, ...rest }) => {
return (
{children}
);
};
const CardTitle: React.FC = ({ children, ...rest }) => {
return (
{children}
);
};
export const Card = Object.assign(
function Card({ children, border = false, ...rest }: CardProps) {
return (
{children}
);
},
{
Header: Object.assign(CardHeader, {
displayName: 'Card.Header',
}),
Content: Object.assign(CardContent, {
displayName: 'Card.Content',
}),
Footer: Object.assign(CardFooter, {
displayName: 'Card.Footer',
}),
Title: Object.assign(CardTitle, {
displayName: 'Card.Title',
}),
}
);