@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.
- package/README.md +128 -4
- package/dist/app.cjs +5311 -0
- package/dist/app.d.cts +29 -0
- package/dist/app.d.ts +29 -0
- package/dist/app.esm.js +81 -0
- package/dist/chart-artifact-C71dk4xI.d.ts +329 -0
- package/dist/chart-artifact-CPEpOmtV.d.cts +329 -0
- package/dist/chat-CWtQWDtJ.d.cts +650 -0
- package/dist/chat-CWtQWDtJ.d.ts +650 -0
- package/dist/chat.cjs +4162 -0
- package/dist/chat.d.cts +13 -0
- package/dist/chat.d.ts +13 -0
- package/dist/chat.esm.js +51 -0
- package/dist/chunk-4TCJQSIX.esm.js +565 -0
- package/dist/chunk-IYENDIRY.esm.js +119 -0
- package/dist/chunk-KC5QLVUG.esm.js +22 -0
- package/dist/chunk-M4V6Q6XO.esm.js +1082 -0
- package/dist/chunk-OFHLFNJH.esm.js +138 -0
- package/dist/chunk-OVHR7J3J.esm.js +1574 -0
- package/dist/chunk-WLTW56MC.esm.js +66 -0
- package/dist/chunk-YJQLLFKP.esm.js +3672 -0
- package/dist/index.cjs +1823 -359
- package/dist/index.d.cts +15 -931
- package/dist/index.d.ts +15 -931
- package/dist/index.esm.js +187 -5578
- package/dist/layout-B9VayJhZ.d.cts +75 -0
- package/dist/layout-CQWngNQ7.d.ts +75 -0
- package/dist/studio.cjs +5734 -0
- package/dist/studio.d.cts +15 -0
- package/dist/studio.d.ts +15 -0
- package/dist/studio.esm.js +27 -0
- package/dist/styles.css +52 -2
- package/dist/timbal-v2-button-F4-z7m33.d.cts +40 -0
- package/dist/timbal-v2-button-F4-z7m33.d.ts +40 -0
- package/dist/ui.cjs +720 -0
- package/dist/ui.d.cts +74 -0
- package/dist/ui.d.ts +74 -0
- package/dist/ui.esm.js +44 -0
- package/dist/welcome--80i_O0p.d.cts +190 -0
- package/dist/welcome-BOizSp5h.d.ts +190 -0
- package/package.json +35 -3
- package/scripts/dev-linked.mjs +66 -0
- package/vite/local-dev.d.ts +4 -0
- 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
|
+
};
|