UNPKG

react-vite-themes

Version:

A test/experimental React theme system created for learning purposes. Features atomic design components, SCSS variables, and dark/light theme support. Not intended for production use.

19 lines (18 loc) 1.56 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import React from 'react'; import { cn } from '../../../utils'; export const Card = ({ children, variant = 'neutral', style = 'elevated', padding = 'md', header, footer, isHoverable = false, image, className, ...props }) => { const cardClasses = cn('card', `card--${variant}`, `card--${style}`, `card--padding-${padding}`, isHoverable && 'card--hoverable', image && 'card--with-image', className); // Check if children contain absolutely positioned content const hasAbsoluteContent = React.Children.toArray(children).some((child) => React.isValidElement(child) && typeof child.props?.className === 'string' && child.props.className.includes('position-absolute')); return (_jsxs("div", { className: cardClasses, ...props, children: [image && (_jsx("div", { className: cn("card__image", image.containFit && "card__image--contain-fit"), children: _jsx("img", { src: image.src, alt: image.alt || '', style: { height: image.height, objectFit: image.objectFit || 'cover' } }) })), header && _jsx("div", { className: "card__header", children: header }), hasAbsoluteContent ? ( // Render children directly in card container for absolute positioning children) : ( // Render children in content div for normal cards _jsx("div", { className: "card__content", children: children })), footer && _jsx("div", { className: "card__footer", children: footer })] })); };