import { ReactNode, HTMLAttributes, ButtonHTMLAttributes, InputHTMLAttributes } from 'react';
export interface BaseProps {
className?: string;
children?: ReactNode;
}
export interface ButtonProps extends ButtonHTMLAttributes, BaseProps {
variant?: 'primary' | 'secondary' | 'ghost';
size?: 'sm' | 'md' | 'lg';
accent?: boolean;
loading?: boolean;
}
export interface ToggleSwitchProps extends BaseProps {
checked?: boolean;
onChange?: (checked: boolean) => void;
disabled?: boolean;
label?: string;
accent?: boolean;
}
export interface SliderProps extends BaseProps {
value?: number;
onChange?: (value: number) => void;
min?: number;
max?: number;
step?: number;
disabled?: boolean;
label?: string;
accent?: boolean;
}
export interface InputProps extends InputHTMLAttributes, BaseProps {
label?: string;
error?: string;
variant?: 'default' | 'minimal';
}
export interface CardProps extends HTMLAttributes, BaseProps {
variant?: 'default' | 'glass' | 'dotted';
padding?: 'none' | 'sm' | 'md' | 'lg';
}
export interface ModalProps extends BaseProps {
open?: boolean;
onClose?: () => void;
title?: string;
}
export interface TabsProps extends BaseProps {
tabs: {
id: string;
label: string;
content: ReactNode;
}[];
activeTab?: string;
onTabChange?: (tabId: string) => void;
}
export interface TooltipProps extends BaseProps {
content: ReactNode;
position?: 'top' | 'bottom' | 'left' | 'right';
}
export interface BadgeProps extends BaseProps {
variant?: 'default' | 'accent' | 'outline';
size?: 'sm' | 'md';
}