@tangle-network/sandbox-ui 0.49.0 → 0.50.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/dist/{chunk-4HLWA2VN.js → chunk-MGIOO3RL.js} +1 -1
- package/dist/{chunk-3WUSPCPC.js → chunk-RT4MLYYM.js} +57 -21
- package/dist/dashboard.d.ts +3 -0
- package/dist/dashboard.js +1 -1
- package/dist/globals.css +18 -0
- package/dist/index.js +2 -2
- package/dist/integrations.d.ts +19 -1
- package/dist/integrations.js +111 -40
- package/dist/pages.d.ts +1 -1
- package/dist/styles.css +18 -0
- package/dist/workbench.js +2 -2
- package/package.json +1 -1
|
@@ -1516,7 +1516,7 @@ function PlanCards({ plans, className }) {
|
|
|
1516
1516
|
|
|
1517
1517
|
// src/dashboard/dashboard-layout.tsx
|
|
1518
1518
|
import * as React7 from "react";
|
|
1519
|
-
import { Plus as Plus2, Bell } from "lucide-react";
|
|
1519
|
+
import { Plus as Plus2, Bell, ChevronsLeft, ChevronsRight } from "lucide-react";
|
|
1520
1520
|
import { Fragment as Fragment9, jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1521
1521
|
function SettingsIconSmall({ className }) {
|
|
1522
1522
|
return /* @__PURE__ */ jsxs13("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, children: [
|
|
@@ -1571,6 +1571,7 @@ function DashboardLayoutInner({
|
|
|
1571
1571
|
contentClassName,
|
|
1572
1572
|
topNavLinks,
|
|
1573
1573
|
activeTopNavHref,
|
|
1574
|
+
topBarLeading,
|
|
1574
1575
|
LinkComponent = DefaultLink2,
|
|
1575
1576
|
logoHref = "/",
|
|
1576
1577
|
onLogoClick,
|
|
@@ -1621,16 +1622,29 @@ function DashboardLayoutInner({
|
|
|
1621
1622
|
className: "p-1 rounded-md transition-colors hover:bg-surface-container-high",
|
|
1622
1623
|
children: /* @__PURE__ */ jsx14(Logo, { variant, size: "sm", iconOnly: true })
|
|
1623
1624
|
}
|
|
1624
|
-
) :
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1625
|
+
) : allowCollapse ? (
|
|
1626
|
+
// The logo IS the collapse/expand control on the desktop rail
|
|
1627
|
+
// (allowCollapse). The mobile drawer never collapses, so it falls
|
|
1628
|
+
// through to the plain logo link. Expanded: full logotype with a
|
|
1629
|
+
// collapse chevron that fades in on hover. Collapsed: the mark,
|
|
1630
|
+
// with an expand chevron overlay on hover.
|
|
1631
|
+
/* @__PURE__ */ jsxs13(
|
|
1632
|
+
"button",
|
|
1633
|
+
{
|
|
1634
|
+
type: "button",
|
|
1635
|
+
onClick: toggleRail,
|
|
1636
|
+
"aria-label": railCollapsed ? "Expand navigation" : "Collapse navigation",
|
|
1637
|
+
"aria-expanded": !railCollapsed,
|
|
1638
|
+
className: cn(
|
|
1639
|
+
"group/logo relative flex items-center gap-2 rounded-md p-1 transition-colors hover:bg-surface-container-high",
|
|
1640
|
+
showLabels && "w-full"
|
|
1641
|
+
),
|
|
1642
|
+
children: [
|
|
1643
|
+
/* @__PURE__ */ jsx14(Logo, { variant, size: "sm", iconOnly: !showLabels }),
|
|
1644
|
+
showLabels ? /* @__PURE__ */ jsx14(ChevronsLeft, { className: "ml-auto h-4 w-4 shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover/logo:opacity-100" }) : /* @__PURE__ */ jsx14("span", { className: "absolute inset-0 flex items-center justify-center rounded-md bg-surface-container-high opacity-0 transition-opacity group-hover/logo:opacity-100", children: /* @__PURE__ */ jsx14(ChevronsRight, { className: "h-4 w-4 text-foreground" }) })
|
|
1645
|
+
]
|
|
1646
|
+
}
|
|
1647
|
+
)
|
|
1634
1648
|
) : /* @__PURE__ */ jsx14(
|
|
1635
1649
|
Link,
|
|
1636
1650
|
{
|
|
@@ -1674,18 +1688,39 @@ function DashboardLayoutInner({
|
|
|
1674
1688
|
] }, item.id);
|
|
1675
1689
|
}) }),
|
|
1676
1690
|
/* @__PURE__ */ jsxs13(SidebarRailFooter, { className: cn(showLabels && "items-stretch px-2"), children: [
|
|
1677
|
-
allowCollapse && /* @__PURE__ */ jsx14(
|
|
1678
|
-
RailCollapseToggle,
|
|
1679
|
-
{
|
|
1680
|
-
collapsed: railCollapsed,
|
|
1681
|
-
showLabel: showLabels,
|
|
1682
|
-
onToggle: toggleRail
|
|
1683
|
-
}
|
|
1684
|
-
),
|
|
1685
1691
|
onSettingsClick ? /* @__PURE__ */ jsx14(RailButton, { icon: SettingsIconSmall, label: "Settings", onClick: onSettingsClick, showLabel: showLabels }) : /* @__PURE__ */ jsx14(RailButton, { icon: SettingsIconSmall, label: "Settings", showLabel: showLabels, asChild: true, children: /* @__PURE__ */ jsx14(Link, { href: settingsHref, to: settingsHref }) }),
|
|
1686
|
-
railFooter,
|
|
1687
1692
|
/* @__PURE__ */ jsx14(RailSeparator, { className: showLabels ? "w-full" : void 0 }),
|
|
1688
|
-
/* @__PURE__ */
|
|
1693
|
+
railFooter !== void 0 ? showLabels ? /* @__PURE__ */ jsxs13("div", { className: "flex w-full items-center gap-1", children: [
|
|
1694
|
+
/* @__PURE__ */ jsx14("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsx14(
|
|
1695
|
+
ProfileAvatar,
|
|
1696
|
+
{
|
|
1697
|
+
user: sidebarUser,
|
|
1698
|
+
isLoading,
|
|
1699
|
+
onLogout,
|
|
1700
|
+
onSettingsClick,
|
|
1701
|
+
settingsHref,
|
|
1702
|
+
showDetails: showLabels,
|
|
1703
|
+
LinkComponent,
|
|
1704
|
+
children: profileMenuItems
|
|
1705
|
+
}
|
|
1706
|
+
) }),
|
|
1707
|
+
/* @__PURE__ */ jsx14("div", { className: "shrink-0", children: railFooter })
|
|
1708
|
+
] }) : /* @__PURE__ */ jsxs13("div", { className: "flex flex-col items-center gap-1", children: [
|
|
1709
|
+
railFooter,
|
|
1710
|
+
/* @__PURE__ */ jsx14(
|
|
1711
|
+
ProfileAvatar,
|
|
1712
|
+
{
|
|
1713
|
+
user: sidebarUser,
|
|
1714
|
+
isLoading,
|
|
1715
|
+
onLogout,
|
|
1716
|
+
onSettingsClick,
|
|
1717
|
+
settingsHref,
|
|
1718
|
+
showDetails: showLabels,
|
|
1719
|
+
LinkComponent,
|
|
1720
|
+
children: profileMenuItems
|
|
1721
|
+
}
|
|
1722
|
+
)
|
|
1723
|
+
] }) : /* @__PURE__ */ jsx14(
|
|
1689
1724
|
ProfileAvatar,
|
|
1690
1725
|
{
|
|
1691
1726
|
user: sidebarUser,
|
|
@@ -1748,6 +1783,7 @@ function DashboardLayoutInner({
|
|
|
1748
1783
|
children: [
|
|
1749
1784
|
/* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-8", children: [
|
|
1750
1785
|
/* @__PURE__ */ jsx14(Link, { href: logoHref, to: logoHref, className: "lg:hidden flex items-center p-1 rounded-md hover:bg-surface-container-high transition-colors", children: /* @__PURE__ */ jsx14(Logo, { variant, size: "sm", iconOnly: true }) }),
|
|
1786
|
+
topBarLeading,
|
|
1751
1787
|
topNavLinks && topNavLinks.length > 0 && /* @__PURE__ */ jsx14("div", { className: "hidden md:flex gap-6", children: topNavLinks.map((link) => /* @__PURE__ */ jsx14(
|
|
1752
1788
|
Link,
|
|
1753
1789
|
{
|
package/dist/dashboard.d.ts
CHANGED
|
@@ -688,6 +688,9 @@ interface DashboardLayoutProps {
|
|
|
688
688
|
contentClassName?: string;
|
|
689
689
|
topNavLinks?: TopNavLink[];
|
|
690
690
|
activeTopNavHref?: string;
|
|
691
|
+
/** Arbitrary content rendered at the leading (left) edge of the top bar —
|
|
692
|
+
* e.g. a workspace/team switcher — so consumers don't need a second bar. */
|
|
693
|
+
topBarLeading?: React.ReactNode;
|
|
691
694
|
LinkComponent?: React.ComponentType<any>;
|
|
692
695
|
/**
|
|
693
696
|
* Where the in-app logo links. Defaults to "/" (backward compatible);
|
package/dist/dashboard.js
CHANGED
package/dist/globals.css
CHANGED
|
@@ -392,6 +392,9 @@
|
|
|
392
392
|
.bottom-1 {
|
|
393
393
|
bottom: calc(var(--spacing) * 1);
|
|
394
394
|
}
|
|
395
|
+
.bottom-1\.5 {
|
|
396
|
+
bottom: calc(var(--spacing) * 1.5);
|
|
397
|
+
}
|
|
395
398
|
.bottom-2 {
|
|
396
399
|
bottom: calc(var(--spacing) * 2);
|
|
397
400
|
}
|
|
@@ -437,6 +440,9 @@
|
|
|
437
440
|
.z-10 {
|
|
438
441
|
z-index: 10;
|
|
439
442
|
}
|
|
443
|
+
.z-20 {
|
|
444
|
+
z-index: 20;
|
|
445
|
+
}
|
|
440
446
|
.z-30 {
|
|
441
447
|
z-index: 30;
|
|
442
448
|
}
|
|
@@ -3626,6 +3632,11 @@
|
|
|
3626
3632
|
rotate: 180deg;
|
|
3627
3633
|
}
|
|
3628
3634
|
}
|
|
3635
|
+
.group-focus-within\:opacity-100 {
|
|
3636
|
+
&:is(:where(.group):focus-within *) {
|
|
3637
|
+
opacity: 100%;
|
|
3638
|
+
}
|
|
3639
|
+
}
|
|
3629
3640
|
.group-focus-within\/tip\:translate-x-0 {
|
|
3630
3641
|
&:is(:where(.group\/tip):focus-within *) {
|
|
3631
3642
|
--tw-translate-x: calc(var(--spacing) * 0);
|
|
@@ -3676,6 +3687,13 @@
|
|
|
3676
3687
|
}
|
|
3677
3688
|
}
|
|
3678
3689
|
}
|
|
3690
|
+
.group-hover\/logo\:opacity-100 {
|
|
3691
|
+
&:is(:where(.group\/logo):hover *) {
|
|
3692
|
+
@media (hover: hover) {
|
|
3693
|
+
opacity: 100%;
|
|
3694
|
+
}
|
|
3695
|
+
}
|
|
3696
|
+
}
|
|
3679
3697
|
.group-hover\/tip\:translate-x-0 {
|
|
3680
3698
|
&:is(:where(.group\/tip):hover *) {
|
|
3681
3699
|
@media (hover: hover) {
|
package/dist/index.js
CHANGED
|
@@ -148,7 +148,7 @@ import {
|
|
|
148
148
|
buildUnifiedPatch,
|
|
149
149
|
computeDiffStats,
|
|
150
150
|
resolveLanguage
|
|
151
|
-
} from "./chunk-
|
|
151
|
+
} from "./chunk-MGIOO3RL.js";
|
|
152
152
|
import {
|
|
153
153
|
FileArtifactPane,
|
|
154
154
|
FilePreview,
|
|
@@ -211,7 +211,7 @@ import {
|
|
|
211
211
|
canAdminSandbox,
|
|
212
212
|
parseInsufficientBalance,
|
|
213
213
|
useSidebar
|
|
214
|
-
} from "./chunk-
|
|
214
|
+
} from "./chunk-RT4MLYYM.js";
|
|
215
215
|
import {
|
|
216
216
|
BillingDashboard,
|
|
217
217
|
InfoPanel,
|
package/dist/integrations.d.ts
CHANGED
|
@@ -60,6 +60,24 @@ interface IntegrationsPanelProps {
|
|
|
60
60
|
* thrown error inline.
|
|
61
61
|
*/
|
|
62
62
|
onDisconnect: (connectionId: string) => void | Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Resolver for a connected app's management page URL. When it returns a URL,
|
|
65
|
+
* the connected tile's body and the overflow menu's "Manage" item become a
|
|
66
|
+
* real link opened in a new tab (so cmd/middle-click and "open in new tab"
|
|
67
|
+
* work). Return undefined to omit Manage for a given connection. Preferred
|
|
68
|
+
* over `onManage` — only fall back to the callback when the URL must be minted
|
|
69
|
+
* imperatively on click (e.g. a one-time token).
|
|
70
|
+
*/
|
|
71
|
+
getManageHref?: (connection: IntegrationConnection) => string | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Imperative fallback for opening a connected app's management page, used only
|
|
74
|
+
* when `getManageHref` is not supplied (or returns undefined). The consumer is
|
|
75
|
+
* responsible for opening the page (e.g. `window.open(...)`).
|
|
76
|
+
*/
|
|
77
|
+
onManage?: (input: {
|
|
78
|
+
connectionId: string;
|
|
79
|
+
providerId: string;
|
|
80
|
+
}) => void | Promise<void>;
|
|
63
81
|
/** Empty-state message when the catalog hasn't loaded any providers. */
|
|
64
82
|
emptyCatalogLabel?: string;
|
|
65
83
|
/**
|
|
@@ -72,7 +90,7 @@ interface IntegrationsPanelProps {
|
|
|
72
90
|
defaultSort?: IntegrationSort;
|
|
73
91
|
className?: string;
|
|
74
92
|
}
|
|
75
|
-
declare function IntegrationsPanel({ catalog, connections, healthByConnectionId, isLoading, error, onConnect, onDisconnect, emptyCatalogLabel, featuredIds, defaultSort, className, }: IntegrationsPanelProps): react_jsx_runtime.JSX.Element;
|
|
93
|
+
declare function IntegrationsPanel({ catalog, connections, healthByConnectionId, isLoading, error, onConnect, onDisconnect, getManageHref, onManage, emptyCatalogLabel, featuredIds, defaultSort, className, }: IntegrationsPanelProps): react_jsx_runtime.JSX.Element;
|
|
76
94
|
|
|
77
95
|
/**
|
|
78
96
|
* Endpoint contract expected on the consumer app's server (which
|
package/dist/integrations.js
CHANGED
|
@@ -16,10 +16,15 @@ import {
|
|
|
16
16
|
DialogFooter,
|
|
17
17
|
DialogHeader,
|
|
18
18
|
DialogTitle,
|
|
19
|
+
DropdownMenu,
|
|
20
|
+
DropdownMenuContent,
|
|
21
|
+
DropdownMenuItem,
|
|
22
|
+
DropdownMenuSeparator,
|
|
23
|
+
DropdownMenuTrigger,
|
|
19
24
|
EmptyState
|
|
20
25
|
} from "@tangle-network/ui/primitives";
|
|
21
26
|
import { cn } from "@tangle-network/ui/utils";
|
|
22
|
-
import { Check, Search, Unplug } from "lucide-react";
|
|
27
|
+
import { Check, ExternalLink, MoreVertical, Search, Unplug } from "lucide-react";
|
|
23
28
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
24
29
|
var DEFAULT_FEATURED_IDS = [
|
|
25
30
|
"gmail",
|
|
@@ -99,6 +104,8 @@ function IntegrationsPanel({
|
|
|
99
104
|
error,
|
|
100
105
|
onConnect,
|
|
101
106
|
onDisconnect,
|
|
107
|
+
getManageHref,
|
|
108
|
+
onManage,
|
|
102
109
|
emptyCatalogLabel = "No integrations available yet.",
|
|
103
110
|
featuredIds = DEFAULT_FEATURED_IDS,
|
|
104
111
|
defaultSort = "featured",
|
|
@@ -252,6 +259,8 @@ function IntegrationsPanel({
|
|
|
252
259
|
const name = displayNameOf(provider);
|
|
253
260
|
const connected = Boolean(live);
|
|
254
261
|
if (connected && live) {
|
|
262
|
+
const manageHref = getManageHref?.(live);
|
|
263
|
+
const canManage = Boolean(manageHref) || Boolean(onManage);
|
|
255
264
|
return /* @__PURE__ */ jsxs(
|
|
256
265
|
"div",
|
|
257
266
|
{
|
|
@@ -259,56 +268,118 @@ function IntegrationsPanel({
|
|
|
259
268
|
"data-connected": "true",
|
|
260
269
|
title: live.accountDisplay ? `${name} \u2014 ${live.accountDisplay}` : name,
|
|
261
270
|
className: cn(
|
|
262
|
-
"relative flex aspect-square flex-col items-center justify-center gap-2 rounded-xl border p-3 text-center",
|
|
271
|
+
"group relative flex aspect-square flex-col items-center justify-center gap-2 rounded-xl border p-3 text-center",
|
|
263
272
|
"border-[var(--surface-success-border)] bg-[var(--surface-success-bg)]"
|
|
264
273
|
),
|
|
265
274
|
children: [
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
"button",
|
|
275
|
+
manageHref ? /* @__PURE__ */ jsx(
|
|
276
|
+
"a",
|
|
269
277
|
{
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
"data-testid": `disconnect-${provider.providerId}`,
|
|
277
|
-
"aria-label": `Disconnect ${name}`,
|
|
278
|
-
title: "Disconnect",
|
|
279
|
-
className: "absolute right-1.5 top-1.5 flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground/70 transition-colors hover:bg-background hover:text-foreground focus-visible:bg-background focus-visible:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",
|
|
280
|
-
children: /* @__PURE__ */ jsx(Unplug, { className: "h-3.5 w-3.5" })
|
|
278
|
+
href: manageHref,
|
|
279
|
+
target: "_blank",
|
|
280
|
+
rel: "noopener noreferrer",
|
|
281
|
+
"aria-label": `Manage ${name} (opens in new window)`,
|
|
282
|
+
"data-testid": `manage-${provider.providerId}`,
|
|
283
|
+
className: "absolute inset-0 z-10 rounded-xl focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/40"
|
|
281
284
|
}
|
|
282
|
-
),
|
|
283
|
-
/* @__PURE__ */ jsx(
|
|
284
|
-
|
|
285
|
-
{
|
|
286
|
-
id: provider.providerId,
|
|
287
|
-
iconUrl: provider.iconUrl,
|
|
288
|
-
displayName: provider.displayName,
|
|
289
|
-
size: LOGO_SIZE,
|
|
290
|
-
className: "rounded-2xl"
|
|
291
|
-
}
|
|
292
|
-
),
|
|
293
|
-
/* @__PURE__ */ jsxs("div", { className: "flex h-8 w-full flex-col justify-center leading-4", children: [
|
|
285
|
+
) : null,
|
|
286
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 top-2 flex h-4 w-4 items-center justify-center rounded-full bg-[var(--surface-success-text)] text-white", children: /* @__PURE__ */ jsx(Check, { className: "h-3 w-3", strokeWidth: 3 }) }),
|
|
287
|
+
/* @__PURE__ */ jsxs("div", { className: "pointer-events-none flex flex-col items-center gap-2", children: [
|
|
294
288
|
/* @__PURE__ */ jsx(
|
|
295
|
-
|
|
289
|
+
ProviderIcon,
|
|
296
290
|
{
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
291
|
+
id: provider.providerId,
|
|
292
|
+
iconUrl: provider.iconUrl,
|
|
293
|
+
displayName: provider.displayName,
|
|
294
|
+
size: LOGO_SIZE,
|
|
295
|
+
className: "rounded-2xl"
|
|
302
296
|
}
|
|
303
297
|
),
|
|
304
|
-
|
|
305
|
-
|
|
298
|
+
/* @__PURE__ */ jsxs("div", { className: "flex h-8 w-full flex-col justify-center leading-4", children: [
|
|
299
|
+
/* @__PURE__ */ jsx(
|
|
300
|
+
"span",
|
|
301
|
+
{
|
|
302
|
+
className: cn(
|
|
303
|
+
"w-full text-xs font-medium text-foreground",
|
|
304
|
+
live.accountDisplay ? "truncate" : "line-clamp-2"
|
|
305
|
+
),
|
|
306
|
+
children: name
|
|
307
|
+
}
|
|
308
|
+
),
|
|
309
|
+
live.accountDisplay ? /* @__PURE__ */ jsx(
|
|
310
|
+
"span",
|
|
311
|
+
{
|
|
312
|
+
className: "w-full truncate text-[11px] leading-4 text-muted-foreground",
|
|
313
|
+
"data-testid": `account-${provider.providerId}`,
|
|
314
|
+
children: live.accountDisplay
|
|
315
|
+
}
|
|
316
|
+
) : null
|
|
317
|
+
] })
|
|
318
|
+
] }),
|
|
319
|
+
manageHref ? /* @__PURE__ */ jsx(
|
|
320
|
+
ExternalLink,
|
|
321
|
+
{
|
|
322
|
+
"aria-hidden": true,
|
|
323
|
+
className: "pointer-events-none absolute bottom-1.5 right-1.5 h-3.5 w-3.5 text-muted-foreground/70 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100"
|
|
324
|
+
}
|
|
325
|
+
) : null,
|
|
326
|
+
/* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
327
|
+
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
328
|
+
"button",
|
|
306
329
|
{
|
|
307
|
-
|
|
308
|
-
"data-testid": `
|
|
309
|
-
|
|
330
|
+
type: "button",
|
|
331
|
+
"data-testid": `menu-${provider.providerId}`,
|
|
332
|
+
"aria-label": `More actions for ${name}`,
|
|
333
|
+
title: "More actions",
|
|
334
|
+
className: "absolute right-1.5 top-1.5 z-20 flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground/70 transition-colors hover:bg-background hover:text-foreground focus-visible:bg-background focus-visible:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",
|
|
335
|
+
children: /* @__PURE__ */ jsx(MoreVertical, { className: "h-3.5 w-3.5" })
|
|
310
336
|
}
|
|
311
|
-
)
|
|
337
|
+
) }),
|
|
338
|
+
/* @__PURE__ */ jsxs(DropdownMenuContent, { align: "end", className: "min-w-[160px]", children: [
|
|
339
|
+
manageHref ? /* @__PURE__ */ jsx(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
340
|
+
"a",
|
|
341
|
+
{
|
|
342
|
+
href: manageHref,
|
|
343
|
+
target: "_blank",
|
|
344
|
+
rel: "noopener noreferrer",
|
|
345
|
+
"data-testid": `manage-item-${provider.providerId}`,
|
|
346
|
+
children: [
|
|
347
|
+
/* @__PURE__ */ jsx(ExternalLink, { className: "mr-2 h-4 w-4" }),
|
|
348
|
+
" Manage"
|
|
349
|
+
]
|
|
350
|
+
}
|
|
351
|
+
) }) : onManage ? /* @__PURE__ */ jsxs(
|
|
352
|
+
DropdownMenuItem,
|
|
353
|
+
{
|
|
354
|
+
"data-testid": `manage-item-${provider.providerId}`,
|
|
355
|
+
onClick: () => onManage({
|
|
356
|
+
connectionId: live.id,
|
|
357
|
+
providerId: provider.providerId
|
|
358
|
+
}),
|
|
359
|
+
children: [
|
|
360
|
+
/* @__PURE__ */ jsx(ExternalLink, { className: "mr-2 h-4 w-4" }),
|
|
361
|
+
" Manage"
|
|
362
|
+
]
|
|
363
|
+
}
|
|
364
|
+
) : null,
|
|
365
|
+
canManage ? /* @__PURE__ */ jsx(DropdownMenuSeparator, {}) : null,
|
|
366
|
+
/* @__PURE__ */ jsxs(
|
|
367
|
+
DropdownMenuItem,
|
|
368
|
+
{
|
|
369
|
+
"data-testid": `disconnect-${provider.providerId}`,
|
|
370
|
+
className: "text-destructive focus:text-destructive",
|
|
371
|
+
onClick: () => setDisconnectTarget({
|
|
372
|
+
connectionId: live.id,
|
|
373
|
+
name,
|
|
374
|
+
accountDisplay: live.accountDisplay
|
|
375
|
+
}),
|
|
376
|
+
children: [
|
|
377
|
+
/* @__PURE__ */ jsx(Unplug, { className: "mr-2 h-4 w-4" }),
|
|
378
|
+
" Disconnect"
|
|
379
|
+
]
|
|
380
|
+
}
|
|
381
|
+
)
|
|
382
|
+
] })
|
|
312
383
|
] })
|
|
313
384
|
]
|
|
314
385
|
},
|
package/dist/pages.d.ts
CHANGED
|
@@ -202,7 +202,7 @@ interface ProvisioningConfig {
|
|
|
202
202
|
key: string;
|
|
203
203
|
value: string;
|
|
204
204
|
}[];
|
|
205
|
-
driver: "docker" | "firecracker" | "host-agent
|
|
205
|
+
driver: "docker" | "firecracker" | "host-agent" | "tangle";
|
|
206
206
|
bare: boolean;
|
|
207
207
|
startupScriptIds?: string[];
|
|
208
208
|
}
|
package/dist/styles.css
CHANGED
|
@@ -392,6 +392,9 @@
|
|
|
392
392
|
.bottom-1 {
|
|
393
393
|
bottom: calc(var(--spacing) * 1);
|
|
394
394
|
}
|
|
395
|
+
.bottom-1\.5 {
|
|
396
|
+
bottom: calc(var(--spacing) * 1.5);
|
|
397
|
+
}
|
|
395
398
|
.bottom-2 {
|
|
396
399
|
bottom: calc(var(--spacing) * 2);
|
|
397
400
|
}
|
|
@@ -437,6 +440,9 @@
|
|
|
437
440
|
.z-10 {
|
|
438
441
|
z-index: 10;
|
|
439
442
|
}
|
|
443
|
+
.z-20 {
|
|
444
|
+
z-index: 20;
|
|
445
|
+
}
|
|
440
446
|
.z-30 {
|
|
441
447
|
z-index: 30;
|
|
442
448
|
}
|
|
@@ -3626,6 +3632,11 @@
|
|
|
3626
3632
|
rotate: 180deg;
|
|
3627
3633
|
}
|
|
3628
3634
|
}
|
|
3635
|
+
.group-focus-within\:opacity-100 {
|
|
3636
|
+
&:is(:where(.group):focus-within *) {
|
|
3637
|
+
opacity: 100%;
|
|
3638
|
+
}
|
|
3639
|
+
}
|
|
3629
3640
|
.group-focus-within\/tip\:translate-x-0 {
|
|
3630
3641
|
&:is(:where(.group\/tip):focus-within *) {
|
|
3631
3642
|
--tw-translate-x: calc(var(--spacing) * 0);
|
|
@@ -3676,6 +3687,13 @@
|
|
|
3676
3687
|
}
|
|
3677
3688
|
}
|
|
3678
3689
|
}
|
|
3690
|
+
.group-hover\/logo\:opacity-100 {
|
|
3691
|
+
&:is(:where(.group\/logo):hover *) {
|
|
3692
|
+
@media (hover: hover) {
|
|
3693
|
+
opacity: 100%;
|
|
3694
|
+
}
|
|
3695
|
+
}
|
|
3696
|
+
}
|
|
3679
3697
|
.group-hover\/tip\:translate-x-0 {
|
|
3680
3698
|
&:is(:where(.group\/tip):hover *) {
|
|
3681
3699
|
@media (hover: hover) {
|
package/dist/workbench.js
CHANGED
|
@@ -12,9 +12,9 @@ import {
|
|
|
12
12
|
buildUnifiedPatch,
|
|
13
13
|
computeDiffStats,
|
|
14
14
|
resolveLanguage
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-MGIOO3RL.js";
|
|
16
16
|
import "./chunk-3J6FG3FJ.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-RT4MLYYM.js";
|
|
18
18
|
import "./chunk-OMUIPJQZ.js";
|
|
19
19
|
import "./chunk-VIREDUBF.js";
|
|
20
20
|
import "./chunk-77WVVJA4.js";
|
package/package.json
CHANGED