File size: 885 Bytes
b190b45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import React, { ButtonHTMLAttributes, ReactNode } from 'react';

interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
  variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'success';
  size?: 'sm' | 'md' | 'lg';
  icon?: boolean;
  children: ReactNode;
}

export const Button: React.FC<ButtonProps> = ({

  variant = 'primary',

  size = 'md',

  icon = false,

  className = '',

  children,

  ...props

}) => {
  const baseClass = 'btn';
  const variantClass = `btn-${variant}`;
  const sizeClass = size !== 'md' ? `btn-${size}` : '';
  const iconClass = icon ? 'btn-icon' : '';

  const classes = [
    baseClass,
    variantClass,
    sizeClass,
    iconClass,
    className
  ].filter(Boolean).join(' ');

  return (
    <button className={classes} {...props}>

      {children}

    </button>
  );
};

export default Button;