@tulipfarm/sprout 0.3.0 → 0.4.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 (349) hide show
  1. package/README.md +45 -40
  2. package/dist/components/accordion.d.ts +2 -2
  3. package/dist/components/accordion.js +9 -9
  4. package/dist/components/agent-fanout.d.ts +2 -2
  5. package/dist/components/agent-fanout.js +65 -87
  6. package/dist/components/alert-dialog.d.ts +6 -6
  7. package/dist/components/alert-dialog.js +20 -20
  8. package/dist/components/alert.d.ts +6 -6
  9. package/dist/components/alert.js +13 -13
  10. package/dist/components/aspect-ratio.d.ts +2 -2
  11. package/dist/components/aspect-ratio.js +2 -2
  12. package/dist/components/attachment.d.ts +17 -17
  13. package/dist/components/attachment.js +82 -115
  14. package/dist/components/avatar.d.ts +10 -10
  15. package/dist/components/avatar.js +14 -14
  16. package/dist/components/badge.d.ts +4 -4
  17. package/dist/components/badge.js +18 -18
  18. package/dist/components/board.d.ts +107 -0
  19. package/dist/components/board.js +640 -0
  20. package/dist/components/brand-icon.d.ts +6 -6
  21. package/dist/components/brand-icon.js +55 -63
  22. package/dist/components/breadcrumb.d.ts +11 -11
  23. package/dist/components/breadcrumb.js +16 -18
  24. package/dist/components/button-group.d.ts +6 -6
  25. package/dist/components/button-group.js +14 -14
  26. package/dist/components/button.d.ts +11 -11
  27. package/dist/components/button.js +46 -56
  28. package/dist/components/calendar.d.ts +5 -5
  29. package/dist/components/calendar.js +44 -53
  30. package/dist/components/canvas.d.ts +4 -4
  31. package/dist/components/canvas.js +39 -46
  32. package/dist/components/card.d.ts +6 -6
  33. package/dist/components/card.js +17 -17
  34. package/dist/components/carousel.d.ts +7 -7
  35. package/dist/components/carousel.js +57 -75
  36. package/dist/components/chart.d.ts +5 -112
  37. package/dist/components/chart.js +5 -172
  38. package/dist/components/chat-confirmation.d.ts +13 -11
  39. package/dist/components/chat-confirmation.js +32 -38
  40. package/dist/components/chat-input.d.ts +4 -4
  41. package/dist/components/chat-input.js +74 -81
  42. package/dist/components/chat-plan.d.ts +2 -2
  43. package/dist/components/chat-plan.js +15 -20
  44. package/dist/components/chat-sources.d.ts +8 -8
  45. package/dist/components/chat-sources.js +18 -27
  46. package/dist/components/checkbox.d.ts +1 -1
  47. package/dist/components/checkbox.js +9 -9
  48. package/dist/components/choice-list.d.ts +2 -2
  49. package/dist/components/choice-list.js +16 -18
  50. package/dist/components/code-block.d.ts +5 -5
  51. package/dist/components/code-block.js +26 -26
  52. package/dist/components/collapsible.d.ts +1 -1
  53. package/dist/components/collapsible.js +7 -11
  54. package/dist/components/combobox.d.ts +3 -3
  55. package/dist/components/combobox.js +24 -24
  56. package/dist/components/command.d.ts +13 -13
  57. package/dist/components/command.js +61 -73
  58. package/dist/components/context-menu.d.ts +5 -5
  59. package/dist/components/context-menu.js +22 -22
  60. package/dist/components/dialog.d.ts +6 -6
  61. package/dist/components/dialog.js +23 -28
  62. package/dist/components/direction.d.ts +1 -1
  63. package/dist/components/direction.js +1 -1
  64. package/dist/components/dropdown-menu.d.ts +5 -5
  65. package/dist/components/dropdown-menu.js +20 -20
  66. package/dist/components/field.d.ts +11 -11
  67. package/dist/components/field.js +41 -61
  68. package/dist/components/file-explorer.d.ts +2 -2
  69. package/dist/components/file-explorer.js +89 -105
  70. package/dist/components/file-viewer.d.ts +10 -10
  71. package/dist/components/file-viewer.js +112 -140
  72. package/dist/components/form.d.ts +7 -7
  73. package/dist/components/form.js +24 -28
  74. package/dist/components/glass-banner.d.ts +3 -3
  75. package/dist/components/glass-banner.js +21 -24
  76. package/dist/components/gradient-banner.d.ts +5 -5
  77. package/dist/components/gradient-banner.js +13 -22
  78. package/dist/components/hover-card.d.ts +4 -4
  79. package/dist/components/hover-card.js +6 -6
  80. package/dist/components/input-group.d.ts +11 -11
  81. package/dist/components/input-group.js +22 -36
  82. package/dist/components/input-otp.d.ts +10 -10
  83. package/dist/components/input-otp.js +13 -15
  84. package/dist/components/input.d.ts +1 -1
  85. package/dist/components/input.js +7 -7
  86. package/dist/components/kbd.d.ts +3 -3
  87. package/dist/components/kbd.js +5 -5
  88. package/dist/components/label.d.ts +2 -2
  89. package/dist/components/label.js +2 -2
  90. package/dist/components/mention-list.d.ts +3 -3
  91. package/dist/components/mention-list.js +10 -10
  92. package/dist/components/menubar.d.ts +6 -6
  93. package/dist/components/menubar.js +22 -22
  94. package/dist/components/message-actions.d.ts +2 -2
  95. package/dist/components/message-actions.js +29 -31
  96. package/dist/components/message-response.d.ts +3 -3
  97. package/dist/components/message-response.js +18 -18
  98. package/dist/components/message-scroller.d.ts +12 -12
  99. package/dist/components/message-scroller.js +44 -56
  100. package/dist/components/message.d.ts +11 -11
  101. package/dist/components/message.js +25 -25
  102. package/dist/components/navigation-menu.d.ts +2 -2
  103. package/dist/components/navigation-menu.js +15 -15
  104. package/dist/components/notice-banner.d.ts +2 -2
  105. package/dist/components/notice-banner.js +2 -2
  106. package/dist/components/page-content.d.ts +2 -2
  107. package/dist/components/page-content.js +2 -2
  108. package/dist/components/page-header.d.ts +1 -1
  109. package/dist/components/page-header.js +16 -16
  110. package/dist/components/pagination.d.ts +9 -9
  111. package/dist/components/pagination.js +17 -17
  112. package/dist/components/plan-outline.d.ts +2 -2
  113. package/dist/components/plan-outline.js +43 -60
  114. package/dist/components/popover.d.ts +6 -6
  115. package/dist/components/popover.js +15 -15
  116. package/dist/components/presence-cursor.d.ts +2 -2
  117. package/dist/components/presence-cursor.js +3 -3
  118. package/dist/components/progress.d.ts +1 -1
  119. package/dist/components/progress.js +8 -8
  120. package/dist/components/prompt-list.d.ts +3 -3
  121. package/dist/components/prompt-list.js +6 -6
  122. package/dist/components/questionnaire.d.ts +19 -19
  123. package/dist/components/questionnaire.js +183 -242
  124. package/dist/components/radio-group.d.ts +2 -2
  125. package/dist/components/radio-group.js +6 -6
  126. package/dist/components/reasoning-effort.d.ts +3 -3
  127. package/dist/components/reasoning-effort.js +9 -12
  128. package/dist/components/record-list.d.ts +66 -0
  129. package/dist/components/record-list.js +151 -0
  130. package/dist/components/resizable.d.ts +5 -5
  131. package/dist/components/resizable.js +76 -102
  132. package/dist/components/result-card.d.ts +10 -5
  133. package/dist/components/result-card.js +42 -53
  134. package/dist/components/result-notice.d.ts +18 -0
  135. package/dist/components/result-notice.js +29 -0
  136. package/dist/components/review-card.d.ts +6 -6
  137. package/dist/components/review-card.js +18 -18
  138. package/dist/components/rich-text-editor.d.ts +2 -2
  139. package/dist/components/rich-text-editor.js +56 -72
  140. package/dist/components/schema-diagram.d.ts +3 -3
  141. package/dist/components/schema-diagram.js +39 -53
  142. package/dist/components/scroll-area.d.ts +1 -1
  143. package/dist/components/scroll-area.js +10 -14
  144. package/dist/components/search-dialog.d.ts +6 -6
  145. package/dist/components/search-dialog.js +16 -16
  146. package/dist/components/search-field.d.ts +1 -1
  147. package/dist/components/search-field.js +11 -11
  148. package/dist/components/select.d.ts +3 -3
  149. package/dist/components/select.js +20 -20
  150. package/dist/components/selection-slot.d.ts +2 -2
  151. package/dist/components/selection-slot.js +6 -9
  152. package/dist/components/separator.d.ts +15 -15
  153. package/dist/components/separator.js +22 -27
  154. package/dist/components/settings-list.d.ts +3 -3
  155. package/dist/components/settings-list.js +5 -5
  156. package/dist/components/sheet.d.ts +6 -6
  157. package/dist/components/sheet.js +27 -27
  158. package/dist/components/sidebar.d.ts +22 -22
  159. package/dist/components/sidebar.js +57 -58
  160. package/dist/components/skeleton.d.ts +5 -5
  161. package/dist/components/skeleton.js +14 -21
  162. package/dist/components/slider.d.ts +2 -2
  163. package/dist/components/slider.js +6 -6
  164. package/dist/components/spinner.d.ts +5 -5
  165. package/dist/components/spinner.js +22 -26
  166. package/dist/components/sql-viewer.d.ts +14 -14
  167. package/dist/components/sql-viewer.js +99 -128
  168. package/dist/components/state-panel-samples.d.ts +2 -2
  169. package/dist/components/state-panel-samples.js +209 -245
  170. package/dist/components/state-panel.d.ts +2 -35
  171. package/dist/components/state-panel.js +2 -29
  172. package/dist/components/state-sample.d.ts +7 -7
  173. package/dist/components/state-sample.js +18 -31
  174. package/dist/components/switch.d.ts +1 -1
  175. package/dist/components/switch.js +7 -7
  176. package/dist/components/table-nuqs.d.ts +2 -2
  177. package/dist/components/table-nuqs.js +11 -12
  178. package/dist/components/table.d.ts +4 -4
  179. package/dist/components/table.js +166 -235
  180. package/dist/components/tabs.d.ts +2 -2
  181. package/dist/components/tabs.js +12 -12
  182. package/dist/components/textarea.d.ts +2 -2
  183. package/dist/components/textarea.js +6 -8
  184. package/dist/components/timeline.d.ts +3 -0
  185. package/dist/components/timeline.js +3 -0
  186. package/dist/components/toast.d.ts +2 -2
  187. package/dist/components/toast.js +19 -25
  188. package/dist/components/toggle-group.d.ts +2 -2
  189. package/dist/components/toggle-group.js +18 -20
  190. package/dist/components/toggle.d.ts +2 -2
  191. package/dist/components/toggle.js +8 -8
  192. package/dist/components/tool-activity.d.ts +1 -1
  193. package/dist/components/tool-activity.js +83 -110
  194. package/dist/components/toolbar-status.d.ts +2 -2
  195. package/dist/components/toolbar-status.js +7 -7
  196. package/dist/components/tooltip.d.ts +5 -5
  197. package/dist/components/tooltip.js +12 -11
  198. package/dist/components/typed-text.d.ts +2 -2
  199. package/dist/components/typed-text.js +10 -12
  200. package/dist/components/view-switcher.d.ts +51 -0
  201. package/dist/components/view-switcher.js +114 -0
  202. package/dist/index.d.ts +98 -93
  203. package/dist/index.js +98 -93
  204. package/dist/internal/chart-kit.d.ts +142 -0
  205. package/dist/internal/chart-kit.js +200 -0
  206. package/dist/internal/charts/bars.d.ts +61 -0
  207. package/dist/internal/charts/bars.js +86 -0
  208. package/dist/internal/charts/lines.d.ts +67 -0
  209. package/dist/internal/charts/lines.js +70 -0
  210. package/dist/internal/charts/more.d.ts +77 -0
  211. package/dist/internal/charts/more.js +68 -0
  212. package/dist/internal/charts/parts.d.ts +54 -0
  213. package/dist/internal/charts/parts.js +82 -0
  214. package/dist/internal/charts/timeline-dates.d.ts +38 -0
  215. package/dist/internal/charts/timeline-dates.js +113 -0
  216. package/dist/internal/charts/timeline-window.d.ts +31 -0
  217. package/dist/internal/charts/timeline-window.js +26 -0
  218. package/dist/internal/charts/timeline.d.ts +72 -0
  219. package/dist/internal/charts/timeline.js +287 -0
  220. package/dist/internal/classes.d.ts +1 -1
  221. package/dist/internal/classes.js +7 -9
  222. package/dist/internal/code-tokens.d.ts +2 -2
  223. package/dist/internal/code-tokens.js +12 -12
  224. package/dist/internal/fieldset.d.ts +1 -1
  225. package/dist/internal/fieldset.js +6 -6
  226. package/dist/internal/file-kind.d.ts +1 -1
  227. package/dist/internal/file-kind.js +43 -51
  228. package/dist/internal/flow.d.ts +4 -4
  229. package/dist/internal/flow.js +20 -23
  230. package/dist/internal/languages.js +999 -999
  231. package/dist/internal/message-scroller.d.ts +3 -3
  232. package/dist/internal/message-scroller.js +64 -112
  233. package/dist/internal/pressable.d.ts +1 -1
  234. package/dist/internal/pressable.js +7 -7
  235. package/dist/internal/state-panel.d.ts +35 -0
  236. package/dist/internal/state-panel.js +22 -0
  237. package/dist/internal/syntax.d.ts +2 -2
  238. package/dist/internal/syntax.js +36 -47
  239. package/dist/styles/accordion.css +3 -5
  240. package/dist/styles/agent-fanout.css +64 -60
  241. package/dist/styles/alert-dialog.css +12 -26
  242. package/dist/styles/alert.css +10 -15
  243. package/dist/styles/attachment.css +51 -93
  244. package/dist/styles/avatar.css +17 -24
  245. package/dist/styles/badge.css +11 -36
  246. package/dist/styles/board.css +571 -0
  247. package/dist/styles/brand-icon.css +7 -8
  248. package/dist/styles/breadcrumb.css +4 -7
  249. package/dist/styles/button-group.css +8 -14
  250. package/dist/styles/button.css +22 -27
  251. package/dist/styles/calendar.css +24 -36
  252. package/dist/styles/canvas.css +2 -3
  253. package/dist/styles/card.css +7 -23
  254. package/dist/styles/carousel.css +11 -12
  255. package/dist/styles/chart.css +215 -31
  256. package/dist/styles/chat-input.css +15 -39
  257. package/dist/styles/chat-plan.css +3 -4
  258. package/dist/styles/chat-sources.css +3 -6
  259. package/dist/styles/checkbox.css +11 -25
  260. package/dist/styles/choice-list.css +17 -31
  261. package/dist/styles/code-block.css +11 -25
  262. package/dist/styles/collapsible.css +10 -15
  263. package/dist/styles/combobox.css +11 -15
  264. package/dist/styles/command.css +5 -8
  265. package/dist/styles/context-menu.css +2 -2
  266. package/dist/styles/dialog.css +5 -16
  267. package/dist/styles/dropdown-menu.css +2 -2
  268. package/dist/styles/field.css +15 -21
  269. package/dist/styles/file-explorer.css +19 -33
  270. package/dist/styles/file-viewer.css +13 -17
  271. package/dist/styles/form.css +3 -3
  272. package/dist/styles/glass-banner.css +12 -47
  273. package/dist/styles/gradient-banner.css +17 -35
  274. package/dist/styles/hover-card.css +9 -15
  275. package/dist/styles/index.css +116 -108
  276. package/dist/styles/input-group.css +25 -41
  277. package/dist/styles/input-otp.css +5 -6
  278. package/dist/styles/input.css +5 -5
  279. package/dist/styles/kbd.css +1 -1
  280. package/dist/styles/label.css +9 -30
  281. package/dist/styles/mention-list.css +6 -8
  282. package/dist/styles/menubar.css +5 -6
  283. package/dist/styles/message-actions.css +1 -1
  284. package/dist/styles/message-response.css +3 -5
  285. package/dist/styles/message-scroller.css +14 -21
  286. package/dist/styles/message.css +23 -60
  287. package/dist/styles/navigation-menu.css +14 -29
  288. package/dist/styles/notice-banner.css +1 -2
  289. package/dist/styles/page-header.css +7 -10
  290. package/dist/styles/pagination.css +1 -4
  291. package/dist/styles/plan-outline.css +20 -37
  292. package/dist/styles/popover.css +10 -19
  293. package/dist/styles/presence-cursor.css +1 -2
  294. package/dist/styles/progress.css +2 -4
  295. package/dist/styles/prompt-list.css +6 -17
  296. package/dist/styles/questionnaire.css +16 -40
  297. package/dist/styles/radio-group.css +12 -23
  298. package/dist/styles/reasoning-effort.css +8 -15
  299. package/dist/styles/record-list.css +243 -0
  300. package/dist/styles/resizable.css +10 -11
  301. package/dist/styles/result-card.css +17 -3
  302. package/dist/styles/result-notice.css +80 -0
  303. package/dist/styles/review-card.css +2 -3
  304. package/dist/styles/rich-text-editor.css +1 -2
  305. package/dist/styles/schema-diagram.css +12 -17
  306. package/dist/styles/scroll-area.css +8 -10
  307. package/dist/styles/search-dialog.css +1 -5
  308. package/dist/styles/search-field.css +1 -2
  309. package/dist/styles/select.css +7 -7
  310. package/dist/styles/selection-slot.css +1 -2
  311. package/dist/styles/separator.css +7 -8
  312. package/dist/styles/settings-list.css +1 -2
  313. package/dist/styles/sheet.css +40 -73
  314. package/dist/styles/sidebar.css +17 -21
  315. package/dist/styles/skeleton.css +9 -11
  316. package/dist/styles/slider.css +11 -21
  317. package/dist/styles/spinner.css +2 -2
  318. package/dist/styles/sql-viewer.css +29 -29
  319. package/dist/styles/state-panel.css +8 -9
  320. package/dist/styles/state-sample.css +20 -33
  321. package/dist/styles/switch.css +11 -18
  322. package/dist/styles/table.css +51 -77
  323. package/dist/styles/tabs.css +12 -16
  324. package/dist/styles/textarea.css +3 -3
  325. package/dist/styles/themes/chatgpt.css +11 -23
  326. package/dist/styles/themes/claude.css +12 -24
  327. package/dist/styles/themes/cloudflare.css +11 -23
  328. package/dist/styles/themes/discord.css +11 -23
  329. package/dist/styles/themes/github.css +11 -23
  330. package/dist/styles/themes/grok.css +11 -23
  331. package/dist/styles/themes/linear.css +12 -25
  332. package/dist/styles/themes/neutral.css +11 -23
  333. package/dist/styles/themes/notion.css +11 -23
  334. package/dist/styles/themes/perplexity.css +11 -23
  335. package/dist/styles/themes/raycast.css +11 -23
  336. package/dist/styles/themes/spotify.css +11 -23
  337. package/dist/styles/themes/stripe.css +11 -23
  338. package/dist/styles/themes/supabase.css +11 -23
  339. package/dist/styles/themes/tulipfarm.css +9 -10
  340. package/dist/styles/themes/vercel.css +12 -25
  341. package/dist/styles/timeline.css +276 -0
  342. package/dist/styles/toast.css +13 -20
  343. package/dist/styles/toggle-group.css +17 -23
  344. package/dist/styles/toggle.css +8 -8
  345. package/dist/styles/tool-activity.css +7 -13
  346. package/dist/styles/toolbar-status.css +2 -7
  347. package/dist/styles/tooltip.css +15 -21
  348. package/dist/styles/view-switcher.css +279 -0
  349. package/package.json +21 -1
