@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
@@ -0,0 +1,571 @@
1
+ @layer components {
2
+ .sprout-board {
3
+ --sprout-board-column-width: min(17rem, 85vw);
4
+ --sprout-board-collapsed-width: 2.75rem;
5
+ --sprout-board-height: 36rem;
6
+ --sprout-board-cell-height: 24rem;
7
+ --sprout-board-gap: 0.5rem;
8
+ --sprout-board-column-bg: color-mix(in oklab, var(--sprout-hover) 40%, var(--sprout-canvas));
9
+ --sprout-board-card-border: color-mix(in oklab, var(--sprout-border) 30%, var(--sprout-line));
10
+ display: flex;
11
+ flex-direction: column;
12
+ height: var(--sprout-board-height);
13
+ min-width: 0;
14
+ box-sizing: border-box;
15
+ border: 1px solid var(--sprout-line);
16
+ border-radius: var(--sprout-radius-panel);
17
+ background: var(--sprout-canvas);
18
+ color: var(--sprout-text);
19
+ font-size: var(--sprout-text-sm);
20
+ overflow: hidden;
21
+ }
22
+
23
+ .sprout-board-toolbar {
24
+ display: flex;
25
+ flex-wrap: wrap;
26
+ align-items: center;
27
+ gap: 0.5rem 0.75rem;
28
+ padding: 0.625rem 0.75rem;
29
+ border-bottom: 1px solid var(--sprout-line);
30
+ background: var(--sprout-surface);
31
+ }
32
+ .sprout-board-search {
33
+ width: min(16rem, 100%);
34
+ }
35
+ .sprout-board-lane-by {
36
+ display: inline-flex;
37
+ align-items: center;
38
+ gap: 0.5rem;
39
+ color: var(--sprout-muted);
40
+ font-size: var(--sprout-text-xs);
41
+ }
42
+ .sprout-board-status {
43
+ display: inline-flex;
44
+ align-items: center;
45
+ gap: 0.25rem;
46
+ margin-inline-start: auto;
47
+ color: var(--sprout-muted);
48
+ font-size: var(--sprout-text-xs);
49
+ font-variant-numeric: tabular-nums;
50
+ }
51
+
52
+ .sprout-board-frame {
53
+ position: relative;
54
+ flex: 1;
55
+ min-height: 0;
56
+ display: flex;
57
+ }
58
+ .sprout-board-frame::before,
59
+ .sprout-board-frame::after {
60
+ content: '';
61
+ position: absolute;
62
+ top: 0;
63
+ bottom: 0;
64
+ z-index: 3;
65
+ width: 2.5rem;
66
+ pointer-events: none;
67
+ opacity: 0;
68
+ transition: opacity var(--sprout-motion-fast) var(--sprout-motion-ease);
69
+ }
70
+ .sprout-board-frame::before {
71
+ left: 0;
72
+ background: linear-gradient(to right, var(--sprout-canvas), transparent);
73
+ }
74
+ .sprout-board-frame::after {
75
+ right: 0;
76
+ background: linear-gradient(to left, var(--sprout-canvas), transparent);
77
+ }
78
+ .sprout-board-frame[data-more-start]::before,
79
+ .sprout-board-frame[data-more-end]::after {
80
+ opacity: 1;
81
+ }
82
+ .sprout-board-viewport {
83
+ position: relative;
84
+ flex: 1;
85
+ min-height: 0;
86
+ min-width: 0;
87
+ overflow: auto;
88
+ overscroll-behavior: contain;
89
+ scrollbar-width: thin;
90
+ scrollbar-color: var(--sprout-border) transparent;
91
+ }
92
+ .sprout-board-viewport:focus-visible {
93
+ outline: var(--sprout-focus-width) solid var(--sprout-focus-ring);
94
+ outline-offset: -1px;
95
+ }
96
+ .sprout-board-canvas {
97
+ width: max-content;
98
+ min-width: 100%;
99
+ }
100
+ .sprout-board-viewport:not([data-lanes]) .sprout-board-canvas {
101
+ display: flex;
102
+ flex-direction: column;
103
+ height: 100%;
104
+ }
105
+
106
+ .sprout-board-header,
107
+ .sprout-board-row {
108
+ display: grid;
109
+ gap: var(--sprout-board-gap);
110
+ padding-inline: 0.75rem;
111
+ }
112
+ .sprout-board-header {
113
+ position: sticky;
114
+ top: 0;
115
+ z-index: 2;
116
+ padding-block: 0.5rem 0.25rem;
117
+ background: var(--sprout-canvas);
118
+ }
119
+ .sprout-board-row {
120
+ padding-block: 0.125rem 0.5rem;
121
+ }
122
+
123
+ .sprout-board-column-header {
124
+ display: flex;
125
+ align-items: center;
126
+ gap: 0.25rem;
127
+ min-width: 0;
128
+ height: 2rem;
129
+ padding-inline: 0.375rem 0.125rem;
130
+ box-sizing: border-box;
131
+ border-bottom: 2px solid var(--sprout-line);
132
+ background: var(--sprout-canvas);
133
+ }
134
+ .sprout-board-column-header[data-over-limit] {
135
+ border-bottom-color: var(--sprout-warning);
136
+ }
137
+ .sprout-board-column-header[data-dragging] {
138
+ opacity: 0.4;
139
+ }
140
+ .sprout-board-column-header[data-collapsed] {
141
+ flex-direction: column;
142
+ height: auto;
143
+ min-height: 2rem;
144
+ padding-block: 0.25rem;
145
+ }
146
+ .sprout-board-column-header[data-collapsed] .sprout-board-column-title {
147
+ writing-mode: vertical-rl;
148
+ max-height: 9rem;
149
+ }
150
+
151
+ .sprout-board-column-toggle,
152
+ .sprout-board-grip,
153
+ .sprout-board-lane-toggle {
154
+ display: inline-flex;
155
+ align-items: center;
156
+ flex-shrink: 0;
157
+ border: 0;
158
+ background: transparent;
159
+ color: var(--sprout-muted);
160
+ font: inherit;
161
+ cursor: pointer;
162
+ border-radius: var(--sprout-radius-control);
163
+ transition: background-color var(--sprout-motion-fast) var(--sprout-motion-ease);
164
+ }
165
+ .sprout-board-column-toggle,
166
+ .sprout-board-grip {
167
+ justify-content: center;
168
+ width: 1.5rem;
169
+ height: 1.5rem;
170
+ padding: 0;
171
+ }
172
+ .sprout-board-grip {
173
+ cursor: grab;
174
+ }
175
+ .sprout-board-column-toggle svg,
176
+ .sprout-board-grip svg,
177
+ .sprout-board-lane-toggle svg {
178
+ width: 1rem;
179
+ height: 1rem;
180
+ }
181
+ .sprout-board-column-toggle:hover,
182
+ .sprout-board-grip:hover,
183
+ .sprout-board-lane-toggle:hover {
184
+ background: var(--sprout-hover);
185
+ color: var(--sprout-text);
186
+ }
187
+
188
+ .sprout-board-column-title {
189
+ min-width: 0;
190
+ overflow: hidden;
191
+ text-overflow: ellipsis;
192
+ white-space: nowrap;
193
+ font-weight: 600;
194
+ }
195
+ button.sprout-board-column-title {
196
+ padding: 0;
197
+ border: 0;
198
+ background: transparent;
199
+ color: inherit;
200
+ font: inherit;
201
+ font-weight: 600;
202
+ text-align: start;
203
+ cursor: text;
204
+ }
205
+ button.sprout-board-column-title:hover {
206
+ text-decoration: underline;
207
+ text-decoration-color: var(--sprout-border-strong);
208
+ text-underline-offset: 0.2em;
209
+ }
210
+
211
+ .sprout-board-count {
212
+ flex-shrink: 0;
213
+ color: var(--sprout-muted);
214
+ font-size: var(--sprout-text-xs);
215
+ font-variant-numeric: tabular-nums;
216
+ }
217
+ .sprout-board-column-header[data-over-limit] .sprout-board-count {
218
+ color: var(--sprout-text);
219
+ font-weight: 600;
220
+ }
221
+ .sprout-board-limit {
222
+ flex-shrink: 0;
223
+ }
224
+ .sprout-board-column-tools {
225
+ display: inline-flex;
226
+ align-items: center;
227
+ margin-inline-start: auto;
228
+ opacity: 0;
229
+ transition: opacity var(--sprout-motion-fast) var(--sprout-motion-ease);
230
+ }
231
+ .sprout-board-column-header:hover .sprout-board-column-tools,
232
+ .sprout-board-column-header:focus-within .sprout-board-column-tools {
233
+ opacity: 1;
234
+ }
235
+ @media (hover: none) {
236
+ .sprout-board-column-tools {
237
+ opacity: 1;
238
+ }
239
+ }
240
+
241
+ .sprout-board-add-column {
242
+ display: flex;
243
+ align-items: center;
244
+ height: 2rem;
245
+ }
246
+
247
+ .sprout-board-lanes {
248
+ position: relative;
249
+ display: flow-root;
250
+ }
251
+ .sprout-board-lane[data-pinned] {
252
+ position: absolute;
253
+ left: 0;
254
+ width: 100%;
255
+ }
256
+ .sprout-board-lane-bar {
257
+ padding: 0.375rem 0.75rem 0.125rem;
258
+ border-top: 1px solid var(--sprout-line);
259
+ }
260
+ .sprout-board-lane[data-index='0'] .sprout-board-lane-bar {
261
+ border-top: 0;
262
+ }
263
+ .sprout-board-lane-toggle {
264
+ position: sticky;
265
+ left: 0.75rem;
266
+ gap: 0.375rem;
267
+ height: 1.5rem;
268
+ padding-inline: 0.125rem 0.5rem;
269
+ color: var(--sprout-muted);
270
+ font-size: var(--sprout-text-xs);
271
+ }
272
+ .sprout-board-lane-toggle svg {
273
+ width: 0.875rem;
274
+ height: 0.875rem;
275
+ }
276
+ .sprout-board-lane-title {
277
+ color: var(--sprout-text);
278
+ font-weight: 500;
279
+ text-transform: uppercase;
280
+ letter-spacing: 0.04em;
281
+ }
282
+
283
+ .sprout-board-cell {
284
+ display: flex;
285
+ flex-direction: column;
286
+ gap: 0.125rem;
287
+ min-width: 0;
288
+ min-height: 2.5rem;
289
+ padding: 0.25rem;
290
+ box-sizing: border-box;
291
+ border-radius: var(--sprout-radius-control);
292
+ background: var(--sprout-board-column-bg);
293
+ transition: box-shadow var(--sprout-motion-fast) var(--sprout-motion-ease);
294
+ }
295
+ .sprout-board-cell[data-over] {
296
+ box-shadow: inset 0 0 0 1px var(--sprout-border-strong);
297
+ }
298
+ .sprout-board-cell[data-collapsed] {
299
+ align-items: center;
300
+ }
301
+ .sprout-board-single {
302
+ flex: 1;
303
+ min-height: 0;
304
+ }
305
+ .sprout-board-single > .sprout-board-row {
306
+ height: 100%;
307
+ box-sizing: border-box;
308
+ }
309
+ .sprout-board-cell[data-fill] {
310
+ min-height: 0;
311
+ }
312
+ .sprout-board-cell-scroll {
313
+ max-height: var(--sprout-board-cell-height);
314
+ overflow-y: auto;
315
+ overscroll-behavior: contain;
316
+ scrollbar-width: thin;
317
+ scrollbar-color: var(--sprout-border) transparent;
318
+ }
319
+ .sprout-board-cell[data-fill] .sprout-board-cell-scroll {
320
+ flex: 1;
321
+ min-height: 0;
322
+ max-height: none;
323
+ }
324
+ .sprout-board-cards {
325
+ position: relative;
326
+ }
327
+ .sprout-board-card-slot {
328
+ position: absolute;
329
+ left: 0;
330
+ right: 0;
331
+ }
332
+
333
+ .sprout-board-card {
334
+ display: flex;
335
+ flex-direction: column;
336
+ gap: 0.25rem;
337
+ padding: 0.375rem 0.5rem;
338
+ box-sizing: border-box;
339
+ border: 1px solid var(--sprout-board-card-border);
340
+ border-radius: var(--sprout-radius-control);
341
+ background: var(--sprout-card-raised);
342
+ box-shadow: var(--sprout-card-raised-shadow);
343
+ line-height: 1.25rem;
344
+ touch-action: manipulation;
345
+ transition:
346
+ border-color var(--sprout-motion-fast) var(--sprout-motion-ease),
347
+ background-color var(--sprout-motion-fast) var(--sprout-motion-ease);
348
+ }
349
+ .sprout-board-card[aria-roledescription='draggable card'] {
350
+ cursor: grab;
351
+ }
352
+ .sprout-board-card[data-openable] {
353
+ cursor: pointer;
354
+ }
355
+ .sprout-board-card:hover {
356
+ border-color: color-mix(in oklab, var(--sprout-border) 70%, var(--sprout-line));
357
+ }
358
+ .sprout-board-card:focus-visible {
359
+ outline: 2px solid var(--sprout-focus-ring);
360
+ outline-offset: 1px;
361
+ }
362
+ .sprout-board-card[data-selected] {
363
+ border-color: var(--sprout-primary);
364
+ background: color-mix(in oklab, var(--sprout-primary-subtle) 60%, var(--sprout-card-raised));
365
+ }
366
+ .sprout-board-card[data-custom] {
367
+ display: block;
368
+ padding: 0;
369
+ border: 0;
370
+ background: none;
371
+ box-shadow: none;
372
+ }
373
+ .sprout-board-card[data-custom][data-selected] {
374
+ outline: 2px solid var(--sprout-primary);
375
+ outline-offset: 1px;
376
+ }
377
+ .sprout-board-card[data-dragging] {
378
+ opacity: 0.35;
379
+ }
380
+ .sprout-board-card-head {
381
+ display: flex;
382
+ align-items: flex-start;
383
+ gap: 0.25rem;
384
+ }
385
+ .sprout-board-card-title {
386
+ flex: 1;
387
+ min-width: 0;
388
+ overflow-wrap: anywhere;
389
+ font-weight: 500;
390
+ }
391
+ .sprout-board-card-menu {
392
+ margin: -0.125rem -0.25rem 0 0;
393
+ opacity: 0;
394
+ }
395
+ .sprout-board-card:hover .sprout-board-card-menu,
396
+ .sprout-board-card:focus-within .sprout-board-card-menu,
397
+ .sprout-board-card-menu[data-popup-open] {
398
+ opacity: 1;
399
+ }
400
+ @media (hover: none) {
401
+ .sprout-board-card-menu {
402
+ opacity: 1;
403
+ }
404
+ }
405
+ .sprout-board-card-body {
406
+ display: flex;
407
+ flex-wrap: wrap;
408
+ align-items: center;
409
+ gap: 0.375rem;
410
+ min-height: 1.25rem;
411
+ color: var(--sprout-muted);
412
+ font-size: var(--sprout-text-xs);
413
+ font-variant-numeric: tabular-nums;
414
+ }
415
+
416
+ .sprout-button.sprout-board-add {
417
+ justify-content: flex-start;
418
+ }
419
+ .sprout-board-add {
420
+ color: var(--sprout-muted);
421
+ opacity: 0;
422
+ transition: opacity var(--sprout-motion-fast) var(--sprout-motion-ease);
423
+ }
424
+ .sprout-board-cell:hover .sprout-board-add,
425
+ .sprout-board-add:focus-visible {
426
+ opacity: 1;
427
+ }
428
+ @media (hover: none) {
429
+ .sprout-board-add {
430
+ opacity: 1;
431
+ }
432
+ }
433
+ .sprout-board-inline-input {
434
+ width: 100%;
435
+ }
436
+
437
+ .sprout-board-sr-only {
438
+ position: absolute;
439
+ width: 1px;
440
+ height: 1px;
441
+ overflow: hidden;
442
+ clip-path: inset(50%);
443
+ white-space: nowrap;
444
+ }
445
+
446
+ .sprout-board-column-title[data-tone] {
447
+ display: flex;
448
+ font-weight: 500;
449
+ }
450
+ .sprout-board-column-badge {
451
+ min-width: 0;
452
+ max-width: 100%;
453
+ }
454
+ .sprout-board-column-badge > span {
455
+ min-width: 0;
456
+ overflow: hidden;
457
+ text-overflow: ellipsis;
458
+ }
459
+
460
+ .sprout-board-column-notice {
461
+ min-width: 0;
462
+ }
463
+ .sprout-board-notice {
464
+ display: flex;
465
+ flex-wrap: wrap;
466
+ align-items: center;
467
+ gap: 0.375rem 0.5rem;
468
+ margin: 0;
469
+ padding: 0.375rem 0.375rem 0.5rem;
470
+ color: var(--sprout-muted);
471
+ font-size: var(--sprout-text-xs);
472
+ line-height: 1.125rem;
473
+ }
474
+ .sprout-board-notice > p {
475
+ margin: 0;
476
+ }
477
+ .sprout-board-notice[data-kind='error'] > p {
478
+ flex-basis: 100%;
479
+ color: var(--sprout-danger);
480
+ }
481
+
482
+ .sprout-board-skeletons {
483
+ display: flex;
484
+ flex-direction: column;
485
+ gap: 0.25rem;
486
+ }
487
+ .sprout-board-skeleton-card {
488
+ display: flex;
489
+ flex-direction: column;
490
+ gap: 0.5rem;
491
+ padding: 0.625rem 0.5rem;
492
+ border: 1px solid var(--sprout-board-card-border);
493
+ border-radius: var(--sprout-radius-control);
494
+ background: var(--sprout-card-raised);
495
+ }
496
+ .sprout-board-skeleton-card > .sprout-skeleton {
497
+ height: 0.75rem;
498
+ width: 80%;
499
+ background: color-mix(in oklab, var(--sprout-muted) 22%, transparent);
500
+ }
501
+ .sprout-board-skeleton-card > .sprout-skeleton:last-child {
502
+ width: 40%;
503
+ }
504
+
505
+ .sprout-board-empty {
506
+ margin: 0;
507
+ padding: 0.75rem 0.375rem;
508
+ color: var(--sprout-muted);
509
+ font-size: var(--sprout-text-xs);
510
+ text-align: center;
511
+ }
512
+
513
+ .sprout-button.sprout-board-show-all {
514
+ justify-content: flex-start;
515
+ flex-shrink: 0;
516
+ color: var(--sprout-muted);
517
+ font-variant-numeric: tabular-nums;
518
+ }
519
+ .sprout-button.sprout-board-show-all:hover {
520
+ color: var(--sprout-text);
521
+ }
522
+ .sprout-board-foot {
523
+ position: sticky;
524
+ bottom: 0;
525
+ z-index: 2;
526
+ display: grid;
527
+ gap: var(--sprout-board-gap);
528
+ padding: 0.25rem 0.75rem;
529
+ border-top: 1px solid var(--sprout-line);
530
+ background: var(--sprout-canvas);
531
+ }
532
+
533
+ @media (prefers-reduced-motion: no-preference) {
534
+ .sprout-board-notice,
535
+ .sprout-board-empty,
536
+ .sprout-board-skeletons,
537
+ .sprout-board-show-all {
538
+ animation: sprout-board-appear var(--sprout-motion-normal) var(--sprout-motion-ease);
539
+ }
540
+ }
541
+
542
+ .sprout-board-overlay {
543
+ position: relative;
544
+ cursor: grabbing;
545
+ }
546
+ .sprout-board-overlay > .sprout-board-card,
547
+ .sprout-board-column-header.sprout-board-overlay {
548
+ box-shadow: var(--sprout-shadow-overlay);
549
+ border-color: var(--sprout-border);
550
+ transform: rotate(1.5deg);
551
+ }
552
+ .sprout-board-overlay-count {
553
+ position: absolute;
554
+ top: -0.5rem;
555
+ right: -0.5rem;
556
+ }
557
+
558
+ @media (prefers-reduced-motion: reduce) {
559
+ .sprout-board-overlay > .sprout-board-card,
560
+ .sprout-board-column-header.sprout-board-overlay {
561
+ transform: none;
562
+ }
563
+ }
564
+ }
565
+
566
+ @keyframes sprout-board-appear {
567
+ from {
568
+ opacity: 0;
569
+ transform: translateY(2px);
570
+ }
571
+ }
@@ -19,23 +19,23 @@
19
19
  font-family: var(--sprout-font);
