xcode-graph 0.1.1 → 0.2.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.
@@ -4397,6 +4397,7 @@ function safeParseGraph(raw) {
4397
4397
  /** Mutable warning collector threaded through the transform */
4398
4398
  class WarningCollector {
4399
4399
  warnings = [];
4400
+ /** Adds a warning message to the collector */
4400
4401
  warn(message) {
4401
4402
  this.warnings.push(message);
4402
4403
  }
@@ -4506,7 +4507,7 @@ function getBaseString(base, key) {
4506
4507
  }
4507
4508
  /** Parse compilation conditions from build settings */
4508
4509
  function parseCompilationConditions(base) {
4509
- // biome-ignore lint/complexity/useLiteralKeys: TS noPropertyAccessFromIndexSignature requires bracket notation
4510
+ // biome-ignore lint/complexity/useLiteralKeys: bracket notation required for Record index signature (TS4111)
4510
4511
  const conditions = base['SWIFT_ACTIVE_COMPILATION_CONDITIONS'];
4511
4512
  if (!conditions)
4512
4513
  return undefined;
@@ -4589,6 +4590,7 @@ const NOTABLE_RESOURCE_PATTERNS = [
4589
4590
  '.xcdatamodeld',
4590
4591
  'LaunchScreen',
4591
4592
  ];
4593
+ /** Extracts the file path from a resource file element */
4592
4594
  function getResourceFilePath(res) {
4593
4595
  if ('file' in res)
4594
4596
  return res.file.path;
@@ -4596,6 +4598,7 @@ function getResourceFilePath(res) {
4596
4598
  return res.folderReference.path;
4597
4599
  return '';
4598
4600
  }
4601
+ /** Collects notable resource file patterns (e.g., .xcassets, .storyboard) into the output array */
4599
4602
  function collectNotablePatterns(resources, notableResources) {
4600
4603
  for (const res of resources) {
4601
4604
  const path = getResourceFilePath(res);
@@ -4633,6 +4636,7 @@ function getOriginFromProject(projectPath, projectType) {
4633
4636
  return Origin.External;
4634
4637
  return Origin.Local;
4635
4638
  }
4639
+ /** Returns a unique string key for a graph dependency based on its type and path */
4636
4640
  function getDependencyKey(dep) {
4637
4641
  if ('target' in dep)
4638
4642
  return `target:${dep.target.path}:${dep.target.name}`;
@@ -4652,6 +4656,7 @@ function getDependencyKey(dep) {
4652
4656
  return `macro:${dep.macro.path}`;
4653
4657
  return `unknown:${JSON.stringify(dep)}`;
4654
4658
  }
4659
+ /** Extracts a display name from a file path by stripping the given extensions */
4655
4660
  function getNameFromPath(path, extensions) {
4656
4661
  const filename = path.split('/').pop() ?? 'Unknown';
4657
4662
  let result = filename;
@@ -4660,6 +4665,7 @@ function getNameFromPath(path, extensions) {
4660
4665
  }
4661
4666
  return result;
4662
4667
  }
4668
+ /** Returns a human-readable name for a graph dependency */
4663
4669
  function getDependencyName(dep) {
4664
4670
  if ('target' in dep)
4665
4671
  return dep.target.name;
@@ -4679,6 +4685,7 @@ function getDependencyName(dep) {
4679
4685
  return getNameFromPath(dep.macro.path, []);
4680
4686
  return 'Unknown';
4681
4687
  }
4688
+ /** Maps a graph dependency to its corresponding NodeType */
4682
4689
  function getNodeTypeForDependency(dep) {
4683
4690
  if ('sdk' in dep || 'xcframework' in dep || 'framework' in dep)
4684
4691
  return NodeType.Framework;
@@ -4686,6 +4693,7 @@ function getNodeTypeForDependency(dep) {
4686
4693
  return NodeType.Package;
4687
4694
  return NodeType.Library;
4688
4695
  }
4696
+ /** Determines whether a dependency is local or external */
4689
4697
  function getOriginForDependency(dep) {
4690
4698
  if ('sdk' in dep || 'xcframework' in dep || 'packageProduct' in dep)
4691
4699
  return Origin.External;
@@ -4696,6 +4704,7 @@ function getOriginForDependency(dep) {
4696
4704
  }
4697
4705
  return Origin.Local;
4698
4706
  }
4707
+ /** Maps a graph dependency to its DependencyKind classification */
4699
4708
  function getDependencyKind(dep) {
4700
4709
  if ('target' in dep)
4701
4710
  return DependencyKind.Target;
@@ -4816,6 +4825,7 @@ function ensureDependencyNode(dep, nodes, lookup, fallbackProject, collector) {
4816
4825
  if (nodes.has(key))
4817
4826
  return key;
4818
4827
  const lookupData = lookup.get(key);
4828
+ /* v8 ignore start -- defensive: extractProjectTargets populates both maps together */
4819
4829
  if (lookupData) {
4820
4830
  const { target, projectName, projectPath, origin } = lookupData;
4821
4831
  nodes.set(key, createNodeFromTarget(key, target, projectName, projectPath, origin, collector));
@@ -4823,6 +4833,7 @@ function ensureDependencyNode(dep, nodes, lookup, fallbackProject, collector) {
4823
4833
  else {
4824
4834
  nodes.set(key, createNodeFromDependency(dep, fallbackProject));
4825
4835
  }
4836
+ /* v8 ignore stop */
4826
4837
  return key;
4827
4838
  }
4828
4839
  /** Process dependencies (flat alternating array) to create edges and missing nodes */
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "xcode-graph",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "xcodegraph": "1.34.5",
5
5
  "description": "Interactive dependency graph visualization web component for Xcode projects",
6
6
  "license": "MIT",
7
7
  "homepage": "https://ajkolean.github.io/xcode-graph/",
8
8
  "repository": {
9
9
  "type": "git",
10
- "url": "https://github.com/ajkolean/xcode-graph.git"
10
+ "url": "git+https://github.com/ajkolean/xcode-graph.git"
11
11
  },
12
12
  "bugs": {
13
13
  "url": "https://github.com/ajkolean/xcode-graph/issues"
@@ -20,14 +20,14 @@
20
20
  "lit",
21
21
  "visualization"
22
22
  ],
23
- "packageManager": "pnpm@10.30.3",
24
23
  "type": "module",
25
24
  "module": "dist/xcodegraph.js",
25
+ "types": "dist/types/src/index.d.ts",
26
26
  "exports": {
27
27
  ".": {
28
+ "types": "./dist/types/src/index.d.ts",
28
29
  "import": "./dist/xcodegraph.js"
29
- },
30
- "./dist/xcodegraph.js": "./dist/xcodegraph.js"
30
+ }
31
31
  },
32
32
  "files": [
33
33
  "dist/**/*.js",
@@ -41,50 +41,61 @@
41
41
  "access": "public"
42
42
  },
43
43
  "dependencies": {
44
- "@lit-labs/observers": "^2.1.0",
45
- "@lit-labs/virtualizer": "^2.1.1",
46
- "@zag-js/core": "^1.35.2",
47
- "@zag-js/vanilla": "^1.35.2",
44
+ "@zag-js/core": "^1.35.3",
45
+ "@zag-js/vanilla": "^1.35.3",
48
46
  "colord": "^2.9.3",
49
- "comlink": "^4.4.2",
50
47
  "d3-ease": "^3.0.1",
51
48
  "d3-force": "^3.0.0",
52
- "elkjs": "^0.11.0",
49
+ "d3-quadtree": "^3.0.1",
50
+ "elkjs": "^0.11.1",
53
51
  "focus-trap": "^8.0.0",
52
+ "fuse.js": "^7.1.0",
53
+ "graphology": "^0.26.0",
54
+ "graphology-components": "^1.5.4",
55
+ "graphology-dag": "^0.4.1",
56
+ "graphology-traversal": "^0.3.1",
57
+ "graphology-types": "^0.24.8",
54
58
  "lit": "^3.3.2",
55
59
  "lit-html": "^3.3.2",
56
60
  "zod": "^4.3.6"
57
61
  },
58
62
  "devDependencies": {
59
- "@biomejs/biome": "^2.4.4",
63
+ "@biomejs/biome": "^2.4.6",
60
64
  "@custom-elements-manifest/analyzer": "^0.11.0",
61
65
  "@lit-labs/compiler": "^1.1.2",
62
66
  "@lit-labs/signals": "^0.2.0",
63
67
  "@microsoft/api-extractor": "^7.57.6",
64
68
  "@open-wc/testing": "^4.0.0",
65
69
  "@rollup/plugin-typescript": "^12.3.0",
66
- "@size-limit/file": "^12.0.0",
70
+ "@size-limit/file": "^12.0.1",
67
71
  "@types/d3-ease": "^3.0.2",
68
72
  "@types/d3-force": "^3.0.10",
69
- "@types/node": "^25.3.3",
73
+ "@types/d3-quadtree": "^3.0.6",
74
+ "@types/node": "^25.3.5",
70
75
  "@vitest/browser-playwright": "^4.0.18",
71
76
  "@vitest/coverage-v8": "^4.0.18",
72
- "cem-plugin-expanded-types": "^1.4.0",
77
+ "@wc-toolkit/type-parser": "^1.2.0",
73
78
  "custom-element-jet-brains-integration": "^1.7.0",
74
79
  "custom-element-vs-code-integration": "^1.5.0",
75
80
  "depcheck": "^1.4.7",
76
81
  "jsdom": "^28.1.0",
77
- "rollup-plugin-minify-template-literals": "^1.1.7",
78
- "rollup-plugin-visualizer": "^7.0.0",
79
- "size-limit": "^12.0.0",
82
+ "rollup-plugin-visualizer": "^7.0.1",
83
+ "size-limit": "^12.0.1",
80
84
  "ts-lit-plugin": "^2.0.2",
85
+ "tslib": "^2.8.1",
81
86
  "typedoc": "^0.28.17",
87
+ "typedoc-plugin-markdown": "^4.10.0",
88
+ "typedoc-vitepress-theme": "^1.1.2",
82
89
  "vite": "7.3.1",
83
90
  "vitepress": "^1.6.4",
84
91
  "vitest": "^4.0.18",
85
92
  "vitest-axe": "^0.1.0",
86
93
  "vitest-canvas-mock": "^1.1.3"
87
94
  },
95
+ "customElements": "custom-elements.json",
96
+ "engines": {
97
+ "pnpm": ">=10"
98
+ },
88
99
  "scripts": {
89
100
  "dev": "vite",
90
101
  "build": "vite build",
@@ -101,8 +112,8 @@
101
112
  "test:coverage": "vitest run --coverage",
102
113
  "analyze": "cem analyze",
103
114
  "analyze:check": "cem analyze && git diff --exit-code custom-elements.json vscode.html-custom-data.json vscode.css-custom-data.json web-types.json",
104
- "docs:dev": "pnpm typedoc --out docs/.vitepress/dist/api && vitepress dev docs --port 5174",
105
- "docs:build": "vitepress build docs",
115
+ "docs:dev": "pnpm typedoc && vitepress dev docs --port 5174",
116
+ "docs:build": "pnpm typedoc && vitepress build docs",
106
117
  "docs:preview": "vitepress preview docs --port 5174",
107
118
  "docs:api": "typedoc",
108
119
  "docs:api:extract": "pnpm build:api && api-extractor run --local --verbose",
@@ -111,30 +122,5 @@
111
122
  "size": "size-limit",
112
123
  "size:why": "size-limit --why",
113
124
  "version:sync": "./scripts/version-sync.sh"
114
- },
115
- "customElements": "custom-elements.json",
116
- "pnpm": {
117
- "overrides": {
118
- "valibot": ">=1.2.0",
119
- "keygrip": "^1.1.0",
120
- "qs": ">=6.14.1",
121
- "minimatch": ">=10.2.3",
122
- "rollup@>=4.0.0 <4.59.0": ">=4.59.0",
123
- "koa": ">=2.16.4",
124
- "esbuild": ">=0.25.0",
125
- "lodash": ">=4.17.23",
126
- "markdown-it": ">=14.1.1",
127
- "diff@>=6.0.0 <8.0.3": ">=8.0.3"
128
- },
129
- "onlyBuiltDependencies": [
130
- "@swc/core",
131
- "@vaadin/vaadin-usage-statistics",
132
- "esbuild",
133
- "maplibre-gl",
134
- "unrs-resolver"
135
- ]
136
- },
137
- "engines": {
138
- "pnpm": ">=10"
139
125
  }
140
- }
126
+ }
@@ -26,11 +26,6 @@
26
26
  "name": "--badge-border-hover",
27
27
  "description": "Border color on hover (computed from color prop)",
28
28
  "values": []
29
- },
30
- {
31
- "name": "--badge-glow",
32
- "description": "Glow color on hover (computed from color prop)",
33
- "values": []
34
29
  }
35
30
  ],
36
31
  "pseudoElements": []
@@ -10,23 +10,18 @@
10
10
  },
11
11
  {
12
12
  "name": "xcode-graph-canvas",
13
- "description": "Canvas-based interactive graph visualization\n---\n\n\n### **Events:**\n - **zoom-change** - Dispatched when the zoom level changes (detail: number)\n- **node-select** - Dispatched when a node is selected or deselected (detail: { node })\n- **node-hover** - Dispatched when a node is hovered (detail: { nodeId })\n- **cluster-select** - Dispatched when a cluster is selected or deselected (detail: { clusterId })\n- **cluster-hover** - Dispatched when a cluster is hovered (detail: { clusterId })\n- **zoom-in** - Dispatched when zoom in is requested via keyboard\n- **zoom-out** - Dispatched when zoom out is requested via keyboard\n- **zoom-reset** - Dispatched when zoom reset is requested via keyboard",
13
+ "description": "Canvas2D interactive graph visualization\n---\n\n\n### **Events:**\n - **zoom-change** - Dispatched when the zoom level changes (detail: number)\n- **node-select** - Dispatched when a node is selected or deselected (detail: { node })\n- **node-hover** - Dispatched when a node is hovered (detail: { nodeId })\n- **cluster-select** - Dispatched when a cluster is selected or deselected (detail: { clusterId })\n- **cluster-hover** - Dispatched when a cluster is hovered (detail: { clusterId })\n- **zoom-in** - Dispatched when zoom in is requested via keyboard\n- **zoom-out** - Dispatched when zoom out is requested via keyboard\n- **zoom-reset** - Dispatched when zoom reset is requested via keyboard\n\n### **Methods:**\n - **fitToViewport(): _void_** - Adjusts zoom and pan so that all clusters fit within the visible viewport.",
14
14
  "attributes": [
15
15
  {
16
16
  "name": "search-query",
17
- "description": "Active search query for dimming non-matching nodes",
17
+ "description": "Active search query attribute-bound from parent via search-query=\"...\"",
18
18
  "values": []
19
19
  },
20
20
  {
21
21
  "name": "view-mode",
22
- "description": "Display mode affecting edge visibility",
22
+ "description": "Display mode attribute-bound from parent via view-mode=\"...\"",
23
23
  "values": [{ "name": "ViewMode" }]
24
24
  },
25
- {
26
- "name": "zoom",
27
- "description": "Current zoom level (affects color saturation and label visibility)",
28
- "values": []
29
- },
30
25
  {
31
26
  "name": "enable-animation",
32
27
  "description": "Whether physics animation is enabled for layout settling",
@@ -34,22 +29,22 @@
34
29
  },
35
30
  {
36
31
  "name": "show-direct-deps",
37
- "description": "Whether to highlight direct dependency edges",
32
+ "description": "Whether to highlight direct dependency edges — attribute-bound via ?show-direct-deps",
38
33
  "values": []
39
34
  },
40
35
  {
41
36
  "name": "show-transitive-deps",
42
- "description": "Whether to highlight transitive dependency edges",
37
+ "description": "Whether to highlight transitive dependency edges — attribute-bound via ?show-transitive-deps",
43
38
  "values": []
44
39
  },
45
40
  {
46
41
  "name": "show-direct-dependents",
47
- "description": "Whether to highlight direct dependent edges",
42
+ "description": "Whether to highlight direct dependent edges — attribute-bound via ?show-direct-dependents",
48
43
  "values": []
49
44
  },
50
45
  {
51
46
  "name": "show-transitive-dependents",
52
- "description": "Whether to highlight transitive dependent edges",
47
+ "description": "Whether to highlight transitive dependent edges — attribute-bound via ?show-transitive-dependents",
53
48
  "values": []
54
49
  }
55
50
  ],
@@ -319,7 +314,7 @@
319
314
  },
320
315
  {
321
316
  "name": "xcode-graph-badge",
322
- "description": "Color-themed badge with pill, rounded, and accent variants\n---\n\n\n### **CSS Properties:**\n - **--badge-bg** - Background color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-border** - Border color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-color** - Text color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-bg-hover** - Background color on hover (computed from color prop) _(default: undefined)_\n- **--badge-border-hover** - Border color on hover (computed from color prop) _(default: undefined)_\n- **--badge-glow** - Glow color on hover (computed from color prop) _(default: undefined)_",
317
+ "description": "Color-themed badge with pill, rounded, and accent variants\n---\n\n\n### **CSS Properties:**\n - **--badge-bg** - Background color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-border** - Border color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-color** - Text color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-bg-hover** - Background color on hover (computed from color prop) _(default: undefined)_\n- **--badge-border-hover** - Border color on hover (computed from color prop) _(default: undefined)_",
323
318
  "attributes": [
324
319
  {
325
320
  "name": "label",
@@ -345,11 +340,6 @@
345
340
  "name": "interactive",
346
341
  "description": "Whether the badge has interactive hover states",
347
342
  "values": []
348
- },
349
- {
350
- "name": "glow",
351
- "description": "Whether to show glow effect on hover",
352
- "values": []
353
343
  }
354
344
  ],
355
345
  "references": []
@@ -370,7 +360,7 @@
370
360
  },
371
361
  {
372
362
  "name": "color",
373
- "description": "Theme color for the icon box glow",
363
+ "description": "Theme color for the icon box",
374
364
  "values": []
375
365
  },
376
366
  {
@@ -909,7 +899,7 @@
909
899
  },
910
900
  {
911
901
  "name": "xcode-graph-header",
912
- "description": "Mission control themed header bar\n---\n",
902
+ "description": "Application header bar\n---\n",
913
903
  "attributes": [],
914
904
  "references": []
915
905
  },
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "xcode-graph",
4
- "version": "0.1.0",
4
+ "version": "0.2.0",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -35,24 +35,19 @@
35
35
  },
36
36
  {
37
37
  "name": "xcode-graph-canvas",
38
- "description": "Canvas-based interactive graph visualization\n---\n\n\n### **Events:**\n - **zoom-change** - Dispatched when the zoom level changes (detail: number)\n- **node-select** - Dispatched when a node is selected or deselected (detail: { node })\n- **node-hover** - Dispatched when a node is hovered (detail: { nodeId })\n- **cluster-select** - Dispatched when a cluster is selected or deselected (detail: { clusterId })\n- **cluster-hover** - Dispatched when a cluster is hovered (detail: { clusterId })\n- **zoom-in** - Dispatched when zoom in is requested via keyboard\n- **zoom-out** - Dispatched when zoom out is requested via keyboard\n- **zoom-reset** - Dispatched when zoom reset is requested via keyboard",
38
+ "description": "Canvas2D interactive graph visualization\n---\n\n\n### **Events:**\n - **zoom-change** - Dispatched when the zoom level changes (detail: number)\n- **node-select** - Dispatched when a node is selected or deselected (detail: { node })\n- **node-hover** - Dispatched when a node is hovered (detail: { nodeId })\n- **cluster-select** - Dispatched when a cluster is selected or deselected (detail: { clusterId })\n- **cluster-hover** - Dispatched when a cluster is hovered (detail: { clusterId })\n- **zoom-in** - Dispatched when zoom in is requested via keyboard\n- **zoom-out** - Dispatched when zoom out is requested via keyboard\n- **zoom-reset** - Dispatched when zoom reset is requested via keyboard\n\n### **Methods:**\n - **fitToViewport(): _void_** - Adjusts zoom and pan so that all clusters fit within the visible viewport.",
39
39
  "doc-url": "",
40
40
  "attributes": [
41
41
  {
42
42
  "name": "search-query",
43
- "description": "Active search query for dimming non-matching nodes",
43
+ "description": "Active search query attribute-bound from parent via search-query=\"...\"",
44
44
  "value": { "type": "string", "default": "''" }
45
45
  },
46
46
  {
47
47
  "name": "view-mode",
48
- "description": "Display mode affecting edge visibility",
48
+ "description": "Display mode attribute-bound from parent via view-mode=\"...\"",
49
49
  "value": { "type": "ViewMode" }
50
50
  },
51
- {
52
- "name": "zoom",
53
- "description": "Current zoom level (affects color saturation and label visibility)",
54
- "value": { "type": "number", "default": "1" }
55
- },
56
51
  {
57
52
  "name": "enable-animation",
58
53
  "description": "Whether physics animation is enabled for layout settling",
@@ -60,22 +55,22 @@
60
55
  },
61
56
  {
62
57
  "name": "show-direct-deps",
63
- "description": "Whether to highlight direct dependency edges",
58
+ "description": "Whether to highlight direct dependency edges — attribute-bound via ?show-direct-deps",
64
59
  "value": { "type": "boolean", "default": "false" }
65
60
  },
66
61
  {
67
62
  "name": "show-transitive-deps",
68
- "description": "Whether to highlight transitive dependency edges",
63
+ "description": "Whether to highlight transitive dependency edges — attribute-bound via ?show-transitive-deps",
69
64
  "value": { "type": "boolean", "default": "false" }
70
65
  },
71
66
  {
72
67
  "name": "show-direct-dependents",
73
- "description": "Whether to highlight direct dependent edges",
68
+ "description": "Whether to highlight direct dependent edges — attribute-bound via ?show-direct-dependents",
74
69
  "value": { "type": "boolean", "default": "false" }
75
70
  },
76
71
  {
77
72
  "name": "show-transitive-dependents",
78
- "description": "Whether to highlight transitive dependent edges",
73
+ "description": "Whether to highlight transitive dependent edges — attribute-bound via ?show-transitive-dependents",
79
74
  "value": { "type": "boolean", "default": "false" }
80
75
  }
81
76
  ],
@@ -139,24 +134,20 @@
139
134
  },
140
135
  {
141
136
  "name": "hoveredNode",
142
- "description": "Currently hovered node ID (shows tooltip)",
137
+ "description": "Currently hovered node ID plain field, only used for canvas rendering.",
143
138
  "type": "string | null"
144
139
  },
145
140
  {
146
141
  "name": "searchQuery",
147
- "description": "Active search query for dimming non-matching nodes",
142
+ "description": "Active search query attribute-bound from parent via search-query=\"...\"",
148
143
  "type": "string"
149
144
  },
150
145
  {
151
146
  "name": "viewMode",
152
- "description": "Display mode affecting edge visibility",
147
+ "description": "Display mode attribute-bound from parent via view-mode=\"...\"",
153
148
  "type": "ViewMode"
154
149
  },
155
- {
156
- "name": "zoom",
157
- "description": "Current zoom level (affects color saturation and label visibility)",
158
- "type": "number"
159
- },
150
+ { "name": "zoom", "type": "number" },
160
151
  {
161
152
  "name": "enableAnimation",
162
153
  "description": "Whether physics animation is enabled for layout settling",
@@ -164,37 +155,37 @@
164
155
  },
165
156
  {
166
157
  "name": "transitiveDeps",
167
- "description": "Transitive dependency chain for the selected node",
158
+ "description": "Transitive dependency chain — plain field, only used for canvas rendering.",
168
159
  "type": "TransitiveResult | undefined"
169
160
  },
170
161
  {
171
162
  "name": "transitiveDependents",
172
- "description": "Transitive dependent chain for the selected node",
163
+ "description": "Transitive dependent chain — plain field, only used for canvas rendering.",
173
164
  "type": "TransitiveResult | undefined"
174
165
  },
175
166
  {
176
167
  "name": "previewFilter",
177
- "description": "Active filter preview (dims non-matching nodes on hover)",
168
+ "description": "Active filter preview plain field, only used for canvas rendering.",
178
169
  "type": "PreviewFilter | undefined"
179
170
  },
180
171
  {
181
172
  "name": "showDirectDeps",
182
- "description": "Whether to highlight direct dependency edges",
173
+ "description": "Whether to highlight direct dependency edges — attribute-bound via ?show-direct-deps",
183
174
  "type": "boolean"
184
175
  },
185
176
  {
186
177
  "name": "showTransitiveDeps",
187
- "description": "Whether to highlight transitive dependency edges",
178
+ "description": "Whether to highlight transitive dependency edges — attribute-bound via ?show-transitive-deps",
188
179
  "type": "boolean"
189
180
  },
190
181
  {
191
182
  "name": "showDirectDependents",
192
- "description": "Whether to highlight direct dependent edges",
183
+ "description": "Whether to highlight direct dependent edges — attribute-bound via ?show-direct-dependents",
193
184
  "type": "boolean"
194
185
  },
195
186
  {
196
187
  "name": "showTransitiveDependents",
197
- "description": "Whether to highlight transitive dependent edges",
188
+ "description": "Whether to highlight transitive dependent edges — attribute-bound via ?show-transitive-dependents",
198
189
  "type": "boolean"
199
190
  },
200
191
  {
@@ -895,7 +886,7 @@
895
886
  },
896
887
  {
897
888
  "name": "xcode-graph-badge",
898
- "description": "Color-themed badge with pill, rounded, and accent variants\n---\n\n\n### **CSS Properties:**\n - **--badge-bg** - Background color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-border** - Border color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-color** - Text color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-bg-hover** - Background color on hover (computed from color prop) _(default: undefined)_\n- **--badge-border-hover** - Border color on hover (computed from color prop) _(default: undefined)_\n- **--badge-glow** - Glow color on hover (computed from color prop) _(default: undefined)_",
889
+ "description": "Color-themed badge with pill, rounded, and accent variants\n---\n\n\n### **CSS Properties:**\n - **--badge-bg** - Background color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-border** - Border color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-color** - Text color of the badge (computed from color prop) _(default: undefined)_\n- **--badge-bg-hover** - Background color on hover (computed from color prop) _(default: undefined)_\n- **--badge-border-hover** - Border color on hover (computed from color prop) _(default: undefined)_",
899
890
  "doc-url": "",
900
891
  "attributes": [
901
892
  {
@@ -922,11 +913,6 @@
922
913
  "name": "interactive",
923
914
  "description": "Whether the badge has interactive hover states",
924
915
  "value": { "type": "boolean", "default": "false" }
925
- },
926
- {
927
- "name": "glow",
928
- "description": "Whether to show glow effect on hover",
929
- "value": { "type": "boolean", "default": "false" }
930
916
  }
931
917
  ],
932
918
  "events": [],
@@ -956,11 +942,6 @@
956
942
  "name": "interactive",
957
943
  "description": "Whether the badge has interactive hover states",
958
944
  "type": "boolean"
959
- },
960
- {
961
- "name": "glow",
962
- "description": "Whether to show glow effect on hover",
963
- "type": "boolean"
964
945
  }
965
946
  ],
966
947
  "events": []
@@ -983,7 +964,7 @@
983
964
  },
984
965
  {
985
966
  "name": "color",
986
- "description": "Theme color for the icon box glow",
967
+ "description": "Theme color for the icon box",
987
968
  "value": { "type": "string" }
988
969
  },
989
970
  {
@@ -1023,7 +1004,7 @@
1023
1004
  },
1024
1005
  {
1025
1006
  "name": "color",
1026
- "description": "Theme color for the icon box glow",
1007
+ "description": "Theme color for the icon box",
1027
1008
  "type": "string"
1028
1009
  },
1029
1010
  {
@@ -2704,7 +2685,7 @@
2704
2685
  },
2705
2686
  {
2706
2687
  "name": "xcode-graph-header",
2707
- "description": "Mission control themed header bar\n---\n",
2688
+ "description": "Application header bar\n---\n",
2708
2689
  "doc-url": "",
2709
2690
  "attributes": [],
2710
2691
  "events": [],
@@ -2811,10 +2792,6 @@
2811
2792
  {
2812
2793
  "name": "--badge-border-hover",
2813
2794
  "description": "Border color on hover (computed from color prop)"
2814
- },
2815
- {
2816
- "name": "--badge-glow",
2817
- "description": "Glow color on hover (computed from color prop)"
2818
2795
  }
2819
2796
  ],
2820
2797
  "pseudo-elements": []