@tangle-network/sandbox-ui 0.133.1 → 0.133.3

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/tokens.css CHANGED
@@ -129,8 +129,10 @@
129
129
  contrast floor against the L2 card. */
130
130
  --hsl-accent: 249 24% 16%; /* neutral hover (indigo lives in accent-surface-strong) */
131
131
  --hsl-accent-foreground: 0 0% 90.1961%;
132
- --hsl-destructive: 348 74% 48%;
133
- --hsl-destructive-foreground: 0 0% 100%;
132
+ /* Light red carrying dark ink, as the dark primary does: it must read as
133
+ * error TEXT on every dark plane (AA) and still carry its foreground as a fill. */
134
+ --hsl-destructive: 0 90% 77%;
135
+ --hsl-destructive-foreground: 0 60% 10%;
134
136
  /* Quiet on purpose: 1.5:1 against the resting card. Shadow does no work on a
135
137
  * dark canvas, so the hairline is what states where a plane ends. */
136
138
  --hsl-border: 243 20% 20%; /* #2a293d = --md3-outline-variant */
@@ -464,7 +466,7 @@
464
466
  --shell-inset-gutter: 0.5rem; /* 8px */
465
467
  /* Transcript: the person's and the agent's messages share one family, size
466
468
  and leading; they differ only by alignment and surface. */
467
- --transcript-font-size: var(--font-size-base);
469
+ --transcript-font-size: 1rem; /* 16px: the chat reading size */
468
470
  --transcript-line-height: var(--line-height-base);
469
471
 
470
472
  /* Typography scale — override per-app for custom type hierarchy.
@@ -548,8 +550,8 @@
548
550
  --transition-medium: 0.24s ease;
549
551
 
550
552
  /* Fonts — unified on Inter (dark + light) */
551
- --font-sans: "Inter", "Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;
552
- --font-display: "Inter", "Geist", sans-serif;
553
+ --font-sans: "Inter Variable", "Inter", "Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;
554
+ --font-display: "Inter Variable", "Inter", "Geist", sans-serif;
553
555
  --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
554
556
  }
555
557
 
@@ -877,8 +879,8 @@
877
879
  --accent-text: #3c32e9;
878
880
 
879
881
  /* Typography — unified on Inter */
880
- --font-sans: "Inter", "Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;
881
- --font-display: "Inter", "Geist", sans-serif;
882
+ --font-sans: "Inter Variable", "Inter", "Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;
883
+ --font-display: "Inter Variable", "Inter", "Geist", sans-serif;
882
884
  --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
883
885
 
884
886
  /* Radius — unified chrome scale (matches dark; 8px md) */
@@ -938,6 +940,85 @@
938
940
  --border-strong: color-mix(in srgb, hsl(var(--hsl-border)), hsl(var(--hsl-foreground)) 20%);
939
941
  }
940
942
 
