@tangle-network/sandbox-ui 0.10.1 → 0.10.3
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/dist/{chunk-2XCOGNZP.js → chunk-7LBHRASD.js} +124 -74
- package/dist/{chunk-A5ALUT2B.js → chunk-HEXQVHXJ.js} +41 -34
- package/dist/dashboard.d.ts +1 -1
- package/dist/dashboard.js +3 -1
- package/dist/globals.css +16 -23
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -2
- package/dist/pages.d.ts +38 -2
- package/dist/pages.js +259 -183
- package/dist/styles.css +16 -23
- package/dist/{variant-list-BNwUOSgz.d.ts → variant-list-DHP2OXFE.d.ts} +21 -5
- package/dist/workspace.d.ts +22 -18
- package/dist/workspace.js +1 -1
- package/package.json +1 -1
|
@@ -33,6 +33,7 @@ var SIDEBAR_MODE_KEY = "sandbox-sidebar-mode";
|
|
|
33
33
|
var SIDEBAR_RAIL_WIDTH = 64;
|
|
34
34
|
var SIDEBAR_PANEL_WIDTH = 260;
|
|
35
35
|
var SIDEBAR_TOTAL_WIDTH = SIDEBAR_RAIL_WIDTH + SIDEBAR_PANEL_WIDTH;
|
|
36
|
+
var SIDEBAR_MOBILE_WIDTH = 256;
|
|
36
37
|
var SidebarContext = React.createContext(null);
|
|
37
38
|
function readStorage(key, fallback) {
|
|
38
39
|
if (typeof window === "undefined") return fallback;
|
|
@@ -166,8 +167,18 @@ function Sidebar({ children, className, style }) {
|
|
|
166
167
|
}
|
|
167
168
|
);
|
|
168
169
|
}
|
|
169
|
-
function SidebarRail({ children, className }) {
|
|
170
|
-
return /* @__PURE__ */ jsx2(
|
|
170
|
+
function SidebarRail({ children, className, wide = false }) {
|
|
171
|
+
return /* @__PURE__ */ jsx2(
|
|
172
|
+
"div",
|
|
173
|
+
{
|
|
174
|
+
className: cn(
|
|
175
|
+
"flex flex-col h-full shrink-0 bg-transparent",
|
|
176
|
+
wide ? "w-full" : "w-16",
|
|
177
|
+
className
|
|
178
|
+
),
|
|
179
|
+
children
|
|
180
|
+
}
|
|
181
|
+
);
|
|
171
182
|
}
|
|
172
183
|
function SidebarRailHeader({ children, className }) {
|
|
173
184
|
return /* @__PURE__ */ jsx2("div", { className: cn("flex h-14 items-center justify-center border-b border-border", className), children });
|
|
@@ -181,7 +192,7 @@ function SidebarRailFooter({ children, className }) {
|
|
|
181
192
|
function RailSeparator({ className }) {
|
|
182
193
|
return /* @__PURE__ */ jsx2("div", { className: cn("my-2 h-px w-10 bg-[var(--md3-outline-variant)]", className) });
|
|
183
194
|
}
|
|
184
|
-
function RailButton({ icon: Icon2, label, isActive, badge, onClick, className }) {
|
|
195
|
+
function RailButton({ icon: Icon2, label, isActive, badge, onClick, className, showLabel }) {
|
|
185
196
|
return /* @__PURE__ */ jsxs(
|
|
186
197
|
"button",
|
|
187
198
|
{
|
|
@@ -189,7 +200,8 @@ function RailButton({ icon: Icon2, label, isActive, badge, onClick, className })
|
|
|
189
200
|
onClick,
|
|
190
201
|
title: label,
|
|
191
202
|
className: cn(
|
|
192
|
-
"group relative flex items-center justify-center
|
|
203
|
+
"group relative flex items-center justify-center rounded-xl transition-all duration-200",
|
|
204
|
+
showLabel ? "w-full justify-start px-3 h-11 gap-3" : "w-11 h-11 justify-center",
|
|
193
205
|
"hover:bg-[var(--accent-surface-soft)] hover:text-[var(--accent-text)]",
|
|
194
206
|
"active:scale-95",
|
|
195
207
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",
|
|
@@ -198,23 +210,25 @@ function RailButton({ icon: Icon2, label, isActive, badge, onClick, className })
|
|
|
198
210
|
className
|
|
199
211
|
),
|
|
200
212
|
children: [
|
|
201
|
-
/* @__PURE__ */ jsx2(Icon2, { className: "h-5 w-5" }),
|
|
213
|
+
/* @__PURE__ */ jsx2(Icon2, { className: "h-5 w-5 shrink-0" }),
|
|
214
|
+
showLabel && /* @__PURE__ */ jsx2("span", { className: "text-sm font-medium", children: label }),
|
|
202
215
|
badge !== void 0 && badge > 0 && /* @__PURE__ */ jsx2("span", { className: "absolute -top-1 -right-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-primary text-[9px] font-bold text-[var(--md3-on-primary)] px-1 shadow-sm", children: badge > 99 ? "99+" : badge })
|
|
203
216
|
]
|
|
204
217
|
}
|
|
205
218
|
);
|
|
206
219
|
}
|
|
207
|
-
function RailModeButton({ mode, icon, label, badge, className }) {
|
|
220
|
+
function RailModeButton({ mode, icon, label, badge, className, showLabel }) {
|
|
208
221
|
const { panelOpen, mode: currentMode, switchMode } = useSidebar();
|
|
209
222
|
return /* @__PURE__ */ jsx2(
|
|
210
223
|
RailButton,
|
|
211
224
|
{
|
|
212
225
|
icon,
|
|
213
226
|
label,
|
|
227
|
+
isActive: mode === currentMode && panelOpen,
|
|
214
228
|
badge,
|
|
215
|
-
isActive: panelOpen && currentMode === mode,
|
|
216
229
|
onClick: () => switchMode(mode),
|
|
217
|
-
className
|
|
230
|
+
className,
|
|
231
|
+
showLabel
|
|
218
232
|
}
|
|
219
233
|
);
|
|
220
234
|
}
|
|
@@ -243,8 +257,11 @@ function SidebarContent({ children, className }) {
|
|
|
243
257
|
return /* @__PURE__ */ jsx2(
|
|
244
258
|
"main",
|
|
245
259
|
{
|
|
246
|
-
className: cn(
|
|
247
|
-
|
|
260
|
+
className: cn(
|
|
261
|
+
"min-h-screen transition-[margin-left] duration-200 ease-in-out lg:ml-[var(--sb-content-margin,0px)]",
|
|
262
|
+
className
|
|
263
|
+
),
|
|
264
|
+
style: { "--sb-content-margin": `${contentMargin}px` },
|
|
248
265
|
children
|
|
249
266
|
}
|
|
250
267
|
);
|
|
@@ -576,58 +593,86 @@ function DashboardLayoutInner({
|
|
|
576
593
|
}, [notificationsOpen]);
|
|
577
594
|
const { contentMargin, hidden, mode, hasPanels, panelOpen } = useSidebar();
|
|
578
595
|
const modeSet = React3.useMemo(() => new Set(modeItems), [modeItems]);
|
|
579
|
-
const sidebarUser =
|
|
596
|
+
const sidebarUser = React3.useMemo(
|
|
597
|
+
() => user ? { email: user.email, name: user.name, tier: user.tier, avatarUrl: user.avatarUrl } : void 0,
|
|
598
|
+
[user?.email, user?.name, user?.tier, user?.avatarUrl]
|
|
599
|
+
);
|
|
580
600
|
const activePanel = panels.find((p) => p.mode === mode);
|
|
581
|
-
const
|
|
582
|
-
/* @__PURE__ */ jsxs6(
|
|
583
|
-
/* @__PURE__ */
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
601
|
+
const buildSidebarContent = React3.useCallback(
|
|
602
|
+
(showLabels) => /* @__PURE__ */ jsxs6(Fragment4, { children: [
|
|
603
|
+
/* @__PURE__ */ jsxs6(SidebarRail, { wide: showLabels, children: [
|
|
604
|
+
/* @__PURE__ */ jsx7(SidebarRailHeader, { children: /* @__PURE__ */ jsx7(Link, { href: "/", to: "/", className: "p-1 rounded-md transition-colors hover:bg-muted/50", children: /* @__PURE__ */ jsx7(Logo, { variant, size: "sm", iconOnly: true }) }) }),
|
|
605
|
+
/* @__PURE__ */ jsx7(SidebarRailNav, { children: navItems.map((item, i) => {
|
|
606
|
+
const isMode = modeSet.has(item.id);
|
|
607
|
+
const prevIsMode = i > 0 && modeSet.has(navItems[i - 1].id);
|
|
608
|
+
const showSep = i > 0 && isMode && !prevIsMode;
|
|
609
|
+
return /* @__PURE__ */ jsxs6(React3.Fragment, { children: [
|
|
610
|
+
showSep && /* @__PURE__ */ jsx7(RailSeparator, {}),
|
|
611
|
+
isMode ? /* @__PURE__ */ jsx7(
|
|
612
|
+
RailModeButton,
|
|
613
|
+
{
|
|
614
|
+
mode: item.id,
|
|
615
|
+
icon: item.icon,
|
|
616
|
+
label: item.label,
|
|
617
|
+
badge: item.badge,
|
|
618
|
+
showLabel: showLabels
|
|
619
|
+
}
|
|
620
|
+
) : /* @__PURE__ */ jsx7(Link, { href: item.href, to: item.href, children: /* @__PURE__ */ jsx7(
|
|
621
|
+
RailButton,
|
|
622
|
+
{
|
|
623
|
+
icon: item.icon,
|
|
624
|
+
label: item.label,
|
|
625
|
+
isActive: activeNavId === item.id,
|
|
626
|
+
showLabel: showLabels
|
|
627
|
+
}
|
|
628
|
+
) })
|
|
629
|
+
] }, item.id);
|
|
630
|
+
}) }),
|
|
631
|
+
/* @__PURE__ */ jsxs6(SidebarRailFooter, { children: [
|
|
632
|
+
onSettingsClick ? /* @__PURE__ */ jsx7(RailButton, { icon: SettingsIconSmall, label: "Settings", onClick: onSettingsClick, showLabel: showLabels }) : /* @__PURE__ */ jsx7(Link, { href: settingsHref, to: settingsHref, children: /* @__PURE__ */ jsx7(RailButton, { icon: SettingsIconSmall, label: "Settings", showLabel: showLabels }) }),
|
|
633
|
+
railFooter,
|
|
634
|
+
/* @__PURE__ */ jsx7(RailSeparator, {}),
|
|
635
|
+
/* @__PURE__ */ jsx7(
|
|
636
|
+
ProfileAvatar,
|
|
600
637
|
{
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
638
|
+
user: sidebarUser,
|
|
639
|
+
isLoading,
|
|
640
|
+
onLogout,
|
|
641
|
+
onSettingsClick,
|
|
642
|
+
settingsHref,
|
|
643
|
+
LinkComponent,
|
|
644
|
+
children: profileMenuItems
|
|
604
645
|
}
|
|
605
|
-
)
|
|
606
|
-
] }
|
|
607
|
-
|
|
608
|
-
/* @__PURE__ */ jsxs6(
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
/* @__PURE__ */ jsx7(RailSeparator, {}),
|
|
612
|
-
/* @__PURE__ */ jsx7(
|
|
613
|
-
ProfileAvatar,
|
|
614
|
-
{
|
|
615
|
-
user: sidebarUser,
|
|
616
|
-
isLoading,
|
|
617
|
-
onLogout,
|
|
618
|
-
onSettingsClick,
|
|
619
|
-
settingsHref,
|
|
620
|
-
LinkComponent,
|
|
621
|
-
children: profileMenuItems
|
|
622
|
-
}
|
|
623
|
-
)
|
|
646
|
+
)
|
|
647
|
+
] })
|
|
648
|
+
] }),
|
|
649
|
+
panels.length > 0 && /* @__PURE__ */ jsxs6(SidebarPanel, { children: [
|
|
650
|
+
/* @__PURE__ */ jsx7(SidebarPanelHeader, { title: activePanel?.title ?? mode }),
|
|
651
|
+
/* @__PURE__ */ jsx7(SidebarPanelContent, { children: activePanel?.content })
|
|
624
652
|
] })
|
|
625
653
|
] }),
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
654
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: intentional — only the inputs that actually affect the sidebar tree
|
|
655
|
+
[
|
|
656
|
+
Link,
|
|
657
|
+
variant,
|
|
658
|
+
navItems,
|
|
659
|
+
modeSet,
|
|
660
|
+
activeNavId,
|
|
661
|
+
onSettingsClick,
|
|
662
|
+
settingsHref,
|
|
663
|
+
railFooter,
|
|
664
|
+
sidebarUser,
|
|
665
|
+
isLoading,
|
|
666
|
+
onLogout,
|
|
667
|
+
LinkComponent,
|
|
668
|
+
profileMenuItems,
|
|
669
|
+
panels,
|
|
670
|
+
activePanel,
|
|
671
|
+
mode
|
|
672
|
+
]
|
|
673
|
+
);
|
|
674
|
+
const sidebarContent = React3.useMemo(() => buildSidebarContent(false), [buildSidebarContent]);
|
|
675
|
+
const mobileSidebarContent = React3.useMemo(() => buildSidebarContent(true), [buildSidebarContent]);
|
|
631
676
|
return /* @__PURE__ */ jsxs6("div", { className: cn("min-h-screen bg-background text-foreground", className), children: [
|
|
632
677
|
/* @__PURE__ */ jsxs6(
|
|
633
678
|
"nav",
|
|
@@ -638,19 +683,22 @@ function DashboardLayoutInner({
|
|
|
638
683
|
width: hidden ? "100%" : `calc(100% - ${contentMargin}px)`
|
|
639
684
|
},
|
|
640
685
|
children: [
|
|
641
|
-
/* @__PURE__ */
|
|
642
|
-
Link,
|
|
643
|
-
{
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
686
|
+
/* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-8", children: [
|
|
687
|
+
/* @__PURE__ */ jsx7(Link, { href: "/", to: "/", className: "lg:hidden flex items-center p-1 rounded-md hover:bg-muted/50 transition-colors", children: /* @__PURE__ */ jsx7(Logo, { variant, size: "sm", iconOnly: true }) }),
|
|
688
|
+
topNavLinks && topNavLinks.length > 0 && /* @__PURE__ */ jsx7("div", { className: "hidden md:flex gap-6", children: topNavLinks.map((link) => /* @__PURE__ */ jsx7(
|
|
689
|
+
Link,
|
|
690
|
+
{
|
|
691
|
+
href: link.href,
|
|
692
|
+
to: link.href,
|
|
693
|
+
className: cn(
|
|
694
|
+
"transition-all duration-300 px-2 py-1 rounded",
|
|
695
|
+
activeTopNavHref === link.href ? "text-foreground border-b-2 border-primary pb-1" : "text-muted-foreground hover:text-foreground hover:bg-muted/50"
|
|
696
|
+
),
|
|
697
|
+
children: link.label
|
|
698
|
+
},
|
|
699
|
+
link.href
|
|
700
|
+
)) })
|
|
701
|
+
] }),
|
|
654
702
|
/* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-4", children: [
|
|
655
703
|
onNewSandbox && /* @__PURE__ */ jsxs6(
|
|
656
704
|
"button",
|
|
@@ -742,13 +790,14 @@ function DashboardLayoutInner({
|
|
|
742
790
|
"fixed top-14 bottom-0 left-0 z-30 flex bg-background transition-transform duration-200 lg:hidden",
|
|
743
791
|
mobileMenuOpen ? "translate-x-0" : "-translate-x-full"
|
|
744
792
|
),
|
|
745
|
-
style: {
|
|
746
|
-
|
|
793
|
+
style: {
|
|
794
|
+
width: panelOpen && hasPanels ? SIDEBAR_MOBILE_WIDTH + SIDEBAR_PANEL_WIDTH : SIDEBAR_MOBILE_WIDTH
|
|
795
|
+
},
|
|
796
|
+
children: mobileSidebarContent
|
|
747
797
|
}
|
|
748
798
|
),
|
|
749
799
|
/* @__PURE__ */ jsx7(Sidebar, { className: cn("hidden lg:flex", sidebarClassName), children: sidebarContent }),
|
|
750
|
-
/* @__PURE__ */ jsx7(SidebarContent, { className: cn("pt-16 px-
|
|
751
|
-
/* @__PURE__ */ jsx7("main", { className: cn("pt-16 px-6 pb-8 min-h-screen lg:hidden bg-background", contentClassName), children }),
|
|
800
|
+
/* @__PURE__ */ jsx7(SidebarContent, { className: cn("pt-16 px-6 pb-8 lg:px-8 bg-background", contentClassName), children }),
|
|
752
801
|
footer
|
|
753
802
|
] });
|
|
754
803
|
}
|
|
@@ -1547,6 +1596,7 @@ export {
|
|
|
1547
1596
|
SIDEBAR_RAIL_WIDTH,
|
|
1548
1597
|
SIDEBAR_PANEL_WIDTH,
|
|
1549
1598
|
SIDEBAR_TOTAL_WIDTH,
|
|
1599
|
+
SIDEBAR_MOBILE_WIDTH,
|
|
1550
1600
|
SidebarProvider,
|
|
1551
1601
|
useSidebar,
|
|
1552
1602
|
Sidebar,
|
|
@@ -1658,7 +1658,7 @@ function CheckRow({ check }) {
|
|
|
1658
1658
|
|
|
1659
1659
|
// src/workspace/task-board.tsx
|
|
1660
1660
|
import { useMemo as useMemo5 } from "react";
|
|
1661
|
-
import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1661
|
+
import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1662
1662
|
function TaskBoard({
|
|
1663
1663
|
items,
|
|
1664
1664
|
columns,
|
|
@@ -1669,7 +1669,9 @@ function TaskBoard({
|
|
|
1669
1669
|
renderColumnAction,
|
|
1670
1670
|
renderBadge,
|
|
1671
1671
|
columnEmptyState,
|
|
1672
|
-
header
|
|
1672
|
+
header,
|
|
1673
|
+
renderColumnBody,
|
|
1674
|
+
renderItemWrapper
|
|
1673
1675
|
}) {
|
|
1674
1676
|
const grouped = useMemo5(() => {
|
|
1675
1677
|
const map = /* @__PURE__ */ new Map();
|
|
@@ -1685,6 +1687,40 @@ function TaskBoard({
|
|
|
1685
1687
|
header,
|
|
1686
1688
|
/* @__PURE__ */ jsx11("div", { className: "flex flex-1 gap-3 overflow-x-auto p-4", children: columns.map((col) => {
|
|
1687
1689
|
const colItems = grouped.get(col.id) ?? [];
|
|
1690
|
+
const itemCards = /* @__PURE__ */ jsxs11(Fragment2, { children: [
|
|
1691
|
+
colItems.length === 0 && columnEmptyState,
|
|
1692
|
+
colItems.map((item, index) => {
|
|
1693
|
+
const card = /* @__PURE__ */ jsxs11(
|
|
1694
|
+
"button",
|
|
1695
|
+
{
|
|
1696
|
+
type: "button",
|
|
1697
|
+
onClick: () => onClickItem?.(item),
|
|
1698
|
+
className: "group w-full rounded-lg border border-border bg-card p-3 text-left transition-colors hover:border-accent/50",
|
|
1699
|
+
children: [
|
|
1700
|
+
/* @__PURE__ */ jsx11("p", { className: "text-sm font-medium text-foreground", children: item.title }),
|
|
1701
|
+
item.description && /* @__PURE__ */ jsx11("p", { className: "mt-1 text-xs text-muted-foreground line-clamp-2", children: item.description }),
|
|
1702
|
+
(item.priority || item.tags?.length) && /* @__PURE__ */ jsxs11("div", { className: "mt-2 flex flex-wrap gap-1.5", children: [
|
|
1703
|
+
item.priority && (renderBadge ? renderBadge(item.priority, "priority") : /* @__PURE__ */ jsx11("span", { className: "rounded-full border border-border px-2 py-0.5 text-[10px] font-medium text-muted-foreground", children: item.priority })),
|
|
1704
|
+
item.tags?.map(
|
|
1705
|
+
(tag) => renderBadge ? /* @__PURE__ */ jsx11("span", { children: renderBadge(tag, "tag") }, tag) : /* @__PURE__ */ jsx11(
|
|
1706
|
+
"span",
|
|
1707
|
+
{
|
|
1708
|
+
className: "rounded-full border border-border px-2 py-0.5 text-[10px] text-muted-foreground",
|
|
1709
|
+
children: tag
|
|
1710
|
+
},
|
|
1711
|
+
tag
|
|
1712
|
+
)
|
|
1713
|
+
)
|
|
1714
|
+
] }),
|
|
1715
|
+
renderItemMeta?.(item)
|
|
1716
|
+
]
|
|
1717
|
+
},
|
|
1718
|
+
item.id
|
|
1719
|
+
);
|
|
1720
|
+
return renderItemWrapper ? /* @__PURE__ */ jsx11("span", { children: renderItemWrapper(item, index, card) }, item.id) : card;
|
|
1721
|
+
})
|
|
1722
|
+
] });
|
|
1723
|
+
const columnBody = /* @__PURE__ */ jsx11("div", { className: "flex flex-1 flex-col gap-2 overflow-y-auto px-2 pb-2 min-h-[80px]", children: renderColumnBody ? renderColumnBody(col.id, itemCards, colItems) : itemCards });
|
|
1688
1724
|
return /* @__PURE__ */ jsxs11(
|
|
1689
1725
|
"div",
|
|
1690
1726
|
{
|
|
@@ -1700,36 +1736,7 @@ function TaskBoard({
|
|
|
1700
1736
|
] }),
|
|
1701
1737
|
renderColumnAction?.(col)
|
|
1702
1738
|
] }),
|
|
1703
|
-
|
|
1704
|
-
colItems.length === 0 && columnEmptyState,
|
|
1705
|
-
colItems.map((item) => /* @__PURE__ */ jsxs11(
|
|
1706
|
-
"button",
|
|
1707
|
-
{
|
|
1708
|
-
type: "button",
|
|
1709
|
-
onClick: () => onClickItem?.(item),
|
|
1710
|
-
className: "group w-full rounded-lg border border-border bg-card p-3 text-left transition-colors hover:border-accent/50",
|
|
1711
|
-
children: [
|
|
1712
|
-
/* @__PURE__ */ jsx11("p", { className: "text-sm font-medium text-foreground", children: item.title }),
|
|
1713
|
-
item.description && /* @__PURE__ */ jsx11("p", { className: "mt-1 text-xs text-muted-foreground line-clamp-2", children: item.description }),
|
|
1714
|
-
(item.priority || item.tags?.length) && /* @__PURE__ */ jsxs11("div", { className: "mt-2 flex flex-wrap gap-1.5", children: [
|
|
1715
|
-
item.priority && (renderBadge ? renderBadge(item.priority, "priority") : /* @__PURE__ */ jsx11("span", { className: "rounded-full border border-border px-2 py-0.5 text-[10px] font-medium text-muted-foreground", children: item.priority })),
|
|
1716
|
-
item.tags?.map(
|
|
1717
|
-
(tag) => renderBadge ? /* @__PURE__ */ jsx11("span", { children: renderBadge(tag, "tag") }, tag) : /* @__PURE__ */ jsx11(
|
|
1718
|
-
"span",
|
|
1719
|
-
{
|
|
1720
|
-
className: "rounded-full border border-border px-2 py-0.5 text-[10px] text-muted-foreground",
|
|
1721
|
-
children: tag
|
|
1722
|
-
},
|
|
1723
|
-
tag
|
|
1724
|
-
)
|
|
1725
|
-
)
|
|
1726
|
-
] }),
|
|
1727
|
-
renderItemMeta?.(item)
|
|
1728
|
-
]
|
|
1729
|
-
},
|
|
1730
|
-
item.id
|
|
1731
|
-
))
|
|
1732
|
-
] })
|
|
1739
|
+
columnBody
|
|
1733
1740
|
]
|
|
1734
1741
|
},
|
|
1735
1742
|
col.id
|
|
@@ -1740,7 +1747,7 @@ function TaskBoard({
|
|
|
1740
1747
|
|
|
1741
1748
|
// src/workspace/calendar-view.tsx
|
|
1742
1749
|
import { useState as useState6, useMemo as useMemo6 } from "react";
|
|
1743
|
-
import { Fragment as
|
|
1750
|
+
import { Fragment as Fragment3, jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1744
1751
|
function toDateKey(d) {
|
|
1745
1752
|
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
|
|
1746
1753
|
}
|
|
@@ -1929,7 +1936,7 @@ function CalendarView({
|
|
|
1929
1936
|
);
|
|
1930
1937
|
}) })
|
|
1931
1938
|
] }),
|
|
1932
|
-
showDayPanel && /* @__PURE__ */ jsx12("div", { className: "w-80 shrink-0 flex flex-col overflow-hidden", children: renderDayDetail ? renderDayDetail(selectedDay ?? todayKey, selectedDayEvents) : /* @__PURE__ */ jsxs12(
|
|
1939
|
+
showDayPanel && /* @__PURE__ */ jsx12("div", { className: "w-80 shrink-0 flex flex-col overflow-hidden", children: renderDayDetail ? renderDayDetail(selectedDay ?? todayKey, selectedDayEvents) : /* @__PURE__ */ jsxs12(Fragment3, { children: [
|
|
1933
1940
|
/* @__PURE__ */ jsxs12("div", { className: "px-4 py-3 border-b border-border shrink-0", children: [
|
|
1934
1941
|
/* @__PURE__ */ jsx12("h3", { className: "text-sm font-semibold text-foreground", children: selectedDay === todayKey ? "Today" : selectedDay ? (/* @__PURE__ */ new Date(selectedDay + "T00:00:00")).toLocaleDateString(
|
|
1935
1942
|
"en-US",
|
package/dist/dashboard.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps,
|
|
1
|
+
export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, ah as DashboardProfile, h as DashboardUser, I as Invoice, i as InvoiceTable, j as InvoiceTableProps, N as NavItem, k as NewSandboxCard, l as NewSandboxCardProps, m as PlanCardData, n as PlanCards, o as PlanCardsProps, ai as PlanFeature, p as ProductVariant, q as ProfileAvatar, r as ProfileAvatarProps, s as ProfileComparison, t as ProfileComparisonProps, u as ProfileSelector, v as ProfileSelectorProps, R as RailButton, w as RailButtonProps, x as RailModeButton, y as RailModeButtonProps, z as RailSeparator, A as RailSeparatorProps, E as ResourceMeter, F as ResourceMeterProps, S as SIDEBAR_MOBILE_WIDTH, G as SIDEBAR_PANEL_WIDTH, H as SIDEBAR_RAIL_WIDTH, J as SIDEBAR_TOTAL_WIDTH, K as SandboxCard, L as SandboxCardData, M as SandboxCardProps, O as SandboxStatus, Q as SandboxTable, T as SandboxTableProps, U as Sidebar, V as SidebarContent, W as SidebarContentProps, X as SidebarPanel, Y as SidebarPanelContent, Z as SidebarPanelContentProps, _ as SidebarPanelHeader, $ as SidebarPanelHeaderProps, a0 as SidebarPanelProps, a1 as SidebarProps, a2 as SidebarProvider, a3 as SidebarProviderProps, a4 as SidebarRail, a5 as SidebarRailFooter, a6 as SidebarRailFooterProps, a7 as SidebarRailHeader, a8 as SidebarRailHeaderProps, a9 as SidebarRailNav, aa as SidebarRailNavProps, ab as SidebarRailProps, ac as SidebarUser, aj as Variant, ae as VariantList, af as VariantListProps, ak as VariantOutcome, al as VariantStatus, ag as useSidebar } from './variant-list-DHP2OXFE.js';
|
|
2
2
|
export { a as BillingBalance, c as BillingDashboard, d as BillingDashboardProps, B as BillingSubscription, b as BillingUsage, e as PricingPage, f as PricingPageProps, P as PricingTier, g as UsageChart, h as UsageChartProps, U as UsageDataPoint } from './usage-chart-SSiOgeQI.js';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
export { a as TemplateCard, T as TemplateCardData, b as TemplateCardProps } from './template-card-BAtvcAkU.js';
|
package/dist/dashboard.js
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
RailModeButton,
|
|
18
18
|
RailSeparator,
|
|
19
19
|
ResourceMeter,
|
|
20
|
+
SIDEBAR_MOBILE_WIDTH,
|
|
20
21
|
SIDEBAR_PANEL_WIDTH,
|
|
21
22
|
SIDEBAR_RAIL_WIDTH,
|
|
22
23
|
SIDEBAR_TOTAL_WIDTH,
|
|
@@ -34,7 +35,7 @@ import {
|
|
|
34
35
|
SidebarRailNav,
|
|
35
36
|
VariantList,
|
|
36
37
|
useSidebar
|
|
37
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-7LBHRASD.js";
|
|
38
39
|
import {
|
|
39
40
|
BillingDashboard,
|
|
40
41
|
PricingPage,
|
|
@@ -944,6 +945,7 @@ export {
|
|
|
944
945
|
RailModeButton,
|
|
945
946
|
RailSeparator,
|
|
946
947
|
ResourceMeter,
|
|
948
|
+
SIDEBAR_MOBILE_WIDTH,
|
|
947
949
|
SIDEBAR_PANEL_WIDTH,
|
|
948
950
|
SIDEBAR_RAIL_WIDTH,
|
|
949
951
|
SIDEBAR_TOTAL_WIDTH,
|
package/dist/globals.css
CHANGED
|
@@ -705,6 +705,9 @@
|
|
|
705
705
|
.-top-1 {
|
|
706
706
|
top: calc(var(--spacing) * -1);
|
|
707
707
|
}
|
|
708
|
+
.-top-1\.5 {
|
|
709
|
+
top: calc(var(--spacing) * -1.5);
|
|
710
|
+
}
|
|
708
711
|
.-top-4 {
|
|
709
712
|
top: calc(var(--spacing) * -4);
|
|
710
713
|
}
|
|
@@ -744,6 +747,9 @@
|
|
|
744
747
|
.-right-1 {
|
|
745
748
|
right: calc(var(--spacing) * -1);
|
|
746
749
|
}
|
|
750
|
+
.-right-1\.5 {
|
|
751
|
+
right: calc(var(--spacing) * -1.5);
|
|
752
|
+
}
|
|
747
753
|
.right-0 {
|
|
748
754
|
right: calc(var(--spacing) * 0);
|
|
749
755
|
}
|
|
@@ -1164,9 +1170,6 @@
|
|
|
1164
1170
|
.min-h-\[200px\] {
|
|
1165
1171
|
min-height: 200px;
|
|
1166
1172
|
}
|
|
1167
|
-
.min-h-\[240px\] {
|
|
1168
|
-
min-height: 240px;
|
|
1169
|
-
}
|
|
1170
1173
|
.min-h-full {
|
|
1171
1174
|
min-height: 100%;
|
|
1172
1175
|
}
|
|
@@ -1631,6 +1634,9 @@
|
|
|
1631
1634
|
.justify-end {
|
|
1632
1635
|
justify-content: flex-end;
|
|
1633
1636
|
}
|
|
1637
|
+
.justify-start {
|
|
1638
|
+
justify-content: flex-start;
|
|
1639
|
+
}
|
|
1634
1640
|
.gap-0\.5 {
|
|
1635
1641
|
gap: calc(var(--spacing) * 0.5);
|
|
1636
1642
|
}
|
|
@@ -2116,30 +2122,18 @@
|
|
|
2116
2122
|
border-color: color-mix(in oklab, var(--color-yellow-500) 30%, transparent);
|
|
2117
2123
|
}
|
|
2118
2124
|
}
|
|
2119
|
-
.border-t-blue-500 {
|
|
2120
|
-
border-top-color: var(--color-blue-500);
|
|
2121
|
-
}
|
|
2122
2125
|
.border-t-transparent {
|
|
2123
2126
|
border-top-color: transparent;
|
|
2124
2127
|
}
|
|
2125
2128
|
.bg-\[\#8E59FF\] {
|
|
2126
2129
|
background-color: #8E59FF;
|
|
2127
2130
|
}
|
|
2128
|
-
.bg-\[\#27c93f\]\/80 {
|
|
2129
|
-
background-color: color-mix(in oklab, #27c93f 80%, transparent);
|
|
2130
|
-
}
|
|
2131
2131
|
.bg-\[\#FEBC2E\] {
|
|
2132
2132
|
background-color: #FEBC2E;
|
|
2133
2133
|
}
|
|
2134
2134
|
.bg-\[\#FF5F57\] {
|
|
2135
2135
|
background-color: #FF5F57;
|
|
2136
2136
|
}
|
|
2137
|
-
.bg-\[\#ff5f56\]\/80 {
|
|
2138
|
-
background-color: color-mix(in oklab, #ff5f56 80%, transparent);
|
|
2139
|
-
}
|
|
2140
|
-
.bg-\[\#ffbd2e\]\/80 {
|
|
2141
|
-
background-color: color-mix(in oklab, #ffbd2e 80%, transparent);
|
|
2142
|
-
}
|
|
2143
2137
|
.bg-\[color\:color-mix\(in_srgb\,var\(--bg-card\)_94\%\,transparent\)\] {
|
|
2144
2138
|
background-color: var(--bg-card);
|
|
2145
2139
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -2409,9 +2403,6 @@
|
|
|
2409
2403
|
.bg-\[linear-gradient\(180deg\,rgba\(255\,255\,255\,0\.04\)\,transparent\)\] {
|
|
2410
2404
|
background-image: linear-gradient(180deg,rgba(255,255,255,0.04),transparent);
|
|
2411
2405
|
}
|
|
2412
|
-
.bg-\[radial-gradient\(circle_at_top\,rgba\(173\,163\,255\,0\.05\)_0\,transparent_100\%\)\] {
|
|
2413
|
-
background-image: radial-gradient(circle at top,rgba(173,163,255,0.05) 0,transparent 100%);
|
|
2414
|
-
}
|
|
2415
2406
|
.from-white\/5 {
|
|
2416
2407
|
--tw-gradient-from: color-mix(in srgb, #fff 5%, transparent);
|
|
2417
2408
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -2651,9 +2642,6 @@
|
|
|
2651
2642
|
.pl-2 {
|
|
2652
2643
|
padding-left: calc(var(--spacing) * 2);
|
|
2653
2644
|
}
|
|
2654
|
-
.pl-3 {
|
|
2655
|
-
padding-left: calc(var(--spacing) * 3);
|
|
2656
|
-
}
|
|
2657
2645
|
.pl-4 {
|
|
2658
2646
|
padding-left: calc(var(--spacing) * 4);
|
|
2659
2647
|
}
|
|
@@ -4186,9 +4174,9 @@
|
|
|
4186
4174
|
grid-column: span 1 / span 1;
|
|
4187
4175
|
}
|
|
4188
4176
|
}
|
|
4189
|
-
.lg\:
|
|
4177
|
+
.lg\:ml-\[var\(--sb-content-margin\,0px\)\] {
|
|
4190
4178
|
@media (width >= 64rem) {
|
|
4191
|
-
|
|
4179
|
+
margin-left: var(--sb-content-margin,0px);
|
|
4192
4180
|
}
|
|
4193
4181
|
}
|
|
4194
4182
|
.lg\:flex {
|
|
@@ -4226,6 +4214,11 @@
|
|
|
4226
4214
|
padding: calc(var(--spacing) * 4);
|
|
4227
4215
|
}
|
|
4228
4216
|
}
|
|
4217
|
+
.lg\:px-8 {
|
|
4218
|
+
@media (width >= 64rem) {
|
|
4219
|
+
padding-inline: calc(var(--spacing) * 8);
|
|
4220
|
+
}
|
|
4221
|
+
}
|
|
4229
4222
|
.xl\:col-span-4 {
|
|
4230
4223
|
@media (width >= 80rem) {
|
|
4231
4224
|
grid-column: span 4 / span 4;
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ import { b as ToolPart } from './parts-CyGkM6Fp.js';
|
|
|
15
15
|
export { R as ReasoningPart, S as SessionMessage, a as SessionPart, T as TextPart, c as ToolState, d as ToolStatus, e as ToolTime } from './parts-CyGkM6Fp.js';
|
|
16
16
|
export { F as FileNode, a as FileTabData, b as FileTabs, c as FileTabsProps, d as FileTree, e as FileTreeProps, f as FileTreeVisibilityOptions, g as filterFileTree } from './file-tabs-BLfxfmAH.js';
|
|
17
17
|
export { FileArtifactPane, FileArtifactPaneProps, FilePreview, FilePreviewProps } from './files.js';
|
|
18
|
-
export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, h as DashboardUser, I as Invoice, i as InvoiceTable, j as InvoiceTableProps, N as NavItem, k as NewSandboxCard, l as NewSandboxCardProps, P as PanelConfig, m as PlanCardData, n as PlanCards, o as PlanCardsProps, p as ProductVariant, q as ProfileAvatar, r as ProfileAvatarProps, s as ProfileComparison, t as ProfileComparisonProps, u as ProfileSelector, v as ProfileSelectorProps, R as RailButton, w as RailButtonProps, x as RailModeButton, y as RailModeButtonProps, z as RailSeparator, A as RailSeparatorProps, E as ResourceMeter, F as ResourceMeterProps, S as
|
|
18
|
+
export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, h as DashboardUser, I as Invoice, i as InvoiceTable, j as InvoiceTableProps, N as NavItem, k as NewSandboxCard, l as NewSandboxCardProps, P as PanelConfig, m as PlanCardData, n as PlanCards, o as PlanCardsProps, p as ProductVariant, q as ProfileAvatar, r as ProfileAvatarProps, s as ProfileComparison, t as ProfileComparisonProps, u as ProfileSelector, v as ProfileSelectorProps, R as RailButton, w as RailButtonProps, x as RailModeButton, y as RailModeButtonProps, z as RailSeparator, A as RailSeparatorProps, E as ResourceMeter, F as ResourceMeterProps, S as SIDEBAR_MOBILE_WIDTH, G as SIDEBAR_PANEL_WIDTH, H as SIDEBAR_RAIL_WIDTH, J as SIDEBAR_TOTAL_WIDTH, K as SandboxCard, L as SandboxCardData, M as SandboxCardProps, O as SandboxStatus, Q as SandboxTable, T as SandboxTableProps, U as Sidebar, V as SidebarContent, W as SidebarContentProps, X as SidebarPanel, Y as SidebarPanelContent, Z as SidebarPanelContentProps, _ as SidebarPanelHeader, $ as SidebarPanelHeaderProps, a0 as SidebarPanelProps, a1 as SidebarProps, a2 as SidebarProvider, a3 as SidebarProviderProps, a4 as SidebarRail, a5 as SidebarRailFooter, a6 as SidebarRailFooterProps, a7 as SidebarRailHeader, a8 as SidebarRailHeaderProps, a9 as SidebarRailNav, aa as SidebarRailNavProps, ab as SidebarRailProps, ac as SidebarUser, ad as TopNavLink, ae as VariantList, af as VariantListProps, ag as useSidebar } from './variant-list-DHP2OXFE.js';
|
|
19
19
|
export { c as BillingDashboard, d as BillingDashboardProps, e as PricingCards, f as PricingPageProps, g as UsageChart, h as UsageChartProps, U as UsageDataPoint } from './usage-chart-SSiOgeQI.js';
|
|
20
20
|
export { AuthHeader, GitHubLoginButton, LoginLayout, LoginLayoutProps, UserMenu } from './auth.js';
|
|
21
21
|
export { CodeBlock, CodeBlock as CodeBlockDisplay, CopyButton, Markdown, MarkdownProps } from './markdown.js';
|
package/dist/index.js
CHANGED
|
@@ -104,7 +104,7 @@ import {
|
|
|
104
104
|
TaskBoard,
|
|
105
105
|
TerminalPanel,
|
|
106
106
|
WorkspaceLayout
|
|
107
|
-
} from "./chunk-
|
|
107
|
+
} from "./chunk-HEXQVHXJ.js";
|
|
108
108
|
import "./chunk-OEX7NZE3.js";
|
|
109
109
|
import {
|
|
110
110
|
EmptyState,
|
|
@@ -195,6 +195,7 @@ import {
|
|
|
195
195
|
RailModeButton,
|
|
196
196
|
RailSeparator,
|
|
197
197
|
ResourceMeter,
|
|
198
|
+
SIDEBAR_MOBILE_WIDTH,
|
|
198
199
|
SIDEBAR_PANEL_WIDTH,
|
|
199
200
|
SIDEBAR_RAIL_WIDTH,
|
|
200
201
|
SIDEBAR_TOTAL_WIDTH,
|
|
@@ -212,7 +213,7 @@ import {
|
|
|
212
213
|
SidebarRailNav,
|
|
213
214
|
VariantList,
|
|
214
215
|
useSidebar
|
|
215
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-7LBHRASD.js";
|
|
216
217
|
import {
|
|
217
218
|
BillingDashboard,
|
|
218
219
|
PricingPage,
|
|
@@ -449,6 +450,7 @@ export {
|
|
|
449
450
|
ResourceMeter,
|
|
450
451
|
RunGroup,
|
|
451
452
|
RuntimePane,
|
|
453
|
+
SIDEBAR_MOBILE_WIDTH,
|
|
452
454
|
SIDEBAR_PANEL_WIDTH,
|
|
453
455
|
SIDEBAR_RAIL_WIDTH,
|
|
454
456
|
SIDEBAR_TOTAL_WIDTH,
|