import React, { ReactNode, CSSProperties } from 'react'; import { Spacing } from './Box'; export interface PanelProps { children: ReactNode; variant?: 'default' | 'muted' | 'outline' | 'glass' | 'dark' | 'precision' | 'bordered' | 'elevated'; padding?: Spacing | number; onClick?: () => void; style?: CSSProperties; title?: string | ReactNode; actions?: ReactNode; description?: string; footer?: ReactNode; border?: boolean; rounded?: string; className?: string; borderColor?: string; bg?: string; } export function Panel({ children, variant = 'default', padding = 'md', onClick, style, title, actions, description, footer, border, rounded, className }: PanelProps) { const variantClasses = { default: 'bg-[var(--ui-color-bg-surface)] border border-[var(--ui-color-border-default)] shadow-sm', muted: 'bg-[var(--ui-color-bg-surface-muted)] border border-[var(--ui-color-border-muted)]', outline: 'bg-transparent border border-[var(--ui-color-border-default)]', glass: 'bg-white/[0.03] backdrop-blur-md border border-white/[0.05]', dark: 'bg-[var(--ui-color-bg-base)] border border-[var(--ui-color-border-default)]', precision: 'bg-[var(--ui-color-bg-surface)] border border-[var(--ui-color-border-default)] shadow-[inset_0_1px_0_0_rgba(255,255,255,0.02)]', bordered: 'bg-[var(--ui-color-bg-surface)] border border-[var(--ui-color-border-default)]', elevated: 'bg-[var(--ui-color-bg-surface)] border border-[var(--ui-color-border-default)] shadow-md', }; const paddingClasses = { none: 'p-0', xs: 'p-2', sm: 'p-4', md: 'p-6', lg: 'p-10', }; const getPaddingClass = (p: any) => { if (typeof p === 'string') return `p-${p}`; return ''; }; const interactiveClasses = onClick ? 'cursor-pointer hover:border-[var(--ui-color-border-bright)] transition-all duration-200 ease-in-out active:scale-[0.99]' : ''; return (
{description}
)}