@@ -90,9 +90,7 @@
90
90
  background: color-mix(in oklab, var(--sprout-hover) 60%, transparent);
91
91
  }
92
92
  }
93
- .sprout-questionnaire-choice:has(
94
- > .sprout-questionnaire-choice-input:focus-visible
95
- ) {
93
+ .sprout-questionnaire-choice:has(> .sprout-questionnaire-choice-input:focus-visible) {
96
94
  outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
97
95
  }
98
96
  .sprout-questionnaire-choice[data-checked] {
@@ -102,9 +100,7 @@
102
100
  .sprout-questionnaire-choice[data-invalid] {
103
101
  border-color: var(--sprout-danger);
104
102
  }
105
- .sprout-questionnaire-choice[data-invalid]:has(
106
- > .sprout-questionnaire-choice-input:focus-visible
107
- ) {
103
+ .sprout-questionnaire-choice[data-invalid]:has(> .sprout-questionnaire-choice-input:focus-visible) {
108
104
  outline-color: var(--sprout-danger);
109
105
  }
110
106
  .sprout-questionnaire-choice[data-disabled] {
@@ -140,12 +136,10 @@
140
136
  color: var(--sprout-on-primary);
141
137
  pointer-events: none;
142
138
  }
143
- .sprout-questionnaire-choice[data-type="radio"]
144
- .sprout-questionnaire-choice-indicator {
139
+ .sprout-questionnaire-choice[data-type='radio'] .sprout-questionnaire-choice-indicator {
145
140
  border-radius: 999px;
146
141
  }
147
- .sprout-questionnaire-choice[data-checked]
148
- .sprout-questionnaire-choice-indicator {
142
+ .sprout-questionnaire-choice[data-checked] .sprout-questionnaire-choice-indicator {
149
143
  border-color: var(--sprout-primary);
150
144
  background: var(--sprout-primary);
151
145
  }
@@ -163,10 +157,8 @@
163
157
  width: 12px;
164
158
  height: 12px;
165
159
  }
166
- .sprout-questionnaire-choice[data-type="radio"][data-checked]
167
- .sprout-questionnaire-choice-dot,
168
- .sprout-questionnaire-choice[data-type="checkbox"][data-checked]
169
- .sprout-questionnaire-choice-check {
160
+ .sprout-questionnaire-choice[data-type='radio'][data-checked] .sprout-questionnaire-choice-dot,
161
+ .sprout-questionnaire-choice[data-type='checkbox'][data-checked] .sprout-questionnaire-choice-check {
170
162
  display: block;
171
163
  }
172
164
 
@@ -187,13 +179,8 @@
187
179
  font-variant-numeric: tabular-nums;
188
180
  pointer-events: none;
189
181
  }
190
- .sprout-questionnaire-choice[data-checked]
191
- .sprout-questionnaire-choice-shortcut {
192
- border-color: color-mix(
193
- in oklab,
194
- var(--sprout-focus) 40%,
195
- var(--sprout-line)
196
- );
182
+ .sprout-questionnaire-choice[data-checked] .sprout-questionnaire-choice-shortcut {
183
+ border-color: color-mix(in oklab, var(--sprout-focus) 40%, var(--sprout-line));
197
184
  color: var(--sprout-text);
198
185
  }
199
186
 
@@ -260,24 +247,16 @@
260
247
  .sprout-questionnaire-choice-indicator,
261
248
  .sprout-questionnaire-choice-shortcut {
262
249
  transition:
263
- background-color var(--sprout-motion-fast, 120ms)
264
- var(--sprout-motion-ease, ease-out),
265
- border-color var(--sprout-motion-fast, 120ms)
266
- var(--sprout-motion-ease, ease-out),
267
- color var(--sprout-motion-fast, 120ms)
268
- var(--sprout-motion-ease, ease-out);
250
+ background-color var(--sprout-motion-fast, 120ms) var(--sprout-motion-ease, ease-out),
251
+ border-color var(--sprout-motion-fast, 120ms) var(--sprout-motion-ease, ease-out),
252
+ color var(--sprout-motion-fast, 120ms) var(--sprout-motion-ease, ease-out);
269
253
  }
270
254
  .sprout-questionnaire-item[data-active] {
271
- animation: sprout-questionnaire-enter var(--sprout-motion-normal, 160ms)
272
- var(--sprout-motion-ease, ease-out);
255
+ animation: sprout-questionnaire-enter var(--sprout-motion-normal, 160ms) var(--sprout-motion-ease, ease-out);
273
256
  }
274
257
  .sprout-questionnaire-choice[data-checked]
275
- :is(
276
- .sprout-questionnaire-choice-dot,
277
- .sprout-questionnaire-choice-check
278
- ) {
279
- animation: sprout-questionnaire-pop var(--sprout-motion-fast, 140ms)
280
- ease-out both;
258
+ :is(.sprout-questionnaire-choice-dot, .sprout-questionnaire-choice-check) {
259
+ animation: sprout-questionnaire-pop var(--sprout-motion-fast, 140ms) ease-out both;
281
260
  }
282
261
  }
283
262
  @keyframes sprout-questionnaire-enter {
@@ -295,13 +274,10 @@
295
274
 
296
275
  @media (forced-colors: active) {
297
276
  .sprout-questionnaire-choice[data-checked],
298
- .sprout-questionnaire-choice[data-checked]
299
- .sprout-questionnaire-choice-indicator {
277
+ .sprout-questionnaire-choice[data-checked] .sprout-questionnaire-choice-indicator {
300
278
  border-color: Highlight;
301
279
  }
302
- .sprout-questionnaire-choice:has(
303
- > .sprout-questionnaire-choice-input:focus-visible
304
- ) {
280
+ .sprout-questionnaire-choice:has(> .sprout-questionnaire-choice-input:focus-visible) {
305
281
  outline-color: Highlight;
306
282
  }
307
283
  }
@@ -28,16 +28,12 @@
28
28
  }
29
29
  /* A 40 x 32px hit area around the 16px dot. */
30
30
  .sprout-radio-group-item::after {
31
- content: "";
31
+ content: '';
32
32
  position: absolute;
33
33
  inset: -8px -12px;
34
34
  }
35
35
  @media (hover: hover) {
36
- .sprout-radio-group-item:not(
37
- [data-disabled],
38
- [data-readonly],
39
- [data-checked]
40
- ):hover {
36
+ .sprout-radio-group-item:not([data-disabled], [data-readonly], [data-checked]):hover {
41
37
  border-color: var(--sprout-border-strong);
42
38
  }
43
39
  }
@@ -48,14 +44,13 @@
48
44
  border-color: var(--sprout-primary);
49
45
  background-color: var(--sprout-primary);
50
46
  }
51
- .sprout-radio-group-item[aria-invalid="true"] {
52
- box-shadow: 0 0 0 3px
53
- color-mix(in oklab, var(--sprout-danger) 20%, transparent);
47
+ .sprout-radio-group-item[aria-invalid='true'] {
48
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--sprout-danger) 20%, transparent);
54
49
  }
55
- .sprout-radio-group-item[aria-invalid="true"]:not([data-checked]) {
50
+ .sprout-radio-group-item[aria-invalid='true']:not([data-checked]) {
56
51
  border-color: var(--sprout-danger);
57
52
  }
58
- .sprout-radio-group-item[aria-invalid="true"]:focus-visible {
53
+ .sprout-radio-group-item[aria-invalid='true']:focus-visible {
59
54
  outline-color: var(--sprout-danger);
60
55
  }
61
56
  .sprout-radio-group-item[data-readonly] {
@@ -77,21 +72,15 @@
77
72
  @media (prefers-reduced-motion: no-preference) {
78
73
  .sprout-radio-group-item {
79
74
  transition:
80
- background-color var(--sprout-motion-fast, 120ms)
81
- var(--sprout-motion-ease, ease-out),
82
- border-color var(--sprout-motion-fast, 120ms)
83
- var(--sprout-motion-ease, ease-out),
84
- box-shadow var(--sprout-motion-fast, 120ms)
85
- var(--sprout-motion-ease, ease-out),
86
- opacity var(--sprout-motion-fast, 120ms)
87
- var(--sprout-motion-ease, ease-out);
75
+ background-color var(--sprout-motion-fast, 120ms) var(--sprout-motion-ease, ease-out),
76
+ border-color var(--sprout-motion-fast, 120ms) var(--sprout-motion-ease, ease-out),
77
+ box-shadow var(--sprout-motion-fast, 120ms) var(--sprout-motion-ease, ease-out),
78
+ opacity var(--sprout-motion-fast, 120ms) var(--sprout-motion-ease, ease-out);
88
79
  }
89
80
  .sprout-radio-group-indicator {
90
81
  transition:
91
- opacity var(--sprout-motion-normal, 180ms)
92
- var(--sprout-motion-ease, ease-out),
93
- transform var(--sprout-motion-normal, 180ms)
94
- var(--sprout-motion-ease, ease-out);
82
+ opacity var(--sprout-motion-normal, 180ms) var(--sprout-motion-ease, ease-out),
83
+ transform var(--sprout-motion-normal, 180ms) var(--sprout-motion-ease, ease-out);
95
84
  }
96
85
  .sprout-radio-group-indicator[data-starting-style],
97
86
  .sprout-radio-group-indicator[data-ending-style] {
@@ -62,8 +62,7 @@
62
62
  outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
63
63
  outline-offset: 0;
64
64
  }
65
- .sprout-reasoning-effort[data-dragging="true"]
66
- .sprout-reasoning-effort-track {
65
+ .sprout-reasoning-effort[data-dragging='true'] .sprout-reasoning-effort-track {
67
66
  cursor: grabbing;
68
67
  }
69
68
 
@@ -101,25 +100,19 @@
101
100
  transform: translateY(-50%);
102
101
  pointer-events: none;
103
102
  }
104
- .sprout-reasoning-effort-tick[data-active="true"] {
105
- background-color: color-mix(
106
- in oklab,
107
- var(--sprout-on-primary) 60%,
108
- transparent
109
- );
103
+ .sprout-reasoning-effort-tick[data-active='true'] {
104
+ background-color: color-mix(in oklab, var(--sprout-on-primary) 60%, transparent);
110
105
  }
111
- .sprout-reasoning-effort-tick[data-on-thumb="true"] {
106
+ .sprout-reasoning-effort-tick[data-on-thumb='true'] {
112
107
  background-color: rgb(0 0 0 / 0.45);
113
108
  }
114
109
 
115
110
  @media (prefers-reduced-motion: no-preference) {
116
111
  .sprout-reasoning-effort-bubble-text {
117
- animation: sprout-reasoning-effort-level-in
118
- var(--sprout-motion-normal, 180ms) var(--sprout-motion-ease, ease-out);
112
+ animation: sprout-reasoning-effort-level-in var(--sprout-motion-normal, 180ms) var(--sprout-motion-ease, ease-out);
119
113
  }
120
114
  .sprout-reasoning-effort-track {
121
- transition: outline-color var(--sprout-motion-fast, 120ms)
122
- var(--sprout-motion-ease, ease-out);
115
+ transition: outline-color var(--sprout-motion-fast, 120ms) var(--sprout-motion-ease, ease-out);
123
116
  }
124
117
  }
125
118
 
@@ -146,8 +139,8 @@
146
139
  background-color: Canvas;
147
140
  }
148
141
  .sprout-reasoning-effort-tick,
149
- .sprout-reasoning-effort-tick[data-active="true"],
150
- .sprout-reasoning-effort-tick[data-on-thumb="true"] {
142
+ .sprout-reasoning-effort-tick[data-active='true'],
143
+ .sprout-reasoning-effort-tick[data-on-thumb='true'] {
151
144
  background-color: CanvasText;
152
145
  }
153
146
  .sprout-reasoning-effort-track:focus-visible {
@@ -0,0 +1,243 @@
1
+ @layer components {
2
+ .sprout-record-list {
3
+ --sprout-record-list-pad-y: 0.75rem;
4
+ --sprout-record-list-pad-x: 1rem;
5
+ container-type: inline-size;
6
+ box-sizing: border-box;
7
+ display: flex;
8
+ flex-direction: column;
9
+ min-width: 0;
10
+ border: 1px solid var(--sprout-line);
11
+ border-radius: var(--sprout-radius-panel);
12
+ background: var(--sprout-surface);
13
+ color: var(--sprout-text);
14
+ font-family: var(--sprout-font);
15
+ font-size: var(--sprout-text-sm);
16
+ line-height: 1.25rem;
17
+ overflow: hidden;
18
+ }
19
+ .sprout-record-list[data-density='compact'] {
20
+ --sprout-record-list-pad-y: 0.5rem;
21
+ --sprout-record-list-pad-x: 0.75rem;
22
+ }
23
+
24
+ .sprout-record-list-items {
25
+ margin: 0;
26
+ padding: 0;
27
+ list-style: none;
28
+ }
29
+ .sprout-record-list-items[aria-busy='true'] {
30
+ opacity: 0.55;
31
+ }
32
+
33
+ .sprout-record-list-item {
34
+ display: grid;
35
+ grid-template-columns: minmax(0, 1fr) auto auto;
36
+ grid-template-areas:
37
+ 'title badges actions'
38
+ 'values badges actions';
39
+ align-items: center;
40
+ column-gap: 0.75rem;
41
+ min-height: 2.75rem;
42
+ padding: var(--sprout-record-list-pad-y) var(--sprout-record-list-pad-x);
43
+ border-bottom: 1px solid var(--sprout-line);
44
+ outline: none;
45
+ }
46
+ .sprout-record-list-item:last-child {
47
+ border-bottom: 0;
48
+ }
49
+ .sprout-record-list-item[data-openable] {
50
+ cursor: pointer;
51
+ }
52
+ @media (hover: hover) {
53
+ .sprout-record-list-item:hover {
54
+ background-color: var(--sprout-hover);
55
+ }
56
+ }
57
+ .sprout-record-list-item:has([aria-expanded='true']),
58
+ .sprout-record-list-item:has(:focus-visible) {
59
+ background-color: var(--sprout-hover);
60
+ }
61
+ .sprout-record-list-item:focus-visible {
62
+ background-color: var(--sprout-hover);
63
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
64
+ outline-offset: calc(var(--sprout-focus-width) * -1);
65
+ border-radius: 2px;
66
+ }
67
+
68
+ .sprout-record-list-title {
69
+ grid-area: title;
70
+ min-width: 0;
71
+ overflow: hidden;
72
+ font-weight: 500;
73
+ text-overflow: ellipsis;
74
+ white-space: nowrap;
75
+ }
76
+
77
+ .sprout-record-list-values {
78
+ grid-area: values;
79
+ display: flex;
80
+ flex-wrap: wrap;
81
+ gap: 0.25rem 1rem;
82
+ min-width: 0;
83
+ margin: 0.25rem 0 0;
84
+ font-size: var(--sprout-text-xs);
85
+ line-height: 1rem;
86
+ font-variant-numeric: tabular-nums;
87
+ }
88
+ .sprout-record-list-value {
89
+ display: flex;
90
+ align-items: baseline;
91
+ gap: 0.375rem;
92
+ min-width: 0;
93
+ max-width: 16rem;
94
+ }
95
+ .sprout-record-list-value > dt {
96
+ flex-shrink: 0;
97
+ color: var(--sprout-muted);
98
+ }
99
+ .sprout-record-list-value > dd {
100
+ min-width: 0;
101
+ margin: 0;
102
+ overflow: hidden;
103
+ color: var(--sprout-text);
104
+ font-weight: 500;
105
+ text-overflow: ellipsis;
106
+ white-space: nowrap;
107
+ }
108
+
109
+ .sprout-record-list-badges {
110
+ grid-area: badges;
111
+ display: flex;
112
+ flex-wrap: wrap;
113
+ justify-content: flex-end;
114
+ align-items: center;
115
+ gap: 0.25rem;
116
+ min-width: 0;
117
+ max-width: 18rem;
118
+ }
119
+
120
+ .sprout-record-list-actions {
121
+ grid-area: actions;
122
+ display: flex;
123
+ align-items: center;
124
+ gap: 0.25rem;
125
+ margin-inline-end: -0.25rem;
126
+ }
127
+
128
+ @container (max-width: 40rem) {
129
+ .sprout-record-list-item {
130
+ grid-template-columns: minmax(0, 1fr) auto;
131
+ grid-template-areas:
132
+ 'title actions'
133
+ 'values values'
134
+ 'badges badges';
135
+ align-items: start;
136
+ }
137
+ .sprout-record-list-title {
138
+ display: -webkit-box;
139
+ -webkit-box-orient: vertical;
140
+ -webkit-line-clamp: 2;
141
+ align-self: center;
142
+ white-space: normal;
143
+ overflow-wrap: anywhere;
144
+ }
145
+ .sprout-record-list-badges {
146
+ justify-content: flex-start;
147
+ max-width: none;
148
+ margin-top: 0.5rem;
149
+ }
150
+ .sprout-record-list-value {
151
+ max-width: 100%;
152
+ }
153
+ }
154
+
155
+ .sprout-record-list-state {
156
+ min-width: 0;
157
+ outline: none;
158
+ }
159
+ .sprout-record-list-empty-text {
160
+ margin: 0;
161
+ padding: 1.5rem var(--sprout-record-list-pad-x);
162
+ color: var(--sprout-muted);
163
+ text-align: center;
164
+ }
165
+
166
+ .sprout-record-list-skeleton {
167
+ gap: 0;
168
+ }
169
+ .sprout-record-list-skeleton-row {
170
+ display: flex;
171
+ align-items: center;
172
+ gap: 0.75rem;
173
+ padding: var(--sprout-record-list-pad-y) var(--sprout-record-list-pad-x);
174
+ border-bottom: 1px solid var(--sprout-line);
175
+ }
176
+ .sprout-record-list-skeleton-row:last-of-type {
177
+ border-bottom: 0;
178
+ }
179
+ .sprout-record-list-skeleton-main {
180
+ display: grid;
181
+ flex: 1;
182
+ gap: 0.5rem;
183
+ min-width: 0;
184
+ }
185
+ .sprout-record-list .sprout-record-list-skeleton-title {
186
+ width: min(40%, 16rem);
187
+ height: 14px;
188
+ }
189
+ .sprout-record-list .sprout-record-list-skeleton-values {
190
+ width: min(70%, 28rem);
191
+ height: 10px;
192
+ }
193
+
194
+ .sprout-record-list-footer {
195
+ display: flex;
196
+ justify-content: center;
197
+ min-width: 0;
198
+ padding: 0.5rem var(--sprout-record-list-pad-x);
199
+ border-top: 1px solid var(--sprout-line);
200
+ }
201
+ .sprout-record-list-footer > * {
202
+ margin-inline: 0;
203
+ }
204
+
205
+ .sprout-record-list-sr-only {
206
+ position: absolute;
207
+ width: 1px;
208
+ height: 1px;
209
+ overflow: hidden;
210
+ clip-path: inset(50%);
211
+ white-space: nowrap;
212
+ }
213
+
214
+ @media (prefers-reduced-motion: no-preference) {
215
+ .sprout-record-list-item {
216
+ transition: background-color var(--sprout-motion-fast) var(--sprout-motion-ease);
217
+ }
218
+ .sprout-record-list-items {
219
+ transition: opacity var(--sprout-motion-normal) var(--sprout-motion-ease);
220
+ }
221
+ .sprout-record-list-state,
222
+ .sprout-record-list-item {
223
+ animation: sprout-record-list-in var(--sprout-motion-normal) var(--sprout-motion-ease);
224
+ }
225
+ }
226
+
227
+ @keyframes sprout-record-list-in {
228
+ from {
229
+ opacity: 0.4;
230
+ }
231
+ }
232
+
233
+ @media (forced-colors: active) {
234
+ .sprout-record-list,
235
+ .sprout-record-list-item,
236
+ .sprout-record-list-footer {
237
+ border-color: CanvasText;
238
+ }
239
+ .sprout-record-list-item:focus-visible {
240
+ outline-color: Highlight;
241
+ }
242
+ }
243
+ }
@@ -7,7 +7,7 @@
7
7
  min-height: 0;
8
8
  overflow: hidden;
9
9
  }
10
- .sprout-resizable-group[data-orientation="vertical"] {
10
+ .sprout-resizable-group[data-orientation='vertical'] {
11
11
  flex-direction: column;
12
12
  }
13
13
 
@@ -30,26 +30,26 @@
30
30
  touch-action: none;
31
31
  user-select: none;
32
32
  }
33
- .sprout-resizable-handle[data-orientation="vertical"] {
33
+ .sprout-resizable-handle[data-orientation='vertical'] {
34
34
  width: 1px;
35
35
  cursor: col-resize;
36
36
  }
37
- .sprout-resizable-handle[data-orientation="horizontal"] {
37
+ .sprout-resizable-handle[data-orientation='horizontal'] {
38
38
  height: 1px;
39
39
  cursor: row-resize;
40
40
  }
41
41
  /* A wider invisible hit area keeps the 1px line easy to grab. */
42
42
  .sprout-resizable-handle::after {
43
- content: "";
43
+ content: '';
44
44
  position: absolute;
45
45
  }
46
- .sprout-resizable-handle[data-orientation="vertical"]::after {
46
+ .sprout-resizable-handle[data-orientation='vertical']::after {
47
47
  inset-block: 0;
48
48
  left: 50%;
49
49
  width: 9px;
50
50
  transform: translateX(-50%);
51
51
  }
52
- .sprout-resizable-handle[data-orientation="horizontal"]::after {
52
+ .sprout-resizable-handle[data-orientation='horizontal']::after {
53
53
  inset-inline: 0;
54
54
  top: 50%;
55
55
  height: 9px;
@@ -71,12 +71,11 @@
71
71
  border-radius: 999px;
72
72
  background: var(--sprout-border);
73
73
  }
74
- .sprout-resizable-handle[data-orientation="vertical"] .sprout-resizable-grip {
74
+ .sprout-resizable-handle[data-orientation='vertical'] .sprout-resizable-grip {
75
75
  width: 6px;
76
76
  height: 24px;
77
77
  }
78
- .sprout-resizable-handle[data-orientation="horizontal"]
79
- .sprout-resizable-grip {
78
+ .sprout-resizable-handle[data-orientation='horizontal'] .sprout-resizable-grip {
80
79
  width: 24px;
81
80
  height: 6px;
82
81
  }
@@ -89,10 +88,10 @@
89
88
  }
90
89
 
91
90
  @media (pointer: coarse) {
92
- .sprout-resizable-handle[data-orientation="vertical"]::after {
91
+ .sprout-resizable-handle[data-orientation='vertical']::after {
93
92
  width: 24px;
94
93
  }
95
- .sprout-resizable-handle[data-orientation="horizontal"]::after {
94
+ .sprout-resizable-handle[data-orientation='horizontal']::after {
96
95
  height: 24px;
97
96
  }
98
97
  }
@@ -90,10 +90,10 @@
90
90
  .sprout-result-card-status > svg {
91
91
  flex-shrink: 0;
92
92
  }
93
- .sprout-result-card-status[data-tone="success"] {
93
+ .sprout-result-card-status[data-tone='success'] {
94
94
  color: var(--sprout-success);
95
95
  }
96
- .sprout-result-card-status[data-tone="error"] {
96
+ .sprout-result-card-status[data-tone='error'] {
97
97
  color: var(--sprout-danger);
98
98
  }
99
99
  .sprout-result-card-action {
@@ -150,6 +150,20 @@
150
150
  .sprout-result-app-name > svg {
151
151
  flex-shrink: 0;
152
152
  }
153
+ .sprout-result-app-icon {
154
+ display: inline-flex;
155
+ flex-shrink: 0;
156
+ width: 18px;
157
+ height: 18px;
158
+ }
159
+ .sprout-result-app-name > .sprout-result-app-icon {
160
+ width: 20px;
161
+ height: 20px;
162
+ }
163
+ .sprout-result-app-icon > svg {
164
+ width: 100%;
165
+ height: 100%;
166
+ }
153
167
  .sprout-result-app-name h4 {
154
168
  margin: 0;
155
169
  color: var(--sprout-text);
@@ -188,7 +202,7 @@
188
202
  flex-shrink: 0;
189
203
  color: var(--sprout-muted);
190
204
  }
191
- .sprout-result-app-action[data-state="failed"] .sprout-result-app-prefix {
205
+ .sprout-result-app-action[data-state='failed'] .sprout-result-app-prefix {
192
206
  color: var(--sprout-danger);
193
207
  }
194
208
  .sprout-result-app-label {
@@ -0,0 +1,80 @@
1
+ @layer components {
2
+ .sprout-result-notice {
3
+ box-sizing: border-box;
4
+ display: flex;
5
+ flex-wrap: wrap;
6
+ align-items: center;
7
+ gap: 4px 12px;
8
+ width: 100%;
9
+ min-width: 0;
10
+ min-height: 36px;
11
+ padding: 3px 3px 3px 10px;
12
+ border: 1px solid var(--sprout-line);
13
+ border-radius: calc(var(--sprout-radius-control) + 2px);
14
+ background: var(--sprout-surface);
15
+ color: var(--sprout-muted);
16
+ font-family: var(--sprout-font);
17
+ font-size: var(--sprout-text-sm);
18
+ line-height: 1.25rem;
19
+ font-variant-numeric: tabular-nums;
20
+ }
21
+ .sprout-result-notice:not(:has(> [data-slot='result-notice-action'])) {
22
+ padding-inline-end: 10px;
23
+ }
24
+
25
+ .sprout-result-notice-content {
26
+ display: flex;
27
+ flex: 1 1 16rem;
28
+ align-items: flex-start;
29
+ gap: 8px;
30
+ min-width: 0;
31
+ padding-block: 4px;
32
+ }
33
+
34
+ .sprout-result-notice-icon {
35
+ flex-shrink: 0;
36
+ width: 16px;
37
+ height: 16px;
38
+ translate: 0 2px;
39
+ }
40
+
41
+ .sprout-result-notice-message {
42
+ min-width: 0;
43
+ margin: 0;
44
+ overflow-wrap: anywhere;
45
+ }
46
+ .sprout-result-notice-message strong {
47
+ color: var(--sprout-text);
48
+ font-weight: 500;
49
+ }
50
+
51
+ .sprout-result-notice-action {
52
+ display: flex;
53
+ flex-wrap: wrap;
54
+ align-items: center;
55
+ flex-shrink: 0;
56
+ gap: 8px;
57
+ min-width: 0;
58
+ /* Lines a wrapped ghost button's label up with the message text. */
59
+ padding-inline-start: 14px;
60
+ }
61
+
62
+ @media (forced-colors: active) {
63
+ .sprout-result-notice {
64
+ border-color: CanvasText;
65
+ }
66
+ }
67
+
68
+ @media (prefers-reduced-motion: no-preference) {
69
+ .sprout-result-notice {
70
+ animation: sprout-result-notice-in var(--sprout-motion-normal) var(--sprout-motion-ease);
71
+ }
72
+ }
73
+
74
+ @keyframes sprout-result-notice-in {
75
+ from {
76
+ opacity: 0;
77
+ transform: translateY(-2px);
78
+ }
79
+ }
80
+ }
@@ -76,7 +76,7 @@
76
76
  }
77
77
  /* The whole header is the click target; the title button stays the named control. */
78
78
  .sprout-review-card-trigger::after {
79
- content: "";
79
+ content: '';
80
80
  position: absolute;
81
81
  inset: 0;
82
82
  }
@@ -228,8 +228,7 @@
228
228
 
229
229
  @media (prefers-reduced-motion: no-preference) {
230
230
  .sprout-review-card-header {
231
- transition: background-color var(--sprout-motion-fast, 120ms)
232
- var(--sprout-motion-ease, ease-out);
231
+ transition: background-color var(--sprout-motion-fast, 120ms) var(--sprout-motion-ease, ease-out);
233
232
  }
234
233
  }
235
234
  }
@@ -70,8 +70,7 @@
70
70
  pointer-events: none;
71
71
  }
72
72
 
73
- .sprout-rich-text-editor-content
74
- :where(p, h1, h2, h3, blockquote, pre, ul, ol) {
73
+ .sprout-rich-text-editor-content :where(p, h1, h2, h3, blockquote, pre, ul, ol) {
75
74
  margin: 0;
76
75
  }
77
76
  .sprout-rich-text-editor-content :where(h1, h2, h3) {