@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
@@ -16,28 +16,6 @@
16
16
  background: transparent;
17
17
  }
18
18
 
19
- .sprout-search-kbd {
20
- box-sizing: border-box;
21
- display: inline-flex;
22
- align-items: center;
23
- justify-content: center;
24
- flex-shrink: 0;
25
- min-width: 20px;
26
- height: 20px;
27
- padding-inline: 4px;
28
- border: 1px solid var(--sprout-line);
29
- border-radius: calc(var(--sprout-radius-control) - 2px);
30
- background: var(--sprout-surface);
31
- color: var(--sprout-muted);
32
- font-family: inherit;
33
- font-size: var(--sprout-text-xs);
34
- font-weight: 500;
35
- line-height: 1;
36
- white-space: nowrap;
37
- user-select: none;
38
- pointer-events: none;
39
- }
40
-
41
19
  /* Input row */
42
20
  .sprout-search-input {
43
21
  display: flex;
@@ -79,44 +57,6 @@
79
57
  .sprout-search-filters::-webkit-scrollbar {
80
58
  display: none;
81
59
  }
82
- .sprout-search-filter {
83
- box-sizing: border-box;
84
- display: inline-flex;
85
- flex-shrink: 0;
86
- align-items: center;
87
- gap: 6px;
88
- height: 28px;
89
- margin: 0;
90
- padding-inline: 10px;
91
- border: 1px solid var(--sprout-line);
92
- border-radius: calc(var(--sprout-radius-panel) - 4px);
93
- background: var(--sprout-surface);
94
- box-shadow: var(--sprout-shadow-control);
95
- color: var(--sprout-muted);
96
- font: inherit;
97
- font-size: var(--sprout-text-xs);
98
- font-weight: 500;
99
- line-height: 1rem;
100
- white-space: nowrap;
101
- cursor: pointer;
102
- outline: none;
103
- -webkit-tap-highlight-color: transparent;
104
- }
105
- .sprout-search-filter > svg {
106
- flex-shrink: 0;
107
- width: 14px;
108
- height: 14px;
109
- }
110
- .sprout-search-filter:focus-visible {
111
- outline: 2px solid var(--sprout-focus);
112
- outline-offset: 1px;
113
- }
114
- .sprout-search-filter[data-pressed] {
115
- border-color: var(--sprout-input);
116
- background: var(--sprout-active);
117
- color: var(--sprout-text);
118
- }
119
-
120
60
  /* Results */
121
61
  .sprout-search-dialog .sprout-search-list {
122
62
  height: min(28rem, 60dvh);
@@ -337,27 +277,4 @@
337
277
  display: flex;
338
278
  }
339
279
  }
340
-
341
- @media (hover: hover) {
342
- .sprout-search-filter:hover {
343
- background: var(--sprout-hover);
344
- color: var(--sprout-text);
345
- }
346
- }
347
-
348
- @media (forced-colors: active) {
349
- .sprout-search-filter[data-pressed] {
350
- outline: 2px solid Highlight;
351
- outline-offset: -2px;
352
- }
353
- }
354
-
355
- @media (prefers-reduced-motion: no-preference) {
356
- .sprout-search-filter {
357
- transition:
358
- background-color var(--sprout-motion-fast) var(--sprout-motion-ease),
359
- border-color var(--sprout-motion-fast) var(--sprout-motion-ease),
360
- color var(--sprout-motion-fast) var(--sprout-motion-ease);
361
- }
362
- }
363
280
  }
@@ -34,8 +34,8 @@
34
34
  background: var(--sprout-hover);
35
35
  }
36
36
  .sprout-select-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: 0;
39
39
  }
40
40
  .sprout-select-trigger[data-placeholder] {
41
41
  color: var(--sprout-muted);
@@ -253,7 +253,7 @@
253
253
  @media (forced-colors: active) {
254
254
  .sprout-select-item[data-highlighted] {
255
255
  outline: 2px solid Highlight;
256
- outline-offset: -2px;
256
+ outline-offset: -1px;
257
257
  }
258
258
  }
259
259
 
@@ -181,8 +181,8 @@
181
181
  }
