1
+ import LoadingOutlined from "@ant-design/icons/LoadingOutlined"
1
2
import { Slot } from "@radix-ui/react-slot"
2
3
import * as React from "react"
3
4
4
5
import { cn } from "../clsx"
5
- import { LoadingOutlined } from "@loft-enterprise/icons"
6
6
7
7
export type ButtonStyles =
8
8
| {
@@ -18,7 +18,7 @@ export type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
18
18
asChild ?: boolean
19
19
loading ?: boolean
20
20
size ?: "default" | "large" | "small"
21
- onClickAsync ?: ( e : React . MouseEvent < HTMLElement , MouseEvent > ) => Promise < void > | undefined
21
+ onClickAsync ?: ( e : React . MouseEvent < HTMLElement , MouseEvent > ) => unknown
22
22
} & ButtonStyles
23
23
24
24
const Button = React . forwardRef < HTMLButtonElement , ButtonProps > (
@@ -63,35 +63,36 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
63
63
data-loading = { isLoading || loading }
64
64
type = { type }
65
65
className = { cn (
66
- "ring-offset-background group inline-flex cursor-pointer select-none items-center justify-center gap-2 whitespace-nowrap rounded border transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-offset-2 disabled:pointer-events-none data-[loading=true]:pointer-events-none magic-[disabled,data-[loading=true]]:opacity-60" ,
66
+ "ring-offset-background group inline-flex cursor-pointer select-none items-center justify-center gap-2 whitespace-nowrap rounded border font-semibold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-offset-2 disabled:pointer-events-none data-[loading=true]:pointer-events-none magic-[disabled,data-[loading=true]]:opacity-60" ,
67
67
{
68
68
"px-2 py-1 text-sm" : size === "default" ,
69
69
"px-3 py-2 text-base" : size === "large" ,
70
70
"px-2 py-0.5 text-xs" : size === "small" ,
71
- "border-transparent font-bold text-white" : variant === "filled" ,
71
+ "border-transparent text-white" : variant === "filled" ,
72
72
"ring-danger-light" : appearance === "danger" ,
73
73
"ring-success-light" : appearance === "success" ,
74
74
"ring-warning-light" : appearance === "warning" ,
75
+ "font-normal" : variant === "link" ,
75
76
76
77
"bg-primary-main hover:bg-primary-light focus:bg-primary-light active:bg-primary-dark data-[loading=true]:bg-primary-light" :
77
78
appearance === "primary" && variant === "filled" ,
78
79
79
- "border border-primary-main bg-transparent font-bold text-primaryColor-main hover:border-primary-light hover:text-primaryColor-light focus:text-primaryColor-light active:border-primary-dark active:text-primaryColor-dark magic-[disabled,data-[loading=true]]:border-primary-light" :
80
+ "border border-primary-main bg-transparent text-primaryColor-main hover:border-primary-light hover:text-primaryColor-light focus:text-primaryColor-light active:border-primary-dark active:text-primaryColor-dark magic-[disabled,data-[loading=true]]:border-primary-light" :
80
81
appearance === "primary" && variant === "outlined" ,
81
82
82
- "border border-divider-main bg-transparent font-bold text-secondary hover:border-divider-main hover:text-primaryColor-light focus:border-divider-main focus:text-primaryColor-light active:border-primary-dark active:text-primaryColor-dark magic-[disabled,data-[loading=true]]:border-primary-light magic-[disabled,data-[loading=true]]:text-primaryColor-light" :
83
+ "border border-divider-main bg-transparent text-secondary hover:border-divider-main hover:text-primaryColor-light focus:border-divider-main focus:text-primaryColor-light active:border-primary-dark active:text-primaryColor-dark magic-[disabled,data-[loading=true]]:border-primary-light magic-[disabled,data-[loading=true]]:text-primaryColor-light" :
83
84
appearance === "primary" && variant === "tertiary" ,
84
85
85
- "border-transparent bg-transparent font-bold text-primaryColor-main hover:bg-neutral-extra-light hover:text-primaryColor-light focus:bg-neutral-extra-light focus:text-primaryColor-light active:bg-neutral-light active:text-primaryColor-dark magic-[disabled,data-[loading=true]]:border magic-[disabled,data-[loading=true]]:border-primary-main" :
86
+ "border-transparent bg-transparent text-primaryColor-main hover:bg-neutral-extra-light hover:text-primaryColor-light focus:bg-neutral-extra-light focus:text-primaryColor-light active:bg-neutral-light active:text-primaryColor-dark magic-[disabled,data-[loading=true]]:border magic-[disabled,data-[loading=true]]:border-primary-main" :
86
87
appearance === "primary" && variant === "ghost" ,
87
88
88
89
"border-0 bg-transparent text-primaryColor-main underline hover:text-primaryColor-light focus:text-primaryColor-light active:text-primaryColor-dark" :
89
90
appearance === "primary" && variant === "link" ,
90
91
91
- "bg-danger-main hover:bg-danger-light focus:bg-danger-light active:bg-danger-dark disabled:bg-danger-light data-[loading=true]:bg-danger-light" :
92
+ "bg-danger-main hover:bg-danger-light focus:bg-danger-light active:bg-danger-dark disabled:bg-danger-light data-[loading=true]:bg-danger-light" :
92
93
appearance === "danger" && variant === "filled" ,
93
94
94
- "border border-danger-main bg-transparent font-bold text-danger-main hover:border-danger-light hover:text-danger-light focus:text-danger-light active:border-danger-dark active:text-danger-dark disabled:border-danger-light data-[loading=true]:border-danger-light" :
95
+ "border border-danger-main bg-transparent text-danger-main hover:border-danger-light hover:text-danger-light focus:text-danger-light active:border-danger-dark active:text-danger-dark disabled:border-danger-light data-[loading=true]:border-danger-light" :
95
96
appearance === "danger" && variant === "outlined" ,
96
97
97
98
"border-transparent bg-transparent text-danger-main hover:bg-neutral-extra-light focus:bg-neutral-extra-light active:bg-neutral-light active:text-danger-dark magic-[disabled,data-[loading=true]]:border magic-[disabled,data-[loading=true]]:border-danger-main" :
@@ -103,13 +104,13 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
103
104
"bg-success-main hover:bg-success-light focus:bg-success-light active:bg-success-dark disabled:bg-success-light data-[loading=true]:bg-success-light" :
104
105
appearance === "success" && variant === "filled" ,
105
106
106
- "border border-success-main bg-transparent font-bold text-success-main hover:border-success-light hover:text-success-light focus:text-success-light active:border-success-dark active:text-success-dark disabled:border-success-light data-[loading=true]:border-success-light" :
107
+ "border border-success-main bg-transparent text-success-main hover:border-success-light hover:text-success-light focus:text-success-light active:border-success-dark active:text-success-dark disabled:border-success-light data-[loading=true]:border-success-light" :
107
108
appearance === "success" && variant === "outlined" ,
108
109
109
110
"bg-warning-main hover:bg-warning-light focus:bg-warning-light active:bg-warning-dark disabled:bg-warning-light data-[loading=true]:bg-warning-light" :
110
111
appearance === "warning" && variant === "filled" ,
111
112
112
- "border border-warning-main bg-transparent font-bold text-warning-main hover:border-warning-light hover:text-warning-light focus:text-warning-light active:border-warning-dark active:text-warning-dark disabled:border-warning-light data-[loading=true]:border-warning-light" :
113
+ "border border-warning-main bg-transparent text-warning-main hover:border-warning-light hover:text-warning-light focus:text-warning-light active:border-warning-dark active:text-warning-dark disabled:border-warning-light data-[loading=true]:border-warning-light" :
113
114
appearance === "warning" && variant === "outlined" ,
114
115
"bg-neutral-main text-white hover:bg-neutral-light focus:bg-neutral-light active:bg-neutral-dark disabled:bg-neutral-main data-[loading=true]:bg-neutral-main" :
115
116
appearance === "neutral" && variant === "filled" ,
0 commit comments