@timbal-ai/timbal-react 1.5.0 → 1.6.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 (52) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/README.md +25 -0
  3. package/dist/app.cjs +855 -640
  4. package/dist/app.d.cts +4 -4
  5. package/dist/app.d.ts +4 -4
  6. package/dist/app.esm.js +6 -6
  7. package/dist/{chart-artifact-2OTDTRwM.d.ts → chart-artifact-C2pZQsaP.d.ts} +81 -29
  8. package/dist/{chart-artifact-CS3qyGIY.d.cts → chart-artifact-VAqgH-My.d.cts} +81 -29
  9. package/dist/{chat-ClmzWzCX.d.cts → chat-DDsp-Vzz.d.cts} +1 -1
  10. package/dist/{chat-ClmzWzCX.d.ts → chat-DDsp-Vzz.d.ts} +1 -1
  11. package/dist/chat.cjs +26 -26
  12. package/dist/chat.d.cts +3 -3
  13. package/dist/chat.d.ts +3 -3
  14. package/dist/chat.esm.js +3 -3
  15. package/dist/{chunk-TZI3ID3C.esm.js → chunk-24B4I4XC.esm.js} +3 -3
  16. package/dist/{chunk-SZDYIRMB.esm.js → chunk-6SQMTBPL.esm.js} +618 -530
  17. package/dist/{chunk-QIABF4KB.esm.js → chunk-ELEY66OH.esm.js} +2 -2
  18. package/dist/{chunk-WMKPT5BV.esm.js → chunk-HSL36SJ4.esm.js} +6 -6
  19. package/dist/chunk-JJOO4PR5.esm.js +391 -0
  20. package/dist/{chunk-AZL2WANO.esm.js → chunk-MBS7XHV2.esm.js} +28 -28
  21. package/dist/{chunk-5ECRZ5O7.esm.js → chunk-NO5AWNWT.esm.js} +224 -57
  22. package/dist/{chunk-ZNYAETFD.esm.js → chunk-R4RQT2XQ.esm.js} +2 -2
  23. package/dist/{chunk-JYDJRGDE.esm.js → chunk-TMP7RIA7.esm.js} +2 -2
  24. package/dist/{chunk-IGHBLJV3.esm.js → chunk-WQIQW7EM.esm.js} +3 -2
  25. package/dist/{chunk-B4XAC4G7.esm.js → chunk-YYEI6XME.esm.js} +361 -527
  26. package/dist/{circular-progress-CDsJwIPF.d.cts → circular-progress-B9nnwzCu.d.cts} +1 -1
  27. package/dist/{circular-progress-CDsJwIPF.d.ts → circular-progress-B9nnwzCu.d.ts} +1 -1
  28. package/dist/index.cjs +1327 -852
  29. package/dist/index.d.cts +9 -8
  30. package/dist/index.d.ts +9 -8
  31. package/dist/index.esm.js +40 -20
  32. package/dist/{kanban-U5xNe9py.d.cts → kanban-FFBeaZPS.d.cts} +4 -4
  33. package/dist/{kanban-U5xNe9py.d.ts → kanban-FFBeaZPS.d.ts} +4 -4
  34. package/dist/{layout-B8r6Jbat.d.ts → layout-CuKeSY74.d.ts} +1 -1
  35. package/dist/{layout-Cu7Ijn04.d.cts → layout-PzVwkJyL.d.cts} +1 -1
  36. package/dist/site.cjs +71 -0
  37. package/dist/site.d.cts +15 -1
  38. package/dist/site.d.ts +15 -1
  39. package/dist/site.esm.js +12 -311
  40. package/dist/studio.cjs +31 -31
  41. package/dist/studio.d.cts +2 -2
  42. package/dist/studio.d.ts +2 -2
  43. package/dist/studio.esm.js +7 -7
  44. package/dist/{timbal-v2-button-B7vPs7gg.d.ts → timbal-v2-button-DCAZNyUx.d.cts} +1 -1
  45. package/dist/{timbal-v2-button-B7vPs7gg.d.cts → timbal-v2-button-DCAZNyUx.d.ts} +1 -1
  46. package/dist/ui.cjs +77 -77
  47. package/dist/ui.d.cts +3 -3
  48. package/dist/ui.d.ts +3 -3
  49. package/dist/ui.esm.js +15 -15
  50. package/dist/{welcome-NXZlcihe.d.cts → welcome-B00oH5Io.d.cts} +1 -1
  51. package/dist/{welcome-DduQAC4K.d.ts → welcome-DU-4NTjZ.d.ts} +1 -1
  52. package/package.json +1 -1
