@tulipfarm/sprout 0.1.0 → 0.3.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 (98) hide show
  1. package/README.md +111 -0
  2. package/dist/components/agent-fanout.d.ts +46 -0
  3. package/dist/components/agent-fanout.js +228 -0
  4. package/dist/components/attachment.js +2 -2
  5. package/dist/components/brand-icon.js +4 -0
  6. package/dist/components/canvas.js +2 -2
  7. package/dist/components/chat-input.d.ts +94 -0
  8. package/dist/components/chat-input.js +279 -0
  9. package/dist/components/chat-sources.js +11 -2
  10. package/dist/components/code-block.js +2 -33
  11. package/dist/components/file-explorer.d.ts +27 -0
  12. package/dist/components/file-explorer.js +300 -0
  13. package/dist/components/file-viewer.d.ts +18 -1
  14. package/dist/components/file-viewer.js +35 -8
  15. package/dist/components/presence-cursor.d.ts +19 -0
  16. package/dist/components/presence-cursor.js +14 -0
  17. package/dist/components/questionnaire.js +2 -1
  18. package/dist/components/schema-diagram.js +5 -78
  19. package/dist/components/search-dialog.js +5 -4
  20. package/dist/components/sql-viewer.d.ts +76 -0
  21. package/dist/components/sql-viewer.js +409 -0
  22. package/dist/components/state-panel.js +2 -2
  23. package/dist/index.d.ts +5 -0
  24. package/dist/index.js +5 -0
  25. package/dist/internal/brand-glyphs.d.ts +28 -0
  26. package/dist/internal/brand-glyphs.js +24 -0
  27. package/dist/internal/code-tokens.d.ts +4 -0
  28. package/dist/internal/code-tokens.js +34 -0
  29. package/dist/internal/flow.d.ts +22 -0
  30. package/dist/internal/flow.js +82 -0
  31. package/dist/styles/accordion.css +2 -2
  32. package/dist/styles/agent-fanout.css +529 -0
  33. package/dist/styles/alert-dialog.css +2 -2
  34. package/dist/styles/alert.css +2 -2
  35. package/dist/styles/attachment.css +4 -24
  36. package/dist/styles/badge.css +2 -2
  37. package/dist/styles/brand-icon.css +2 -2
  38. package/dist/styles/breadcrumb.css +2 -2
  39. package/dist/styles/button.css +2 -2
  40. package/dist/styles/calendar.css +3 -3
  41. package/dist/styles/canvas.css +4 -18
  42. package/dist/styles/carousel.css +2 -2
  43. package/dist/styles/chart.css +2 -2
  44. package/dist/styles/chat-confirmation.css +2 -2
  45. package/dist/styles/chat-input.css +240 -0
  46. package/dist/styles/chat-sources.css +2 -2
  47. package/dist/styles/checkbox.css +2 -3
  48. package/dist/styles/choice-list.css +2 -2
  49. package/dist/styles/code-block.css +2 -2
  50. package/dist/styles/collapsible.css +2 -2
  51. package/dist/styles/combobox.css +6 -6
  52. package/dist/styles/command.css +2 -2
  53. package/dist/styles/context-menu.css +3 -3
  54. package/dist/styles/dialog.css +2 -2
  55. package/dist/styles/dropdown-menu.css +1 -1
  56. package/dist/styles/field.css +2 -3
  57. package/dist/styles/file-explorer.css +517 -0
  58. package/dist/styles/file-viewer.css +113 -16
  59. package/dist/styles/hover-card.css +2 -2
  60. package/dist/styles/index.css +9 -0
  61. package/dist/styles/input-group.css +6 -11
  62. package/dist/styles/input-otp.css +2 -2
  63. package/dist/styles/input.css +3 -4
  64. package/dist/styles/mention-list.css +1 -1
  65. package/dist/styles/menubar.css +3 -3
  66. package/dist/styles/message-response.css +4 -4
  67. package/dist/styles/message-scroller.css +2 -2
  68. package/dist/styles/message.css +5 -5
  69. package/dist/styles/navigation-menu.css +2 -2
  70. package/dist/styles/page-header.css +4 -4
  71. package/dist/styles/plan-outline.css +6 -6
  72. package/dist/styles/presence-cursor.css +68 -0
  73. package/dist/styles/prompt-list.css +2 -2
  74. package/dist/styles/questionnaire.css +2 -17
  75. package/dist/styles/radio-group.css +2 -3
  76. package/dist/styles/reasoning-effort.css +2 -2
  77. package/dist/styles/review-card.css +2 -2
  78. package/dist/styles/rich-text-editor.css +2 -2
  79. package/dist/styles/schema-diagram.css +4 -4
  80. package/dist/styles/scroll-area.css +2 -2
  81. package/dist/styles/search-dialog.css +0 -83
  82. package/dist/styles/select.css +3 -3
  83. package/dist/styles/separator.css +2 -2
  84. package/dist/styles/sheet.css +2 -2
  85. package/dist/styles/sidebar.css +2 -2
  86. package/dist/styles/slider.css +1 -1
  87. package/dist/styles/sql-viewer.css +406 -0
  88. package/dist/styles/state-panel.css +1 -10
  89. package/dist/styles/switch.css +2 -2
  90. package/dist/styles/table.css +10 -10
  91. package/dist/styles/tabs.css +4 -4
  92. package/dist/styles/textarea.css +3 -4
  93. package/dist/styles/themes/tulipfarm.css +89 -99
  94. package/dist/styles/toast.css +2 -2
  95. package/dist/styles/toggle-group.css +2 -2
  96. package/dist/styles/toggle.css +2 -2
  97. package/dist/styles/tool-activity.css +5 -5
  98. package/package.json +27 -6
