@plastic-js/tsumiki 0.1.52 → 0.1.54
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/dist/components/Accordion.js +6 -6
- package/dist/components/Avatar.js +4 -4
- package/dist/components/BackToTop.js +3 -3
- package/dist/components/BottomNavigation.js +4 -4
- package/dist/components/BottomSheet.js +1 -1
- package/dist/components/Button.js +23 -26
- package/dist/components/Checkbox.js +11 -29
- package/dist/components/Clipboard.js +2 -2
- package/dist/components/CloseButton.js +4 -4
- package/dist/components/Collapsible.js +3 -3
- package/dist/components/ColorPicker.js +6 -6
- package/dist/components/Combobox.js +10 -9
- package/dist/components/{DateInput.js → DatePicker.js} +37 -22
- package/dist/components/Dialog.js +8 -8
- package/dist/components/Drawer.js +7 -7
- package/dist/components/Field.js +3 -3
- package/dist/components/Fieldset.js +2 -2
- package/dist/components/FileUpload.js +12 -12
- package/dist/components/FilterGroup.js +50 -115
- package/dist/components/Input.js +20 -19
- package/dist/components/Link.js +2 -2
- package/dist/components/Listbox.js +7 -6
- package/dist/components/Menu.js +8 -7
- package/dist/components/MoneyInput.js +1 -1
- package/dist/components/NumberInput.js +12 -13
- package/dist/components/Pagination.js +8 -8
- package/dist/components/Popover.js +5 -5
- package/dist/components/Progress.js +3 -3
- package/dist/components/RadioGroup.js +5 -10
- package/dist/components/RatingGroup.js +5 -5
- package/dist/components/SearchInput.js +4 -1
- package/dist/components/Select.js +52 -26
- package/dist/components/SelectPc.js +41 -30
- package/dist/components/SignaturePad.js +6 -7
- package/dist/components/Skeleton.js +1 -1
- package/dist/components/Slider.js +7 -7
- package/dist/components/Spinner.js +1 -1
- package/dist/components/Steps.js +23 -23
- package/dist/components/Switch.js +19 -10
- package/dist/components/Tabs.js +5 -5
- package/dist/components/TagsInput.js +6 -6
- package/dist/components/Toast.js +14 -14
- package/dist/components/Toggle.js +7 -7
- package/dist/components/ToggleGroup.js +19 -8
- package/dist/components/Tour.js +3 -3
- package/dist/components/TreeView.js +5 -5
- package/dist/index.js +2 -2
- package/dist/tsumiki.css +1 -1
- package/docs/api.md +51 -139
- package/docs/component-api-pattern.md +2 -2
- package/docs/scroll-lock-issue.md +3 -3
- package/package.json +1 -1
- package/src/styles/color.css +42 -0
- package/src/styles/semantic.css +212 -0
- package/src/styles/shadow.css +1 -0
- package/src/styles/theme.css +14 -0
- package/src/styles/tokens.css +1 -0
|
@@ -13,7 +13,7 @@ var rootBaseClass = css({
|
|
|
13
13
|
});
|
|
14
14
|
var variantClasses = {
|
|
15
15
|
solid: css({
|
|
16
|
-
backgroundColor: "var(--tsu-
|
|
16
|
+
backgroundColor: "var(--tsu-bg-control)",
|
|
17
17
|
border: "1px solid transparent",
|
|
18
18
|
"&:focus-within": {
|
|
19
19
|
backgroundColor: "var(--tsu-focus-bg)",
|
|
@@ -21,7 +21,7 @@ var variantClasses = {
|
|
|
21
21
|
}
|
|
22
22
|
}),
|
|
23
23
|
outline: css({
|
|
24
|
-
border: "1px solid var(--tsu-accent-
|
|
24
|
+
border: "1px solid var(--tsu-accent-outline-border)",
|
|
25
25
|
"&:focus-within": {
|
|
26
26
|
backgroundColor: "var(--tsu-focus-bg)",
|
|
27
27
|
borderColor: "var(--tsu-focus-border)"
|
|
@@ -29,8 +29,8 @@ var variantClasses = {
|
|
|
29
29
|
})
|
|
30
30
|
};
|
|
31
31
|
var disabledClass = css({
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
opacity: "var(--tsu-disabled-opacity)",
|
|
33
|
+
cursor: "not-allowed"
|
|
34
34
|
});
|
|
35
35
|
var sizeClasses = {
|
|
36
36
|
xs: css({
|
|
@@ -62,8 +62,7 @@ var inputClass = css({
|
|
|
62
62
|
color: "var(--tsu-fg)",
|
|
63
63
|
fontFamily: "inherit",
|
|
64
64
|
textAlign: "center",
|
|
65
|
-
padding: 0
|
|
66
|
-
"&:disabled": { color: "var(--tsu-disabled-fg)" }
|
|
65
|
+
padding: 0
|
|
67
66
|
});
|
|
68
67
|
var btnClass = css({
|
|
69
68
|
width: "28px",
|
|
@@ -73,14 +72,14 @@ var btnClass = css({
|
|
|
73
72
|
justifyContent: "center",
|
|
74
73
|
border: "none",
|
|
75
74
|
background: "transparent",
|
|
76
|
-
color: "var(--tsu-
|
|
75
|
+
color: "var(--tsu-text-secondary)",
|
|
77
76
|
cursor: "pointer",
|
|
78
77
|
fontFamily: "inherit",
|
|
79
78
|
fontSize: "14px",
|
|
80
79
|
touchAction: "manipulation",
|
|
81
|
-
"&:active:not(:disabled)": { backgroundColor: "var(--tsu-accent
|
|
80
|
+
"&:active:not(:disabled)": { backgroundColor: "var(--tsu-pressed-accent)" },
|
|
82
81
|
"&:disabled": {
|
|
83
|
-
color: "var(--tsu-
|
|
82
|
+
color: "var(--tsu-text-subtle)",
|
|
84
83
|
cursor: "not-allowed"
|
|
85
84
|
}
|
|
86
85
|
});
|
|
@@ -88,25 +87,25 @@ var read = (v) => typeof v === "function" ? v() : v;
|
|
|
88
87
|
var NumberInput$1 = (props = {}) => {
|
|
89
88
|
const [local, rest] = splitProps(mergeProps$2({
|
|
90
89
|
size: "md",
|
|
91
|
-
|
|
90
|
+
variant: "outline",
|
|
92
91
|
disabled: false
|
|
93
92
|
}, props), [
|
|
94
93
|
"size",
|
|
95
|
-
"
|
|
94
|
+
"variant",
|
|
96
95
|
"disabled",
|
|
97
96
|
"className",
|
|
98
97
|
"children"
|
|
99
98
|
]);
|
|
100
99
|
return () => {
|
|
101
100
|
const size = read(local.size);
|
|
102
|
-
const
|
|
101
|
+
const variant = read(local.variant) === "solid" ? "solid" : "outline";
|
|
103
102
|
const disabled = read(local.disabled);
|
|
104
103
|
return jsx(NumberInput.Root, mergeProps(rest, {
|
|
105
104
|
disabled,
|
|
106
105
|
get className() {
|
|
107
106
|
return [
|
|
108
107
|
rootBaseClass,
|
|
109
|
-
variantClasses[
|
|
108
|
+
variantClasses[variant],
|
|
110
109
|
sizeClasses[size],
|
|
111
110
|
disabled && disabledClass,
|
|
112
111
|
local.className
|
|
@@ -16,10 +16,10 @@ var itemClass = css({
|
|
|
16
16
|
minWidth: "var(--tsu-level-primary-md)",
|
|
17
17
|
height: "var(--tsu-level-primary-md)",
|
|
18
18
|
padding: "0 var(--tsu-spacing-sm)",
|
|
19
|
-
border: "1px solid var(--tsu-neutral-
|
|
19
|
+
border: "1px solid var(--tsu-neutral-outline-border)",
|
|
20
20
|
borderRadius: "var(--tsu-radius-l2-md)",
|
|
21
|
-
backgroundColor: "var(--tsu-
|
|
22
|
-
color: "var(--tsu-
|
|
21
|
+
backgroundColor: "var(--tsu-bg-panel)",
|
|
22
|
+
color: "var(--tsu-text-secondary)",
|
|
23
23
|
fontSize: "var(--tsu-font-size-sm)",
|
|
24
24
|
fontWeight: "var(--tsu-font-weight-medium)",
|
|
25
25
|
cursor: "pointer",
|
|
@@ -27,12 +27,12 @@ var itemClass = css({
|
|
|
27
27
|
touchAction: "manipulation",
|
|
28
28
|
transition: "background-color var(--tsu-transition-fast), border-color var(--tsu-transition-fast)",
|
|
29
29
|
"&[data-selected]": {
|
|
30
|
-
backgroundColor: "var(--tsu-accent-
|
|
31
|
-
borderColor: "var(--tsu-accent-
|
|
32
|
-
color: "var(--tsu-
|
|
30
|
+
backgroundColor: "var(--tsu-accent-solid-bg)",
|
|
31
|
+
borderColor: "var(--tsu-accent-solid-bg)",
|
|
32
|
+
color: "var(--tsu-accent-solid-fg)"
|
|
33
33
|
},
|
|
34
34
|
"&:disabled, &[data-disabled]": {
|
|
35
|
-
opacity:
|
|
35
|
+
opacity: "var(--tsu-disabled-opacity)",
|
|
36
36
|
cursor: "not-allowed"
|
|
37
37
|
}
|
|
38
38
|
});
|
|
@@ -41,7 +41,7 @@ var ellipsisClass = css({
|
|
|
41
41
|
alignItems: "center",
|
|
42
42
|
justifyContent: "center",
|
|
43
43
|
width: "var(--tsu-level-primary-md)",
|
|
44
|
-
color: "var(--tsu-
|
|
44
|
+
color: "var(--tsu-text-subtle)",
|
|
45
45
|
fontSize: "var(--tsu-font-size-sm)",
|
|
46
46
|
userSelect: "none"
|
|
47
47
|
});
|
|
@@ -21,15 +21,15 @@ var positionerClass = css({
|
|
|
21
21
|
});
|
|
22
22
|
var contentClass = css({
|
|
23
23
|
padding: "var(--tsu-container-padding-sm)",
|
|
24
|
-
backgroundColor: "var(--tsu-
|
|
24
|
+
backgroundColor: "var(--tsu-bg-panel)",
|
|
25
25
|
borderRadius: "var(--tsu-radius-l2-md)",
|
|
26
26
|
boxShadow: "var(--tsu-shadow-lg)",
|
|
27
|
-
border: "1px solid var(--tsu-
|
|
27
|
+
border: "1px solid var(--tsu-border)",
|
|
28
28
|
animation: `${popoverIn} var(--tsu-transition-fast)`
|
|
29
29
|
});
|
|
30
30
|
var arrowClass = css({
|
|
31
31
|
"--arrow-size": "8px",
|
|
32
|
-
"--arrow-background": "var(--tsu-
|
|
32
|
+
"--arrow-background": "var(--tsu-bg-panel)"
|
|
33
33
|
});
|
|
34
34
|
var closeTriggerClass = css({
|
|
35
35
|
display: "flex",
|
|
@@ -44,7 +44,7 @@ var closeTriggerClass = css({
|
|
|
44
44
|
border: "none",
|
|
45
45
|
borderRadius: "var(--tsu-radius-l1-md)",
|
|
46
46
|
background: "transparent",
|
|
47
|
-
color: "var(--tsu-
|
|
47
|
+
color: "var(--tsu-text-secondary)",
|
|
48
48
|
cursor: "pointer",
|
|
49
49
|
touchAction: "manipulation"
|
|
50
50
|
});
|
|
@@ -59,7 +59,7 @@ var descriptionClass = css({
|
|
|
59
59
|
margin: 0,
|
|
60
60
|
marginTop: "4px",
|
|
61
61
|
fontSize: "var(--tsu-comp-font-size-sm)",
|
|
62
|
-
color: "var(--tsu-
|
|
62
|
+
color: "var(--tsu-text-secondary)",
|
|
63
63
|
lineHeight: 1.5
|
|
64
64
|
});
|
|
65
65
|
var Popover$1 = (props = {}) => {
|
|
@@ -19,13 +19,13 @@ var rootClass = css({
|
|
|
19
19
|
});
|
|
20
20
|
var trackClass = css({
|
|
21
21
|
width: "100%",
|
|
22
|
-
backgroundColor: "var(--tsu-
|
|
22
|
+
backgroundColor: "var(--tsu-bg-control)",
|
|
23
23
|
borderRadius: "999px",
|
|
24
24
|
overflow: "hidden"
|
|
25
25
|
});
|
|
26
26
|
var rangeClass = css({
|
|
27
27
|
height: "100%",
|
|
28
|
-
backgroundColor: "var(--tsu-accent-
|
|
28
|
+
backgroundColor: "var(--tsu-accent-solid-bg)",
|
|
29
29
|
borderRadius: "999px",
|
|
30
30
|
transition: "width var(--tsu-transition-normal)"
|
|
31
31
|
});
|
|
@@ -41,7 +41,7 @@ var stripedClass = css({
|
|
|
41
41
|
});
|
|
42
42
|
var labelClass = css({
|
|
43
43
|
fontSize: "var(--tsu-font-size-sm)",
|
|
44
|
-
color: "var(--tsu-
|
|
44
|
+
color: "var(--tsu-text-secondary)",
|
|
45
45
|
fontWeight: "var(--tsu-font-weight-medium)"
|
|
46
46
|
});
|
|
47
47
|
var sizeHeights = {
|
|
@@ -28,7 +28,7 @@ var itemClass = css({
|
|
|
28
28
|
touchAction: "manipulation",
|
|
29
29
|
"&:active": { backgroundColor: "transparent" },
|
|
30
30
|
"&[data-disabled]": {
|
|
31
|
-
|
|
31
|
+
opacity: "var(--tsu-disabled-opacity)",
|
|
32
32
|
cursor: "not-allowed"
|
|
33
33
|
}
|
|
34
34
|
});
|
|
@@ -36,8 +36,8 @@ var itemControlClass = css({
|
|
|
36
36
|
width: "20px",
|
|
37
37
|
height: "20px",
|
|
38
38
|
borderRadius: "50%",
|
|
39
|
-
border: "2px solid var(--tsu-accent-
|
|
40
|
-
background: "var(--tsu-
|
|
39
|
+
border: "2px solid var(--tsu-accent-outline-border)",
|
|
40
|
+
background: "var(--tsu-bg-panel)",
|
|
41
41
|
display: "flex",
|
|
42
42
|
alignItems: "center",
|
|
43
43
|
justifyContent: "center",
|
|
@@ -45,18 +45,13 @@ var itemControlClass = css({
|
|
|
45
45
|
touchAction: "manipulation",
|
|
46
46
|
transition: "border-color var(--tsu-transition-fast), background-color var(--tsu-transition-fast)",
|
|
47
47
|
"&:active": { backgroundColor: "transparent" },
|
|
48
|
-
"&[data-state=\"checked\"]": { borderColor: "var(--tsu-accent-
|
|
49
|
-
"&[data-disabled]": {
|
|
50
|
-
borderColor: "var(--tsu-disabled-border)",
|
|
51
|
-
background: "var(--tsu-disabled-bg)"
|
|
52
|
-
}
|
|
48
|
+
"&[data-state=\"checked\"]": { borderColor: "var(--tsu-accent-solid-bg)" }
|
|
53
49
|
});
|
|
54
50
|
var indicatorClass = css({
|
|
55
51
|
width: "10px",
|
|
56
52
|
height: "10px",
|
|
57
53
|
borderRadius: "50%",
|
|
58
|
-
background: "var(--tsu-accent-
|
|
59
|
-
"&[data-disabled]": { background: "var(--tsu-disabled-fg)" }
|
|
54
|
+
background: "var(--tsu-accent-solid-bg)"
|
|
60
55
|
});
|
|
61
56
|
var RadioGroup$1 = (props = {}) => {
|
|
62
57
|
const [local, rest] = splitProps(mergeProps$2({}, props), [
|
|
@@ -12,7 +12,7 @@ var rootClass = css({
|
|
|
12
12
|
var labelClass = css({
|
|
13
13
|
fontSize: "var(--tsu-comp-font-size-sm)",
|
|
14
14
|
fontWeight: "var(--tsu-font-weight-medium)",
|
|
15
|
-
color: "var(--tsu-
|
|
15
|
+
color: "var(--tsu-text-secondary)"
|
|
16
16
|
});
|
|
17
17
|
var controlClass = css({
|
|
18
18
|
display: "flex",
|
|
@@ -24,12 +24,12 @@ var itemClass = css({
|
|
|
24
24
|
padding: 0,
|
|
25
25
|
cursor: "pointer",
|
|
26
26
|
lineHeight: 0,
|
|
27
|
-
color: "var(--tsu-
|
|
27
|
+
color: "var(--tsu-border)",
|
|
28
28
|
transition: "color var(--tsu-transition-fast)",
|
|
29
|
-
"&[data-highlighted]": { color: "var(--tsu-warning-
|
|
30
|
-
"&[data-checked]": { color: "var(--tsu-warning-
|
|
29
|
+
"&[data-highlighted]": { color: "var(--tsu-warning-solid-bg)" },
|
|
30
|
+
"&[data-checked]": { color: "var(--tsu-warning-solid-bg)" },
|
|
31
31
|
"&[data-disabled]": {
|
|
32
|
-
opacity:
|
|
32
|
+
opacity: "var(--tsu-disabled-opacity)",
|
|
33
33
|
cursor: "not-allowed",
|
|
34
34
|
pointerEvents: "none"
|
|
35
35
|
}
|
|
@@ -21,7 +21,10 @@ var clearButtonClass = css({
|
|
|
21
21
|
width: "100%",
|
|
22
22
|
height: "100%"
|
|
23
23
|
},
|
|
24
|
-
"&:
|
|
24
|
+
"&:active": {
|
|
25
|
+
color: "var(--tsu-fg)",
|
|
26
|
+
backgroundColor: "var(--tsu-pressed)"
|
|
27
|
+
}
|
|
25
28
|
});
|
|
26
29
|
function SearchIcon() {
|
|
27
30
|
return _tmpl.cloneNode(true);
|
|
@@ -27,20 +27,32 @@ var triggerBaseClass = css({
|
|
|
27
27
|
fontFamily: "inherit",
|
|
28
28
|
textAlign: "left",
|
|
29
29
|
cursor: "pointer",
|
|
30
|
-
"&:focus-visible": { borderColor: "var(--tsu-accent-
|
|
30
|
+
"&:focus-visible": { borderColor: "var(--tsu-accent-outline-border-hover)" },
|
|
31
31
|
"&[data-disabled]": {
|
|
32
|
-
|
|
33
|
-
borderColor: "var(--tsu-disabled-border)",
|
|
34
|
-
color: "var(--tsu-disabled-fg)",
|
|
32
|
+
opacity: "var(--tsu-disabled-opacity)",
|
|
35
33
|
cursor: "not-allowed"
|
|
36
34
|
}
|
|
37
35
|
});
|
|
38
36
|
var triggerVariants = {
|
|
39
37
|
solid: css({
|
|
40
|
-
backgroundColor: "var(--tsu-
|
|
38
|
+
backgroundColor: "var(--tsu-bg-control)",
|
|
41
39
|
border: "1px solid transparent"
|
|
42
40
|
}),
|
|
43
|
-
outline: css({ border: "1px solid var(--
|
|
41
|
+
outline: css({ border: "1px solid var(--_sel-border)" })
|
|
42
|
+
};
|
|
43
|
+
var intentClasses = {
|
|
44
|
+
default: css({
|
|
45
|
+
"--_sel-border": "var(--tsu-accent-outline-border)",
|
|
46
|
+
"--_sel-border-focus": "var(--tsu-accent-outline-border-hover)"
|
|
47
|
+
}),
|
|
48
|
+
neutral: css({
|
|
49
|
+
"--_sel-border": "var(--tsu-neutral-outline-border)",
|
|
50
|
+
"--_sel-border-focus": "var(--tsu-neutral-outline-border-hover)"
|
|
51
|
+
}),
|
|
52
|
+
danger: css({
|
|
53
|
+
"--_sel-border": "var(--tsu-danger-outline-border)",
|
|
54
|
+
"--_sel-border-focus": "var(--tsu-danger-outline-border-hover)"
|
|
55
|
+
})
|
|
44
56
|
};
|
|
45
57
|
var sizeClasses = {
|
|
46
58
|
xs: css({
|
|
@@ -79,10 +91,10 @@ var triggerValueClass = css({
|
|
|
79
91
|
textOverflow: "ellipsis",
|
|
80
92
|
whiteSpace: "nowrap"
|
|
81
93
|
});
|
|
82
|
-
var triggerPlaceholderClass = css({ color: "var(--tsu-
|
|
94
|
+
var triggerPlaceholderClass = css({ color: "var(--tsu-text-secondary)" });
|
|
83
95
|
var triggerIndicatorClass = css({
|
|
84
96
|
flexShrink: 0,
|
|
85
|
-
color: "var(--tsu-
|
|
97
|
+
color: "var(--tsu-text-secondary)",
|
|
86
98
|
display: "flex",
|
|
87
99
|
"& svg": {
|
|
88
100
|
width: "16px",
|
|
@@ -113,12 +125,16 @@ var itemClass = css({
|
|
|
113
125
|
fontFamily: "inherit",
|
|
114
126
|
textAlign: "left",
|
|
115
127
|
cursor: "pointer",
|
|
116
|
-
"&:active": { background: "
|
|
117
|
-
"&[data-selected]": { background: "var(--tsu-accent
|
|
128
|
+
"&:active": { background: "var(--tsu-pressed)" },
|
|
129
|
+
"&[data-selected]": { background: "var(--tsu-pressed-accent)" },
|
|
130
|
+
"&:disabled": {
|
|
131
|
+
opacity: "var(--tsu-disabled-opacity)",
|
|
132
|
+
cursor: "not-allowed"
|
|
133
|
+
}
|
|
118
134
|
});
|
|
119
135
|
var itemIndicatorClass = css({
|
|
120
136
|
flexShrink: 0,
|
|
121
|
-
color: "var(--tsu-accent-
|
|
137
|
+
color: "var(--tsu-accent-solid-bg)",
|
|
122
138
|
display: "flex",
|
|
123
139
|
"& svg": {
|
|
124
140
|
width: "18px",
|
|
@@ -133,15 +149,15 @@ var filterInputClass = css({
|
|
|
133
149
|
width: "100%",
|
|
134
150
|
height: "42px",
|
|
135
151
|
padding: "0 36px 0 40px",
|
|
136
|
-
background: "var(--tsu-
|
|
137
|
-
border: "1px solid var(--
|
|
152
|
+
background: "var(--tsu-bg-panel)",
|
|
153
|
+
border: "1px solid var(--_sel-border)",
|
|
138
154
|
borderRadius: "10px",
|
|
139
155
|
color: "var(--tsu-fg)",
|
|
140
156
|
fontSize: "16px",
|
|
141
157
|
fontFamily: "inherit",
|
|
142
158
|
boxSizing: "border-box",
|
|
143
|
-
"&:focus": { borderColor: "var(--
|
|
144
|
-
"&::placeholder": { color: "var(--tsu-
|
|
159
|
+
"&:focus": { borderColor: "var(--_sel-border-focus)" },
|
|
160
|
+
"&::placeholder": { color: "var(--tsu-text-secondary)" },
|
|
145
161
|
"&::-webkit-search-cancel-button": { appearance: "none" }
|
|
146
162
|
});
|
|
147
163
|
var filterIconClass = css({
|
|
@@ -149,7 +165,7 @@ var filterIconClass = css({
|
|
|
149
165
|
left: "12px",
|
|
150
166
|
top: "50%",
|
|
151
167
|
transform: "translateY(-50%)",
|
|
152
|
-
color: "var(--tsu-
|
|
168
|
+
color: "var(--tsu-text-secondary)",
|
|
153
169
|
pointerEvents: "none",
|
|
154
170
|
display: "flex",
|
|
155
171
|
"& svg": {
|
|
@@ -171,7 +187,7 @@ var filterClearClass = css({
|
|
|
171
187
|
background: "none",
|
|
172
188
|
border: "none",
|
|
173
189
|
borderRadius: "6px",
|
|
174
|
-
color: "var(--tsu-
|
|
190
|
+
color: "var(--tsu-text-secondary)",
|
|
175
191
|
cursor: "pointer",
|
|
176
192
|
"& svg": {
|
|
177
193
|
width: "16px",
|
|
@@ -181,7 +197,7 @@ var filterClearClass = css({
|
|
|
181
197
|
var noResultsClass = css({
|
|
182
198
|
padding: "20px 14px",
|
|
183
199
|
textAlign: "center",
|
|
184
|
-
color: "var(--tsu-
|
|
200
|
+
color: "var(--tsu-text-secondary)",
|
|
185
201
|
fontSize: "14px"
|
|
186
202
|
});
|
|
187
203
|
var SelectContext = createContext(null);
|
|
@@ -196,7 +212,8 @@ var read = (source) => {
|
|
|
196
212
|
var Select = (props) => {
|
|
197
213
|
const [local, rest] = splitProps(mergeProps$1({
|
|
198
214
|
size: "md",
|
|
199
|
-
|
|
215
|
+
variant: "outline",
|
|
216
|
+
intent: "default"
|
|
200
217
|
}, props), [
|
|
201
218
|
"value",
|
|
202
219
|
"onValueChange",
|
|
@@ -211,7 +228,8 @@ var Select = (props) => {
|
|
|
211
228
|
"backdropClassName",
|
|
212
229
|
"backdropStyle",
|
|
213
230
|
"filter",
|
|
214
|
-
"
|
|
231
|
+
"variant",
|
|
232
|
+
"intent"
|
|
215
233
|
]);
|
|
216
234
|
const open = (v) => {
|
|
217
235
|
if (v === void 0) return read(local.open);
|
|
@@ -264,7 +282,11 @@ var Select = (props) => {
|
|
|
264
282
|
setValue,
|
|
265
283
|
disabled: () => local.disabled ?? false,
|
|
266
284
|
size: () => read(local.size),
|
|
267
|
-
|
|
285
|
+
variant: () => read(local.variant),
|
|
286
|
+
intent: () => {
|
|
287
|
+
const intent = read(local.intent);
|
|
288
|
+
return intent === "neutral" && read(local.variant) === "solid" ? "default" : intent;
|
|
289
|
+
},
|
|
268
290
|
backdropClassName: local.backdropClassName,
|
|
269
291
|
backdropStyle: local.backdropStyle,
|
|
270
292
|
filter: local.filter,
|
|
@@ -285,7 +307,7 @@ var SelectTrigger = (props) => {
|
|
|
285
307
|
]);
|
|
286
308
|
return jsx("div", mergeProps(() => part("trigger"), {
|
|
287
309
|
get className() {
|
|
288
|
-
return `${triggerBaseClass} ${triggerVariants[ctx.
|
|
310
|
+
return `${triggerBaseClass} ${triggerVariants[ctx.variant() === "solid" ? "solid" : "outline"]} ${intentClasses[ctx.intent()]} ${sizeClasses[ctx.size()] || ""} ${local.className || ""}`;
|
|
289
311
|
},
|
|
290
312
|
"data-disabled": () => ctx.disabled() ? "" : void 0,
|
|
291
313
|
onClick: () => {
|
|
@@ -317,14 +339,18 @@ var Item = (props) => {
|
|
|
317
339
|
"children"
|
|
318
340
|
]);
|
|
319
341
|
const value = () => local.item !== void 0 ? ctx.itemToValue(local.item) : local.value;
|
|
342
|
+
const disabled = () => (local.item !== void 0 ? local.item.disabled : local.disabled) ?? false;
|
|
320
343
|
return jsx("button", mergeProps(() => part("item"), {
|
|
321
344
|
get className() {
|
|
322
345
|
return `${itemClass} ${local.className || ""}`;
|
|
323
346
|
},
|
|
324
347
|
"data-selected": () => ctx.isSelected(value()) ? "" : void 0,
|
|
325
|
-
|
|
348
|
+
disabled: () => disabled(),
|
|
349
|
+
onClick: () => {
|
|
350
|
+
if (!disabled()) ctx.setValue(value());
|
|
351
|
+
},
|
|
326
352
|
type: "button"
|
|
327
|
-
}, rest, { children: [jsx("span", mergeProps(() => part("itemText"), { children: () => local.children ?? (local.item !== void 0 && ctx.itemToLabel(local.item)) })), () => ctx.isSelected(value()) && jsx("span", mergeProps(() => part("itemIndicator"), {
|
|
353
|
+
}, rest, { children: [jsx("span", mergeProps(() => part("itemText"), { children: () => local.children ?? (local.item !== void 0 && ctx.itemToLabel(local.item)) })), () => ctx.isSelected(value()) && !disabled() && jsx("span", mergeProps(() => part("itemIndicator"), {
|
|
328
354
|
className: itemIndicatorClass,
|
|
329
355
|
children: jsx(Icon, mergeProps({ svg: checkSvg }))
|
|
330
356
|
}))] }));
|
|
@@ -351,7 +377,7 @@ var List = () => {
|
|
|
351
377
|
setProp(_el2, "ref", (el) => {
|
|
352
378
|
filterInputEl = el;
|
|
353
379
|
});
|
|
354
|
-
setProp(_el2, "className", () => filterInputClass);
|
|
380
|
+
setProp(_el2, "className", () => `${filterInputClass} ${intentClasses[ctx.intent()]}`);
|
|
355
381
|
setProp(_el2, "value", () => ctx.query);
|
|
356
382
|
setProp(_el2, "onInput", (e) => ctx.query(e.target.value));
|
|
357
383
|
setProp(_el2, "onClick", (e) => e.stopPropagation());
|
|
@@ -398,7 +424,7 @@ var Content = () => {
|
|
|
398
424
|
return ctx.backdropClassName;
|
|
399
425
|
},
|
|
400
426
|
get backdropStyle() {
|
|
401
|
-
return ctx.backdropStyle ?? { background: "
|
|
427
|
+
return ctx.backdropStyle ?? { background: "var(--tsu-bg-overlay)" };
|
|
402
428
|
},
|
|
403
429
|
contentClassName: listBodyClass,
|
|
404
430
|
children: jsx(List, {})
|
|
@@ -20,7 +20,7 @@ var triggerBaseClass = css({
|
|
|
20
20
|
cursor: "pointer",
|
|
21
21
|
textAlign: "start",
|
|
22
22
|
color: "var(--tsu-fg)",
|
|
23
|
-
"&[data-placeholder-shown]": { color: "var(--tsu-
|
|
23
|
+
"&[data-placeholder-shown]": { color: "var(--tsu-text-secondary)" }
|
|
24
24
|
});
|
|
25
25
|
var sizeClasses = {
|
|
26
26
|
xs: css({
|
|
@@ -56,12 +56,12 @@ var sizeClasses = {
|
|
|
56
56
|
};
|
|
57
57
|
var variantClasses = {
|
|
58
58
|
solid: css({
|
|
59
|
-
backgroundColor: "var(--tsu-
|
|
59
|
+
backgroundColor: "var(--tsu-bg-control)",
|
|
60
60
|
border: "1px solid transparent",
|
|
61
|
-
"&:hover:not(:disabled)": { backgroundColor: "var(--tsu-
|
|
61
|
+
"&:hover:not(:disabled)": { backgroundColor: "var(--tsu-bg-control-hover)" },
|
|
62
62
|
"&:active:not(:disabled)": {
|
|
63
|
-
backgroundColor: "var(--tsu-
|
|
64
|
-
borderColor: "var(--tsu-accent-
|
|
63
|
+
backgroundColor: "var(--tsu-pressed)",
|
|
64
|
+
borderColor: "var(--tsu-accent-solid-bg)"
|
|
65
65
|
},
|
|
66
66
|
"&:focus-visible": {
|
|
67
67
|
backgroundColor: "var(--tsu-focus-bg)",
|
|
@@ -69,10 +69,10 @@ var variantClasses = {
|
|
|
69
69
|
}
|
|
70
70
|
}),
|
|
71
71
|
outline: css({
|
|
72
|
-
border: "1px solid var(--
|
|
72
|
+
border: "1px solid var(--_sel-border)",
|
|
73
73
|
"&:active:not(:disabled)": {
|
|
74
|
-
backgroundColor: "var(--tsu-accent
|
|
75
|
-
borderColor: "var(--tsu-accent-
|
|
74
|
+
backgroundColor: "var(--tsu-pressed-accent)",
|
|
75
|
+
borderColor: "var(--tsu-accent-solid-bg)"
|
|
76
76
|
},
|
|
77
77
|
"&:focus-visible": {
|
|
78
78
|
backgroundColor: "var(--tsu-focus-bg)",
|
|
@@ -80,14 +80,17 @@ var variantClasses = {
|
|
|
80
80
|
}
|
|
81
81
|
})
|
|
82
82
|
};
|
|
83
|
+
var intentClasses = {
|
|
84
|
+
default: css({ "--_sel-border": "var(--tsu-accent-outline-border)" }),
|
|
85
|
+
neutral: css({ "--_sel-border": "var(--tsu-neutral-outline-border)" }),
|
|
86
|
+
danger: css({ "--_sel-border": "var(--tsu-danger-outline-border)" })
|
|
87
|
+
};
|
|
83
88
|
var errorClass = css({
|
|
84
|
-
borderColor: "var(--tsu-danger-
|
|
85
|
-
"&:focus-visible": { borderColor: "var(--tsu-danger-
|
|
89
|
+
borderColor: "var(--tsu-danger-outline-border) !important",
|
|
90
|
+
"&:focus-visible": { borderColor: "var(--tsu-danger-outline-border) !important" }
|
|
86
91
|
});
|
|
87
92
|
var disabledClass = css({
|
|
88
|
-
|
|
89
|
-
borderColor: "var(--tsu-disabled-border) !important",
|
|
90
|
-
color: "var(--tsu-disabled-fg) !important",
|
|
93
|
+
opacity: "var(--tsu-disabled-opacity)",
|
|
91
94
|
cursor: "not-allowed"
|
|
92
95
|
});
|
|
93
96
|
var indicatorClass = css({
|
|
@@ -95,13 +98,13 @@ var indicatorClass = css({
|
|
|
95
98
|
display: "flex",
|
|
96
99
|
alignItems: "center",
|
|
97
100
|
transition: "transform var(--tsu-transition-fast)",
|
|
98
|
-
color: "var(--tsu-
|
|
101
|
+
color: "var(--tsu-text-secondary)",
|
|
99
102
|
"&[data-state=\"open\"]": { transform: "rotate(180deg)" }
|
|
100
103
|
});
|
|
101
104
|
var positionerClass = css({ zIndex: "var(--tsu-z-dropdown)" });
|
|
102
105
|
var contentBaseClass = css({
|
|
103
|
-
backgroundColor: "var(--tsu-
|
|
104
|
-
border: "1px solid var(--tsu-
|
|
106
|
+
backgroundColor: "var(--tsu-bg-panel)",
|
|
107
|
+
border: "1px solid var(--tsu-border)",
|
|
105
108
|
borderRadius: "var(--tsu-radius-l2-md)",
|
|
106
109
|
boxShadow: "var(--tsu-shadow-lg)",
|
|
107
110
|
overflow: "hidden"
|
|
@@ -116,13 +119,13 @@ var itemClass = css({
|
|
|
116
119
|
cursor: "pointer",
|
|
117
120
|
color: "var(--tsu-fg)",
|
|
118
121
|
minHeight: "var(--_item-min-height)",
|
|
119
|
-
"&:active": { backgroundColor: "var(--tsu-
|
|
122
|
+
"&:active": { backgroundColor: "var(--tsu-pressed)" },
|
|
120
123
|
"&[data-highlighted]": {
|
|
121
|
-
backgroundColor: "var(--tsu-accent
|
|
122
|
-
color: "var(--tsu-accent-
|
|
124
|
+
backgroundColor: "var(--tsu-pressed-accent)",
|
|
125
|
+
color: "var(--tsu-accent-subtle-fg)"
|
|
123
126
|
},
|
|
124
127
|
"&[data-disabled]": {
|
|
125
|
-
|
|
128
|
+
opacity: "var(--tsu-disabled-opacity)",
|
|
126
129
|
pointerEvents: "none"
|
|
127
130
|
}
|
|
128
131
|
});
|
|
@@ -166,13 +169,15 @@ var SelectItem = (props = {}) => {
|
|
|
166
169
|
};
|
|
167
170
|
var SelectPc = (props = {}) => {
|
|
168
171
|
const [local, rest] = splitProps(mergeProps$2({
|
|
169
|
-
|
|
172
|
+
variant: "outline",
|
|
173
|
+
intent: "default",
|
|
170
174
|
size: "md",
|
|
171
175
|
disabled: false,
|
|
172
176
|
invalid: false,
|
|
173
177
|
positioning: { sameWidth: true }
|
|
174
178
|
}, props), [
|
|
175
|
-
"
|
|
179
|
+
"variant",
|
|
180
|
+
"intent",
|
|
176
181
|
"size",
|
|
177
182
|
"disabled",
|
|
178
183
|
"invalid",
|
|
@@ -188,14 +193,20 @@ var SelectPc = (props = {}) => {
|
|
|
188
193
|
itemToValue: local.itemToValue ?? ((item) => String(item?.value ?? item?.id ?? item)),
|
|
189
194
|
itemToString: local.itemToString ?? ((item) => String(item?.label ?? item?.name ?? item))
|
|
190
195
|
});
|
|
191
|
-
const triggerClassName = () =>
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
196
|
+
const triggerClassName = () => {
|
|
197
|
+
const variant = read(local.variant) === "solid" ? "solid" : "outline";
|
|
198
|
+
let intent = read(local.intent);
|
|
199
|
+
if (intent === "neutral" && variant === "solid") intent = "default";
|
|
200
|
+
return [
|
|
201
|
+
triggerBaseClass,
|
|
202
|
+
sizeClasses[read(local.size)],
|
|
203
|
+
variant === "solid" ? variantClasses.solid : variantClasses.outline,
|
|
204
|
+
intentClasses[intent] ?? intentClasses.default,
|
|
205
|
+
read(local.invalid) && errorClass,
|
|
206
|
+
read(local.disabled) && disabledClass,
|
|
207
|
+
read(local.className)
|
|
208
|
+
].filter(Boolean).join(" ");
|
|
209
|
+
};
|
|
199
210
|
return jsx(Select.Root, mergeProps({
|
|
200
211
|
disabled: () => read(local.disabled),
|
|
201
212
|
collection
|
|
@@ -14,9 +14,9 @@ var labelClass = css({
|
|
|
14
14
|
fontWeight: "var(--tsu-font-weight-medium)"
|
|
15
15
|
});
|
|
16
16
|
var canvasClass = css({
|
|
17
|
-
border: "1px solid var(--tsu-
|
|
17
|
+
border: "1px solid var(--tsu-border)",
|
|
18
18
|
borderRadius: "var(--tsu-radius-l2-md)",
|
|
19
|
-
backgroundColor: "var(--tsu-bg)",
|
|
19
|
+
backgroundColor: "var(--tsu-bg-page)",
|
|
20
20
|
color: "var(--tsu-fg)",
|
|
21
21
|
touchAction: "none",
|
|
22
22
|
width: "100%",
|
|
@@ -31,16 +31,15 @@ var clearClass = css({
|
|
|
31
31
|
justifyContent: "center",
|
|
32
32
|
gap: "6px",
|
|
33
33
|
padding: "var(--tsu-comp-padding-y-sm) var(--tsu-comp-padding-x-md)",
|
|
34
|
-
border: "1px solid var(--tsu-neutral-
|
|
34
|
+
border: "1px solid var(--tsu-neutral-outline-border)",
|
|
35
35
|
borderRadius: "var(--tsu-radius-l2-md)",
|
|
36
|
-
background: "var(--tsu-bg)",
|
|
37
|
-
color: "var(--tsu-
|
|
36
|
+
background: "var(--tsu-bg-page)",
|
|
37
|
+
color: "var(--tsu-text-secondary)",
|
|
38
38
|
fontSize: "var(--tsu-comp-font-size-sm)",
|
|
39
39
|
fontFamily: "inherit",
|
|
40
40
|
cursor: "pointer",
|
|
41
41
|
touchAction: "manipulation",
|
|
42
|
-
"&:
|
|
43
|
-
"&:active": { background: "var(--tsu-neutral-3)" }
|
|
42
|
+
"&:active": { background: "var(--tsu-pressed)" }
|
|
44
43
|
});
|
|
45
44
|
var ClearTrigger = (props = {}) => {
|
|
46
45
|
const [local, rest] = splitProps(props, ["className", "children"]);
|
|
@@ -4,7 +4,7 @@ import { css, keyframes } from "@emotion/css";
|
|
|
4
4
|
var _tmpl = template("<span></span>");
|
|
5
5
|
var baseClass = css({
|
|
6
6
|
display: "block",
|
|
7
|
-
background: "linear-gradient(90deg, var(--tsu-
|
|
7
|
+
background: "linear-gradient(90deg, var(--tsu-border) 25%, var(--tsu-border-strong) 50%, var(--tsu-border) 75%)",
|
|
8
8
|
backgroundSize: "200% 100%",
|
|
9
9
|
animation: `${keyframes({
|
|
10
10
|
"0%": { backgroundPosition: "-200% 0" },
|