20
20
  line-height: 1;
21
21
  }
22
- .sprout-brand-tile[data-size="sm"] {
22
+ .sprout-brand-tile[data-size='sm'] {
23
23
  --sprout-brand-tile-size: 1.5rem;
24
24
  padding: 0.25rem;
25
25
  border-radius: 0.375rem;
26
26
  }
27
- .sprout-brand-tile[data-size="lg"] {
27
+ .sprout-brand-tile[data-size='lg'] {
28
28
  --sprout-brand-tile-size: 3rem;
29
29
  padding: 0.625rem;
30
30
  border-radius: 0.75rem;
31
31
  }
32
- .sprout-brand-tile[data-size="xl"] {
32
+ .sprout-brand-tile[data-size='xl'] {
33
33
  --sprout-brand-tile-size: 3.5rem;
34
34
  padding: 0.75rem;
35
35
  border-radius: 1rem;
36
36
  }
37
37
  @media (pointer: coarse) {
38
- .sprout-brand-tile[data-size="action"] {
38
+ .sprout-brand-tile[data-size='action'] {
39
39
  --sprout-brand-tile-size: 2.75rem;
40
40
  padding: 0.75rem;
41
41
  }
@@ -64,16 +64,15 @@
64
64
  width: 1rem;
65
65
  height: 1rem;
66
66
  }
67
- .sprout-brand-icon[data-size="glyph"] {
67
+ .sprout-brand-icon[data-size='glyph'] {
68
68
  width: 1.25rem;
69
69
  height: 1.25rem;
70
70
  }
71
- .sprout-brand-icon[data-size="fill"] {
71
+ .sprout-brand-icon[data-size='fill'] {
72
72
  width: 100%;
73
73
  height: 100%;
74
74
  }
75
- :is(.sprout-brand-icon, .sprout-brand-tile)[data-size]
76
- > svg.sprout-brand-glyph {
75
+ :is(.sprout-brand-icon, .sprout-brand-tile)[data-size] > svg.sprout-brand-glyph {
77
76
  display: block;
78
77
  width: 100%;
79
78
  height: 100%;
@@ -16,7 +16,7 @@
16
16
  list-style: none;
17
17
  overflow-wrap: break-word;
18
18
  }
19
- .sprout-breadcrumb-list[data-wrap="false"] {
19
+ .sprout-breadcrumb-list[data-wrap='false'] {
20
20
  flex-wrap: nowrap;
21
21
  }
22
22
  .sprout-breadcrumb-item {
@@ -25,14 +25,11 @@
25
25
  gap: 4px;
26
26
  min-width: 0;
27
27
  }
28
- .sprout-breadcrumb-list[data-wrap="false"] > .sprout-breadcrumb-item {
28
+ .sprout-breadcrumb-list[data-wrap='false'] > .sprout-breadcrumb-item {
29
29
  flex-shrink: 0;
30
30
  }
31
- .sprout-breadcrumb-list[data-wrap="false"]
32
- > .sprout-breadcrumb-item:is(
33
- [aria-current="page"],
34
- :has(> [aria-current="page"])
35
- ) {
31
+ .sprout-breadcrumb-list[data-wrap='false']
32
+ > .sprout-breadcrumb-item:is([aria-current='page'], :has(> [aria-current='page'])) {
36
33
  flex-shrink: 1;
37
34
  }
38
35
 
@@ -9,7 +9,7 @@
9
9
  position: relative;
10
10
  z-index: 1;
11
11
  }
12
- .sprout-button-group:has(> [data-slot="button-group"]) {
12
+ .sprout-button-group:has(> [data-slot='button-group']) {
13
13
  gap: 8px;
14
14
  }
15
15
  .sprout-button-group > input {
@@ -26,14 +26,11 @@
26
26
  border-start-end-radius: 0;
27
27
  border-end-end-radius: 0;
28
28
  }
29
- .sprout-button-group.sprout-button-group-horizontal
30
- > [data-slot]:not(:has(~ [data-slot])) {
29
+ .sprout-button-group.sprout-button-group-horizontal > [data-slot]:not(:has(~ [data-slot])) {
31
30
  border-start-end-radius: var(--sprout-radius-control);
32
31
  border-end-end-radius: var(--sprout-radius-control);
33
32
  }
34
- .sprout-button-group.sprout-button-group-horizontal
35
- > [data-slot]
36
- ~ [data-slot] {
33
+ .sprout-button-group.sprout-button-group-horizontal > [data-slot] ~ [data-slot] {
37
34
  border-start-start-radius: 0;
38
35
  border-end-start-radius: 0;
39
36
  border-inline-start-width: 0;
@@ -43,14 +40,11 @@
43
40
  border-end-start-radius: 0;
44
41
  border-end-end-radius: 0;
45
42
  }
46
- .sprout-button-group.sprout-button-group-vertical
47
- > [data-slot]:not(:has(~ [data-slot])) {
43
+ .sprout-button-group.sprout-button-group-vertical > [data-slot]:not(:has(~ [data-slot])) {
48
44
  border-end-start-radius: var(--sprout-radius-control);
49
45
  border-end-end-radius: var(--sprout-radius-control);
50
46
  }
51
- .sprout-button-group.sprout-button-group-vertical
52
- > [data-slot]
53
- ~ [data-slot] {
47
+ .sprout-button-group.sprout-button-group-vertical > [data-slot] ~ [data-slot] {
54
48
  border-start-start-radius: 0;
55
49
  border-start-end-radius: 0;
56
50
  border-block-start-width: 0;
@@ -61,7 +55,7 @@
61
55
  display: flex;
62
56
  align-items: center;
63
57
  gap: 8px;
64
- min-height: 28px;
58
+ min-height: var(--sprout-control-height);
65
59
  padding-inline: 10px;
66
60
  border: 1px solid var(--sprout-input);
67
61
  border-radius: var(--sprout-radius-control);
@@ -77,7 +71,7 @@
77
71
  flex-shrink: 0;
78
72
  pointer-events: none;
79
73
  }
80
- .sprout-button-group-text svg:not([class*="size-"]) {
74
+ .sprout-button-group-text svg:not([class*='size-']) {
81
75
  width: 1rem;
82
76
  height: 1rem;
83
77
  }
@@ -86,11 +80,11 @@
86
80
  position: relative;
87
81
  align-self: stretch;
88
82
  }
89
- .sprout-separator.sprout-button-group-separator[data-orientation="horizontal"] {
83
+ .sprout-separator.sprout-button-group-separator[data-orientation='horizontal'] {
90
84
  width: auto;
91
85
  margin-inline: 1px;
92
86
  }
93
- .sprout-separator.sprout-button-group-separator[data-orientation="vertical"] {
87
+ .sprout-separator.sprout-button-group-separator[data-orientation='vertical'] {
94
88
  height: auto;
95
89
  min-height: 0;
96
90
  margin-block: 1px;