@@ -129,8 +129,8 @@
129
129
  .sprout-sidebar-menu-action:focus-visible,
130
130
  .sprout-sidebar-trigger:focus-visible,
131
131
  .sprout-sidebar-close:focus-visible {
132
- outline: 2px solid var(--sprout-focus);
133
- outline-offset: -2px;
132
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
133
+ outline-offset: -1px;
134
134
  }
135
135
  .sprout-sidebar-menu-button:disabled,
136
136
  .sprout-sidebar-menu-button[data-disabled] {
@@ -133,7 +133,7 @@
133
133
  }
134
134
  .sprout-slider-thumb:has(:focus-visible) {
135
135
  outline: 2px solid Highlight;
136
- outline-offset: 2px;
136
+ outline-offset: 0;
137
137
  }
138
138
  .sprout-slider-control[data-disabled] .sprout-slider-range {
139
139
  background-color: GrayText;
@@ -0,0 +1,406 @@
1
+ @layer components {
2
+ .sprout-sql-viewer {
3
+ --sprout-sql-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
4
+ position: relative;
5
+ display: flex;
6
+ flex: 1 1 0%;
7
+ box-sizing: border-box;
8
+ width: 100%;
9
+ height: 100%;
10
+ min-width: 0;
11
+ min-height: 24rem;
12
+ overflow: hidden;
13
+ border: 1px solid var(--sprout-line);
14
+ border-radius: var(--sprout-radius-panel);
15
+ background: var(--sprout-canvas);
16
+ color: var(--sprout-text);
17
+ font-family: var(--sprout-font);
18
+ }
19
+
20
+ .sprout-sql-flow.light,
21
+ .sprout-sql-flow.dark {
22
+ --sprout-chart-1: inherit;
23
+ --sprout-chart-2: inherit;
24
+ --sprout-chart-3: inherit;
25
+ --sprout-chart-4: inherit;
26
+ --sprout-chart-5: inherit;
27
+ }
28
+
29
+ .sprout-sql-viewer [data-tone] {
30
+ --sprout-sql-tone: var(--sprout-primary);
31
+ }
32
+ .sprout-sql-viewer [data-tone="1"] {
33
+ --sprout-sql-tone: var(--sprout-chart-1);
34
+ }
35
+ .sprout-sql-viewer [data-tone="2"] {
36
+ --sprout-sql-tone: var(--sprout-chart-2);
37
+ }
38
+ .sprout-sql-viewer [data-tone="3"] {
39
+ --sprout-sql-tone: var(--sprout-chart-3);
40
+ }
41
+ .sprout-sql-viewer [data-tone="4"] {
42
+ --sprout-sql-tone: var(--sprout-chart-4);
43
+ }
44
+ .sprout-sql-viewer [data-tone="5"] {
45
+ --sprout-sql-tone: var(--sprout-chart-5);
46
+ }
47
+
48
+ .sprout-sql-flow .react-flow__node-group {
49
+ pointer-events: none;
50
+ }
51
+
52
+ .sprout-sql-handle.react-flow__handle {
53
+ position: absolute;
54
+ top: 50%;
55
+ width: 6px;
56
+ height: 6px;
57
+ min-width: 0;
58
+ min-height: 0;
59
+ border: 0;
60
+ opacity: 0;
61
+ pointer-events: none;
62
+ }
63
+ .sprout-sql-handle.react-flow__handle-left {
64
+ left: 0;
65
+ transform: translate(-50%, -50%);
66
+ }
67
+ .sprout-sql-handle.react-flow__handle-right {
68
+ right: 0;
69
+ transform: translate(50%, -50%);
70
+ }
71
+
72
+ .sprout-sql-group {
73
+ box-sizing: border-box;
74
+ width: 100%;
75
+ height: 100%;
76
+ border: 1px solid
77
+ color-mix(in oklab, var(--sprout-sql-tone) 45%, var(--sprout-line));
78
+ border-radius: 14px;
79
+ background: color-mix(in oklab, var(--sprout-sql-tone) 6%, transparent);
80
+ }
81
+ .sprout-sql-group-label {
82
+ display: inline-flex;
83
+ align-items: center;
84
+ gap: 8px;
85
+ height: 44px;
86
+ padding: 0 20px;
87
+ color: color-mix(in oklab, var(--sprout-sql-tone) 70%, var(--sprout-text));
88
+ font-size: var(--sprout-text-xs);
89
+ font-weight: 600;
90
+ letter-spacing: 0.06em;
91
+ line-height: 1rem;
92
+ text-transform: uppercase;
93
+ pointer-events: all;
94
+ cursor: grab;
95
+ }
96
+ .sprout-sql-group-count {
97
+ min-width: 18px;
98
+ padding: 0 6px;
99
+ border-radius: 999px;
100
+ background: color-mix(in oklab, var(--sprout-sql-tone) 14%, transparent);
101
+ font-variant-numeric: tabular-nums;
102
+ letter-spacing: 0;
103
+ text-align: center;
104
+ }
105
+
106
+ .sprout-sql-table {
107
+ box-sizing: border-box;
108
+ width: 272px;
109
+ overflow: hidden;
110
+ border: 1px solid var(--sprout-line);
111
+ border-top: 3px solid var(--sprout-sql-tone);
112
+ border-radius: 10px;
113
+ background: var(--sprout-surface);
114
+ color: var(--sprout-text);
115
+ box-shadow: var(--sprout-shadow-control);
116
+ transition:
117
+ opacity var(--sprout-motion-normal) var(--sprout-motion-ease),
118
+ box-shadow var(--sprout-motion-fast) var(--sprout-motion-ease),
119
+ border-color var(--sprout-motion-fast) var(--sprout-motion-ease);
120
+ }
121
+ .sprout-sql-table[data-dimmed] {
122
+ opacity: 0.38;
123
+ }
124
+ .sprout-sql-table[data-active],
125
+ .react-flow__node.dragging .sprout-sql-table {
126
+ box-shadow: var(--sprout-shadow-panel);
127
+ }
128
+ .sprout-sql-table[data-active] {
129
+ border-color: color-mix(
130
+ in oklab,
131
+ var(--sprout-sql-tone) 55%,
132
+ var(--sprout-line)
133
+ );
134
+ }
135
+
136
+ .sprout-sql-table-header {
137
+ display: flex;
138
+ align-items: center;
139
+ justify-content: center;
140
+ box-sizing: border-box;
141
+ height: 40px;
142
+ padding: 0 12px;
143
+ border-bottom: 1px solid var(--sprout-line);
144
+ background: color-mix(
145
+ in oklab,
146
+ var(--sprout-sql-tone) 9%,
147
+ var(--sprout-surface)
148
+ );
149
+ }
150
+ .sprout-sql-table-title {
151
+ min-width: 0;
152
+ margin: 0;
153
+ overflow: hidden;
154
+ color: var(--sprout-text);
155
+ font-size: var(--sprout-text-sm);
156
+ font-weight: 600;
157
+ line-height: 1.25rem;
158
+ text-overflow: ellipsis;
159
+ white-space: nowrap;
160
+ }
161
+
162
+ .sprout-sql-columns,
163
+ .sprout-sql-keys-list {
164
+ margin: 0;
165
+ padding: 0;
166
+ list-style: none;
167
+ }
168
+ .sprout-sql-column {
169
+ position: relative;
170
+ display: flex;
171
+ align-items: center;
172
+ gap: 8px;
173
+ box-sizing: border-box;
174
+ height: 28px;
175
+ padding: 0 12px;
176
+ font-size: 0.8125rem;
177
+ line-height: 1.25rem;
178
+ }
179
+ .sprout-sql-column + .sprout-sql-column {
180
+ box-shadow: inset 0 1px 0
181
+ color-mix(in oklab, var(--sprout-line) 60%, transparent);
182
+ }
183
+ .sprout-sql-column[data-join] {
184
+ cursor: pointer;
185
+ }
186
+ .sprout-sql-column[data-join]:hover,
187
+ .sprout-sql-column[data-active] {
188
+ background: color-mix(in oklab, var(--sprout-primary) 8%, transparent);
189
+ }
190
+ .sprout-sql-column-icon {
191
+ display: flex;
192
+ flex-shrink: 0;
193
+ justify-content: center;
194
+ width: 12px;
195
+ color: var(--sprout-muted);
196
+ }
197
+ .sprout-sql-column[data-key="primary"] .sprout-sql-column-icon {
198
+ color: var(--sprout-warning);
199
+ }
200
+ .sprout-sql-column[data-join] .sprout-sql-column-icon {
201
+ color: var(--sprout-primary);
202
+ }
203
+ .sprout-sql-column-name {
204
+ flex: 1;
205
+ min-width: 0;
206
+ overflow: hidden;
207
+ text-overflow: ellipsis;
208
+ white-space: nowrap;
209
+ }
210
+ .sprout-sql-column[data-key="primary"] .sprout-sql-column-name {
211
+ font-weight: 600;
212
+ }
213
+ .sprout-sql-column-type {
214
+ flex-shrink: 0;
215
+ max-width: 50%;
216
+ overflow: hidden;
217
+ color: var(--sprout-muted);
218
+ font-family: var(--sprout-sql-mono);
219
+ font-size: 0.6875rem;
220
+ text-overflow: ellipsis;
221
+ white-space: nowrap;
222
+ }
223
+
224
+ .sprout-sql-keys {
225
+ border-top: 1px solid var(--sprout-line);
226
+ background: color-mix(
227
+ in oklab,
228
+ var(--sprout-hover) 40%,
229
+ var(--sprout-surface)
230
+ );
231
+ }
232
+ .sprout-sql-keys-title {
233
+ box-sizing: border-box;
234
+ height: 35px;
235
+ margin: 0;
236
+ padding: 12px 12px 0;
237
+ color: var(--sprout-muted);
238
+ font-size: 0.6875rem;
239
+ font-weight: 600;
240
+ letter-spacing: 0.06em;
241
+ line-height: 1rem;
242
+ text-transform: uppercase;
243
+ }
244
+ .sprout-sql-key {
245
+ display: flex;
246
+ align-items: center;
247
+ gap: 8px;
248
+ box-sizing: border-box;
249
+ height: 26px;
250
+ padding: 0 12px;
251
+ color: var(--sprout-muted);
252
+ font-size: var(--sprout-text-xs);
253
+ }
254
+ .sprout-sql-key > span {
255
+ overflow: hidden;
256
+ color: var(--sprout-text);
257
+ text-overflow: ellipsis;
258
+ white-space: nowrap;
259
+ }
260
+
261
+ .sprout-sql-join {
262
+ transition:
263
+ stroke var(--sprout-motion-fast) var(--sprout-motion-ease),
264
+ opacity var(--sprout-motion-normal) var(--sprout-motion-ease);
265
+ }
266
+ .sprout-sql-flow .sprout-sql-join[data-active] {
267
+ stroke: var(--sprout-primary);
268
+ stroke-width: 1.75;
269
+ }
270
+ .sprout-sql-join[data-dimmed] {
271
+ opacity: 0.25;
272
+ }
273
+ .sprout-sql-joins {
274
+ display: flex;
275
+ flex-direction: column;
276
+ gap: 4px;
277
+ box-sizing: border-box;
278
+ max-width: calc(100% - 88px);
279
+ padding: 8px 10px;
280
+ border: 1px solid
281
+ color-mix(in oklab, var(--sprout-primary) 40%, var(--sprout-line));
282
+ border-radius: 8px;
283
+ background: var(--sprout-surface);
284
+ box-shadow: var(--sprout-shadow-control);
285
+ pointer-events: none;
286
+ }
287
+ .sprout-sql-viewer[data-layout="vertical"] .sprout-sql-joins {
288
+ max-width: calc(100% - 24px);
289
+ }
290
+ .sprout-sql-join-text {
291
+ overflow: hidden;
292
+ color: var(--sprout-text);
293
+ font-family: var(--sprout-sql-mono);
294
+ font-size: var(--sprout-text-xs);
295
+ line-height: 1rem;
296
+ text-overflow: ellipsis;
297
+ white-space: nowrap;
298
+ }
299
+ .sprout-sql-joins-more {
300
+ color: var(--sprout-muted);
301
+ font-size: var(--sprout-text-xs);
302
+ line-height: 1rem;
303
+ }
304
+
305
+ .sprout-sql-more {
306
+ position: relative;
307
+ width: 240px;
308
+ height: 132px;
309
+ }
310
+ .sprout-sql-more-sheet {
311
+ position: absolute;
312
+ inset: 0;
313
+ border: 1px solid var(--sprout-line);
314
+ border-radius: 10px;
315
+ background: var(--sprout-surface);
316
+ }
317
+ .sprout-sql-more-sheet:nth-of-type(1) {
318
+ transform: translate(10px, 10px);
319
+ opacity: 0.5;
320
+ }
321
+ .sprout-sql-more-sheet:nth-of-type(2) {
322
+ transform: translate(5px, 5px);
323
+ opacity: 0.8;
324
+ }
325
+ .sprout-sql-more-button {
326
+ position: absolute;
327
+ inset: 0;
328
+ display: flex;
329
+ flex-direction: column;
330
+ align-items: flex-start;
331
+ justify-content: center;
332
+ gap: 4px;
333
+ box-sizing: border-box;
334
+ padding: 16px 18px;
335
+ border: 1px dashed var(--sprout-border-strong);
336
+ border-radius: 10px;
337
+ background: var(--sprout-surface);
338
+ color: var(--sprout-text);
339
+ font: inherit;
340
+ text-align: left;
341
+ cursor: pointer;
342
+ box-shadow: var(--sprout-shadow-control);
343
+ transition:
344
+ transform var(--sprout-motion-fast) var(--sprout-motion-ease),
345
+ border-color var(--sprout-motion-fast) var(--sprout-motion-ease);
346
+ }
347
+ .sprout-sql-more-button:hover {
348
+ border-color: var(--sprout-primary);
349
+ transform: translate(-2px, -2px);
350
+ }
351
+ .sprout-sql-more-button:focus-visible {
352
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
353
+ outline-offset: 2px;
354
+ }
355
+ .sprout-sql-more-count {
356
+ font-size: 1.125rem;
357
+ font-weight: 600;
358
+ line-height: 1.5rem;
359
+ font-variant-numeric: tabular-nums;
360
+ }
361
+ .sprout-sql-more-names {
362
+ display: -webkit-box;
363
+ overflow: hidden;
364
+ color: var(--sprout-muted);
365
+ font-size: var(--sprout-text-xs);
366
+ line-height: 1rem;
367
+ -webkit-box-orient: vertical;
368
+ -webkit-line-clamp: 2;
369
+ }
370
+ .sprout-sql-more-action {
371
+ margin-top: 6px;
372
+ color: var(--sprout-primary);
373
+ font-size: var(--sprout-text-xs);
374
+ font-weight: 600;
375
+ line-height: 1rem;
376
+ }
377
+
378
+ .sprout-sql-empty {
379
+ margin: auto;
380
+ color: var(--sprout-muted);
381
+ font-size: var(--sprout-text-sm);
382
+ }
383
+
384
+ .sprout-sql-sr-only {
385
+ position: absolute;
386
+ width: 1px;
387
+ height: 1px;
388
+ margin: -1px;
389
+ padding: 0;
390
+ overflow: hidden;
391
+ clip-path: inset(50%);
392
+ white-space: nowrap;
393
+ border: 0;
394
+ }
395
+
396
+ @media (prefers-reduced-motion: reduce) {
397
+ .sprout-sql-table,
398
+ .sprout-sql-join,
399
+ .sprout-sql-more-button {
400
+ transition: none;
401
+ }
402
+ .sprout-sql-more-button:hover {
403
+ transform: none;
404
+ }
405
+ }
406
+ }
@@ -37,9 +37,6 @@
37
37
  .sprout-state-panel-danger {
38
38
  color: var(--sprout-danger);
39
39
  }
40
- .sprout-state-panel-spinner {
41
- animation: sprout-state-panel-spin 1s linear infinite;
42
- }
43
40
 
44
41
  .sprout-state-panel-text {
45
42
  display: grid;
@@ -162,8 +159,7 @@
162
159
  }
163
160
 
164
161
  @media (prefers-reduced-motion: reduce) {
165
- .sprout-state-panel,
166
- .sprout-state-panel-spinner {
162
+ .sprout-state-panel {
167
163
  animation: none;
168
164
  }
169
165
  }
@@ -175,8 +171,3 @@
175
171
  transform: translateY(4px);
176
172
  }
177
173
  }
