All files / laravel-saas/resources/js/types index.ts

0% Statements 0/1
100% Branches 1/1
100% Functions 1/1
0% Lines 0/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107                                                                                                                                                                                                                     
export interface ButtonProps {
    variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'dark' | 'danger';
    size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
    rounded?: 'normal' | 'pill' | 'full';
    iconOnly?: boolean;
    startIcon?: React.ReactNode;
    endIcon?: React.ReactNode;
    disabled?: boolean;
    loading?: boolean;
    children?: React.ReactNode;
    onClick?: () => void;
    type?: 'button' | 'submit' | 'reset';
    className?: string;
}
 
export interface InputProps {
    type?: 'text' | 'email' | 'password' | 'number';
    placeholder?: string;
    value?: string;
    defaultValue?: string;
    disabled?: boolean;
    required?: boolean;
    error?: string;
    success?: boolean;
    label?: string;
    id?: string;
    name?: string;
    className?: string;
    autoComplete?: string;
    readOnly?: boolean;
    startIcon?: React.ReactNode;
    endIcon?: React.ReactNode;
    onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
    onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;
}
 
export interface SelectProps {
    options: { value: string; label: string }[];
    value?: string;
    defaultValue?: string;
    placeholder?: string;
    disabled?: boolean;
    error?: string;
    label?: string;
    id?: string;
    name?: string;
    className?: string;
    onChange?: (event: React.ChangeEvent<HTMLSelectElement>) => void;
}
 
export interface ModalProps {
    isOpen: boolean;
    onClose: () => void;
    title?: string;
    children: React.ReactNode;
    size?: 'sm' | 'md' | 'lg' | 'xl';
    className?: string;
}
 
export interface BadgeProps {
    variant?: 'default' | 'success' | 'warning' | 'error' | 'info';
    size?: 'sm' | 'md' | 'lg';
    children: React.ReactNode;
    className?: string;
}
 
// Dashboard Component Interfaces
export interface MetricCardProps {
    title: string;
    value: string | number;
    change?: number;
    changeType?: 'increase' | 'decrease' | 'neutral';
    icon?: React.ReactNode;
    className?: string;
}
 
export interface StatCardProps {
    title: string;
    value: string | number;
    trend: 'up' | 'down' | 'steady';
    trendValue: number;
    className?: string;
}
 
 
// Layout Component Interfaces
export interface SidebarProps {
    className?: string;
}
 
export interface HeaderProps {
    title?: string;
    className?: string;
}
 
export interface AuthenticatedLayoutProps {
    title?: string;
    className?: string;
    children: React.ReactNode;
}
 
// Re-export types from index.d.ts
export type { User, PageProps } from './index.d';
 
// Re-export billing types
export * from './billing';