182
182
  a.sprout-separator-marker:focus-visible,
183
183
  .sprout-separator-content > a:focus-visible {
184
- outline: 2px solid var(--sprout-focus);
185
- outline-offset: 2px;
184
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
185
+ outline-offset: 0;
186
186
  color: var(--sprout-text);
187
187
  }
188
188
 
@@ -140,8 +140,8 @@
140
140
  }
141
141
  .sprout-sheet-title[tabindex="-1"]:focus-visible {
142
142
  border-radius: 2px;
143
- outline: 2px solid var(--sprout-focus);
144
- outline-offset: 2px;
143
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
144
+ outline-offset: 0;
145
145
  }
146
146
 
147
147
  .sprout-sheet-description {
@@ -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;
@@ -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;
@@ -1,125 +1,115 @@
1
- /* TulipFarm: Neutral grays with TulipFarm green.
1
+ /* TulipFarm: The TulipFarm Cloud palette, cool neutral grays with Google green.
2
2
  *
3
3
  * One file is the whole theme: font, radius, and every color token for light
4
4
  * and dark. Import it after "@tulipfarm/sprout/styles.css", then set
5
5
  * data-sprout-theme="tulipfarm" on <html>, or on any element to theme only
6
- * that subtree.
6
+ * that subtree. The font is Inter; load it (for example with
7
+ * @fontsource-variable/inter) or the system font is used.
7
8
  */
8
9
  @layer base {
9
10
  [data-sprout-theme="tulipfarm"] {
10
- --sprout-font: ui-sans-serif, system-ui, sans-serif;
11
- --sprout-radius-control: 0.375rem;
11
+ --sprout-font:
12
+ "Inter Variable", Inter, ui-sans-serif, system-ui, sans-serif;
13
+ --sprout-radius-control: 0.5rem;
12
14
  --sprout-radius-panel: 0.75rem;
13
15
  }
14
16
 
15
17
  [data-sprout-theme="tulipfarm"],
16
18
  .light[data-sprout-theme="tulipfarm"],
17
19
  .light [data-sprout-theme="tulipfarm"] {
18
- --sprout-canvas: #f8f8f8;
19
- --sprout-surface: #fdfdfd;
20
- --sprout-hover: #eeeeee;
21
- --sprout-active: #e3e3e3;
22
- --sprout-text: #242424;
23
- --sprout-muted: #626262;
24
- --sprout-line: #e0e0e0;
25
- --sprout-border: #909090;
26
- --sprout-border-strong: #707070;
27
- --sprout-input: #d4d4d4;
28
- --sprout-primary: #286440;
29
- --sprout-primary-hover: #1e5032;
30
- --sprout-primary-active: #164027;
31
- --sprout-on-primary: #f5fbf6;
32
- --sprout-focus: #327c4e;
33
- --sprout-danger: #b32d34;
34
- --sprout-danger-hover: #98252b;
35
- --sprout-on-danger: #fff8f8;
36
- --sprout-info: #1f5fb8;
37
- --sprout-info-subtle: #ebf1fd;
38
- --sprout-danger-subtle: #fdeeef;
39
- --sprout-success: #1d6a37;
40
- --sprout-success-subtle: #e8f4eb;
20
+ --sprout-canvas: #f9f9fa;
21
+ --sprout-surface: #ffffff;
22
+ --sprout-hover: #f5f5f7;
23
+ --sprout-active: #ebebed;
24
+ --sprout-text: #1b1b1b;
25
+ --sprout-muted: #65666e;
26
+ --sprout-line: #e8e8e8;
27
+ --sprout-border: #89898e;
28
+ --sprout-border-strong: #6e6f75;
29
+ --sprout-input: #dedee0;
30
+ --sprout-primary: #188038;
31
+ --sprout-primary-hover: #146c2f;
32
+ --sprout-primary-active: #105825;
33
+ --sprout-on-primary: #ffffff;
34
+ --sprout-focus: #188038;
35
+ --sprout-danger: #b42332;
36
+ --sprout-danger-hover: #9a1d2a;
37
+ --sprout-on-danger: #ffffff;
38
+ --sprout-info: #245cba;
39
+ --sprout-info-subtle: #edf3ff;
40
+ --sprout-danger-subtle: #fff0f1;
41
+ --sprout-success: #146c2f;
42
+ --sprout-success-subtle: #e9f5ec;
41
43
  --sprout-warning: #8a4b08;
42
- --sprout-warning-subtle: #fdf1dc;
43
- --sprout-primary-subtle: color-mix(
44
- in oklab,
45
- var(--sprout-primary) 10%,
46
- var(--sprout-surface)
47
- );
48
- --sprout-secondary: #ececec;
49
- --sprout-overlay: rgb(18 18 18 / 0.35);
44
+ --sprout-warning-subtle: #fff4df;
45
+ --sprout-primary-subtle: #e9f5ec;
46
+ --sprout-secondary: #f0f0f2;
47
+ --sprout-overlay: rgb(32 33 36 / 0.25);
50
48
  }
51
49
 
52
50
  .dark[data-sprout-theme="tulipfarm"],
53
51
  .dark [data-sprout-theme="tulipfarm"] {
54
- --sprout-canvas: #151515;
55
- --sprout-surface: #1d1d1d;
56
- --sprout-hover: #2b2b2b;
57
- --sprout-active: #363636;
58
- --sprout-text: #f0f0f0;
59
- --sprout-muted: #adadad;
60
- --sprout-line: #383838;
61
- --sprout-border: #808080;
62
- --sprout-border-strong: #a0a0a0;
63
- --sprout-input: #474747;
64
- --sprout-primary: #a2d8af;
65
- --sprout-primary-hover: #b8e3c1;
66
- --sprout-primary-active: #c9ecd0;
67
- --sprout-on-primary: #142e1c;
68
- --sprout-focus: #a2d8af;
69
- --sprout-danger: #ff9197;
70
- --sprout-danger-hover: #ffadb1;
71
- --sprout-on-danger: #3c1014;
72
- --sprout-info: #8fb8f5;
73
- --sprout-info-subtle: #1f2c45;
74
- --sprout-danger-subtle: #3a2124;
75
- --sprout-success: #82d29a;
76
- --sprout-success-subtle: #1c3223;
77
- --sprout-warning: #eec27e;
78
- --sprout-warning-subtle: #34291b;
79
- --sprout-primary-subtle: color-mix(
80
- in oklab,
81
- var(--sprout-primary) 16%,
82
- var(--sprout-surface)
83
- );
84
- --sprout-secondary: #2c2c2c;
85
- --sprout-overlay: rgb(8 8 8 / 0.65);
52
+ --sprout-canvas: #101113;
53
+ --sprout-surface: #16171a;
54
+ --sprout-hover: #202125;
55
+ --sprout-active: #222327;
56
+ --sprout-text: #ffffff;
57
+ --sprout-muted: #a5a6af;
58
+ --sprout-line: #2d2e31;
59
+ --sprout-border: #727277;
60
+ --sprout-border-strong: #9a9ba1;
61
+ --sprout-input: #26272b;
62
+ --sprout-primary: #75ce8e;
63
+ --sprout-primary-hover: #8fd9a3;
64
+ --sprout-primary-active: #a6e2b6;
65
+ --sprout-on-primary: #0e2615;
66
+ --sprout-focus: #75ce8e;
67
+ --sprout-danger: #ff929d;
68
+ --sprout-danger-hover: #ffadb5;
69
+ --sprout-on-danger: #3b1016;
70
+ --sprout-info: #9cbdff;
71
+ --sprout-info-subtle: #202e48;
72
+ --sprout-danger-subtle: #3b2228;
73
+ --sprout-success: #75ce8e;
74
+ --sprout-success-subtle: #1b3323;
75
+ --sprout-warning: #edc17c;
76
+ --sprout-warning-subtle: #352b1e;
77
+ --sprout-primary-subtle: #1b3323;
78
+ --sprout-secondary: #28292e;
79
+ --sprout-overlay: rgb(0 0 0 / 0.5);
86
80
  }
87
81
 
88
82
  @media (prefers-color-scheme: dark) {
89
83
  :root:not(.light):not(.dark)[data-sprout-theme="tulipfarm"],
90
84
  :root:not(.light):not(.dark) [data-sprout-theme="tulipfarm"] {
91
- --sprout-canvas: #151515;
92
- --sprout-surface: #1d1d1d;
93
- --sprout-hover: #2b2b2b;
94
- --sprout-active: #363636;
95
- --sprout-text: #f0f0f0;
96
- --sprout-muted: #adadad;
97
- --sprout-line: #383838;
98
- --sprout-border: #808080;
99
- --sprout-border-strong: #a0a0a0;
100
- --sprout-input: #474747;
101
- --sprout-primary: #a2d8af;
102
- --sprout-primary-hover: #b8e3c1;
103
- --sprout-primary-active: #c9ecd0;
104
- --sprout-on-primary: #142e1c;
105
- --sprout-focus: #a2d8af;
106
- --sprout-danger: #ff9197;
107
- --sprout-danger-hover: #ffadb1;
108
- --sprout-on-danger: #3c1014;
109
- --sprout-info: #8fb8f5;
110
- --sprout-info-subtle: #1f2c45;
111
- --sprout-danger-subtle: #3a2124;
112
- --sprout-success: #82d29a;
113
- --sprout-success-subtle: #1c3223;
114
- --sprout-warning: #eec27e;
115
- --sprout-warning-subtle: #34291b;
116
- --sprout-primary-subtle: color-mix(
117
- in oklab,
118
- var(--sprout-primary) 16%,
119
- var(--sprout-surface)
120
- );
121
- --sprout-secondary: #2c2c2c;
122
- --sprout-overlay: rgb(8 8 8 / 0.65);
85
+ --sprout-canvas: #101113;
86
+ --sprout-surface: #16171a;
87
+ --sprout-hover: #202125;
88
+ --sprout-active: #222327;
89
+ --sprout-text: #ffffff;
90
+ --sprout-muted: #a5a6af;
91
+ --sprout-line: #2d2e31;
92
+ --sprout-border: #727277;
93
+ --sprout-border-strong: #9a9ba1;
94
+ --sprout-input: #26272b;
95
+ --sprout-primary: #75ce8e;
96
+ --sprout-primary-hover: #8fd9a3;
97
+ --sprout-primary-active: #a6e2b6;
98
+ --sprout-on-primary: #0e2615;
99
+ --sprout-focus: #75ce8e;
100
+ --sprout-danger: #ff929d;
101
+ --sprout-danger-hover: #ffadb5;
102
+ --sprout-on-danger: #3b1016;
103
+ --sprout-info: #9cbdff;
104
+ --sprout-info-subtle: #202e48;
105
+ --sprout-danger-subtle: #3b2228;
106
+ --sprout-success: #75ce8e;
107
+ --sprout-success-subtle: #1b3323;
108
+ --sprout-warning: #edc17c;
109
+ --sprout-warning-subtle: #352b1e;
110
+ --sprout-primary-subtle: #1b3323;
111
+ --sprout-secondary: #28292e;
112
+ --sprout-overlay: rgb(0 0 0 / 0.5);
123
113
  }
124
114
  }
125
115
  }
@@ -68,8 +68,8 @@
68
68
  content: "";
69
69
  }