178
- @keyframes sprout-state-panel-spin {
179
- to {
180
- transform: rotate(360deg);
181
- }
182
- }
@@ -17,7 +17,7 @@
17
17
  vertical-align: middle;
18
18
  cursor: pointer;
19
19
  outline: 0 solid transparent;
20
- outline-offset: 2px;
20
+ outline-offset: 0;
21
21
  -webkit-tap-highlight-color: transparent;
22
22
  }
23
23
  .sprout-switch-size-sm {
@@ -40,7 +40,7 @@
40
40
  }
41
41
  }
42
42
  .sprout-switch:focus-visible {
43
- outline: 2px solid var(--sprout-focus);
43
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
44
44
  }
45
45
  .sprout-switch[data-checked] {
46
46
  background-color: var(--sprout-primary);
@@ -5,8 +5,8 @@
5
5
  overflow-x: auto;
6
6
  }
7
7
  .sprout-table-container:focus-visible {
8
- outline: 2px solid var(--sprout-focus);
9
- outline-offset: -2px;
8
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
9
+ outline-offset: -1px;
10
10
  }
11
11
 
12
12
  .sprout-table {
@@ -217,8 +217,8 @@
217
217
  }
218
218
  .sprout-table-chip-label:focus-visible,
219
219
  .sprout-table-chip-remove:focus-visible {
220
- outline: 2px solid var(--sprout-focus);
221
- outline-offset: -2px;
220
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
221
+ outline-offset: -1px;
222
222
  }
