@robert-stackflow/oneui 0.1.0 → 0.2.0

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 (77) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +28 -1
  3. package/components/AppShell.module.css +3 -3
  4. package/components/AppearanceSettings.js +1 -1
  5. package/components/Button.d.ts +9 -2
  6. package/components/Button.js +30 -7
  7. package/components/Button.module.css +16 -7
  8. package/components/Card.d.ts +2 -1
  9. package/components/Card.js +13 -3
  10. package/components/Card.module.css +19 -0
  11. package/components/Checkbox.module.css +3 -3
  12. package/components/Combobox.d.ts +4 -2
  13. package/components/Combobox.js +162 -76
  14. package/components/Combobox.module.css +5 -7
  15. package/components/Control.module.css +18 -5
  16. package/components/Dialog.d.ts +6 -1
  17. package/components/Dialog.js +19 -6
  18. package/components/Dialog.module.css +17 -0
  19. package/components/DialogVariants.d.ts +27 -0
  20. package/components/DialogVariants.js +161 -0
  21. package/components/DialogVariants.module.css +29 -0
  22. package/components/HierarchyPicker.module.css +35 -0
  23. package/components/IconButton.module.css +5 -2
  24. package/components/Indicator.module.css +1 -1
  25. package/components/Input.d.ts +2 -1
  26. package/components/Input.js +12 -4
  27. package/components/Input.module.css +18 -1
  28. package/components/LoadingState.d.ts +3 -1
  29. package/components/LoadingState.js +26 -15
  30. package/components/LoadingState.module.css +3 -0
  31. package/components/MenuItem.d.ts +2 -1
  32. package/components/MenuItem.js +2 -0
  33. package/components/MenuItem.module.css +9 -0
  34. package/components/MultiSelect.d.ts +2 -1
  35. package/components/MultiSelect.js +66 -2
  36. package/components/MultiSelect.module.css +38 -0
  37. package/components/NumberInput.js +1 -0
  38. package/components/OptionList.module.css +12 -0
  39. package/components/PasswordField.js +1 -0
  40. package/components/PinInput.js +1 -0
  41. package/components/Popover.d.ts +4 -1
  42. package/components/Popover.js +11 -5
  43. package/components/Popover.module.css +3 -0
  44. package/components/RadioGroup.module.css +2 -2
  45. package/components/SearchField.js +1 -0
  46. package/components/Select.js +1 -0
  47. package/components/Select.module.css +3 -0
  48. package/components/SelectionTag.d.ts +8 -0
  49. package/components/SelectionTag.js +39 -0
  50. package/components/SettingsLayout.d.ts +3 -1
  51. package/components/SettingsLayout.js +19 -3
  52. package/components/SettingsLayout.module.css +20 -0
  53. package/components/Switch.module.css +8 -5
  54. package/components/Table.d.ts +6 -2
  55. package/components/Table.js +14 -4
  56. package/components/TagInput.js +11 -23
  57. package/components/TagInput.module.css +1 -1
  58. package/components/ThemeProvider.js +17 -3
  59. package/components/TreeGuides.d.ts +9 -0
  60. package/components/TreeGuides.js +39 -0
  61. package/components/TreeGuides.module.css +45 -0
  62. package/components/TreeSelect.d.ts +3 -0
  63. package/components/TreeSelect.js +49 -21
  64. package/components/TreeTable.d.ts +15 -0
  65. package/components/TreeTable.js +151 -0
  66. package/components/TreeTable.module.css +53 -0
  67. package/components/VirtualPickerList.module.css +4 -0
  68. package/components/appearance.d.ts +1 -0
  69. package/components/appearance.js +15 -6
  70. package/components/hierarchy.d.ts +1 -0
  71. package/components/index.d.ts +3 -1
  72. package/components/index.js +6 -0
  73. package/components/usePopover.d.ts +2 -2
  74. package/package.json +30 -3
  75. package/styles/base.css +20 -3
  76. package/styles/blue.css +49 -35
  77. package/styles/minimal.css +1 -1
package/styles/base.css CHANGED
@@ -143,7 +143,11 @@
143
143
 
144
144
  :where(:root[data-ui-theme] *) {
145
145
  scrollbar-width: thin;
146
- scrollbar-color: color-mix(in srgb, var(--muted) 35%, transparent) transparent;
146
+ scrollbar-color: var(
147
+ --scrollbar-thumb,
148
+ color-mix(in srgb, var(--muted) 35%, transparent)
149
+ )
150
+ transparent;
147
151
  }
