@tangle-network/sandbox-ui 0.131.2 → 0.131.4

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.
@@ -1,4 +1,4 @@
1
- import { A as wfEdgeId, D as isStructuralKind, E as buildWorkflowGraph, F as shortModel, I as clampPreview, L as fmtCost, R as fmtDuration, S as COMPACT_NODE_SIZE, _ as kindAccent, a as NodeMark, b as problemTitle, c as RESTING_SHADOW, g as emptySlotLabel, h as edgeColor, j as worstSeverity, k as triggerNodeIndex, l as STATUS_COLOR, m as StatusPill, n as classifyOutput, o as ProblemMarker, p as StatusFooter, s as ProblemMessages, t as NodeOutputBody, u as STATUS_LABEL, v as problemBorder, x as statusBorder, y as problemSurface, z as fmtTokens } from "./node-output-BQr2Dgy5.js";
1
+ import { A as wfEdgeId, D as isStructuralKind, E as buildWorkflowGraph, F as shortModel, I as clampPreview, L as fmtCost, R as fmtDuration, S as COMPACT_NODE_SIZE, _ as kindAccent, a as NodeMark, b as problemTitle, c as RESTING_SHADOW, g as emptySlotLabel, h as edgeColor, j as worstSeverity, k as triggerNodeIndex, l as STATUS_COLOR, m as StatusPill, n as classifyOutput, o as ProblemMarker, p as StatusFooter, s as ProblemMessages, t as NodeOutputBody, u as STATUS_LABEL, v as problemBorder, x as statusBorder, y as problemSurface, z as fmtTokens } from "./node-output-BdfG5lt4.js";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { createContext, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
4
4
  import { Maximize2, Minimize2, Plus, X } from "lucide-react";
package/dist/assets.js CHANGED
@@ -440,6 +440,7 @@ function videoPosterUrl(content) {
440
440
  }
441
441
  return null;
442
442
  }