70
70
  .sprout-toast:focus-visible {
71
- outline: 2px solid var(--sprout-focus);
72
- outline-offset: 2px;
71
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
72
+ outline-offset: 0;
73
73
  }
74
74
  .sprout-toast[data-expanded] {
75
75
  height: var(--toast-height);
@@ -58,8 +58,8 @@
58
58
  }
59
59
  .sprout-toggle-group-item:focus-visible {
60
60
  z-index: 1;
61
- outline: 2px solid var(--sprout-focus);
62
- outline-offset: 2px;
61
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
62
+ outline-offset: 0;
63
63
  }
64
64
  .sprout-toggle-group-item[data-disabled] {
65
65
  cursor: not-allowed;
@@ -44,8 +44,8 @@
44
44
  }
45
45
  .sprout-toggle:focus-visible {
46
46
  z-index: 1;
47
- outline: 2px solid var(--sprout-focus);
48
- outline-offset: 2px;
47
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
48
+ outline-offset: 0;
49
49
  }
50
50
  .sprout-toggle:disabled,
51
51
  .sprout-toggle[data-disabled] {
@@ -87,8 +87,8 @@
87
87
  display: none;
88
88
  }
89
89
  .sprout-activity-panel-viewport:focus-visible {
90
- outline: 2px solid var(--sprout-focus);
91
- outline-offset: -2px;
90
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
91
+ outline-offset: -1px;
92
92
  }
