@tangle-network/sandbox-ui 0.113.7 → 0.115.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.
Files changed (107) hide show
  1. package/README.md +40 -0
  2. package/dist/WorkflowGraph-B-NsdYz_.js +1961 -0
  3. package/dist/assets.d.ts +214 -206
  4. package/dist/assets.js +1057 -908
  5. package/dist/auth-CWe17Hly.js +37 -0
  6. package/dist/auth.d.ts +2 -30
  7. package/dist/auth.js +2 -15
  8. package/dist/chat-BOvFAe6p.js +903 -0
  9. package/dist/chat.d.ts +2 -230
  10. package/dist/chat.js +2 -34
  11. package/dist/connectors.d.ts +52 -49
  12. package/dist/connectors.js +595 -643
  13. package/dist/dashboard-CZ3VgNPR.js +4969 -0
  14. package/dist/dashboard.d.ts +4 -1297
  15. package/dist/dashboard.js +4 -152
  16. package/dist/editor.d.ts +2 -1
  17. package/dist/editor.js +2 -31
  18. package/dist/files.d.ts +2 -6
  19. package/dist/files.js +2 -33
  20. package/dist/globals.css +75 -3
  21. package/dist/hooks.d.ts +146 -148
  22. package/dist/hooks.js +222 -55
  23. package/dist/index-CKRaj1pM.d.ts +776 -0
  24. package/dist/index-CXX5IpH2.d.ts +2 -0
  25. package/dist/index-CesPlOyx.d.ts +367 -0
  26. package/dist/index-DPePq7c8.d.ts +1340 -0
  27. package/dist/index-DiyLLZuJ.d.ts +230 -0
  28. package/dist/index-DvmZLMT1.d.ts +30 -0
  29. package/dist/index-PRM636Ex.d.ts +86 -0
  30. package/dist/index.d.ts +21 -33
  31. package/dist/index.js +21 -701
  32. package/dist/info-panel-C9cqDzOL.js +594 -0
  33. package/dist/integrations.d.ts +133 -141
  34. package/dist/integrations.js +491 -673
  35. package/dist/markdown.d.ts +2 -1
  36. package/dist/markdown.js +2 -13
  37. package/dist/model-I-NIxeM-.js +1250 -0
  38. package/dist/model-brand-B9A4H9pJ.d.ts +98 -0
  39. package/dist/model-brand-hMyDTUqB.js +624 -0
  40. package/dist/motion-DkyBRJb9.js +37 -0
  41. package/dist/openui.d.ts +2 -1
  42. package/dist/openui.js +2 -7
  43. package/dist/pages.d.ts +307 -300
  44. package/dist/pages.js +4404 -4181
  45. package/dist/primitives-Dh1vG6J3.js +113 -0
  46. package/dist/primitives.d.ts +2 -74
  47. package/dist/primitives.js +2 -204
  48. package/dist/provider-logo-DjqmConF.js +311 -0
  49. package/dist/run.d.ts +2 -1
  50. package/dist/run.js +2 -23
  51. package/dist/sdk-hooks.d.ts +3 -4
  52. package/dist/sdk-hooks.js +3 -31
  53. package/dist/sidecar-DgH_vQ6m.d.ts +9 -0
  54. package/dist/stores.d.ts +14 -15
  55. package/dist/stores.js +13 -81
  56. package/dist/styles.css +75 -3
  57. package/dist/template-card-L-4gmjx2.d.ts +90 -0
  58. package/dist/terminal-CN9ZgHRt.js +197 -0
  59. package/dist/terminal.d.ts +60 -60
  60. package/dist/terminal.js +2 -10
  61. package/dist/tokens.css +51 -0
  62. package/dist/types.d.ts +4 -11
  63. package/dist/types.js +0 -1
  64. package/dist/use-pty-session-C8cE0adT.js +669 -0
  65. package/dist/use-sidecar-auth-CCTJcrq7.d.ts +145 -0
  66. package/dist/use-sidecar-auth-DkdcufOz.js +742 -0
  67. package/dist/utils-DzWbktWG.js +2 -0
  68. package/dist/utils.d.ts +2 -1
  69. package/dist/utils.js +2 -37
  70. package/dist/workbench-ztU44Jt2.js +8455 -0
  71. package/dist/workbench.d.ts +2 -310
  72. package/dist/workbench.js +2 -44
  73. package/dist/workflows.d.ts +341 -339
  74. package/dist/workflows.js +74 -109
  75. package/dist/workspace-B6AtI6ld.js +2510 -0
  76. package/dist/workspace.d.ts +2 -761
  77. package/dist/workspace.js +2 -51
  78. package/package.json +46 -40
  79. package/dist/WorkflowGraph-2QOORYIR.js +0 -1722
  80. package/dist/chunk-2BUPSB7O.js +0 -0
  81. package/dist/chunk-3KBNPQQF.js +0 -2697
  82. package/dist/chunk-3LIXVEEE.js +0 -279
  83. package/dist/chunk-72UF2H5H.js +0 -707
  84. package/dist/chunk-AI25G5MX.js +0 -944
  85. package/dist/chunk-ANSC5AFC.js +0 -314
  86. package/dist/chunk-AZ3AWMTM.js +0 -8
  87. package/dist/chunk-BGVEHENC.js +0 -10
  88. package/dist/chunk-CZ7CSFO4.js +0 -39
  89. package/dist/chunk-DYXXYGS4.js +0 -4700
  90. package/dist/chunk-EI44GEQ5.js +0 -6
  91. package/dist/chunk-IACRDXER.js +0 -219
  92. package/dist/chunk-IOB2PW5Z.js +0 -55
  93. package/dist/chunk-M4K7ZGR2.js +0 -24
  94. package/dist/chunk-MYZAW4RX.js +0 -665
  95. package/dist/chunk-OMUIPJQZ.js +0 -555
  96. package/dist/chunk-RQZRXKMR.js +0 -398
  97. package/dist/chunk-SOKKTB7W.js +0 -230
  98. package/dist/chunk-TADGS4Q7.js +0 -1010
  99. package/dist/chunk-UCQNOUN3.js +0 -7964
  100. package/dist/chunk-ULPLRBMF.js +0 -34
  101. package/dist/chunk-WID73FPH.js +0 -89
  102. package/dist/chunk-X3YXP7FG.js +0 -38
  103. package/dist/logo-DiAjq759.d.ts +0 -15
  104. package/dist/model-brand-BNnaUKKZ.d.ts +0 -99
  105. package/dist/ports-list-CDIvTNnX.d.ts +0 -17
  106. package/dist/sdk-hooks-Djkjq4cp.d.ts +0 -145
  107. package/dist/template-card-Bn-Bw5xC.d.ts +0 -87
