@tulipfarm/sprout 0.4.0 → 0.5.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 (89) hide show
  1. package/README.md +55 -53
  2. package/dist/components/agent-avatar.d.ts +27 -0
  3. package/dist/components/agent-avatar.js +67 -0
  4. package/dist/components/alert-dialog.d.ts +2 -2
  5. package/dist/components/alert-dialog.js +4 -4
  6. package/dist/components/attachment.d.ts +1 -1
  7. package/dist/components/attachment.js +2 -2
  8. package/dist/components/avatar.d.ts +2 -10
  9. package/dist/components/avatar.js +3 -40
  10. package/dist/components/board.js +4 -4
  11. package/dist/components/button.d.ts +2 -2
  12. package/dist/components/button.js +13 -29
  13. package/dist/components/card.d.ts +1 -1
  14. package/dist/components/card.js +2 -2
  15. package/dist/components/chat-input.js +3 -3
  16. package/dist/components/chat-sources.js +1 -1
  17. package/dist/components/combobox.d.ts +10 -4
  18. package/dist/components/combobox.js +6 -5
  19. package/dist/components/form.js +1 -1
  20. package/dist/components/gradient-banner.d.ts +2 -2
  21. package/dist/components/gradient-banner.js +1 -1
  22. package/dist/components/input-group.d.ts +7 -7
  23. package/dist/components/input-group.js +7 -7
  24. package/dist/components/input-otp.d.ts +6 -2
  25. package/dist/components/input-otp.js +5 -3
  26. package/dist/components/input.d.ts +2 -2
  27. package/dist/components/input.js +2 -2
  28. package/dist/components/page-header.js +1 -1
  29. package/dist/components/pagination.js +2 -2
  30. package/dist/components/questionnaire.js +1 -1
  31. package/dist/components/record-list.d.ts +2 -2
  32. package/dist/components/record-list.js +2 -2
  33. package/dist/components/result-card.js +1 -1
  34. package/dist/components/rich-text-editor.d.ts +3 -3
  35. package/dist/components/rich-text-editor.js +3 -3
  36. package/dist/components/scroll-area.d.ts +2 -2
  37. package/dist/components/scroll-area.js +2 -2
  38. package/dist/components/search-field.js +1 -1
  39. package/dist/components/select.d.ts +2 -6
  40. package/dist/components/select.js +2 -2
  41. package/dist/components/spinner.d.ts +2 -2
  42. package/dist/components/spinner.js +2 -2
  43. package/dist/components/state-panel-samples.js +13 -13
  44. package/dist/components/state-sample.d.ts +1 -1
  45. package/dist/components/state-sample.js +2 -2
  46. package/dist/components/switch.d.ts +2 -2
  47. package/dist/components/switch.js +2 -2
  48. package/dist/components/table.js +1 -1
  49. package/dist/components/toggle-group.d.ts +2 -2
  50. package/dist/components/toggle-group.js +3 -3
  51. package/dist/components/toggle.d.ts +2 -2
  52. package/dist/components/toggle.js +3 -3
  53. package/dist/index.d.ts +1 -0
  54. package/dist/index.js +1 -0
  55. package/dist/internal/agent-avatar-artwork.d.ts +4 -0
  56. package/dist/internal/agent-avatar-artwork.js +219 -0
  57. package/dist/internal/hash.d.ts +1 -0
  58. package/dist/internal/hash.js +9 -0
  59. package/dist/styles/alert-dialog.css +6 -6
  60. package/dist/styles/attachment.css +13 -13
  61. package/dist/styles/avatar.css +2 -14
  62. package/dist/styles/button-group.css +1 -1
  63. package/dist/styles/button.css +29 -154
  64. package/dist/styles/chat-sources.css +1 -0
  65. package/dist/styles/combobox.css +13 -2
  66. package/dist/styles/command.css +3 -1
  67. package/dist/styles/context-menu.css +2 -0
  68. package/dist/styles/dropdown-menu.css +2 -0
  69. package/dist/styles/gradient-banner.css +0 -5
  70. package/dist/styles/index.css +5 -4
  71. package/dist/styles/input-group.css +36 -28
  72. package/dist/styles/input-otp.css +13 -3
  73. package/dist/styles/input.css +14 -6
  74. package/dist/styles/menubar.css +4 -2
  75. package/dist/styles/navigation-menu.css +1 -1
  76. package/dist/styles/page-header.css +4 -0
  77. package/dist/styles/pagination.css +11 -2
  78. package/dist/styles/record-list.css +1 -1
  79. package/dist/styles/result-card.css +1 -1
  80. package/dist/styles/rich-text-editor.css +3 -3
  81. package/dist/styles/select.css +8 -12
  82. package/dist/styles/sidebar.css +15 -13
  83. package/dist/styles/state-sample.css +2 -2
  84. package/dist/styles/table.css +11 -4
  85. package/dist/styles/tabs.css +1 -3
  86. package/dist/styles/toggle-group.css +6 -6
  87. package/dist/styles/toggle.css +6 -6
  88. package/dist/styles/view-switcher.css +20 -2
  89. package/package.json +5 -1
