@timbal-ai/timbal-react 1.5.0 → 1.6.1

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 (53) hide show
  1. package/CHANGELOG.md +32 -1
  2. package/README.md +33 -0
  3. package/dist/app.cjs +884 -642
  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-BYl5C-dk.d.ts} +90 -29
  8. package/dist/{chart-artifact-CS3qyGIY.d.cts → chart-artifact-Dpt4t5sf.d.cts} +90 -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-QIABF4KB.esm.js → chunk-ELEY66OH.esm.js} +2 -2
  17. package/dist/{chunk-WMKPT5BV.esm.js → chunk-HSL36SJ4.esm.js} +6 -6
  18. package/dist/chunk-JJOO4PR5.esm.js +391 -0
  19. package/dist/{chunk-AZL2WANO.esm.js → chunk-MBS7XHV2.esm.js} +28 -28
  20. package/dist/{chunk-5ECRZ5O7.esm.js → chunk-NO5AWNWT.esm.js} +224 -57
  21. package/dist/{chunk-ZNYAETFD.esm.js → chunk-R4RQT2XQ.esm.js} +2 -2
  22. package/dist/{chunk-JYDJRGDE.esm.js → chunk-TMP7RIA7.esm.js} +2 -2
  23. package/dist/{chunk-SZDYIRMB.esm.js → chunk-UVPXH4MB.esm.js} +647 -532
  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/cli/timbal-ui-lint.mjs +503 -0
  29. package/dist/index.cjs +1358 -856
  30. package/dist/index.d.cts +9 -8
  31. package/dist/index.d.ts +9 -8
  32. package/dist/index.esm.js +40 -20
  33. package/dist/{kanban-U5xNe9py.d.cts → kanban-FFBeaZPS.d.cts} +4 -4
  34. package/dist/{kanban-U5xNe9py.d.ts → kanban-FFBeaZPS.d.ts} +4 -4
  35. package/dist/{layout-B8r6Jbat.d.ts → layout-CuKeSY74.d.ts} +1 -1
  36. package/dist/{layout-Cu7Ijn04.d.cts → layout-PzVwkJyL.d.cts} +1 -1
  37. package/dist/site.cjs +71 -0
  38. package/dist/site.d.cts +15 -1
  39. package/dist/site.d.ts +15 -1
  40. package/dist/site.esm.js +12 -311
  41. package/dist/studio.cjs +31 -31
  42. package/dist/studio.d.cts +2 -2
  43. package/dist/studio.d.ts +2 -2
  44. package/dist/studio.esm.js +7 -7
  45. package/dist/{timbal-v2-button-B7vPs7gg.d.ts → timbal-v2-button-DCAZNyUx.d.cts} +1 -1
  46. package/dist/{timbal-v2-button-B7vPs7gg.d.cts → timbal-v2-button-DCAZNyUx.d.ts} +1 -1
  47. package/dist/ui.cjs +77 -77
  48. package/dist/ui.d.cts +3 -3
  49. package/dist/ui.d.ts +3 -3
  50. package/dist/ui.esm.js +15 -15
  51. package/dist/{welcome-NXZlcihe.d.cts → welcome-B00oH5Io.d.cts} +1 -1
  52. package/dist/{welcome-DduQAC4K.d.ts → welcome-DU-4NTjZ.d.ts} +1 -1
  53. package/package.json +13 -3
