@tulipfarm/sprout 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/README.md +75 -68
  2. package/dist/components/accordion.d.ts +2 -2
  3. package/dist/components/accordion.js +9 -9
  4. package/dist/components/agent-avatar.d.ts +27 -0
  5. package/dist/components/agent-avatar.js +67 -0
  6. package/dist/components/agent-fanout.d.ts +2 -2
  7. package/dist/components/agent-fanout.js +65 -87
  8. package/dist/components/alert-dialog.d.ts +8 -8
  9. package/dist/components/alert-dialog.js +21 -21
  10. package/dist/components/alert.d.ts +6 -6
  11. package/dist/components/alert.js +13 -13
  12. package/dist/components/aspect-ratio.d.ts +2 -2
  13. package/dist/components/aspect-ratio.js +2 -2
  14. package/dist/components/attachment.d.ts +18 -18
  15. package/dist/components/attachment.js +82 -115
  16. package/dist/components/avatar.d.ts +9 -17
  17. package/dist/components/avatar.js +14 -51
  18. package/dist/components/badge.d.ts +4 -4
  19. package/dist/components/badge.js +18 -18
  20. package/dist/components/board.d.ts +107 -0
  21. package/dist/components/board.js +640 -0
  22. package/dist/components/brand-icon.d.ts +6 -6
  23. package/dist/components/brand-icon.js +55 -63
  24. package/dist/components/breadcrumb.d.ts +11 -11
  25. package/dist/components/breadcrumb.js +16 -18
  26. package/dist/components/button-group.d.ts +6 -6
  27. package/dist/components/button-group.js +14 -14
  28. package/dist/components/button.d.ts +13 -13
  29. package/dist/components/button.js +31 -57
  30. package/dist/components/calendar.d.ts +5 -5
  31. package/dist/components/calendar.js +44 -53
  32. package/dist/components/canvas.d.ts +4 -4
  33. package/dist/components/canvas.js +39 -46
  34. package/dist/components/card.d.ts +7 -7
  35. package/dist/components/card.js +17 -17
  36. package/dist/components/carousel.d.ts +7 -7
  37. package/dist/components/carousel.js +57 -75
  38. package/dist/components/chart.d.ts +5 -112
  39. package/dist/components/chart.js +5 -172
  40. package/dist/components/chat-confirmation.d.ts +10 -10
  41. package/dist/components/chat-confirmation.js +32 -38
  42. package/dist/components/chat-input.d.ts +4 -4
  43. package/dist/components/chat-input.js +74 -81
  44. package/dist/components/chat-plan.d.ts +2 -2
  45. package/dist/components/chat-plan.js +15 -20
  46. package/dist/components/chat-sources.d.ts +8 -8
  47. package/dist/components/chat-sources.js +18 -27
  48. package/dist/components/checkbox.d.ts +1 -1
  49. package/dist/components/checkbox.js +9 -9
  50. package/dist/components/choice-list.d.ts +2 -2
  51. package/dist/components/choice-list.js +16 -18
  52. package/dist/components/code-block.d.ts +5 -5
  53. package/dist/components/code-block.js +26 -26
  54. package/dist/components/collapsible.d.ts +1 -1
  55. package/dist/components/collapsible.js +7 -11
  56. package/dist/components/combobox.d.ts +12 -6
  57. package/dist/components/combobox.js +27 -26
  58. package/dist/components/command.d.ts +13 -13
  59. package/dist/components/command.js +61 -73
  60. package/dist/components/context-menu.d.ts +5 -5
  61. package/dist/components/context-menu.js +22 -22
  62. package/dist/components/dialog.d.ts +6 -6
  63. package/dist/components/dialog.js +23 -28
  64. package/dist/components/direction.d.ts +1 -1
  65. package/dist/components/direction.js +1 -1
  66. package/dist/components/dropdown-menu.d.ts +5 -5
  67. package/dist/components/dropdown-menu.js +20 -20
  68. package/dist/components/field.d.ts +11 -11
  69. package/dist/components/field.js +41 -61
  70. package/dist/components/file-explorer.d.ts +2 -2
  71. package/dist/components/file-explorer.js +89 -105
  72. package/dist/components/file-viewer.d.ts +10 -10
  73. package/dist/components/file-viewer.js +112 -140
  74. package/dist/components/form.d.ts +7 -7
  75. package/dist/components/form.js +24 -28
  76. package/dist/components/glass-banner.d.ts +3 -3
  77. package/dist/components/glass-banner.js +21 -24
  78. package/dist/components/gradient-banner.d.ts +7 -7
  79. package/dist/components/gradient-banner.js +13 -22
  80. package/dist/components/hover-card.d.ts +4 -4
  81. package/dist/components/hover-card.js +6 -6
  82. package/dist/components/input-group.d.ts +18 -18
  83. package/dist/components/input-group.js +25 -39
  84. package/dist/components/input-otp.d.ts +14 -10
  85. package/dist/components/input-otp.js +15 -15
  86. package/dist/components/input.d.ts +3 -3
  87. package/dist/components/input.js +7 -7
  88. package/dist/components/kbd.d.ts +3 -3
  89. package/dist/components/kbd.js +5 -5
  90. package/dist/components/label.d.ts +2 -2
  91. package/dist/components/label.js +2 -2
  92. package/dist/components/mention-list.d.ts +3 -3
  93. package/dist/components/mention-list.js +10 -10
  94. package/dist/components/menubar.d.ts +6 -6
  95. package/dist/components/menubar.js +22 -22
  96. package/dist/components/message-actions.d.ts +2 -2
  97. package/dist/components/message-actions.js +29 -31
  98. package/dist/components/message-response.d.ts +3 -3
  99. package/dist/components/message-response.js +18 -18
  100. package/dist/components/message-scroller.d.ts +12 -12
  101. package/dist/components/message-scroller.js +44 -56
  102. package/dist/components/message.d.ts +11 -11
  103. package/dist/components/message.js +25 -25
  104. package/dist/components/navigation-menu.d.ts +2 -2
  105. package/dist/components/navigation-menu.js +15 -15
  106. package/dist/components/notice-banner.d.ts +2 -2
  107. package/dist/components/notice-banner.js +2 -2
  108. package/dist/components/page-content.d.ts +2 -2
  109. package/dist/components/page-content.js +2 -2
  110. package/dist/components/page-header.d.ts +1 -1
  111. package/dist/components/page-header.js +17 -17
  112. package/dist/components/pagination.d.ts +9 -9
  113. package/dist/components/pagination.js +17 -17
  114. package/dist/components/plan-outline.d.ts +2 -2
  115. package/dist/components/plan-outline.js +43 -60
  116. package/dist/components/popover.d.ts +6 -6
  117. package/dist/components/popover.js +15 -15
  118. package/dist/components/presence-cursor.d.ts +2 -2
  119. package/dist/components/presence-cursor.js +3 -3
  120. package/dist/components/progress.d.ts +1 -1
  121. package/dist/components/progress.js +8 -8
  122. package/dist/components/prompt-list.d.ts +3 -3
  123. package/dist/components/prompt-list.js +6 -6
  124. package/dist/components/questionnaire.d.ts +19 -19
  125. package/dist/components/questionnaire.js +183 -242
  126. package/dist/components/radio-group.d.ts +2 -2
  127. package/dist/components/radio-group.js +6 -6
  128. package/dist/components/reasoning-effort.d.ts +3 -3
  129. package/dist/components/reasoning-effort.js +9 -12
  130. package/dist/components/record-list.d.ts +66 -0
  131. package/dist/components/record-list.js +151 -0
  132. package/dist/components/resizable.d.ts +5 -5
  133. package/dist/components/resizable.js +76 -102
  134. package/dist/components/result-card.d.ts +4 -4
  135. package/dist/components/result-card.js +42 -53
  136. package/dist/components/result-notice.d.ts +18 -0
  137. package/dist/components/result-notice.js +29 -0
  138. package/dist/components/review-card.d.ts +6 -6
  139. package/dist/components/review-card.js +18 -18
  140. package/dist/components/rich-text-editor.d.ts +5 -5
  141. package/dist/components/rich-text-editor.js +56 -72
  142. package/dist/components/schema-diagram.d.ts +3 -3
  143. package/dist/components/schema-diagram.js +39 -53
  144. package/dist/components/scroll-area.d.ts +3 -3
  145. package/dist/components/scroll-area.js +10 -14
  146. package/dist/components/search-dialog.d.ts +6 -6
  147. package/dist/components/search-dialog.js +16 -16
  148. package/dist/components/search-field.d.ts +1 -1
  149. package/dist/components/search-field.js +11 -11
  150. package/dist/components/select.d.ts +5 -9
  151. package/dist/components/select.js +20 -20
  152. package/dist/components/selection-slot.d.ts +2 -2
  153. package/dist/components/selection-slot.js +6 -9
  154. package/dist/components/separator.d.ts +15 -15
  155. package/dist/components/separator.js +22 -27
  156. package/dist/components/settings-list.d.ts +3 -3
  157. package/dist/components/settings-list.js +5 -5
  158. package/dist/components/sheet.d.ts +6 -6
  159. package/dist/components/sheet.js +27 -27
  160. package/dist/components/sidebar.d.ts +22 -22
  161. package/dist/components/sidebar.js +57 -58
  162. package/dist/components/skeleton.d.ts +5 -5
  163. package/dist/components/skeleton.js +14 -21
  164. package/dist/components/slider.d.ts +2 -2
  165. package/dist/components/slider.js +6 -6
  166. package/dist/components/spinner.d.ts +7 -7
  167. package/dist/components/spinner.js +22 -26
  168. package/dist/components/sql-viewer.d.ts +14 -14
  169. package/dist/components/sql-viewer.js +99 -128
  170. package/dist/components/state-panel-samples.d.ts +2 -2
  171. package/dist/components/state-panel-samples.js +209 -245
  172. package/dist/components/state-panel.d.ts +2 -35
  173. package/dist/components/state-panel.js +2 -29
  174. package/dist/components/state-sample.d.ts +8 -8
  175. package/dist/components/state-sample.js +18 -31
  176. package/dist/components/switch.d.ts +3 -3
  177. package/dist/components/switch.js +7 -7
  178. package/dist/components/table-nuqs.d.ts +2 -2
  179. package/dist/components/table-nuqs.js +11 -12
  180. package/dist/components/table.d.ts +4 -4
  181. package/dist/components/table.js +166 -235
  182. package/dist/components/tabs.d.ts +2 -2
  183. package/dist/components/tabs.js +12 -12
  184. package/dist/components/textarea.d.ts +2 -2
  185. package/dist/components/textarea.js +6 -8
  186. package/dist/components/timeline.d.ts +3 -0
  187. package/dist/components/timeline.js +3 -0
  188. package/dist/components/toast.d.ts +2 -2
  189. package/dist/components/toast.js +19 -25
  190. package/dist/components/toggle-group.d.ts +4 -4
  191. package/dist/components/toggle-group.js +18 -20
  192. package/dist/components/toggle.d.ts +4 -4
  193. package/dist/components/toggle.js +8 -8
  194. package/dist/components/tool-activity.d.ts +1 -1
  195. package/dist/components/tool-activity.js +83 -110
  196. package/dist/components/toolbar-status.d.ts +2 -2
  197. package/dist/components/toolbar-status.js +7 -7
  198. package/dist/components/tooltip.d.ts +5 -5
  199. package/dist/components/tooltip.js +12 -11
  200. package/dist/components/typed-text.d.ts +2 -2
  201. package/dist/components/typed-text.js +10 -12
  202. package/dist/components/view-switcher.d.ts +51 -0
  203. package/dist/components/view-switcher.js +114 -0
  204. package/dist/index.d.ts +99 -93
  205. package/dist/index.js +99 -93
  206. package/dist/internal/agent-avatar-artwork.d.ts +4 -0
  207. package/dist/internal/agent-avatar-artwork.js +219 -0
  208. package/dist/internal/chart-kit.d.ts +142 -0
  209. package/dist/internal/chart-kit.js +200 -0
  210. package/dist/internal/charts/bars.d.ts +61 -0
  211. package/dist/internal/charts/bars.js +86 -0
  212. package/dist/internal/charts/lines.d.ts +67 -0
  213. package/dist/internal/charts/lines.js +70 -0
  214. package/dist/internal/charts/more.d.ts +77 -0
  215. package/dist/internal/charts/more.js +68 -0
  216. package/dist/internal/charts/parts.d.ts +54 -0
  217. package/dist/internal/charts/parts.js +82 -0
  218. package/dist/internal/charts/timeline-dates.d.ts +38 -0
  219. package/dist/internal/charts/timeline-dates.js +113 -0
  220. package/dist/internal/charts/timeline-window.d.ts +31 -0
  221. package/dist/internal/charts/timeline-window.js +26 -0
  222. package/dist/internal/charts/timeline.d.ts +72 -0
  223. package/dist/internal/charts/timeline.js +287 -0
  224. package/dist/internal/classes.d.ts +1 -1
  225. package/dist/internal/classes.js +7 -9
  226. package/dist/internal/code-tokens.d.ts +2 -2
  227. package/dist/internal/code-tokens.js +12 -12
  228. package/dist/internal/fieldset.d.ts +1 -1
  229. package/dist/internal/fieldset.js +6 -6
  230. package/dist/internal/file-kind.d.ts +1 -1
  231. package/dist/internal/file-kind.js +43 -51
  232. package/dist/internal/flow.d.ts +4 -4
  233. package/dist/internal/flow.js +20 -23
  234. package/dist/internal/hash.d.ts +1 -0
  235. package/dist/internal/hash.js +9 -0
  236. package/dist/internal/languages.js +999 -999
  237. package/dist/internal/message-scroller.d.ts +3 -3
  238. package/dist/internal/message-scroller.js +64 -112
  239. package/dist/internal/pressable.d.ts +1 -1
  240. package/dist/internal/pressable.js +7 -7
  241. package/dist/internal/state-panel.d.ts +35 -0
  242. package/dist/internal/state-panel.js +22 -0
  243. package/dist/internal/syntax.d.ts +2 -2
  244. package/dist/internal/syntax.js +36 -47
  245. package/dist/styles/accordion.css +3 -5
  246. package/dist/styles/agent-fanout.css +64 -60
  247. package/dist/styles/alert-dialog.css +12 -26
  248. package/dist/styles/alert.css +10 -15
  249. package/dist/styles/attachment.css +56 -98
  250. package/dist/styles/avatar.css +14 -33
  251. package/dist/styles/badge.css +11 -36
  252. package/dist/styles/board.css +571 -0
  253. package/dist/styles/brand-icon.css +7 -8
  254. package/dist/styles/breadcrumb.css +4 -7
  255. package/dist/styles/button-group.css +9 -15
  256. package/dist/styles/button.css +45 -175
  257. package/dist/styles/calendar.css +24 -36
  258. package/dist/styles/canvas.css +2 -3
  259. package/dist/styles/card.css +7 -23
  260. package/dist/styles/carousel.css +11 -12
  261. package/dist/styles/chart.css +215 -31
  262. package/dist/styles/chat-input.css +15 -39
  263. package/dist/styles/chat-plan.css +3 -4
  264. package/dist/styles/chat-sources.css +4 -6
  265. package/dist/styles/checkbox.css +11 -25
  266. package/dist/styles/choice-list.css +17 -31
  267. package/dist/styles/code-block.css +11 -25
  268. package/dist/styles/collapsible.css +10 -15
  269. package/dist/styles/combobox.css +24 -17
  270. package/dist/styles/command.css +8 -9
  271. package/dist/styles/context-menu.css +4 -2
  272. package/dist/styles/dialog.css +5 -16
  273. package/dist/styles/dropdown-menu.css +4 -2
  274. package/dist/styles/field.css +15 -21
  275. package/dist/styles/file-explorer.css +19 -33
  276. package/dist/styles/file-viewer.css +13 -17
  277. package/dist/styles/form.css +3 -3
  278. package/dist/styles/glass-banner.css +12 -47
  279. package/dist/styles/gradient-banner.css +16 -39
  280. package/dist/styles/hover-card.css +9 -15
  281. package/dist/styles/index.css +121 -112
  282. package/dist/styles/input-group.css +61 -69
  283. package/dist/styles/input-otp.css +18 -9
  284. package/dist/styles/input.css +19 -11
  285. package/dist/styles/kbd.css +1 -1
  286. package/dist/styles/label.css +9 -30
  287. package/dist/styles/mention-list.css +6 -8
  288. package/dist/styles/menubar.css +9 -8
  289. package/dist/styles/message-actions.css +1 -1
  290. package/dist/styles/message-response.css +3 -5
  291. package/dist/styles/message-scroller.css +14 -21
  292. package/dist/styles/message.css +23 -60
  293. package/dist/styles/navigation-menu.css +15 -30
  294. package/dist/styles/notice-banner.css +1 -2
  295. package/dist/styles/page-header.css +11 -10
  296. package/dist/styles/pagination.css +12 -6
  297. package/dist/styles/plan-outline.css +20 -37
  298. package/dist/styles/popover.css +10 -19
  299. package/dist/styles/presence-cursor.css +1 -2
  300. package/dist/styles/progress.css +2 -4
  301. package/dist/styles/prompt-list.css +6 -17
  302. package/dist/styles/questionnaire.css +16 -40
  303. package/dist/styles/radio-group.css +12 -23
  304. package/dist/styles/reasoning-effort.css +8 -15
  305. package/dist/styles/record-list.css +243 -0
  306. package/dist/styles/resizable.css +10 -11
  307. package/dist/styles/result-card.css +4 -4
  308. package/dist/styles/result-notice.css +80 -0
  309. package/dist/styles/review-card.css +2 -3
  310. package/dist/styles/rich-text-editor.css +4 -5
  311. package/dist/styles/schema-diagram.css +12 -17
  312. package/dist/styles/scroll-area.css +8 -10
  313. package/dist/styles/search-dialog.css +1 -5
  314. package/dist/styles/search-field.css +1 -2
  315. package/dist/styles/select.css +15 -19
  316. package/dist/styles/selection-slot.css +1 -2
  317. package/dist/styles/separator.css +7 -8
  318. package/dist/styles/settings-list.css +1 -2
  319. package/dist/styles/sheet.css +40 -73
  320. package/dist/styles/sidebar.css +32 -34
  321. package/dist/styles/skeleton.css +9 -11
  322. package/dist/styles/slider.css +11 -21
  323. package/dist/styles/spinner.css +2 -2
  324. package/dist/styles/sql-viewer.css +29 -29
  325. package/dist/styles/state-panel.css +8 -9
  326. package/dist/styles/state-sample.css +20 -33
  327. package/dist/styles/switch.css +11 -18
  328. package/dist/styles/table.css +62 -81
  329. package/dist/styles/tabs.css +13 -19
  330. package/dist/styles/textarea.css +3 -3
  331. package/dist/styles/themes/chatgpt.css +11 -23
  332. package/dist/styles/themes/claude.css +12 -24
  333. package/dist/styles/themes/cloudflare.css +11 -23
  334. package/dist/styles/themes/discord.css +11 -23
  335. package/dist/styles/themes/github.css +11 -23
  336. package/dist/styles/themes/grok.css +11 -23
  337. package/dist/styles/themes/linear.css +12 -25
  338. package/dist/styles/themes/neutral.css +11 -23
  339. package/dist/styles/themes/notion.css +11 -23
  340. package/dist/styles/themes/perplexity.css +11 -23
  341. package/dist/styles/themes/raycast.css +11 -23
  342. package/dist/styles/themes/spotify.css +11 -23
  343. package/dist/styles/themes/stripe.css +11 -23
  344. package/dist/styles/themes/supabase.css +11 -23
  345. package/dist/styles/themes/tulipfarm.css +9 -10
  346. package/dist/styles/themes/vercel.css +12 -25
  347. package/dist/styles/timeline.css +276 -0
  348. package/dist/styles/toast.css +13 -20
  349. package/dist/styles/toggle-group.css +23 -29
  350. package/dist/styles/toggle.css +14 -14
  351. package/dist/styles/tool-activity.css +7 -13
  352. package/dist/styles/toolbar-status.css +2 -7
  353. package/dist/styles/tooltip.css +15 -21
  354. package/dist/styles/view-switcher.css +297 -0
  355. package/package.json +25 -1
