@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
@@ -0,0 +1,212 @@
1
+ /*
2
+ * Semantic token layer.
3
+ *
4
+ * Sits between the raw palette steps (theme.css / color.css) and the
5
+ * components. Components reference *semantics* (`--tsu-accent-solid-bg`,
6
+ * `--tsu-neutral-outline-border`, …), never raw steps — so a style survives
7
+ * wherever it is mounted and dark mode flips everything consistently.
8
+ *
9
+ * Modeled on Park UI / Radix Themes:
10
+ * - every palette has the same 5 variants: solid · surface · subtle ·
11
+ * outline · plain, each with bg / bg-hover / bg-active / border / fg
12
+ * - hover/active tints are ALPHA tokens, so they read identically over the
13
+ * page background and over panel/sheet backgrounds
14
+ * - `disabled` is a uniform 50% opacity state applied on top of any variant
15
+ * — never a separate near-identical gray color
16
+ */
17
+
18
+ :root {
19
+ /* === Background hierarchy (container-aware) === */
20
+ --tsu-bg-page: var(--tsu-neutral-1); /* app page background */
21
+ --tsu-bg-panel: var(--tsu-neutral-2); /* cards, sheets, popovers, dialogs */
22
+ --tsu-bg-control: var(--tsu-neutral-3); /* form controls (inputs, buttons) */
23
+ --tsu-bg-control-hover: var(--tsu-neutral-4);
24
+ --tsu-bg-overlay: rgba(0, 0, 0, 0.5); /* modal scrim */
25
+ --tsu-bg-overlay-soft: rgba(0, 0, 0, 0.35); /* sheet / bottom-scrim */
26
+
27
+ /* Back-compat aliases (existing components) */
28
+ --tsu-bg: var(--tsu-bg-page);
29
+ --tsu-surface: var(--tsu-bg-panel);
30
+ --tsu-surface-raised: var(--tsu-bg-control);
31
+ --tsu-surface-raised-hover: var(--tsu-bg-control-hover);
32
+
33
+ /* === Text hierarchy === */
34
+ --tsu-fg: var(--tsu-neutral-12);
35
+ --tsu-text-primary: var(--tsu-neutral-12);
36
+ --tsu-text-secondary: var(--tsu-neutral-11);
37
+ --tsu-text-subtle: var(--tsu-neutral-9);
38
+
39
+ /* === Border hierarchy === */
40
+ --tsu-border: var(--tsu-neutral-6);
41
+ --tsu-border-strong: var(--tsu-neutral-7);
42
+
43
+ /* === Focus state === */
44
+ --tsu-focus-bg: var(--tsu-bg-control-hover);
45
+ --tsu-focus-border: var(--tsu-accent-8);
46
+ --tsu-focus-ring: var(--tsu-accent-alpha-8);
47
+
48
+ /* === Pressed / active state (touch) — unified === */
49
+ --tsu-pressed: var(--tsu-neutral-alpha-3);
50
+ --tsu-pressed-hover: var(--tsu-neutral-alpha-4);
51
+ --tsu-pressed-accent: var(--tsu-accent-alpha-3);
52
+ --tsu-pressed-accent-hover: var(--tsu-accent-alpha-4);
53
+ /* back-compat alias */
54
+ --tsu-color-pressed: var(--tsu-pressed);
55
+ --tsu-color-pressed-accent: var(--tsu-pressed-accent);
56
+
57
+ /* === Disabled state — uniform 50% opacity, no grayscale ===
58
+ Applied on top of any variant. The whole component fades uniformly so
59
+ the neutral intent (gray border) and the accent intent stay visually
60
+ distinct even when disabled. */
61
+ --tsu-disabled-opacity: 0.5;
62
+ /* fallback colors for surfaces that cannot use opacity */
63
+ --tsu-disabled-bg: var(--tsu-bg-control);
64
+ --tsu-disabled-fg: var(--tsu-neutral-9);
65
+ --tsu-disabled-border: var(--tsu-neutral-7);
66
+ }
67
+
68
+ /* ==========================================================================
69
+ Palette variants
70
+ solid → filled control (button primary, checked toggle, switch track)
71
+ surface → bordered panel-tinted control (surface buttons, surface inputs)
72
+ subtle → tinted control, no border (segmented, chips, selected rows)
73
+ outline → transparent control with a border (outline buttons, inputs)
74
+ plain → text-like control (link buttons, menu items)
75
+ ========================================================================== */
76
+
77
+ :root {
78
+ /* ---- Neutral (olive) ---- */
79
+ --tsu-neutral-solid-bg: var(--tsu-neutral-9);
80
+ --tsu-neutral-solid-bg-hover: var(--tsu-neutral-10);
81
+ --tsu-neutral-solid-fg: var(--tsu-bg-page);
82
+
83
+ --tsu-neutral-surface-bg: var(--tsu-bg-panel);
84
+ --tsu-neutral-surface-bg-hover: var(--tsu-bg-control);
85
+ --tsu-neutral-surface-bg-active: var(--tsu-bg-control-hover);
86
+ --tsu-neutral-surface-border: var(--tsu-neutral-6);
87
+ --tsu-neutral-surface-border-hover: var(--tsu-neutral-7);
88
+ --tsu-neutral-surface-fg: var(--tsu-text-primary);
89
+
90
+ --tsu-neutral-subtle-bg: var(--tsu-neutral-alpha-3);
91
+ --tsu-neutral-subtle-bg-hover: var(--tsu-neutral-alpha-4);
92
+ --tsu-neutral-subtle-bg-active: var(--tsu-neutral-alpha-5);
93
+ --tsu-neutral-subtle-fg: var(--tsu-text-primary);
94
+
95
+ --tsu-neutral-outline-border: var(--tsu-neutral-6);
96
+ --tsu-neutral-outline-border-hover: var(--tsu-neutral-7);
97
+ --tsu-neutral-outline-bg-hover: var(--tsu-neutral-alpha-2);
98
+ --tsu-neutral-outline-bg-active: var(--tsu-neutral-alpha-3);
99
+ --tsu-neutral-outline-fg: var(--tsu-text-primary);
100
+
101
+ --tsu-neutral-plain-fg: var(--tsu-text-primary);
102
+ --tsu-neutral-plain-bg-hover: var(--tsu-neutral-alpha-3);
103
+ --tsu-neutral-plain-bg-active: var(--tsu-neutral-alpha-4);
104
+
105
+ /* ---- Accent (indigo) ---- */
106
+ --tsu-accent-solid-bg: var(--tsu-accent-9);
107
+ --tsu-accent-solid-bg-hover: var(--tsu-accent-10);
108
+ --tsu-accent-solid-fg: #ffffff;
109
+
110
+ --tsu-accent-surface-bg: var(--tsu-accent-alpha-2);
111
+ --tsu-accent-surface-bg-hover: var(--tsu-accent-alpha-3);
112
+ --tsu-accent-surface-bg-active: var(--tsu-accent-alpha-4);
113
+ --tsu-accent-surface-border: var(--tsu-accent-alpha-6);
114
+ --tsu-accent-surface-border-hover: var(--tsu-accent-alpha-7);
115
+ --tsu-accent-surface-fg: var(--tsu-accent-11);
116
+
117
+ --tsu-accent-subtle-bg: var(--tsu-accent-alpha-3);
118
+ --tsu-accent-subtle-bg-hover: var(--tsu-accent-alpha-4);
119
+ --tsu-accent-subtle-bg-active: var(--tsu-accent-alpha-5);
120
+ --tsu-accent-subtle-fg: var(--tsu-accent-11);
121
+
122
+ --tsu-accent-outline-border: var(--tsu-accent-alpha-7);
123
+ --tsu-accent-outline-border-hover: var(--tsu-accent-alpha-8);
124
+ --tsu-accent-outline-bg-hover: var(--tsu-accent-alpha-2);
125
+ --tsu-accent-outline-bg-active: var(--tsu-accent-alpha-3);
126
+ --tsu-accent-outline-fg: var(--tsu-accent-11);
127
+
128
+ --tsu-accent-plain-fg: var(--tsu-accent-11);
129
+ --tsu-accent-plain-bg-hover: var(--tsu-accent-alpha-3);
130
+ --tsu-accent-plain-bg-active: var(--tsu-accent-alpha-4);
131
+
132
+ /* ---- Danger (red) ---- */
133
+ --tsu-danger-solid-bg: var(--tsu-danger-9);
134
+ --tsu-danger-solid-bg-hover: var(--tsu-danger-10);
135
+ --tsu-danger-solid-fg: #ffffff;
136
+
137
+ --tsu-danger-surface-bg: var(--tsu-danger-alpha-2);
138
+ --tsu-danger-surface-bg-hover: var(--tsu-danger-alpha-3);
139
+ --tsu-danger-surface-bg-active: var(--tsu-danger-alpha-4);
140
+ --tsu-danger-surface-border: var(--tsu-danger-alpha-6);
141
+ --tsu-danger-surface-border-hover: var(--tsu-danger-alpha-7);
142
+ --tsu-danger-surface-fg: var(--tsu-danger-11);
143
+
144
+ --tsu-danger-subtle-bg: var(--tsu-danger-alpha-3);
145
+ --tsu-danger-subtle-bg-hover: var(--tsu-danger-alpha-4);
146
+ --tsu-danger-subtle-bg-active: var(--tsu-danger-alpha-5);
147
+ --tsu-danger-subtle-fg: var(--tsu-danger-11);
148
+
149
+ --tsu-danger-outline-border: var(--tsu-danger-alpha-7);
150
+ --tsu-danger-outline-border-hover: var(--tsu-danger-alpha-8);
151
+ --tsu-danger-outline-bg-hover: var(--tsu-danger-alpha-2);
152
+ --tsu-danger-outline-bg-active: var(--tsu-danger-alpha-3);
153
+ --tsu-danger-outline-fg: var(--tsu-danger-11);
154
+
155
+ --tsu-danger-plain-fg: var(--tsu-danger-11);
156
+ --tsu-danger-plain-bg-hover: var(--tsu-danger-alpha-3);
157
+ --tsu-danger-plain-bg-active: var(--tsu-danger-alpha-4);
158
+
159
+ /* ---- Success (green) ---- */
160
+ --tsu-success-solid-bg: var(--tsu-success-9);
161
+ --tsu-success-solid-bg-hover: var(--tsu-success-10);
162
+ --tsu-success-solid-fg: #ffffff;
163
+
164
+ --tsu-success-surface-bg: var(--tsu-success-alpha-2);
165
+ --tsu-success-surface-bg-hover: var(--tsu-success-alpha-3);
166
+ --tsu-success-surface-bg-active: var(--tsu-success-alpha-4);
167
+ --tsu-success-surface-border: var(--tsu-success-alpha-6);
168
+ --tsu-success-surface-border-hover: var(--tsu-success-alpha-7);
169
+ --tsu-success-surface-fg: var(--tsu-success-11);
170
+
171
+ --tsu-success-subtle-bg: var(--tsu-success-alpha-3);
172
+ --tsu-success-subtle-bg-hover: var(--tsu-success-alpha-4);
173
+ --tsu-success-subtle-bg-active: var(--tsu-success-alpha-5);
174
+ --tsu-success-subtle-fg: var(--tsu-success-11);
175
+
176
+ --tsu-success-outline-border: var(--tsu-success-alpha-7);
177
+ --tsu-success-outline-border-hover: var(--tsu-success-alpha-8);
178
+ --tsu-success-outline-bg-hover: var(--tsu-success-alpha-2);
179
+ --tsu-success-outline-bg-active: var(--tsu-success-alpha-3);
180
+ --tsu-success-outline-fg: var(--tsu-success-11);
181
+
182
+ --tsu-success-plain-fg: var(--tsu-success-11);
183
+ --tsu-success-plain-bg-hover: var(--tsu-success-alpha-3);
184
+ --tsu-success-plain-bg-active: var(--tsu-success-alpha-4);
185
+
186
+ /* ---- Warning (amber) ---- */
187
+ --tsu-warning-solid-bg: var(--tsu-warning-9);
188
+ --tsu-warning-solid-bg-hover: var(--tsu-warning-10);
189
+ --tsu-warning-solid-fg: #ffffff;
190
+
191
+ --tsu-warning-surface-bg: var(--tsu-warning-alpha-2);
192
+ --tsu-warning-surface-bg-hover: var(--tsu-warning-alpha-3);
193
+ --tsu-warning-surface-bg-active: var(--tsu-warning-alpha-4);
194
+ --tsu-warning-surface-border: var(--tsu-warning-alpha-6);
195
+ --tsu-warning-surface-border-hover: var(--tsu-warning-alpha-7);
196
+ --tsu-warning-surface-fg: var(--tsu-warning-11);
197
+
198
+ --tsu-warning-subtle-bg: var(--tsu-warning-alpha-3);
199
+ --tsu-warning-subtle-bg-hover: var(--tsu-warning-alpha-4);
200
+ --tsu-warning-subtle-bg-active: var(--tsu-warning-alpha-5);
201
+ --tsu-warning-subtle-fg: var(--tsu-warning-11);
202
+
203
+ --tsu-warning-outline-border: var(--tsu-warning-alpha-7);
204
+ --tsu-warning-outline-border-hover: var(--tsu-warning-alpha-8);
205
+ --tsu-warning-outline-bg-hover: var(--tsu-warning-alpha-2);
206
+ --tsu-warning-outline-bg-active: var(--tsu-warning-alpha-3);
207
+ --tsu-warning-outline-fg: var(--tsu-warning-11);
208
+
209
+ --tsu-warning-plain-fg: var(--tsu-warning-11);
210
+ --tsu-warning-plain-bg-hover: var(--tsu-warning-alpha-3);
211
+ --tsu-warning-plain-bg-active: var(--tsu-warning-alpha-4);
212
+ }
@@ -5,4 +5,5 @@
5
5
  0 4px 16px var(--tsu-neutral-alpha-8);
