@@ -3,8 +3,13 @@ import clsx from "clsx";
3
3
import HelperMessage from "./HelperMessage" ;
4
4
import "./Input.scss" ;
5
5
6
- export type InputVariants = "general" | "success" | "error" ;
7
- interface InputProps
6
+ export type InputVariants =
7
+ | "general"
8
+ | "success"
9
+ | "error"
10
+ | "warning"
11
+ | "disabled" ;
12
+ interface InputProps
8
13
extends Omit < ComponentProps < "input" > , "style" | "placeholder" > {
9
14
label ?: string ;
10
15
leftPlaceholder ?: ReactNode ;
@@ -15,15 +20,19 @@ export type InputVariants = "general" | "success" | "error";
15
20
}
16
21
17
22
const InputVariant : Record < InputVariants , string > = {
18
- general : "deriv-input--field__general" ,
19
- success : "deriv-input--field__success" ,
20
- error : "deriv-input--field__error" ,
23
+ general : "deriv-input--general" ,
24
+ success : "deriv-input--success" ,
25
+ warning : "deriv-input--general" ,
26
+ error : "deriv-input--error" ,
27
+ disabled : "deriv-input--disabled" ,
21
28
} ;
22
29
23
30
const LabelVariant : Record < InputVariants , string > = {
24
- general : "deriv-input--label__general" ,
25
- success : "deriv-input--label__success" ,
26
- error : "deriv-input--label__error" ,
31
+ general : "deriv-input__label--general" ,
32
+ success : "deriv-input__label--success" ,
33
+ warning : "deriv-input__label--general" ,
34
+ error : "deriv-input__label--error" ,
35
+ disabled : "deriv-input__label--disabled" ,
27
36
} ;
28
37
29
38
export const Input = ( {
@@ -39,33 +48,42 @@ export const Input = ({
39
48
...rest
40
49
} : InputProps ) => {
41
50
return (
42
- < div className = "deriv-input" >
51
+ < div
52
+ className = { clsx (
53
+ "deriv-input" ,
54
+ className ,
55
+ InputVariant [ error ? "error" : variant ] ,
56
+ {
57
+ "deriv-input--disabled" : disabled ,
58
+ }
59
+ ) }
60
+ >
43
61
{ leftPlaceholder && (
44
- < div className = "deriv-input--left -content" > { leftPlaceholder } </ div >
62
+ < div className = "deriv-input__left -content" > { leftPlaceholder } </ div >
45
63
) }
46
64
< input
47
65
placeholder = { label }
48
- className = { clsx (
49
- "deriv-input--field" ,
50
- className ,
51
- InputVariant [ error ? "error" : variant ]
52
- ) }
66
+ className = "deriv-input__field"
53
67
id = { id }
68
+ disabled = { disabled }
54
69
{ ...rest }
55
70
/>
56
71
< label
57
72
className = { clsx (
58
- "deriv-input--label" ,
59
- LabelVariant [ error ? "error" : variant ]
73
+ "deriv-input__label" ,
74
+ LabelVariant [ error ? "error" : variant ] ,
75
+ {
76
+ "deriv-input--label--disabled" : disabled ,
77
+ }
60
78
) }
61
79
htmlFor = { id }
62
80
>
63
81
{ label }
64
82
</ label >
65
83
{ rightPlaceholder && (
66
- < div className = "deriv-input--right -content" > { rightPlaceholder } </ div >
84
+ < div className = "deriv-input__right -content" > { rightPlaceholder } </ div >
67
85
) }
68
- < div className = "deriv-input--helper -message" >
86
+ < div className = "deriv-input__helper -message" >
69
87
{ message && (
70
88
< HelperMessage
71
89
message = { message }
0 commit comments