@@ -1,7 +1,9 @@
1
1
  import {
2
+ controlClass,
3
+ overlayItemClass,
2
4
  overlayListPanelClass,
3
5
  overlaySurfaceClass
4
- } from "./chunk-AZL2WANO.esm.js";
6
+ } from "./chunk-MBS7XHV2.esm.js";
5
7
  import {
6
8
  cn
7
9
  } from "./chunk-EDEKQYSU.esm.js";
@@ -47,7 +49,7 @@ function CopyButton({
47
49
  "inline-flex items-center justify-center gap-1.5 rounded-md text-sm font-medium text-muted-foreground transition-colors",
48
50
  "hover:bg-accent hover:text-foreground data-[copied=true]:text-emerald-600 dark:data-[copied=true]:text-emerald-400",
49
51
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground/15",
50
- children ? "h-8 px-2" : "size-8",
52
+ children ? "h-7 px-1.5" : "size-7",
51
53
  className
52
54
  ),
53
55
  ...props,
@@ -90,23 +92,178 @@ function Checkbox({
90
92
  );
91
93
  }
92
94
 
95
+ // src/ui/select.tsx
96
+ import { Select as SelectPrimitive } from "radix-ui";
97
+ import { CheckIcon as CheckIcon3, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
98
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
99
+ function Select({
100
+ ...props
101
+ }) {
102
+ return /* @__PURE__ */ jsx3(SelectPrimitive.Root, { "data-slot": "select", ...props });
103
+ }
104
+ function SelectGroup({
105
+ ...props
106
+ }) {
107
+ return /* @__PURE__ */ jsx3(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
108
+ }
109
+ function SelectValue({
110
+ ...props
111
+ }) {
112
+ return /* @__PURE__ */ jsx3(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
113
+ }
114
+ function SelectTrigger({
115
+ className,
116
+ size = "default",
117
+ children,
118
+ ...props
119
+ }) {
120
+ return /* @__PURE__ */ jsxs2(
121
+ SelectPrimitive.Trigger,
122
+ {
123
+ "data-slot": "select-trigger",
124
+ "data-size": size,
125
+ className: cn(
126
+ controlClass({ size }),
127
+ "flex w-fit items-center justify-between gap-2 whitespace-nowrap *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
128
+ className
129
+ ),
130
+ ...props,
131
+ children: [
132
+ children,
133
+ /* @__PURE__ */ jsx3(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx3(ChevronDownIcon, { className: "size-4 opacity-50" }) })
134
+ ]
135
+ }
136
+ );
137
+ }
138
+ function SelectContent({
139
+ className,
140
+ children,
141
+ position = "popper",
142
+ ...props
143
+ }) {
144
+ return /* @__PURE__ */ jsx3(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs2(
145
+ SelectPrimitive.Content,
146
+ {
147
+ "data-slot": "select-content",
148
+ className: cn(
149
+ overlayListPanelClass,
150
+ "relative max-h-[var(--radix-select-content-available-height)] min-w-[8rem] origin-[var(--radix-select-content-transform-origin)] overflow-x-hidden overflow-y-auto",
151
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
152
+ className
153
+ ),
154
+ position,
155
+ ...props,
156
+ children: [
157
+ /* @__PURE__ */ jsx3(SelectScrollUpButton, {}),
158
+ /* @__PURE__ */ jsx3(
159
+ SelectPrimitive.Viewport,
160
+ {
161
+ className: cn(
162
+ "p-1",
163
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
164
+ ),
165
+ children
166
+ }
167
+ ),
168
+ /* @__PURE__ */ jsx3(SelectScrollDownButton, {})
169
+ ]
170
+ }
171
+ ) });
172
+ }
173
+ function SelectLabel({
174
+ className,
175
+ ...props
176
+ }) {
177
+ return /* @__PURE__ */ jsx3(
178
+ SelectPrimitive.Label,
179
+ {
180
+ "data-slot": "select-label",
181
+ className: cn("px-2 py-1.5 text-xs font-medium text-muted-foreground", className),
182
+ ...props
183
+ }
184
+ );
185
+ }
186
+ function SelectItem({
187
+ className,
188
+ children,
189
+ ...props
190
+ }) {
191
+ return /* @__PURE__ */ jsxs2(
192
+ SelectPrimitive.Item,
193
+ {
194
+ "data-slot": "select-item",
195
+ className: cn(
196
+ overlayItemClass,
197
+ "w-full py-1 pr-8 pl-2 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
198
+ className
199
+ ),
200
+ ...props,
201
+ children: [
202
+ /* @__PURE__ */ jsx3("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx3(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx3(CheckIcon3, { className: "size-4" }) }) }),
203
+ /* @__PURE__ */ jsx3(SelectPrimitive.ItemText, { children })
204
+ ]
205
+ }
206
+ );
207
+ }
208
+ function SelectSeparator({
209
+ className,
210
+ ...props
211
+ }) {
212
+ return /* @__PURE__ */ jsx3(
213
+ SelectPrimitive.Separator,
214
+ {
215
+ "data-slot": "select-separator",
216
+ className: cn("-mx-1 my-1 h-px bg-border", className),
217
+ ...props
218
+ }
219
+ );
220
+ }
221
+ function SelectScrollUpButton({
222
+ className,
223
+ ...props
224
+ }) {
225
+ return /* @__PURE__ */ jsx3(
226
+ SelectPrimitive.ScrollUpButton,
227
+ {
228
+ "data-slot": "select-scroll-up-button",
229
+ className: cn("flex cursor-default items-center justify-center py-1", className),
230
+ ...props,
231
+ children: /* @__PURE__ */ jsx3(ChevronUpIcon, { className: "size-4" })
232
+ }
233
+ );
234
+ }
235
+ function SelectScrollDownButton({
236
+ className,
237
+ ...props
238
+ }) {
239
+ return /* @__PURE__ */ jsx3(
240
+ SelectPrimitive.ScrollDownButton,
241
+ {
242
+ "data-slot": "select-scroll-down-button",
243
+ className: cn("flex cursor-default items-center justify-center py-1", className),
244
+ ...props,
245
+ children: /* @__PURE__ */ jsx3(ChevronDownIcon, { className: "size-4" })
246
+ }
247
+ );
248
+ }
249
+
93
250
  // src/ui/popover.tsx
94
251
  import { Popover as PopoverPrimitive } from "radix-ui";
95
- import { jsx as jsx3 } from "react/jsx-runtime";
252
+ import { jsx as jsx4 } from "react/jsx-runtime";
96
253
  function Popover({
97
254
  ...props
98
255
  }) {
99
- return /* @__PURE__ */ jsx3(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
256
+ return /* @__PURE__ */ jsx4(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
100
257
  }
101
258
  function PopoverTrigger({
102
259
  ...props
103
260
  }) {
104
- return /* @__PURE__ */ jsx3(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
261
+ return /* @__PURE__ */ jsx4(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
105
262
  }
106
263
  function PopoverAnchor({
107
264
  ...props
108
265
  }) {
109
- return /* @__PURE__ */ jsx3(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
266
+ return /* @__PURE__ */ jsx4(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
110
267
  }
111
268
  function PopoverContent({
112
269
  className,
@@ -115,7 +272,7 @@ function PopoverContent({
115
272
  variant = "default",
116
273
  ...props
117
274
  }) {
118
- return /* @__PURE__ */ jsx3(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx3(
275
+ return /* @__PURE__ */ jsx4(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx4(
119
276
  PopoverPrimitive.Content,
120
277
  {
121
278
  "data-slot": "popover-content",
@@ -128,7 +285,7 @@ function PopoverContent({
128
285
  "min-w-[8rem] origin-[var(--radix-popover-content-transform-origin)]"
129
286
  ) : cn(
130
287
  overlaySurfaceClass,
131
- "w-72 origin-[var(--radix-popover-content-transform-origin)] rounded-xl p-4 outline-hidden"
288
+ "w-72 origin-[var(--radix-popover-content-transform-origin)] rounded-xl p-3 outline-hidden"
132
289
  ),
133
290
  className
134
291
  ),
@@ -138,9 +295,9 @@ function PopoverContent({
138
295
  }
139
296
 
140
297
  // src/ui/skeleton.tsx
141
- import { jsx as jsx4 } from "react/jsx-runtime";
298
+ import { jsx as jsx5 } from "react/jsx-runtime";
142
299
  function Skeleton({ className, ...props }) {
143
- return /* @__PURE__ */ jsx4(
300
+ return /* @__PURE__ */ jsx5(
144
301
  "div",
145
302
  {
146
303
  "data-slot": "skeleton",
@@ -153,7 +310,7 @@ function Skeleton({ className, ...props }) {
153
310
  // src/ui/untitled-button.tsx
154
311
  import { cva } from "class-variance-authority";
155
312
  import { Slot } from "radix-ui";
156
- import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
313
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
157
314
  var SOLID_SKEUOMORPHIC_SHADOW = "shadow-skeuomorphic-solid";
158
315
  var BORDERED_SKEUOMORPHIC_SHADOW = "shadow-skeuomorphic-bordered";
159
316
  var untitledButtonVariants = cva(
@@ -236,10 +393,10 @@ var untitledButtonVariants = cva(
236
393
  )
237
394
  },
238
395
  size: {
239
- sm: "h-9 gap-1.5 rounded-lg px-3 text-sm",
240
- md: "h-10 gap-1.5 rounded-lg px-3.5 text-sm",
241
- lg: "h-11 gap-2 rounded-lg px-4 text-base",
242
- xl: "h-12 gap-2 rounded-lg px-5 text-base"
396
+ sm: "h-8 gap-1 rounded-md px-2.5 text-xs",
397
+ md: "h-9 gap-1.5 rounded-lg px-3 text-sm",
398
+ lg: "h-10 gap-1.5 rounded-lg px-3.5 text-sm",
399
+ xl: "h-11 gap-2 rounded-lg px-4 text-base"
243
400
  }
244
401
  },
245
402
  defaultVariants: {
@@ -264,7 +421,7 @@ function UntitledButton({
264
421
  const isDisabled = disabled || isLoading;
265
422
  const classes = cn(untitledButtonVariants({ color, size }), className);
266
423
  if (asChild) {
267
- return /* @__PURE__ */ jsx5(
424
+ return /* @__PURE__ */ jsx6(
268
425
  Slot.Root,
269
426
  {
270
427
  className: classes,
@@ -275,7 +432,7 @@ function UntitledButton({
275
432
  }
276
433
  );
277
434
  }
278
- return /* @__PURE__ */ jsxs2(
435
+ return /* @__PURE__ */ jsxs3(
279
436
  "button",
280
437
  {
281
438
  type,
@@ -284,7 +441,7 @@ function UntitledButton({
284
441
  className: classes,
285
442
  ...props,
286
443
  children: [
287
- isLoading ? /* @__PURE__ */ jsx5(
444
+ isLoading ? /* @__PURE__ */ jsx6(
288
445
  "span",
289
446
  {
290
447
  "aria-hidden": true,
@@ -300,7 +457,7 @@ function UntitledButton({
300
457
 
301
458
  // src/ui/banner.tsx
302
459
  import { XIcon } from "lucide-react";
303
- import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
460
+ import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
304
461
  var bannerSoftClass = {
305
462
  default: "border-border/50 bg-muted/30 text-foreground/90 dark:bg-muted/15",
306
463
  primary: "border-primary/15 bg-primary/5 text-primary-800 dark:text-primary-200 [&_[data-banner-icon]]:text-primary",
@@ -345,7 +502,7 @@ function Banner({
345
502
  }) {
346
503
  const isSolid = variant === "solid";
347
504
  const isSingleLine = !title;
348
- return /* @__PURE__ */ jsxs3(
505
+ return /* @__PURE__ */ jsxs4(
349
506
  "div",
350
507
  {
351
508
  "data-slot": "banner",
@@ -360,7 +517,7 @@ function Banner({
360
517
  ),
361
518
  ...props,
362
519
  children: [
363
- icon ? /* @__PURE__ */ jsx6(
520
+ icon ? /* @__PURE__ */ jsx7(
364
521
  "span",
365
522
  {
366
523
  "data-banner-icon": true,
@@ -371,9 +528,9 @@ function Banner({
371
528
  children: icon
372
529
  }
373
530
  ) : null,
374
- /* @__PURE__ */ jsxs3("div", { className: "min-w-0 flex-1", children: [
375
- title ? /* @__PURE__ */ jsx6("p", { className: "font-medium tracking-tight", children: title }) : null,
376
- children ? /* @__PURE__ */ jsx6(
531
+ /* @__PURE__ */ jsxs4("div", { className: "min-w-0 flex-1", children: [
532
+ title ? /* @__PURE__ */ jsx7("p", { className: "font-medium tracking-tight", children: title }) : null,
533
+ children ? /* @__PURE__ */ jsx7(
377
534
  "div",
378
535
  {
379
536
  className: cn(
@@ -384,8 +541,8 @@ function Banner({
384
541
  }
385
542
  ) : null
386
543
  ] }),
387
- actions ? /* @__PURE__ */ jsx6("div", { className: "flex shrink-0 items-center gap-2", children: actions }) : null,
388
- onDismiss ? /* @__PURE__ */ jsx6(
544
+ actions ? /* @__PURE__ */ jsx7("div", { className: "flex shrink-0 items-center gap-2", children: actions }) : null,
545
+ onDismiss ? /* @__PURE__ */ jsx7(
389
546
  "button",
390
547
  {
391
548
  type: "button",
@@ -396,7 +553,7 @@ function Banner({
396
553
  isSingleLine ? "self-center" : "-mt-0.5",
397
554
  isSolid ? "opacity-80 hover:bg-background/15 hover:opacity-100" : "text-muted-foreground hover:bg-foreground/10 hover:text-foreground"
398
555
  ),
399
- children: /* @__PURE__ */ jsx6(XIcon, { className: "size-4", "aria-hidden": true })
556
+ children: /* @__PURE__ */ jsx7(XIcon, { className: "size-4", "aria-hidden": true })
400
557
  }
401
558
  ) : null
402
559
  ]
@@ -405,7 +562,7 @@ function Banner({
405
562
  }
406
563
 
407
564
  // src/ui/timeline.tsx
408
- import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
565
+ import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
409
566
  var timelineRowGap = {
410
567
  sm: "pb-4",
411
568
  default: "pb-6"
@@ -438,16 +595,16 @@ var toneStyles = {
438
595
  }
439
596
  };
440
597
  function Timeline({ items, size = "default", className, ...props }) {
441
- return /* @__PURE__ */ jsx7("ol", { "data-slot": "timeline", className: cn("flex flex-col", className), ...props, children: items.map((item, index) => {
598
+ return /* @__PURE__ */ jsx8("ol", { "data-slot": "timeline", className: cn("flex flex-col", className), ...props, children: items.map((item, index) => {
442
599
  const last = index === items.length - 1;
443
600
  const tone = item.tone ?? "default";
444
601
  const styles = toneStyles[tone];
445
- return /* @__PURE__ */ jsxs4(
602
+ return /* @__PURE__ */ jsxs5(
446
603
  "li",
447
604
  {
448
605
  className: cn("relative flex gap-3.5 last:pb-0", timelineRowGap[size]),
449
606
  children: [
450
- !last ? /* @__PURE__ */ jsx7(
607
+ !last ? /* @__PURE__ */ jsx8(
451
608
  "span",
452
609
  {
453
610
  "aria-hidden": true,
@@ -457,7 +614,7 @@ function Timeline({ items, size = "default", className, ...props }) {
457
614
  )
458
615
  }
459
616
  ) : null,
460
- /* @__PURE__ */ jsx7("div", { className: "relative flex w-5 shrink-0 justify-center pt-0.5", children: /* @__PURE__ */ jsx7(
617
+ /* @__PURE__ */ jsx8("div", { className: "relative flex w-5 shrink-0 justify-center pt-0.5", children: /* @__PURE__ */ jsx8(
461
618
  "span",
462
619
  {
463
620
  className: cn(
@@ -465,7 +622,7 @@ function Timeline({ items, size = "default", className, ...props }) {
465
622
  styles.border,
466
623
  item.icon ? "size-6" : "size-4"
467
624
  ),
468
- children: item.icon ? /* @__PURE__ */ jsx7("div", { className: cn("text-xs", styles.icon), children: item.icon }) : /* @__PURE__ */ jsx7(
625
+ children: item.icon ? /* @__PURE__ */ jsx8("div", { className: cn("text-xs", styles.icon), children: item.icon }) : /* @__PURE__ */ jsx8(
469
626
  "span",
470
627
  {
471
628
  className: cn(
@@ -476,12 +633,12 @@ function Timeline({ items, size = "default", className, ...props }) {
476
633
  )
477
634
  }
478
635
  ) }),
479
- /* @__PURE__ */ jsxs4("div", { className: "min-w-0 flex-1 pb-0.5", children: [
480
- /* @__PURE__ */ jsxs4("div", { className: "flex items-start justify-between gap-2", children: [
481
- /* @__PURE__ */ jsx7("p", { className: "text-sm font-normal text-foreground", children: item.title }),
482
- item.meta ? /* @__PURE__ */ jsx7("span", { className: "shrink-0 text-xs text-muted-foreground tabular-nums", children: item.meta }) : null
636
+ /* @__PURE__ */ jsxs5("div", { className: "min-w-0 flex-1 pb-0.5", children: [
637
+ /* @__PURE__ */ jsxs5("div", { className: "flex items-start justify-between gap-2", children: [
638
+ /* @__PURE__ */ jsx8("p", { className: "text-sm font-normal text-foreground", children: item.title }),
639
+ item.meta ? /* @__PURE__ */ jsx8("span", { className: "shrink-0 text-xs text-muted-foreground tabular-nums", children: item.meta }) : null
483
640
  ] }),
484
- item.description ? /* @__PURE__ */ jsx7("p", { className: "mt-0.5 text-[13px] leading-relaxed text-muted-foreground", children: item.description }) : null
641
+ item.description ? /* @__PURE__ */ jsx8("p", { className: "mt-0.5 text-[13px] leading-relaxed text-muted-foreground", children: item.description }) : null
485
642
  ] })
486
643
  ]
487
644
  },
@@ -511,7 +668,7 @@ import {
511
668
  } from "@dnd-kit/sortable";
512
669
  import { CSS } from "@dnd-kit/utilities";
513
670
  import { GripVerticalIcon } from "lucide-react";
514
- import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
671
+ import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
515
672
  var columnTitleToneClass = {
516
673
  default: "text-foreground",
517
674
  primary: "text-blue-600 dark:text-blue-400",
@@ -573,7 +730,7 @@ function SortableCard({
573
730
  transition
574
731
  };
575
732
  const dragHandleProps = disabled ? void 0 : { ...attributes, ...listeners };
576
- return /* @__PURE__ */ jsxs5(
733
+ return /* @__PURE__ */ jsxs6(
577
734
  "div",
578
735
  {
579
736
  ref: setNodeRef,
@@ -588,7 +745,7 @@ function SortableCard({
588
745
  className
589
746
  ),
590
747
  children: [
591
- !disabled && dragHandle === "auto" ? /* @__PURE__ */ jsx8(
748
+ !disabled && dragHandle === "auto" ? /* @__PURE__ */ jsx9(
592
749
  "button",
593
750
  {
594
751
  type: "button",
@@ -596,7 +753,7 @@ function SortableCard({
596
753
  className: "absolute right-1.5 top-1.5 z-10 grid size-6 cursor-grab touch-none place-items-center rounded-md text-muted-foreground/40 opacity-0 transition hover:bg-foreground/5 hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground/15 group-hover/kanban-card:opacity-100 active:cursor-grabbing",
597
754
  ...attributes,
598
755
  ...listeners,
599
- children: /* @__PURE__ */ jsx8(GripVerticalIcon, { className: "size-4", "aria-hidden": true })
756
+ children: /* @__PURE__ */ jsx9(GripVerticalIcon, { className: "size-4", "aria-hidden": true })
600
757
  }
601
758
  ) : null,
602
759
  renderCard(card, { column, isDragging, isOverlay: false, dragHandleProps })
@@ -620,7 +777,7 @@ function KanbanColumnView({
620
777
  }) {
621
778
  const tone = column.tone ?? "default";
622
779
  const { setNodeRef, isOver } = useDroppable({ id: column.id, disabled });
623
- return /* @__PURE__ */ jsxs5(
780
+ return /* @__PURE__ */ jsxs6(
624
781
  "div",
625
782
  {
626
783
  "data-slot": "kanban-column",
@@ -630,9 +787,9 @@ function KanbanColumnView({
630
787
  className
631
788
  ),
632
789
  children: [
633
- renderColumnHeader ? renderColumnHeader(column) : /* @__PURE__ */ jsxs5("div", { className: "flex flex-col gap-0.5 px-1 pb-0.5", children: [
634
- /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-2", children: [
635
- /* @__PURE__ */ jsx8(
790
+ renderColumnHeader ? renderColumnHeader(column) : /* @__PURE__ */ jsxs6("div", { className: "flex flex-col gap-0.5 px-1 pb-0.5", children: [
791
+ /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2", children: [
792
+ /* @__PURE__ */ jsx9(
636
793
  "h3",
637
794
  {
638
795
  className: cn(
@@ -642,12 +799,12 @@ function KanbanColumnView({
642
799
  children: column.title
643
800
  }
644
801
  ),
645
- /* @__PURE__ */ jsx8("span", { className: "shrink-0 text-xs font-normal tabular-nums text-muted-foreground/60", children: column.cards.length }),
646
- column.action ? /* @__PURE__ */ jsx8("div", { className: "shrink-0", children: column.action }) : null
802
+ /* @__PURE__ */ jsx9("span", { className: "shrink-0 text-xs font-normal tabular-nums text-muted-foreground/60", children: column.cards.length }),
803
+ column.action ? /* @__PURE__ */ jsx9("div", { className: "shrink-0", children: column.action }) : null
647
804
  ] }),
648
- column.description ? /* @__PURE__ */ jsx8("p", { className: "truncate text-xs text-muted-foreground", children: column.description }) : null
805
+ column.description ? /* @__PURE__ */ jsx9("p", { className: "truncate text-xs text-muted-foreground", children: column.description }) : null
649
806
  ] }),
650
- /* @__PURE__ */ jsx8(SortableContext, { items: cardIds, strategy: verticalListSortingStrategy, children: /* @__PURE__ */ jsx8(
807
+ /* @__PURE__ */ jsx9(SortableContext, { items: cardIds, strategy: verticalListSortingStrategy, children: /* @__PURE__ */ jsx9(
651
808
  "div",
652
809
  {
653
810
  ref: setNodeRef,
@@ -657,9 +814,9 @@ function KanbanColumnView({
657
814
  densityListClass[density],
658
815
  isOver && "bg-muted/50"
659
816
  ),
660
- children: column.cards.length === 0 ? /* @__PURE__ */ jsx8("div", { className: "flex flex-1 items-center justify-center rounded-xl border border-dashed border-border/60 px-2 py-8 text-center text-xs text-muted-foreground/70", children: emptyColumnLabel ?? "Drop here" }) : column.cards.map((card) => {
817
+ children: column.cards.length === 0 ? /* @__PURE__ */ jsx9("div", { className: "flex flex-1 items-center justify-center rounded-xl border border-dashed border-border/60 px-2 py-8 text-center text-xs text-muted-foreground/70", children: emptyColumnLabel ?? "Drop here" }) : column.cards.map((card) => {
661
818
  const id = getCardId(card);
662
- return /* @__PURE__ */ jsx8(
819
+ return /* @__PURE__ */ jsx9(
663
820
  SortableCard,
664
821
  {
665
822
  card,
@@ -677,7 +834,7 @@ function KanbanColumnView({
677
834
  })
678
835
  }
679
836
  ) }),
680
- column.footer ? /* @__PURE__ */ jsx8("div", { className: "px-0.5 pt-0.5", children: column.footer }) : null
837
+ column.footer ? /* @__PURE__ */ jsx9("div", { className: "px-0.5 pt-0.5", children: column.footer }) : null
681
838
  ]
682
839
  }
683
840
  );
@@ -816,7 +973,7 @@ function Kanban({
816
973
  onColumnsChange?.(next);
817
974
  }
818
975
  };
819
- return /* @__PURE__ */ jsxs5(
976
+ return /* @__PURE__ */ jsxs6(
820
977
  DndContext,
821
978
  {
822
979
  sensors,
@@ -830,7 +987,7 @@ function Kanban({
830
987
  if (isControlled) setInternal(cloneColumns(columnsProp));
831
988
  },
832
989
  children: [
833
- /* @__PURE__ */ jsx8(
990
+ /* @__PURE__ */ jsx9(
834
991
  "div",
835
992
  {
836
993
  "data-slot": "kanban",
@@ -841,7 +998,7 @@ function Kanban({
841
998
  density === "compact" ? "gap-3" : "gap-4",
842
999
  className
843
1000
  ),
844
- children: columns.map((column) => /* @__PURE__ */ jsx8(
1001
+ children: columns.map((column) => /* @__PURE__ */ jsx9(
845
1002
  KanbanColumnView,
846
1003
  {
847
1004
  column,
@@ -861,7 +1018,7 @@ function Kanban({
861
1018
  ))
862
1019
  }
863
1020
  ),
864
- /* @__PURE__ */ jsx8(DragOverlay, { children: activeCard ? /* @__PURE__ */ jsx8(
1021
+ /* @__PURE__ */ jsx9(DragOverlay, { children: activeCard ? /* @__PURE__ */ jsx9(
865
1022
  "div",
866
1023
  {
867
1024
  "data-slot": "kanban-card-overlay",
@@ -886,6 +1043,16 @@ function Kanban({
886
1043
  export {
887
1044
  CopyButton,
888
1045
  Checkbox,
1046
+ Select,
1047
+ SelectGroup,
1048
+ SelectValue,
1049
+ SelectTrigger,
1050
+ SelectContent,
1051
+ SelectLabel,
1052
+ SelectItem,
1053
+ SelectSeparator,
1054
+ SelectScrollUpButton,
1055
+ SelectScrollDownButton,
889
1056
  Popover,
890
1057
  PopoverTrigger,
891
1058
  PopoverAnchor,
@@ -27,10 +27,10 @@ var pillSegmentedTrackFlushClass = cn(
27
27
  "h-[var(--studio-chrome-pill-height)] items-center gap-0.5 overflow-visible p-0.5"
28
28
  );
29
29
  var pillSegmentedSegmentClass = cn(
30
- "relative flex items-center gap-1.5 rounded-full px-4 py-1.5 text-xs font-normal transition-colors"
30
+ "relative flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-normal transition-colors"
31
31
  );
32
32
  var pillSegmentedFlushSegmentClass = cn(
33
- "relative box-border inline-flex h-9 min-h-9 items-center justify-center gap-1.5 rounded-full px-3.5 py-0",
33
+ "relative box-border inline-flex h-8 min-h-8 items-center justify-center gap-1.5 rounded-full px-3 py-0",
34
34
  "text-sm font-normal leading-tight transition-colors"
35
35
  );
36
36
  var pillSegmentedActiveIndicatorClass = cn(
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  studioTopbarPillHeightClass
3
- } from "./chunk-IGHBLJV3.esm.js";
3
+ } from "./chunk-WQIQW7EM.esm.js";
4
4
  import {
5
5
  controlSurfaceClass
6
- } from "./chunk-AZL2WANO.esm.js";
6
+ } from "./chunk-MBS7XHV2.esm.js";
7
7
  import {
8
8
  cn
9
9
  } from "./chunk-EDEKQYSU.esm.js";
@@ -22,7 +22,7 @@ import {
22
22
  TooltipContent,
23
23
  TooltipProvider,
24
24
  TooltipTrigger
25
- } from "./chunk-AZL2WANO.esm.js";
25
+ } from "./chunk-MBS7XHV2.esm.js";
26
26
  import {
27
27
  cn
28
28
  } from "./chunk-EDEKQYSU.esm.js";
@@ -1824,7 +1824,7 @@ var BadgeNode = ({ node }) => {
1824
1824
  "span",
1825
1825
  {
1826
1826
  className: cn(
1827
- "aui-ui-badge inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium",
1827
+ "aui-ui-badge inline-flex w-fit shrink-0 items-center rounded-full px-2 py-0.5 text-xs font-medium",
1828
1828
  BADGE_TONE[node.tone ?? "default"],
1829
1829
  node.className
1830
1830
  ),
@@ -4374,6 +4374,7 @@ export {
4374
4374
  toNum,
4375
4375
  monotoneLinePath,
4376
4376
  monotoneAreaPath,
4377
+ formatCompact,
4377
4378
  TooltipIconButton,
4378
4379
  UserMessageAttachments,
4379
4380
  ComposerAttachments,