@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.
Files changed (57) hide show
  1. package/dist/components/Accordion.js +6 -6
  2. package/dist/components/Avatar.js +4 -4
  3. package/dist/components/BackToTop.js +3 -3
  4. package/dist/components/BottomNavigation.js +4 -4
  5. package/dist/components/BottomSheet.js +1 -1
  6. package/dist/components/Button.js +23 -26
  7. package/dist/components/Checkbox.js +11 -29
  8. package/dist/components/Clipboard.js +2 -2
  9. package/dist/components/CloseButton.js +4 -4
  10. package/dist/components/Collapsible.js +3 -3
  11. package/dist/components/ColorPicker.js +6 -6
  12. package/dist/components/Combobox.js +10 -9
  13. package/dist/components/{DateInput.js → DatePicker.js} +37 -22
  14. package/dist/components/Dialog.js +8 -8
  15. package/dist/components/Drawer.js +7 -7
  16. package/dist/components/Field.js +3 -3
  17. package/dist/components/Fieldset.js +2 -2
  18. package/dist/components/FileUpload.js +12 -12
  19. package/dist/components/FilterGroup.js +50 -115
  20. package/dist/components/Input.js +20 -19
  21. package/dist/components/Link.js +2 -2
  22. package/dist/components/Listbox.js +7 -6
  23. package/dist/components/Menu.js +8 -7
  24. package/dist/components/MoneyInput.js +1 -1
  25. package/dist/components/NumberInput.js +12 -13
  26. package/dist/components/Pagination.js +8 -8
  27. package/dist/components/Popover.js +5 -5
  28. package/dist/components/Progress.js +3 -3
  29. package/dist/components/RadioGroup.js +5 -10
  30. package/dist/components/RatingGroup.js +5 -5
  31. package/dist/components/SearchInput.js +4 -1
  32. package/dist/components/Select.js +52 -26
  33. package/dist/components/SelectPc.js +41 -30
  34. package/dist/components/SignaturePad.js +6 -7
  35. package/dist/components/Skeleton.js +1 -1
  36. package/dist/components/Slider.js +7 -7
  37. package/dist/components/Spinner.js +1 -1
  38. package/dist/components/Steps.js +23 -23
  39. package/dist/components/Switch.js +19 -10
  40. package/dist/components/Tabs.js +5 -5
  41. package/dist/components/TagsInput.js +6 -6
  42. package/dist/components/Toast.js +14 -14
  43. package/dist/components/Toggle.js +7 -7
  44. package/dist/components/ToggleGroup.js +19 -8
  45. package/dist/components/Tour.js +3 -3
  46. package/dist/components/TreeView.js +5 -5
  47. package/dist/index.js +2 -2
  48. package/dist/tsumiki.css +1 -1
  49. package/docs/api.md +51 -139
  50. package/docs/component-api-pattern.md +2 -2
  51. package/docs/scroll-lock-issue.md +3 -3
  52. package/package.json +1 -1
  53. package/src/styles/color.css +42 -0
  54. package/src/styles/semantic.css +212 -0
  55. package/src/styles/shadow.css +1 -0
  56. package/src/styles/theme.css +14 -0
  57. 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-surface)",
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-8)",
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
- borderColor: "var(--tsu-disabled-border)",
33
- "& *": { color: "var(--tsu-disabled-fg)" }
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-neutral-11)",
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-3)" },
80
+ "&:active:not(:disabled)": { backgroundColor: "var(--tsu-pressed-accent)" },
82
81
  "&:disabled": {
83
- color: "var(--tsu-disabled-fg)",
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
- solid: false,
90
+ variant: "outline",
92
91
  disabled: false
93
92
  }, props), [
94
93
  "size",
95
- "solid",
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 solid = read(local.solid);
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[solid ? "solid" : "outline"],
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-5)",
19
+ border: "1px solid var(--tsu-neutral-outline-border)",
20
20
  borderRadius: "var(--tsu-radius-l2-md)",
21
- backgroundColor: "var(--tsu-surface)",
22
- color: "var(--tsu-neutral-11)",
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-9)",
31
- borderColor: "var(--tsu-accent-8)",
32
- color: "var(--tsu-bg)"
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: .5,
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-neutral-9)",
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-surface)",
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-neutral-6)",
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-surface)"
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-neutral-11)",
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-neutral-11)",
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-neutral-3)",
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-9)",
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-neutral-11)",
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
- color: "var(--tsu-disabled-fg)",
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-8)",
40
- background: "var(--tsu-surface)",
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-9)" },
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-9)",
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-neutral-11)"
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-neutral-6)",
27
+ color: "var(--tsu-border)",
28
28
  transition: "color var(--tsu-transition-fast)",