148
152
 
149
153
  @supports selector(::-webkit-scrollbar) {
@@ -169,14 +173,20 @@
169
173
  )::-webkit-scrollbar-thumb {
170
174
  border: 2px solid transparent;
171
175
  border-radius: 999px;
172
- background: color-mix(in srgb, var(--muted) 42%, transparent);
176
+ background: var(
177
+ --scrollbar-thumb,
178
+ color-mix(in srgb, var(--muted) 42%, transparent)
179
+ );
173
180
  background-clip: padding-box;
174
181
  }
175
182
  :where(
176
183
  :root[data-ui-theme],
177
184
  :root[data-ui-theme] *
178
185
  )::-webkit-scrollbar-thumb:hover {
179
- background-color: color-mix(in srgb, var(--muted) 65%, transparent);
186
+ background-color: var(
187
+ --scrollbar-hover,
188
+ color-mix(in srgb, var(--muted) 65%, transparent)
189
+ );
180
190
  }
181
191
  :where(
182
192
  :root[data-ui-theme],
@@ -187,3 +197,10 @@
187
197
  height: 0;
188
198
  }
189
199
  }
200
+
201
+ :root[data-ui-theme] {
202
+ --on-danger: #fff;
203
+ }
204
+ :root[data-ui-theme][data-theme="dark"] {
205
+ --on-danger: #141414;
206
+ }
package/styles/blue.css CHANGED
@@ -1,19 +1,28 @@
1
1
  :root[data-ui-theme="blue"] {
2
2
  color-scheme: light;
3
- --canvas: #f6f7fa;
3
+ --canvas: #f5f7fb;
4
4
  --surface: #fff;
5
5
  --elevated: #fff;
6
- --sidebar: #fbfcfe;
7
- --input: #fff;
8
- --hover: #f1f3f8;
9
- --text: #263149;
10
- --muted: #66748b;
11
- --placeholder: #707d91;
12
- --border: #e5e9f1;
13
- --border-strong: #cdd5e3;
14
- --accent: #5269b6;
15
- --accent-hover: #43599f;
16
- --accent-soft: #edf1fc;
6
+ --sidebar: var(--surface);
7
+ --input: #f9fafc;
8
+ --hover: #edf1f8;
9
+ --text: #25324a;
10
+ --muted: #8592a8;
11
+ --placeholder: color-mix(in srgb, var(--muted) 85%, transparent);
12
+ --border: #e3e8f1;
13
+ --border-strong: var(--border);
14
+ --accent: #5067b8;
15
+ --accent-hover: #4059aa;
16
+ --accent-soft: #ebeffb;
17
+ --accent-fill: #4059aa;
18
+ --accent-fill-hover: #354b91;
19
+ --on-accent-fill: #fff;
20
+ --switch-on: #526edb;
21
+ --switch-on-hover: #526edb;
22
+ --switch-thumb-on: #fff;
23
+ --navigation-active-color: var(--accent);
24
+ --scrollbar-thumb: #c1cada;
25
+ --scrollbar-hover: #97a7be;
17
26
  --on-accent: #fff;
18
27
  --success: #348769;
19
28
  --success-soft: #edf7f1;
@@ -25,28 +34,31 @@
25
34
  --radius-lg: 14px;
26
35
  --control-height: 40px;
27
36
  --space: 24px;
28
- --shadow: 0 3px 16px #273d6010;
29
- --shadow-lg: 0 16px 50px #17243e1c;
37
+ --shadow: 0 12px 36px rgb(29 44 75 / 4.5%);
38
+ --shadow-lg: 0 12px 40px #17244315, 0 2px 8px #17244308;
30
39
  --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
31
40
  --fast: 160ms var(--ease);
32
41
  --sidebar-width: 228px;
33
42
  }
