@colisweb/rescript-toolkit 4.27.3 → 4.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
type status = [#success | #error | #warning | #info]
|
|
2
|
-
|
|
2
|
+
type size = [#xs | #sm | #md]
|
|
3
3
|
@react.component
|
|
4
|
-
let make = (
|
|
4
|
+
let make = (
|
|
5
|
+
~title,
|
|
6
|
+
~description=?,
|
|
7
|
+
~status,
|
|
8
|
+
~className=?,
|
|
9
|
+
~icon: option<module(ReactIcons.Icon)>=?,
|
|
10
|
+
~size: size=#md,
|
|
11
|
+
~borderless=false,
|
|
12
|
+
) =>
|
|
5
13
|
<div
|
|
6
14
|
className={cx([
|
|
7
|
-
"
|
|
15
|
+
"flex border rounded-lg",
|
|
8
16
|
switch status {
|
|
9
17
|
| #success => "bg-success-50 border-success-500"
|
|
10
18
|
| #error => "bg-danger-50 border-danger-500"
|
|
@@ -12,15 +20,33 @@ let make = (~title, ~description=?, ~status, ~className=?) =>
|
|
|
12
20
|
| #info => "bg-info-50 border-info-500"
|
|
13
21
|
},
|
|
14
22
|
className->Option.getWithDefault(""),
|
|
23
|
+
switch size {
|
|
24
|
+
| #md => "p-4"
|
|
25
|
+
| #sm => "p-2"
|
|
26
|
+
| #xs => "p-1"
|
|
27
|
+
},
|
|
28
|
+
borderless ? "!border-none" : "",
|
|
15
29
|
])}>
|
|
16
|
-
{switch status {
|
|
17
|
-
| #success =>
|
|
18
|
-
|
|
19
|
-
| #
|
|
30
|
+
{switch (status, icon) {
|
|
31
|
+
| (#success, None) =>
|
|
32
|
+
<ReactIcons.MdCheckCircle size=28 className="text-success-600 flex-shrink-0" />
|
|
33
|
+
| (#success, Some(module(Icon))) => <Icon size=28 className="text-success-600 flex-shrink-0" />
|
|
34
|
+
| (#error, None) => <ReactIcons.MdWarning size=28 className="text-danger-600 flex-shrink-0" />
|
|
35
|
+
| (#error, Some(module(Icon))) => <Icon size=28 className="text-danger-600 flex-shrink-0" />
|
|
36
|
+
| (#warning, None) =>
|
|
20
37
|
<ReactIcons.FaExclamationTriangle size=28 className="text-warning-600 flex-shrink-0" />
|
|
21
|
-
| #
|
|
38
|
+
| (#warning, Some(module(Icon))) => <Icon size=28 className="text-warning-600 flex-shrink-0" />
|
|
39
|
+
| (#info, None) => <ReactIcons.FaInfoCircle size=28 className="text-info-600 flex-shrink-0" />
|
|
40
|
+
| (#info, Some(module(Icon))) => <Icon size=28 className="text-info-600 flex-shrink-0" />
|
|
22
41
|
}}
|
|
23
|
-
<div
|
|
42
|
+
<div
|
|
43
|
+
className={cx([
|
|
44
|
+
switch size {
|
|
45
|
+
| #md => "mx-3"
|
|
46
|
+
| #sm => "mx-2"
|
|
47
|
+
| #xs => "mx-1"
|
|
48
|
+
},
|
|
49
|
+
])}>
|
|
24
50
|
<div
|
|
25
51
|
className={cx([
|
|
26
52
|
description->Option.isSome ? "font-semibold" : "",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
type status = [#success | #error | #warning | #info]
|
|
2
|
+
type size = [#xs | #sm | #md]
|
|
2
3
|
|
|
3
4
|
@react.component
|
|
4
5
|
let make: (
|
|
@@ -6,4 +7,7 @@ let make: (
|
|
|
6
7
|
~description: React.element=?,
|
|
7
8
|
~status: status,
|
|
8
9
|
~className: string=?,
|
|
10
|
+
~icon: module(ReactIcons.Icon)=?,
|
|
11
|
+
~size: size=?,
|
|
12
|
+
~borderless: bool=?,
|
|
9
13
|
) => React.element
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
type size = [#xs | #sm | #md | #lg]
|
|
2
|
-
|
|
3
2
|
@react.component
|
|
4
3
|
let make = (
|
|
5
4
|
~value,
|
|
@@ -13,7 +12,7 @@ let make = (
|
|
|
13
12
|
) =>
|
|
14
13
|
<label
|
|
15
14
|
className={cx([
|
|
16
|
-
"flex items-center",
|
|
15
|
+
"flex items-center cw-radio",
|
|
17
16
|
disabled->Option.getWithDefault(false)
|
|
18
17
|
? "cursor-not-allowed opacity-75 text-gray-600"
|
|
19
18
|
: "cursor-pointer",
|
|
@@ -22,7 +21,7 @@ let make = (
|
|
|
22
21
|
<input
|
|
23
22
|
type_="radio"
|
|
24
23
|
value
|
|
25
|
-
className="opacity-0 w-0 h-0 peer"
|
|
24
|
+
className="opacity-0 w-0 h-0 peer cw-radio-input"
|
|
26
25
|
onChange={event => {
|
|
27
26
|
let target = ReactEvent.Form.target(event)
|
|
28
27
|
let value = target["value"]
|
|
@@ -35,9 +34,9 @@ let make = (
|
|
|
35
34
|
/>
|
|
36
35
|
<span
|
|
37
36
|
className={cx([
|
|
38
|
-
"bg-white
|
|
39
|
-
"peer-checked:border-primary-
|
|
40
|
-
"checkmark rounded-full border text-white mr-3 border-neutral-
|
|
37
|
+
"bg-white flex-shrink-0 cw-radio-circle",
|
|
38
|
+
"peer-checked:border-primary-700 peer-checked:text-primary-700",
|
|
39
|
+
"checkmark rounded-full border-2 text-white mr-3 border-neutral-700 transform transition-all ease-in-out flex items-center justify-center",
|
|
41
40
|
switch size {
|
|
42
41
|
| #xs => "w-4 h-4"
|
|
43
42
|
| #sm => "w-6 h-6"
|
|
@@ -45,14 +44,16 @@ let make = (
|
|
|
45
44
|
| #lg => "w-10 h-10"
|
|
46
45
|
},
|
|
47
46
|
])}>
|
|
48
|
-
<
|
|
49
|
-
className=
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
47
|
+
<span
|
|
48
|
+
className={cx([
|
|
49
|
+
"transform transition-all ease-in-out cw-radio-circle-content rounded-full",
|
|
50
|
+
switch size {
|
|
51
|
+
| #xs => "w-2 h-2"
|
|
52
|
+
| #sm => "w-3 h-3"
|
|
53
|
+
| #md => "w-4 h-4"
|
|
54
|
+
| #lg => "w-6 h-6"
|
|
55
|
+
},
|
|
56
|
+
])}
|
|
56
57
|
/>
|
|
57
58
|
</span>
|
|
58
59
|
{children->Option.getWithDefault(React.null)}
|
package/src/ui/styles.css
CHANGED
|
@@ -20,6 +20,13 @@
|
|
|
20
20
|
.cw-menu-item {
|
|
21
21
|
@apply text-sm text-left font-text hover:bg-primary-700 hover:text-white w-full p-2 rounded;
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
.cw-radio
|
|
25
|
+
.cw-radio-input:checked
|
|
26
|
+
~ .cw-radio-circle
|
|
27
|
+
> .cw-radio-circle-content {
|
|
28
|
+
@apply bg-primary-700;
|
|
29
|
+
}
|
|
23
30
|
}
|
|
24
31
|
|
|
25
32
|
:root {
|