@timbal-ai/timbal-react 0.7.1 → 0.8.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.
- package/CHANGELOG.md +29 -0
- package/README.md +51 -5
- package/dist/app.cjs +1750 -1157
- package/dist/app.d.cts +2 -2
- package/dist/app.d.ts +2 -2
- package/dist/app.esm.js +27 -5
- package/dist/{button-CIKzUrJI.d.cts → button-ClSgD6OF.d.cts} +1 -1
- package/dist/{button-CIKzUrJI.d.ts → button-ClSgD6OF.d.ts} +1 -1
- package/dist/{chart-artifact-C2m891nx.d.cts → chart-artifact-DWkqIAK5.d.cts} +165 -1
- package/dist/{chart-artifact-CqqhdSR9.d.ts → chart-artifact-DwfRtQWL.d.ts} +165 -1
- package/dist/chat.esm.js +3 -3
- package/dist/{chunk-RY3LB3JN.esm.js → chunk-5ZKLPWVN.esm.js} +1 -1
- package/dist/{chunk-3WCG6ZRL.esm.js → chunk-CFU3YDTV.esm.js} +2 -2
- package/dist/{chunk-7U2N6XZA.esm.js → chunk-GBBLAM3G.esm.js} +954 -378
- package/dist/{chunk-TDIJHV4I.esm.js → chunk-OISVICYF.esm.js} +1 -1
- package/dist/chunk-P4SN7M67.esm.js +435 -0
- package/dist/{chunk-Z27GBSOT.esm.js → chunk-QIABF4KB.esm.js} +53 -51
- package/dist/{chunk-2XZ3S4OP.esm.js → chunk-QVAUCVQA.esm.js} +129 -90
- package/dist/{chunk-EQC5JEDZ.esm.js → chunk-VWHHKAHN.esm.js} +5 -5
- package/dist/index.cjs +1580 -493
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.esm.js +93 -7
- package/dist/studio.cjs +3 -1
- package/dist/studio.esm.js +6 -6
- package/dist/ui.cjs +507 -8
- package/dist/ui.d.cts +46 -3
- package/dist/ui.d.ts +46 -3
- package/dist/ui.esm.js +66 -2
- package/package.json +1 -1
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cn
|
|
3
|
+
} from "./chunk-QVAUCVQA.esm.js";
|
|
4
|
+
|
|
5
|
+
// src/ui/dropdown-menu.tsx
|
|
6
|
+
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
|
|
7
|
+
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
function DropdownMenu({
|
|
10
|
+
...props
|
|
11
|
+
}) {
|
|
12
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
13
|
+
}
|
|
14
|
+
function DropdownMenuTrigger({
|
|
15
|
+
...props
|
|
16
|
+
}) {
|
|
17
|
+
return /* @__PURE__ */ jsx(
|
|
18
|
+
DropdownMenuPrimitive.Trigger,
|
|
19
|
+
{
|
|
20
|
+
"data-slot": "dropdown-menu-trigger",
|
|
21
|
+
...props
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
function DropdownMenuGroup({
|
|
26
|
+
...props
|
|
27
|
+
}) {
|
|
28
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
29
|
+
}
|
|
30
|
+
function DropdownMenuContent({
|
|
31
|
+
className,
|
|
32
|
+
sideOffset = 4,
|
|
33
|
+
...props
|
|
34
|
+
}) {
|
|
35
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
36
|
+
DropdownMenuPrimitive.Content,
|
|
37
|
+
{
|
|
38
|
+
"data-slot": "dropdown-menu-content",
|
|
39
|
+
sideOffset,
|
|
40
|
+
className: cn(
|
|
41
|
+
"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[80] max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] origin-[var(--radix-dropdown-menu-content-transform-origin)] overflow-x-hidden overflow-y-auto rounded-lg border border-border p-1 shadow-card",
|
|
42
|
+
className
|
|
43
|
+
),
|
|
44
|
+
...props
|
|
45
|
+
}
|
|
46
|
+
) });
|
|
47
|
+
}
|
|
48
|
+
function DropdownMenuItem({
|
|
49
|
+
className,
|
|
50
|
+
inset,
|
|
51
|
+
variant = "default",
|
|
52
|
+
...props
|
|
53
|
+
}) {
|
|
54
|
+
return /* @__PURE__ */ jsx(
|
|
55
|
+
DropdownMenuPrimitive.Item,
|
|
56
|
+
{
|
|
57
|
+
"data-slot": "dropdown-menu-item",
|
|
58
|
+
"data-inset": inset,
|
|
59
|
+
"data-variant": variant,
|
|
60
|
+
className: cn(
|
|
61
|
+
"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 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
62
|
+
className
|
|
63
|
+
),
|
|
64
|
+
...props
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
function DropdownMenuCheckboxItem({
|
|
69
|
+
className,
|
|
70
|
+
children,
|
|
71
|
+
checked,
|
|
72
|
+
...props
|
|
73
|
+
}) {
|
|
74
|
+
return /* @__PURE__ */ jsxs(
|
|
75
|
+
DropdownMenuPrimitive.CheckboxItem,
|
|
76
|
+
{
|
|
77
|
+
"data-slot": "dropdown-menu-checkbox-item",
|
|
78
|
+
className: cn(
|
|
79
|
+
"relative flex cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-8 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",
|
|
80
|
+
className
|
|
81
|
+
),
|
|
82
|
+
checked,
|
|
83
|
+
...props,
|
|
84
|
+
children: [
|
|
85
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
|
|
86
|
+
children
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
function DropdownMenuRadioGroup({
|
|
92
|
+
...props
|
|
93
|
+
}) {
|
|
94
|
+
return /* @__PURE__ */ jsx(
|
|
95
|
+
DropdownMenuPrimitive.RadioGroup,
|
|
96
|
+
{
|
|
97
|
+
"data-slot": "dropdown-menu-radio-group",
|
|
98
|
+
...props
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
function DropdownMenuRadioItem({
|
|
103
|
+
className,
|
|
104
|
+
children,
|
|
105
|
+
...props
|
|
106
|
+
}) {
|
|
107
|
+
return /* @__PURE__ */ jsxs(
|
|
108
|
+
DropdownMenuPrimitive.RadioItem,
|
|
109
|
+
{
|
|
110
|
+
"data-slot": "dropdown-menu-radio-item",
|
|
111
|
+
className: cn(
|
|
112
|
+
"relative flex cursor-default items-center gap-2 rounded-md py-1.5 pr-2 pl-8 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",
|
|
113
|
+
className
|
|
114
|
+
),
|
|
115
|
+
...props,
|
|
116
|
+
children: [
|
|
117
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
118
|
+
children
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
function DropdownMenuLabel({
|
|
124
|
+
className,
|
|
125
|
+
inset,
|
|
126
|
+
...props
|
|
127
|
+
}) {
|
|
128
|
+
return /* @__PURE__ */ jsx(
|
|
129
|
+
DropdownMenuPrimitive.Label,
|
|
130
|
+
{
|
|
131
|
+
"data-slot": "dropdown-menu-label",
|
|
132
|
+
"data-inset": inset,
|
|
133
|
+
className: cn(
|
|
134
|
+
"px-2 py-1.5 text-xs font-medium text-muted-foreground data-[inset]:pl-8",
|
|
135
|
+
className
|
|
136
|
+
),
|
|
137
|
+
...props
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
function DropdownMenuSeparator({
|
|
142
|
+
className,
|
|
143
|
+
...props
|
|
144
|
+
}) {
|
|
145
|
+
return /* @__PURE__ */ jsx(
|
|
146
|
+
DropdownMenuPrimitive.Separator,
|
|
147
|
+
{
|
|
148
|
+
"data-slot": "dropdown-menu-separator",
|
|
149
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
150
|
+
...props
|
|
151
|
+
}
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
function DropdownMenuShortcut({
|
|
155
|
+
className,
|
|
156
|
+
...props
|
|
157
|
+
}) {
|
|
158
|
+
return /* @__PURE__ */ jsx(
|
|
159
|
+
"span",
|
|
160
|
+
{
|
|
161
|
+
"data-slot": "dropdown-menu-shortcut",
|
|
162
|
+
className: cn(
|
|
163
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
164
|
+
className
|
|
165
|
+
),
|
|
166
|
+
...props
|
|
167
|
+
}
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
function DropdownMenuSub({
|
|
171
|
+
...props
|
|
172
|
+
}) {
|
|
173
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
|
|
174
|
+
}
|
|
175
|
+
function DropdownMenuSubTrigger({
|
|
176
|
+
className,
|
|
177
|
+
inset,
|
|
178
|
+
children,
|
|
179
|
+
...props
|
|
180
|
+
}) {
|
|
181
|
+
return /* @__PURE__ */ jsxs(
|
|
182
|
+
DropdownMenuPrimitive.SubTrigger,
|
|
183
|
+
{
|
|
184
|
+
"data-slot": "dropdown-menu-sub-trigger",
|
|
185
|
+
"data-inset": inset,
|
|
186
|
+
className: cn(
|
|
187
|
+
"flex cursor-default items-center rounded-md px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[inset]:pl-8",
|
|
188
|
+
className
|
|
189
|
+
),
|
|
190
|
+
...props,
|
|
191
|
+
children: [
|
|
192
|
+
children,
|
|
193
|
+
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto size-4" })
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
function DropdownMenuSubContent({
|
|
199
|
+
className,
|
|
200
|
+
...props
|
|
201
|
+
}) {
|
|
202
|
+
return /* @__PURE__ */ jsx(
|
|
203
|
+
DropdownMenuPrimitive.SubContent,
|
|
204
|
+
{
|
|
205
|
+
"data-slot": "dropdown-menu-sub-content",
|
|
206
|
+
className: cn(
|
|
207
|
+
"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[80] min-w-[8rem] origin-[var(--radix-dropdown-menu-content-transform-origin)] overflow-hidden rounded-lg border border-border p-1 shadow-card",
|
|
208
|
+
className
|
|
209
|
+
),
|
|
210
|
+
...props
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// src/ui/popover.tsx
|
|
216
|
+
import { Popover as PopoverPrimitive } from "radix-ui";
|
|
217
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
218
|
+
function Popover({
|
|
219
|
+
...props
|
|
220
|
+
}) {
|
|
221
|
+
return /* @__PURE__ */ jsx2(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
|
|
222
|
+
}
|
|
223
|
+
function PopoverTrigger({
|
|
224
|
+
...props
|
|
225
|
+
}) {
|
|
226
|
+
return /* @__PURE__ */ jsx2(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
227
|
+
}
|
|
228
|
+
function PopoverAnchor({
|
|
229
|
+
...props
|
|
230
|
+
}) {
|
|
231
|
+
return /* @__PURE__ */ jsx2(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
|
|
232
|
+
}
|
|
233
|
+
function PopoverContent({
|
|
234
|
+
className,
|
|
235
|
+
align = "center",
|
|
236
|
+
sideOffset = 4,
|
|
237
|
+
...props
|
|
238
|
+
}) {
|
|
239
|
+
return /* @__PURE__ */ jsx2(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx2(
|
|
240
|
+
PopoverPrimitive.Content,
|
|
241
|
+
{
|
|
242
|
+
"data-slot": "popover-content",
|
|
243
|
+
align,
|
|
244
|
+
sideOffset,
|
|
245
|
+
className: cn(
|
|
246
|
+
"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[80] w-72 origin-[var(--radix-popover-content-transform-origin)] rounded-xl border border-border p-4 shadow-card outline-hidden",
|
|
247
|
+
className
|
|
248
|
+
),
|
|
249
|
+
...props
|
|
250
|
+
}
|
|
251
|
+
) });
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// src/ui/select.tsx
|
|
255
|
+
import { Select as SelectPrimitive } from "radix-ui";
|
|
256
|
+
import { CheckIcon as CheckIcon2, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
257
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
258
|
+
function Select({
|
|
259
|
+
...props
|
|
260
|
+
}) {
|
|
261
|
+
return /* @__PURE__ */ jsx3(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
262
|
+
}
|
|
263
|
+
function SelectGroup({
|
|
264
|
+
...props
|
|
265
|
+
}) {
|
|
266
|
+
return /* @__PURE__ */ jsx3(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
|
|
267
|
+
}
|
|
268
|
+
function SelectValue({
|
|
269
|
+
...props
|
|
270
|
+
}) {
|
|
271
|
+
return /* @__PURE__ */ jsx3(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
272
|
+
}
|
|
273
|
+
function SelectTrigger({
|
|
274
|
+
className,
|
|
275
|
+
size = "default",
|
|
276
|
+
children,
|
|
277
|
+
...props
|
|
278
|
+
}) {
|
|
279
|
+
return /* @__PURE__ */ jsxs2(
|
|
280
|
+
SelectPrimitive.Trigger,
|
|
281
|
+
{
|
|
282
|
+
"data-slot": "select-trigger",
|
|
283
|
+
"data-size": size,
|
|
284
|
+
className: cn(
|
|
285
|
+
"flex w-fit items-center justify-between gap-2 rounded-lg border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/40 disabled:cursor-not-allowed disabled:opacity-50 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *: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",
|
|
286
|
+
className
|
|
287
|
+
),
|
|
288
|
+
...props,
|
|
289
|
+
children: [
|
|
290
|
+
children,
|
|
291
|
+
/* @__PURE__ */ jsx3(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx3(ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
292
|
+
]
|
|
293
|
+
}
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
function SelectContent({
|
|
297
|
+
className,
|
|
298
|
+
children,
|
|
299
|
+
position = "popper",
|
|
300
|
+
...props
|
|
301
|
+
}) {
|
|
302
|
+
return /* @__PURE__ */ jsx3(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs2(
|
|
303
|
+
SelectPrimitive.Content,
|
|
304
|
+
{
|
|
305
|
+
"data-slot": "select-content",
|
|
306
|
+
className: cn(
|
|
307
|
+
"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-[80] max-h-[var(--radix-select-content-available-height)] min-w-[8rem] origin-[var(--radix-select-content-transform-origin)] overflow-x-hidden overflow-y-auto rounded-lg border border-border shadow-card",
|
|
308
|
+
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",
|
|
309
|
+
className
|
|
310
|
+
),
|
|
311
|
+
position,
|
|
312
|
+
...props,
|
|
313
|
+
children: [
|
|
314
|
+
/* @__PURE__ */ jsx3(SelectScrollUpButton, {}),
|
|
315
|
+
/* @__PURE__ */ jsx3(
|
|
316
|
+
SelectPrimitive.Viewport,
|
|
317
|
+
{
|
|
318
|
+
className: cn(
|
|
319
|
+
"p-1",
|
|
320
|
+
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
|
|
321
|
+
),
|
|
322
|
+
children
|
|
323
|
+
}
|
|
324
|
+
),
|
|
325
|
+
/* @__PURE__ */ jsx3(SelectScrollDownButton, {})
|
|
326
|
+
]
|
|
327
|
+
}
|
|
328
|
+
) });
|
|
329
|
+
}
|
|
330
|
+
function SelectLabel({
|
|
331
|
+
className,
|
|
332
|
+
...props
|
|
333
|
+
}) {
|
|
334
|
+
return /* @__PURE__ */ jsx3(
|
|
335
|
+
SelectPrimitive.Label,
|
|
336
|
+
{
|
|
337
|
+
"data-slot": "select-label",
|
|
338
|
+
className: cn("px-2 py-1.5 text-xs font-medium text-muted-foreground", className),
|
|
339
|
+
...props
|
|
340
|
+
}
|
|
341
|
+
);
|
|
342
|
+
}
|
|
343
|
+
function SelectItem({
|
|
344
|
+
className,
|
|
345
|
+
children,
|
|
346
|
+
...props
|
|
347
|
+
}) {
|
|
348
|
+
return /* @__PURE__ */ jsxs2(
|
|
349
|
+
SelectPrimitive.Item,
|
|
350
|
+
{
|
|
351
|
+
"data-slot": "select-item",
|
|
352
|
+
className: cn(
|
|
353
|
+
"relative flex w-full cursor-default items-center gap-2 rounded-md py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
354
|
+
className
|
|
355
|
+
),
|
|
356
|
+
...props,
|
|
357
|
+
children: [
|
|
358
|
+
/* @__PURE__ */ jsx3("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx3(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx3(CheckIcon2, { className: "size-4" }) }) }),
|
|
359
|
+
/* @__PURE__ */ jsx3(SelectPrimitive.ItemText, { children })
|
|
360
|
+
]
|
|
361
|
+
}
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
function SelectSeparator({
|
|
365
|
+
className,
|
|
366
|
+
...props
|
|
367
|
+
}) {
|
|
368
|
+
return /* @__PURE__ */ jsx3(
|
|
369
|
+
SelectPrimitive.Separator,
|
|
370
|
+
{
|
|
371
|
+
"data-slot": "select-separator",
|
|
372
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
373
|
+
...props
|
|
374
|
+
}
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
function SelectScrollUpButton({
|
|
378
|
+
className,
|
|
379
|
+
...props
|
|
380
|
+
}) {
|
|
381
|
+
return /* @__PURE__ */ jsx3(
|
|
382
|
+
SelectPrimitive.ScrollUpButton,
|
|
383
|
+
{
|
|
384
|
+
"data-slot": "select-scroll-up-button",
|
|
385
|
+
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
386
|
+
...props,
|
|
387
|
+
children: /* @__PURE__ */ jsx3(ChevronUpIcon, { className: "size-4" })
|
|
388
|
+
}
|
|
389
|
+
);
|
|
390
|
+
}
|
|
391
|
+
function SelectScrollDownButton({
|
|
392
|
+
className,
|
|
393
|
+
...props
|
|
394
|
+
}) {
|
|
395
|
+
return /* @__PURE__ */ jsx3(
|
|
396
|
+
SelectPrimitive.ScrollDownButton,
|
|
397
|
+
{
|
|
398
|
+
"data-slot": "select-scroll-down-button",
|
|
399
|
+
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
400
|
+
...props,
|
|
401
|
+
children: /* @__PURE__ */ jsx3(ChevronDownIcon, { className: "size-4" })
|
|
402
|
+
}
|
|
403
|
+
);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
export {
|
|
407
|
+
DropdownMenu,
|
|
408
|
+
DropdownMenuTrigger,
|
|
409
|
+
DropdownMenuGroup,
|
|
410
|
+
DropdownMenuContent,
|
|
411
|
+
DropdownMenuItem,
|
|
412
|
+
DropdownMenuCheckboxItem,
|
|
413
|
+
DropdownMenuRadioGroup,
|
|
414
|
+
DropdownMenuRadioItem,
|
|
415
|
+
DropdownMenuLabel,
|
|
416
|
+
DropdownMenuSeparator,
|
|
417
|
+
DropdownMenuShortcut,
|
|
418
|
+
DropdownMenuSub,
|
|
419
|
+
DropdownMenuSubTrigger,
|
|
420
|
+
DropdownMenuSubContent,
|
|
421
|
+
Popover,
|
|
422
|
+
PopoverTrigger,
|
|
423
|
+
PopoverAnchor,
|
|
424
|
+
PopoverContent,
|
|
425
|
+
Select,
|
|
426
|
+
SelectGroup,
|
|
427
|
+
SelectValue,
|
|
428
|
+
SelectTrigger,
|
|
429
|
+
SelectContent,
|
|
430
|
+
SelectLabel,
|
|
431
|
+
SelectItem,
|
|
432
|
+
SelectSeparator,
|
|
433
|
+
SelectScrollUpButton,
|
|
434
|
+
SelectScrollDownButton
|
|
435
|
+
};
|
|
@@ -1,3 +1,48 @@
|
|
|
1
|
+
// src/design/tokens.ts
|
|
2
|
+
var SIDEBAR_WIDTH_PX = 224;
|
|
3
|
+
var SIDEBAR_WIDTH_COLLAPSED_PX = 52;
|
|
4
|
+
var SIDEBAR_MOBILE_PX = 272;
|
|
5
|
+
var SIDEBAR_GAP_PX = 12;
|
|
6
|
+
var SIDEBAR_CONTENT_GAP_PX = 8;
|
|
7
|
+
var TOPBAR_GAP_PX = 8;
|
|
8
|
+
var TOPBAR_HEIGHT_PX = 48;
|
|
9
|
+
var PILL_HEIGHT_PX = 40;
|
|
10
|
+
var SIDEBAR_INSET_PX_EXPANDED = SIDEBAR_GAP_PX + SIDEBAR_WIDTH_PX + SIDEBAR_CONTENT_GAP_PX;
|
|
11
|
+
var SIDEBAR_INSET_PX_COLLAPSED = SIDEBAR_GAP_PX + SIDEBAR_WIDTH_COLLAPSED_PX + SIDEBAR_CONTENT_GAP_PX;
|
|
12
|
+
var px = (n) => `${n / 16}rem`;
|
|
13
|
+
var SIDEBAR_WIDTH = px(SIDEBAR_WIDTH_PX);
|
|
14
|
+
var SIDEBAR_WIDTH_COLLAPSED = px(SIDEBAR_WIDTH_COLLAPSED_PX);
|
|
15
|
+
var SIDEBAR_GAP = px(SIDEBAR_GAP_PX);
|
|
16
|
+
var SIDEBAR_CONTENT_GAP = px(SIDEBAR_CONTENT_GAP_PX);
|
|
17
|
+
var TOPBAR_GAP = px(TOPBAR_GAP_PX);
|
|
18
|
+
var TOPBAR_HEIGHT = px(TOPBAR_HEIGHT_PX);
|
|
19
|
+
var PILL_HEIGHT = px(PILL_HEIGHT_PX);
|
|
20
|
+
var SIDEBAR_INSET_EXPANDED = px(SIDEBAR_INSET_PX_EXPANDED);
|
|
21
|
+
var SIDEBAR_INSET_COLLAPSED = px(SIDEBAR_INSET_PX_COLLAPSED);
|
|
22
|
+
var studioChromeShellStyle = {
|
|
23
|
+
"--studio-topbar-gap": TOPBAR_GAP,
|
|
24
|
+
"--studio-topbar-height": TOPBAR_HEIGHT,
|
|
25
|
+
"--studio-chrome-pill-height": PILL_HEIGHT,
|
|
26
|
+
"--studio-inset-top": `calc(${TOPBAR_GAP} + ${TOPBAR_HEIGHT})`,
|
|
27
|
+
"--studio-sidebar-gap": SIDEBAR_GAP,
|
|
28
|
+
"--studio-sidebar-width": SIDEBAR_WIDTH,
|
|
29
|
+
"--studio-sidebar-width-collapsed": SIDEBAR_WIDTH_COLLAPSED,
|
|
30
|
+
"--studio-sidebar-content-gap": SIDEBAR_CONTENT_GAP,
|
|
31
|
+
"--studio-inset-left": SIDEBAR_INSET_EXPANDED,
|
|
32
|
+
"--studio-inset-left-collapsed": SIDEBAR_INSET_COLLAPSED
|
|
33
|
+
};
|
|
34
|
+
var STORAGE_KEYS = {
|
|
35
|
+
sidebarCollapsed: "timbal-studio-sidebar-collapsed",
|
|
36
|
+
/** Used by `ModeToggle` in uncontrolled mode (`localStorage`). */
|
|
37
|
+
theme: "timbal-theme",
|
|
38
|
+
/** Used by the theme preset picker to remember the selected brand preset. */
|
|
39
|
+
themePreset: "timbal-theme-preset"
|
|
40
|
+
};
|
|
41
|
+
var DOM_IDS = {
|
|
42
|
+
sidebarRuntimeAnchor: "timbal-studio-sidebar-runtime-anchor",
|
|
43
|
+
topbarBrandAnchor: "timbal-studio-topbar-brand-anchor"
|
|
44
|
+
};
|
|
45
|
+
|
|
1
46
|
// src/design/sidebar-motion.ts
|
|
2
47
|
var STUDIO_SIDEBAR_EASE_ENTER = [0, 0, 0.2, 1];
|
|
3
48
|
var STUDIO_SIDEBAR_EASE_EXIT = [0.4, 0, 1, 1];
|
|
@@ -66,49 +111,6 @@ function studioSidebarBackdropTransition(reduced) {
|
|
|
66
111
|
return { duration: 0.16, ease: STUDIO_SIDEBAR_EASE_EXIT };
|
|
67
112
|
}
|
|
68
113
|
|
|
69
|
-
// src/design/tokens.ts
|
|
70
|
-
var SIDEBAR_WIDTH_PX = 224;
|
|
71
|
-
var SIDEBAR_WIDTH_COLLAPSED_PX = 52;
|
|
72
|
-
var SIDEBAR_MOBILE_PX = 272;
|
|
73
|
-
var SIDEBAR_GAP_PX = 12;
|
|
74
|
-
var SIDEBAR_CONTENT_GAP_PX = 8;
|
|
75
|
-
var TOPBAR_GAP_PX = 8;
|
|
76
|
-
var TOPBAR_HEIGHT_PX = 48;
|
|
77
|
-
var PILL_HEIGHT_PX = 40;
|
|
78
|
-
var SIDEBAR_INSET_PX_EXPANDED = SIDEBAR_GAP_PX + SIDEBAR_WIDTH_PX + SIDEBAR_CONTENT_GAP_PX;
|
|
79
|
-
var SIDEBAR_INSET_PX_COLLAPSED = SIDEBAR_GAP_PX + SIDEBAR_WIDTH_COLLAPSED_PX + SIDEBAR_CONTENT_GAP_PX;
|
|
80
|
-
var px = (n) => `${n / 16}rem`;
|
|
81
|
-
var SIDEBAR_WIDTH = px(SIDEBAR_WIDTH_PX);
|
|
82
|
-
var SIDEBAR_WIDTH_COLLAPSED = px(SIDEBAR_WIDTH_COLLAPSED_PX);
|
|
83
|
-
var SIDEBAR_GAP = px(SIDEBAR_GAP_PX);
|
|
84
|
-
var SIDEBAR_CONTENT_GAP = px(SIDEBAR_CONTENT_GAP_PX);
|
|
85
|
-
var TOPBAR_GAP = px(TOPBAR_GAP_PX);
|
|
86
|
-
var TOPBAR_HEIGHT = px(TOPBAR_HEIGHT_PX);
|
|
87
|
-
var PILL_HEIGHT = px(PILL_HEIGHT_PX);
|
|
88
|
-
var SIDEBAR_INSET_EXPANDED = px(SIDEBAR_INSET_PX_EXPANDED);
|
|
89
|
-
var SIDEBAR_INSET_COLLAPSED = px(SIDEBAR_INSET_PX_COLLAPSED);
|
|
90
|
-
var studioChromeShellStyle = {
|
|
91
|
-
"--studio-topbar-gap": TOPBAR_GAP,
|
|
92
|
-
"--studio-topbar-height": TOPBAR_HEIGHT,
|
|
93
|
-
"--studio-chrome-pill-height": PILL_HEIGHT,
|
|
94
|
-
"--studio-inset-top": `calc(${TOPBAR_GAP} + ${TOPBAR_HEIGHT})`,
|
|
95
|
-
"--studio-sidebar-gap": SIDEBAR_GAP,
|
|
96
|
-
"--studio-sidebar-width": SIDEBAR_WIDTH,
|
|
97
|
-
"--studio-sidebar-width-collapsed": SIDEBAR_WIDTH_COLLAPSED,
|
|
98
|
-
"--studio-sidebar-content-gap": SIDEBAR_CONTENT_GAP,
|
|
99
|
-
"--studio-inset-left": SIDEBAR_INSET_EXPANDED,
|
|
100
|
-
"--studio-inset-left-collapsed": SIDEBAR_INSET_COLLAPSED
|
|
101
|
-
};
|
|
102
|
-
var STORAGE_KEYS = {
|
|
103
|
-
sidebarCollapsed: "timbal-studio-sidebar-collapsed",
|
|
104
|
-
/** Used by `ModeToggle` in uncontrolled mode (`localStorage`). */
|
|
105
|
-
theme: "timbal-theme"
|
|
106
|
-
};
|
|
107
|
-
var DOM_IDS = {
|
|
108
|
-
sidebarRuntimeAnchor: "timbal-studio-sidebar-runtime-anchor",
|
|
109
|
-
topbarBrandAnchor: "timbal-studio-topbar-brand-anchor"
|
|
110
|
-
};
|
|
111
|
-
|
|
112
114
|
// src/layout/shell-inset-context.tsx
|
|
113
115
|
import { createContext, useContext } from "react";
|
|
114
116
|
var ShellInsetContext = createContext(null);
|
|
@@ -118,6 +120,14 @@ function useShellInsetReporter() {
|
|
|
118
120
|
}
|
|
119
121
|
|
|
120
122
|
export {
|
|
123
|
+
SIDEBAR_WIDTH_PX,
|
|
124
|
+
SIDEBAR_WIDTH_COLLAPSED_PX,
|
|
125
|
+
SIDEBAR_MOBILE_PX,
|
|
126
|
+
SIDEBAR_INSET_PX_EXPANDED,
|
|
127
|
+
SIDEBAR_INSET_PX_COLLAPSED,
|
|
128
|
+
studioChromeShellStyle,
|
|
129
|
+
STORAGE_KEYS,
|
|
130
|
+
DOM_IDS,
|
|
121
131
|
STUDIO_SIDEBAR_ENTRIES_OUT_S,
|
|
122
132
|
STUDIO_SIDEBAR_WIDTH_S,
|
|
123
133
|
STUDIO_SIDEBAR_EXPAND_REVEAL_FRAC,
|
|
@@ -127,14 +137,6 @@ export {
|
|
|
127
137
|
studioSidebarWidthTransition,
|
|
128
138
|
studioSidebarDrawerTransition,
|
|
129
139
|
studioSidebarBackdropTransition,
|
|
130
|
-
SIDEBAR_WIDTH_PX,
|
|
131
|
-
SIDEBAR_WIDTH_COLLAPSED_PX,
|
|
132
|
-
SIDEBAR_MOBILE_PX,
|
|
133
|
-
SIDEBAR_INSET_PX_EXPANDED,
|
|
134
|
-
SIDEBAR_INSET_PX_COLLAPSED,
|
|
135
|
-
studioChromeShellStyle,
|
|
136
|
-
STORAGE_KEYS,
|
|
137
|
-
DOM_IDS,
|
|
138
140
|
ShellInsetProvider,
|
|
139
141
|
useShellInsetReporter
|
|
140
142
|
};
|