diff options
Diffstat (limited to 'src/components/molecules/card/card-header.tsx')
| -rw-r--r-- | src/components/molecules/card/card-header.tsx | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/components/molecules/card/card-header.tsx b/src/components/molecules/card/card-header.tsx new file mode 100644 index 0000000..213d1bc --- /dev/null +++ b/src/components/molecules/card/card-header.tsx @@ -0,0 +1,32 @@ +import { + forwardRef, + type ForwardRefRenderFunction, + type ReactNode, +} from 'react'; +import { Header, type HeaderProps } from '../../atoms'; +import { useCardCover } from './card-provider'; +import styles from './card.module.scss'; + +export type CardHeaderProps = Omit<HeaderProps, 'children'> & { + /** + * The card header contents. + */ + children?: ReactNode; +}; + +const CardHeaderWithRef: ForwardRefRenderFunction< + HTMLElement, + CardHeaderProps +> = ({ children, className = '', ...props }, ref) => { + const cover = useCardCover(); + const headerClass = `${styles.header} ${className}`; + + return ( + <Header {...props} className={headerClass} ref={ref}> + {cover} + {children} + </Header> + ); +}; + +export const CardHeader = forwardRef(CardHeaderWithRef); |