943
+ /* Surface ladder and interaction states — the palette behind @tangle-network/ui's
944
+ * interaction helpers (`ixControl`, `ixField`, `ixSelected`, `ixRow` … in ui's
945
+ * lib/interaction.ts) and the Card primitive's surface context.
946
+ *
947
+ * LADDER. A card (`[data-slot="card"]`) re-declares two context variables for
948
+ * everything inside it, so nesting needs no app selector:
949
+ * --card the plane a nested card or `bg-card` box paints: --hsl-raised one
950
+ * level in, --hsl-raised-2 two levels in.
951
+ * --well the field fill: --well-page on the page, --well-card in a card,
952
+ * --well-raised in a card in a card, --well-raised-2 deeper still.
953
+ * A theme that tunes its ladder (Hospitality) sets these per mode. The defaults
954
+ * below reproduce the plain spine exactly — every level paints the card and
955
+ * every well is --bg-input — so a theme that does not set them looks as it did.
956
+ *
957
+ * INTERACTION. Four states, all from the focus ring hue (--hsl-ring), so one
958
+ * green or one indigo marks every interactive thing in a theme:
959
+ * hover 1px edge at .45 plus a 4px halo at .16 (--ix-hover)
960
+ * press 1px edge at .95 plus a 4px halo at .30 (--ix-press)
961
+ * after a mouse-focused control keeps a 1px .60 / 3px .14 ring (--ix-after)
962
+ * selected a .13 tint (.18 in dark) with a 1px inset ring at .85
963
+ * Keyboard focus-visible keeps --focus-border / --focus-halo above.
964
+ *
965
+ * Declared on every scope that can redefine --hsl-ring or the ladder, as the
966
+ * focus rule is, because a custom property is resolved where it is declared. */
967
+ :root,
968
+ .dark,
969
+ .light,
970
+ [data-sandbox-ui],
971
+ [data-sandbox-theme],
972
+ [data-theme] {
973
+ --hsl-raised: var(--hsl-card);
974
+ --hsl-raised-2: var(--hsl-card);
975
+ --well-page: var(--bg-input);
976
+ --well-card: var(--bg-input);
977
+ --well-raised: var(--bg-input);
978
+ --well-raised-2: var(--bg-input);
979
+ --well: var(--well-page);
980
+ --field-border: hsl(var(--hsl-border));
981
+ --shadow-raised: var(--shadow-card);
982
+ /* A shadow token joins a comma list, so "none" would void the whole list. */
983
+ --shadow-well: 0 0 0 0 transparent;
984
+ --edge-highlight: 0 0 0 0 transparent;
985
+ --ix-hover: 0 0 0 1px hsl(var(--hsl-ring) / 0.45), 0 0 0 4px hsl(var(--hsl-ring) / 0.16);
986
+ --ix-hover-border: hsl(var(--hsl-ring) / 0.7);
987
+ --ix-press: 0 0 0 1px hsl(var(--hsl-ring) / 0.95), 0 0 0 4px hsl(var(--hsl-ring) / 0.3);
988
+ --ix-after: 0 0 0 1px hsl(var(--hsl-ring) / 0.6), 0 0 0 3px hsl(var(--hsl-ring) / 0.14);
989
+ --ix-sel-ring: hsl(var(--hsl-ring) / 0.85);
990
+ --ix-sel-bg: hsl(var(--hsl-ring) / 0.18);
991
+ --ix-hover-bg: hsl(var(--hsl-ring) / 0.08);
992
+ }
993
+
994
+ /* Light planes need less tint for the same step. Same scope list as the chart
995
+ * light rule below; dark is the default. */
996
+ [data-sandbox-theme="vault"]:where(:not(.dark)),
997
+ [data-sandbox-theme="dawn"]:where(:not(.dark)),
998
+ [data-theme="hospitality"]:where(:not(.dark)),
999
+ [data-theme="website"]:where(:not(.dark)),
1000
+ [data-theme="light"],
1001
+ .light,
1002
+ [data-theme$="-light"] {
1003
+ --ix-sel-bg: hsl(var(--hsl-ring) / 0.13);
1004
+ --ix-hover-bg: hsl(var(--hsl-ring) / 0.07);
1005
+ }
1006
+
1007
+ /* Surface context: keyed only on the Card primitive's data-slot, never on app
1008
+ * classes. :where(*) keeps it at the specificity of one attribute, so a theme
1009
+ * scope opened inside a card still wins. */
1010
+ [data-slot="card"] :where(*) {
1011
+ --card: var(--hsl-raised);
1012
+ --well: var(--well-card);
1013
+ }
1014
+ [data-slot="card"] [data-slot="card"] :where(*) {
1015
+ --card: var(--hsl-raised-2);
1016
+ --well: var(--well-raised);
1017
+ }
1018
+ [data-slot="card"] [data-slot="card"] [data-slot="card"] :where(*) {
1019
+ --well: var(--well-raised-2);
1020
+ }
1021
+
941
1022
  /* Chart marks — the palette behind @tangle-network/charts.
942
1023
  *
943
1024
  * One accent marks the measure a reader decides on (a rate bar, a frontier
package/dist/utils.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, timeAgo, truncateText } from "@tangle-network/ui/utils";
2
- export { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, timeAgo, truncateText };
1
+ import { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, ixControl, ixControlAfter, ixControlSoft, ixField, ixRow, ixSelected, ixTabUnderline, timeAgo, truncateText } from "@tangle-network/ui/utils";
2
+ export { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, ixControl, ixControlAfter, ixControlSoft, ixField, ixRow, ixSelected, ixTabUnderline, timeAgo, truncateText };
package/dist/utils.js CHANGED
@@ -1,2 +1,2 @@
1
- import { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, timeAgo, truncateText } from "@tangle-network/ui/utils";
2
- export { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, timeAgo, truncateText };
1
+ import { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, ixControl, ixControlAfter, ixControlSoft, ixField, ixRow, ixSelected, ixTabUnderline, timeAgo, truncateText } from "@tangle-network/ui/utils";
2
+ export { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, ixControl, ixControlAfter, ixControlSoft, ixField, ixRow, ixSelected, ixTabUnderline, timeAgo, truncateText };
@@ -1,5 +1,5 @@
1
1
  import { t as cn$1 } from "./utils-DzWbktWG.js";
2
- import { a as PortsList } from "./dashboard-ByNeu9gf.js";
2
+ import { a as PortsList } from "./dashboard-BbMqXGgc.js";
3
3
  import { n as TerminalView } from "./terminal-DmSUfGha.js";
4
4
  import { RichFileTree } from "./files.js";
5
5
  import { n as PreviewView } from "./embedded-app-view-CYb9hevq.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-CPS8qGlD.js";
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-CpezlDh3.js";
2
2
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CYb9hevq.js";
3
3
  export { BRAND_PRISM_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats, resolveLanguage };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.133.1",
3
+ "version": "0.133.3",
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.21.0",
137
- "@tangle-network/ui": "^11.32.0",
136
+ "@tangle-network/brand": "^1.23.0",
137
+ "@tangle-network/ui": "^11.33.0",
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.21.0",
227
- "@tangle-network/ui": "11.32.0",
226
+ "@tangle-network/brand": "1.23.0",
227
+ "@tangle-network/ui": "11.33.0",
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",