@tangle-network/sandbox-ui 0.38.0 → 0.39.1

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/chat.js CHANGED
@@ -16,9 +16,9 @@ import {
16
16
  modelProvider,
17
17
  snapHarnessToModel,
18
18
  snapModelToHarness
19
- } from "./chunk-DVEIMFMF.js";
20
- import "./chunk-I64YISXS.js";
21
- import "./chunk-NMR2CTGP.js";
19
+ } from "./chunk-CUUUFJF5.js";
20
+ import "./chunk-KIRJZUX2.js";
21
+ import "./chunk-3RNYDTQ3.js";
22
22
  import "./chunk-EI44GEQ5.js";
23
23
  export {
24
24
  AgentSessionControls,
@@ -234,6 +234,20 @@ function compareModelGroups(a, b) {
234
234
  function compareModelsByDisplayName(a, b) {
235
235
  return (a.name ?? a.id).localeCompare(b.name ?? b.id);
236
236
  }
237
+ function stripBrandPrefix(name, identity) {
238
+ if (!identity) return name;
239
+ for (const label of [identity.lab.label, identity.host.label]) {
240
+ if (!label) continue;
241
+ if (name.toLowerCase().startsWith(label.toLowerCase())) {
242
+ const after = name.slice(label.length);
243
+ if (/^[\s:]/.test(after)) {
244
+ const rest = after.replace(/^[\s:]+/, "").trim();
245
+ if (rest) return rest;
246
+ }
247
+ }
248
+ }
249
+ return name;
250
+ }
237
251
  function ModelPicker({
238
252
  value,
239
253
  onChange,
@@ -291,8 +305,11 @@ function ModelPicker({
291
305
  () => models.find((m) => canonicalModelId(m) === value),
292
306
  [models, value]
293
307
  );
294
- const currentLabel = current?.name ?? current?.id ?? value;
295
308
  const currentIdentity = current ? resolveModelBrandIdentity(current) : null;
309
+ const currentLabel = stripBrandPrefix(
310
+ current?.name ?? current?.id ?? value,
311
+ currentIdentity
312
+ );
296
313
  const recentIds = React.useMemo(() => {
297
314
  if (!recents?.length) return [];
298
315
  const lookup = new Map(models.map((m) => [canonicalModelId(m), m]));
@@ -2,11 +2,11 @@ import {
2
2
  HARNESS_OPTIONS,
3
3
  HarnessLogo,
4
4
  chatCapableHarnesses
5
- } from "./chunk-I64YISXS.js";
5
+ } from "./chunk-KIRJZUX2.js";
6
6
  import {
7
7
  ModelPicker,
8
8
  canonicalModelId
9
- } from "./chunk-NMR2CTGP.js";
9
+ } from "./chunk-3RNYDTQ3.js";
10
10
  import {
11
11
  cn
12
12
  } from "./chunk-EI44GEQ5.js";
@@ -115,10 +115,7 @@ function ReasoningLevelPicker({
115
115
  children: shown.map((option) => /* @__PURE__ */ jsxs(
116
116
  DropdownMenu.Item,
117
117
  {
118
- onSelect: (event) => {
119
- event.preventDefault();
120
- onChange(option.value);
121
- },
118
+ onSelect: () => onChange(option.value),
122
119
  className: cn(
123
120
  "flex cursor-pointer items-start gap-2.5 rounded-md px-2.5 py-2 outline-none",
124
121
  "transition-colors hover:bg-accent/40 focus:bg-accent/40",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  moonshot_default
3
- } from "./chunk-NMR2CTGP.js";
3
+ } from "./chunk-3RNYDTQ3.js";
4
4
  import {
5
5
  cn
6
6
  } from "./chunk-EI44GEQ5.js";
package/dist/dashboard.js CHANGED
@@ -69,7 +69,7 @@ import {
69
69
  HarnessLogo,
70
70
  HarnessPicker,
71
71
  chatCapableHarnesses
72
- } from "./chunk-I64YISXS.js";
72
+ } from "./chunk-KIRJZUX2.js";
73
73
  import {
74
74
  DEFAULT_FEATURED_MODEL_IDS,
75
75
  ModelPicker,
@@ -78,7 +78,7 @@ import {
78
78
  formatContext,
79
79
  formatPricing,
80
80
  modelDedupKey
81
- } from "./chunk-NMR2CTGP.js";
81
+ } from "./chunk-3RNYDTQ3.js";
82
82
  import "./chunk-EI44GEQ5.js";
83
83
  export {
84
84
  ActivityFeed,
package/dist/globals.css CHANGED
@@ -619,6 +619,10 @@
619
619
  .aspect-square {
620
620
  aspect-ratio: 1 / 1;
621
621
  }
622
+ .size-3 {
623
+ width: calc(var(--spacing) * 3);
624
+ height: calc(var(--spacing) * 3);
625
+ }
622
626
  .h-1 {
623
627
  height: calc(var(--spacing) * 1);
624
628
  }
@@ -706,6 +710,9 @@
706
710
  .h-\[500px\] {
707
711
  height: 500px;
708
712
  }
713
+ .h-\[560px\] {
714
+ height: 560px;
715
+ }
709
716
  .h-\[var\(--avatar-size\)\] {
710
717
  height: var(--avatar-size);
711
718
  }
@@ -982,6 +989,9 @@
982
989
  .w-\[680px\] {
983
990
  width: 680px;
984
991
  }
992
+ .w-\[760px\] {
993
+ width: 760px;
994
+ }
985
995
  .w-\[900px\] {
986
996
  width: 900px;
987
997
  }
@@ -1821,14 +1831,11 @@
1821
1831
  .border-t-transparent {
1822
1832
  border-top-color: transparent;
1823
1833
  }
1824
- .bg-\[\#8E59FF\] {
1825
- background-color: #8E59FF;
1826
- }
1827
- .bg-\[\#FEBC2E\] {
1828
- background-color: #FEBC2E;
1829
- }
1830
- .bg-\[\#FF5F57\] {
1831
- background-color: #FF5F57;
1834
+ .bg-\[color-mix\(in_oklch\,var\(--color-warning\,orange\)_18\%\,transparent\)\] {
1835
+ background-color: var(--color-warning,orange);
1836
+ @supports (color: color-mix(in lab, red, red)) {
1837
+ background-color: color-mix(in oklch,var(--color-warning,orange) 18%,transparent);
1838
+ }
1832
1839
  }
1833
1840
  .bg-\[color\:color-mix\(in_srgb\,var\(--bg-card\)_94\%\,transparent\)\] {
1834
1841
  background-color: var(--bg-card);
@@ -2331,9 +2338,6 @@
2331
2338
  .pr-2 {
2332
2339
  padding-right: calc(var(--spacing) * 2);
2333
2340
  }
2334
- .pr-4 {
2335
- padding-right: calc(var(--spacing) * 4);
2336
- }
2337
2341
  .pr-8 {
2338
2342
  padding-right: calc(var(--spacing) * 8);
2339
2343
  }
@@ -2397,9 +2401,6 @@
2397
2401
  .align-text-bottom {
2398
2402
  vertical-align: text-bottom;
2399
2403
  }
2400
- .align-top {
2401
- vertical-align: top;
2402
- }
2403
2404
  .font-mono {
2404
2405
  font-family: var(--font-mono);
2405
2406
  }
@@ -2669,9 +2670,6 @@
2669
2670
  .whitespace-nowrap {
2670
2671
  white-space: nowrap;
2671
2672
  }
2672
- .whitespace-pre {
2673
- white-space: pre;
2674
- }
2675
2673
  .whitespace-pre-wrap {
2676
2674
  white-space: pre-wrap;
2677
2675
  }
@@ -4305,9 +4303,9 @@
4305
4303
  --shadow-dropdown: 0 8px 30px rgba(0, 0, 0, 0.45);
4306
4304
  --shadow-glow: none;
4307
4305
  --shadow-accent: 0 1px 2px rgba(0, 0, 0, 0.3);
4308
- --shadow-status-running: 0 0 6px rgba(16, 185, 129, 0.5);
4309
- --shadow-status-creating: 0 0 6px rgba(99, 102, 241, 0.5);
4310
- --shadow-status-error: 0 0 6px rgba(255, 77, 109, 0.5);
4306
+ --shadow-status-running: none;
4307
+ --shadow-status-creating: none;
4308
+ --shadow-status-error: none;
4311
4309
  --radius-sm: 6px;
4312
4310
  --radius-md: 8px;
4313
4311
  --radius-lg: 10px;
@@ -4324,9 +4322,19 @@
4324
4322
  --font-size-base: 0.9375rem;
4325
4323
  --font-size-lg: 1rem;
4326
4324
  --font-size-xl: 1.25rem;
4325
+ --font-size-2xl: 1.5rem;
4326
+ --font-size-3xl: 1.875rem;
4327
+ --font-size-4xl: 2.25rem;
4328
+ --font-size-hero: clamp(2rem, 1.2rem + 3.2vw, 3rem);
4329
+ --font-size-display: clamp(2.5rem, 1.1rem + 5vw, 4rem);
4327
4330
  --line-height-tight: 1.3;
4328
4331
  --line-height-base: 1.6;
4329
4332
  --line-height-relaxed: 1.75;
4333
+ --line-height-display: 1.05;
4334
+ --line-height-heading: 1.15;
4335
+ --tracking-tight: -0.02em;
4336
+ --tracking-snug: -0.01em;
4337
+ --tracking-wide: 0.08em;
4330
4338
  --avatar-size: 2rem;
4331
4339
  --timeline-dot-size: 0.625rem;
4332
4340
  --indicator-dot-size: 0.25rem;
package/dist/index.js CHANGED
@@ -104,7 +104,7 @@ import {
104
104
  modelProvider,
105
105
  snapHarnessToModel,
106
106
  snapModelToHarness
107
- } from "./chunk-DVEIMFMF.js";
107
+ } from "./chunk-CUUUFJF5.js";
108
108
  import {
109
109
  ExpandedToolDetail,
110
110
  InlineThinkingItem,
@@ -302,7 +302,7 @@ import {
302
302
  HarnessLogo,
303
303
  HarnessPicker,
304
304
  chatCapableHarnesses
305
- } from "./chunk-I64YISXS.js";
305
+ } from "./chunk-KIRJZUX2.js";
306
306
  import {
307
307
  DEFAULT_FEATURED_MODEL_IDS,
308
308
  ModelPicker,
@@ -311,7 +311,7 @@ import {
311
311
  formatContext,
312
312
  formatPricing,
313
313
  modelDedupKey
314
- } from "./chunk-NMR2CTGP.js";
314
+ } from "./chunk-3RNYDTQ3.js";
315
315
  import "./chunk-EI44GEQ5.js";
316
316
 
317
317
  // src/index.ts
package/dist/pages.js CHANGED
@@ -24,7 +24,7 @@ import {
24
24
  Switch,
25
25
  Textarea
26
26
  } from "./chunk-4ZZUMXPX.js";
27
- import "./chunk-NMR2CTGP.js";
27
+ import "./chunk-3RNYDTQ3.js";
28
28
  import {
29
29
  cn
30
30
  } from "./chunk-EI44GEQ5.js";
package/dist/styles.css CHANGED
@@ -619,6 +619,10 @@
619
619
  .aspect-square {
620
620
  aspect-ratio: 1 / 1;
621
621
  }
622
+ .size-3 {
623
+ width: calc(var(--spacing) * 3);
624
+ height: calc(var(--spacing) * 3);
625
+ }
622
626
  .h-1 {
623
627
  height: calc(var(--spacing) * 1);
624
628
  }
@@ -706,6 +710,9 @@
706
710
  .h-\[500px\] {
707
711
  height: 500px;
708
712
  }
713
+ .h-\[560px\] {
714
+ height: 560px;
715
+ }
709
716
  .h-\[var\(--avatar-size\)\] {
710
717
  height: var(--avatar-size);
711
718
  }
@@ -982,6 +989,9 @@
982
989
  .w-\[680px\] {
983
990
  width: 680px;
984
991
  }
992
+ .w-\[760px\] {
993
+ width: 760px;
994
+ }
985
995
  .w-\[900px\] {
986
996
  width: 900px;
987
997
  }
@@ -1821,14 +1831,11 @@
1821
1831
  .border-t-transparent {
1822
1832
  border-top-color: transparent;
1823
1833
  }
1824
- .bg-\[\#8E59FF\] {
1825
- background-color: #8E59FF;
1826
- }
1827
- .bg-\[\#FEBC2E\] {
1828
- background-color: #FEBC2E;
1829
- }
1830
- .bg-\[\#FF5F57\] {
1831
- background-color: #FF5F57;
1834
+ .bg-\[color-mix\(in_oklch\,var\(--color-warning\,orange\)_18\%\,transparent\)\] {
1835
+ background-color: var(--color-warning,orange);
1836
+ @supports (color: color-mix(in lab, red, red)) {
1837
+ background-color: color-mix(in oklch,var(--color-warning,orange) 18%,transparent);
1838
+ }
1832
1839
  }
1833
1840
  .bg-\[color\:color-mix\(in_srgb\,var\(--bg-card\)_94\%\,transparent\)\] {
1834
1841
  background-color: var(--bg-card);
@@ -2331,9 +2338,6 @@
2331
2338
  .pr-2 {
2332
2339
  padding-right: calc(var(--spacing) * 2);
2333
2340
  }
2334
- .pr-4 {
2335
- padding-right: calc(var(--spacing) * 4);
2336
- }
2337
2341
  .pr-8 {
2338
2342
  padding-right: calc(var(--spacing) * 8);
2339
2343
  }
@@ -2397,9 +2401,6 @@
2397
2401
  .align-text-bottom {
2398
2402
  vertical-align: text-bottom;
2399
2403
  }
2400
- .align-top {
2401
- vertical-align: top;
2402
- }
2403
2404
  .font-mono {
2404
2405
  font-family: var(--font-mono);
2405
2406
  }
@@ -2669,9 +2670,6 @@
2669
2670
  .whitespace-nowrap {
2670
2671
  white-space: nowrap;
2671
2672
  }
2672
- .whitespace-pre {
2673
- white-space: pre;
2674
- }
2675
2673
  .whitespace-pre-wrap {
2676
2674
  white-space: pre-wrap;
2677
2675
  }
@@ -4305,9 +4303,9 @@
4305
4303
  --shadow-dropdown: 0 8px 30px rgba(0, 0, 0, 0.45);
4306
4304
  --shadow-glow: none;
4307
4305
  --shadow-accent: 0 1px 2px rgba(0, 0, 0, 0.3);
4308
- --shadow-status-running: 0 0 6px rgba(16, 185, 129, 0.5);
4309
- --shadow-status-creating: 0 0 6px rgba(99, 102, 241, 0.5);
4310
- --shadow-status-error: 0 0 6px rgba(255, 77, 109, 0.5);
4306
+ --shadow-status-running: none;
4307
+ --shadow-status-creating: none;
4308
+ --shadow-status-error: none;
4311
4309
  --radius-sm: 6px;
4312
4310
  --radius-md: 8px;
4313
4311
  --radius-lg: 10px;
@@ -4324,9 +4322,19 @@
4324
4322
  --font-size-base: 0.9375rem;
4325
4323
  --font-size-lg: 1rem;
4326
4324
  --font-size-xl: 1.25rem;
4325
+ --font-size-2xl: 1.5rem;
4326
+ --font-size-3xl: 1.875rem;
4327
+ --font-size-4xl: 2.25rem;
4328
+ --font-size-hero: clamp(2rem, 1.2rem + 3.2vw, 3rem);
4329
+ --font-size-display: clamp(2.5rem, 1.1rem + 5vw, 4rem);
4327
4330
  --line-height-tight: 1.3;
4328
4331
  --line-height-base: 1.6;
4329
4332
  --line-height-relaxed: 1.75;
4333
+ --line-height-display: 1.05;
4334
+ --line-height-heading: 1.15;
4335
+ --tracking-tight: -0.02em;
4336
+ --tracking-snug: -0.01em;
4337
+ --tracking-wide: 0.08em;
4330
4338
  --avatar-size: 2rem;
4331
4339
  --timeline-dot-size: 0.625rem;
4332
4340
  --indicator-dot-size: 0.25rem;
package/dist/tokens.css CHANGED
@@ -222,9 +222,9 @@
222
222
  --shadow-dropdown: 0 8px 30px rgba(0, 0, 0, 0.45);
223
223
  --shadow-glow: none;
224
224
  --shadow-accent: 0 1px 2px rgba(0, 0, 0, 0.3);
225
- --shadow-status-running: 0 0 6px rgba(16, 185, 129, 0.5);
226
- --shadow-status-creating: 0 0 6px rgba(99, 102, 241, 0.5);
227
- --shadow-status-error: 0 0 6px rgba(255, 77, 109, 0.5);
225
+ --shadow-status-running: none;
226
+ --shadow-status-creating: none;
227
+ --shadow-status-error: none;
228
228
 
229
229
  /* Radii */
230
230
  --radius-sm: 6px;
@@ -247,10 +247,24 @@
247
247
  --font-size-sm: 0.75rem; /* 12px — captions, meta */
248
248
  --font-size-base: 0.9375rem; /* 15px — message body */
249
249
  --font-size-lg: 1rem; /* 16px — emphasized text */
250
- --font-size-xl: 1.25rem; /* 20px — section headers */
250
+ --font-size-xl: 1.25rem; /* 20px — section title (h2) */
251
+ /* Display tier — page titles, marketing section heads, and heroes.
252
+ Hero sizes are fluid (clamp) so they scale with the viewport without
253
+ per-breakpoint overrides; the dense-app sizes above stay fixed. */
254
+ --font-size-2xl: 1.5rem; /* 24px — large section title */
255
+ --font-size-3xl: 1.875rem; /* 30px — page title (h1) */
256
+ --font-size-4xl: 2.25rem; /* 36px — compact marketing section head */
257
+ --font-size-hero: clamp(2rem, 1.2rem + 3.2vw, 3rem); /* 32→48px — secondary hero */
258
+ --font-size-display: clamp(2.5rem, 1.1rem + 5vw, 4rem); /* 40→64px — primary hero */
251
259
  --line-height-tight: 1.3;
252
260
  --line-height-base: 1.6; /* tighter body rhythm (was 1.75) */
253
261
  --line-height-relaxed: 1.75;
262
+ --line-height-display: 1.05; /* heroes — near-solid set */
263
+ --line-height-heading: 1.15; /* page/section titles */
264
+ /* Letter-spacing — titles tighten, eyebrows/labels open up */
265
+ --tracking-tight: -0.02em; /* display + page titles */
266
+ --tracking-snug: -0.01em; /* section titles */
267
+ --tracking-wide: 0.08em; /* uppercase eyebrows / stat labels */
254
268
 
255
269
  /* Component spacing — override per-app for tighter/looser layouts */
256
270
  --avatar-size: 2rem; /* 32px — chat avatars */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.38.0",
3
+ "version": "0.39.1",
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",
@@ -114,8 +114,8 @@
114
114
  "test:bridge": "pnpm build && vitest run src/__tests__/re-export-identity.test.ts"
115
115
  },
116
116
  "peerDependencies": {
117
- "@tangle-network/brand": "^0.4.0",
118
- "@tangle-network/ui": "^1.0.1",
117
+ "@tangle-network/brand": "^0.5.0",
118
+ "@tangle-network/ui": "^4.0.0",
119
119
  "react": "^18 || ^19",
120
120
  "react-dom": "^18 || ^19",
121
121
  "@tangle-network/agent-interface": ">=0.10.0 <1.0.0"
@@ -162,8 +162,8 @@
162
162
  "@storybook/react-vite": "^8.6.18",
163
163
  "@tailwindcss/postcss": "^4.2.2",
164
164
  "@tailwindcss/vite": "^4.2.2",
165
- "@tangle-network/brand": "^0.4.0",
166
- "@tangle-network/ui": "^1.0.1",
165
+ "@tangle-network/brand": "^0.5.0",
166
+ "@tangle-network/ui": "^4.1.0",
167
167
  "@tanstack/react-query": "^5.91.0",
168
168
  "@testing-library/dom": "^10.4.1",
169
169
  "@testing-library/jest-dom": "^6.9.1",