PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 8.8.1
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v8.8.1
8.8.1 8.8.0 8.7.9 8.7.8 8.7.7 8.7.6 8.7.5 8.7.4 8.7.3 8.7.2 8.7.1 8.7.0 8.6.9 8.6.8 8.6.7 8.6.6 8.6.5 8.6.4 8.6.2 8.6.1 8.6.0 8.5.9 8.5.8 8.5.7 8.5.6 All 537 releases
chatbot / addons / automator / src / components / ui / Button.jsx

Button.jsx in WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services 8.8.1, at addons/automator/src/components/ui/Button.jsx

40 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import * as React from 'react'
2
3 const buttonVariants = (variant = 'default', size = 'default', className = '') => {
4 const base = "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive";
5
6 const variants = {
7 default: 'bg-primary text-primary-foreground hover:bg-primary/90',
8 destructive: 'bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',
9 outline: 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',
10 secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
11 ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',
12 link: 'text-primary underline-offset-4 hover:underline',
13 };
14
15 const sizes = {
16 default: 'h-9 px-4 py-2 has-[>svg]:px-3',
17 sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',
18 lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',
19 icon: 'size-9 flex items-center justify-center',
20 'icon-sm': 'size-8 flex items-center justify-center',
21 'icon-lg': 'size-10 flex items-center justify-center',
22 };
23
24 return `${base} ${variants[variant] || variants.default} ${sizes[size] || sizes.default} ${className}`;
25 };
26
27 const Button = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
28 const Comp = "button";
29 return (
30 <Comp
31 className={buttonVariants(variant, size, className)}
32 ref={ref}
33 {...props}
34 />
35 );
36 });
37 Button.displayName = "Button";
38
39 export { Button, buttonVariants };
40