@@ -0,0 +1,2 @@
1
+ import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane as FileArtifactPane$1, FileArtifactPaneProps, FileFormat, FileNode as FileNode$1, FilePreview, FilePreviewKind, FilePreviewProps, FileTabData as FileTabData$1, FileTabs, FileTabsProps, FileTree as FileTree$1, FileTreeProps, FileTreeVisibilityOptions as FileTreeVisibilityOptions$1, RichFileTree, RichFileTreeGitEntry, RichFileTreeGitStatus, RichFileTreeProps, RichFileTreeThemeVars, detectFileFormat, fileExtension, filterFileTree as filterFileTree$1, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "@tangle-network/ui/files";
2
+ export { getCodeLanguage as C, resolveFilePreviewKind as D, parseCsv as E, filterFileTree$1 as S, getSyntaxLanguage as T, RichFileTreeGitStatus as _, FileNode$1 as a, detectFileFormat as b, FilePreviewProps as c, FileTabsProps as d, FileTree$1 as f, RichFileTreeGitEntry as g, RichFileTree as h, FileFormat as i, FileTabData$1 as l, FileTreeVisibilityOptions$1 as m, FileArtifactPane$1 as n, FilePreview as o, FileTreeProps as p, FileArtifactPaneProps as r, FilePreviewKind as s, CSV_PREVIEW_ROW_LIMIT as t, FileTabs as u, RichFileTreeProps as v, getFormatLabel as w, fileExtension as x, RichFileTreeThemeVars as y };
@@ -0,0 +1,367 @@
1
+ import { v as ExposedPort } from "./index-DPePq7c8.js";
2
+ import { _ as RichFileTreeGitStatus, g as RichFileTreeGitEntry } from "./index-CXX5IpH2.js";
3
+ import * as React$1 from "react";
4
+ import { CSSProperties } from "react";
5
+ //#region src/workbench/types.d.ts
6
+ /** Which surface the artifact pane is currently showing. */
7
+ type ArtifactView = "code" | "diff" | "preview" | "ports" | "terminal";
8
+ /**
9
+ * A single artifact rendered by the pane. `content` is the working copy;
10
+ * when `baselineContent` differs from it, the Diff view becomes available
11
+ * and renders a word-level unified diff of baseline → content.
12
+ */
13
+ interface SandboxArtifact {
14
+ id: string;
15
+ /** Canonical path inside the sandbox, e.g. `src/lib/retry.ts`. */
16
+ path: string;
17
+ /** Display name for the active file (usually the last path segment). */
18
+ filename: string;
19
+ /** Working-copy contents of the file. */
20
+ content: string;
21
+ /** Prior contents the working copy is diffed against. */
22
+ baselineContent?: string;
23
+ /** Explicit syntax language id (overrides extension inference). */
24
+ language?: string;
25
+ mimeType?: string;
26
+ }
27
+ /**
28
+ * Live PTY terminal binding. Maps straight onto `TerminalView` — both
29
+ * `apiUrl` and `token` are required to open a session against the sidecar.
30
+ */
31
+ interface SandboxArtifactTerminal {
32
+ apiUrl: string;
33
+ token: string;
34
+ /** Stable id so the same PTY is restored across remounts. */
35
+ connectionId?: string;
36
+ title?: string;
37
+ subtitle?: string;
38
+ }
39
+ interface SandboxArtifactPaneProps {
40
+ /** The active artifact shown in the Code / Diff surfaces. */
41
+ artifact: SandboxArtifact;
42
+ /**
43
+ * Flat list of canonical paths for the file-tree rail in the Code view.
44
+ * Defaults to `[artifact.path]` when omitted (single-file tree).
45
+ */
46
+ paths?: ReadonlyArray<string>;
47
+ /** Per-path git-status decorations for the file tree. */
48
+ gitStatus?: ReadonlyArray<RichFileTreeGitEntry>;
49
+ /** Show the Code view's file-tree rail. Off for single-file embeds where the host owns navigation/tabs. */
50
+ showTree?: boolean;
51
+ /** Exposed ports; presence enables the Ports tab. */
52
+ ports?: ExposedPort[];
53
+ /** Live preview origin; presence enables the Preview tab. */
54
+ previewUrl?: string;
55
+ /** Live terminal binding; presence enables the Terminal tab. */
56
+ terminal?: SandboxArtifactTerminal;
57
+ /** Controlled active view. Pair with `onViewChange`. */
58
+ activeView?: ArtifactView;
59
+ /** Initial view when uncontrolled. Defaults to the first available view. */
60
+ defaultView?: ArtifactView;
61
+ onViewChange?: (view: ArtifactView) => void;
62
+ /** Fired when a different file is chosen in the tree (host swaps artifact). */
63
+ onFileSelect?: (path: string) => void;
64
+ /** Forwarded to the Ports view. */
65
+ onExposePort?: (port: number) => void;
66
+ onRemovePort?: (port: number) => void;
67
+ className?: string;
68
+ style?: CSSProperties;
69
+ }
70
+ /**
71
+ * One entry of the sandbox's git working tree, as the Changes pane lists it.
72
+ * `additions` / `deletions` are the numstat counts the sidecar's
73
+ * `GET /git/diff` reports per file.
74
+ *
75
+ * `baseline` / `current` are the file contents the diff is drawn from and are
76
+ * absent until the consumer resolves them for the selected file. Which of the
77
+ * two counts as "resolved" follows the status: an added or untracked file has
78
+ * no baseline and diffs against the empty string once `current` is present; a
79
+ * deleted file has no working copy and diffs against the empty string once
80
+ * `baseline` is present; every other status waits for both.
81
+ */
82
+ interface ChangedFile {
83
+ path: string;
84
+ status: RichFileTreeGitStatus;
85
+ additions: number;
86
+ deletions: number;
87
+ /** Present once the consumer has resolved contents for the selected file. */
88
+ baseline?: string;
89
+ current?: string;
90
+ /**
91
+ * Why the sides could not be resolved. Shown under the file's header in
92
+ * place of the loading line, so a failed read never looks like a slow one.
93
+ */
94
+ loadError?: string;
95
+ }
96
+ interface ChangesPaneProps {
97
+ /** Current branch; `null` when the tree has no commits yet or is not a repository. */
98
+ branch: string | null;
99
+ ahead?: number;
100
+ behind?: number;
101
+ files: ChangedFile[];
102
+ selectedPath?: string;
103
+ onSelectFile?: (path: string) => void;
104
+ loading?: boolean;
105
+ error?: string | null;
106
+ onRefresh?: () => void;
107
+ /** Stage everything and commit. Resolve on success; reject with an Error the pane shows inline. */
108
+ onCommit?: (message: string) => Promise<void>;
109
+ onPush?: () => Promise<void>;
110
+ /** Which action is in flight; the pane disables the other and shows a spinner on this one. */
111
+ busy?: "commit" | "push" | null;
112
+ /** Open the file as a workbench artifact (the product wires this to its artifact opener). */
113
+ onOpenFile?: (path: string) => void;
114
+ className?: string;
115
+ }
116
+ //#endregion
117
+ //#region src/workbench/sandbox-artifact-pane.d.ts
118
+ /**
119
+ * Blueprint-grade artifact workbench. Composes the sandbox-ui substrate
120
+ * (`RichFileTree`, `PortsList`, `TerminalView`, `@pierre/diffs`) behind a
121
+ * single pill-tab view switcher: Code · Diff · Preview · Ports · Terminal.
122
+ * Tabs appear only when their data is present (Diff requires a differing
123
+ * baseline; Preview a url; Ports a port list; Terminal a live binding), so the
124
+ * chrome never shows a dead surface.
125
+ */
126
+ declare function SandboxArtifactPane({ artifact, paths, gitStatus, showTree, ports, previewUrl, terminal, activeView, defaultView, onViewChange, onFileSelect, onExposePort, onRemovePort, className, style }: SandboxArtifactPaneProps): React$1.JSX.Element;
127
+ //#endregion
128
+ //#region src/workbench/changes-pane.d.ts
129
+ /**
130
+ * The sandbox's git working tree as a review surface: every changed file with
131
+ * its line counts, the selected file's word-level diff beneath, and a commit
132
+ * box in the footer. Data in, callbacks out — the pane never fetches; the
133
+ * consumer feeds it the sidecar's `/git/status` + `/git/diff` and resolves
134
+ * `baseline` / `current` for the file it is told was selected.
135
+ *
136
+ * The list is capped at 40% of the pane and scrolls, so the diff keeps its
137
+ * room however many files changed. The row's own chrome is compact: the
138
+ * workspace shell already gives its right pane the 56px `WorkspacePaneHeader`,
139
+ * so this header nests beneath it at `PanelHeader` rhythm rather than adding a
140
+ * second tall bar.
141
+ */
142
+ declare function ChangesPane({ branch, ahead, behind, files, selectedPath, onSelectFile, loading, error, onRefresh, onCommit, onPush, busy, onOpenFile, className }: ChangesPaneProps): React$1.JSX.Element;
143
+ //#endregion
144
+ //#region src/workbench/pill-tabs.d.ts
145
+ interface PillTabItem<T extends string> {
146
+ value: T;
147
+ label: string;
148
+ icon?: React$1.ReactNode;
149
+ }
150
+ interface PillTabsProps<T extends string> {
151
+ items: ReadonlyArray<PillTabItem<T>>;
152
+ value: T;
153
+ onChange: (value: T) => void;
154
+ className?: string;
155
+ "aria-label"?: string;
156
+ /** Stable IDs supplied by the parent when it renders the associated panel. */
157
+ idPrefix?: string;
158
+ panelId?: string;
159
+ }
160
+ /**
161
+ * Sliding-pill segmented control. Reimplemented from blueprint-agent's
162
+ * framer-motion `PillTabs` with a measured CSS transform instead — no motion
163
+ * dependency. A `ResizeObserver` re-measures on container resize and font
164
+ * load so the indicator tracks the active tab exactly. Token-swapped onto the
165
+ * sandbox-ui surface ladder.
166
+ */
167
+ declare function PillTabs<T extends string>({ items, value, onChange, className, "aria-label": ariaLabel, idPrefix, panelId }: PillTabsProps<T>): React$1.JSX.Element;
168
+ //#endregion
169
+ //#region src/workbench/diff-utils.d.ts
170
+ interface DiffStats {
171
+ added: number;
172
+ removed: number;
173
+ }
174
+ /**
175
+ * Count added / removed lines between two file revisions.
176
+ *
177
+ * Ported from blueprint-agent's `computeDiffStats`: normalize CRLF, short-
178
+ * circuit on equality, then `diffLines` with `ignoreWhitespace` so pure
179
+ * reindentation does not inflate the counts. `newlineIsToken:false` keeps a
180
+ * line (not its trailing newline) as the unit, matching the +/- a reader
181
+ * counts by eye.
182
+ */
183
+ declare function computeDiffStats(original: string, current: string): DiffStats;
184
+ /**
185
+ * Build a single-file unified patch (baseline → current) for `@pierre/diffs`'
186
+ * `PatchDiff`. `context: Infinity` would print the whole file; the default
187
+ * 4-line context keeps hunks compact while preserving locality. Equal inputs
188
+ * yield an empty string so callers can treat "" as "no diff".
189
+ */
190
+ declare function buildUnifiedPatch(filename: string, baseline: string, current: string): string;
191
+ //#endregion
192
+ //#region src/workbench/panel-header.d.ts
193
+ declare function GitStatusBadge({ status }: {
194
+ status: RichFileTreeGitStatus;
195
+ }): React$1.JSX.Element;
196
+ /** `+added −removed` line counts in mono; the same pair the Changes list prints per file. */
197
+ declare function DiffStatsBadge({ stats, className }: {
198
+ stats: DiffStats;
199
+ className?: string;
200
+ }): React$1.JSX.Element;
201
+ interface PanelHeaderProps {
202
+ filename: string;
203
+ gitStatus?: RichFileTreeGitStatus;
204
+ /** Added/removed line counts; rendered only when provided (Diff view). */
205
+ stats?: DiffStats;
206
+ /** Enables the copy-to-clipboard action when set. */
207
+ copyText?: string;
208
+ /** Extra content rendered at the right edge, before the copy button. */
209
+ children?: React$1.ReactNode;
210
+ className?: string;
211
+ }
212
+ /**
213
+ * Thin bordered chrome bar above the artifact body — filename, git-status
214
+ * badge, optional diff counts, and a copy action. Ported in spirit from
215
+ * blueprint-agent's `PanelHeader` (min-h, hairline bottom border, dense
216
+ * horizontal rhythm), retoned to the sandbox-ui surface ladder.
217
+ */
218
+ declare function PanelHeader({ filename, gitStatus, stats, copyText, children, className }: PanelHeaderProps): React$1.JSX.Element;
219
+ //#endregion
220
+ //#region src/workbench/file-breadcrumb.d.ts
221
+ interface FileBreadcrumbProps {
222
+ /** Canonical path, e.g. `src/lib/retry.ts`. */
223
+ path: string;
224
+ className?: string;
225
+ }
226
+ /**
227
+ * Slim path breadcrumb for the code panel. Reimplemented (not ported) from
228
+ * blueprint-agent's `FileBreadcrumb` — that one nests a `FileTree` dropdown per
229
+ * segment and couples to the workbench store + framer-motion. Here the rail
230
+ * already owns navigation, so this is a read-only trail: caret-separated parent
231
+ * segments with a file-icon leaf.
232
+ */
233
+ declare function FileBreadcrumb({ path, className }: FileBreadcrumbProps): React$1.JSX.Element;
234
+ //#endregion
235
+ //#region src/workbench/code-view.d.ts
236
+ interface CodeViewProps {
237
+ path: string;
238
+ filename: string;
239
+ content: string;
240
+ language?: string;
241
+ /** Flat list of paths for the rail; defaults to `[path]`. */
242
+ paths?: ReadonlyArray<string>;
243
+ gitStatus?: ReadonlyArray<RichFileTreeGitEntry>;
244
+ onFileSelect?: (path: string) => void;
245
+ /** Show the file-tree rail. Off for single-file embeds where the host owns navigation. */
246
+ showTree?: boolean;
247
+ className?: string;
248
+ }
249
+ /**
250
+ * Code surface: a fixed-width `RichFileTree` rail (with git-status
251
+ * decorations) beside a breadcrumb-topped, syntax-highlighted read-only file
252
+ * view. The rail owns navigation; selecting a path fans out to `onFileSelect`
253
+ * so the host can swap the active artifact.
254
+ */
255
+ declare function CodeView({ path, filename, content, language, paths, gitStatus, onFileSelect, showTree, className }: CodeViewProps): React$1.JSX.Element;
256
+ //#endregion
257
+ //#region src/workbench/diff-view.d.ts
258
+ interface DiffViewProps {
259
+ filename: string;
260
+ baseline: string;
261
+ current: string;
262
+ /** Hide when the surrounding PanelHeader already identifies the file. */
263
+ showFileHeader?: boolean;
264
+ /** Start wrapped so narrow review panes never conceal the end of a line. */
265
+ defaultWrap?: boolean;
266
+ className?: string;
267
+ }
268
+ /**
269
+ * Keep the maintained renderer for hunking, word diffs and highlighting. A new
270
+ * custom element per effect survives StrictMode remounts without hydrating stale
271
+ * shadow content. Wrapping is a renderer option, not a CSS patch into its shadow
272
+ * root; the plain patch disclosure is the accessible, engine-independent view.
273
+ */
274
+ declare function DiffView({ filename, baseline, current, showFileHeader, defaultWrap, className }: DiffViewProps): React$1.JSX.Element;
275
+ //#endregion
276
+ //#region src/workbench/preview-policy.d.ts
277
+ type PreviewReadiness = {
278
+ state: "unknown";
279
+ } | {
280
+ state: "checking";
281
+ } | {
282
+ state: "ready";
283
+ checkedAt: string;
284
+ statusCode: number;
285
+ } | {
286
+ state: "failed";
287
+ checkedAt: string;
288
+ message: string;
289
+ };
290
+ type PreviewAccess = {
291
+ state: "unknown";
292
+ } | {
293
+ state: "public" | "authenticated";
294
+ source: "enforced-policy";
295
+ expiresAt?: string;
296
+ };
297
+ //#endregion
298
+ //#region src/workbench/preview-view.d.ts
299
+ interface PreviewViewProps {
300
+ /** A product-authorized preview URL. Relative navigation stays on its origin. */
301
+ url: string;
302
+ allowedOrigins?: readonly string[];
303
+ /** Supply only metadata obtained from the enforcing service, never a UI guess. */
304
+ access?: PreviewAccess;
305
+ readiness?: PreviewReadiness;
306
+ onCheckReadiness?: () => void;
307
+ onNavigate?: (url: string) => void;
308
+ /** Compact app chrome omits the editable address and verification row. */
309
+ variant?: "browser" | "embedded";
310
+ /** Accessible frame title and compact app label. */
311
+ title?: string;
312
+ /** Product actions beside the compact app label. */
313
+ toolbarActions?: React$1.ReactNode;
314
+ className?: string;
315
+ }
316
+ declare function PreviewView({ url, allowedOrigins, access, readiness, onCheckReadiness, onNavigate, variant, title, toolbarActions, className }: PreviewViewProps): React$1.JSX.Element;
317
+ //#endregion
318
+ //#region src/workbench/embedded-app-view.d.ts
319
+ interface EmbeddedApp {
320
+ /** Stable app identity. The host uses it to preserve selection across updates. */
321
+ id: string;
322
+ name: string;
323
+ /** Resolved, credential-free sandbox preview URL. */
324
+ previewUrl?: string;
325
+ /** The host supplies this state from its application or preview service. */
326
+ status: "starting" | "ready" | "unavailable";
327
+ statusMessage?: string;
328
+ }
329
+ interface EmbeddedAppViewProps {
330
+ app: EmbeddedApp;
331
+ /** Product-approved origins, obtained independently of the app URL. */
332
+ allowedOrigins?: readonly string[];
333
+ /** Service-observed HTTP result. Never derive it from iframe load. */
334
+ readiness?: PreviewReadiness;
335
+ /** Enforced access policy, supplied by the host service. */
336
+ access?: PreviewAccess;
337
+ /** Product actions beside the app name in the ready preview header. */
338
+ toolbarActions?: React$1.ReactNode;
339
+ /** Recheck or restart the preview through the host's own service. */
340
+ onRetry?: () => void;
341
+ className?: string;
342
+ }
343
+ /**
344
+ * An app-sized preview surface for a product workspace.
345
+ * The host owns app discovery, persistence, access policy, and readiness checks.
346
+ */
347
+ declare function EmbeddedAppView({ app, allowedOrigins, readiness, access, toolbarActions, onRetry, className }: EmbeddedAppViewProps): React$1.JSX.Element;
348
+ //#endregion
349
+ //#region src/workbench/syntax.d.ts
350
+ /** Resolve a Prism language id from an explicit hint or the filename. */
351
+ declare function resolveLanguage(filename: string, explicit?: string): string;
352
+ declare const BRAND_PRISM_THEME: Record<string, CSSProperties>;
353
+ interface CodeSurfaceProps {
354
+ code: string;
355
+ filename: string;
356
+ language?: string;
357
+ showLineNumbers?: boolean;
358
+ className?: string;
359
+ }
360
+ /**
361
+ * Read-only, brand-themed code renderer. Wrapped in a scroll container so the
362
+ * highlighter itself never grows the layout; line numbers sit in a muted,
363
+ * tabular column.
364
+ */
365
+ declare function CodeSurface({ code, filename, language, showLineNumbers, className }: CodeSurfaceProps): React$1.JSX.Element;
366
+ //#endregion
367
+ export { ArtifactView as A, buildUnifiedPatch as C, PillTabsProps as D, PillTabs as E, SandboxArtifactTerminal as F, ChangesPaneProps as M, SandboxArtifact as N, ChangesPane as O, SandboxArtifactPaneProps as P, DiffStats as S, PillTabItem as T, FileBreadcrumbProps as _, EmbeddedApp as a, PanelHeader as b, PreviewView as c, PreviewReadiness as d, DiffView as f, FileBreadcrumb as g, CodeViewProps as h, resolveLanguage as i, ChangedFile as j, SandboxArtifactPane as k, PreviewViewProps as l, CodeView as m, CodeSurface as n, EmbeddedAppView as o, DiffViewProps as p, CodeSurfaceProps as r, EmbeddedAppViewProps as s, BRAND_PRISM_THEME as t, PreviewAccess as u, DiffStatsBadge as v, computeDiffStats as w, PanelHeaderProps as x, GitStatusBadge as y };