PluginProbe
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO / 1.4.8
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO v1.4.8
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.8, at backend/views/components/Main/components/Button.jsx

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