93
93
 
94
94
  .sprout-tool-activity {
@@ -114,7 +114,7 @@
114
114
  color: var(--sprout-text);
115
115
  }
116
116
  .sprout-tool-activity-trigger:focus-visible {
117
- outline-offset: 1px;
117
+ outline-offset: 0;
118
118
  }
119
119
  .sprout-tool-activity-trigger > svg {
120
120
  flex-shrink: 0;
@@ -262,8 +262,8 @@
262
262
  background: var(--sprout-active);
263
263
  }
264
264
  .sprout-tool-activity-source-chip:focus-visible {
265
- outline: 2px solid var(--sprout-focus);
266
- outline-offset: 2px;
265
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
266
+ outline-offset: 0;
267
267
  }
268
268
  .sprout-tool-activity-favicon {
269
269
  position: relative;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tulipfarm/sprout",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Considered React controls. Built with Base UI and Tailwind CSS.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -108,6 +108,10 @@
108
108
  "types": "./dist/components/chat-sources.d.ts",
109
109
  "import": "./dist/components/chat-sources.js"
110
110
  },
111
+ "./chat-input": {
112
+ "types": "./dist/components/chat-input.d.ts",
113
+ "import": "./dist/components/chat-input.js"
114
+ },
111
115
  "./checkbox": {
112
116
  "types": "./dist/components/checkbox.d.ts",
113
117
  "import": "./dist/components/checkbox.js"
@@ -152,6 +156,10 @@
152
156
  "types": "./dist/components/field.d.ts",
153
157
  "import": "./dist/components/field.js"
154
158
  },
159
+ "./file-explorer": {
160
+ "types": "./dist/components/file-explorer.d.ts",
161
+ "import": "./dist/components/file-explorer.js"
162
+ },
155
163
  "./file-viewer": {
156
164
  "types": "./dist/components/file-viewer.d.ts",
157
165
  "import": "./dist/components/file-viewer.js"
@@ -418,6 +426,7 @@
418
426
  "@tiptap/pm": "3.31.4",
419
427
  "@tiptap/react": "3.31.4",
420
428
  "@tiptap/starter-kit": "3.31.4",
429
+ "@tiptap/suggestion": "3.31.4",
421
430
  "@xyflow/react": "12.12.0",
422
431
  "clsx": "^2.1.1",
423
432
  "react-day-picker": "10.0.1",