6
6
  --tsu-shadow-lg: 0 2px 6px var(--tsu-neutral-alpha-6),
7
7
  0 12px 32px var(--tsu-neutral-alpha-10);
8
+ --tsu-shadow-up: 0 -8px 32px var(--tsu-neutral-alpha-10);
8
9
  }
@@ -22,6 +22,20 @@
22
22
  --tsu-accent-11: var(--indigo-11);
23
23
  --tsu-accent-12: var(--indigo-12);
24
24
 
25
+ /* Accent alpha (indigo) — transparent tints for hover/active/overlays */
26
+ --tsu-accent-alpha-1: var(--indigo-a1);
27
+ --tsu-accent-alpha-2: var(--indigo-a2);
28
+ --tsu-accent-alpha-3: var(--indigo-a3);
29
+ --tsu-accent-alpha-4: var(--indigo-a4);
30
+ --tsu-accent-alpha-5: var(--indigo-a5);
31
+ --tsu-accent-alpha-6: var(--indigo-a6);
32
+ --tsu-accent-alpha-7: var(--indigo-a7);
33
+ --tsu-accent-alpha-8: var(--indigo-a8);
34
+ --tsu-accent-alpha-9: var(--indigo-a9);
35
+ --tsu-accent-alpha-10: var(--indigo-a10);
36
+ --tsu-accent-alpha-11: var(--indigo-a11);
37
+ --tsu-accent-alpha-12: var(--indigo-a12);
38
+
25
39
  /* Neutral (olive) */
26
40
  --tsu-neutral-1: var(--olive-1);
27
41
  --tsu-neutral-2: var(--olive-2);
@@ -1,4 +1,5 @@
1
1
  @import './color.css';
2
+ @import './semantic.css';
2
3
  @import './radius.css';
3
4
  @import './sizing.css';
4
5
  @import './typography.css';