@@ -9,7 +9,7 @@
9
9
  max-width: 100%;
10
10
  border-radius: var(--sprout-radius-control);
11
11
  }
12
- .sprout-toggle-group[data-orientation="vertical"] {
12
+ .sprout-toggle-group[data-orientation='vertical'] {
13
13
  flex-direction: column;
14
14
  align-items: stretch;
15
15
  }
@@ -23,8 +23,8 @@
23
23
  justify-content: center;
24
24
  gap: 6px;
25
25
  box-sizing: border-box;
26
- height: 32px;
27
- min-width: 32px;
26
+ height: var(--sprout-control-height);
27
+ min-width: var(--sprout-control-height);
28
28
  margin: 0;
29
29
  padding: 0 10px;
30
30
  border: 1px solid transparent;
@@ -46,14 +46,14 @@
46
46
  flex-shrink: 0;
47
47
  pointer-events: none;
48
48
  }
49
- .sprout-toggle-group-item svg:not([class*="size-"]) {
49
+ .sprout-toggle-group-item svg:not([class*='size-']) {
50
50
  width: var(--sprout-toggle-group-icon);
51
51
  height: var(--sprout-toggle-group-icon);
52
52
  }
53
- .sprout-toggle-group-item:has(> [data-icon="inline-start"]) {
53
+ .sprout-toggle-group-item:has(> [data-icon='inline-start']) {
54
54
  padding-inline-start: 8px;
55
55
  }
56
- .sprout-toggle-group-item:has(> [data-icon="inline-end"]) {
56
+ .sprout-toggle-group-item:has(> [data-icon='inline-end']) {
57
57
  padding-inline-end: 8px;
58
58
  }
59
59
  .sprout-toggle-group-item:focus-visible {
@@ -86,66 +86,60 @@
86
86
  .sprout-toggle-group-item-size-sm {
87
87
  --sprout-toggle-group-icon: 0.875rem;
88
88
  gap: 4px;
89
- height: 28px;
90
- min-width: 28px;
89
+ height: calc(var(--sprout-control-height) - 4px);
90
+ min-width: calc(var(--sprout-control-height) - 4px);
91
91
  font-size: var(--sprout-text-xs);
92
92
  line-height: 16px;
93
93
  }
94
- .sprout-toggle-group-item-size-sm:has(> [data-icon="inline-start"]) {
94
+ .sprout-toggle-group-item-size-sm:has(> [data-icon='inline-start']) {
95
95
  padding-inline-start: 6px;
96
96
  }
97
- .sprout-toggle-group-item-size-sm:has(> [data-icon="inline-end"]) {
97
+ .sprout-toggle-group-item-size-sm:has(> [data-icon='inline-end']) {
98
98
  padding-inline-end: 6px;
99
99
  }
100
100
  .sprout-toggle-group-item-size-lg {
101
- height: 36px;
102
- min-width: 36px;
101
+ height: calc(var(--sprout-control-height) + 4px);
102
+ min-width: calc(var(--sprout-control-height) + 4px);
103
103
  }
104
104
 
105
105
  /* spacing={0} joins items into one segmented control. */
106
- .sprout-toggle-group-item[data-spacing="0"] {
106
+ .sprout-toggle-group-item[data-spacing='0'] {
107
107
  padding-inline: 8px;
108
108
  border-radius: 0;
109
109
  box-shadow: none;
110
110
  }
111
- .sprout-toggle-group[data-spacing="0"][data-variant="outline"] {
111
+ .sprout-toggle-group[data-spacing='0'][data-variant='outline'] {
112
112
  box-shadow: var(--sprout-shadow-control);
113
113
  }
114
- .sprout-toggle-group-item[data-spacing="0"]:has(
115
- > [data-icon="inline-start"]
116
- ) {
114
+ .sprout-toggle-group-item[data-spacing='0']:has(> [data-icon='inline-start']) {
117
115
  padding-inline-start: 6px;
118
116
  }
119
- .sprout-toggle-group-item[data-spacing="0"]:has(> [data-icon="inline-end"]) {
117
+ .sprout-toggle-group-item[data-spacing='0']:has(> [data-icon='inline-end']) {
120
118
  padding-inline-end: 6px;
121
119
  }
122
- .sprout-toggle-group-item[data-spacing="0"][data-orientation="horizontal"]:first-child {
120
+ .sprout-toggle-group-item[data-spacing='0'][data-orientation='horizontal']:first-child {
123
121
  border-start-start-radius: var(--sprout-radius-control);
124
122
  border-end-start-radius: var(--sprout-radius-control);
125
123
  }
126
- .sprout-toggle-group-item[data-spacing="0"][data-orientation="horizontal"]:last-child {
124
+ .sprout-toggle-group-item[data-spacing='0'][data-orientation='horizontal']:last-child {
127
125
  border-start-end-radius: var(--sprout-radius-control);
128
126
  border-end-end-radius: var(--sprout-radius-control);
129
127
  }
130
- .sprout-toggle-group-item[data-spacing="0"][data-orientation="vertical"]:first-child {
128
+ .sprout-toggle-group-item[data-spacing='0'][data-orientation='vertical']:first-child {
131
129
  border-start-start-radius: var(--sprout-radius-control);
132
130
  border-start-end-radius: var(--sprout-radius-control);
133
131
  }
134
- .sprout-toggle-group-item[data-spacing="0"][data-orientation="vertical"]:last-child {
132
+ .sprout-toggle-group-item[data-spacing='0'][data-orientation='vertical']:last-child {
135
133
  border-end-start-radius: var(--sprout-radius-control);
136
134
  border-end-end-radius: var(--sprout-radius-control);
137
135
  }
138
- .sprout-toggle-group-item-outline[data-spacing="0"][data-orientation="horizontal"]:not(
139
- :first-child
140
- ) {
136
+ .sprout-toggle-group-item-outline[data-spacing='0'][data-orientation='horizontal']:not(:first-child) {
141
137
  border-inline-start-width: 0;
142
138
  }
143
- .sprout-toggle-group-item-outline[data-spacing="0"][data-orientation="vertical"]:not(
144
- :first-child
145
- ) {
139
+ .sprout-toggle-group-item-outline[data-spacing='0'][data-orientation='vertical']:not(:first-child) {
146
140
  border-top-width: 0;
147
141
  }
148
- .sprout-toggle-group-item[data-spacing="0"]:focus-visible {
142
+ .sprout-toggle-group-item[data-spacing='0']:focus-visible {
149
143
  outline-offset: -1px;
150
144
  }
151
145
 
@@ -8,8 +8,8 @@
8
8
  justify-content: center;
9
9
  gap: 4px;
10
10
  box-sizing: border-box;
11
- height: 32px;
12
- min-width: 32px;
11
+ height: var(--sprout-control-height);
12
+ min-width: var(--sprout-control-height);
13
13
  margin: 0;
14
14
  padding: 0 10px;
15
15
  border: 1px solid transparent;
@@ -32,14 +32,14 @@
32
32
  flex-shrink: 0;
33
33
  pointer-events: none;
34
34
  }
35
- .sprout-toggle svg:not([class*="size-"]) {
35
+ .sprout-toggle svg:not([class*='size-']) {
36
36
  width: var(--sprout-toggle-icon);
37
37
  height: var(--sprout-toggle-icon);
38
38
  }
39
- .sprout-toggle:has(> [data-icon="inline-start"]) {
39
+ .sprout-toggle:has(> [data-icon='inline-start']) {
40
40
  padding-inline-start: 8px;
41
41
  }
42
- .sprout-toggle:has(> [data-icon="inline-end"]) {
42
+ .sprout-toggle:has(> [data-icon='inline-end']) {
43
43
  padding-inline-end: 8px;
44
44
  }
45
45
  .sprout-toggle:focus-visible {
@@ -52,7 +52,7 @@
52
52
  cursor: not-allowed;
53
53
  opacity: 0.5;
54
54
  }
55
- .sprout-toggle[aria-busy="true"] {
55
+ .sprout-toggle[aria-busy='true'] {
56
56
  cursor: progress;
57
57
  }
58
58
  @media (hover: hover) {
@@ -66,10 +66,10 @@
66
66
  background-color: var(--sprout-primary-subtle);
67
67
  color: var(--sprout-primary);
68
68
  }
69
- .sprout-toggle[aria-invalid="true"] {
69
+ .sprout-toggle[aria-invalid='true'] {
70
70
  border-color: var(--sprout-danger);
71
71
  }
72
- .sprout-toggle[aria-invalid="true"]:focus-visible {
72
+ .sprout-toggle[aria-invalid='true']:focus-visible {
73
73
  outline-color: var(--sprout-danger);
74
74
  }
75
75
 
@@ -81,20 +81,20 @@
81
81
 
82
82
  .sprout-toggle-size-sm {
83
83
  --sprout-toggle-icon: 0.875rem;
84
- height: 28px;
85
- min-width: 28px;
84
+ height: calc(var(--sprout-control-height) - 4px);
85
+ min-width: calc(var(--sprout-control-height) - 4px);
86
86
  font-size: var(--sprout-text-xs);
87
87
  line-height: 16px;
88
88
  }
89
- .sprout-toggle-size-sm:has(> [data-icon="inline-start"]) {
89
+ .sprout-toggle-size-sm:has(> [data-icon='inline-start']) {
90
90
  padding-inline-start: 6px;
91
91
  }
92
- .sprout-toggle-size-sm:has(> [data-icon="inline-end"]) {
92
+ .sprout-toggle-size-sm:has(> [data-icon='inline-end']) {
93
93
  padding-inline-end: 6px;
94
94
  }
95
95
  .sprout-toggle-size-lg {
96
- height: 36px;
97
- min-width: 36px;
96
+ height: calc(var(--sprout-control-height) + 4px);
97
+ min-width: calc(var(--sprout-control-height) + 4px);
98
98
  }
99
99
 
100
100
  @media (prefers-reduced-motion: no-preference) {
@@ -57,16 +57,12 @@
57
57
  z-index: 1;
58
58
  inset: 0 0 auto;
59
59
  height: 20px;
60
- content: "";
60
+ content: '';
61
61
  opacity: 0;
62
62
  pointer-events: none;
63
63
  background: linear-gradient(
64
64
  to bottom,
65
- color-mix(
66
- in srgb,
67
- var(--sprout-activity-panel-fade, var(--sprout-surface)) 94%,
68
- transparent
69
- ),
65
+ color-mix(in srgb, var(--sprout-activity-panel-fade, var(--sprout-surface)) 94%, transparent),
70
66
  transparent
71
67
  );
72
68
  backdrop-filter: blur(3px);
@@ -141,7 +137,7 @@
141
137
  padding: 8px 0;
142
138
  font-size: var(--sprout-text-xs);
143
139
  }
144
- .sprout-tool-activity-older[data-tone="danger"] {
140
+ .sprout-tool-activity-older[data-tone='danger'] {
145
141
  color: var(--sprout-danger);
146
142
  }
147
143
  .sprout-tool-activity-list {
@@ -195,8 +191,7 @@
195
191
  color: var(--sprout-muted);
196
192
  overflow-wrap: anywhere;
197
193
  }
198
- .sprout-tool-activity-row[data-status="running"]
199
- .sprout-tool-activity-label-text {
194
+ .sprout-tool-activity-row[data-status='running'] .sprout-tool-activity-label-text {
200
195
  color: var(--sprout-text);
201
196
  }
202
197
  .sprout-tool-activity-query,
@@ -218,7 +213,7 @@
218
213
  line-height: 1rem;
219
214
  overflow-wrap: anywhere;
220
215
  }
221
- .sprout-tool-activity-detail[data-tone="danger"] {
216
+ .sprout-tool-activity-detail[data-tone='danger'] {
222
217
  color: var(--sprout-danger);
223
218
  }
224
219
  .sprout-tool-activity-details {
@@ -282,7 +277,7 @@
282
277
  height: 20px;
283
278
  object-fit: contain;
284
279
  }
285
- .sprout-tool-activity-favicon[data-status="loading"] > img {
280
+ .sprout-tool-activity-favicon[data-status='loading'] > img {
286
281
  opacity: 0;
287
282
  }
288
283
  .sprout-tool-activity-source-title {
@@ -370,8 +365,7 @@
370
365
  transition: opacity var(--sprout-motion-fast) ease-out;
371
366
  }
372
367
  .sprout-tool-activity-row {
373
- animation: sprout-tool-activity-in var(--sprout-motion-normal) ease-out
374
- both;
368
+ animation: sprout-tool-activity-in var(--sprout-motion-normal) ease-out both;
375
369
  }
376
370
  .sprout-tool-activity-mark-arc {
377
371
  animation: sprout-tool-activity-spin 1s linear infinite;
@@ -16,11 +16,7 @@
16
16
  max-width: 100%;
17
17
  }
18
18
  /* The darker tint keeps AA contrast on the hovered and open background. */
19
- .sprout-toolbar-status-trigger[data-status="error"]:is(
20
- :hover,
21
- :active,
22
- [data-popup-open]
23
- ) {
19
+ .sprout-toolbar-status-trigger[data-status='error']:is(:hover, :active, [data-popup-open]) {
24
20
  background: color-mix(in srgb, var(--sprout-danger) 18%, transparent);
25
21
  color: var(--sprout-danger-hover);
26
22
  }
@@ -37,8 +33,7 @@
37
33
  gap: 2px;
38
34
  min-width: 0;
39
35
  }
40
- .sprout-toolbar-status-content[data-status="error"]
41
- .sprout-toolbar-status-title {
36
+ .sprout-toolbar-status-content[data-status='error'] .sprout-toolbar-status-title {
42
37
  color: var(--sprout-danger);
43
38
  }
44
39
 
@@ -37,34 +37,34 @@
37
37
  background: var(--sprout-surface);
38
38
  rotate: 45deg;
39
39
  }
40
- .sprout-tooltip-arrow[data-side="top"] {
40
+ .sprout-tooltip-arrow[data-side='top'] {
41
41
  bottom: -4.5px;
42
42
  border-top-color: transparent;
43
43
  border-left-color: transparent;
44
44
  }
45
- .sprout-tooltip-arrow[data-side="bottom"] {
45
+ .sprout-tooltip-arrow[data-side='bottom'] {
46
46
  top: -4.5px;
47
47
  border-right-color: transparent;
48
48
  border-bottom-color: transparent;
49
49
  }
50
- .sprout-tooltip-arrow:is([data-side="right"], [data-side="inline-end"]) {
50
+ .sprout-tooltip-arrow:is([data-side='right'], [data-side='inline-end']) {
51
51
  left: -4.5px;
52
52
  border-top-color: transparent;
53
53
  border-right-color: transparent;
54
54
  }
55
- .sprout-tooltip-arrow:is([data-side="left"], [data-side="inline-start"]) {
55
+ .sprout-tooltip-arrow:is([data-side='left'], [data-side='inline-start']) {
56
56
  right: -4.5px;
57
57
  border-bottom-color: transparent;
58
58
  border-left-color: transparent;
59
59
  }
60
- [dir="rtl"] .sprout-tooltip-arrow[data-side="inline-end"] {
60
+ [dir='rtl'] .sprout-tooltip-arrow[data-side='inline-end'] {
61
61
  right: -4.5px;
62
62
  left: auto;
63
63
  border: 1px solid var(--sprout-line);
64
64
  border-bottom-color: transparent;
65
65
  border-left-color: transparent;
66
66
  }
67
- [dir="rtl"] .sprout-tooltip-arrow[data-side="inline-start"] {
67
+ [dir='rtl'] .sprout-tooltip-arrow[data-side='inline-start'] {
68
68
  left: -4.5px;
69
69
  right: auto;
70
70
  border: 1px solid var(--sprout-line);
@@ -91,28 +91,22 @@
91
91
  opacity: 0;
92
92
  scale: 0.96;
93
93
  }
94
- .sprout-tooltip-content[data-side="top"]:is(
95
- [data-starting-style],
96
- [data-ending-style]
97
- ) {
94
+ .sprout-tooltip-content[data-side='top']:is([data-starting-style], [data-ending-style]) {
98
95
  translate: 0 var(--sprout-tooltip-shift);
99
96
  }
100
- .sprout-tooltip-content[data-side="bottom"]:is(
97
+ .sprout-tooltip-content[data-side='bottom']:is([data-starting-style], [data-ending-style]) {
98
+ translate: 0 calc(var(--sprout-tooltip-shift) * -1);
99
+ }
100
+ .sprout-tooltip-content:is([data-side='right'], [data-side='inline-end']):is(
101
101
  [data-starting-style],
102
102
  [data-ending-style]
103
103
  ) {
104
- translate: 0 calc(var(--sprout-tooltip-shift) * -1);
105
- }
106
- .sprout-tooltip-content:is(
107
- [data-side="right"],
108
- [data-side="inline-end"]
109
- ):is([data-starting-style], [data-ending-style]) {
110
104
  translate: calc(var(--sprout-tooltip-shift) * -1) 0;
111
105
  }
112
- .sprout-tooltip-content:is(
113
- [data-side="left"],
114
- [data-side="inline-start"]
115
- ):is([data-starting-style], [data-ending-style]) {
106
+ .sprout-tooltip-content:is([data-side='left'], [data-side='inline-start']):is(
107
+ [data-starting-style],
108
+ [data-ending-style]
109
+ ) {
116
110
  translate: var(--sprout-tooltip-shift) 0;
117
111
  }
118
112
  .sprout-tooltip-content[data-instant] {
@@ -0,0 +1,297 @@
1
+ @layer components {
2
+ .sprout-view-switcher {
3
+ display: flex;
4
+ align-items: center;
5
+ gap: 4px;
6
+ min-width: 0;
7
+ border-bottom: 1px solid var(--sprout-line);
8
+ font-family: var(--sprout-font);
9
+ container-type: inline-size;
10
+ }
11
+
12
+ .sprout-view-switcher-tabs.sprout-tabs {
13
+ display: flex;
14
+ flex: 0 1 auto;
15
+ min-width: 0;
16
+ }
17
+
18
+ .sprout-view-switcher-list.sprout-tabs-list {
19
+ --sprout-view-switcher-fade-start: 0px;
20
+ --sprout-view-switcher-fade-end: 0px;
21
+ justify-content: flex-start;
22
+ gap: 2px;
23
+ width: auto;
24
+ max-width: 100%;
25
+ height: calc(var(--sprout-control-height) + 8px);
26
+ padding: 0 2px;
27
+ overflow-x: auto;
28
+ overflow-y: hidden;
29
+ overscroll-behavior-x: contain;
30
+ scrollbar-width: none;
31
+ mask-image: linear-gradient(
32
+ to right,
33
+ transparent 0,
34
+ #000 var(--sprout-view-switcher-fade-start),
35
+ #000 calc(100% - var(--sprout-view-switcher-fade-end)),
36
+ transparent 100%
37
+ );
38
+ }
39
+ .sprout-view-switcher-list::-webkit-scrollbar {
40
+ display: none;
41
+ }
42
+ .sprout-view-switcher-list[data-overflow-start] {
43
+ --sprout-view-switcher-fade-start: 24px;
44
+ }
45
+ .sprout-view-switcher-list[data-overflow-end] {
46
+ --sprout-view-switcher-fade-end: 24px;
47
+ }
48
+ .sprout-view-switcher-list:dir(rtl) {
49
+ mask-image: linear-gradient(
50
+ to left,
51
+ transparent 0,
52
+ #000 var(--sprout-view-switcher-fade-start),
53
+ #000 calc(100% - var(--sprout-view-switcher-fade-end)),
54
+ transparent 100%
55
+ );
56
+ }
57
+
58
+ .sprout-view-switcher-tab.sprout-tabs-trigger {
59
+ flex: none;
60
+ gap: 6px;
61
+ height: calc(var(--sprout-control-height) - 4px);
62
+ padding: 0 8px;
63
+ border: 0;
64
+ color: var(--sprout-muted);
65
+ }
66
+ .sprout-view-switcher-tab.sprout-tabs-trigger::after {
67
+ display: none;
68
+ }
69
+ .sprout-view-switcher-tab.sprout-tabs-trigger:focus-visible {
70
+ outline-offset: -2px;
71
+ }
72
+ .sprout-view-switcher-tab.sprout-tabs-trigger[data-active] {
73
+ color: var(--sprout-text);
74
+ }
75
+ .sprout-view-switcher-tab[data-closable] {
76
+ padding-inline-end: 4px;
77
+ }
78
+ @media (hover: hover) {
79
+ .sprout-view-switcher-tab.sprout-tabs-trigger:hover {
80
+ background: var(--sprout-hover);
81
+ color: var(--sprout-text);
82
+ }
83
+ }
84
+
85
+ .sprout-view-switcher-icon {
86
+ display: inline-flex;
87
+ flex-shrink: 0;
88
+ }
89
+ .sprout-view-switcher-tab .sprout-view-switcher-icon svg {
90
+ width: 14px;
91
+ height: 14px;
92
+ }
93
+
94
+ .sprout-view-switcher-close {
95
+ display: inline-flex;
96
+ flex-shrink: 0;
97
+ align-items: center;
98
+ justify-content: center;
99
+ width: 16px;
100
+ height: 16px;
101
+ border-radius: calc(var(--sprout-radius-control) - 2px);
102
+ color: var(--sprout-muted);
103
+ opacity: 0;
104
+ cursor: pointer;
105
+ }
106
+ .sprout-view-switcher-tab .sprout-view-switcher-close svg {
107
+ width: 12px;
108
+ height: 12px;
109
+ pointer-events: none;
110
+ }
111
+ .sprout-view-switcher-tab:focus-visible .sprout-view-switcher-close,
112
+ .sprout-view-switcher-tab:hover .sprout-view-switcher-close {
113
+ opacity: 1;
114
+ }
115
+ .sprout-view-switcher-close:hover {
116
+ background: var(--sprout-active);
117
+ color: var(--sprout-text);
118
+ }
119
+ @media (hover: none) {
120
+ .sprout-view-switcher-close {
121
+ opacity: 1;
122
+ }
123
+ }
124
+ /* With a pointer, the close button floats over the tab end instead of taking space, so gaps stay even. */
125
+ @media (hover: hover) {
126
+ .sprout-view-switcher-tab[data-closable] {
127
+ padding-inline-end: 8px;
128
+ }
129
+ .sprout-view-switcher-close {
130
+ position: absolute;
131
+ inset-inline-end: 4px;
132
+ top: 50%;
133
+ translate: 0 -50%;
134
+ }
135
+ .sprout-view-switcher-tab[data-closable]:is(:hover, :focus-visible) .sprout-view-switcher-label {
136
+ mask-image: linear-gradient(to left, transparent 14px, #000 24px);
137
+ }
138
+ .sprout-view-switcher-tab[data-closable]:is(:hover, :focus-visible) .sprout-view-switcher-label:dir(rtl) {
139
+ mask-image: linear-gradient(to right, transparent 14px, #000 24px);
140
+ }
141
+ }
142
+
143
+ .sprout-view-switcher-indicator {
144
+ position: absolute;
145
+ bottom: 0;
146
+ left: var(--active-tab-left);
147
+ width: var(--active-tab-width);
148
+ height: 2px;
149
+ border-radius: 2px 2px 0 0;
150
+ background: var(--sprout-text);
151
+ pointer-events: none;
152
+ }
153
+
154
+ .sprout-view-switcher-add.sprout-button {
155
+ flex: none;
156
+ color: var(--sprout-muted);
157
+ }
158
+ .sprout-view-switcher-add.sprout-button:hover,
159
+ .sprout-view-switcher-add.sprout-button[data-popup-open] {
160
+ color: var(--sprout-text);
161
+ }
162
+
163
+ .sprout-view-switcher-actions {
164
+ display: flex;
165
+ flex: none;
166
+ align-items: center;
167
+ gap: 4px;
168
+ margin-inline-start: auto;
169
+ padding-inline-start: 8px;
170
+ }
171
+
172
+ @container (max-width: 479px) {
173
+ .sprout-view-switcher-add-label {
174
+ position: absolute;
175
+ width: 1px;
176
+ height: 1px;
177
+ overflow: hidden;
178
+ clip-path: inset(50%);
179
+ white-space: nowrap;
180
+ }
181
+ .sprout-view-switcher-add.sprout-button {
182
+ padding-inline: 6px;
183
+ }
184
+ }
185
+
186
+ .sprout-view-switcher-menu.sprout-dropdown-menu-content {
187
+ width: min(36rem, var(--available-width));
188
+ padding: 6px;
189
+ container-type: inline-size;
190
+ }
191
+ .sprout-view-switcher-options {
192
+ display: grid;
193
+ grid-template-columns: repeat(2, minmax(0, 1fr));
194
+ gap: 2px;
195
+ }
196
+ @container (max-width: 479px) {
197
+ .sprout-view-switcher-options {
198
+ grid-template-columns: minmax(0, 1fr);
199
+ }
200
+ }
201
+
202
+ .sprout-view-switcher-option.sprout-dropdown-menu-item {
203
+ align-items: flex-start;
204
+ gap: 10px;
205
+ padding: 8px;
206
+ }
207
+ .sprout-view-switcher-tile {
208
+ display: inline-flex;
209
+ flex-shrink: 0;
210
+ align-items: center;
211
+ justify-content: center;
212
+ width: 32px;
213
+ height: 32px;
214
+ border-radius: var(--sprout-radius-control);
215
+ background: var(--sprout-hover);
216
+ color: var(--sprout-text);
217
+ }
218
+ .sprout-view-switcher-option[data-highlighted] .sprout-view-switcher-tile {
219
+ background: var(--sprout-surface);
220
+ box-shadow: inset 0 0 0 1px var(--sprout-line);
221
+ }
222
+ .sprout-view-switcher-option-text {
223
+ display: grid;
224
+ flex: 1 1 auto;
225
+ gap: 2px;
226
+ min-width: 0;
227
+ padding-top: 1px;
228
+ }
229
+ .sprout-view-switcher-option-title {
230
+ font-weight: 500;
231
+ line-height: 1.25rem;
232
+ }
233
+ .sprout-view-switcher-option-note {
234
+ color: var(--sprout-muted);
235
+ font-size: var(--sprout-text-xs);
236
+ line-height: 1rem;
237
+ overflow-wrap: anywhere;
238
+ }
239
+ .sprout-view-switcher-check {
240
+ display: inline-flex;
241
+ flex-shrink: 0;
242
+ align-self: center;
243
+ color: var(--sprout-text);
244
+ }
245
+
246
+ .sprout-view-switcher-option.sprout-dropdown-menu-item[data-disabled] {
247
+ opacity: 1;
248
+ cursor: not-allowed;
249
+ }
250
+ .sprout-view-switcher-option[data-disabled] .sprout-view-switcher-tile {
251
+ background: transparent;
252
+ box-shadow: inset 0 0 0 1px var(--sprout-line);
253
+ color: var(--sprout-muted);
254
+ }
255
+ .sprout-view-switcher-option[data-disabled] .sprout-view-switcher-option-title {
256
+ color: var(--sprout-muted);
257
+ }
258
+ .sprout-view-switcher-option-note[data-kind='unavailable'] {
259
+ white-space: normal;
260
+ }
261
+
262
+ .sprout-view-switcher-sr-only {
263
+ position: absolute;
264
+ width: 1px;
265
+ height: 1px;
266
+ overflow: hidden;
267
+ clip-path: inset(50%);
268
+ white-space: nowrap;
269
+ }
270
+
271
+ @media (forced-colors: active) {
272
+ .sprout-view-switcher-indicator {
273
+ background: Highlight;
274
+ }
275
+ .sprout-view-switcher-tile {
276
+ border: 1px solid CanvasText;
277
+ }
278
+ }
279
+
280
+ @media (prefers-reduced-motion: no-preference) {
281
+ .sprout-view-switcher-indicator {
282
+ transition:
283
+ left var(--sprout-motion-normal) var(--sprout-motion-ease),
284
+ width var(--sprout-motion-normal) var(--sprout-motion-ease);
285
+ }
286
+ .sprout-view-switcher-close {
287
+ transition:
288
+ opacity var(--sprout-motion-fast) var(--sprout-motion-ease),
289
+ background-color var(--sprout-motion-fast) var(--sprout-motion-ease);
290
+ }
291
+ .sprout-view-switcher-tile {
292
+ transition:
293
+ background-color var(--sprout-motion-fast) var(--sprout-motion-ease),
294
+ box-shadow var(--sprout-motion-fast) var(--sprout-motion-ease);
295
+ }
296
+ }
297
+ }