223
223
  .sprout-table-filter {
224
224
  display: flex;
@@ -292,8 +292,8 @@
292
292
  .sprout-table-handle:focus-visible,
293
293
  .sprout-table-toggle:focus-visible,
294
294
  .sprout-table-resizer:focus-visible {
295
- outline: 2px solid var(--sprout-focus);
296
- outline-offset: 1px;
295
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
296
+ outline-offset: 0;
297
297
  }
298
298
  .sprout-table-resizer {
299
299
  position: absolute;
@@ -421,7 +421,7 @@
421
421
  .sprout-table-row:has(.sprout-table-link:focus-visible) {
422
422
  --sprout-table-row-bg: var(--sprout-table-hover);
423
423
  background-color: var(--sprout-table-hover);
424
- box-shadow: inset 0 0 0 2px var(--sprout-focus);
424
+ box-shadow: inset 0 0 0 var(--sprout-focus-width) var(--sprout-focus-ring);
425
425
  }
426
426
  .sprout-table-row[data-linked]
427
427
  :is(
@@ -444,7 +444,7 @@
444
444
  .sprout-table-row[data-drop-target] {
445
445
  --sprout-table-row-bg: var(--sprout-primary-subtle);
446
446
  background: var(--sprout-primary-subtle);
447
- box-shadow: inset 0 0 0 2px var(--sprout-focus);
447
+ box-shadow: inset 0 0 0 var(--sprout-focus-width) var(--sprout-focus-ring);
448
448
  }
449
449
 
450
450
  .sprout-table-actions {
@@ -472,8 +472,8 @@
472
472
  font: inherit;
473
473
  }
474
474
  .sprout-table-select:focus-visible {
475
- outline: 2px solid var(--sprout-focus);
476
- outline-offset: 1px;
475
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
476
+ outline-offset: 0;
477
477
  }
478
478
  .sprout-table-error {
479
479
  color: var(--sprout-danger);
@@ -101,7 +101,7 @@
101
101
  height: 16px;
102
102
  }
103
103
  .sprout-tabs-trigger:focus-visible {
104
- outline: 2px solid var(--sprout-focus);
104
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
105
105
  outline-offset: 0;
106
106
  }
107
107
  .sprout-tabs-trigger[data-disabled] {
@@ -175,7 +175,7 @@
175
175
  border-radius: 0;
176
176
  }
177
177
  .sprout-tabs-list-steps > .sprout-tabs-trigger:focus-visible {
178
- outline-offset: -2px;
178
+ outline-offset: -1px;
179
179
  }
180
180
  .sprout-tabs-list-steps > .sprout-tabs-trigger::after {
181
181
  bottom: -1px;
@@ -203,8 +203,8 @@
203
203
  display: none;
204
204
  }
205
205
  .sprout-tabs-content:focus-visible {
206
- outline: 2px solid var(--sprout-focus);
207
- outline-offset: 2px;
206
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
207
+ outline-offset: 0;
208
208
  }
209
209
 
210
210
  @media (prefers-reduced-motion: no-preference) {
@@ -20,16 +20,15 @@
20
20
  field-sizing: content;
21
21
  resize: vertical;
22
22
  outline: 0 solid transparent;
23
- outline-offset: 2px;
23
+ outline-offset: 0;
24
24
  }
25
25
  .sprout-textarea::placeholder {
26
26
  color: var(--sprout-muted);
27
27
  opacity: 1;
28
28
  }
29
29
  .sprout-textarea:focus-visible {
30
- border-color: var(--sprout-focus);
31
- outline: 2px solid var(--sprout-focus);
32
- outline-offset: 2px;
30
+ border-color: var(--sprout-border);
31
+ outline: var(--sprout-focus-width) solid transparent;
33
32
  }
34
33
  .sprout-textarea:disabled {
35
34
  cursor: not-allowed;