package/dist/site.esm.js CHANGED
@@ -1,315 +1,15 @@
1
1
  import {
2
- cn
3
- } from "./chunk-EDEKQYSU.esm.js";
4
-
5
- // src/site/Reveal.tsx
6
- import * as React from "react";
7
- import { motion, useReducedMotion } from "motion/react";
8
-
9
- // src/site/easing.ts
10
- var EASE = {
11
- /** Strong slow-out — the workhorse for entrances and reveals. */
12
- out: [0.16, 1, 0.3, 1],
13
- /** Symmetric in-out for loops and continuous motion. */
14
- inOut: [0.65, 0, 0.35, 1],
15
- /** Gentle in-out, good for parallax / large translations. */
16
- soft: [0.4, 0, 0.2, 1]
17
- };
18
- var DURATION = {
19
- fast: 0.4,
20
- base: 0.7,
21
- slow: 1.1
22
- };
23
- var SPRING = {
24
- /** Tight, responsive follow. */
25
- snappy: { stiffness: 350, damping: 30, mass: 0.4 },
26
- /** Looser, more elastic follow. */
27
- smooth: { stiffness: 150, damping: 20, mass: 0.6 }
28
- };
29
-
30
- // src/site/Reveal.tsx
31
- import { jsx } from "react/jsx-runtime";
32
- function hidden(variant, distance) {
33
- switch (variant) {
34
- case "fade":
35
- return { opacity: 0 };
36
- case "fade-up":
37
- return { opacity: 0, y: distance };
38
- case "fade-down":
39
- return { opacity: 0, y: -distance };
40
- case "fade-left":
41
- return { opacity: 0, x: distance };
42
- case "fade-right":
43
- return { opacity: 0, x: -distance };
44
- case "blur":
45
- return { opacity: 0, filter: "blur(12px)" };
46
- case "scale":
47
- return { opacity: 0, scale: 0.94 };
48
- case "mask-up":
49
- return { y: "110%" };
50
- }
51
- }
52
- function shown(variant) {
53
- if (variant === "mask-up") return { y: "0%" };
54
- if (variant === "blur") return { opacity: 1, filter: "blur(0px)" };
55
- if (variant === "scale") return { opacity: 1, scale: 1 };
56
- return { opacity: 1, x: 0, y: 0 };
57
- }
58
- var Reveal = React.forwardRef(function Reveal2({
59
- variant = "fade-up",
60
- delay = 0,
61
- duration = DURATION.base,
62
- distance = 28,
63
- amount = 0.3,
64
- repeat = false,
65
- as = "div",
66
- className,
67
- children,
68
- ...rest
69
- }, ref) {
70
- const reduce = useReducedMotion();
71
- const isMask = variant === "mask-up";
72
- if (reduce) {
73
- const Tag = as;
74
- return /* @__PURE__ */ jsx(Tag, { ref, className: cn(isMask && "overflow-hidden", className), ...rest, children });
75
- }
76
- const variants = {
77
- hidden: hidden(variant, distance),
78
- shown: shown(variant)
79
- };
80
- const MotionTag = motion[as] ?? motion.div;
81
- const inner = /* @__PURE__ */ jsx(
82
- MotionTag,
83
- {
84
- ref,
85
- className,
86
- variants,
87
- initial: "hidden",
88
- whileInView: "shown",
89
- viewport: { once: !repeat, amount },
90
- transition: { duration, delay, ease: EASE.out },
91
- ...rest,
92
- children
93
- }
94
- );
95
- if (isMask) {
96
- return /* @__PURE__ */ jsx("span", { className: "block overflow-hidden", children: inner });
97
- }
98
- return inner;
99
- });
100
-
101
- // src/site/TextReveal.tsx
102
- import * as React2 from "react";
103
- import { motion as motion2, useReducedMotion as useReducedMotion2 } from "motion/react";
104
- import { jsx as jsx2 } from "react/jsx-runtime";
105
- var tokenVariants = {
106
- hidden: { y: "115%" },
107
- shown: { y: "0%" }
108
- };
109
- function TextReveal({
110
- children,
111
- splitBy = "words",
112
- stagger = 0.06,
113
- delay = 0,
114
- duration = DURATION.base,
115
- repeat = false,
116
- amount = 0.4,
117
- as = "span",
118
- className,
119
- ...rest
120
- }) {
121
- const reduce = useReducedMotion2();
122
- const Tag = as;
123
- const tokens = React2.useMemo(() => {
124
- if (splitBy === "lines") return children.split("\n");
125
- return children.split(/(\s+)/).filter((t) => t.length > 0);
126
- }, [children, splitBy]);
127
- if (reduce) {
128
- return /* @__PURE__ */ jsx2(Tag, { className, ...rest, children });
129
- }
130
- const containerVariants = {
131
- hidden: {},
132
- shown: { transition: { staggerChildren: stagger, delayChildren: delay } }
133
- };
134
- return /* @__PURE__ */ jsx2(
135
- motion2.span,
136
- {
137
- variants: containerVariants,
138
- initial: "hidden",
139
- whileInView: "shown",
140
- viewport: { once: !repeat, amount },
141
- className: cn(as === "span" ? "inline" : "block", className),
142
- ...rest,
143
- children: /* @__PURE__ */ jsx2(Tag, { className: as === "span" ? "inline" : "block", children: tokens.map(
144
- (token, i) => /^\s+$/.test(token) && splitBy === "words" ? /* @__PURE__ */ jsx2("span", { children: " " }, i) : /* @__PURE__ */ jsx2(
145
- "span",
146
- {
147
- className: cn(
148
- "overflow-hidden",
149
- splitBy === "lines" ? "block" : "inline-block align-bottom"
150
- ),
151
- children: /* @__PURE__ */ jsx2(
152
- motion2.span,
153
- {
154
- className: "inline-block",
155
- variants: tokenVariants,
156
- transition: { duration, ease: EASE.out },
157
- children: token
158
- }
159
- )
160
- },
161
- i
162
- )
163
- ) })
164
- }
165
- );
166
- }
167
-
168
- // src/site/Parallax.tsx
169
- import * as React3 from "react";
170
- import {
171
- motion as motion3,
172
- useReducedMotion as useReducedMotion3,
173
- useScroll,
174
- useSpring,
175
- useTransform
176
- } from "motion/react";
177
- import { jsx as jsx3 } from "react/jsx-runtime";
178
- var Parallax = React3.forwardRef(function Parallax2({ speed = 0.2, axis = "y", smooth = true, className, children, style, ...rest }, forwardedRef) {
179
- const reduce = useReducedMotion3();
180
- const innerRef = React3.useRef(null);
181
- React3.useImperativeHandle(forwardedRef, () => innerRef.current);
182
- const { scrollYProgress } = useScroll({
183
- target: innerRef,
184
- offset: ["start end", "end start"]
185
- });
186
- const range = 100 * speed;
187
- const raw = useTransform(scrollYProgress, [0, 1], [range, -range]);
188
- const smoothed = useSpring(raw, { stiffness: 120, damping: 30, mass: 0.4 });
189
- const value = smooth ? smoothed : raw;
190
- if (reduce) {
191
- return /* @__PURE__ */ jsx3("div", { ref: innerRef, className, style, ...rest, children });
192
- }
193
- return /* @__PURE__ */ jsx3(
194
- motion3.div,
195
- {
196
- ref: innerRef,
197
- className: cn("will-change-transform", className),
198
- style: { ...style, [axis]: value },
199
- ...rest,
200
- children
201
- }
202
- );
203
- });
204
-
205
- // src/site/Marquee.tsx
206
- import * as React4 from "react";
207
- import {
208
- motion as motion4,
209
- useAnimationFrame,
210
- useMotionValue,
211
- useReducedMotion as useReducedMotion4
212
- } from "motion/react";
213
- import { jsx as jsx4, jsxs } from "react/jsx-runtime";
214
- var Marquee = React4.forwardRef(function Marquee2({ speed = 60, direction = "left", pauseOnHover = true, gap = "3rem", className, children, ...rest }, ref) {
215
- const reduce = useReducedMotion4();
216
- const x = useMotionValue(0);
217
- const setWidthRef = React4.useRef(0);
218
- const groupRef = React4.useRef(null);
219
- const [paused, setPaused] = React4.useState(false);
220
- React4.useEffect(() => {
221
- const el = groupRef.current;
222
- if (!el) return;
223
- const measure = () => {
224
- const gapPx = parseFloat(getComputedStyle(el.parentElement).columnGap || "0") || 0;
225
- setWidthRef.current = el.offsetWidth + gapPx;
226
- };
227
- measure();
228
- const ro = new ResizeObserver(measure);
229
- ro.observe(el);
230
- return () => ro.disconnect();
231
- }, []);
232
- useAnimationFrame((_, delta) => {
233
- if (reduce || paused || setWidthRef.current === 0) return;
234
- const dir = direction === "left" ? -1 : 1;
235
- const moveBy = speed * delta / 1e3;
236
- let next = x.get() + dir * moveBy;
237
- const w = setWidthRef.current;
238
- if (next <= -w) next += w;
239
- else if (next >= w) next -= w;
240
- x.set(next);
241
- });
242
- if (reduce) {
243
- return /* @__PURE__ */ jsx4(
244
- "div",
245
- {
246
- ref,
247
- className: cn("flex w-full items-center overflow-x-auto", className),
248
- style: { columnGap: gap },
249
- ...rest,
250
- children
251
- }
252
- );
253
- }
254
- return /* @__PURE__ */ jsx4(
255
- "div",
256
- {
257
- ref,
258
- className: cn("w-full overflow-hidden", className),
259
- onMouseEnter: pauseOnHover ? () => setPaused(true) : void 0,
260
- onMouseLeave: pauseOnHover ? () => setPaused(false) : void 0,
261
- ...rest,
262
- children: /* @__PURE__ */ jsxs(motion4.div, { className: "flex w-max flex-nowrap items-center", style: { x, columnGap: gap }, children: [
263
- /* @__PURE__ */ jsx4("div", { ref: groupRef, className: "flex flex-nowrap items-center", style: { columnGap: gap }, children }),
264
- /* @__PURE__ */ jsx4("div", { className: "flex flex-nowrap items-center", style: { columnGap: gap }, "aria-hidden": true, children })
265
- ] })
266
- }
267
- );
268
- });
269
-
270
- // src/site/Magnetic.tsx
271
- import * as React5 from "react";
272
- import { motion as motion5, useMotionValue as useMotionValue2, useReducedMotion as useReducedMotion5, useSpring as useSpring2 } from "motion/react";
273
- import { jsx as jsx5 } from "react/jsx-runtime";
274
- var Magnetic = React5.forwardRef(function Magnetic2({ strength = 0.35, max = 24, spring = "snappy", className, children, ...rest }, forwardedRef) {
275
- const reduce = useReducedMotion5();
276
- const innerRef = React5.useRef(null);
277
- React5.useImperativeHandle(forwardedRef, () => innerRef.current);
278
- const mvx = useMotionValue2(0);
279
- const mvy = useMotionValue2(0);
280
- const x = useSpring2(mvx, SPRING[spring]);
281
- const y = useSpring2(mvy, SPRING[spring]);
282
- const clamp = (v) => Math.max(-max, Math.min(max, v));
283
- function handleMove(e) {
284
- if (reduce) return;
285
- const el = innerRef.current;
286
- if (!el) return;
287
- const rect = el.getBoundingClientRect();
288
- const cx = rect.left + rect.width / 2;
289
- const cy = rect.top + rect.height / 2;
290
- mvx.set(clamp((e.clientX - cx) * strength));
291
- mvy.set(clamp((e.clientY - cy) * strength));
292
- }
293
- function reset() {
294
- mvx.set(0);
295
- mvy.set(0);
296
- }
297
- if (reduce) {
298
- return /* @__PURE__ */ jsx5("div", { ref: innerRef, className: cn("inline-block", className), ...rest, children });
299
- }
300
- return /* @__PURE__ */ jsx5(
301
- motion5.div,
302
- {
303
- ref: innerRef,
304
- className: cn("inline-block", className),
305
- style: { x, y },
306
- onMouseMove: handleMove,
307
- onMouseLeave: reset,
308
- ...rest,
309
- children
310
- }
311
- );
312
- });
2
+ DURATION,
3
+ EASE,
4
+ Magnetic,
5
+ Marquee,
6
+ Parallax,
7
+ Reveal,
8
+ SITE_AGENT_INSTRUCTIONS,
9
+ SPRING,
10
+ TextReveal
11
+ } from "./chunk-JJOO4PR5.esm.js";
12
+ import "./chunk-EDEKQYSU.esm.js";
313
13
  export {
314
14
  DURATION,
315
15
  EASE,
@@ -317,6 +17,7 @@ export {
317
17
  Marquee,
318
18
  Parallax,
319
19
  Reveal,
20
+ SITE_AGENT_INSTRUCTIONS,
320
21
  SPRING,
321
22
  TextReveal
322
23
  };
package/dist/studio.cjs CHANGED
@@ -980,22 +980,22 @@ var TIMBAL_V2_MODAL_SURFACE = cn(
980
980
  );
981
981
  var TIMBAL_V2_PRIMARY_GRADIENT = "bg-gradient-to-b from-primary-fill-from to-primary-fill-to";
982
982
  var TIMBAL_V2_SIZE_HEIGHT = {
983
- xs: "min-h-8 h-8",
984
- sm: "min-h-9 h-9",
985
- md: "min-h-10 h-10",
986
- lg: "min-h-11 h-11"
983
+ xs: "min-h-7 h-7",
984
+ sm: "min-h-8 h-8",
985
+ md: "min-h-9 h-9",
986
+ lg: "min-h-10 h-10"
987
987
  };
988
988
  var TIMBAL_V2_SIZE_ICON = {
989
- xs: "min-h-8 min-w-8 size-8",
989
+ xs: "min-h-7 min-w-7 size-7",
990
990
  sm: "min-h-8 min-w-8 size-8",
991
- md: "min-h-10 min-w-10 size-10",
992
- lg: "min-h-11 min-w-11 size-11"
991
+ md: "min-h-9 min-w-9 size-9",
992
+ lg: "min-h-10 min-w-10 size-10"
993
993
  };
994
994
  var TIMBAL_V2_SIZE_LABEL_PX = {
995
- xs: "px-3",
996
- sm: "px-4",
997
- md: "px-5",
998
- lg: "px-6"
995
+ xs: "px-2.5",
996
+ sm: "px-3",
997
+ md: "px-3.5",
998
+ lg: "px-4.5"
999
999
  };
1000
1000
  var TIMBAL_V2_FILL = {
1001
1001
  primary: [
@@ -1157,7 +1157,7 @@ function DialogContent({
1157
1157
  "data-slot": "dialog-content",
1158
1158
  className: cn(
1159
1159
  TIMBAL_V2_MODAL_SURFACE,
1160
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-[70] grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-xl p-6 duration-200 outline-none sm:max-w-lg",
1160
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-[70] grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-xl p-5 duration-200 outline-none sm:max-w-lg",
1161
1161
  className
1162
1162
  ),
1163
1163
  ...props,
@@ -1215,9 +1215,9 @@ function isBrandedVariant(variant) {
1215
1215
  return variant === "secondary" || variant === "primary" || variant === "chart";
1216
1216
  }
1217
1217
  var AVATAR_SIZE_CLASS = {
1218
- default: "size-8",
1219
- sm: "size-6",
1220
- lg: "size-10"
1218
+ default: "size-7",
1219
+ sm: "size-5",
1220
+ lg: "size-9"
1221
1221
  };
1222
1222
  function Avatar({
1223
1223
  className,
@@ -3332,16 +3332,16 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
3332
3332
  )
3333
3333
  },
3334
3334
  size: {
3335
- xs: "h-8 gap-1 rounded-md px-2.5 text-xs",
3336
- sm: "h-9 gap-1.5 rounded-lg px-3 text-sm",
3337
- md: "h-10 gap-1.5 rounded-lg px-3.5 text-sm",
3338
- lg: "h-11 gap-2 rounded-lg px-4 text-base",
3339
- xl: "h-12 gap-2 rounded-lg px-5 text-base",
3340
- default: "h-10 gap-1.5 rounded-lg px-3.5 text-sm",
3341
- icon: "h-10 w-10 rounded-lg",
3342
- "icon-xs": "h-8 w-8 rounded-md",
3343
- "icon-sm": "h-9 w-9 rounded-lg",
3344
- "icon-lg": "h-11 w-11 rounded-lg"
3335
+ xs: "h-7 gap-1 rounded-md px-2 text-xs",
3336
+ sm: "h-8 gap-1 rounded-md px-2.5 text-xs",
3337
+ md: "h-9 gap-1.5 rounded-lg px-3 text-sm",
3338
+ lg: "h-10 gap-1.5 rounded-lg px-3.5 text-sm",
3339
+ xl: "h-11 gap-2 rounded-lg px-4 text-base",
3340
+ default: "h-9 gap-1.5 rounded-lg px-3 text-sm",
3341
+ icon: "h-9 w-9 rounded-lg",
3342
+ "icon-xs": "h-7 w-7 rounded-md",
3343
+ "icon-sm": "h-8 w-8 rounded-md",
3344
+ "icon-lg": "h-10 w-10 rounded-lg"
3345
3345
  },
3346
3346
  shape: {
3347
3347
  pill: "rounded-full!",
@@ -3598,7 +3598,7 @@ var BadgeNode = ({ node }) => {
3598
3598
  "span",
3599
3599
  {
3600
3600
  className: cn(
3601
- "aui-ui-badge inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium",
3601
+ "aui-ui-badge inline-flex w-fit shrink-0 items-center rounded-full px-2 py-0.5 text-xs font-medium",
3602
3602
  BADGE_TONE[node.tone ?? "default"],
3603
3603
  node.className
3604
3604
  ),
@@ -5224,7 +5224,7 @@ var overlayListPanelClass = cn(
5224
5224
  overlaySurfaceClass,
5225
5225
  "overflow-hidden rounded-lg p-0 outline-hidden"
5226
5226
  );
5227
- var overlayItemClass = "relative flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground";
5227
+ var overlayItemClass = "relative flex cursor-default items-center gap-2 rounded-md px-2 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground";
5228
5228
 
5229
5229
  // src/chat/workforce-selector.tsx
5230
5230
  var import_jsx_runtime38 = require("react/jsx-runtime");
@@ -5349,8 +5349,8 @@ var SIDEBAR_MOBILE_PX = 272;
5349
5349
  var SIDEBAR_GAP_PX = 12;
5350
5350
  var SIDEBAR_CONTENT_GAP_PX = 8;
5351
5351
  var TOPBAR_GAP_PX = 8;
5352
- var TOPBAR_HEIGHT_PX = 48;
5353
- var PILL_HEIGHT_PX = 40;
5352
+ var TOPBAR_HEIGHT_PX = 44;
5353
+ var PILL_HEIGHT_PX = 36;
5354
5354
  var SIDEBAR_INSET_PX_EXPANDED = SIDEBAR_GAP_PX + SIDEBAR_WIDTH_PX + SIDEBAR_CONTENT_GAP_PX;
5355
5355
  var SIDEBAR_INSET_PX_COLLAPSED = SIDEBAR_GAP_PX + SIDEBAR_WIDTH_COLLAPSED_PX + SIDEBAR_CONTENT_GAP_PX;
5356
5356
  var px = (n) => `${n / 16}rem`;
@@ -6978,10 +6978,10 @@ var pillSegmentedTrackFlushClass = cn(
6978
6978
  "h-[var(--studio-chrome-pill-height)] items-center gap-0.5 overflow-visible p-0.5"
6979
6979
  );
6980
6980
  var pillSegmentedSegmentClass = cn(
6981
- "relative flex items-center gap-1.5 rounded-full px-4 py-1.5 text-xs font-normal transition-colors"
6981
+ "relative flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-normal transition-colors"
6982
6982
  );
6983
6983
  var pillSegmentedFlushSegmentClass = cn(
6984
- "relative box-border inline-flex h-9 min-h-9 items-center justify-center gap-1.5 rounded-full px-3.5 py-0",
6984
+ "relative box-border inline-flex h-8 min-h-8 items-center justify-center gap-1.5 rounded-full px-3 py-0",
6985
6985
  "text-sm font-normal leading-tight transition-colors"
6986
6986
  );
6987
6987
  var pillSegmentedActiveIndicatorClass = cn(
package/dist/studio.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- export { M as ModeToggle, a as ModeToggleProps, b as ModeToggleTheme, S as STUDIO_NAV_MODE, c as StudioModeSwitch, d as StudioModeSwitchProps, e as StudioNavMode, f as StudioSidebar, g as StudioSidebarProps, h as StudioWelcome, i as StudioWelcomeProps, T as TimbalChatShell, j as TimbalChatShellProps, k as TimbalMark, l as TimbalMarkProps, m as TimbalStudioShell, n as TimbalStudioShellProps } from './welcome-NXZlcihe.cjs';
1
+ export { M as ModeToggle, a as ModeToggleProps, b as ModeToggleTheme, S as STUDIO_NAV_MODE, c as StudioModeSwitch, d as StudioModeSwitchProps, e as StudioNavMode, f as StudioSidebar, g as StudioSidebarProps, h as StudioWelcome, i as StudioWelcomeProps, T as TimbalChatShell, j as TimbalChatShellProps, k as TimbalMark, l as TimbalMarkProps, m as TimbalStudioShell, n as TimbalStudioShellProps } from './welcome-B00oH5Io.cjs';
2
2
  import { FC } from 'react';
3
- import './chat-ClmzWzCX.cjs';
3
+ import './chat-DDsp-Vzz.cjs';
4
4
  import 'react/jsx-runtime';
5
5
  import '@assistant-ui/react';
6
6
  import '@timbal-ai/timbal-sdk';
package/dist/studio.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { M as ModeToggle, a as ModeToggleProps, b as ModeToggleTheme, S as STUDIO_NAV_MODE, c as StudioModeSwitch, d as StudioModeSwitchProps, e as StudioNavMode, f as StudioSidebar, g as StudioSidebarProps, h as StudioWelcome, i as StudioWelcomeProps, T as TimbalChatShell, j as TimbalChatShellProps, k as TimbalMark, l as TimbalMarkProps, m as TimbalStudioShell, n as TimbalStudioShellProps } from './welcome-DduQAC4K.js';
1
+ export { M as ModeToggle, a as ModeToggleProps, b as ModeToggleTheme, S as STUDIO_NAV_MODE, c as StudioModeSwitch, d as StudioModeSwitchProps, e as StudioNavMode, f as StudioSidebar, g as StudioSidebarProps, h as StudioWelcome, i as StudioWelcomeProps, T as TimbalChatShell, j as TimbalChatShellProps, k as TimbalMark, l as TimbalMarkProps, m as TimbalStudioShell, n as TimbalStudioShellProps } from './welcome-DU-4NTjZ.js';
2
2
  import { FC } from 'react';
3
- import './chat-ClmzWzCX.js';
3
+ import './chat-DDsp-Vzz.js';
4
4
  import 'react/jsx-runtime';
5
5
  import '@assistant-ui/react';
6
6
  import '@timbal-ai/timbal-sdk';
@@ -8,13 +8,13 @@ import {
8
8
  TimbalChatShell,
9
9
  TimbalMark,
10
10
  TimbalStudioShell
11
- } from "./chunk-WMKPT5BV.esm.js";
12
- import "./chunk-QIABF4KB.esm.js";
13
- import "./chunk-JYDJRGDE.esm.js";
14
- import "./chunk-IGHBLJV3.esm.js";
15
- import "./chunk-TZI3ID3C.esm.js";
16
- import "./chunk-ZNYAETFD.esm.js";
17
- import "./chunk-AZL2WANO.esm.js";
11
+ } from "./chunk-HSL36SJ4.esm.js";
12
+ import "./chunk-ELEY66OH.esm.js";
13
+ import "./chunk-TMP7RIA7.esm.js";
14
+ import "./chunk-WQIQW7EM.esm.js";
15
+ import "./chunk-24B4I4XC.esm.js";
16
+ import "./chunk-R4RQT2XQ.esm.js";
17
+ import "./chunk-MBS7XHV2.esm.js";
18
18
  import "./chunk-EDEKQYSU.esm.js";
19
19
  export {
20
20
  ModeToggle,
@@ -37,4 +37,4 @@ interface TimbalV2ButtonProps extends React.ComponentProps<"button"> {
37
37
  */
38
38
  declare const TimbalV2Button: React.ForwardRefExoticComponent<Omit<TimbalV2ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
39
39
 
40
- export { type TimbalV2ButtonProps as T, TimbalV2Button as a };
40
+ export { TimbalV2Button as T, type TimbalV2ButtonProps as a };
@@ -37,4 +37,4 @@ interface TimbalV2ButtonProps extends React.ComponentProps<"button"> {
37
37
  */
38
38
  declare const TimbalV2Button: React.ForwardRefExoticComponent<Omit<TimbalV2ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
39
39
 
40
- export { type TimbalV2ButtonProps as T, TimbalV2Button as a };
40
+ export { TimbalV2Button as T, type TimbalV2ButtonProps as a };