/
ivaninvv
/
dashboard
Обзор
Документация
Войти
/
ivaninvv
/
dashboard
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
gemini-react
react/components/ui/button.tsx
37 строк
1 KB
VladimirIvanin
react
30 ноя 2025, 03:42
30 ноя 2025, 03:42
45b555a
Код
Авторство
О чём код?
import React from 'react'; const buttonVariants = { default: "bg-blue-600 text-white hover:bg-blue-700 shadow-sm", ghost: "hover:bg-slate-100 hover:text-slate-900", outline: "border border-slate-200 bg-white hover:bg-slate-100 hover:text-slate-900", }; interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> { variant?: keyof typeof buttonVariants; size?: 'sm' | 'md' | 'lg' | 'icon'; } export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(({ className, variant = "default", size = "md", ...props }, ref) => { const sizeClasses = { sm: "h-8 px-3 text-xs", md: "h-9 px-4 py-2", lg: "h-10 px-8", icon: "h-9 w-9 p-0 flex items-center justify-center", }; const classes = [ "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", buttonVariants[variant], sizeClasses[size], className ].filter(Boolean).join(' '); return ( <button ref={ref} className={classes} {...props} /> ); }); Button.displayName = "Button";