@tulipfarm/sprout 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 (84) hide show
  1. package/dist/components/attachment.js +2 -2
  2. package/dist/components/brand-icon.js +4 -0
  3. package/dist/components/canvas.js +2 -2
  4. package/dist/components/chat-input.d.ts +94 -0
  5. package/dist/components/chat-input.js +279 -0
  6. package/dist/components/code-block.js +2 -33
  7. package/dist/components/file-explorer.d.ts +27 -0
  8. package/dist/components/file-explorer.js +300 -0
  9. package/dist/components/file-viewer.d.ts +18 -1
  10. package/dist/components/file-viewer.js +35 -8
  11. package/dist/components/questionnaire.js +2 -1
  12. package/dist/components/search-dialog.js +5 -4
  13. package/dist/components/state-panel.js +2 -2
  14. package/dist/index.d.ts +2 -0
  15. package/dist/index.js +2 -0
  16. package/dist/internal/brand-glyphs.d.ts +28 -0
  17. package/dist/internal/brand-glyphs.js +24 -0
  18. package/dist/internal/code-tokens.d.ts +4 -0
  19. package/dist/internal/code-tokens.js +34 -0
  20. package/dist/styles/accordion.css +2 -2
  21. package/dist/styles/alert-dialog.css +2 -2
  22. package/dist/styles/alert.css +2 -2
  23. package/dist/styles/attachment.css +4 -24
  24. package/dist/styles/badge.css +2 -2
  25. package/dist/styles/brand-icon.css +2 -2
  26. package/dist/styles/breadcrumb.css +2 -2
  27. package/dist/styles/button.css +2 -2
  28. package/dist/styles/calendar.css +3 -3
  29. package/dist/styles/canvas.css +4 -18
  30. package/dist/styles/carousel.css +2 -2
  31. package/dist/styles/chart.css +2 -2
  32. package/dist/styles/chat-confirmation.css +2 -2
  33. package/dist/styles/chat-input.css +240 -0
  34. package/dist/styles/chat-sources.css +2 -2
  35. package/dist/styles/checkbox.css +2 -3
  36. package/dist/styles/choice-list.css +2 -2
  37. package/dist/styles/code-block.css +2 -2
  38. package/dist/styles/collapsible.css +2 -2
  39. package/dist/styles/combobox.css +6 -6
  40. package/dist/styles/command.css +2 -2
  41. package/dist/styles/context-menu.css +3 -3
  42. package/dist/styles/dialog.css +2 -2
  43. package/dist/styles/dropdown-menu.css +1 -1
  44. package/dist/styles/field.css +2 -3
  45. package/dist/styles/file-explorer.css +517 -0
  46. package/dist/styles/file-viewer.css +113 -16
  47. package/dist/styles/hover-card.css +2 -2
  48. package/dist/styles/index.css +6 -0
  49. package/dist/styles/input-group.css +6 -11
  50. package/dist/styles/input-otp.css +2 -2
  51. package/dist/styles/input.css +3 -4
  52. package/dist/styles/mention-list.css +1 -1
  53. package/dist/styles/menubar.css +3 -3
  54. package/dist/styles/message-response.css +4 -4
  55. package/dist/styles/message-scroller.css +2 -2
  56. package/dist/styles/message.css +4 -4
  57. package/dist/styles/navigation-menu.css +2 -2
  58. package/dist/styles/page-header.css +4 -4
  59. package/dist/styles/plan-outline.css +6 -6
  60. package/dist/styles/prompt-list.css +2 -2
  61. package/dist/styles/questionnaire.css +2 -17
  62. package/dist/styles/radio-group.css +2 -3
  63. package/dist/styles/reasoning-effort.css +2 -2
  64. package/dist/styles/review-card.css +2 -2
  65. package/dist/styles/rich-text-editor.css +2 -2
  66. package/dist/styles/schema-diagram.css +4 -4
  67. package/dist/styles/scroll-area.css +2 -2
  68. package/dist/styles/search-dialog.css +0 -83
  69. package/dist/styles/select.css +3 -3
  70. package/dist/styles/separator.css +2 -2
  71. package/dist/styles/sheet.css +2 -2
  72. package/dist/styles/sidebar.css +2 -2
  73. package/dist/styles/slider.css +1 -1
  74. package/dist/styles/state-panel.css +1 -10
  75. package/dist/styles/switch.css +2 -2
  76. package/dist/styles/table.css +10 -10
  77. package/dist/styles/tabs.css +4 -4
  78. package/dist/styles/textarea.css +3 -4
  79. package/dist/styles/themes/tulipfarm.css +89 -99
  80. package/dist/styles/toast.css +2 -2
  81. package/dist/styles/toggle-group.css +2 -2
  82. package/dist/styles/toggle.css +2 -2
  83. package/dist/styles/tool-activity.css +5 -5
  84. package/package.json +10 -1
