@tangle-network/sandbox-ui 0.117.2 → 0.118.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/{WorkflowGraph-CzWs8P7y.js → WorkflowGraph-E2Gqe8sl.js} +25 -12
- package/dist/chat.js +1 -1
- package/dist/connections.js +1 -1
- package/dist/connectors.js +1 -1
- package/dist/{dashboard-DdUTq0so.js → dashboard-D4un5GtD.js} +12 -12
- package/dist/dashboard.js +1 -1
- package/dist/globals.css +410 -344
- package/dist/index-BHopt1SR.d.ts +30 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +9 -9
- package/dist/integrations.js +48 -83
- package/dist/markdown.d.ts +2 -2
- package/dist/markdown.js +2 -2
- package/dist/pages.js +11 -11
- package/dist/primitives-N-59i3-7.js +25 -0
- package/dist/primitives.d.ts +2 -2
- package/dist/primitives.js +1 -1
- package/dist/styles.css +410 -344
- package/dist/tokens.css +85 -4
- package/dist/workbench/embedded-app.js +1 -1
- package/dist/{workbench-CN7bm93p.js → workbench-DxYaeFaa.js} +3 -3
- package/dist/workbench.js +2 -2
- package/dist/workflows.js +1 -1
- package/dist/workspace.js +1 -1
- package/package.json +5 -5
- package/dist/index-ez0RxbPT.d.ts +0 -86
- package/dist/primitives-BnVvXgcl.js +0 -113
- package/dist/{chat-Ci6Xi1rd.js → chat-Xqhcoxmw.js} +1 -1
- package/dist/{connections-DDRGYDvF.js → connections-C5DxYxvz.js} +1 -1
- package/dist/{embedded-app-view-CoiS_kfY.js → embedded-app-view-CMRPEvon.js} +1 -1
- package/dist/{workspace-fIHRXmWT.js → workspace--bNv-rQy.js} +2 -2
package/dist/tokens.css
CHANGED
|
@@ -30,10 +30,26 @@
|
|
|
30
30
|
* work here. The hairline is about 1.5:1 against the resting card — quiet by design,
|
|
31
31
|
* enough to state an edge without drawing a box around every panel.
|
|
32
32
|
*/
|
|
33
|
+
/* Seed a complete baseline on every supported boundary BEFORE mode overrides.
|
|
34
|
+
* Inherited var() aliases are already substituted at their parent; declaring
|
|
35
|
+
* them here lets a nested light/dark/named scope resolve its own palette.
|
|
36
|
+
* Light scopes are deliberately included in this baseline, then override it
|
|
37
|
+
* below. Named themes only author their product-specific differences. */
|
|
33
38
|
:root,
|
|
34
39
|
[data-sandbox-ui],
|
|
40
|
+
[data-sandbox-theme="vault"],
|
|
41
|
+
[data-sandbox-theme="dawn"],
|
|
35
42
|
[data-theme="dark"],
|
|
43
|
+
[data-theme="light"],
|
|
44
|
+
[data-theme="aubergine"],
|
|
45
|
+
[data-theme="aubergine-light"],
|
|
46
|
+
[data-theme="arena"],
|
|
47
|
+
[data-theme="arena-light"],
|
|
48
|
+
[data-theme="tangle-dark"],
|
|
49
|
+
[data-theme="tangle-light"],
|
|
50
|
+
.light,
|
|
36
51
|
.dark {
|
|
52
|
+
color-scheme: dark;
|
|
37
53
|
--md3-surface: #161616; /* L0 page canvas */
|
|
38
54
|
--md3-surface-dim: #101010; /* recessed page */
|
|
39
55
|
--md3-surface-bright: #3b3b3b;
|
|
@@ -66,6 +82,7 @@
|
|
|
66
82
|
--md3-on-secondary-container: #E8E5FF;
|
|
67
83
|
|
|
68
84
|
--md3-tertiary: #10B981;
|
|
85
|
+
--md3-tertiary-container: var(--surface-success-bg);
|
|
69
86
|
--md3-outline: #8e8e8e;
|
|
70
87
|
--md3-outline-variant: #4c4c4c;
|
|
71
88
|
|
|
@@ -390,7 +407,8 @@
|
|
|
390
407
|
--tool-card-py: 0.5rem;
|
|
391
408
|
--tool-icon-size: 1.75rem;
|
|
392
409
|
|
|
393
|
-
/* Syntax highlighting —
|
|
410
|
+
/* Syntax highlighting — the light palette is authored below. */
|
|
411
|
+
--code-header-bg: hsl(var(--hsl-background));
|
|
394
412
|
--syntax-comment: #8b8fbc;
|
|
395
413
|
--syntax-keyword: #A78FFF;
|
|
396
414
|
--syntax-string: #10b981;
|
|
@@ -401,7 +419,29 @@
|
|
|
401
419
|
--syntax-variable: #C4C0D8;
|
|
402
420
|
--syntax-foreground: #E8E6F6;
|
|
403
421
|
|
|
404
|
-
/*
|
|
422
|
+
/* Shared motion vocabulary, previously authored by the light-default Agent
|
|
423
|
+
* App consumer. These are tokens only, not automatic animation classes. */
|
|
424
|
+
--duration-instant: 90ms;
|
|
425
|
+
--duration-fast: 150ms;
|
|
426
|
+
--duration-base: 240ms;
|
|
427
|
+
--duration-slow: 360ms;
|
|
428
|
+
--duration-stream: 420ms;
|
|
429
|
+
--duration-arrive: 600ms;
|
|
430
|
+
--ease-standard: cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
431
|
+
--ease-entrance: cubic-bezier(0.22, 1, 0.36, 1);
|
|
432
|
+
--ease-exit: cubic-bezier(0.4, 0, 1, 1);
|
|
433
|
+
--ease-expo: cubic-bezier(0.23, 1, 0.32, 1);
|
|
434
|
+
--motion-control: var(--duration-fast) var(--ease-standard);
|
|
435
|
+
--motion-surface: var(--duration-base) var(--ease-entrance);
|
|
436
|
+
--motion-dismiss: var(--duration-instant) var(--ease-exit);
|
|
437
|
+
--motion-stream: var(--duration-stream) var(--ease-expo);
|
|
438
|
+
--motion-arrive: var(--duration-arrive) var(--ease-expo);
|
|
439
|
+
--stagger-step: 50ms;
|
|
440
|
+
--stagger-index: 0;
|
|
441
|
+
--arrive-distance: 8px;
|
|
442
|
+
--stream-blur: 4px;
|
|
443
|
+
|
|
444
|
+
/* Transitions — retain the existing Brand timings. */
|
|
405
445
|
--transition-fast: 0.1s ease;
|
|
406
446
|
--transition-default: 0.16s ease;
|
|
407
447
|
--transition-medium: 0.24s ease;
|
|
@@ -416,10 +456,25 @@
|
|
|
416
456
|
* `[data-theme="light"]` / `.light` switch. Both blocks are single-attribute/
|
|
417
457
|
* class selectors, and this one is later in source order, so when an element
|
|
418
458
|
* carries both `data-sandbox-ui` (dark) and `data-theme="light"`, light wins. */
|
|
419
|
-
[data-sandbox-theme="vault"],
|
|
459
|
+
[data-sandbox-theme="vault"]:where(:not(.dark)),
|
|
460
|
+
[data-sandbox-theme="dawn"]:where(:not(.dark)),
|
|
420
461
|
[data-theme="light"],
|
|
462
|
+
[data-theme="aubergine-light"],
|
|
463
|
+
[data-theme="arena-light"],
|
|
464
|
+
[data-theme="tangle-light"],
|
|
421
465
|
.light {
|
|
466
|
+
color-scheme: light;
|
|
422
467
|
/* Light theme — neutral surfaces with purple accents */
|
|
468
|
+
--code-header-bg: color-mix(in srgb, hsl(var(--hsl-muted)) 50%, transparent);
|
|
469
|
+
--syntax-foreground: #24292f;
|
|
470
|
+
--syntax-comment: #57606a;
|
|
471
|
+
--syntax-keyword: #6d28d9;
|
|
472
|
+
--syntax-string: #047857;
|
|
473
|
+
--syntax-function: #1d4ed8;
|
|
474
|
+
--syntax-number: #92400e;
|
|
475
|
+
--syntax-meta: #7c3aed;
|
|
476
|
+
--syntax-variable: #24292f;
|
|
477
|
+
--syntax-error: #b91c1c;
|
|
423
478
|
|
|
424
479
|
/* MD3 surface hierarchy */
|
|
425
480
|
/* The light ladder ALTERNATES; it is not monotonic, and that is deliberate.
|
|
@@ -752,7 +807,8 @@
|
|
|
752
807
|
/* Light: the accent is the indigo fill (#4c3fc6, 7.41:1 on white) and the tier
|
|
753
808
|
* ramp runs light to dark. `[data-theme$="-light"]` covers the named light
|
|
754
809
|
* themes, which would otherwise inherit the dark ramp from :root. */
|
|
755
|
-
[data-sandbox-theme="vault"],
|
|
810
|
+
[data-sandbox-theme="vault"]:where(:not(.dark)),
|
|
811
|
+
[data-sandbox-theme="dawn"]:where(:not(.dark)),
|
|
756
812
|
[data-theme="light"],
|
|
757
813
|
.light,
|
|
758
814
|
[data-theme$="-light"] {
|
|
@@ -762,3 +818,28 @@
|
|
|
762
818
|
--chart-tier-a: #5b5bd6;
|
|
763
819
|
--chart-tier-s: #272962;
|
|
764
820
|
}
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
/* Motion is opt-in at the component, but its reduced-motion preference is
|
|
824
|
+
* shared. Re-declare composites at the same boundary as their durations. */
|
|
825
|
+
@media (prefers-reduced-motion: reduce) {
|
|
826
|
+
:root,
|
|
827
|
+
.dark,
|
|
828
|
+
.light,
|
|
829
|
+
[data-sandbox-ui],
|
|
830
|
+
[data-sandbox-theme],
|
|
831
|
+
[data-theme] {
|
|
832
|
+
--duration-instant: 0ms;
|
|
833
|
+
--duration-fast: 0ms;
|
|
834
|
+
--duration-base: 0ms;
|
|
835
|
+
--duration-slow: 0ms;
|
|
836
|
+
--duration-stream: 0ms;
|
|
837
|
+
--duration-arrive: 0ms;
|
|
838
|
+
--stagger-step: 0ms;
|
|
839
|
+
--motion-control: var(--duration-fast) var(--ease-standard);
|
|
840
|
+
--motion-surface: var(--duration-base) var(--ease-entrance);
|
|
841
|
+
--motion-dismiss: var(--duration-instant) var(--ease-exit);
|
|
842
|
+
--motion-stream: var(--duration-stream) var(--ease-expo);
|
|
843
|
+
--motion-arrive: var(--duration-arrive) var(--ease-expo);
|
|
844
|
+
}
|
|
845
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as EmbeddedAppView } from "../embedded-app-view-
|
|
1
|
+
import { t as EmbeddedAppView } from "../embedded-app-view-CMRPEvon.js";
|
|
2
2
|
export { EmbeddedAppView };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { t as cn$1 } from "./utils-DzWbktWG.js";
|
|
2
|
-
import { o as PortsList } from "./dashboard-
|
|
2
|
+
import { o as PortsList } from "./dashboard-D4un5GtD.js";
|
|
3
3
|
import { n as TerminalView } from "./terminal-DmSUfGha.js";
|
|
4
4
|
import { RichFileTree } from "./files.js";
|
|
5
|
-
import { n as PreviewView } from "./embedded-app-view-
|
|
5
|
+
import { n as PreviewView } from "./embedded-app-view-CMRPEvon.js";
|
|
6
6
|
import { Button, Skeleton, Textarea } from "@tangle-network/ui/primitives";
|
|
7
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import * as React$1 from "react";
|
|
9
9
|
import React from "react";
|
|
10
|
-
import { focusRing, focusRingInset } from "@tangle-network/ui/utils";
|
|
11
10
|
import { Check, ChevronRight, Code2, Copy, FileCode2, GitBranch, GitCompare, Globe, Network, RefreshCw, SquareTerminal } from "lucide-react";
|
|
11
|
+
import { focusRing, focusRingInset } from "@tangle-network/ui/utils";
|
|
12
12
|
import { FileDiff, getSingularPatch } from "@pierre/diffs";
|
|
13
13
|
import { createTwoFilesPatch, diffLines } from "diff";
|
|
14
14
|
//#region \0rolldown/runtime.js
|
package/dist/workbench.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-
|
|
2
|
-
import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-
|
|
1
|
+
import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-DxYaeFaa.js";
|
|
2
|
+
import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CMRPEvon.js";
|
|
3
3
|
export { BRAND_PRISM_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats, resolveLanguage };
|
package/dist/workflows.js
CHANGED
|
@@ -30,7 +30,7 @@ function retryImport(factory, retries = 2, delayMs = 350) {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
function lazyWorkflowGraph() {
|
|
33
|
-
return lazy(() => retryImport(() => import("./WorkflowGraph-
|
|
33
|
+
return lazy(() => retryImport(() => import("./WorkflowGraph-E2Gqe8sl.js").then((m) => ({ default: m.WorkflowGraph }))));
|
|
34
34
|
}
|
|
35
35
|
var GraphErrorBoundary = class extends Component {
|
|
36
36
|
state = { hasError: false };
|
package/dist/workspace.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
|
|
2
|
-
import { _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace-
|
|
2
|
+
import { _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace--bNv-rQy.js";
|
|
3
3
|
export { AgentWorkbench, ApprovalQueue, ArtifactPane, AuditResults, CalendarView, DirectoryPane, RuntimePane, SESSION_CREATED_EVENT, SandboxWorkbench, SessionActivityMonitor, SessionSidebar, StatusBanner, StatusBar, TaskBoard, TerminalPanel, WorkspaceLayout, WorkspacePaneHeader, createShellShouldRevalidate, dispatchSessionCreated, formatRelativeAge, shellShouldRevalidate, useOptimisticSessionItems };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/sandbox-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.118.0",
|
|
4
4
|
"description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -127,8 +127,8 @@
|
|
|
127
127
|
"@hocuspocus/provider": ">=2.15.0 <5.0.0",
|
|
128
128
|
"@nanostores/react": ">=0.8.4 <2.0.0",
|
|
129
129
|
"@tangle-network/agent-interface": "^1.0.0 || ^2.0.0",
|
|
130
|
-
"@tangle-network/brand": "^1.
|
|
131
|
-
"@tangle-network/ui": "^11.
|
|
130
|
+
"@tangle-network/brand": "^1.10.0",
|
|
131
|
+
"@tangle-network/ui": "^11.13.0",
|
|
132
132
|
"@tanstack/react-query": "^5.0.0",
|
|
133
133
|
"@tiptap/core": ">=3.20.4 <4.0.0",
|
|
134
134
|
"@tiptap/extension-collaboration": ">=3.20.4 <4.0.0",
|
|
@@ -213,8 +213,8 @@
|
|
|
213
213
|
"@storybook/react-vite": "^10.6.0",
|
|
214
214
|
"@tailwindcss/postcss": "^4.3.3",
|
|
215
215
|
"@tangle-network/agent-interface": "2.13.1",
|
|
216
|
-
"@tangle-network/brand": "
|
|
217
|
-
"@tangle-network/ui": "
|
|
216
|
+
"@tangle-network/brand": "1.10.0",
|
|
217
|
+
"@tangle-network/ui": "11.13.0",
|
|
218
218
|
"@tanstack/react-query": "^5.104.0",
|
|
219
219
|
"@testing-library/dom": "^10.4.2",
|
|
220
220
|
"@testing-library/jest-dom": "^7.0.1",
|
package/dist/index-ez0RxbPT.d.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { ArtifactPane as ArtifactPane$1, ArtifactPaneProps, Avatar as Avatar$1, AvatarFallback as AvatarFallback$1, AvatarImage as AvatarImage$1, Badge as Badge$1, BadgeProps, Button as Button$1, ButtonProps as ButtonProps$1, Card as Card$1, CardContent as CardContent$1, CardDescription as CardDescription$1, CardFooter, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CodeBlock, CodeBlockProps, CopyButton, Dialog as Dialog$1, DialogClose, DialogContent as DialogContent$1, DialogDescription as DialogDescription$1, DialogFooter as DialogFooter$1, DialogHeader as DialogHeader$1, DialogOverlay, DialogPortal, DialogTitle as DialogTitle$1, DialogTrigger, DropZone, DropZoneProps, DropdownMenu as DropdownMenu$1, DropdownMenuCheckboxItem, DropdownMenuContent as DropdownMenuContent$1, DropdownMenuGroup, DropdownMenuItem as DropdownMenuItem$1, DropdownMenuLabel as DropdownMenuLabel$1, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator as DropdownMenuSeparator$1, DropdownMenuShortcut, DropdownMenuSub as DropdownMenuSub$1, DropdownMenuSubContent as DropdownMenuSubContent$1, DropdownMenuSubTrigger as DropdownMenuSubTrigger$1, DropdownMenuTrigger as DropdownMenuTrigger$1, EmptyState as EmptyState$1, EmptyStateProps, FilterField, FilterFieldProps, InlineCode, InlineCodeProps, Input as Input$1, InputProps, Label as Label$1, Metric, MetricProps, MetricStrip, MetricStripProps, Progress as Progress$1, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select as Select$1, SelectContent as SelectContent$1, SelectGroup, SelectItem as SelectItem$1, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger as SelectTrigger$1, SelectValue as SelectValue$1, SidebarDropZone, SidebarDropZoneProps, Skeleton as Skeleton$1, SkeletonCard as SkeletonCard$1, SkeletonTable, StatCard as StatCard$1, StatCardProps, StatusPill, StatusPillProps, StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, TextShimmerProps, Textarea as Textarea$1, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, Toolbar, ToolbarProps, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, buttonVariants, useTheme as useTheme$1, useToast } from "@tangle-network/ui/primitives";
|
|
2
|
-
import { TangleKnot as TangleKnot$1 } from "@tangle-network/brand";
|
|
3
|
-
import { ElementType, HTMLAttributes, ReactNode } from "react";
|
|
4
|
-
//#region src/primitives/logo.d.ts
|
|
5
|
-
interface LogoProps {
|
|
6
|
-
variant?: "sandbox";
|
|
7
|
-
size?: "sm" | "md" | "lg" | "xl";
|
|
8
|
-
className?: string;
|
|
9
|
-
iconOnly?: boolean;
|
|
10
|
-
}
|
|
11
|
-
/** Keep the Sandbox wordmark API while Brand owns the mark and layout. */
|
|
12
|
-
declare function Logo$1({ variant, size, className, iconOnly }: LogoProps): import("react").JSX.Element;
|
|
13
|
-
declare namespace Logo$1 {
|
|
14
|
-
var displayName: string;
|
|
15
|
-
}
|
|
16
|
-
//#endregion
|
|
17
|
-
//#region src/primitives/heading.d.ts
|
|
18
|
-
/**
|
|
19
|
-
* Canonical type roles for the Tangle design system. Every title in every
|
|
20
|
-
* product app should be a Heading (or a PageHeader / SectionTitle composite
|
|
21
|
-
* built on it) so size, weight, tracking, and leading stay identical across
|
|
22
|
-
* surfaces. Sizes/leadings/tracking resolve from @tangle-network/brand tokens
|
|
23
|
-
* (with literal fallbacks so the component still renders if brand styles are
|
|
24
|
-
* absent, e.g. in isolation tests or Storybook).
|
|
25
|
-
*
|
|
26
|
-
* Weights are deliberately quiet (Tangle Quiet): heroes at 700, titles at 600
|
|
27
|
-
* — never extrabold.
|
|
28
|
-
*
|
|
29
|
-
* Semantic-tag invariant: both `display` and `page` default to <h1>. Use at
|
|
30
|
-
* most one of them per page (the marketing hero OR the dashboard page title);
|
|
31
|
-
* if a page needs both, override the secondary one with `as` to keep a single
|
|
32
|
-
* <h1> for accessibility and SEO.
|
|
33
|
-
*/
|
|
34
|
-
type HeadingVariant = "display" | "hero" | "page" | "section" | "subsection" | "eyebrow";
|
|
35
|
-
interface HeadingProps extends Omit<HTMLAttributes<HTMLElement>, "role"> {
|
|
36
|
-
/** Type role from the design system (size + weight + tracking + leading). */
|
|
37
|
-
role: HeadingVariant;
|
|
38
|
-
/** Override the rendered element (defaults to the semantic tag for the role). */
|
|
39
|
-
as?: ElementType;
|
|
40
|
-
children: ReactNode;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Role-based heading. Forwards a ref to the underlying element and passes
|
|
44
|
-
* through standard HTML/ARIA/data-* attributes so it drops into tests,
|
|
45
|
-
* scroll-spy, and a11y tooling without friction.
|
|
46
|
-
*/
|
|
47
|
-
declare const Heading: import("react").ForwardRefExoticComponent<HeadingProps & import("react").RefAttributes<HTMLElement>>;
|
|
48
|
-
interface PageHeaderProps {
|
|
49
|
-
title: ReactNode;
|
|
50
|
-
description?: ReactNode;
|
|
51
|
-
/** Uppercase label rendered above the title. */
|
|
52
|
-
eyebrow?: ReactNode;
|
|
53
|
-
/** Primary action(s), right-aligned on wide viewports. */
|
|
54
|
-
action?: ReactNode;
|
|
55
|
-
className?: string;
|
|
56
|
-
/** Override the title element (default h1). */
|
|
57
|
-
titleAs?: ElementType;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Standard page header: one title size, one description style, one action
|
|
61
|
-
* slot — used by every page so titles never drift between surfaces.
|
|
62
|
-
*/
|
|
63
|
-
declare function PageHeader({ title, description, eyebrow, action, className, titleAs }: PageHeaderProps): import("react").JSX.Element;
|
|
64
|
-
interface SectionTitleProps {
|
|
65
|
-
title: ReactNode;
|
|
66
|
-
description?: ReactNode;
|
|
67
|
-
action?: ReactNode;
|
|
68
|
-
className?: string;
|
|
69
|
-
}
|
|
70
|
-
/** Section heading inside a page — smaller than PageHeader, same rhythm. */
|
|
71
|
-
declare function SectionTitle({ title, description, action, className }: SectionTitleProps): import("react").JSX.Element;
|
|
72
|
-
//#endregion
|
|
73
|
-
//#region src/primitives/page-shell.d.ts
|
|
74
|
-
interface PageShellProps {
|
|
75
|
-
children: ReactNode;
|
|
76
|
-
className?: string;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Canonical page container — one max-width, one gutter, one vertical rhythm
|
|
80
|
-
* so every page sits on the same grid. Gutter widens on large viewports.
|
|
81
|
-
* Layout primitive (not a heading); kept in its own module so consumers
|
|
82
|
-
* looking for page layout don't have to reach into the typography file.
|
|
83
|
-
*/
|
|
84
|
-
declare function PageShell({ children, className }: PageShellProps): import("react").JSX.Element;
|
|
85
|
-
//#endregion
|
|
86
|
-
export { InputProps as $, ToastProvider as $t, DropZoneProps as A, Table as At, DropdownMenuSeparator$1 as B, TabsList$1 as Bt, DialogFooter$1 as C, SkeletonTable as Ct, DialogTitle$1 as D, StatusPillProps as Dt, DialogPortal as E, StatusPill as Et, DropdownMenuItem$1 as F, TableHead as Ft, DropdownMenuTrigger$1 as G, TerminalLine as Gt, DropdownMenuSub$1 as H, TerminalCursor as Ht, DropdownMenuLabel$1 as I, TableHeader as It, FilterField as J, Textarea$1 as Jt, EmptyState$1 as K, TextShimmer as Kt, DropdownMenuPortal as L, TableRow as Lt, DropdownMenuCheckboxItem as M, TableCaption as Mt, DropdownMenuContent$1 as N, TableCell as Nt, DialogTrigger as O, StatusTone as Ot, DropdownMenuGroup as P, TableFooter as Pt, Input$1 as Q, ToastContainer as Qt, DropdownMenuRadioGroup as R, Tabs$1 as Rt, DialogDescription$1 as S, SkeletonCard$1 as St, DialogOverlay as T, StatCardProps as Tt, DropdownMenuSubContent$1 as U, TerminalDisplay as Ut, DropdownMenuShortcut as V, TabsTrigger$1 as Vt, DropdownMenuSubTrigger$1 as W, TerminalInput as Wt, InlineCode as X, ThemeToggle as Xt, FilterFieldProps as Y, TextareaProps as Yt, InlineCodeProps as Z, Toast as Zt, CodeBlockProps as _, SectionTitleProps as _n, SelectTrigger$1 as _t, AvatarImage$1 as a, badgeVariants as an, Progress$1 as at, DialogClose as b, TangleKnot$1 as bn, SidebarDropZoneProps as bt, Button$1 as c, useToast as cn, SegmentedControlProps as ct, CardContent$1 as d, Heading as dn, SelectGroup as dt, Toolbar as en, Label$1 as et, CardDescription$1 as f, HeadingProps as fn, SelectItem$1 as ft, CodeBlock as g, SectionTitle as gn, SelectSeparator as gt, CardTitle$1 as h, PageHeaderProps as hn, SelectScrollUpButton as ht, AvatarFallback$1 as i, UploadProgressProps as in, MetricStripProps as it, DropdownMenu$1 as j, TableBody as jt, DropZone as k, Switch as kt, ButtonProps$1 as l, PageShell as ln, Select$1 as lt, CardHeader$1 as m, PageHeader as mn, SelectScrollDownButton as mt, ArtifactPaneProps as n, UploadFile as nn, MetricProps as nt, Badge$1 as o, buttonVariants as on, SegmentedControl as ot, CardFooter as p, HeadingVariant as pn, SelectLabel as pt, EmptyStateProps as q, TextShimmerProps as qt, Avatar$1 as r, UploadProgress as rn, MetricStrip as rt, BadgeProps as s, useTheme$1 as sn, SegmentedControlOption as st, ArtifactPane$1 as t, ToolbarProps as tn, Metric as tt, Card$1 as u, PageShellProps as un, SelectContent$1 as ut, CopyButton as v, Logo$1 as vn, SelectValue$1 as vt, DialogHeader$1 as w, StatCard$1 as wt, DialogContent$1 as x, Skeleton$1 as xt, Dialog$1 as y, LogoProps as yn, SidebarDropZone as yt, DropdownMenuRadioItem as z, TabsContent$1 as zt };
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { t as cn } from "./utils-DzWbktWG.js";
|
|
2
|
-
import { ArtifactPane as ArtifactPane$1, Avatar as Avatar$1, AvatarFallback as AvatarFallback$1, AvatarImage as AvatarImage$1, Badge as Badge$1, Button as Button$1, Card as Card$1, CardContent as CardContent$1, CardDescription as CardDescription$1, CardFooter, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CodeBlock, CopyButton, Dialog as Dialog$1, DialogClose, DialogContent as DialogContent$1, DialogDescription as DialogDescription$1, DialogFooter as DialogFooter$1, DialogHeader as DialogHeader$1, DialogOverlay, DialogPortal, DialogTitle as DialogTitle$1, DialogTrigger, DropZone, DropdownMenu as DropdownMenu$1, DropdownMenuCheckboxItem, DropdownMenuContent as DropdownMenuContent$1, DropdownMenuGroup, DropdownMenuItem as DropdownMenuItem$1, DropdownMenuLabel as DropdownMenuLabel$1, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator as DropdownMenuSeparator$1, DropdownMenuShortcut, DropdownMenuSub as DropdownMenuSub$1, DropdownMenuSubContent as DropdownMenuSubContent$1, DropdownMenuSubTrigger as DropdownMenuSubTrigger$1, DropdownMenuTrigger as DropdownMenuTrigger$1, EmptyState as EmptyState$1, FilterField, InlineCode, Input as Input$1, Label as Label$1, Metric, MetricStrip, Progress as Progress$1, SegmentedControl, Select as Select$1, SelectContent as SelectContent$1, SelectGroup, SelectItem as SelectItem$1, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger as SelectTrigger$1, SelectValue as SelectValue$1, SidebarDropZone, Skeleton as Skeleton$1, SkeletonCard as SkeletonCard$1, SkeletonTable, StatCard as StatCard$1, StatusPill, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, Textarea as Textarea$1, ThemeToggle, ToastContainer, ToastProvider, Toolbar, UploadProgress, badgeVariants, buttonVariants, useTheme as useTheme$1, useToast } from "@tangle-network/ui/primitives";
|
|
3
|
-
import { Logo, TangleKnot as TangleKnot$1 } from "@tangle-network/brand";
|
|
4
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
import { forwardRef } from "react";
|
|
6
|
-
//#region src/primitives/logo.tsx
|
|
7
|
-
/** Keep the Sandbox wordmark API while Brand owns the mark and layout. */
|
|
8
|
-
function Logo$1({ variant = "sandbox", size = "md", className, iconOnly = false }) {
|
|
9
|
-
return /* @__PURE__ */ jsx(Logo, {
|
|
10
|
-
size,
|
|
11
|
-
variant: iconOnly ? "icon" : "full",
|
|
12
|
-
suffix: variant === "sandbox" ? "Sandbox" : null,
|
|
13
|
-
className
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
Logo$1.displayName = "Logo";
|
|
17
|
-
//#endregion
|
|
18
|
-
//#region src/primitives/heading.tsx
|
|
19
|
-
const VARIANT_CLASS = {
|
|
20
|
-
display: "font-display font-bold text-foreground text-[length:var(--font-size-display,3rem)] leading-[var(--line-height-display,1.05)] tracking-[var(--tracking-tight,-0.02em)]",
|
|
21
|
-
hero: "font-display font-bold text-foreground text-[length:var(--font-size-hero,2.5rem)] leading-[1.1] tracking-[var(--tracking-tight,-0.02em)]",
|
|
22
|
-
page: "font-display font-semibold text-foreground text-[length:var(--font-size-3xl,1.875rem)] leading-[var(--line-height-heading,1.15)] tracking-[var(--tracking-tight,-0.02em)]",
|
|
23
|
-
section: "font-display font-semibold text-foreground text-[length:var(--font-size-xl,1.25rem)] leading-[1.3] tracking-[var(--tracking-snug,-0.01em)]",
|
|
24
|
-
subsection: "font-semibold text-foreground text-[length:var(--font-size-lg,1rem)] leading-[1.4]",
|
|
25
|
-
eyebrow: "font-semibold uppercase text-muted-foreground text-[length:var(--font-size-sm,0.75rem)] leading-none tracking-[var(--tracking-wide,0.08em)]"
|
|
26
|
-
};
|
|
27
|
-
const DEFAULT_TAG = {
|
|
28
|
-
display: "h1",
|
|
29
|
-
hero: "h2",
|
|
30
|
-
page: "h1",
|
|
31
|
-
section: "h2",
|
|
32
|
-
subsection: "h3",
|
|
33
|
-
eyebrow: "p"
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Role-based heading. Forwards a ref to the underlying element and passes
|
|
37
|
-
* through standard HTML/ARIA/data-* attributes so it drops into tests,
|
|
38
|
-
* scroll-spy, and a11y tooling without friction.
|
|
39
|
-
*/
|
|
40
|
-
const Heading = forwardRef(function Heading({ role, as, className, children, ...rest }, ref) {
|
|
41
|
-
const Tag = as ?? DEFAULT_TAG[role];
|
|
42
|
-
return /* @__PURE__ */ jsx(Tag, {
|
|
43
|
-
ref,
|
|
44
|
-
className: cn(VARIANT_CLASS[role], className),
|
|
45
|
-
...rest,
|
|
46
|
-
children
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
/**
|
|
50
|
-
* Standard page header: one title size, one description style, one action
|
|
51
|
-
* slot — used by every page so titles never drift between surfaces.
|
|
52
|
-
*/
|
|
53
|
-
function PageHeader({ title, description, eyebrow, action, className, titleAs }) {
|
|
54
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
55
|
-
className: cn("flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between", className),
|
|
56
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
57
|
-
className: "space-y-1.5",
|
|
58
|
-
children: [
|
|
59
|
-
eyebrow ? /* @__PURE__ */ jsx(Heading, {
|
|
60
|
-
role: "eyebrow",
|
|
61
|
-
children: eyebrow
|
|
62
|
-
}) : null,
|
|
63
|
-
/* @__PURE__ */ jsx(Heading, {
|
|
64
|
-
role: "page",
|
|
65
|
-
as: titleAs,
|
|
66
|
-
children: title
|
|
67
|
-
}),
|
|
68
|
-
description ? /* @__PURE__ */ jsx("p", {
|
|
69
|
-
className: "max-w-2xl text-[length:var(--font-size-base,0.9375rem)] text-muted-foreground leading-relaxed",
|
|
70
|
-
children: description
|
|
71
|
-
}) : null
|
|
72
|
-
]
|
|
73
|
-
}), action ? /* @__PURE__ */ jsx("div", {
|
|
74
|
-
className: "flex shrink-0 items-center gap-2",
|
|
75
|
-
children: action
|
|
76
|
-
}) : null]
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/** Section heading inside a page — smaller than PageHeader, same rhythm. */
|
|
80
|
-
function SectionTitle({ title, description, action, className }) {
|
|
81
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
82
|
-
className: cn("flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between", className),
|
|
83
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
84
|
-
className: "space-y-1",
|
|
85
|
-
children: [/* @__PURE__ */ jsx(Heading, {
|
|
86
|
-
role: "section",
|
|
87
|
-
children: title
|
|
88
|
-
}), description ? /* @__PURE__ */ jsx("p", {
|
|
89
|
-
className: "max-w-xl text-[length:var(--font-size-sm,0.75rem)] text-muted-foreground",
|
|
90
|
-
children: description
|
|
91
|
-
}) : null]
|
|
92
|
-
}), action ? /* @__PURE__ */ jsx("div", {
|
|
93
|
-
className: "shrink-0",
|
|
94
|
-
children: action
|
|
95
|
-
}) : null]
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
//#endregion
|
|
99
|
-
//#region src/primitives/page-shell.tsx
|
|
100
|
-
/**
|
|
101
|
-
* Canonical page container — one max-width, one gutter, one vertical rhythm
|
|
102
|
-
* so every page sits on the same grid. Gutter widens on large viewports.
|
|
103
|
-
* Layout primitive (not a heading); kept in its own module so consumers
|
|
104
|
-
* looking for page layout don't have to reach into the typography file.
|
|
105
|
-
*/
|
|
106
|
-
function PageShell({ children, className }) {
|
|
107
|
-
return /* @__PURE__ */ jsx("div", {
|
|
108
|
-
className: cn("mx-auto w-full max-w-6xl space-y-8 px-6 py-8 lg:px-8", className),
|
|
109
|
-
children
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
//#endregion
|
|
113
|
-
export { SelectItem$1 as $, DropdownMenuItem$1 as A, Textarea$1 as At, DropdownMenuTrigger$1 as B, PageShell as Bt, DialogTitle$1 as C, TabsList$1 as Ct, DropdownMenuCheckboxItem as D, TerminalInput as Dt, DropdownMenu$1 as E, TerminalDisplay as Et, DropdownMenuSeparator$1 as F, UploadProgress as Ft, Label$1 as G, TangleKnot$1 as Gt, FilterField as H, PageHeader as Ht, DropdownMenuShortcut as I, badgeVariants as It, Progress$1 as J, Metric as K, DropdownMenuSub$1 as L, buttonVariants as Lt, DropdownMenuPortal as M, ToastContainer as Mt, DropdownMenuRadioGroup as N, ToastProvider as Nt, DropdownMenuContent$1 as O, TerminalLine as Ot, DropdownMenuRadioItem as P, Toolbar as Pt, SelectGroup as Q, DropdownMenuSubContent$1 as R, useTheme$1 as Rt, DialogPortal as S, TabsContent$1 as St, DropZone as T, TerminalCursor as Tt, InlineCode as U, SectionTitle as Ut, EmptyState$1 as V, Heading as Vt, Input$1 as W, Logo$1 as Wt, Select$1 as X, SegmentedControl as Y, SelectContent$1 as Z, DialogContent$1 as _, TableFooter as _t, Badge$1 as a, SelectValue$1 as at, DialogHeader$1 as b, TableRow as bt, CardContent$1 as c, SkeletonCard$1 as ct, CardHeader$1 as d, StatusPill as dt, SelectLabel as et, CardTitle$1 as f, Switch as ft, DialogClose as g, TableCell as gt, Dialog$1 as h, TableCaption as ht, AvatarImage$1 as i, SelectTrigger$1 as it, DropdownMenuLabel$1 as j, ThemeToggle as jt, DropdownMenuGroup as k, TextShimmer as kt, CardDescription$1 as l, SkeletonTable as lt, CopyButton as m, TableBody as mt, Avatar$1 as n, SelectScrollUpButton as nt, Button$1 as o, SidebarDropZone as ot, CodeBlock as p, Table as pt, MetricStrip as q, AvatarFallback$1 as r, SelectSeparator as rt, Card$1 as s, Skeleton$1 as st, ArtifactPane$1 as t, SelectScrollDownButton as tt, CardFooter as u, StatCard$1 as ut, DialogDescription$1 as v, TableHead as vt, DialogTrigger as w, TabsTrigger$1 as wt, DialogOverlay as x, Tabs$1 as xt, DialogFooter$1 as y, TableHeader as yt, DropdownMenuSubTrigger$1 as z, useToast as zt };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as cn$1 } from "./utils-DzWbktWG.js";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React$1 from "react";
|
|
4
|
-
import { focusField, focusRing } from "@tangle-network/ui/utils";
|
|
5
4
|
import { createPortal } from "react-dom";
|
|
6
5
|
import { Bot, Brain, Check, ChevronDown, Lock, Pencil, Plus, Send, Sparkles, Square, Trash2, X } from "lucide-react";
|
|
6
|
+
import { focusField, focusRing } from "@tangle-network/ui/utils";
|
|
7
7
|
import { AgentTimeline, ChatContainer as ChatContainer$1, ChatMessage, ChatMessage as ChatMessage$1, MessageList, ThinkingIndicator, UserMessage } from "@tangle-network/ui/chat";
|
|
8
8
|
import { modelProvider, reasoningLadder, snapHarnessToModel } from "@tangle-network/agent-interface";
|
|
9
9
|
import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Button } from "@tangle-network/ui/primitives";
|
|
2
2
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React$1 from "react";
|
|
4
|
-
import { cn } from "@tangle-network/ui/utils";
|
|
5
4
|
import { AlertCircle, CheckCircle2, Loader2, MessageSquare, ShieldCheck } from "lucide-react";
|
|
5
|
+
import { cn } from "@tangle-network/ui/utils";
|
|
6
6
|
//#region src/connections/agent-messaging-connection.tsx
|
|
7
7
|
function AgentStatus({ enrollment }) {
|
|
8
8
|
switch (enrollment.status) {
|
|
@@ -3,8 +3,8 @@ import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
|
|
|
3
3
|
import { Button } from "@tangle-network/ui/primitives";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
|
-
import { focusField } from "@tangle-network/ui/utils";
|
|
7
6
|
import { ExternalLink, RotateCw } from "lucide-react";
|
|
7
|
+
import { focusField } from "@tangle-network/ui/utils";
|
|
8
8
|
//#region src/workbench/preview-policy.ts
|
|
9
9
|
/** Only an actual verified HTTP outcome can establish application readiness. */
|
|
10
10
|
function previewReadinessLabel(readiness) {
|
|
@@ -3,12 +3,12 @@ import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
|
|
|
3
3
|
import { t as MOTION_CONTROL } from "./motion-DkyBRJb9.js";
|
|
4
4
|
import { ArtifactPane, ArtifactPane as ArtifactPane$1, EmptyState, Input } from "@tangle-network/ui/primitives";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
import { useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
7
|
-
import { focusField, focusRing, focusRingInset } from "@tangle-network/ui/utils";
|
|
8
6
|
import { Markdown } from "@tangle-network/ui/markdown";
|
|
7
|
+
import { useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
9
8
|
import { createPortal } from "react-dom";
|
|
10
9
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
11
10
|
import { Activity, AlertCircle, AlertTriangle, ArrowLeft, Binary, Bot, Boxes, CheckCircle, ChevronDown, ChevronRight, ChevronUp, FileCode2, FileText, FolderTree, LayoutPanelTop, Loader2, LoaderCircle, MessageSquareText, PanelBottomClose, PanelBottomOpen, PanelLeftClose, PanelLeftOpen, PanelRightClose, PanelRightOpen, Plus, RefreshCw, Search, Settings, Shield, ShieldCheck, Sparkles, Terminal, TerminalSquare, Upload, Wifi, X, XCircle, Zap } from "lucide-react";
|
|
11
|
+
import { focusField, focusRing, focusRingInset } from "@tangle-network/ui/utils";
|
|
12
12
|
import { FileArtifactPane, FileTree, filterFileTree } from "@tangle-network/ui/files";
|
|
13
13
|
import { useActiveSessions, useNavbarSessions, useProjectActivity, useTotalRunningSessions } from "@tangle-network/ui/stores";
|
|
14
14
|
import { ChatContainer } from "@tangle-network/ui/chat";
|