UNPKG

eventx-design-system

Version:
64 lines (61 loc) 1.74 kB
import { jsx as _jsx } from "react/jsx-runtime"; import styled, { css } from 'styled-components'; import { colors, spacing, borderRadius, shadows, transitions } from '../tokens/design-tokens'; // Estilos base do card const baseCardStyles = css ` background-color: ${colors.neutral[50]}; border-radius: ${borderRadius.lg}; transition: all ${transitions.duration[200]} ${transitions.easing.inOut}; box-sizing: border-box; `; // Variantes do card const variantStyles = { default: css ` box-shadow: ${shadows.sm}; border: 1px solid ${colors.neutral[200]}; `, elevated: css ` box-shadow: ${shadows.lg}; border: none; `, outlined: css ` box-shadow: none; border: 2px solid ${colors.neutral[300]}; `, }; // Tamanhos de padding const paddingStyles = { sm: css ` padding: ${spacing[3]}; `, md: css ` padding: ${spacing[6]}; `, lg: css ` padding: ${spacing[8]}; `, xl: css ` padding: ${spacing[12]}; `, }; // Estilos interativos const interactiveStyles = css ` cursor: pointer; &:hover { transform: translateY(-2px); box-shadow: ${shadows.xl}; } &:active { transform: translateY(0); } `; const StyledCard = styled.div ` ${baseCardStyles} ${({ variant = 'default' }) => variantStyles[variant]} ${({ padding = 'md' }) => paddingStyles[padding]} ${({ interactive }) => interactive && interactiveStyles} `; export const Card = ({ variant = 'default', padding = 'md', children, className, onClick, interactive = false, ...props }) => { return (_jsx(StyledCard, { variant: variant, padding: padding, className: className, onClick: onClick, interactive: interactive, ...props, children: children })); }; Card.displayName = 'Card';