29
- "&[data-highlighted]": { color: "var(--tsu-warning-9)" },
30
- "&[data-checked]": { color: "var(--tsu-warning-9)" },
29
+ "&[data-highlighted]": { color: "var(--tsu-warning-solid-bg)" },
30
+ "&[data-checked]": { color: "var(--tsu-warning-solid-bg)" },
31
31
  "&[data-disabled]": {
32
- opacity: .4,
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
- "&:hover": { color: "var(--tsu-fg)" }
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-9)" },
30
+ "&:focus-visible": { borderColor: "var(--tsu-accent-outline-border-hover)" },
31
31
  "&[data-disabled]": {
32
- backgroundColor: "var(--tsu-disabled-bg)",
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-surface)",
38
+ backgroundColor: "var(--tsu-bg-control)",
41
39
  border: "1px solid transparent"
42
40
  }),
43
- outline: css({ border: "1px solid var(--tsu-accent-8)" })
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-neutral-11)" });
94
+ var triggerPlaceholderClass = css({ color: "var(--tsu-text-secondary)" });
83
95
  var triggerIndicatorClass = css({
84
96
  flexShrink: 0,
85
- color: "var(--tsu-neutral-11)",
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: "rgba(255,255,255,0.06)" },
117
- "&[data-selected]": { background: "var(--tsu-accent-3)" }
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-9)",
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-surface)",
137
- border: "1px solid var(--tsu-accent-8)",
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(--tsu-accent-9)" },
144
- "&::placeholder": { color: "var(--tsu-neutral-11)" },
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-neutral-11)",
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-neutral-11)",
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-neutral-11)",
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
- solid: false
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
- "solid"
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
- solid: () => read(local.solid),
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.solid() ? "solid" : "outline"]} ${sizeClasses[ctx.size()] || ""} ${local.className || ""}`;
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
- onClick: () => ctx.setValue(value()),
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: "rgba(0,0,0,0.5)" };
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-neutral-11)" }
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-neutral-3)",
59
+ backgroundColor: "var(--tsu-bg-control)",
60
60
  border: "1px solid transparent",
61
- "&:hover:not(:disabled)": { backgroundColor: "var(--tsu-neutral-4)" },
61
+ "&:hover:not(:disabled)": { backgroundColor: "var(--tsu-bg-control-hover)" },
62
62
  "&:active:not(:disabled)": {
63
- backgroundColor: "var(--tsu-neutral-5)",
64
- borderColor: "var(--tsu-accent-9)"
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(--tsu-accent-8)",
72
+ border: "1px solid var(--_sel-border)",
73
73
  "&:active:not(:disabled)": {
74
- backgroundColor: "var(--tsu-accent-3)",
75
- borderColor: "var(--tsu-accent-9)"
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-9) !important",
85
- "&:focus-visible": { borderColor: "var(--tsu-danger-9) !important" }
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
- backgroundColor: "var(--tsu-disabled-bg) !important",
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-neutral-11)",
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-surface)",
104
- border: "1px solid var(--tsu-neutral-6)",
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-neutral-3)" },
122
+ "&:active": { backgroundColor: "var(--tsu-pressed)" },
120
123
  "&[data-highlighted]": {
121
- backgroundColor: "var(--tsu-accent-3)",
122
- color: "var(--tsu-accent-9)"
124
+ backgroundColor: "var(--tsu-pressed-accent)",
125
+ color: "var(--tsu-accent-subtle-fg)"
123
126
  },
124
127
  "&[data-disabled]": {
125
- color: "var(--tsu-disabled-fg)",
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
- solid: false,
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
- "solid",
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
- triggerBaseClass,
193
- sizeClasses[read(local.size)],
194
- read(local.solid) ? variantClasses.solid : variantClasses.outline,
195
- read(local.invalid) && errorClass,
196
- read(local.disabled) && disabledClass,
197
- read(local.className)
198
- ].filter(Boolean).join(" ");
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-neutral-7)",
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-7)",
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-neutral-11)",
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
- "&:hover": { borderColor: "var(--tsu-focus-border)" },
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-neutral-6) 25%, var(--tsu-neutral-7) 50%, var(--tsu-neutral-6) 75%)",
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" },