443
+ const FADE_OUT = "[mask-image:linear-gradient(to_bottom,black_75%,transparent)]";
443
444
  function formatDuration(seconds) {
444
445
  const whole = Math.max(0, Math.round(seconds));
445
446
  return `${Math.floor(whole / 60)}:${String(whole % 60).padStart(2, "0")}`;
@@ -462,7 +463,7 @@ function Thumbnail({ spec }) {
462
463
  children: /* @__PURE__ */ jsxs("div", {
463
464
  className: "flex h-full flex-col overflow-hidden rounded-md border border-border bg-card shadow-sm",
464
465
  children: [/* @__PURE__ */ jsxs("div", {
465
- className: "flex flex-col gap-0.5 border-b border-border px-3 py-2",
466
+ className: "flex shrink-0 flex-col gap-0.5 border-b border-border px-3 py-2",
466
467
  children: [
467
468
  /* @__PURE__ */ jsx("div", {
468
469
  className: "truncate text-xs text-muted-foreground",
@@ -478,18 +479,18 @@ function Thumbnail({ spec }) {
478
479
  })
479
480
  ]
480
481
  }), /* @__PURE__ */ jsxs("div", {
481
- className: "flex flex-1 flex-col gap-1 overflow-hidden px-3 py-2",
482
+ className: cn("flex min-h-0 flex-1 flex-col gap-1 overflow-hidden px-3 py-2", FADE_OUT),
482
483
  style: {
483
484
  background: palette.paper,
484
485
  color: palette.ink,
485
486
  fontFamily: brand.fontFamily
486
487
  },
487
488
  children: [hero?.type === "hero" && /* @__PURE__ */ jsx("div", {
488
- className: "line-clamp-2 text-sm font-bold leading-snug",
489
+ className: "line-clamp-2 shrink-0 text-sm font-bold leading-snug",
489
490
  style: { color: palette.accent },
490
491
  children: hero.headline
491
492
  }), body?.type === "body" && /* @__PURE__ */ jsx("div", {
492
- className: "line-clamp-4 text-xs leading-relaxed opacity-75",
493
+ className: "text-xs leading-relaxed opacity-75",
493
494
  children: body.text
494
495
  })]
495
496
  })]
@@ -555,15 +556,15 @@ function Thumbnail({ spec }) {
555
556
  className: "flex h-full flex-col gap-2 overflow-hidden p-4",
556
557
  children: [
557
558
  /* @__PURE__ */ jsx("span", {
558
- className: "text-xs font-medium text-muted-foreground",
559
+ className: "shrink-0 text-xs font-medium text-muted-foreground",
559
560
  children: COPY_PLATFORM_LABEL[cc.platform] ?? cc.platform
560
561
  }),
561
562
  cc.headline && /* @__PURE__ */ jsx("div", {
562
- className: "line-clamp-3 text-base font-semibold leading-snug",
563
+ className: "line-clamp-2 shrink-0 text-base font-semibold leading-snug sm:line-clamp-3",
563
564
  children: cc.headline
564
565
  }),
565
566
  /* @__PURE__ */ jsx("div", {
566
- className: "line-clamp-5 text-sm leading-relaxed text-muted-foreground",
567
+ className: cn("min-h-0 flex-1 overflow-hidden text-sm leading-relaxed text-muted-foreground [overflow-wrap:anywhere]", FADE_OUT),
567
568
  children: cc.body
568
569
  })
569
570
  ]
@@ -596,10 +597,10 @@ function AssetCard({ spec, variantCount, onApprove, onReject, onEdit, onOpen, cl
596
597
  })]
597
598
  }),
598
599
  /* @__PURE__ */ jsxs("div", {
599
- className: "flex items-center gap-2 px-2.5 py-2",
600
+ className: "flex flex-wrap items-center justify-between gap-x-2 gap-y-1 px-2.5 py-2",
600
601
  children: [
601
602
  /* @__PURE__ */ jsx("span", {
602
- className: "min-w-0 flex-1 truncate text-xs text-muted-foreground",
603
+ className: "min-w-0 truncate text-xs text-muted-foreground",
603
604
  children: formatLabel
604
605
  }),
605
606
  /* @__PURE__ */ jsx(Badge, {
package/dist/globals.css CHANGED
@@ -2999,6 +2999,9 @@
2999
2999
  --tw-gradient-to: transparent;
3000
3000
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
3001
3001
  }
3002
+ .\[mask-image\:linear-gradient\(to_bottom\,black_75\%\,transparent\)\] {
3003
+ mask-image: linear-gradient(to bottom,black 75%,transparent);
3004
+ }
3002
3005
  .fill-current {
3003
3006
  fill: currentcolor;
3004
3007
  }
@@ -5270,6 +5273,12 @@
5270
5273
  -webkit-box-orient: vertical;
5271
5274
  -webkit-line-clamp: 1;
5272
5275
  }
5276
+ .sm\:line-clamp-3 {
5277
+ overflow: hidden;
5278
+ display: -webkit-box;
5279
+ -webkit-box-orient: vertical;
5280
+ -webkit-line-clamp: 3;
5281
+ }
5273
5282
  .sm\:grid {
5274
5283
  display: grid;
5275
5284
  }
@@ -5487,9 +5496,18 @@
5487
5496
  .lg\:flex-row {
5488
5497
  flex-direction: row;
5489
5498
  }
5499
+ .lg\:flex-nowrap {
5500
+ flex-wrap: nowrap;
5501
+ }
5490
5502
  .lg\:items-center {
5491
5503
  align-items: center;
5492
5504
  }
5505
+ .lg\:gap-2 {
5506
+ gap: calc(var(--spacing) * 2);
5507
+ }
5508
+ .lg\:overflow-x-auto {
5509
+ overflow-x: auto;
5510
+ }
5493
5511
  .lg\:p-0 {
5494
5512
  padding: 0px;
5495
5513
  }
@@ -1,4 +1,4 @@
1
- import { n as normalizeProviderId, r as providerLogoCandidates, t as ProviderIcon } from "./provider-logo-BiuiO_c2.js";
1
+ import { n as normalizeProviderId, r as providerLogoCandidates, t as ProviderIcon } from "./provider-logo-X9PkbMIX.js";
2
2
  import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, EmptyState, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@tangle-network/ui/primitives";
3
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
  import * as React$1 from "react";
@@ -1,5 +1,5 @@
1
1
  import { r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
2
- import { t as ProviderIcon } from "./provider-logo-BiuiO_c2.js";
2
+ import { t as ProviderIcon } from "./provider-logo-X9PkbMIX.js";
3
3
  import { StatusPill } from "@tangle-network/ui/primitives";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { AlertTriangle, Bell, Box, Cable, Camera, Circle, Clock, Code, GitBranch, Repeat, ScanSearch, Sparkles, UserCheck, Webhook, Zap } from "lucide-react";
@@ -21,6 +21,7 @@ function normalizeProviderId(id) {
21
21
  * normalized id does not match the simpleicons slug (compound brands,
22
22
  * Google/Microsoft suite members, renamed brands).
23
23
  */
24
+ const PH0NY_MARK = `data:image/svg+xml,${encodeURIComponent("<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 64 64\"><rect width=\"64\" height=\"64\" rx=\"12\" fill=\"#ffffff\"/><text x=\"32\" y=\"38.5\" text-anchor=\"middle\" textLength=\"50\" lengthAdjust=\"spacingAndGlyphs\" font-family=\"Inter, system-ui, -apple-system, Segoe UI, sans-serif\" font-size=\"19\" font-weight=\"500\" fill=\"#533afd\">ph0ny</text></svg>")}`;
24
25
  const PROVIDER_LOGO_SLUGS = {
25
26
  gmail: "gmail",
26
27
  googlemail: "gmail",
@@ -182,7 +183,8 @@ const PROVIDER_LOGO_URLS = {
182
183
  sanity: "https://cdn.simpleicons.org/sanity",
183
184
  sentry: "https://cdn.simpleicons.org/sentry",
184
185
  opsgenie: "https://cdn.simpleicons.org/opsgenie",
185
- phony: "https://www.google.com/s2/favicons?sz=64&domain_url=https://ph0ny.com",
186
+ phony: PH0NY_MARK,
187
+ ph0ny: PH0NY_MARK,
186
188
  docuseal: "https://www.google.com/s2/favicons?sz=64&domain_url=https://docuseal.com",
187
189
  braze: "https://www.google.com/s2/favicons?sz=64&domain_url=https://braze.com",
188
190
  pipedream: "https://www.google.com/s2/favicons?sz=64&domain_url=https://pipedream.com",
package/dist/styles.css CHANGED
@@ -2999,6 +2999,9 @@
2999
2999
  --tw-gradient-to: transparent;
3000
3000
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
3001
3001
  }
3002
+ .\[mask-image\:linear-gradient\(to_bottom\,black_75\%\,transparent\)\] {
3003
+ mask-image: linear-gradient(to bottom,black 75%,transparent);
3004
+ }
3002
3005
  .fill-current {
3003
3006
  fill: currentcolor;
3004
3007
  }
@@ -5270,6 +5273,12 @@
5270
5273
  -webkit-box-orient: vertical;
5271
5274
  -webkit-line-clamp: 1;
5272
5275
  }
5276
+ .sm\:line-clamp-3 {
5277
+ overflow: hidden;
5278
+ display: -webkit-box;
5279
+ -webkit-box-orient: vertical;
5280
+ -webkit-line-clamp: 3;
5281
+ }
5273
5282
  .sm\:grid {
5274
5283
  display: grid;
5275
5284
  }
@@ -5487,9 +5496,18 @@
5487
5496
  .lg\:flex-row {
5488
5497
  flex-direction: row;
5489
5498
  }
5499
+ .lg\:flex-nowrap {
5500
+ flex-wrap: nowrap;
5501
+ }
5490
5502
  .lg\:items-center {
5491
5503
  align-items: center;
5492
5504
  }
5505
+ .lg\:gap-2 {
5506
+ gap: calc(var(--spacing) * 2);
5507
+ }
5508
+ .lg\:overflow-x-auto {
5509
+ overflow-x: auto;
5510
+ }
5493
5511
  .lg\:p-0 {
5494
5512
  padding: 0px;
5495
5513
  }
package/dist/workflows.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
2
- import { C as TRIGGER_NODE_ID, E as buildWorkflowGraph, F as shortModel, M as actionPathLabel, N as humanizeIdentifier, O as triggerNodeId, P as parseActionPath, T as branchNodeId, a as NodeMark, d as STATUS_PILL, f as STATUS_TONE, i as KIND_ICON, k as triggerNodeIndex, l as STATUS_COLOR, m as StatusPill, n as classifyOutput, r as condenseText, t as NodeOutputBody, u as STATUS_LABEL, w as actionNodeId } from "./node-output-BQr2Dgy5.js";
2
+ import { C as TRIGGER_NODE_ID, E as buildWorkflowGraph, F as shortModel, M as actionPathLabel, N as humanizeIdentifier, O as triggerNodeId, P as parseActionPath, T as branchNodeId, a as NodeMark, d as STATUS_PILL, f as STATUS_TONE, i as KIND_ICON, k as triggerNodeIndex, l as STATUS_COLOR, m as StatusPill, n as classifyOutput, r as condenseText, t as NodeOutputBody, u as STATUS_LABEL, w as actionNodeId } from "./node-output-BdfG5lt4.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import { Component, Suspense, lazy, useMemo, useState } from "react";
5
5
  //#region src/workflows/WorkflowGraphLazy.tsx
@@ -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-YhtQWa5b.js").then((m) => ({ default: m.WorkflowGraph }))));
33
+ return lazy(() => retryImport(() => import("./WorkflowGraph-Cx6SkrNJ.js").then((m) => ({ default: m.WorkflowGraph }))));
34
34
  }
35
35
  var GraphErrorBoundary = class extends Component {
36
36
  state = { hasError: false };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.131.2",
3
+ "version": "0.131.4",
4
4
  "license": "MIT",
5
5
  "description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
6
6
  "repository": {
@@ -133,8 +133,8 @@
133
133
  "@hocuspocus/provider": ">=2.15.0 <5.0.0",
134
134
  "@nanostores/react": ">=0.8.4 <2.0.0",
135
135
  "@tangle-network/agent-interface": "^1.0.0 || ^2.0.0 || ^3.0.0",
136
- "@tangle-network/brand": "^1.19.2",
137
- "@tangle-network/ui": "^11.30.0",
136
+ "@tangle-network/brand": "^1.19.3",
137
+ "@tangle-network/ui": "^11.30.1",
138
138
  "@tanstack/react-query": "^5.0.0",
139
139
  "@tiptap/core": ">=3.20.4 <4.0.0",
140
140
  "@tiptap/extension-collaboration": ">=3.20.4 <4.0.0",
@@ -223,8 +223,8 @@
223
223
  "@storybook/react-vite": "^10.6.0",
224
224
  "@tailwindcss/postcss": "^4.3.3",
225
225
  "@tangle-network/agent-interface": "3.0.0",
226
- "@tangle-network/brand": "1.19.2",
227
- "@tangle-network/ui": "11.30.0",
226
+ "@tangle-network/brand": "1.19.3",
227
+ "@tangle-network/ui": "11.30.1",
228
228
  "@tanstack/react-query": "^5.104.0",
229
229
  "@testing-library/dom": "^10.4.2",
230
230
  "@testing-library/jest-dom": "^7.0.1",