@@ -58,35 +58,35 @@
58
58
  border-color: color-mix(in oklab, var(--sprout-danger) 35%, transparent);
59
59
  }
60
60
 
61
- .sprout-attachment-size-default {
61
+ .sprout-attachment-size-lg {
62
62
  gap: 8px;
63
63
  font-size: var(--sprout-text-sm);
64
64
  }
65
- .sprout-attachment-size-default:has([data-slot='attachment-content']) {
65
+ .sprout-attachment-size-lg:has([data-slot='attachment-content']) {
66
66
  padding: 8px 10px;
67
67
  }
68
- .sprout-attachment-size-default:has([data-slot='attachment-media']) {
68
+ .sprout-attachment-size-lg:has([data-slot='attachment-media']) {
69
69
  padding: 8px;
70
70
  }
71
- .sprout-attachment-size-sm {
71
+ .sprout-attachment-size-md {
72
72
  gap: 10px;
73
73
  font-size: var(--sprout-text-xs);
74
74
  }
75
- .sprout-attachment-size-sm:has([data-slot='attachment-content']) {
75
+ .sprout-attachment-size-md:has([data-slot='attachment-content']) {
76
76
  padding: 6px 8px;
77
77
  }
78
- .sprout-attachment-size-sm:has([data-slot='attachment-media']) {
78
+ .sprout-attachment-size-md:has([data-slot='attachment-media']) {
79
79
  padding: 6px;
80
80
  }
81
- .sprout-attachment-size-xs {
81
+ .sprout-attachment-size-sm {
82
82
  gap: 6px;
83
83
  border-radius: 8px;
84
84
  font-size: var(--sprout-text-xs);
85
85
  }
86
- .sprout-attachment-size-xs:has([data-slot='attachment-content']) {
86
+ .sprout-attachment-size-sm:has([data-slot='attachment-content']) {
87
87
  padding: 4px 6px;
88
88
  }
89
- .sprout-attachment-size-xs:has([data-slot='attachment-media']) {
89
+ .sprout-attachment-size-sm:has([data-slot='attachment-media']) {
90
90
  padding: 4px;
91
91
  }
92
92
 
@@ -115,10 +115,10 @@
115
115
  background: var(--sprout-hover);
116
116
  color: var(--sprout-text);
117
117
  }
118
- .sprout-attachment-size-sm .sprout-attachment-media {
118
+ .sprout-attachment-size-md .sprout-attachment-media {
119
119
  width: 32px;
120
120
  }
121
- .sprout-attachment-size-xs .sprout-attachment-media {
121
+ .sprout-attachment-size-sm .sprout-attachment-media {
122
122
  width: 28px;
123
123
  border-radius: 6px;
124
124
  }
@@ -141,7 +141,7 @@
141
141
  width: 24px;
142
142
  height: 24px;
143
143
  }
144
- .sprout-attachment-size-xs .sprout-attachment-media svg:not([class*='size-']) {
144
+ .sprout-attachment-size-sm .sprout-attachment-media svg:not([class*='size-']) {
145
145
  width: 14px;
146
146
  height: 14px;
147
147
  }
@@ -206,7 +206,7 @@
206
206
  .sprout-attachment-vertical .sprout-attachment-actions .sprout-button {
207
207
  background: color-mix(in oklab, var(--sprout-surface) 88%, transparent);
208
208
  }
209
- .sprout-attachment-size-xs.sprout-attachment-vertical .sprout-attachment-actions {
209
+ .sprout-attachment-size-sm.sprout-attachment-vertical .sprout-attachment-actions {
210
210
  top: 6px;
211
211
  right: 6px;
212
212
  }
@@ -30,10 +30,6 @@
30
30
  mix-blend-mode: lighten;
31
31
  }
32
32
  }
33
- :is(.sprout-avatar, .sprout-entity-avatar)[data-size='xs'] {
34
- --sprout-avatar-size: 1.25rem;
35
- font-size: var(--sprout-text-xs);
36
- }
37
33
  :is(.sprout-avatar, .sprout-entity-avatar)[data-size='sm'] {
38
34
  --sprout-avatar-size: 1.5rem;
39
35
  font-size: var(--sprout-text-xs);
@@ -45,17 +41,13 @@
45
41
  --sprout-avatar-size: 2.5rem;
46
42
  font-size: var(--sprout-text-base);
47
43
  }
48
- .sprout-entity-avatar[data-size='xl'] {
49
- --sprout-avatar-size: 4rem;
50
- font-size: 1.5rem;
51
- }
52
44
  .sprout-entity-avatar {
53
45
  overflow: hidden;
54
46
  }
55
47
  .sprout-entity-avatar[data-shape='square'] {
56
48
  border-radius: 0.5rem;
57
49
  }
58
- .sprout-entity-avatar[data-shape='square'][data-size='xs'] {
50
+ .sprout-entity-avatar[data-shape='square'][data-size='sm'] {
59
51
  border-radius: 0.25rem;
60
52
  }
61
53
 
@@ -109,15 +101,11 @@
109
101
  width: 0.5rem;
110
102
  height: 0.5rem;
111
103
  }
112
- .sprout-avatar[data-size='xs'] > .sprout-avatar-badge {
113
- width: 0.375rem;
114
- height: 0.375rem;
115
- }
116
104
  .sprout-avatar[data-size='sm'] > .sprout-avatar-badge {
117
105
  width: 0.5rem;
118
106
  height: 0.5rem;
119
107
  }
120
- .sprout-avatar:is([data-size='xs'], [data-size='sm']) > .sprout-avatar-badge > svg {
108
+ .sprout-avatar[data-size='sm'] > .sprout-avatar-badge > svg {
121
109
  display: none;
122
110
  }
123
111
  .sprout-avatar[data-size='lg'] > .sprout-avatar-badge {
@@ -55,7 +55,7 @@
55
55
  display: flex;
56
56
  align-items: center;
57
57
  gap: 8px;
58
- min-height: 28px;
58
+ min-height: var(--sprout-control-height);
59
59
  padding-inline: 10px;
60
60
  border: 1px solid var(--sprout-input);
61
61
  border-radius: var(--sprout-radius-control);
@@ -7,7 +7,7 @@
7
7
  align-items: center;
8
8
  justify-content: center;
9
9
  gap: 6px;
10
- height: 28px;
10
+ height: var(--sprout-control-height);
11
11
  padding: 0 10px;
12
12
  border: 1px solid transparent;
13
13
  border-radius: var(--sprout-radius-control);
@@ -104,6 +104,17 @@
104
104
  .sprout-button-variant-destructive:focus-visible {
105
105
  outline-color: var(--sprout-danger);
106
106
  }
107
+ .sprout-button-variant-ghost-destructive {
108
+ background: transparent;
109
+ color: var(--sprout-danger);
110
+ }
111
+ .sprout-button-variant-ghost-destructive:hover,
112
+ .sprout-button-variant-ghost-destructive:active {
113
+ background: color-mix(in srgb, var(--sprout-danger) 10%, transparent);
114
+ }
115
+ .sprout-button-variant-ghost-destructive:focus-visible {
116
+ outline-color: var(--sprout-danger);
117
+ }
107
118
  .sprout-button-variant-link {
108
119
  background: transparent;
109
120
  color: var(--sprout-primary);
@@ -122,158 +133,31 @@
122
133
  background: color-mix(in srgb, var(--sprout-info) 16%, transparent);
123
134
  }
124
135
 
125
- .sprout-button-size-default:has([data-icon='inline-start']),
136
+ .sprout-button-size-md:has([data-icon='inline-start']),
126
137
  .sprout-button-size-lg:has([data-icon='inline-start']) {
127
138
  padding-inline-start: 8px;
128
139
  }
129
- .sprout-button-size-default:has([data-icon='inline-end']),
140
+ .sprout-button-size-md:has([data-icon='inline-end']),
130
141
  .sprout-button-size-lg:has([data-icon='inline-end']) {
131
142
  padding-inline-end: 8px;
132
143
  }
133
- .sprout-button-size-xs {
134
- --sprout-button-icon: 0.75rem;
135
- gap: 4px;
136
- height: 24px;
137
- padding: 0 8px;
138
- border-radius: min(var(--sprout-radius-control), 10px);
139
- font-size: var(--sprout-text-xs);
140
- }
141
144
  .sprout-button-size-sm {
142
145
  --sprout-button-icon: 0.875rem;
143
146
  gap: 4px;
147
+ height: calc(var(--sprout-control-height) - 4px);
144
148
  padding: 0 10px;
145
149
  border-radius: min(var(--sprout-radius-control), 12px);
146
150
  font-size: var(--sprout-text-xs);
151
+ line-height: 16px;
147
152
  }
148
- .sprout-button-size-xs:has([data-icon='inline-start']),
149
153
  .sprout-button-size-sm:has([data-icon='inline-start']) {
150
154
  padding-inline-start: 6px;
151
155
  }
152
- .sprout-button-size-xs:has([data-icon='inline-end']),
153
156
  .sprout-button-size-sm:has([data-icon='inline-end']) {
154
157
  padding-inline-end: 6px;
155
158
  }
156
159
  .sprout-button-size-lg {
157
- height: 36px;
158
- }
159
- .sprout-button-size-back {
160
- --sprout-button-icon: 0.875rem;
161
- gap: 4px;
162
- padding: 0 10px 0 6px;
163
- border-radius: min(var(--sprout-radius-control), 12px);
164
- font-size: var(--sprout-text-xs);
165
- }
166
- .sprout-button-size-onboarding {
167
- gap: 8px;
168
- width: 100%;
169
- height: 44px;
170
- padding: 0 16px;
171
- font-size: var(--sprout-text-base);
172
- }
173
- .sprout-button-size-bud,
174
- .sprout-button-size-bud-labeled {
175
- border-radius: 999px;
176
- cursor: grab;
177
- touch-action: none;
178
- }
179
- .sprout-button-size-bud:active,
180
- .sprout-button-size-bud-labeled:active {
181
- cursor: grabbing;
182
- }
183
- .sprout-button-size-bud {
184
- width: 64px;
185
- height: 64px;
186
- padding: 0;
187
- }
188
- .sprout-button-size-bud-labeled {
189
- gap: 8px;
190
- height: 48px;
191
- padding: 0 16px 0 8px;
192
- }
193
- .sprout-button-size-chat-row {
194
- justify-content: space-between;
195
- gap: 16px;
196
- width: 100%;
197
- min-width: 0;
198
- height: 44px;
199
- padding: 0 12px;
200
- color: var(--sprout-text);
201
- text-align: start;
202
- }
203
- .sprout-button-size-task-link {
204
- justify-content: flex-start;
205
- min-width: 0;
206
- max-width: 100%;
207
- height: auto;
208
- min-height: 32px;
209
- padding-block: 4px;
210
- text-align: start;
211
- white-space: normal;
212
- }
213
- .sprout-button-size-card-title {
214
- justify-content: flex-start;
215
- gap: 8px;
216
- width: 100%;
217
- min-width: 0;
218
- height: 40px;
219
- padding: 0;
220
- color: var(--sprout-text);
221
- text-align: start;
222
- white-space: normal;
223
- }
224
- .sprout-button-size-result-card {
225
- height: 32px;
226
- padding: 0 12px;
227
- }
228
- .sprout-button-size-calendar-title {
229
- gap: 4px;
230
- height: 32px;
231
- padding: 0 4px;
232
- color: var(--sprout-text);
233
- letter-spacing: -0.015em;
234
- }
235
- .sprout-button-size-calendar {
236
- height: 32px;
237
- padding: 0 8px;
238
- font-size: var(--sprout-text-xs);
239
- }
240
- .sprout-button-size-calendar-icon {
241
- width: 32px;
242
- height: 32px;
243
- padding: 0;
244
- }
245
- .sprout-button-size-nav {
246
- justify-content: flex-start;
247
- gap: 8px;
248
- width: 100%;
249
- height: 32px;
250
- text-align: start;
251
- }
252
- .sprout-button-size-column-header,
253
- .sprout-button-size-column-header-end {
254
- --sprout-button-icon: 0.875rem;
255
- gap: 4px;
256
- padding: 0 8px;
257
- }
258
- .sprout-button-size-column-header {
259
- margin-inline-start: -8px;
260
- }
261
- .sprout-button-size-column-header-end {
262
- flex-direction: row-reverse;
263
- margin-inline-end: -8px;
264
- }
265
- .sprout-button-size-table-link {
266
- justify-content: flex-start;
267
- min-width: 0;
268
- height: auto;
269
- padding: 2px 0;
270
- text-align: start;
271
- }
272
- .sprout-button-size-badge {
273
- min-width: 0;
274
- max-width: 176px;
275
- padding: 0 10px;
276
- border-radius: 999px;
160
+ height: calc(var(--sprout-control-height) + 4px);
277
161
  }
278
162
  .sprout-button-size-icon,
279
163
  .sprout-button-size-icon-xs,
@@ -282,8 +166,8 @@
282
166
  padding: 0;
283
167
  }
284
168
  .sprout-button-size-icon {
285
- width: 32px;
286
- height: 32px;
169
+ width: var(--sprout-control-height);
170
+ height: var(--sprout-control-height);
287
171
  }
288
172
  .sprout-button-size-icon-xs {
289
173
  --sprout-button-icon: 0.75rem;
@@ -292,15 +176,14 @@
292
176
  border-radius: min(var(--sprout-radius-control), 10px);
293
177
  }
294
178
  .sprout-button-size-icon-sm {
295
- width: 28px;
296
- height: 28px;
179
+ width: calc(var(--sprout-control-height) - 4px);
180
+ height: calc(var(--sprout-control-height) - 4px);
297
181
  border-radius: min(var(--sprout-radius-control), 12px);
298
182
  }
299
183
  .sprout-button-size-icon-lg {
300
- width: 36px;
301
- height: 36px;
184
+ width: calc(var(--sprout-control-height) + 4px);
185
+ height: calc(var(--sprout-control-height) + 4px);
302
186
  }
303
- [data-slot='button-group'] .sprout-button-size-xs,
304
187
  [data-slot='button-group'] .sprout-button-size-sm,
305
188
  [data-slot='button-group'] .sprout-button-size-icon-xs,
306
189
  [data-slot='button-group'] .sprout-button-size-icon-sm {
@@ -317,18 +200,21 @@
317
200
  font-family: var(--sprout-font);
318
201
  }
319
202
  /* Long labels such as "Add #channel to execution limits" wrap instead of overflowing. */
320
- .sprout-button-action > :is(.sprout-button-size-default, .sprout-button-size-sm, .sprout-button-size-lg),
203
+ .sprout-button-action > :is(.sprout-button-size-md, .sprout-button-size-sm, .sprout-button-size-lg),
321
204
  .sprout-action-group-row > .sprout-button {
322
205
  max-width: 100%;
323
206
  height: auto;
324
- min-height: 28px;
207
+ min-height: var(--sprout-control-height);
325
208
  padding-block: 3px;
326
209
  white-space: normal;
327
210
  overflow-wrap: anywhere;
328
211
  text-align: center;
329
212
  }
213
+ .sprout-button-action > .sprout-button-size-sm {
214
+ min-height: calc(var(--sprout-control-height) - 4px);
215
+ }
330
216
  .sprout-button-action > .sprout-button-size-lg {
331
- min-height: 36px;
217
+ min-height: calc(var(--sprout-control-height) + 4px);
332
218
  }
333
219
  .sprout-action-group-row {
334
220
  display: flex;
@@ -343,17 +229,6 @@
343
229
  max-width: 100%;
344
230
  }
345
231
 
346
- @media (min-width: 640px) {
347
- .sprout-button-size-calendar-title {
348
- font-size: 1.125rem;
349
- }
350
- }
351
- @media (max-width: 639px) {
352
- .sprout-button-size-back {
353
- width: 28px;
354
- padding-inline: 0;
355
- }
356
- }
357
232
  @media (pointer: coarse) {
358
233
  .sprout-button,
359
234
  .sprout-button-action > .sprout-button,
@@ -150,6 +150,7 @@
150
150
  }
151
151
  .sprout-chat-sources-checked.sprout-button {
152
152
  display: inline;
153
+ height: auto;
153
154
  min-height: 0;
154
155
  padding: 0;
155
156
  font: inherit;
@@ -97,7 +97,7 @@
97
97
  gap: 8px;
98
98
  width: 100%;
99
99
  min-width: 0;
100
- min-height: 28px;
100
+ min-height: calc(var(--sprout-control-height) - 4px);
101
101
  padding: 4px 32px 4px 6px;
102
102
  border-radius: var(--sprout-radius-control);
103
103
  color: var(--sprout-text);
@@ -170,7 +170,7 @@
170
170
  gap: 4px;
171
171
  width: 100%;
172
172
  min-width: 0;
173
- min-height: 32px;
173
+ min-height: var(--sprout-control-height);
174
174
  padding: 4px 10px;
175
175
  border: 1px solid var(--sprout-input);
176
176
  border-radius: var(--sprout-radius-control);
@@ -182,6 +182,17 @@
182
182
  outline-offset: 0;
183
183
  cursor: text;
184
184
  }
185
+ .sprout-combobox-chips-size-sm {
186
+ min-height: calc(var(--sprout-control-height) - 4px);
187
+ padding-block: 2px;
188
+ border-radius: min(var(--sprout-radius-control), 12px);
189
+ font-size: var(--sprout-text-xs);
190
+ line-height: 16px;
191
+ }
192
+ .sprout-combobox-chips-size-lg {
193
+ min-height: calc(var(--sprout-control-height) + 4px);
194
+ padding-block: 6px;
195
+ }
185
196
  .sprout-combobox-chips:has([data-slot='combobox-chip']) {
186
197
  padding-inline: 4px;
187
198
  }
@@ -40,7 +40,7 @@
40
40
  display: flex;
41
41
  align-items: center;
42
42
  gap: 6px;
43
- height: 32px;
43
+ height: var(--sprout-control-height);
44
44
  min-width: 0;
45
45
  padding-inline: 8px;
46
46
  border: 1px solid color-mix(in oklab, var(--sprout-input) 30%, transparent);
@@ -135,10 +135,12 @@
135
135
 
136
136
  .sprout-command-item {
137
137
  position: relative;
138
+ box-sizing: border-box;
138
139
  display: flex;
139
140
  align-items: center;
140
141
  gap: 8px;
141
142
  min-width: 0;
143
+ min-height: var(--sprout-control-height);
142
144
  padding: 6px 8px;
143
145
  border-radius: calc(var(--sprout-radius-control) - 2px);
144
146
  color: var(--sprout-text);
@@ -49,10 +49,12 @@
49
49
 
50
50
  .sprout-context-menu-item {
51
51
  position: relative;
52
+ box-sizing: border-box;
52
53
  display: flex;
53
54
  align-items: center;
54
55
  gap: 6px;
55
56
  min-width: 0;
57
+ min-height: calc(var(--sprout-control-height) - 4px);
56
58
  padding: 4px 6px;
57
59
  border-radius: var(--sprout-radius-control);
58
60
  color: var(--sprout-text);
@@ -48,10 +48,12 @@
48
48
 
49
49
  .sprout-dropdown-menu-item {
50
50
  position: relative;
51
+ box-sizing: border-box;
51
52
  display: flex;
52
53
  align-items: center;
53
54
  gap: 6px;
54
55
  min-width: 0;
56
+ min-height: calc(var(--sprout-control-height) - 4px);
55
57
  padding: 4px 6px;
56
58
  border-radius: var(--sprout-radius-control);
57
59
  color: var(--sprout-text);
@@ -80,11 +80,6 @@
80
80
  min-height: 10rem;
81
81
  padding: 1.25rem;
82
82
  }
83
- .sprout-gradient-banner[data-size='xl'] {
84
- min-height: 22.5rem;
85
- padding: 2rem;
86
- border-radius: 1rem;
87
- }
88
83
 
89
84
  .sprout-gradient-banner-art {
90
85
  position: absolute;
@@ -166,6 +166,7 @@
166
166
  --sprout-text-base: 1rem;
167
167
  --sprout-radius-control: 0.375rem;
168
168
  --sprout-radius-panel: 0.75rem;
169
+ --sprout-control-height: 32px;
169
170
  --sprout-sidebar-width: 15.25rem;
170
171
  --sprout-sidebar-icon-width: 3.5rem;
171
172
  --sprout-sidebar-mobile-width: 18rem;
@@ -181,14 +182,14 @@
181
182
  .light {
182
183
  --sprout-canvas: #f8f8f8;
183
184
  --sprout-surface: #fdfdfd;
184
- --sprout-hover: #eeeeee;
185
+ --sprout-hover: #ededed;
185
186
  --sprout-active: #e3e3e3;
186
187
  --sprout-text: #242424;
187
188
  --sprout-muted: #626262;
188
189
  --sprout-line: #e0e0e0;
189
190
  --sprout-border: #909090;
190
191
  --sprout-border-strong: #707070;
191
- --sprout-input: #d4d4d4;
192
+ --sprout-input: #939393;
192
193
  --sprout-primary: #262626;
193
194
  --sprout-primary-hover: #171717;
194
195
  --sprout-primary-active: #0d0d0d;
@@ -221,7 +222,7 @@
221
222
  --sprout-line: #383838;
222
223
  --sprout-border: #808080;
223
224
  --sprout-border-strong: #a0a0a0;
224
- --sprout-input: #474747;
225
+ --sprout-input: #686868;
225
226
  --sprout-primary: #ededed;
226
227
  --sprout-primary-hover: #d6d6d6;
227
228
  --sprout-primary-active: #c4c4c4;
@@ -254,7 +255,7 @@
254
255
  --sprout-line: #383838;
255
256
  --sprout-border: #808080;
256
257
  --sprout-border-strong: #a0a0a0;
257
- --sprout-input: #474747;
258
+ --sprout-input: #686868;
258
259
  --sprout-primary: #ededed;
259
260
  --sprout-primary-hover: #d6d6d6;
260
261
  --sprout-primary-active: #c4c4c4;
@@ -6,7 +6,7 @@
6
6
  align-items: center;
7
7
  width: 100%;
8
8
  min-width: 0;
9
- height: 32px;
9
+ height: var(--sprout-control-height);
10
10
  border: 1px solid var(--sprout-input);
11
11
  border-radius: var(--sprout-radius-control);
12
12
  background-color: var(--sprout-surface);
@@ -43,8 +43,12 @@
43
43
  outline-color: transparent;
44
44
  }
45
45
 
46
+ .sprout-input-group-size-sm {
47
+ height: calc(var(--sprout-control-height) - 4px);
48
+ border-radius: min(var(--sprout-radius-control), 12px);
49
+ }
46
50
  .sprout-input-group-size-lg {
47
- height: 44px;
51
+ height: calc(var(--sprout-control-height) + 4px);
48
52
  }
49
53
 
50
54
  .sprout-input-group-variant-composer,
@@ -159,38 +163,42 @@
159
163
  height: 16px;
160
164
  }
161
165
 
162
- .sprout-button.sprout-input-group-button {
163
- gap: 8px;
164
- font-size: var(--sprout-text-sm);
165
- box-shadow: none;
166
+ /* 4px inset on each side of the group, so the button tracks the group size. */
167
+ .sprout-input-group {
168
+ --sprout-input-group-button-height: calc(var(--sprout-control-height) - 8px);
166
169
  }
167
- .sprout-button.sprout-input-group-button-size-xs {
168
- --sprout-button-icon: 0.875rem;
169
- gap: 4px;
170
- height: 24px;
171
- padding: 0 6px;
172
- border-radius: max(calc(var(--sprout-radius-control) - 2px), 2px);
170
+ .sprout-input-group-size-sm {
171
+ --sprout-input-group-button-height: calc(var(--sprout-control-height) - 12px);
172
+ }
173
+ .sprout-input-group-size-lg {
174
+ --sprout-input-group-button-height: calc(var(--sprout-control-height) - 4px);
175
+ }
176
+ .sprout-input-group-addon-align-block-start,
177
+ .sprout-input-group-addon-align-block-end {
178
+ --sprout-input-group-button-height: calc(var(--sprout-control-height) - 4px);
173
179
  }
174
- .sprout-button.sprout-input-group-button-size-sm {
180
+ .sprout-button.sprout-input-group-button {
175
181
  --sprout-button-icon: 1rem;
176
182
  gap: 6px;
177
- height: 28px;
183
+ height: var(--sprout-input-group-button-height);
178
184
  padding: 0 8px;
179
- border-radius: var(--sprout-radius-control);
185
+ border-radius: max(calc(var(--sprout-radius-control) - 2px), 2px);
186
+ font-size: var(--sprout-text-sm);
187
+ box-shadow: none;
180
188
  }
181
- .sprout-button.sprout-input-group-button-size-icon-xs {
182
- --sprout-button-icon: 0.875rem;
183
- width: 24px;
184
- height: 24px;
189
+ .sprout-button.sprout-input-group-button-size-icon {
190
+ width: var(--sprout-input-group-button-height);
185
191
  padding: 0;
186
- border-radius: max(calc(var(--sprout-radius-control) - 2px), 2px);
187
192
  }
188
- .sprout-button.sprout-input-group-button-size-icon-sm {
189
- --sprout-button-icon: 1rem;
190
- width: 28px;
191
- height: 28px;
193
+ .sprout-input-group-size-sm .sprout-button.sprout-input-group-button {
194
+ --sprout-button-icon: 0.875rem;
195
+ gap: 4px;
196
+ padding: 0 6px;
197
+ font-size: var(--sprout-text-xs);
198
+ line-height: 16px;
199
+ }
200
+ .sprout-input-group-size-sm .sprout-button.sprout-input-group-button-size-icon {
192
201
  padding: 0;
193
- border-radius: var(--sprout-radius-control);
194
202
  }
195
203
  @media (pointer: coarse) {
196
204
  .sprout-input-group-variant-composer .sprout-button.sprout-input-group-button {
@@ -232,9 +240,9 @@
232
240
  .sprout-input-group:has(> [data-align='block-start']) > .sprout-input-group-input {
233
241
  padding-bottom: 8px;
234
242
  }
235
- .sprout-input-group-size-lg > .sprout-input-group-input {
236
- font-size: var(--sprout-text-base);
237
- line-height: 24px;
243
+ .sprout-input-group-size-sm > .sprout-input-group-input {
244
+ font-size: var(--sprout-text-xs);
245
+ line-height: 16px;
238
246
  }
239
247
  .sprout-input-group-input[type='search']::-webkit-search-cancel-button,
240
248
  .sprout-input-group-input[type='search']::-webkit-search-decoration {
@@ -35,8 +35,8 @@
35
35
  .sprout-input-otp-slot {
36
36
  position: relative;
37
37
  box-sizing: border-box;
38
- width: 32px;
39
- height: 32px;
38
+ width: var(--sprout-control-height);
39
+ height: var(--sprout-control-height);
40
40
  min-width: 0;
41
41
  margin: 0;
42
42
  padding: 0;
@@ -64,6 +64,16 @@
64
64
  border-start-end-radius: var(--sprout-radius-control);
65
65
  border-end-end-radius: var(--sprout-radius-control);
66
66
  }
67
+ .sprout-input-otp-size-sm .sprout-input-otp-slot {
68
+ width: calc(var(--sprout-control-height) - 4px);
69
+ height: calc(var(--sprout-control-height) - 4px);
70
+ font-size: var(--sprout-text-xs);
71
+ line-height: 16px;
72
+ }
73
+ .sprout-input-otp-size-lg .sprout-input-otp-slot {
74
+ width: calc(var(--sprout-control-height) + 4px);
75
+ height: calc(var(--sprout-control-height) + 4px);
76
+ }
67
77
  .sprout-input-otp-slot::selection {
68
78
  background: transparent;
69
79
  }
@@ -87,7 +97,7 @@
87
97
  }
88
98
 
89
99
  @media (pointer: coarse) {
90
- .sprout-input-otp-slot {
100
+ .sprout-input-otp .sprout-input-otp-slot {
91
101
  width: 44px;
92
102
  height: 44px;
93
103
  font-size: var(--sprout-text-base);