REFACTOR external service and improve websocket training
This commit is contained in:
@@ -2,7 +2,7 @@ import React, { forwardRef, ButtonHTMLAttributes } from 'react';
|
||||
import { clsx } from 'clsx';
|
||||
|
||||
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
||||
variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'success' | 'warning';
|
||||
variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'success' | 'warning' | 'gradient';
|
||||
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
||||
isLoading?: boolean;
|
||||
isFullWidth?: boolean;
|
||||
@@ -29,8 +29,7 @@ const Button = forwardRef<HTMLButtonElement, ButtonProps>(({
|
||||
'transition-all duration-200 ease-in-out',
|
||||
'focus:outline-none focus:ring-2 focus:ring-offset-2',
|
||||
'disabled:opacity-50 disabled:cursor-not-allowed',
|
||||
'border rounded-md shadow-sm',
|
||||
'hover:shadow-md active:shadow-sm'
|
||||
'border rounded-md',
|
||||
];
|
||||
|
||||
const variantClasses = {
|
||||
@@ -38,19 +37,22 @@ const Button = forwardRef<HTMLButtonElement, ButtonProps>(({
|
||||
'bg-[var(--color-primary)] text-[var(--text-inverse)] border-[var(--color-primary)]',
|
||||
'hover:bg-[var(--color-primary-dark)] hover:border-[var(--color-primary-dark)]',
|
||||
'focus:ring-[var(--color-primary)]/20',
|
||||
'active:bg-[var(--color-primary-dark)]'
|
||||
'active:bg-[var(--color-primary-dark)]',
|
||||
'shadow-sm hover:shadow-md active:shadow-sm'
|
||||
],
|
||||
secondary: [
|
||||
'bg-[var(--color-secondary)] text-[var(--text-inverse)] border-[var(--color-secondary)]',
|
||||
'hover:bg-[var(--color-secondary-dark)] hover:border-[var(--color-secondary-dark)]',
|
||||
'focus:ring-[var(--color-secondary)]/20',
|
||||
'active:bg-[var(--color-secondary-dark)]'
|
||||
'active:bg-[var(--color-secondary-dark)]',
|
||||
'shadow-sm hover:shadow-md active:shadow-sm'
|
||||
],
|
||||
outline: [
|
||||
'bg-transparent text-[var(--color-primary)] border-[var(--color-primary)]',
|
||||
'hover:bg-[var(--color-primary)] hover:text-[var(--text-inverse)]',
|
||||
'focus:ring-[var(--color-primary)]/20',
|
||||
'active:bg-[var(--color-primary-dark)] active:border-[var(--color-primary-dark)]'
|
||||
'active:bg-[var(--color-primary-dark)] active:border-[var(--color-primary-dark)]',
|
||||
'shadow-sm hover:shadow-md active:shadow-sm'
|
||||
],
|
||||
ghost: [
|
||||
'bg-transparent text-[var(--text-primary)] border-transparent',
|
||||
@@ -62,19 +64,30 @@ const Button = forwardRef<HTMLButtonElement, ButtonProps>(({
|
||||
'bg-[var(--color-error)] text-[var(--text-inverse)] border-[var(--color-error)]',
|
||||
'hover:bg-[var(--color-error-dark)] hover:border-[var(--color-error-dark)]',
|
||||
'focus:ring-[var(--color-error)]/20',
|
||||
'active:bg-[var(--color-error-dark)]'
|
||||
'active:bg-[var(--color-error-dark)]',
|
||||
'shadow-sm hover:shadow-md active:shadow-sm'
|
||||
],
|
||||
success: [
|
||||
'bg-[var(--color-success)] text-[var(--text-inverse)] border-[var(--color-success)]',
|
||||
'hover:bg-[var(--color-success-dark)] hover:border-[var(--color-success-dark)]',
|
||||
'focus:ring-[var(--color-success)]/20',
|
||||
'active:bg-[var(--color-success-dark)]'
|
||||
'active:bg-[var(--color-success-dark)]',
|
||||
'shadow-sm hover:shadow-md active:shadow-sm'
|
||||
],
|
||||
warning: [
|
||||
'bg-[var(--color-warning)] text-[var(--text-inverse)] border-[var(--color-warning)]',
|
||||
'hover:bg-[var(--color-warning-dark)] hover:border-[var(--color-warning-dark)]',
|
||||
'focus:ring-[var(--color-warning)]/20',
|
||||
'active:bg-[var(--color-warning-dark)]'
|
||||
'active:bg-[var(--color-warning-dark)]',
|
||||
'shadow-sm hover:shadow-md active:shadow-sm'
|
||||
],
|
||||
gradient: [
|
||||
'bg-[var(--color-primary)] text-white border-[var(--color-primary)]',
|
||||
'hover:bg-[var(--color-primary-dark)] hover:border-[var(--color-primary-dark)]',
|
||||
'focus:ring-[var(--color-primary)]/20',
|
||||
'shadow-lg hover:shadow-xl',
|
||||
'transform hover:scale-105',
|
||||
'font-semibold'
|
||||
]
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user