@plastic-js/tsumiki 0.1.51 → 0.1.53

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 -2
  6. package/dist/components/Button.js +17 -19
  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 +7 -7
  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 -109
  20. package/dist/components/Input.js +15 -14
  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 +8 -9
  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 +51 -25
  33. package/dist/components/SelectPc.js +18 -20
  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 +48 -136
  50. package/docs/component-api-pattern.md +1 -1
  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
@@ -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
+ solid: false,
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
+ "solid",
232
+ "intent"
215
233
  ]);
216
234
  const open = (v) => {
217
235
  if (v === void 0) return read(local.open);
@@ -265,6 +283,10 @@ var Select = (props) => {
265
283
  disabled: () => local.disabled ?? false,
266
284
  size: () => read(local.size),
267
285
  solid: () => read(local.solid),
286
+ intent: () => {
287
+ const intent = read(local.intent);
288
+ return intent === "neutral" && read(local.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.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(--tsu-accent-outline-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)",
@@ -81,13 +81,11 @@ var variantClasses = {
81
81
  })
82
82
  };
83
83
  var errorClass = css({
84
- borderColor: "var(--tsu-danger-9) !important",
85
- "&:focus-visible": { borderColor: "var(--tsu-danger-9) !important" }
84
+ borderColor: "var(--tsu-danger-outline-border) !important",
85
+ "&:focus-visible": { borderColor: "var(--tsu-danger-outline-border) !important" }
86
86
  });
87
87
  var disabledClass = css({
88
- backgroundColor: "var(--tsu-disabled-bg) !important",
89
- borderColor: "var(--tsu-disabled-border) !important",
90
- color: "var(--tsu-disabled-fg) !important",
88
+ opacity: "var(--tsu-disabled-opacity)",
91
89
  cursor: "not-allowed"
92
90
  });
93
91
  var indicatorClass = css({
@@ -95,13 +93,13 @@ var indicatorClass = css({
95
93
  display: "flex",
96
94
  alignItems: "center",
97
95
  transition: "transform var(--tsu-transition-fast)",
98
- color: "var(--tsu-neutral-11)",
96
+ color: "var(--tsu-text-secondary)",
99
97
  "&[data-state=\"open\"]": { transform: "rotate(180deg)" }
100
98
  });
101
99
  var positionerClass = css({ zIndex: "var(--tsu-z-dropdown)" });
102
100
  var contentBaseClass = css({
103
- backgroundColor: "var(--tsu-surface)",
104
- border: "1px solid var(--tsu-neutral-6)",
101
+ backgroundColor: "var(--tsu-bg-panel)",
102
+ border: "1px solid var(--tsu-border)",
105
103
  borderRadius: "var(--tsu-radius-l2-md)",
106
104
  boxShadow: "var(--tsu-shadow-lg)",
107
105
  overflow: "hidden"
@@ -116,13 +114,13 @@ var itemClass = css({
116
114
  cursor: "pointer",
117
115
  color: "var(--tsu-fg)",
118
116
  minHeight: "var(--_item-min-height)",
119
- "&:active": { backgroundColor: "var(--tsu-neutral-3)" },
117
+ "&:active": { backgroundColor: "var(--tsu-pressed)" },
120
118
  "&[data-highlighted]": {
121
- backgroundColor: "var(--tsu-accent-3)",
122
- color: "var(--tsu-accent-9)"
119
+ backgroundColor: "var(--tsu-pressed-accent)",
120
+ color: "var(--tsu-accent-subtle-fg)"
123
121
  },
124
122
  "&[data-disabled]": {
125
- color: "var(--tsu-disabled-fg)",
123
+ opacity: "var(--tsu-disabled-opacity)",
126
124
  pointerEvents: "none"
127
125
  }
128
126
  });
@@ -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" },
@@ -27,25 +27,25 @@ var trackClass = css({
27
27
  width: "100%",
28
28
  height: "4px",
29
29
  borderRadius: "2px",
30
- backgroundColor: "var(--tsu-neutral-7)"
30
+ backgroundColor: "var(--tsu-border)"
31
31
  });
32
32
  var rangeClass = css({
33
33
  position: "absolute",
34
34
  height: "100%",
35
35
  borderRadius: "2px",
36
- backgroundColor: "var(--tsu-accent-9)"
36
+ backgroundColor: "var(--tsu-accent-solid-bg)"
37
37
  });
38
38
  var thumbClass = css({
39
39
  width: "20px",
40
40
  height: "20px",
41
41
  borderRadius: "50%",
42
- backgroundColor: "var(--tsu-accent-9)",
43
- border: "2px solid var(--tsu-accent-9)",
44
- boxShadow: "0 1px 3px rgba(0,0,0,0.4)",
42
+ backgroundColor: "var(--tsu-accent-solid-bg)",
43
+ border: "2px solid var(--tsu-accent-solid-bg)",
44
+ boxShadow: "var(--tsu-shadow-sm)",
45
45
  cursor: "pointer",
46
46
  zIndex: 2,
47
47
  transition: "box-shadow var(--tsu-transition-fast)",
48
- "&:focus-visible": { boxShadow: "0 0 0 3px var(--tsu-accent-3)" }
48
+ "&:focus-visible": { boxShadow: "0 0 0 3px var(--tsu-accent-subtle-bg)" }
49
49
  });
50
50
  var indicatorClass = css({
51
51
  position: "absolute",
@@ -55,7 +55,7 @@ var indicatorClass = css({
55
55
  padding: "4px 8px",
56
56
  borderRadius: "6px",
57
57
  backgroundColor: "var(--tsu-fg)",
58
- color: "var(--tsu-bg)",
58
+ color: "var(--tsu-bg-page)",
59
59
  fontSize: "13px",
60
60
  lineHeight: 1,
61
61
  fontFamily: "inherit",
@@ -6,7 +6,7 @@ var rotate = keyframes({
6
6
  from: { transform: "rotate(0deg)" },
7
7
  to: { transform: "rotate(360deg)" }
8
8
  });
9
- var Spinner = ({ size = 24, strokeWidth = 2, color = "var(--tsu-accent-9)", duration = "0.8s", easing = "cubic-bezier(0.4, 0, 0.2, 1)", className } = {}) => {
9
+ var Spinner = ({ size = 24, strokeWidth = 2, color = "var(--tsu-accent-solid-bg)", duration = "0.8s", easing = "cubic-bezier(0.4, 0, 0.2, 1)", className } = {}) => {
10
10
  const style = {
11
11
  "--spinner-size": typeof size === "number" ? `${size}px` : size,
12
12
  "--spinner-stroke": strokeWidth,
@@ -60,13 +60,13 @@ var triggerClass = css({
60
60
  fontFamily: "inherit",
61
61
  touchAction: "manipulation",
62
62
  "&[data-complete] .steps-title, &[data-current] .steps-title": {
63
- color: "var(--tsu-accent-9)",
63
+ color: "var(--tsu-accent-subtle-fg)",
64
64
  fontWeight: "var(--tsu-font-weight-semibold)"
65
65
  }
66
66
  });
67
67
  var titleClass = css({
68
68
  fontSize: "var(--tsu-font-size-xs)",
69
- color: "var(--tsu-neutral-9)",
69
+ color: "var(--tsu-text-subtle)",
70
70
  textAlign: "center"
71
71
  });
72
72
  var indicatorClass = css({
@@ -76,21 +76,21 @@ var indicatorClass = css({
76
76
  width: "28px",
77
77
  height: "28px",
78
78
  borderRadius: "50%",
79
- border: "2px solid var(--tsu-neutral-5)",
80
- backgroundColor: "var(--tsu-surface)",
79
+ border: "2px solid var(--tsu-border)",
80
+ backgroundColor: "var(--tsu-bg-panel)",
81
81
  fontSize: "var(--tsu-font-size-sm)",
82
82
  fontWeight: "var(--tsu-font-weight-semibold)",
83
- color: "var(--tsu-neutral-9)",
83
+ color: "var(--tsu-text-subtle)",
84
84
  transition: "background-color var(--tsu-transition-fast), border-color var(--tsu-transition-fast), color var(--tsu-transition-fast)",
85
85
  ".steps-trigger[data-current] &": {
86
- borderColor: "var(--tsu-accent-8)",
87
- backgroundColor: "var(--tsu-accent-9)",
88
- color: "var(--tsu-bg)"
86
+ borderColor: "var(--tsu-accent-outline-border)",
87
+ backgroundColor: "var(--tsu-accent-solid-bg)",
88
+ color: "var(--tsu-accent-solid-fg)"
89
89
  },
90
90
  ".steps-trigger[data-complete] &": {
91
- borderColor: "var(--tsu-accent-8)",
92
- backgroundColor: "var(--tsu-accent-3)",
93
- color: "var(--tsu-accent-9)"
91
+ borderColor: "var(--tsu-accent-outline-border)",
92
+ backgroundColor: "var(--tsu-accent-subtle-bg)",
93
+ color: "var(--tsu-accent-subtle-fg)"
94
94
  },
95
95
  ".steps-trigger[data-complete] & .steps-indicator-index": { display: "none" },
96
96
  ".steps-trigger[data-complete] & .steps-indicator-check": { display: "flex" },
@@ -104,24 +104,24 @@ var indicatorClass = css({
104
104
  var separatorClass = css({
105
105
  flex: 1,
106
106
  height: "2px",
107
- backgroundColor: "var(--tsu-neutral-5)",
107
+ backgroundColor: "var(--tsu-border)",
108
108
  margin: "0 var(--tsu-spacing-xs)",
109
109
  marginBottom: "20px",
110
- "&[data-complete]": { backgroundColor: "var(--tsu-accent-9)" }
110
+ "&[data-complete]": { backgroundColor: "var(--tsu-accent-solid-bg)" }
111
111
  });
112
112
  var contentClass = css({
113
113
  padding: "var(--tsu-spacing-md)",
114
- backgroundColor: "var(--tsu-neutral-2)",
114
+ backgroundColor: "var(--tsu-bg-panel)",
115
115
  borderRadius: "var(--tsu-radius-l2-md)",
116
116
  fontSize: "var(--tsu-font-size-sm)",
117
- color: "var(--tsu-neutral-11)"
117
+ color: "var(--tsu-text-secondary)"
118
118
  });
119
119
  var completedContentClass = css({
120
120
  padding: "var(--tsu-spacing-md)",
121
121
  textAlign: "center",
122
122
  fontSize: "var(--tsu-font-size-md)",
123
123
  fontWeight: "var(--tsu-font-weight-semibold)",
124
- color: "var(--tsu-success-9)"
124
+ color: "var(--tsu-success-solid-bg)"
125
125
  });
126
126
  var navClass = css({
127
127
  display: "flex",
@@ -130,24 +130,24 @@ var navClass = css({
130
130
  });
131
131
  var navBtnClass = css({
132
132
  padding: "var(--tsu-spacing-sm) var(--tsu-spacing-md)",
133
- border: "1px solid var(--tsu-accent-7)",
133
+ border: "1px solid var(--tsu-accent-outline-border)",
134
134
  borderRadius: "var(--tsu-radius-l2-md)",
135
- backgroundColor: "var(--tsu-surface)",
136
- color: "var(--tsu-neutral-11)",
135
+ backgroundColor: "var(--tsu-bg-panel)",
136
+ color: "var(--tsu-text-secondary)",
137
137
  fontSize: "var(--tsu-font-size-sm)",
138
138
  fontWeight: "var(--tsu-font-weight-medium)",
139
139
  cursor: "pointer",
140
140
  fontFamily: "inherit",
141
141
  touchAction: "manipulation",
142
142
  "&:disabled": {
143
- opacity: .4,
143
+ opacity: "var(--tsu-disabled-opacity)",
144
144
  cursor: "not-allowed"
145
145
  }
146
146
  });
147
147
  var navNextClass = css({
148
- backgroundColor: "var(--tsu-accent-9)",
149
- borderColor: "var(--tsu-accent-8)",
150
- color: "var(--tsu-bg)"
148
+ backgroundColor: "var(--tsu-accent-solid-bg)",
149
+ borderColor: "var(--tsu-accent-solid-bg)",
150
+ color: "var(--tsu-accent-solid-fg)"
151
151
  });
152
152
  var checkIcon = _tmpl.cloneNode(true);
153
153
  var Steps$1 = (props = {}) => {
@@ -76,17 +76,21 @@ var rootClass = css({
76
76
  touchAction: "manipulation",
77
77
  "&[data-disabled]": { cursor: "not-allowed" }
78
78
  });
79
+ var intentClasses = {
80
+ default: css({ "--_sw-track-checked": "var(--tsu-accent-solid-bg)" }),
81
+ danger: css({ "--_sw-track-checked": "var(--tsu-danger-solid-bg)" })
82
+ };
79
83
  var controlClass = css({
80
84
  position: "relative",
81
85
  width: "var(--_sw-track-width, calc(2 * var(--tsu-comp-secondary-height-md)))",
82
86
  height: "var(--_sw-track-height, var(--tsu-comp-secondary-height-md))",
83
87
  flexShrink: 0,
84
88
  borderRadius: "var(--_sw-track-radius, calc(var(--tsu-comp-secondary-height-md) / 2))",
85
- backgroundColor: "var(--tsu-neutral-7)",
89
+ backgroundColor: "var(--tsu-border)",
86
90
  transition: "background-color var(--tsu-transition-fast)",
87
- "&[data-state=\"checked\"]": { backgroundColor: "var(--tsu-accent-9)" },
88
- "&[data-disabled]": { backgroundColor: "var(--tsu-neutral-5)" },
89
- "&[data-disabled][data-state=\"checked\"]": { backgroundColor: "var(--tsu-disabled-border)" }
91
+ "&[data-state=\"checked\"]": { backgroundColor: "var(--_sw-track-checked)" },
92
+ "&[data-disabled]": { backgroundColor: "var(--tsu-border-strong)" },
93
+ "&[data-disabled][data-state=\"checked\"]": { backgroundColor: "var(--tsu-border-strong)" }
90
94
  });
91
95
  var thumbClass = css({
92
96
  position: "absolute",
@@ -95,32 +99,37 @@ var thumbClass = css({
95
99
  width: "var(--_sw-thumb-size, calc(var(--tsu-comp-secondary-height-md) - 4px))",
96
100
  height: "var(--_sw-thumb-size, calc(var(--tsu-comp-secondary-height-md) - 4px))",
97
101
  borderRadius: "50%",
98
- backgroundColor: "var(--tsu-surface)",
99
- boxShadow: "0 1px 3px rgba(0,0,0,0.15)",
102
+ backgroundColor: "var(--tsu-bg-panel)",
103
+ boxShadow: "var(--tsu-shadow-sm)",
100
104
  transform: "translateX(0)",
101
105
  transition: "transform var(--tsu-transition-fast)",
102
106
  "&[data-state=\"checked\"]": { transform: "translateX(var(--_sw-thumb-travel, var(--tsu-comp-secondary-height-md)))" },
103
107
  "&[data-disabled]": {
104
- backgroundColor: "var(--tsu-neutral-8)",
108
+ backgroundColor: "var(--tsu-text-subtle)",
105
109
  boxShadow: "none"
106
110
  },
107
- "&[data-disabled][data-state=\"checked\"]": { backgroundColor: "var(--tsu-surface)" }
111
+ "&[data-disabled][data-state=\"checked\"]": { backgroundColor: "var(--tsu-bg-panel)" }
108
112
  });
109
113
  var labelClass = css({
110
114
  fontSize: "var(--_sw-font-size, var(--tsu-comp-font-size-md))",
111
115
  lineHeight: "var(--_sw-line-height, var(--tsu-comp-line-height-md))",
112
116
  color: "var(--tsu-fg)",
113
- "&[data-disabled]": { color: "var(--tsu-disabled-fg)" }
117
+ "&[data-disabled]": { opacity: "var(--tsu-disabled-opacity)" }
114
118
  });
115
119
  var Switch$1 = (props = {}) => {
116
- const [local, rest] = splitProps(mergeProps$2({ size: "md" }, props), [
120
+ const [local, rest] = splitProps(mergeProps$2({
121
+ size: "md",
122
+ intent: "default"
123
+ }, props), [
117
124
  "size",
125
+ "intent",
118
126
  "className",
119
127
  "children"
120
128
  ]);
121
129
  const classNames = [
122
130
  rootClass,
123
131
  sizeClasses[local.size],
132
+ intentClasses[local.intent],
124
133
  local.className
125
134
  ].filter(Boolean).join(" ");
126
135
  return jsx(Switch.Root, mergeProps(rest, {