@@ -1,24 +1,120 @@
1
1
  @layer components {
2
+ .sprout-file-viewer.sprout-dialog-fullscreen {
3
+ display: grid;
4
+ grid-template-columns: minmax(0, 1fr) auto;
5
+ grid-template-rows: auto minmax(0, 1fr);
6
+ }
7
+ .sprout-file-viewer > .sprout-file-viewer-surface {
8
+ grid-row: 2;
9
+ grid-column: 1;
10
+ }
11
+
2
12
  .sprout-file-viewer-header {
3
- display: flex;
4
- flex-shrink: 0;
13
+ display: grid;
14
+ grid-column: 1 / -1;
15
+ grid-template-columns: minmax(0, 1fr) auto;
16
+ grid-template-areas:
17
+ "heading window"
18
+ "controls controls";
5
19
  align-items: center;
6
- gap: 0.75rem;
7
- padding: 0.75rem 1rem;
20
+ gap: 0.5rem 1rem;
21
+ padding: 0.625rem 0.75rem 0.625rem 1rem;
8
22
  border-bottom: 1px solid var(--sprout-line);
9
23
  background: var(--sprout-surface);
10
24
  }
25
+ .sprout-file-viewer-heading {
26
+ display: grid;
27
+ grid-area: heading;
28
+ gap: 2px;
29
+ min-width: 0;
30
+ }
31
+ .sprout-file-viewer-controls {
32
+ display: flex;
33
+ flex-wrap: wrap;
34
+ grid-area: controls;
35
+ align-items: center;
36
+ justify-content: flex-end;
37
+ gap: 0.5rem;
38
+ min-width: 0;
39
+ }
40
+ .sprout-file-viewer-actions {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 0.5rem;
44
+ }
45
+ .sprout-file-viewer-window {
46
+ display: flex;
47
+ grid-area: window;
48
+ align-items: center;
49
+ gap: 2px;
50
+ }
51
+ .sprout-file-viewer-window > [aria-expanded="true"] {
52
+ background: var(--sprout-hover);
53
+ color: var(--sprout-text);
54
+ }
55
+ @media (max-width: 639.98px) {
56
+ .sprout-file-viewer-controls
57
+ .sprout-button-size-sm:has(> .sprout-file-viewer-label) {
58
+ width: 28px;
59
+ padding-inline: 0;
60
+ }
61
+ .sprout-file-viewer-label {
62
+ display: none;
63
+ }
64
+ }
11
65
  @media (min-width: 640px) {
12
66
  .sprout-file-viewer-header {
13
- padding-inline: 1.5rem;
67
+ grid-template-columns: minmax(0, 1fr) auto auto;
68
+ grid-template-areas: "heading controls window";
69
+ min-height: 3.5rem;
70
+ padding-inline: 1.5rem 1rem;
71
+ }
72
+ .sprout-file-viewer-controls {
73
+ flex-wrap: nowrap;
74
+ }
75
+ .sprout-file-viewer-window::before {
76
+ content: "";
77
+ width: 1px;
78
+ height: 1.25rem;
79
+ margin-inline: 0.25rem 0.375rem;
80
+ background: var(--sprout-line);
14
81
  }
15
82
  }
16
- .sprout-file-viewer-heading {
17
- display: grid;
18
- flex: 1;
19
- gap: 2px;
83
+
84
+ .sprout-file-viewer-panel {
85
+ z-index: 1;
86
+ display: flex;
87
+ grid-row: 2;
88
+ grid-column: 1 / -1;
89
+ flex-direction: column;
90
+ box-sizing: border-box;
20
91
  min-width: 0;
92
+ min-height: 0;
93
+ overflow: auto;
94
+ background: var(--sprout-surface);
95
+ color: var(--sprout-text);
96
+ font-family: var(--sprout-font);
97
+ font-size: var(--sprout-text-sm);
98
+ animation: sprout-file-viewer-panel-in var(--sprout-motion-normal, 180ms)
99
+ cubic-bezier(0.16, 1, 0.3, 1) both;
100
+ }
101
+ .sprout-file-viewer-panel[hidden] {
102
+ display: none;
21
103
  }
104
+ @media (min-width: 768px) {
105
+ .sprout-file-viewer-panel {
106
+ grid-column: 2;
107
+ width: clamp(18rem, 28vw, 24rem);
108
+ border-inline-start: 1px solid var(--sprout-line);
109
+ }
110
+ }
111
+ @keyframes sprout-file-viewer-panel-in {
112
+ from {
113
+ opacity: 0;
114
+ translate: 0.75rem 0;
115
+ }
116
+ }
117
+
22
118
  .sprout-file-viewer-truncate {
23
119
  display: block;
24
120
  overflow: hidden;
@@ -96,8 +192,8 @@
96
192
  padding: 1rem;
97
193
  }
98
194
  .sprout-file-text-scroll:focus-visible {
99
- outline: 2px solid var(--sprout-focus);
100
- outline-offset: -2px;
195
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
196
+ outline-offset: -1px;
101
197
  }
102
198
  .sprout-file-text-page {
103
199
  box-sizing: border-box;
@@ -127,8 +223,8 @@
127
223
  padding: 1rem;
128
224
  }
129
225
  .sprout-file-image-stage:focus-visible {
130
- outline: 2px solid var(--sprout-focus);
131
- outline-offset: -2px;
226
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
227
+ outline-offset: -1px;
132
228
  }
133
229
  .sprout-file-image {
134
230
  margin: auto;
@@ -158,8 +254,8 @@
158
254
  border-radius: 2px;
159
255
  }
160
256
  .sprout-file-google-link a:focus-visible {
161
- outline: 2px solid var(--sprout-focus);
162
- outline-offset: 2px;
257
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
258
+ outline-offset: 0;
163
259
  }
164
260
 
165
261
  .sprout-file-embed {
@@ -218,7 +314,8 @@
218
314
 
219
315
  @media (prefers-reduced-motion: reduce) {
220
316
  .sprout-file-image,
221
- .sprout-file-embed-slow {
317
+ .sprout-file-embed-slow,
318
+ .sprout-file-viewer-panel {
222
319
  transition: none;
223
320
  animation: none;
224
321
  }
@@ -14,8 +14,8 @@
14
14
  text-decoration-color: currentColor;
15
15
  }
16
16
  :where(a.sprout-hover-card-trigger):focus-visible {
17
- outline: 2px solid var(--sprout-focus);
18
- outline-offset: 2px;
17
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
18
+ outline-offset: 0;
19
19
  }
20
20
 
21
21
  .sprout-hover-card-positioner {
@@ -15,6 +15,7 @@
15
15
  @import "./carousel.css";
16
16
  @import "./chart.css";
17
17
  @import "./chat-confirmation.css";
18
+ @import "./chat-input.css";
18
19
  @import "./chat-plan.css";
19
20
  @import "./chat-sources.css";
20
21
  @import "./checkbox.css";
@@ -27,6 +28,7 @@
27
28
  @import "./dialog.css";
28
29
  @import "./dropdown-menu.css";
29
30
  @import "./field.css";
31
+ @import "./file-explorer.css";
30
32
  @import "./file-viewer.css";
31
33
  @import "./form.css";
32
34
  @import "./glass-banner.css";
@@ -169,6 +171,8 @@
169
171
  --sprout-primary-active: #0d0d0d;
170
172
  --sprout-on-primary: #fafafa;
171
173
  --sprout-focus: #525252;
174
+ --sprout-focus-ring: #3b82f6;
175
+ --sprout-focus-width: 1px;
172
176
  --sprout-danger: #b32d34;
173
177
  --sprout-danger-hover: #98252b;
174
178
  --sprout-on-danger: #fff8f8;
@@ -204,6 +208,7 @@
204
208
  --sprout-primary-active: #c4c4c4;
205
209
  --sprout-on-primary: #202020;
206
210
  --sprout-focus: #b5b5b5;
211
+ --sprout-focus-ring: #60a5fa;
207
212
  --sprout-danger: #ff9197;
208
213
  --sprout-danger-hover: #ffadb1;
209
214
  --sprout-on-danger: #3c1014;
@@ -240,6 +245,7 @@
240
245
  --sprout-primary-active: #c4c4c4;
241
246
  --sprout-on-primary: #202020;
242
247
  --sprout-focus: #b5b5b5;
248
+ --sprout-focus-ring: #60a5fa;
243
249
  --sprout-danger: #ff9197;
244
250
  --sprout-danger-hover: #ffadb1;
245
251
  --sprout-on-danger: #3c1014;
@@ -12,12 +12,11 @@
12
12
  background-color: var(--sprout-surface);
13
13
  color: var(--sprout-text);
14
14
  outline: 0 solid transparent;
15
- outline-offset: 2px;
15
+ outline-offset: 0;
16
16
  }
17
17
  .sprout-input-group:has([data-slot="input-group-control"]:focus-visible) {
18
- border-color: var(--sprout-focus);
19
- outline: 2px solid var(--sprout-focus);
20
- outline-offset: 2px;
18
+ border-color: var(--sprout-border);
19
+ outline: var(--sprout-focus-width) solid transparent;
21
20
  }
22
21
  .sprout-input-group:has(
23
22
  [data-slot="input-group-control"][aria-invalid="true"]
@@ -56,11 +55,8 @@
56
55
  flex-direction: column;
57
56
  align-items: stretch;
58
57
  height: auto;
59
- border-color: var(--sprout-border);
60
- border-radius: var(--sprout-radius-panel);
61
- }
62
- .sprout-input-group-variant-question-composer {
63
58
  border-color: var(--sprout-input);
59
+ border-radius: var(--sprout-radius-panel);
64
60
  }
65
61
  .sprout-input-group-variant-composer:has(
66
62
  [data-slot="input-group-control"]:focus-visible
@@ -68,9 +64,8 @@
68
64
  .sprout-input-group-variant-question-composer:has(
69
65
  [data-slot="input-group-control"]:focus-visible
70
66
  ) {
71
- border-color: var(--sprout-focus);
72
- outline-color: transparent;
73
- box-shadow: 0 0 0 1px var(--sprout-focus);
67
+ border-color: var(--sprout-border);
68
+ outline: var(--sprout-focus-width) solid transparent;
74
69
  }
75
70
  .sprout-input-group-variant-composer:has(
76
71
  [data-slot="input-group-control"][aria-invalid="true"]
@@ -70,8 +70,8 @@
70
70
  }
71
71
  .sprout-input-otp-slot:focus {
72
72
  z-index: 1;
73
- border-color: var(--sprout-focus);
74
- outline: 2px solid color-mix(in oklab, var(--sprout-focus) 50%, transparent);
73
+ border-color: var(--sprout-border);
74
+ outline: var(--sprout-focus-width) solid transparent;
75
75
  outline-offset: 0;
76
76
  }
77
77
  .sprout-input-otp-slot[aria-invalid="true"] {
@@ -15,16 +15,15 @@
15
15
  font-weight: 400;
16
16
  line-height: 20px;
17
17
  outline: 0 solid transparent;
18
- outline-offset: 2px;
18
+ outline-offset: 0;
19
19
  }
20
20
  .sprout-input::placeholder {
21
21
  color: var(--sprout-muted);
22
22
  opacity: 1;
23
23
  }
24
24
  .sprout-input:focus-visible {
25
- border-color: var(--sprout-focus);
26
- outline: 2px solid var(--sprout-focus);
27
- outline-offset: 2px;
25
+ border-color: var(--sprout-border);
26
+ outline: var(--sprout-focus-width) solid transparent;
28
27
  }
29
28
  .sprout-input:disabled,
30
29
  .sprout-input[data-disabled] {
@@ -142,7 +142,7 @@
142
142
  @media (forced-colors: active) {
143
143
  .sprout-mention-option[aria-selected="true"] {
144
144
  outline: 2px solid Highlight;
145
- outline-offset: -2px;
145
+ outline-offset: -1px;
146
146
  }
147
147
  }
148
148
 
@@ -58,8 +58,8 @@
58
58
  }
59
59
  .sprout-menubar-trigger:focus-visible {
60
60
  z-index: 1;
61
- outline: 2px solid var(--sprout-focus);
62
- outline-offset: 1px;
61
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
62
+ outline-offset: 0;
63
63
  }
64
64
  .sprout-menubar-trigger[data-disabled],
65
65
  .sprout-menubar-trigger:disabled {
@@ -200,7 +200,7 @@
200
200
  .sprout-menubar-item[data-highlighted],
201
201
  .sprout-menubar-sub-trigger[data-popup-open] {
202
202
  outline: 2px solid Highlight;
203
- outline-offset: -2px;
203
+ outline-offset: -1px;
204
204
  }
205
205
  }
206
206
 
@@ -74,8 +74,8 @@
74
74
  text-decoration-thickness: 2px;
75
75
  }
76
76
  .sprout-message-response a:focus-visible {
77
- outline: 2px solid var(--sprout-focus);
78
- outline-offset: 2px;
77
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
78
+ outline-offset: 0;
79
79
  }
80
80
  .sprout-message-response :not(pre) > code {
81
81
  padding: 2px 4px;
@@ -103,8 +103,8 @@
103
103
  overflow: auto;
104
104
  }
105
105
  .sprout-message-response-table:focus-visible {
106
- outline: 2px solid var(--sprout-focus);
107
- outline-offset: 2px;
106
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
107
+ outline-offset: 0;
108
108
  }
109
109
  .sprout-message-response table {
110
110
  width: 100%;
@@ -36,8 +36,8 @@
36
36
  );
37
37
  }
38
38
  .sprout-message-scroller-viewport:focus-visible {
39
- outline: 2px solid var(--sprout-focus);
40
- outline-offset: -2px;
39
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
40
+ outline-offset: -1px;
41
41
  }
42
42
  .sprout-message-scroller-viewport[data-autoscrolling] {
43
43
  scrollbar-color: transparent transparent;
@@ -145,8 +145,8 @@
145
145
  cursor: pointer;
146
146
  }
147
147
  .sprout-message-bubble:is(button, a):focus-visible {
148
- outline: 2px solid var(--sprout-focus);
149
- outline-offset: 2px;
148
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
149
+ outline-offset: 0;
150
150
  }
151
151
  .sprout-message-bubble:is(button):disabled,
152
152
  .sprout-message-bubble[aria-disabled="true"] {
@@ -270,8 +270,8 @@
270
270
  color: var(--sprout-primary);
271
271
  }
272
272
  .sprout-message-reactions > button:focus-visible {
273
- outline: 2px solid var(--sprout-focus);
274
- outline-offset: 1px;
273
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
274
+ outline-offset: 0;
275
275
  }
276
276
 
277
277
  @media (hover: hover) {
@@ -78,8 +78,8 @@
78
78
  }
79
79
  .sprout-navigation-menu-trigger:focus-visible,
80
80
  .sprout-navigation-menu-link:focus-visible {
81
- outline: 2px solid var(--sprout-focus);
82
- outline-offset: 2px;
81
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
82
+ outline-offset: 0;
83
83
  }
84
84
  .sprout-navigation-menu-trigger:is(:disabled, [data-disabled]) {
85
85
  pointer-events: none;
@@ -47,8 +47,8 @@
47
47
  }
48
48
  .sprout-page-header-title:focus-visible {
49
49
  border-radius: 2px;
50
- outline: 2px solid var(--sprout-focus);
51
- outline-offset: 2px;
50
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
51
+ outline-offset: 0;
52
52
  }
53
53
 
54
54
  .sprout-page-header-description {
@@ -108,8 +108,8 @@
108
108
  color: var(--sprout-text);
109
109
  }
110
110
  .sprout-page-header-breadcrumb-link:focus-visible {
111
- outline: 2px solid var(--sprout-focus);
112
- outline-offset: 2px;
111
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
112
+ outline-offset: 0;
113
113
  }
114
114
  .sprout-page-header-breadcrumb[data-placement="chrome"]
115
115
  .sprout-page-header-breadcrumb-item:first-child {
@@ -115,8 +115,8 @@
115
115
  outline: none;
116
116
  }
117
117
  .sprout-plan-outline-task:focus-visible {
118
- outline: 2px solid var(--sprout-focus);
119
- outline-offset: -2px;
118
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
119
+ outline-offset: -1px;
120
120
  }
121
121
  .sprout-plan-outline-row {
122
122
  box-sizing: border-box;
@@ -143,8 +143,8 @@
143
143
  background: var(--sprout-hover);
144
144
  }
145
145
  .sprout-plan-outline-trigger:focus-visible {
146
- outline: 2px solid var(--sprout-focus);
147
- outline-offset: -2px;
146
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
147
+ outline-offset: -1px;
148
148
  }
149
149
  .sprout-plan-outline-mark {
150
150
  display: inline-flex;
@@ -347,8 +347,8 @@
347
347
  text-decoration: underline;
348
348
  }
349
349
  .sprout-plan-outline-link:focus-visible {
350
- outline: 2px solid var(--sprout-focus);
351
- outline-offset: 2px;
350
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
351
+ outline-offset: 0;
352
352
  }
353
353
  .sprout-plan-outline-dependency-label {
354
354
  color: var(--sprout-muted);
@@ -34,7 +34,7 @@
34
34
  font-size: var(--sprout-text-sm);
35
35
  line-height: 1.25rem;
36
36
  outline: 0 solid transparent;
37
- outline-offset: 1px;
37
+ outline-offset: 0;
38
38
  }
39
39
  @media (pointer: coarse) {
40
40
  .sprout-prompt-list-item {
@@ -50,7 +50,7 @@
50
50
  .sprout-prompt-list-item:has(.sprout-prompt-list-button:focus-visible) {
51
51
  --sprout-brand-ring: var(--sprout-hover);
52
52
  background: var(--sprout-hover);
53
- outline: 2px solid var(--sprout-focus);
53
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
54
54
  }
55
55
  .sprout-prompt-list-item:has(.sprout-prompt-list-button:disabled) {
56
56
  opacity: 0.5;
@@ -82,7 +82,7 @@
82
82
  cursor: pointer;
83
83
  user-select: none;
84
84
  outline: 0 solid transparent;
85
- outline-offset: 2px;
85
+ outline-offset: 0;
86
86
  -webkit-tap-highlight-color: transparent;
87
87
  }
88
88
  @media (hover: hover) {
@@ -93,8 +93,7 @@
93
93
  .sprout-questionnaire-choice:has(
94
94
  > .sprout-questionnaire-choice-input:focus-visible
95
95
  ) {
96
- border-color: var(--sprout-focus);
97
- outline: 2px solid var(--sprout-focus);
96
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
98
97
  }
99
98
  .sprout-questionnaire-choice[data-checked] {
100
99
  border-color: var(--sprout-focus);
@@ -184,22 +183,8 @@
184
183
  }
185
184
 
186
185
  .sprout-questionnaire-choice-shortcut {
187
- display: inline-flex;
188
- flex-shrink: 0;
189
- align-items: center;
190
- justify-content: center;
191
- box-sizing: border-box;
192
- width: 20px;
193
- height: 20px;
194
186
  margin-inline-start: auto;
195
- border: 1px solid var(--sprout-line);
196
- border-radius: calc(var(--sprout-radius-control) - 2px);
197
- background: var(--sprout-surface);
198
- font-size: var(--sprout-text-xs);
199
- font-weight: 500;
200
- line-height: 1;
201
187
  font-variant-numeric: tabular-nums;
202
- color: var(--sprout-muted);
203
188
  pointer-events: none;
204
189
  }
205
190
  .sprout-questionnaire-choice[data-checked]
@@ -23,7 +23,7 @@
23
23
  vertical-align: middle;
24
24
  cursor: pointer;
25
25
  outline: 0 solid transparent;
26
- outline-offset: 2px;
26
+ outline-offset: 0;
27
27
  -webkit-tap-highlight-color: transparent;
28
28
  }
29
29
  /* A 40 x 32px hit area around the 16px dot. */
@@ -42,8 +42,7 @@
42
42
  }
43
43
  }
44
44
  .sprout-radio-group-item:focus-visible {
45
- border-color: var(--sprout-focus);
46
- outline: 2px solid var(--sprout-focus);
45
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
47
46
  }
48
47
  .sprout-radio-group-item[data-checked] {
49
48
  border-color: var(--sprout-primary);
@@ -59,8 +59,8 @@
59
59
  cursor: grab;
60
60
  }
61
61
  .sprout-reasoning-effort-track:focus-visible {
62
- outline: 2px solid var(--sprout-focus);
63
- outline-offset: 3px;
62
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
63
+ outline-offset: 0;
64
64
  }
65
65
  .sprout-reasoning-effort[data-dragging="true"]
66
66
  .sprout-reasoning-effort-track {
@@ -34,8 +34,8 @@
34
34
  background: color-mix(in oklab, var(--sprout-hover) 60%, transparent);
35
35
  }
36
36
  .sprout-review-card-header:has(.sprout-review-card-trigger:focus-visible) {
37
- outline: 2px solid var(--sprout-focus);
38
- outline-offset: -2px;
37
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
38
+ outline-offset: -1px;
39
39
  border-radius: inherit;
40
40
  }
41
41
  .sprout-review-card-icon {
@@ -39,7 +39,7 @@
39
39
  line-height: 1.5;
40
40
  overflow-wrap: anywhere;
41
41
  outline: 0 solid transparent;
42
- outline-offset: 2px;
42
+ outline-offset: 0;
43
43
  }
44
44
  .sprout-rich-text-editor-size-compact .sprout-rich-text-editor-content {
45
45
  min-height: 2.5rem;
@@ -52,7 +52,7 @@
52
52
  max-height: 8rem;
53
53
  }
54
54
  .sprout-rich-text-editor-content:focus-visible {
55
- outline: 2px solid var(--sprout-focus);
55
+ outline: 0 solid transparent;
56
56
  }
57
57
  /* Inside an input group, the group draws the focus ring for the editor. */
58
58
  .sprout-input-group .sprout-rich-text-editor-content:focus-visible {
@@ -63,8 +63,8 @@
63
63
  background: transparent;
64
64
  }
65
65
  .sprout-schema-flow:focus-visible {
66
- outline: 2px solid var(--sprout-focus);
67
- outline-offset: -2px;
66
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
67
+ outline-offset: -1px;
68
68
  border-radius: inherit;
69
69
  }
70
70
  .sprout-schema-flow .react-flow__container {
@@ -143,8 +143,8 @@
143
143
  cursor: grabbing;
144
144
  }
145
145
  .sprout-schema-flow .react-flow__node:focus-visible {
146
- outline: 2px solid var(--sprout-focus);
147
- outline-offset: 2px;
146
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
147
+ outline-offset: 0;
148
148
  }
149
149
  .sprout-schema-flow .react-flow__panel {
150
150
  position: absolute;
@@ -23,8 +23,8 @@
23
23
  overscroll-behavior: contain;
24
24
  }
25
25
  .sprout-scroll-area-viewport:focus-visible {
26
- outline: 2px solid var(--sprout-focus);
27
- outline-offset: -2px;
26
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
27
+ outline-offset: -1px;
28
28
  }
29
29
  .sprout-scroll-area[data-variant="table"] > .sprout-scroll-area-viewport {
30
30
  max-height: 60dvh;