34
43
  :root[data-ui-theme="blue"][data-theme="dark"] {
35
44
  color-scheme: dark;
36
- --canvas: #10151e;
37
- --surface: #19212e;
38
- --elevated: #202a39;
39
- --sidebar: #141c28;
40
- --input: #151e2a;
41
- --hover: #243044;
42
- --text: #e0e7f2;
43
- --muted: #98a6bb;
44
- --placeholder: #6f7f96;
45
- --border: #2c384a;
46
- --border-strong: #41516a;
47
- --accent: #a7b9f1;
48
- --accent-hover: #c0cdf5;
49
- --accent-soft: #283650;
45
+ --canvas: #10151f;
46
+ --surface: #19212f;
47
+ --elevated: #202a3b;
48
+ --sidebar: var(--surface);
49
+ --input: #131c29;
50
+ --hover: #253147;
51
+ --text: #e1e8f4;
52
+ --muted: #95a4bd;
53
+ --border: #2c384d;
54
+ --border-strong: var(--border);
55
+ --accent: #afc1ff;
56
+ --accent-hover: #bdcbee;
57
+ --accent-soft: #263451;
58
+ --accent-fill: #2c3f78;
59
+ --accent-fill-hover: #25355f;
60
+ --scrollbar-thumb: #43516a;
61
+ --scrollbar-hover: #657794;
50
62
  --on-accent: #192540;
51
63
  --success: #87c7a8;
52
64
  --success-soft: #1d362e;
@@ -54,8 +66,8 @@
54
66
  --warning-soft: #383021;
55
67
  --danger: #ee9ba6;
56
68
  --danger-soft: #3e2632;
57
- --shadow: 0 3px 16px #00000012;
58
- --shadow-lg: 0 16px 50px #0005;
69
+ --shadow: 0 8px 30px #03081214;
70
+ --shadow-lg: 0 14px 44px #050a1455, 0 2px 8px #050a1430;
59
71
  }
60
72
  :root[data-ui-theme="blue"][data-accent="neutral"] {
61
73
  --accent: #343a46;
@@ -108,7 +120,7 @@
108
120
  --selected: var(--accent-soft);
109
121
  --navigation: var(--sidebar);
110
122
  --disabled: var(--placeholder);
111
- --control-border: var(--border-strong);
123
+ --control-border: var(--border);
112
124
  --separator-width: 1px;
113
125
  --separator-style: solid;
114
126
  --separator-color: var(--border);
@@ -119,7 +131,7 @@
119
131
  --menu-item-line-height: 20px;
120
132
  --menu-item-padding-x: 11px;
121
133
  --menu-item-gap: 10px;
122
- --menu-item-spacing: 2px;
134
+ --menu-item-spacing: 1px;
123
135
  --menu-item-icon-size: 16px;
124
136
  --menu-item-font-size: 13px;
125
137
  --menu-shortcut-font-size: 11px;
@@ -152,7 +164,7 @@
152
164
  --shadow-edge: #0004;
153
165
  --shadow-modal: #0008;
154
166
  --overlay: #050a1466;
155
- --control-border: #3b4a60;
167
+ --control-border: var(--border);
156
168
  }
157
169
  :root[data-ui-theme="blue"][data-density="compact"] {
158
170
  --control-small: 28px;
@@ -186,10 +198,12 @@
186
198
  --field-radius: var(--radius);
187
199
  --field-font-size: 13px;
188
200
  --field-line-height: 1.4;
201
+ /* Keep the previous token valid for consumers with older composed styles. */
189
202
  --field-hover-strength: 38%;
203
+ --field-hover-border: color-mix(in srgb, var(--accent) 35%, var(--border));
190
204
  --field-focus-border: var(--accent);
191
205
  --field-focus-width: 3px;
192
- --field-focus-strength: 14%;
206
+ --field-focus-strength: 12%;
193
207
  --field-disabled-opacity: 0.55;
194
208
  --field-readonly: var(--canvas);
195
209
  --field-gap: 8px;
@@ -198,7 +212,7 @@
198
212
  --field-message-size: 12px;
199
213
  --select-width: 168px;
200
214
  --popup-background: var(--elevated);
201
- --popup-border: var(--border-strong);
215
+ --popup-border: var(--border);
202
216
  --popup-radius: calc(var(--radius) + 2px);
203
217
  --popup-shadow: var(--shadow-lg);
204
218
  --dialog-width: 520px;
@@ -25,7 +25,7 @@
25
25
  --menu-item-line-height: 20px;
26
26
  --menu-item-padding-x: 10px;
27
27
  --menu-item-gap: 9px;
28
- --menu-item-spacing: 2px;
28
+ --menu-item-spacing: 1px;
29
29
  --menu-item-icon-size: 16px;
30
30
  --menu-item-font-size: 12px;
31
31
  --menu-shortcut-font-size: 11px;