@timbal-ai/timbal-react 0.5.4 → 0.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 (44) hide show
  1. package/README.md +128 -4
  2. package/dist/app.cjs +5311 -0
  3. package/dist/app.d.cts +29 -0
  4. package/dist/app.d.ts +29 -0
  5. package/dist/app.esm.js +81 -0
  6. package/dist/chart-artifact-C71dk4xI.d.ts +329 -0
  7. package/dist/chart-artifact-CPEpOmtV.d.cts +329 -0
  8. package/dist/chat-CWtQWDtJ.d.cts +650 -0
  9. package/dist/chat-CWtQWDtJ.d.ts +650 -0
  10. package/dist/chat.cjs +4162 -0
  11. package/dist/chat.d.cts +13 -0
  12. package/dist/chat.d.ts +13 -0
  13. package/dist/chat.esm.js +51 -0
  14. package/dist/chunk-4TCJQSIX.esm.js +565 -0
  15. package/dist/chunk-IYENDIRY.esm.js +119 -0
  16. package/dist/chunk-KC5QLVUG.esm.js +22 -0
  17. package/dist/chunk-M4V6Q6XO.esm.js +1082 -0
  18. package/dist/chunk-OFHLFNJH.esm.js +138 -0
  19. package/dist/chunk-OVHR7J3J.esm.js +1574 -0
  20. package/dist/chunk-WLTW56MC.esm.js +66 -0
  21. package/dist/chunk-YJQLLFKP.esm.js +3672 -0
  22. package/dist/index.cjs +1823 -359
  23. package/dist/index.d.cts +15 -931
  24. package/dist/index.d.ts +15 -931
  25. package/dist/index.esm.js +187 -5578
  26. package/dist/layout-B9VayJhZ.d.cts +75 -0
  27. package/dist/layout-CQWngNQ7.d.ts +75 -0
  28. package/dist/studio.cjs +5734 -0
  29. package/dist/studio.d.cts +15 -0
  30. package/dist/studio.d.ts +15 -0
  31. package/dist/studio.esm.js +27 -0
  32. package/dist/styles.css +52 -2
  33. package/dist/timbal-v2-button-F4-z7m33.d.cts +40 -0
  34. package/dist/timbal-v2-button-F4-z7m33.d.ts +40 -0
  35. package/dist/ui.cjs +720 -0
  36. package/dist/ui.d.cts +74 -0
  37. package/dist/ui.d.ts +74 -0
  38. package/dist/ui.esm.js +44 -0
  39. package/dist/welcome--80i_O0p.d.cts +190 -0
  40. package/dist/welcome-BOizSp5h.d.ts +190 -0
  41. package/package.json +35 -3
  42. package/scripts/dev-linked.mjs +66 -0
  43. package/vite/local-dev.d.ts +4 -0
  44. package/vite/local-dev.mjs +71 -0
