@tangle-network/brand 1.31.3 → 1.31.5

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.
@@ -48,6 +48,7 @@ export const SURFACES = {
48
48
  blueprint: { repo: "tangle-network/blueprint-agent", roots: ["apps/web"] },
49
49
  // SUPER's interface is plain JavaScript and HTML, so its colors live in those files.
50
50
  super: { repo: "tangle-network/super-agent", roots: ["public"], extraExt: ["*.js", "*.html"] },
51
+ disco: { repo: "tangle-network/disco-app", roots: ["web"] },
51
52
  };
52
53
 
53
54
  const SRC_EXT = ["*.tsx", "*.ts", "*.jsx", "*.astro", "*.css", "*.vue", "*.svelte"];
@@ -79,6 +80,8 @@ export const PATTERNS = {
79
80
  // recessed backdrop for a gutter, its own pane expander icons, or a WorkspaceLayout seam
80
81
  // that moves the shell's controls or flattens its surface.
81
82
  shell_override: String.raw`md3-surface-dim|\bPanel(?:Right|Left)(?:Open|Close)?\b|\b(?:collapsedControlsPlacement|centerHeaderVisibility)\b|\bsurface=["'{]+flat\b`,
83
+ // A seat or model mark assembled in product code; sandbox-ui's SeatMark owns the logo beside its name.
84
+ local_mark_composition: String.raw`<(?:HarnessLogo|ModelBrandStack)\b`,
82
85
  };
83
86
 
84
87
  // Header-like: an element named `header`, or a class/id ending in one of the words below. It must be
@@ -126,6 +129,22 @@ export const RULE_PATTERNS = {
126
129
  String.raw`\bclassName=\{?["'\x60](?=[^"'\x60]*\btangle-(?:prose|transcript-text)\b)[^"'\x60]*?(?<![\w-])(?:text-(?:xs|sm|base|lg|xl|\[)|leading-|font-(?:sans|serif|mono))`,
127
130
  ],
128
131
  },
132
+ // A selection control composed from ui primitives: one per import that names a DropdownMenu, Popover,
133
+ // Select or Command part. sandbox-ui owns the pickers (HarnessPicker, BackendSelector, Chip, ...).
134
+ primitive_control_composition: {
135
+ prefilter: String.raw`@tangle-network/ui/primitives`,
136
+ patterns: [String.raw`\bimport\s*\{[^}]*?\b(?:DropdownMenu|Popover|Select|Command)\w*[^}]*\}\s*from\s*["']@tangle-network/ui/primitives(?:/[^"']*)?["']`],
137
+ },
138
+ // A selected row painted by hand instead of ixRow + ixSelected keyed on aria-current, or an action
139
+ // nav item (New, Create, Add, Start) made the active location, so the action reads as where you are.
140
+ nav_row_hand_painted: {
141
+ prefilter: String.raw`selected|current|active`,
142
+ patterns: [
143
+ String.raw`\[(?:data-state=["']?selected|aria-selected|aria-current|data-(?:selected|active|current))[^\]]*\](?:[\w:.()-]|\[[^\]]*\])*\s*(?:,[^{};]*)?\{[^{}]*?(?<![\w-])(?:background(?:-color)?|color|border(?:-color)?|box-shadow|outline)\s*:`,
144
+ String.raw`(?<![\w-])(?:aria-(?:current|selected)|data-\[(?:state=selected|selected|active|current)[^\]]*\]|aria-\[(?:current|selected)[^\]]*\]):(?:bg|text|border|ring|shadow)-`,
145
+ String.raw`\{\s*id:\s*(["'])([\w-]+)\1,\s*label:\s*["'](?:New|Create|Add|Start)\b[\s\S]*?\bactiveId=\{[^}]*?(["'])\2\3`,
146
+ ],
147
+ },
129
148
  };
130
149
 
131
150
  /**
@@ -181,6 +200,9 @@ function extensions(surface, metric) {
181
200
  case "header_height_literal": return ["*.tsx", "*.jsx", "*.astro", "*.css", "*.vue", "*.svelte"];
182
201
  case "transcript_type_override": return ["*.tsx", "*.jsx", "*.css"];
183
202
  case "settings_layout": return ["*.tsx", "*.jsx", "*.astro"];
203
+ case "local_mark_composition": return ["*.tsx", "*.jsx"];
204
+ case "primitive_control_composition": return ["*.tsx", "*.jsx", "*.ts"];
205
+ case "nav_row_hand_painted": return ["*.tsx", "*.jsx", "*.css"];
184
206
  case "imports": return ["*.tsx", "*.ts", "*.astro", "*.jsx"];
185
207
  default: return SRC_EXT;
186
208
  }
package/dist/index.js CHANGED
@@ -79,10 +79,10 @@ function Logo({ size = "md", variant = "full", suffix = null, className }) {
79
79
  }), /* @__PURE__ */ jsxs("div", {
80
80
  className: "flex items-baseline gap-1",
81
81
  children: [/* @__PURE__ */ jsx("span", {
82
- className: `font-bold tracking-tight ${cfg.text}`,
82
+ className: `font-semibold tracking-tight ${cfg.text}`,
83
83
  children: "Tangle"
84
84
  }), suffix ? /* @__PURE__ */ jsx("span", {
85
- className: `font-medium text-gradient-brand ${cfg.suffix}`,
85
+ className: `font-medium text-[var(--accent-text)] ${cfg.suffix}`,
86
86
  children: suffix
87
87
  }) : null]
88
88
  })]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/brand",
3
- "version": "1.31.3",
3
+ "version": "1.31.5",
4
4
  "description": "Tangle brand system — design tokens, logo, Tailwind v4 theme. Single source of truth for every Tangle app.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/logo.tsx CHANGED
@@ -54,9 +54,9 @@ export function Logo({
54
54
  <div className={cls}>
55
55
  <TangleKnot size={cfg.icon} className="shrink-0" />
56
56
  <div className="flex items-baseline gap-1">
57
- <span className={`font-bold tracking-tight ${cfg.text}`}>Tangle</span>
57
+ <span className={`font-semibold tracking-tight ${cfg.text}`}>Tangle</span>
58
58
  {suffix ? (
59
- <span className={`font-medium text-gradient-brand ${cfg.suffix}`}>{suffix}</span>
59
+ <span className={`font-medium text-[var(--accent-text)] ${cfg.suffix}`}>{suffix}</span>
60
60
  ) : null}
61
61
  </div>
62
62
  </div>
@@ -162,8 +162,12 @@
162
162
  }
163
163
 
164
164
  .status-dot-running { background: var(--status-running); box-shadow: var(--shadow-status-running); }
165
+ .status-dot-creating { background: var(--status-creating); }
165
166
  .status-dot-stopped { background: var(--status-stopped); }
167
+ .status-dot-warm { background: var(--status-warm); }
168
+ .status-dot-cold { background: var(--status-cold); }
166
169
  .status-dot-error { background: var(--status-error); box-shadow: var(--shadow-status-error); }
170
+ .status-dot-deleted { background: var(--status-deleted); }
167
171
  }
168
172
 
169
173
  /* Markdown prose — applied via `tangle-prose` on the Markdown renderer. The