PluginProbe
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO / 1.4.20
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO v1.4.20
1.4.21 1.4.20 1.4.19 1.4.18 1.4.17 1.4.16 1.4.15 1.4.14 1.4.13 1.4.12 1.4.11 1.4.10 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.54 1.3.53 1.3.52 All 184 releases
disco / backend / views / components / Main / components / Button.jsx

Button.jsx in Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO 1.4.20, at backend/views/components/Main/components/Button.jsx

67 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import cn from '../utilities/cn';
2
3 const Button = ({
4 testId = '',
5 disabled = false,
6 className = '',
7 children = '',
8 type = 'primary',
9 icon = '',
10 iconPositionLeft = true,
11 onClick = () => {},
12 }) => {
13 const baseClassNames =
14 'disco:text-base! disco:shadow-custom disco:border disco:rounded-lg disco:px-8 disco:py-2.5 disco:flex disco:items-center disco:gap-2 disco:outline-hidden disco:font-medium disco:transition-colors disco:duration-200';
15
16 const getTypeClassNames = () => {
17 switch (type) {
18 case 'primary':
19 return cn(
20 baseClassNames,
21 'disco:text-white disco:bg-primary disco:border-primary disco:hover:bg-primary-dark disco:hover:border-primary-dark'
22 );
23
24 case 'secondary':
25 return cn(
26 baseClassNames,
27 'disco:text-grey-dark disco:bg-gray-100 disco:border-gray-200 disco:hover:bg-gray-200 disco:hover:border-gray-300'
28 );
29
30 case 'transparent':
31 return cn(
32 baseClassNames,
33 'disco:text-black disco:bg-transparent disco:border-primary'
34 );
35
36 default:
37 return baseClassNames;
38 }
39 };
40
41 let buttonClasses = `${getTypeClassNames()} ${className}`;
42
43 // Handle icon position (right/left)
44 if (!iconPositionLeft) {
45 buttonClasses += ' disco:flex-row-reverse!';
46 }
47
48 // Apply disabled styles
49 if (disabled) {
50 buttonClasses += ' disco:opacity-50 disco:cursor-not-allowed';
51 }
52
53 return (
54 <button
55 data-testid={testId}
56 disabled={disabled}
57 onClick={!disabled ? onClick : () => {}}
58 className={buttonClasses}
59 >
60 {icon && icon}
61 {children}
62 </button>
63 );
64 };
65
66 export default Button;
67