@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,14 +13,14 @@ var _tmpl = template("<div><!><!></div>");
13
13
  var backdropModalClass = css({
14
14
  position: "fixed",
15
15
  inset: 0,
16
- background: "rgba(0, 0, 0, 0.45)",
16
+ background: "var(--tsu-bg-overlay)",
17
17
  backdropFilter: "blur(8px)",
18
18
  WebkitBackdropFilter: "blur(8px)"
19
19
  });
20
20
  var backdropSheetClass = css({
21
21
  position: "fixed",
22
22
  inset: 0,
23
- background: "rgba(0, 0, 0, 0.35)",
23
+ background: "var(--tsu-bg-overlay-soft)",
24
24
  backdropFilter: "blur(8px)",
25
25
  WebkitBackdropFilter: "blur(8px)"
26
26
  });
@@ -55,7 +55,7 @@ var sheetContentIn = keyframes({
55
55
  to: { transform: "translateY(0)" }
56
56
  });
57
57
  var contentModalClass = css({
58
- background: "var(--tsu-surface)",
58
+ background: "var(--tsu-bg-panel)",
59
59
  borderRadius: "var(--tsu-radius-l3-md)",
60
60
  width: "100%",
61
61
  maxWidth: "440px",
@@ -68,7 +68,7 @@ var contentModalClass = css({
68
68
  animation: `${modalContentIn} 200ms ease`
69
69
  });
70
70
  var contentSheetClass = css({
71
- background: "var(--tsu-surface)",
71
+ background: "var(--tsu-bg-panel)",
72
72
  borderRadius: "var(--tsu-radius-l3-md) var(--tsu-radius-l3-md) 0 0",
73
73
  width: "100%",
74
74
  maxHeight: "70vh",
@@ -84,7 +84,7 @@ var headerClass = css({
84
84
  justifyContent: "space-between",
85
85
  padding: "18px var(--tsu-container-padding-lg) var(--tsu-spacing-lg)",
86
86
  marginBottom: "var(--tsu-spacing-sm)",
87
- borderBottom: "1px solid var(--tsu-neutral-7)",
87
+ borderBottom: "1px solid var(--tsu-border)",
88
88
  flexShrink: 0
89
89
  });
90
90
  var titleWrapClass = css({
@@ -95,7 +95,7 @@ var titleWrapClass = css({
95
95
  });
96
96
  var titleIconClass = css({
97
97
  flexShrink: 0,
98
- color: "var(--tsu-accent-9)"
98
+ color: "var(--tsu-accent-solid-bg)"
99
99
  });
100
100
  var titleClass = css({
101
101
  fontSize: "18px",
@@ -108,7 +108,7 @@ var closeBtnClass = css({
108
108
  borderRadius: "50%",
109
109
  background: "transparent",
110
110
  border: "none",
111
- color: "var(--tsu-neutral-11)",
111
+ color: "var(--tsu-text-secondary)",
112
112
  fontSize: "22px",
113
113
  lineHeight: 1,
114
114
  cursor: "pointer",
@@ -247,7 +247,7 @@ var Dialog$1 = (props) => {
247
247
  },
248
248
  onClick: handleConfirm,
249
249
  size: "xl",
250
- solid: true,
250
+ variant: "solid",
251
251
  type: "button",
252
252
  children: () => local.confirmText
253
253
  })), _el2);
@@ -10,7 +10,7 @@ var _tmpl = template("<div><div><!><!></div><!></div>");
10
10
  var backdropClass = css({
11
11
  position: "fixed",
12
12
  inset: 0,
13
- background: "rgba(0, 0, 0, 0.6)",
13
+ background: "var(--tsu-bg-overlay)",
14
14
  backdropFilter: "blur(4px)",
15
15
  "&[hidden]": { display: "none" }
16
16
  });
@@ -24,8 +24,8 @@ var positionerClass = css({
24
24
  });
25
25
  var contentClass = css({
26
26
  pointerEvents: "auto",
27
- background: "var(--tsu-surface)",
28
- borderLeft: "1px solid var(--tsu-neutral-7)",
27
+ background: "var(--tsu-bg-panel)",
28
+ borderLeft: "1px solid var(--tsu-border)",
29
29
  width: "min(320px, calc(100vw - 24px))",
30
30
  height: "100%",
31
31
  display: "flex",
@@ -39,7 +39,7 @@ var headClass = css({
39
39
  alignItems: "center",
40
40
  justifyContent: "space-between",
41
41
  padding: "18px var(--tsu-container-padding-lg)",
42
- borderBottom: "1px solid var(--tsu-neutral-7)",
42
+ borderBottom: "1px solid var(--tsu-border)",
43
43
  flexShrink: 0
44
44
  });
45
45
  var titleWrapClass = css({
@@ -50,7 +50,7 @@ var titleWrapClass = css({
50
50
  });
51
51
  var titleIconClass = css({
52
52
  flexShrink: 0,
53
- color: "var(--tsu-accent-9)"
53
+ color: "var(--tsu-accent-solid-bg)"
54
54
  });
55
55
  var titleClass = css({
56
56
  fontSize: "18px",
@@ -63,7 +63,7 @@ var closeBtnClass = css({
63
63
  borderRadius: "50%",
64
64
  background: "transparent",
65
65
  border: "none",
66
- color: "var(--tsu-neutral-11)",
66
+ color: "var(--tsu-text-secondary)",
67
67
  fontSize: "22px",
68
68
  lineHeight: 1,
69
69
  cursor: "pointer",
@@ -80,7 +80,7 @@ var bodyClass = css({
80
80
  var descClass = css({
81
81
  margin: "8px 0 0",
82
82
  fontSize: "var(--tsu-comp-font-size-sm)",
83
- color: "var(--tsu-neutral-11)",
83
+ color: "var(--tsu-text-secondary)",
84
84
  lineHeight: 1.5
85
85
  });
86
86
  var ArkRoot = Drawer.Root;
@@ -33,18 +33,18 @@ var inputWrapClass = css({
33
33
  gap: "var(--tsu-spacing-xs)"
34
34
  });
35
35
  var requiredClass = css({
36
- color: "var(--tsu-danger-9)",
36
+ color: "var(--tsu-danger-solid-bg)",
37
37
  marginLeft: "var(--tsu-spacing-xxs)"
38
38
  });
39
39
  var errorTextClass = css({
40
40
  fontSize: "var(--tsu-font-size-sm)",
41
- color: "var(--tsu-danger-9)",
41
+ color: "var(--tsu-danger-solid-bg)",
42
42
  margin: 0,
43
43
  flexBasis: "100%"
44
44
  });
45
45
  var helperTextClass = css({
46
46
  fontSize: "var(--tsu-font-size-sm)",
47
- color: "var(--tsu-neutral-11)",
47
+ color: "var(--tsu-text-secondary)",
48
48
  margin: 0,
49
49
  flexBasis: "100%"
50
50
  });
@@ -7,7 +7,7 @@ var rootClass = css({
7
7
  display: "flex",
8
8
  flexDirection: "column",
9
9
  gap: "var(--tsu-spacing-xs)",
10
- border: "1px solid var(--tsu-neutral-7)",
10
+ border: "1px solid var(--tsu-border)",
11
11
  borderRadius: "var(--tsu-radius-l1-md)",
12
12
  padding: "var(--tsu-spacing-lg)"
13
13
  });
@@ -20,7 +20,7 @@ var legendClass = css({
20
20
  });
21
21
  var helperClass = css({
22
22
  fontSize: "var(--tsu-font-size-sm)",
23
- color: "var(--tsu-neutral-11)",
23
+ color: "var(--tsu-text-secondary)",
24
24
  margin: 0
25
25
  });
26
26
  var read = (v) => typeof v === "function" ? v() : v;
@@ -23,22 +23,22 @@ var dropzoneClass = css({
23
23
  justifyContent: "center",
24
24
  gap: "var(--tsu-spacing-sm)",
25
25
  padding: "var(--tsu-spacing-xl)",
26
- border: "2px dashed var(--tsu-accent-7)",
26
+ border: "2px dashed var(--tsu-accent-outline-border)",
27
27
  borderRadius: "var(--tsu-radius-l2-md)",
28
- backgroundColor: "var(--tsu-surface)",
28
+ backgroundColor: "var(--tsu-bg-panel)",
29
29
  cursor: "pointer",
30
30
  minHeight: "120px",
31
31
  transition: "border-color var(--tsu-transition-fast), background-color var(--tsu-transition-fast)",
32
32
  touchAction: "manipulation",
33
33
  "&[data-disabled]": {
34
- opacity: .5,
34
+ opacity: "var(--tsu-disabled-opacity)",
35
35
  cursor: "not-allowed",
36
36
  pointerEvents: "none"
37
37
  }
38
38
  });
39
39
  var dropzoneTextClass = css({
40
40
  fontSize: "var(--tsu-font-size-sm)",
41
- color: "var(--tsu-neutral-9)",
41
+ color: "var(--tsu-text-subtle)",
42
42
  textAlign: "center"
43
43
  });
44
44
  var itemGroupClass = css({
@@ -54,8 +54,8 @@ var itemClass = css({
54
54
  alignItems: "center",
55
55
  gap: "var(--tsu-spacing-sm)",
56
56
  padding: "var(--tsu-spacing-sm) var(--tsu-spacing-md)",
57
- backgroundColor: "var(--tsu-surface)",
58
- border: "1px solid var(--tsu-neutral-5)",
57
+ backgroundColor: "var(--tsu-bg-panel)",
58
+ border: "1px solid var(--tsu-border)",
59
59
  borderRadius: "var(--tsu-radius-l2-md)"
60
60
  });
61
61
  var itemNameClass = css({
@@ -68,7 +68,7 @@ var itemNameClass = css({
68
68
  });
69
69
  var itemSizeTextClass = css({
70
70
  fontSize: "var(--tsu-font-size-xs)",
71
- color: "var(--tsu-neutral-9)",
71
+ color: "var(--tsu-text-subtle)",
72
72
  marginTop: "var(--tsu-spacing-xxs)"
73
73
  });
74
74
  var itemDeleteClass = css({
@@ -80,7 +80,7 @@ var itemDeleteClass = css({
80
80
  flexShrink: 0,
81
81
  border: "none",
82
82
  background: "none",
83
- color: "var(--tsu-neutral-9)",
83
+ color: "var(--tsu-text-subtle)",
84
84
  cursor: "pointer",
85
85
  borderRadius: "var(--tsu-radius-l1-md)",
86
86
  padding: 0
@@ -90,16 +90,16 @@ var clearClass = css({
90
90
  alignItems: "center",
91
91
  gap: "var(--tsu-spacing-xs)",
92
92
  padding: "var(--tsu-spacing-sm) var(--tsu-spacing-md)",
93
- border: "1px solid var(--tsu-neutral-7)",
93
+ border: "1px solid var(--tsu-neutral-outline-border)",
94
94
  borderRadius: "var(--tsu-radius-l2-md)",
95
- backgroundColor: "var(--tsu-surface)",
96
- color: "var(--tsu-neutral-11)",
95
+ backgroundColor: "var(--tsu-bg-panel)",
96
+ color: "var(--tsu-text-secondary)",
97
97
  fontSize: "var(--tsu-font-size-sm)",
98
98
  cursor: "pointer",
99
99
  fontFamily: "inherit",
100
100
  touchAction: "manipulation",
101
101
  "&:disabled": {
102
- opacity: .5,
102
+ opacity: "var(--tsu-disabled-opacity)",
103
103
  cursor: "not-allowed"
104
104
  }
105
105
  });
@@ -1,46 +1,10 @@
1
- import ToggleGroup, { ToggleGroupItem } from "./ToggleGroup.js";
1
+ import Button from "./Button.js";
2
2
  import { insert, jsx, mergeProps, setProp, template } from "@plastic-js/plastic/jsx-runtime";
3
3
  import { css } from "@emotion/css";
4
4
  import { mergeProps as mergeProps$1, splitProps } from "@plastic-js/plastic";
5
5
  //#region src/components/FilterGroup.jsx
6
- var _tmpl = template("<button type=\"button\"></button>");
6
+ var _tmpl = template("<div></div>");
7
7
  var access = (v) => typeof v === "function" ? v() : v;
8
- var sizeVars = {
9
- xs: {
10
- "--_tg-padding-y": "var(--tsu-comp-padding-y-xs)",
11
- "--_tg-padding-x": "var(--tsu-comp-padding-x-xs)",
12
- "--_tg-font-size": "var(--tsu-comp-font-size-xs)",
13
- "--_tg-radius": "var(--tsu-radius-l1-xs)"
14
- },
15
- sm: {
16
- "--_tg-padding-y": "var(--tsu-comp-padding-y-sm)",
17
- "--_tg-padding-x": "var(--tsu-comp-padding-x-sm)",
18
- "--_tg-font-size": "var(--tsu-comp-font-size-sm)",
19
- "--_tg-radius": "var(--tsu-radius-l1-sm)"
20
- },
21
- md: {
22
- "--_tg-padding-y": "var(--tsu-comp-padding-y-md)",
23
- "--_tg-padding-x": "var(--tsu-comp-padding-x-md)",
24
- "--_tg-font-size": "var(--tsu-comp-font-size-md)",
25
- "--_tg-radius": "var(--tsu-radius-l1-md)"
26
- },
27
- lg: {
28
- "--_tg-padding-y": "var(--tsu-comp-padding-y-lg)",
29
- "--_tg-padding-x": "var(--tsu-comp-padding-x-lg)",
30
- "--_tg-font-size": "var(--tsu-comp-font-size-lg)",
31
- "--_tg-radius": "var(--tsu-radius-l1-lg)"
32
- },
33
- xl: {
34
- "--_tg-padding-y": "var(--tsu-comp-padding-y-xl)",
35
- "--_tg-padding-x": "var(--tsu-comp-padding-x-xl)",
36
- "--_tg-font-size": "var(--tsu-comp-font-size-xl)",
37
- "--_tg-radius": "var(--tsu-radius-l1-xl)"
38
- }
39
- };
40
- var defaultStyle = {
41
- "--_tg-border": "var(--tsu-neutral-6)",
42
- "--_fg-gap": "var(--tsu-spacing-sm)"
43
- };
44
8
  var rootClass = css({
45
9
  display: "flex",
46
10
  width: "100%",
@@ -53,53 +17,22 @@ var stickyClass = css({
53
17
  zIndex: "var(--tsu-z-dropdown)",
54
18
  backgroundColor: "var(--tsu-surface)"
55
19
  });
56
- var allClass = css({
57
- display: "flex",
58
- alignItems: "center",
59
- justifyContent: "center",
60
- flexShrink: 0,
61
- padding: "var(--_tg-padding-y, var(--tsu-comp-padding-y-md)) var(--_tg-padding-x, var(--tsu-comp-padding-x-md))",
62
- border: "1px solid var(--_tg-border)",
20
+ var pillClass = css({
63
21
  borderRadius: "var(--tsu-radius-round)",
64
- background: "transparent",
65
- color: "var(--tsu-neutral-11)",
66
- fontSize: "var(--_tg-font-size, var(--tsu-comp-font-size-md))",
67
- fontWeight: "var(--tsu-font-weight-medium)",
68
- fontFamily: "inherit",
69
- cursor: "pointer",
70
- touchAction: "manipulation",
71
- transition: "background-color var(--tsu-transition-fast), color var(--tsu-transition-fast), border-color var(--tsu-transition-fast)",
72
- "&[data-state=\"on\"]": {
73
- backgroundColor: "var(--tsu-neutral-9)",
74
- borderColor: "var(--tsu-neutral-9)",
75
- color: "var(--tsu-bg)"
76
- },
77
- "&:disabled": {
78
- opacity: .5,
79
- cursor: "not-allowed"
80
- }
22
+ flexShrink: 0
81
23
  });
24
+ var selectedItemClass = css({ backgroundColor: "var(--tsu-accent-outline-bg-active)" });
82
25
  var groupClass = css({
83
- border: "none",
84
- overflowX: "auto",
85
- overflowY: "hidden",
26
+ display: "flex",
27
+ alignItems: "center",
28
+ gap: "var(--_fg-gap, var(--tsu-spacing-sm))",
86
29
  flex: "1 1 auto",
87
30
  minWidth: 0,
88
- gap: "var(--_fg-gap, var(--tsu-spacing-sm))",
31
+ overflowX: "auto",
32
+ overflowY: "hidden",
89
33
  scrollbarWidth: "none",
90
34
  "::-webkit-scrollbar": { display: "none" }
91
35
  });
92
- var itemClass = css({
93
- border: "1px solid var(--_tg-border)",
94
- borderRadius: "var(--tsu-radius-round)",
95
- flexShrink: 0,
96
- "&[data-state=\"on\"]": {
97
- backgroundColor: "transparent",
98
- borderColor: "var(--tsu-accent-9)",
99
- color: "var(--tsu-accent-11)"
100
- },
101
- "&:last-child": { border: "1px solid var(--_tg-border)" }
102
- });
103
36
  var FilterGroup = (props = {}) => {
104
37
  const [local, rest] = splitProps(mergeProps$1({
105
38
  size: "md",
@@ -126,7 +59,11 @@ var FilterGroup = (props = {}) => {
126
59
  if (allActive()) return;
127
60
  emit([]);
128
61
  };
129
- const handleChange = (value) => emit(value);
62
+ const handleItemClick = (itemValue) => {
63
+ const current = value();
64
+ emit(current.includes(itemValue) ? current.filter((v) => v !== itemValue) : [...current, itemValue]);
65
+ };
66
+ const buttonClassNames = [pillClass, local.buttonClass].filter(Boolean).join(" ");
130
67
  return jsx("div", mergeProps(rest, {
131
68
  className: () => [
132
69
  rootClass,
@@ -134,50 +71,48 @@ var FilterGroup = (props = {}) => {
134
71
  local.className
135
72
  ].filter(Boolean).join(" "),
136
73
  style: () => ({
137
- ...defaultStyle,
138
- ...sizeVars[access(local.size)],
74
+ "--_fg-gap": "var(--tsu-spacing-sm)",
139
75
  ...typeof sticky() === "number" ? { top: `${sticky()}px` } : void 0
140
76
  }),
141
- children: [() => {
142
- const _el0 = _tmpl.cloneNode(true);
143
- insert(_el0, () => local.allLabel);
144
- setProp(_el0, "className", () => [allClass, local.buttonClass].filter(Boolean).join(" "));
145
- setProp(_el0, "data-state", () => allActive() ? "on" : "off");
146
- setProp(_el0, "onClick", () => handleAllClick);
147
- return _el0;
148
- }, jsx(ToggleGroup, mergeProps({
149
- multiple: true,
77
+ children: [jsx(Button, mergeProps({
78
+ type: "button",
150
79
  get size() {
151
80
  return local.size;
152
81
  },
153
- get value() {
154
- return allActive() ? [] : value();
155
- },
156
- onValueChange: handleChange,
157
- get className() {
158
- return [groupClass, local.groupClass].filter(Boolean).join(" ");
82
+ get variant() {
83
+ return allActive() ? "solid" : "outline";
159
84
  },
160
- children: () => local.items.map((item) => jsx(ToggleGroupItem, mergeProps({
161
- get key() {
162
- return item.value;
163
- },
164
- get value() {
165
- return item.value;
166
- },
167
- get disabled() {
168
- return item.disabled;
169
- },
170
- get className() {
171
- return [itemClass, local.buttonClass].filter(Boolean).join(" ");
172
- },
173
- children: () => item.label
174
- })))
175
- }))]
85
+ className: buttonClassNames,
86
+ onClick: handleAllClick,
87
+ children: () => local.allLabel
88
+ })), () => {
89
+ const _el0 = _tmpl.cloneNode(true);
90
+ insert(_el0, () => local.items.map((item) => {
91
+ const selected = value().includes(item.value);
92
+ return jsx(Button, mergeProps({
93
+ get key() {
94
+ return item.value;
95
+ },
96
+ type: "button",
97
+ get size() {
98
+ return local.size;
99
+ },
100
+ intent: selected ? "default" : "neutral",
101
+ get disabled() {
102
+ return item.disabled;
103
+ },
104
+ get className() {
105
+ return [selected && selectedItemClass, buttonClassNames].filter(Boolean).join(" ");
106
+ },
107
+ onClick: () => handleItemClick(item.value),
108
+ children: () => item.label
109
+ }));
110
+ }));
111
+ setProp(_el0, "className", () => [groupClass, local.groupClass].filter(Boolean).join(" "));
112
+ return _el0;
113
+ }]
176
114
  }));
177
115
  };
178
- FilterGroup.origin = {
179
- ToggleGroup,
180
- ToggleGroupItem
181
- };
116
+ FilterGroup.origin = { Button };
182
117
  //#endregion
183
118
  export { FilterGroup as default };
@@ -65,7 +65,7 @@ var variantClasses = {
65
65
  }
66
66
  }),
67
67
  outline: css({
68
- border: "1px solid var(--_input-border, var(--tsu-accent-8))",
68
+ border: "1px solid var(--_input-border)",
69
69
  color: "var(--tsu-fg)",
70
70
  "&:focus-within": {
71
71
  backgroundColor: "var(--tsu-focus-bg)",
@@ -74,18 +74,16 @@ var variantClasses = {
74
74
  })
75
75
  };
76
76
  var intentClasses = {
77
- default: css({ "--_input-border": "var(--tsu-accent-8)" }),
78
- neutral: css({ "--_input-border": "var(--tsu-neutral-6)" }),
79
- danger: css({ "--_input-border": "var(--tsu-danger-9)" })
77
+ default: css({ "--_input-border": "var(--tsu-accent-outline-border)" }),
78
+ neutral: css({ "--_input-border": "var(--tsu-neutral-outline-border)" }),
79
+ danger: css({ "--_input-border": "var(--tsu-danger-outline-border)" })
80
80
  };
81
81
  var errorClass = css({
82
- borderColor: "var(--tsu-danger-9) !important",
83
- "&:focus-within": { borderColor: "var(--tsu-danger-9) !important" }
82
+ borderColor: "var(--tsu-danger-outline-border) !important",
83
+ "&:focus-within": { borderColor: "var(--tsu-danger-outline-border) !important" }
84
84
  });
85
85
  var disabledClass = css({
86
- backgroundColor: "var(--tsu-disabled-bg) !important",
87
- borderColor: "var(--tsu-disabled-border) !important",
88
- color: "var(--tsu-disabled-fg) !important",
86
+ opacity: "var(--tsu-disabled-opacity)",
89
87
  cursor: "not-allowed"
90
88
  });
91
89
  var inputClass = css({
@@ -97,13 +95,13 @@ var inputClass = css({
97
95
  fontSize: "inherit",
98
96
  color: "inherit",
99
97
  padding: 0,
100
- "&::placeholder": { color: "var(--tsu-neutral-11)" }
98
+ "&::placeholder": { color: "var(--tsu-text-secondary)" }
101
99
  });
102
100
  var affixClass = css({
103
101
  flexShrink: 0,
104
102
  display: "inline-flex",
105
103
  alignItems: "center",
106
- color: "var(--tsu-neutral-11)",
104
+ color: "var(--tsu-text-secondary)",
107
105
  userSelect: "none",
108
106
  "& > svg": {
109
107
  width: "1.3em",
@@ -124,16 +122,19 @@ var eyeButtonClass = css({
124
122
  background: "none",
125
123
  border: "none",
126
124
  borderRadius: "var(--tsu-radius-l1-sm)",
127
- color: "var(--tsu-neutral-11)",
125
+ color: "var(--tsu-text-secondary)",
128
126
  cursor: "pointer",
129
127
  "& svg": {
130
128
  width: "100%",
131
129
  height: "100%",
132
130
  display: "block"
133
131
  },
134
- "&:hover": { color: "var(--tsu-fg)" },
132
+ "&:active": {
133
+ color: "var(--tsu-fg)",
134
+ backgroundColor: "var(--tsu-pressed)"
135
+ },
135
136
  "&:focus-visible": {
136
- outline: "2px solid var(--tsu-accent-9)",
137
+ outline: "2px solid var(--tsu-accent-outline-border-hover)",
137
138
  outlineOffset: "1px"
138
139
  }
139
140
  });
@@ -141,13 +142,13 @@ var read = (v) => typeof v === "function" ? v() : v;
141
142
  var Input = (props = {}) => {
142
143
  const [local, rest] = splitProps(mergeProps$2({
143
144
  intent: "default",
144
- solid: false,
145
+ variant: "outline",
145
146
  size: "md",
146
147
  disabled: false,
147
148
  invalid: false
148
149
  }, props), [
149
150
  "intent",
150
- "solid",
151
+ "variant",
151
152
  "size",
152
153
  "disabled",
153
154
  "invalid",
@@ -168,13 +169,13 @@ var Input = (props = {}) => {
168
169
  const effectiveInvalid = () => read(local.invalid) || fieldInvalid();
169
170
  const effectiveDisabled = () => read(local.disabled) || fieldDisabled();
170
171
  const wrapperClassName = () => {
171
- const solid = read(local.solid);
172
+ const variant = read(local.variant) === "solid" ? "solid" : "outline";
172
173
  let intent = read(local.intent);
173
- if (intent === "neutral" && solid) intent = "default";
174
+ if (intent === "neutral" && variant === "solid") intent = "default";
174
175
  return [
175
176
  wrapperClass,
176
177
  sizeClasses[read(local.size)],
177
- solid ? variantClasses.solid : variantClasses.outline,
178
+ variant === "solid" ? variantClasses.solid : variantClasses.outline,
178
179
  intentClasses[intent],
179
180
  effectiveInvalid() && errorClass,
180
181
  effectiveDisabled() && disabledClass,
@@ -3,14 +3,14 @@ import { css } from "@emotion/css";
3
3
  import { mergeProps as mergeProps$1, splitProps } from "@plastic-js/plastic";
4
4
  //#region src/components/Link.jsx
5
5
  var baseClass = css({
6
- color: "var(--tsu-accent-11)",
6
+ color: "var(--tsu-accent-plain-fg)",
7
7
  textDecoration: "none",
8
8
  cursor: "pointer",
9
9
  fontWeight: "var(--tsu-font-weight-medium)",
10
10
  transition: "color var(--tsu-transition-fast), text-decoration-color var(--tsu-transition-fast)",
11
11
  "&:hover": {
12
12
  textDecoration: "underline",
13
- textDecorationColor: "var(--tsu-accent-6)"
13
+ textDecorationColor: "var(--tsu-accent-subtle-bg-hover)"
14
14
  },
15
15
  "&:focus-visible": {
16
16
  outline: "2px solid var(--tsu-focus-border)",
@@ -4,8 +4,8 @@ import { Listbox } from "@plastic-js/ark";
4
4
  import { splitProps } from "@plastic-js/plastic";
5
5
  //#region src/components/Listbox.jsx
6
6
  css({
7
- backgroundColor: "var(--tsu-surface)",
8
- border: "1px solid var(--tsu-neutral-6)",
7
+ backgroundColor: "var(--tsu-bg-panel)",
8
+ border: "1px solid var(--tsu-border)",
9
9
  borderRadius: "var(--tsu-radius-l2-md)",
10
10
  boxShadow: "var(--tsu-shadow-lg)",
11
11
  zIndex: "var(--tsu-z-dropdown)",
@@ -21,12 +21,13 @@ css({
21
21
  color: "var(--tsu-fg)",
22
22
  cursor: "pointer",
23
23
  "&[data-highlighted]": {
24
- backgroundColor: "var(--tsu-accent-3)",
25
- color: "var(--tsu-accent-9)"
24
+ backgroundColor: "var(--tsu-pressed-accent)",
25
+ color: "var(--tsu-accent-subtle-fg)"
26
26
  },
27
27
  "&[data-disabled]": {
28
- color: "var(--tsu-disabled-fg)",
29
- pointerEvents: "none"
28
+ opacity: "var(--tsu-disabled-opacity)",
29
+ pointerEvents: "none",
30
+ cursor: "not-allowed"
30
31
  }
31
32
  });
32
33
  var Listbox$1 = (props = {}) => {
@@ -6,8 +6,8 @@ import { splitProps } from "@plastic-js/plastic";
6
6
  //#region src/components/Menu.jsx
7
7
  var positionerClass = css({ zIndex: "var(--tsu-z-dropdown)" });
8
8
  var contentClass = css({
9
- backgroundColor: "var(--tsu-surface)",
10
- border: "1px solid var(--tsu-neutral-6)",
9
+ backgroundColor: "var(--tsu-bg-panel)",
10
+ border: "1px solid var(--tsu-border)",
11
11
  borderRadius: "var(--tsu-radius-l2-md)",
12
12
  boxShadow: "var(--tsu-shadow-lg)",
13
13
  padding: "6px",
@@ -31,17 +31,18 @@ var itemClass = css({
31
31
  textAlign: "left",
32
32
  lineHeight: 1.4,
33
33
  "&[data-highlighted]": {
34
- backgroundColor: "var(--tsu-accent-3)",
35
- color: "var(--tsu-accent-9)"
34
+ backgroundColor: "var(--tsu-pressed-accent)",
35
+ color: "var(--tsu-accent-subtle-fg)"
36
36
  },
37
37
  "&[data-disabled]": {
38
- opacity: .4,
39
- pointerEvents: "none"
38
+ opacity: "var(--tsu-disabled-opacity)",
39
+ pointerEvents: "none",
40
+ cursor: "not-allowed"
40
41
  }
41
42
  });
42
43
  var separatorClass = css({
43
44
  height: "1px",
44
- backgroundColor: "var(--tsu-neutral-6)",
45
+ backgroundColor: "var(--tsu-border)",
45
46
  margin: "4px 0"
46
47
  });
47
48
  var Menu$1 = (props = {}) => {
@@ -9,7 +9,7 @@ var affixSuffixClass = css({
9
9
  fontWeight: "var(--tsu-font-weight-semibold)",
10
10
  paddingLeft: "10px",
11
11
  marginLeft: "var(--tsu-spacing-xs)",
12
- borderLeft: "1px solid var(--tsu-neutral-7)"
12
+ borderLeft: "1px solid var(--tsu-border)"
13
13
  });
14
14
  var read = (value) => {
15
15
  return typeof value === "function" ? value() : value;