@@ -0,0 +1,119 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-4TCJQSIX.esm.js";
4
+
5
+ // src/ui/pill-segmented-tabs.tsx
6
+ import {
7
+ memo,
8
+ useCallback,
9
+ useId
10
+ } from "react";
11
+ import { motion, useReducedMotion } from "motion/react";
12
+
13
+ // src/design/pill-segmented-classes.ts
14
+ var pillSegmentedTrackBase = "inline-flex w-fit max-w-max shrink-0 self-start items-center rounded-full";
15
+ var pillSegmentedTrackSurface = cn(
16
+ "bg-pill-segmented-track border border-[var(--pill-segmented-track-border)]",
17
+ "shadow-[var(--pill-segmented-track-shadow)]"
18
+ );
19
+ var pillSegmentedTrackClass = cn(
20
+ pillSegmentedTrackBase,
21
+ pillSegmentedTrackSurface,
22
+ "gap-1 p-1"
23
+ );
24
+ var pillSegmentedTrackFlushClass = cn(
25
+ pillSegmentedTrackBase,
26
+ pillSegmentedTrackSurface,
27
+ "h-[var(--studio-chrome-pill-height)] items-center gap-0.5 overflow-visible p-0.5"
28
+ );
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"
31
+ );
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",
34
+ "text-sm font-normal leading-tight transition-colors"
35
+ );
36
+ var pillSegmentedActiveIndicatorClass = cn(
37
+ "absolute inset-0 rounded-full",
38
+ "border border-[var(--pill-segmented-indicator-border)]",
39
+ "bg-gradient-to-b from-[var(--pill-segmented-indicator-from)] to-[var(--pill-segmented-indicator-to)]",
40
+ "shadow-[var(--pill-segmented-indicator-shadow)]"
41
+ );
42
+
43
+ // src/ui/pill-segmented-tabs.tsx
44
+ import { jsx, jsxs } from "react/jsx-runtime";
45
+ var PillTab = ({
46
+ tabKey,
47
+ label,
48
+ isActive,
49
+ disabled,
50
+ onSelect,
51
+ layoutId,
52
+ segmentClassName,
53
+ animateIndicator
54
+ }) => {
55
+ const handlePress = useCallback(() => {
56
+ if (!disabled) onSelect(tabKey);
57
+ }, [disabled, onSelect, tabKey]);
58
+ return /* @__PURE__ */ jsxs(
59
+ "button",
60
+ {
61
+ type: "button",
62
+ onClick: handlePress,
63
+ disabled,
64
+ "aria-pressed": isActive,
65
+ className: cn(
66
+ segmentClassName,
67
+ disabled && "cursor-not-allowed opacity-50",
68
+ !disabled && (isActive ? "text-foreground" : "text-muted-foreground hover:text-foreground")
69
+ ),
70
+ children: [
71
+ isActive && animateIndicator ? /* @__PURE__ */ jsx(
72
+ motion.div,
73
+ {
74
+ layoutId,
75
+ className: pillSegmentedActiveIndicatorClass,
76
+ transition: { type: "spring", duration: 0.3, bounce: 0.15 }
77
+ }
78
+ ) : isActive ? /* @__PURE__ */ jsx("div", { className: pillSegmentedActiveIndicatorClass, "aria-hidden": true }) : null,
79
+ /* @__PURE__ */ jsx("span", { className: "relative z-10 whitespace-nowrap", children: label })
80
+ ]
81
+ }
82
+ );
83
+ };
84
+ var PillSegmentedTabs = ({
85
+ value,
86
+ onChange,
87
+ tabs,
88
+ className,
89
+ trackVariant = "default",
90
+ layoutId: layoutIdProp,
91
+ "aria-label": ariaLabel
92
+ }) => {
93
+ const reactId = useId();
94
+ const layoutId = layoutIdProp ?? `pill-segmented-${reactId.replace(/:/g, "")}`;
95
+ const reducedMotion = useReducedMotion();
96
+ const isFlush = trackVariant === "flush";
97
+ const trackClass = isFlush ? pillSegmentedTrackFlushClass : pillSegmentedTrackClass;
98
+ const segmentClassName = isFlush ? pillSegmentedFlushSegmentClass : pillSegmentedSegmentClass;
99
+ return /* @__PURE__ */ jsx("div", { role: "group", "aria-label": ariaLabel, className: cn(trackClass, className), children: tabs.map((tab) => /* @__PURE__ */ jsx(
100
+ PillTab,
101
+ {
102
+ tabKey: tab.key,
103
+ label: tab.label,
104
+ disabled: tab.disabled,
105
+ isActive: value === tab.key,
106
+ onSelect: onChange,
107
+ layoutId,
108
+ segmentClassName,
109
+ animateIndicator: !reducedMotion
110
+ },
111
+ tab.key
112
+ )) });
113
+ };
114
+ var MemoPillSegmentedTabs = memo(PillSegmentedTabs);
115
+
116
+ export {
117
+ PillSegmentedTabs,
118
+ MemoPillSegmentedTabs
119
+ };
@@ -0,0 +1,22 @@
1
+ // src/chat/layout.ts
2
+ var THREAD_DEFAULT_MAX_WIDTH = "44rem";
3
+ var threadMessageColumnClass = "mx-auto w-full max-w-(--thread-max-width)";
4
+ var assistantMessageRootClass = [
5
+ "aui-assistant-message-root relative",
6
+ threadMessageColumnClass,
7
+ "py-3 duration-150"
8
+ ].join(" ");
9
+ var assistantMessageContentClass = "wrap-break-word px-2 text-foreground leading-relaxed";
10
+ var userMessageRootClass = [
11
+ "aui-user-message-root flex flex-col items-end gap-2",
12
+ threadMessageColumnClass,
13
+ "px-2 py-3"
14
+ ].join(" ");
15
+
16
+ export {
17
+ THREAD_DEFAULT_MAX_WIDTH,
18
+ threadMessageColumnClass,
19
+ assistantMessageRootClass,
20
+ assistantMessageContentClass,
21
+ userMessageRootClass
22
+ };