xcode-graph 0.1.0 → 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.
@@ -17,6 +17,7 @@
17
17
  "type": {
18
18
  "text": "GraphNode[]"
19
19
  },
20
+ "description": "All graph nodes to expose for screen reader navigation",
20
21
  "default": "[]"
21
22
  },
22
23
  {
@@ -25,6 +26,7 @@
25
26
  "type": {
26
27
  "text": "GraphEdge[]"
27
28
  },
29
+ "description": "All graph edges to expose as an accessible table",
28
30
  "default": "[]"
29
31
  },
30
32
  {
@@ -33,6 +35,7 @@
33
35
  "type": {
34
36
  "text": "GraphNode | null"
35
37
  },
38
+ "description": "Currently selected node for aria-selected state",
36
39
  "default": "null"
37
40
  },
38
41
  {
@@ -56,12 +59,14 @@
56
59
  "text": "KeyboardEvent"
57
60
  }
58
61
  }
59
- ]
62
+ ],
63
+ "description": "Handles arrow key navigation, Home/End, and Enter/Space selection within the node tree."
60
64
  },
61
65
  {
62
66
  "kind": "method",
63
67
  "name": "focusCurrentNode",
64
- "privacy": "private"
68
+ "privacy": "private",
69
+ "description": "Moves DOM focus to the tree item at the current focused index."
65
70
  },
66
71
  {
67
72
  "kind": "method",
@@ -99,7 +104,7 @@
99
104
  "privacy": "private",
100
105
  "return": {
101
106
  "type": {
102
- "text": "string"
107
+ "text": ""
103
108
  }
104
109
  },
105
110
  "parameters": [
@@ -107,9 +112,11 @@
107
112
  "name": "node",
108
113
  "type": {
109
114
  "text": "GraphNode"
110
- }
115
+ },
116
+ "description": "The graph node to describe."
111
117
  }
112
- ]
118
+ ],
119
+ "description": "Builds a human-readable description of a node for screen readers."
113
120
  },
114
121
  {
115
122
  "kind": "method",
@@ -172,15 +179,25 @@
172
179
  "declarations": [
173
180
  {
174
181
  "kind": "class",
175
- "description": "Canvas-based graph visualization component. Renders nodes, edges, and clusters\non an HTML canvas with pan, zoom, and interactive selection support.",
182
+ "description": "Canvas2D graph visualization component. Renders nodes, edges, and clusters\nusing raw Canvas2D with pan, zoom, and interactive selection support.",
176
183
  "name": "GraphCanvas",
177
184
  "members": [
185
+ {
186
+ "kind": "field",
187
+ "name": "CANVAS_PROPS",
188
+ "privacy": "private",
189
+ "static": true,
190
+ "readonly": true,
191
+ "default": "new Set([ 'nodes', 'edges', 'selectedNode', 'selectedCluster', 'searchQuery', 'viewMode', 'enableAnimation', 'showDirectDeps', 'showTransitiveDeps', 'showDirectDependents', 'showTransitiveDependents', ])",
192
+ "description": "Properties that affect canvas rendering — other Lit properties (e.g. internal state) don't need a render."
193
+ },
178
194
  {
179
195
  "kind": "field",
180
196
  "name": "nodes",
181
197
  "type": {
182
198
  "text": "GraphNode[]"
183
199
  },
200
+ "description": "Graph nodes to render",
184
201
  "default": "[]"
185
202
  },
186
203
  {
@@ -189,6 +206,7 @@
189
206
  "type": {
190
207
  "text": "GraphEdge[]"
191
208
  },
209
+ "description": "Graph edges to render",
192
210
  "default": "[]"
193
211
  },
194
212
  {
@@ -197,6 +215,7 @@
197
215
  "type": {
198
216
  "text": "GraphNode | null"
199
217
  },
218
+ "description": "Currently selected node (highlighted with ring and connected edges)",
200
219
  "default": "null"
201
220
  },
202
221
  {
@@ -205,6 +224,7 @@
205
224
  "type": {
206
225
  "text": "string | null"
207
226
  },
227
+ "description": "Currently selected cluster ID (dims non-member nodes)",
208
228
  "default": "null"
209
229
  },
210
230
  {
@@ -213,7 +233,8 @@
213
233
  "type": {
214
234
  "text": "string | null"
215
235
  },
216
- "default": "null"
236
+ "default": "null",
237
+ "description": "Currently hovered node ID — plain field, only used for canvas rendering."
217
238
  },
218
239
  {
219
240
  "kind": "field",
@@ -221,6 +242,7 @@
221
242
  "type": {
222
243
  "text": "string"
223
244
  },
245
+ "description": "Active search query — attribute-bound from parent via search-query=\"...\"",
224
246
  "default": "''",
225
247
  "attribute": "search-query"
226
248
  },
@@ -230,16 +252,28 @@
230
252
  "type": {
231
253
  "text": "ViewMode"
232
254
  },
233
- "attribute": "view-mode"
255
+ "description": "Display mode — attribute-bound from parent via view-mode=\"...\"",
256
+ "attribute": "view-mode",
257
+ "parsedType": {
258
+ "text": "'full' | 'focused' | 'path' | 'dependents' | 'both'"
259
+ }
234
260
  },
235
261
  {
236
262
  "kind": "field",
237
- "name": "zoom",
263
+ "name": "_zoom",
238
264
  "type": {
239
265
  "text": "number"
240
266
  },
267
+ "privacy": "private",
241
268
  "default": "1",
242
- "attribute": "zoom"
269
+ "description": "Current zoom level.\nUses a plain field + setter to trigger canvas re-render without a full\nLit update cycle, which was causing lag during wheel-zoom."
270
+ },
271
+ {
272
+ "kind": "field",
273
+ "name": "zoom",
274
+ "type": {
275
+ "text": "number"
276
+ }
243
277
  },
244
278
  {
245
279
  "kind": "field",
@@ -247,6 +281,7 @@
247
281
  "type": {
248
282
  "text": "boolean"
249
283
  },
284
+ "description": "Whether physics animation is enabled for layout settling",
250
285
  "default": "false",
251
286
  "attribute": "enable-animation"
252
287
  },
@@ -255,20 +290,26 @@
255
290
  "name": "transitiveDeps",
256
291
  "type": {
257
292
  "text": "TransitiveResult | undefined"
258
- }
293
+ },
294
+ "description": "Transitive dependency chain — plain field, only used for canvas rendering."
259
295
  },
260
296
  {
261
297
  "kind": "field",
262
298
  "name": "transitiveDependents",
263
299
  "type": {
264
300
  "text": "TransitiveResult | undefined"
265
- }
301
+ },
302
+ "description": "Transitive dependent chain — plain field, only used for canvas rendering."
266
303
  },
267
304
  {
268
305
  "kind": "field",
269
306
  "name": "previewFilter",
270
307
  "type": {
271
308
  "text": "PreviewFilter | undefined"
309
+ },
310
+ "description": "Active filter preview — plain field, only used for canvas rendering.",
311
+ "parsedType": {
312
+ "text": "null | { type: 'platform' | 'origin' | 'project' | 'nodeType' | 'package' | 'cluster', value: string } | undefined"
272
313
  }
273
314
  },
274
315
  {
@@ -277,6 +318,7 @@
277
318
  "type": {
278
319
  "text": "boolean"
279
320
  },
321
+ "description": "Whether to highlight direct dependency edges — attribute-bound via ?show-direct-deps",
280
322
  "default": "false",
281
323
  "attribute": "show-direct-deps"
282
324
  },
@@ -286,6 +328,7 @@
286
328
  "type": {
287
329
  "text": "boolean"
288
330
  },
331
+ "description": "Whether to highlight transitive dependency edges — attribute-bound via ?show-transitive-deps",
289
332
  "default": "false",
290
333
  "attribute": "show-transitive-deps"
291
334
  },
@@ -295,6 +338,7 @@
295
338
  "type": {
296
339
  "text": "boolean"
297
340
  },
341
+ "description": "Whether to highlight direct dependent edges — attribute-bound via ?show-direct-dependents",
298
342
  "default": "false",
299
343
  "attribute": "show-direct-dependents"
300
344
  },
@@ -304,6 +348,7 @@
304
348
  "type": {
305
349
  "text": "boolean"
306
350
  },
351
+ "description": "Whether to highlight transitive dependent edges — attribute-bound via ?show-transitive-dependents",
307
352
  "default": "false",
308
353
  "attribute": "show-transitive-dependents"
309
354
  },
@@ -313,23 +358,25 @@
313
358
  "type": {
314
359
  "text": "Set<string>"
315
360
  },
316
- "default": "new Set()"
361
+ "default": "new Set()",
362
+ "description": "Set of node IDs that should be visually dimmed"
317
363
  },
318
364
  {
319
365
  "kind": "field",
320
- "name": "canvas",
366
+ "name": "containerEl",
321
367
  "type": {
322
- "text": "HTMLCanvasElement"
368
+ "text": "HTMLDivElement"
323
369
  },
324
370
  "privacy": "private"
325
371
  },
326
372
  {
327
373
  "kind": "field",
328
- "name": "ctx",
374
+ "name": "scene",
329
375
  "type": {
330
- "text": "CanvasRenderingContext2D | undefined"
376
+ "text": "CanvasScene | null"
331
377
  },
332
- "privacy": "private"
378
+ "privacy": "private",
379
+ "default": "null"
333
380
  },
334
381
  {
335
382
  "kind": "field",
@@ -340,62 +387,51 @@
340
387
  },
341
388
  {
342
389
  "kind": "field",
343
- "name": "_resize",
390
+ "name": "resizeObserver",
391
+ "type": {
392
+ "text": "ResizeObserver | null"
393
+ },
344
394
  "privacy": "private",
345
- "readonly": true,
346
- "default": "new ResizeController(this, { callback: () => this.resizeCanvas(), })"
395
+ "default": "null"
347
396
  },
348
397
  {
349
398
  "kind": "field",
350
- "name": "_visibility",
399
+ "name": "resizeRafId",
400
+ "type": {
401
+ "text": "number | null"
402
+ },
351
403
  "privacy": "private",
352
- "readonly": true,
353
- "default": "new IntersectionController(this, { callback: (entries) => entries.some((e) => e.isIntersecting), })"
404
+ "default": "null"
354
405
  },
355
406
  {
356
407
  "kind": "field",
357
- "name": "interactionState",
408
+ "name": "intersectionObserver",
358
409
  "type": {
359
- "text": "InteractionState"
410
+ "text": "IntersectionObserver | null"
360
411
  },
361
412
  "privacy": "private",
362
- "default": "{ pan: { x: window.innerWidth / 2, y: window.innerHeight / 2 }, zoom: 1, isDragging: false, draggedNodeId: null, draggedClusterId: null, lastMousePos: { x: 0, y: 0 }, clickedEmptySpace: false, hasMoved: false, hoveredNode: null, hoveredCluster: null, }"
413
+ "default": "null"
363
414
  },
364
415
  {
365
416
  "kind": "field",
366
- "name": "manualNodePositions",
417
+ "name": "_isVisible",
418
+ "type": {
419
+ "text": "boolean"
420
+ },
367
421
  "privacy": "private",
368
- "default": "new Map<string, { x: number; y: number }>()"
422
+ "default": "true"
369
423
  },
370
424
  {
371
425
  "kind": "field",
372
- "name": "manualClusterPositions",
426
+ "name": "manualNodePositions",
373
427
  "privacy": "private",
374
428
  "default": "new Map<string, { x: number; y: number }>()"
375
429
  },
376
430
  {
377
431
  "kind": "field",
378
- "name": "pathCache",
379
- "privacy": "private",
380
- "default": "new Map<string, Path2D>()"
381
- },
382
- {
383
- "kind": "field",
384
- "name": "edgePathCache",
385
- "privacy": "private",
386
- "default": "new Map<string, Path2D>()"
387
- },
388
- {
389
- "kind": "field",
390
- "name": "nodeWeights",
391
- "privacy": "private",
392
- "default": "new Map<string, number>()"
393
- },
394
- {
395
- "kind": "field",
396
- "name": "nodeMap",
432
+ "name": "manualClusterPositions",
397
433
  "privacy": "private",
398
- "default": "new Map<string, GraphNode>()"
434
+ "default": "new Map<string, { x: number; y: number }>()"
399
435
  },
400
436
  {
401
437
  "kind": "field",
@@ -406,24 +442,6 @@
406
442
  "privacy": "private",
407
443
  "default": "null"
408
444
  },
409
- {
410
- "kind": "field",
411
- "name": "routedEdgeMapCache",
412
- "type": {
413
- "text": "Map<string, RoutedEdge> | null"
414
- },
415
- "privacy": "private",
416
- "default": "null"
417
- },
418
- {
419
- "kind": "field",
420
- "name": "lastRoutedEdgesRef",
421
- "type": {
422
- "text": "RoutedEdge[] | undefined"
423
- },
424
- "privacy": "private",
425
- "default": "undefined"
426
- },
427
445
  {
428
446
  "kind": "field",
429
447
  "name": "theme",
@@ -437,7 +455,7 @@
437
455
  "name": "animationLoop",
438
456
  "privacy": "private",
439
457
  "readonly": true,
440
- "default": "new AnimationLoopController(this, { onRender: (timestamp, dt) => this.onFrame(timestamp, dt), shouldAnimate: () => this.isAnimating, isVisible: () => this._visibility.value !== false, })"
458
+ "default": "new AnimationLoopController(this, { onRender: (timestamp, dt) => this.onFrame(timestamp, dt), shouldAnimate: () => this.isAnimating, isVisible: () => this._isVisible, })"
441
459
  },
442
460
  {
443
461
  "kind": "field",
@@ -476,18 +494,7 @@
476
494
  "kind": "field",
477
495
  "name": "fadingOutNodes",
478
496
  "privacy": "private",
479
- "default": "new Map<string, { node: GraphNode; startTime: number }>()"
480
- },
481
- {
482
- "kind": "field",
483
- "name": "FADE_OUT_DURATION",
484
- "type": {
485
- "text": "number"
486
- },
487
- "privacy": "private",
488
- "static": true,
489
- "readonly": true,
490
- "default": "250"
497
+ "default": "new Map<string, FadingNode>()"
491
498
  },
492
499
  {
493
500
  "kind": "method",
@@ -500,22 +507,14 @@
500
507
  "text": "PropertyValues<this>"
501
508
  }
502
509
  }
503
- ]
504
- },
505
- {
506
- "kind": "method",
507
- "name": "updatePathCache",
508
- "privacy": "private"
509
- },
510
- {
511
- "kind": "method",
512
- "name": "rebuildNodeMap",
513
- "privacy": "private"
510
+ ],
511
+ "description": "Detects nodes removed between updates and queues them for fade-out animation."
514
512
  },
515
513
  {
516
514
  "kind": "method",
517
515
  "name": "updateNodeAlphaTargets",
518
- "privacy": "private"
516
+ "privacy": "private",
517
+ "description": "Updates opacity animation targets based on current selection and cluster state."
519
518
  },
520
519
  {
521
520
  "kind": "method",
@@ -525,27 +524,14 @@
525
524
  "type": {
526
525
  "text": "Set<string>"
527
526
  }
528
- }
529
- },
530
- {
531
- "kind": "method",
532
- "name": "getRoutedEdgeMap",
533
- "privacy": "private",
534
- "return": {
535
- "type": {
536
- "text": "Map<string, RoutedEdge>"
537
- }
538
- }
539
- },
540
- {
541
- "kind": "field",
542
- "name": "getPathForNode",
543
- "privacy": "private"
527
+ },
528
+ "description": "Returns the cached set of node IDs connected to the selected node."
544
529
  },
545
530
  {
546
531
  "kind": "method",
547
532
  "name": "centerGraph",
548
- "privacy": "private"
533
+ "privacy": "private",
534
+ "description": "Centers the pan offset to the middle of the component's bounding rectangle."
549
535
  },
550
536
  {
551
537
  "kind": "method",
@@ -554,22 +540,20 @@
554
540
  "type": {
555
541
  "text": "void"
556
542
  }
557
- }
543
+ },
544
+ "description": "Adjusts zoom and pan so that all clusters fit within the visible viewport."
558
545
  },
559
546
  {
560
547
  "kind": "method",
561
- "name": "getInteractionContext",
548
+ "name": "scheduleResize",
562
549
  "privacy": "private",
563
- "return": {
564
- "type": {
565
- "text": "InteractionContext"
566
- }
567
- }
550
+ "description": "Debounces resize via rAF so the scene resize and re-render happen\nin the same frame, preventing visible flashes during CSS transitions."
568
551
  },
569
552
  {
570
553
  "kind": "method",
571
- "name": "resizeCanvas",
572
- "privacy": "private"
554
+ "name": "resizeScene",
555
+ "privacy": "private",
556
+ "description": "Resizes the canvas to match the element dimensions."
573
557
  },
574
558
  {
575
559
  "kind": "field",
@@ -578,33 +562,14 @@
578
562
  },
579
563
  {
580
564
  "kind": "field",
581
- "name": "handleCanvasMouseDown",
582
- "privacy": "private"
583
- },
584
- {
585
- "kind": "field",
586
- "name": "handleCanvasMouseMove",
587
- "privacy": "private"
588
- },
589
- {
590
- "kind": "field",
591
- "name": "handleCanvasMouseUp",
592
- "privacy": "private"
593
- },
594
- {
595
- "kind": "field",
596
- "name": "handleCanvasWheel",
597
- "privacy": "private"
598
- },
599
- {
600
- "kind": "field",
601
- "name": "handleCanvasKeyDown",
565
+ "name": "handleContainerKeyDown",
602
566
  "privacy": "private"
603
567
  },
604
568
  {
605
569
  "kind": "method",
606
570
  "name": "requestRender",
607
- "privacy": "private"
571
+ "privacy": "private",
572
+ "description": "Schedules a canvas render on the next animation frame."
608
573
  },
609
574
  {
610
575
  "kind": "method",
@@ -629,32 +594,19 @@
629
594
  }
630
595
  }
631
596
  ],
632
- "description": "Frame callback invoked by AnimationLoopController when a render is needed.\nHandles animation ticking and delegates to renderCanvas()."
597
+ "description": "Frame callback invoked by AnimationLoopController when a render is needed.\nHandles animation ticking and delegates to renderScene()."
633
598
  },
634
599
  {
635
600
  "kind": "method",
636
601
  "name": "updateAnimatingState",
637
- "privacy": "private"
638
- },
639
- {
640
- "kind": "method",
641
- "name": "renderCanvas",
642
- "privacy": "private"
602
+ "privacy": "private",
603
+ "description": "Recalculates whether the animation loop should remain active based on current state."
643
604
  },
644
605
  {
645
606
  "kind": "method",
646
- "name": "renderFadingNodes",
647
- "privacy": "private"
648
- },
649
- {
650
- "kind": "field",
651
- "name": "getMousePos",
652
- "privacy": "private"
653
- },
654
- {
655
- "kind": "field",
656
- "name": "screenToWorld",
657
- "privacy": "private"
607
+ "name": "renderScene",
608
+ "privacy": "private",
609
+ "description": "Builds the scene config and delegates rendering to the canvas scene."
658
610
  }
659
611
  ],
660
612
  "events": [
@@ -703,6 +655,7 @@
703
655
  "type": {
704
656
  "text": "string"
705
657
  },
658
+ "description": "Active search query — attribute-bound from parent via search-query=\"...\"",
706
659
  "default": "''",
707
660
  "fieldName": "searchQuery"
708
661
  },
@@ -711,21 +664,18 @@
711
664
  "type": {
712
665
  "text": "ViewMode"
713
666
  },
714
- "fieldName": "viewMode"
715
- },
716
- {
717
- "name": "zoom",
718
- "type": {
719
- "text": "number"
720
- },
721
- "default": "1",
722
- "fieldName": "zoom"
667
+ "description": "Display mode — attribute-bound from parent via view-mode=\"...\"",
668
+ "fieldName": "viewMode",
669
+ "parsedType": {
670
+ "text": "'full' | 'focused' | 'path' | 'dependents' | 'both'"
671
+ }
723
672
  },
724
673
  {
725
674
  "name": "enable-animation",
726
675
  "type": {
727
676
  "text": "boolean"
728
677
  },
678
+ "description": "Whether physics animation is enabled for layout settling",
729
679
  "default": "false",
730
680
  "fieldName": "enableAnimation"
731
681
  },
@@ -734,6 +684,7 @@
734
684
  "type": {
735
685
  "text": "boolean"
736
686
  },
687
+ "description": "Whether to highlight direct dependency edges — attribute-bound via ?show-direct-deps",
737
688
  "default": "false",
738
689
  "fieldName": "showDirectDeps"
739
690
  },
@@ -742,6 +693,7 @@
742
693
  "type": {
743
694
  "text": "boolean"
744
695
  },
696
+ "description": "Whether to highlight transitive dependency edges — attribute-bound via ?show-transitive-deps",
745
697
  "default": "false",
746
698
  "fieldName": "showTransitiveDeps"
747
699
  },
@@ -750,6 +702,7 @@
750
702
  "type": {
751
703
  "text": "boolean"
752
704
  },
705
+ "description": "Whether to highlight direct dependent edges — attribute-bound via ?show-direct-dependents",
753
706
  "default": "false",
754
707
  "fieldName": "showDirectDependents"
755
708
  },
@@ -758,6 +711,7 @@
758
711
  "type": {
759
712
  "text": "boolean"
760
713
  },
714
+ "description": "Whether to highlight transitive dependent edges — attribute-bound via ?show-transitive-dependents",
761
715
  "default": "false",
762
716
  "fieldName": "showTransitiveDependents"
763
717
  }
@@ -766,7 +720,7 @@
766
720
  "name": "LitElement",
767
721
  "package": "lit"
768
722
  },
769
- "summary": "Canvas-based interactive graph visualization",
723
+ "summary": "Canvas2D interactive graph visualization",
770
724
  "tagName": "xcode-graph-canvas",
771
725
  "customElement": true
772
726
  }
@@ -818,6 +772,7 @@
818
772
  "type": {
819
773
  "text": "number"
820
774
  },
775
+ "description": "Current absolute zoom level",
821
776
  "attribute": "zoom"
822
777
  },
823
778
  {
@@ -826,6 +781,7 @@
826
781
  "type": {
827
782
  "text": "number"
828
783
  },
784
+ "description": "Baseline zoom level used for ratio display (fit-to-view = 1x)",
829
785
  "attribute": "base-zoom"
830
786
  },
831
787
  {
@@ -869,17 +825,20 @@
869
825
  {
870
826
  "kind": "method",
871
827
  "name": "handleZoomIn",
872
- "privacy": "private"
828
+ "privacy": "private",
829
+ "description": "Steps zoom to the next predefined level and dispatches a 'zoom-step' event."
873
830
  },
874
831
  {
875
832
  "kind": "method",
876
833
  "name": "handleZoomOut",
877
- "privacy": "private"
834
+ "privacy": "private",
835
+ "description": "Steps zoom to the previous predefined level and dispatches a 'zoom-step' event."
878
836
  },
879
837
  {
880
838
  "kind": "method",
881
839
  "name": "handleZoomReset",
882
- "privacy": "private"
840
+ "privacy": "private",
841
+ "description": "Dispatches a 'zoom-reset' event to fit the graph to the viewport."
883
842
  },
884
843
  {
885
844
  "kind": "method",
@@ -892,7 +851,8 @@
892
851
  "text": "WheelEvent"
893
852
  }
894
853
  }
895
- ]
854
+ ],
855
+ "description": "Stops wheel events from propagating to the canvas zoom handler."
896
856
  },
897
857
  {
898
858
  "kind": "method",
@@ -905,7 +865,8 @@
905
865
  "text": "MouseEvent"
906
866
  }
907
867
  }
908
- ]
868
+ ],
869
+ "description": "Stops mousedown events from propagating to the canvas drag handler."
909
870
  }
910
871
  ],
911
872
  "events": [
@@ -930,6 +891,7 @@
930
891
  "type": {
931
892
  "text": "number"
932
893
  },
894
+ "description": "Current absolute zoom level",
933
895
  "fieldName": "zoom"
934
896
  },
935
897
  {
@@ -937,6 +899,7 @@
937
899
  "type": {
938
900
  "text": "number"
939
901
  },
902
+ "description": "Baseline zoom level used for ratio display (fit-to-view = 1x)",
940
903
  "fieldName": "baseZoom"
941
904
  }
942
905
  ],
@@ -1132,7 +1095,7 @@
1132
1095
  "description": "Button variant style",
1133
1096
  "default": "'ghost'",
1134
1097
  "attribute": "variant",
1135
- "expandedType": {
1098
+ "parsedType": {
1136
1099
  "text": "'ghost' | 'subtle' | 'solid'"
1137
1100
  }
1138
1101
  },
@@ -1145,7 +1108,7 @@
1145
1108
  "description": "Button color scheme",
1146
1109
  "default": "'neutral'",
1147
1110
  "attribute": "color",
1148
- "expandedType": {
1111
+ "parsedType": {
1149
1112
  "text": "'neutral' | 'primary' | 'destructive'"
1150
1113
  }
1151
1114
  },
@@ -1158,7 +1121,7 @@
1158
1121
  "description": "Button size",
1159
1122
  "default": "'md'",
1160
1123
  "attribute": "size",
1161
- "expandedType": {
1124
+ "parsedType": {
1162
1125
  "text": "'sm' | 'md'"
1163
1126
  }
1164
1127
  },
@@ -1192,7 +1155,7 @@
1192
1155
  "description": "Button variant style",
1193
1156
  "default": "'ghost'",
1194
1157
  "fieldName": "variant",
1195
- "expandedType": {
1158
+ "parsedType": {
1196
1159
  "text": "'ghost' | 'subtle' | 'solid'"
1197
1160
  }
1198
1161
  },
@@ -1204,7 +1167,7 @@
1204
1167
  "description": "Button color scheme",
1205
1168
  "default": "'neutral'",
1206
1169
  "fieldName": "color",
1207
- "expandedType": {
1170
+ "parsedType": {
1208
1171
  "text": "'neutral' | 'primary' | 'destructive'"
1209
1172
  }
1210
1173
  },
@@ -1216,7 +1179,7 @@
1216
1179
  "description": "Button size",
1217
1180
  "default": "'md'",
1218
1181
  "fieldName": "size",
1219
- "expandedType": {
1182
+ "parsedType": {
1220
1183
  "text": "'sm' | 'md'"
1221
1184
  }
1222
1185
  },
@@ -1282,6 +1245,7 @@
1282
1245
  "type": {
1283
1246
  "text": "string"
1284
1247
  },
1248
+ "description": "Title text displayed in the header",
1285
1249
  "attribute": "title"
1286
1250
  },
1287
1251
  {
@@ -1290,6 +1254,7 @@
1290
1254
  "type": {
1291
1255
  "text": "boolean"
1292
1256
  },
1257
+ "description": "Whether the sidebar is currently collapsed",
1293
1258
  "attribute": "is-collapsed"
1294
1259
  },
1295
1260
  {
@@ -1298,12 +1263,14 @@
1298
1263
  "type": {
1299
1264
  "text": "boolean"
1300
1265
  },
1266
+ "description": "Whether any filters are currently active (shows indicator dot)",
1301
1267
  "attribute": "has-active-filters"
1302
1268
  },
1303
1269
  {
1304
1270
  "kind": "method",
1305
1271
  "name": "handleToggle",
1306
- "privacy": "private"
1272
+ "privacy": "private",
1273
+ "description": "Dispatches the toggle-collapse event when the collapse button is clicked"
1307
1274
  }
1308
1275
  ],
1309
1276
  "events": [
@@ -1321,6 +1288,7 @@
1321
1288
  "type": {
1322
1289
  "text": "string"
1323
1290
  },
1291
+ "description": "Title text displayed in the header",
1324
1292
  "fieldName": "title"
1325
1293
  },
1326
1294
  {
@@ -1328,6 +1296,7 @@
1328
1296
  "type": {
1329
1297
  "text": "boolean"
1330
1298
  },
1299
+ "description": "Whether the sidebar is currently collapsed",
1331
1300
  "fieldName": "isCollapsed"
1332
1301
  },
1333
1302
  {
@@ -1335,6 +1304,7 @@
1335
1304
  "type": {
1336
1305
  "text": "boolean"
1337
1306
  },
1307
+ "description": "Whether any filters are currently active (shows indicator dot)",
1338
1308
  "fieldName": "hasActiveFilters"
1339
1309
  }
1340
1310
  ],
@@ -1368,7 +1338,7 @@
1368
1338
  },
1369
1339
  {
1370
1340
  "kind": "javascript-module",
1371
- "path": "src/ui/components/collapsed-sidebar.ts",
1341
+ "path": "src/ui/components/right-sidebar-collapsed.ts",
1372
1342
  "declarations": [
1373
1343
  {
1374
1344
  "kind": "class",
@@ -1380,42 +1350,48 @@
1380
1350
  "name": "filteredNodes",
1381
1351
  "type": {
1382
1352
  "text": "GraphNode[]"
1383
- }
1353
+ },
1354
+ "description": "Nodes remaining after filter application"
1384
1355
  },
1385
1356
  {
1386
1357
  "kind": "field",
1387
1358
  "name": "filteredEdges",
1388
1359
  "type": {
1389
1360
  "text": "GraphEdge[]"
1390
- }
1361
+ },
1362
+ "description": "Edges remaining after filter application"
1391
1363
  },
1392
1364
  {
1393
1365
  "kind": "field",
1394
1366
  "name": "typeCounts",
1395
1367
  "type": {
1396
1368
  "text": "Map<string, number>"
1397
- }
1369
+ },
1370
+ "description": "Count of nodes per node type"
1398
1371
  },
1399
1372
  {
1400
1373
  "kind": "field",
1401
1374
  "name": "platformCounts",
1402
1375
  "type": {
1403
1376
  "text": "Map<string, number>"
1404
- }
1377
+ },
1378
+ "description": "Count of nodes per platform"
1405
1379
  },
1406
1380
  {
1407
1381
  "kind": "field",
1408
1382
  "name": "projectCounts",
1409
1383
  "type": {
1410
1384
  "text": "Map<string, number>"
1411
- }
1385
+ },
1386
+ "description": "Count of nodes per project"
1412
1387
  },
1413
1388
  {
1414
1389
  "kind": "field",
1415
1390
  "name": "packageCounts",
1416
1391
  "type": {
1417
1392
  "text": "Map<string, number>"
1418
- }
1393
+ },
1394
+ "description": "Count of nodes per package"
1419
1395
  },
1420
1396
  {
1421
1397
  "kind": "field",
@@ -1423,6 +1399,7 @@
1423
1399
  "type": {
1424
1400
  "text": "number"
1425
1401
  },
1402
+ "description": "Number of currently selected node type filters",
1426
1403
  "attribute": "node-types-filter-size"
1427
1404
  },
1428
1405
  {
@@ -1431,6 +1408,7 @@
1431
1408
  "type": {
1432
1409
  "text": "number"
1433
1410
  },
1411
+ "description": "Number of currently selected platform filters",
1434
1412
  "attribute": "platforms-filter-size"
1435
1413
  },
1436
1414
  {
@@ -1439,6 +1417,7 @@
1439
1417
  "type": {
1440
1418
  "text": "number"
1441
1419
  },
1420
+ "description": "Number of currently selected project filters",
1442
1421
  "attribute": "projects-filter-size"
1443
1422
  },
1444
1423
  {
@@ -1447,6 +1426,7 @@
1447
1426
  "type": {
1448
1427
  "text": "number"
1449
1428
  },
1429
+ "description": "Number of currently selected package filters",
1450
1430
  "attribute": "packages-filter-size"
1451
1431
  },
1452
1432
  {
@@ -1460,27 +1440,8 @@
1460
1440
  "text": "string"
1461
1441
  }
1462
1442
  }
1463
- ]
1464
- },
1465
- {
1466
- "kind": "method",
1467
- "name": "renderProductTypesIcon",
1468
- "privacy": "private"
1469
- },
1470
- {
1471
- "kind": "method",
1472
- "name": "renderPlatformsIcon",
1473
- "privacy": "private"
1474
- },
1475
- {
1476
- "kind": "method",
1477
- "name": "renderProjectsIcon",
1478
- "privacy": "private"
1479
- },
1480
- {
1481
- "kind": "method",
1482
- "name": "renderPackagesIcon",
1483
- "privacy": "private"
1443
+ ],
1444
+ "description": "Dispatches an event to expand the sidebar to the given filter section"
1484
1445
  }
1485
1446
  ],
1486
1447
  "events": [
@@ -1498,6 +1459,7 @@
1498
1459
  "type": {
1499
1460
  "text": "number"
1500
1461
  },
1462
+ "description": "Number of currently selected node type filters",
1501
1463
  "fieldName": "nodeTypesFilterSize"
1502
1464
  },
1503
1465
  {
@@ -1505,6 +1467,7 @@
1505
1467
  "type": {
1506
1468
  "text": "number"
1507
1469
  },
1470
+ "description": "Number of currently selected platform filters",
1508
1471
  "fieldName": "platformsFilterSize"
1509
1472
  },
1510
1473
  {
@@ -1512,6 +1475,7 @@
1512
1475
  "type": {
1513
1476
  "text": "number"
1514
1477
  },
1478
+ "description": "Number of currently selected project filters",
1515
1479
  "fieldName": "projectsFilterSize"
1516
1480
  },
1517
1481
  {
@@ -1519,6 +1483,7 @@
1519
1483
  "type": {
1520
1484
  "text": "number"
1521
1485
  },
1486
+ "description": "Number of currently selected package filters",
1522
1487
  "fieldName": "packagesFilterSize"
1523
1488
  }
1524
1489
  ],
@@ -1537,7 +1502,7 @@
1537
1502
  "name": "GraphCollapsedSidebar",
1538
1503
  "declaration": {
1539
1504
  "name": "GraphCollapsedSidebar",
1540
- "module": "src/ui/components/collapsed-sidebar.ts"
1505
+ "module": "src/ui/components/right-sidebar-collapsed.ts"
1541
1506
  }
1542
1507
  },
1543
1508
  {
@@ -1545,7 +1510,7 @@
1545
1510
  "name": "xcode-graph-collapsed-sidebar",
1546
1511
  "declaration": {
1547
1512
  "name": "GraphCollapsedSidebar",
1548
- "module": "src/ui/components/collapsed-sidebar.ts"
1513
+ "module": "src/ui/components/right-sidebar-collapsed.ts"
1549
1514
  }
1550
1515
  }
1551
1516
  ]
@@ -1673,7 +1638,8 @@
1673
1638
  {
1674
1639
  "kind": "method",
1675
1640
  "name": "toggleExpanded",
1676
- "privacy": "private"
1641
+ "privacy": "private",
1642
+ "description": "Toggles the expanded/collapsed state"
1677
1643
  },
1678
1644
  {
1679
1645
  "kind": "field",
@@ -1701,7 +1667,8 @@
1701
1667
  "type": {
1702
1668
  "text": "TemplateResult | typeof nothing"
1703
1669
  }
1704
- }
1670
+ },
1671
+ "description": "Renders the code signing settings subsection"
1705
1672
  },
1706
1673
  {
1707
1674
  "kind": "method",
@@ -1711,7 +1678,8 @@
1711
1678
  "type": {
1712
1679
  "text": "TemplateResult | typeof nothing"
1713
1680
  }
1714
- }
1681
+ },
1682
+ "description": "Renders the expanded build settings content"
1715
1683
  }
1716
1684
  ],
1717
1685
  "attributes": [
@@ -1759,7 +1727,7 @@
1759
1727
  "declarations": [
1760
1728
  {
1761
1729
  "kind": "class",
1762
- "description": "Reusable stats card component for displaying metrics.\nFeatures bold left accent border and monospace typography.\nCan be toggleable for interactive highlight controls.",
1730
+ "description": "Reusable stats card component for displaying metrics.\nCan be toggleable for interactive highlight controls.",
1763
1731
  "name": "GraphStatsCard",
1764
1732
  "members": [
1765
1733
  {
@@ -1819,7 +1787,8 @@
1819
1787
  {
1820
1788
  "kind": "method",
1821
1789
  "name": "handleClick",
1822
- "privacy": "private"
1790
+ "privacy": "private",
1791
+ "description": "Dispatches card-toggle event when the card is toggleable and clicked"
1823
1792
  }
1824
1793
  ],
1825
1794
  "events": [
@@ -1924,6 +1893,7 @@
1924
1893
  "type": {
1925
1894
  "text": "number"
1926
1895
  },
1896
+ "description": "Number of direct dependencies (filtered)",
1927
1897
  "attribute": "dependencies-count"
1928
1898
  },
1929
1899
  {
@@ -1932,6 +1902,7 @@
1932
1902
  "type": {
1933
1903
  "text": "number"
1934
1904
  },
1905
+ "description": "Number of direct dependents (filtered)",
1935
1906
  "attribute": "dependents-count"
1936
1907
  },
1937
1908
  {
@@ -1940,6 +1911,7 @@
1940
1911
  "type": {
1941
1912
  "text": "number"
1942
1913
  },
1914
+ "description": "Total number of direct dependencies (unfiltered)",
1943
1915
  "attribute": "total-dependencies-count"
1944
1916
  },
1945
1917
  {
@@ -1948,6 +1920,7 @@
1948
1920
  "type": {
1949
1921
  "text": "number"
1950
1922
  },
1923
+ "description": "Total number of direct dependents (unfiltered)",
1951
1924
  "attribute": "total-dependents-count"
1952
1925
  },
1953
1926
  {
@@ -1956,6 +1929,7 @@
1956
1929
  "type": {
1957
1930
  "text": "number"
1958
1931
  },
1932
+ "description": "Number of transitive dependencies",
1959
1933
  "attribute": "transitive-dependencies-count"
1960
1934
  },
1961
1935
  {
@@ -1964,6 +1938,7 @@
1964
1938
  "type": {
1965
1939
  "text": "number"
1966
1940
  },
1941
+ "description": "Number of transitive dependents",
1967
1942
  "attribute": "transitive-dependents-count"
1968
1943
  },
1969
1944
  {
@@ -1972,6 +1947,7 @@
1972
1947
  "type": {
1973
1948
  "text": "boolean"
1974
1949
  },
1950
+ "description": "Whether this node has high fan-in (many dependents)",
1975
1951
  "attribute": "is-high-fan-in"
1976
1952
  },
1977
1953
  {
@@ -1980,6 +1956,7 @@
1980
1956
  "type": {
1981
1957
  "text": "boolean"
1982
1958
  },
1959
+ "description": "Whether this node has high fan-out (many dependencies)",
1983
1960
  "attribute": "is-high-fan-out"
1984
1961
  },
1985
1962
  {
@@ -1988,6 +1965,7 @@
1988
1965
  "type": {
1989
1966
  "text": "boolean"
1990
1967
  },
1968
+ "description": "Whether the direct dependencies card is toggled on",
1991
1969
  "attribute": "active-direct-deps"
1992
1970
  },
1993
1971
  {
@@ -1996,6 +1974,7 @@
1996
1974
  "type": {
1997
1975
  "text": "boolean"
1998
1976
  },
1977
+ "description": "Whether the transitive dependencies card is toggled on",
1999
1978
  "attribute": "active-transitive-deps"
2000
1979
  },
2001
1980
  {
@@ -2004,6 +1983,7 @@
2004
1983
  "type": {
2005
1984
  "text": "boolean"
2006
1985
  },
1986
+ "description": "Whether the direct dependents card is toggled on",
2007
1987
  "attribute": "active-direct-dependents"
2008
1988
  },
2009
1989
  {
@@ -2012,6 +1992,7 @@
2012
1992
  "type": {
2013
1993
  "text": "boolean"
2014
1994
  },
1995
+ "description": "Whether the transitive dependents card is toggled on",
2015
1996
  "attribute": "active-transitive-dependents"
2016
1997
  },
2017
1998
  {
@@ -2020,6 +2001,7 @@
2020
2001
  "type": {
2021
2002
  "text": "boolean"
2022
2003
  },
2004
+ "description": "Whether the section starts expanded",
2023
2005
  "default": "true",
2024
2006
  "attribute": "expanded"
2025
2007
  },
@@ -2035,7 +2017,8 @@
2035
2017
  {
2036
2018
  "kind": "method",
2037
2019
  "name": "toggleExpanded",
2038
- "privacy": "private"
2020
+ "privacy": "private",
2021
+ "description": "Toggles the section expanded/collapsed state"
2039
2022
  },
2040
2023
  {
2041
2024
  "kind": "method",
@@ -2048,7 +2031,8 @@
2048
2031
  "text": "string"
2049
2032
  }
2050
2033
  }
2051
- ]
2034
+ ],
2035
+ "description": "Dispatches a toggle event for the specified metric card"
2052
2036
  }
2053
2037
  ],
2054
2038
  "events": [
@@ -2081,6 +2065,7 @@
2081
2065
  "type": {
2082
2066
  "text": "number"
2083
2067
  },
2068
+ "description": "Number of direct dependencies (filtered)",
2084
2069
  "fieldName": "dependenciesCount"
2085
2070
  },
2086
2071
  {
@@ -2088,6 +2073,7 @@
2088
2073
  "type": {
2089
2074
  "text": "number"
2090
2075
  },
2076
+ "description": "Number of direct dependents (filtered)",
2091
2077
  "fieldName": "dependentsCount"
2092
2078
  },
2093
2079
  {
@@ -2095,6 +2081,7 @@
2095
2081
  "type": {
2096
2082
  "text": "number"
2097
2083
  },
2084
+ "description": "Total number of direct dependencies (unfiltered)",
2098
2085
  "fieldName": "totalDependenciesCount"
2099
2086
  },
2100
2087
  {
@@ -2102,6 +2089,7 @@
2102
2089
  "type": {
2103
2090
  "text": "number"
2104
2091
  },
2092
+ "description": "Total number of direct dependents (unfiltered)",
2105
2093
  "fieldName": "totalDependentsCount"
2106
2094
  },
2107
2095
  {
@@ -2109,6 +2097,7 @@
2109
2097
  "type": {
2110
2098
  "text": "number"
2111
2099
  },
2100
+ "description": "Number of transitive dependencies",
2112
2101
  "fieldName": "transitiveDependenciesCount"
2113
2102
  },
2114
2103
  {
@@ -2116,6 +2105,7 @@
2116
2105
  "type": {
2117
2106
  "text": "number"
2118
2107
  },
2108
+ "description": "Number of transitive dependents",
2119
2109
  "fieldName": "transitiveDependentsCount"
2120
2110
  },
2121
2111
  {
@@ -2123,6 +2113,7 @@
2123
2113
  "type": {
2124
2114
  "text": "boolean"
2125
2115
  },
2116
+ "description": "Whether this node has high fan-in (many dependents)",
2126
2117
  "fieldName": "isHighFanIn"
2127
2118
  },
2128
2119
  {
@@ -2130,6 +2121,7 @@
2130
2121
  "type": {
2131
2122
  "text": "boolean"
2132
2123
  },
2124
+ "description": "Whether this node has high fan-out (many dependencies)",
2133
2125
  "fieldName": "isHighFanOut"
2134
2126
  },
2135
2127
  {
@@ -2137,6 +2129,7 @@
2137
2129
  "type": {
2138
2130
  "text": "boolean"
2139
2131
  },
2132
+ "description": "Whether the direct dependencies card is toggled on",
2140
2133
  "fieldName": "activeDirectDeps"
2141
2134
  },
2142
2135
  {
@@ -2144,6 +2137,7 @@
2144
2137
  "type": {
2145
2138
  "text": "boolean"
2146
2139
  },
2140
+ "description": "Whether the transitive dependencies card is toggled on",
2147
2141
  "fieldName": "activeTransitiveDeps"
2148
2142
  },
2149
2143
  {
@@ -2151,6 +2145,7 @@
2151
2145
  "type": {
2152
2146
  "text": "boolean"
2153
2147
  },
2148
+ "description": "Whether the direct dependents card is toggled on",
2154
2149
  "fieldName": "activeDirectDependents"
2155
2150
  },
2156
2151
  {
@@ -2158,6 +2153,7 @@
2158
2153
  "type": {
2159
2154
  "text": "boolean"
2160
2155
  },
2156
+ "description": "Whether the transitive dependents card is toggled on",
2161
2157
  "fieldName": "activeTransitiveDependents"
2162
2158
  },
2163
2159
  {
@@ -2165,6 +2161,7 @@
2165
2161
  "type": {
2166
2162
  "text": "boolean"
2167
2163
  },
2164
+ "description": "Whether the section starts expanded",
2168
2165
  "default": "true",
2169
2166
  "fieldName": "expanded"
2170
2167
  }
@@ -2225,10 +2222,6 @@
2225
2222
  {
2226
2223
  "description": "Border color on hover (computed from color prop)",
2227
2224
  "name": "--badge-border-hover"
2228
- },
2229
- {
2230
- "description": "Glow color on hover (computed from color prop)",
2231
- "name": "--badge-glow"
2232
2225
  }
2233
2226
  ],
2234
2227
  "members": [
@@ -2259,7 +2252,7 @@
2259
2252
  "description": "Badge shape variant\n- 'pill': Fully rounded (radii-full)\n- 'rounded': Small border radius (radii-sm)\n- 'accent': Small radius with left accent border",
2260
2253
  "default": "'pill'",
2261
2254
  "attribute": "variant",
2262
- "expandedType": {
2255
+ "parsedType": {
2263
2256
  "text": "'pill' | 'rounded' | 'accent'"
2264
2257
  }
2265
2258
  },
@@ -2272,7 +2265,7 @@
2272
2265
  "description": "Badge size\n- 'sm': Smaller text (xs), monospace font\n- 'md': Medium text (sm), body font",
2273
2266
  "default": "'md'",
2274
2267
  "attribute": "size",
2275
- "expandedType": {
2268
+ "parsedType": {
2276
2269
  "text": "'sm' | 'md'"
2277
2270
  }
2278
2271
  },
@@ -2285,16 +2278,6 @@
2285
2278
  "description": "Whether the badge has interactive hover states",
2286
2279
  "default": "false",
2287
2280
  "attribute": "interactive"
2288
- },
2289
- {
2290
- "kind": "field",
2291
- "name": "glow",
2292
- "type": {
2293
- "text": "boolean"
2294
- },
2295
- "description": "Whether to show glow effect on hover",
2296
- "default": "false",
2297
- "attribute": "glow"
2298
2281
  }
2299
2282
  ],
2300
2283
  "attributes": [
@@ -2322,7 +2305,7 @@
2322
2305
  "description": "Badge shape variant\n- 'pill': Fully rounded (radii-full)\n- 'rounded': Small border radius (radii-sm)\n- 'accent': Small radius with left accent border",
2323
2306
  "default": "'pill'",
2324
2307
  "fieldName": "variant",
2325
- "expandedType": {
2308
+ "parsedType": {
2326
2309
  "text": "'pill' | 'rounded' | 'accent'"
2327
2310
  }
2328
2311
  },
@@ -2334,7 +2317,7 @@
2334
2317
  "description": "Badge size\n- 'sm': Smaller text (xs), monospace font\n- 'md': Medium text (sm), body font",
2335
2318
  "default": "'md'",
2336
2319
  "fieldName": "size",
2337
- "expandedType": {
2320
+ "parsedType": {
2338
2321
  "text": "'sm' | 'md'"
2339
2322
  }
2340
2323
  },
@@ -2346,15 +2329,6 @@
2346
2329
  "description": "Whether the badge has interactive hover states",
2347
2330
  "default": "false",
2348
2331
  "fieldName": "interactive"
2349
- },
2350
- {
2351
- "name": "glow",
2352
- "type": {
2353
- "text": "boolean"
2354
- },
2355
- "description": "Whether to show glow effect on hover",
2356
- "default": "false",
2357
- "fieldName": "glow"
2358
2332
  }
2359
2333
  ],
2360
2334
  "superclass": {
@@ -2428,7 +2402,7 @@
2428
2402
  "type": {
2429
2403
  "text": "string"
2430
2404
  },
2431
- "description": "Theme color for the icon box glow",
2405
+ "description": "Theme color for the icon box",
2432
2406
  "attribute": "color"
2433
2407
  },
2434
2408
  {
@@ -2444,7 +2418,8 @@
2444
2418
  {
2445
2419
  "kind": "method",
2446
2420
  "name": "handleBack",
2447
- "privacy": "private"
2421
+ "privacy": "private",
2422
+ "description": "Handles back button click and dispatches back event"
2448
2423
  }
2449
2424
  ],
2450
2425
  "events": [
@@ -2478,7 +2453,7 @@
2478
2453
  "type": {
2479
2454
  "text": "string"
2480
2455
  },
2481
- "description": "Theme color for the icon box glow",
2456
+ "description": "Theme color for the icon box",
2482
2457
  "fieldName": "color"
2483
2458
  },
2484
2459
  {
@@ -2555,7 +2530,8 @@
2555
2530
  "type": {
2556
2531
  "text": "{ prefix: string; value: string; color: string }"
2557
2532
  }
2558
- }
2533
+ },
2534
+ "description": "Splits the tag into prefix and value, returning the associated color"
2559
2535
  }
2560
2536
  ],
2561
2537
  "attributes": [
@@ -2619,7 +2595,8 @@
2619
2595
  "name": "node",
2620
2596
  "type": {
2621
2597
  "text": "GraphNode"
2622
- }
2598
+ },
2599
+ "description": "The graph node to display in the header"
2623
2600
  },
2624
2601
  {
2625
2602
  "kind": "field",
@@ -2627,6 +2604,7 @@
2627
2604
  "type": {
2628
2605
  "text": "number"
2629
2606
  },
2607
+ "description": "Current canvas zoom level for color adjustments",
2630
2608
  "attribute": "zoom"
2631
2609
  },
2632
2610
  {
@@ -2635,13 +2613,15 @@
2635
2613
  "type": {
2636
2614
  "text": "boolean"
2637
2615
  },
2616
+ "description": "Whether clicking back navigates to the parent cluster instead of closing",
2638
2617
  "default": "true",
2639
2618
  "attribute": "show-cluster-link"
2640
2619
  },
2641
2620
  {
2642
2621
  "kind": "method",
2643
2622
  "name": "handleBack",
2644
- "privacy": "private"
2623
+ "privacy": "private",
2624
+ "description": "Handles back navigation to parent cluster or dispatches close event"
2645
2625
  }
2646
2626
  ],
2647
2627
  "events": [
@@ -2666,6 +2646,7 @@
2666
2646
  "type": {
2667
2647
  "text": "number"
2668
2648
  },
2649
+ "description": "Current canvas zoom level for color adjustments",
2669
2650
  "fieldName": "zoom"
2670
2651
  },
2671
2652
  {
@@ -2673,6 +2654,7 @@
2673
2654
  "type": {
2674
2655
  "text": "boolean"
2675
2656
  },
2657
+ "description": "Whether clicking back navigates to the parent cluster instead of closing",
2676
2658
  "default": "true",
2677
2659
  "fieldName": "showClusterLink"
2678
2660
  }
@@ -2743,12 +2725,14 @@
2743
2725
  {
2744
2726
  "kind": "method",
2745
2727
  "name": "renderPlatformTargets",
2746
- "privacy": "private"
2728
+ "privacy": "private",
2729
+ "description": "Renders platform minimum OS version badges"
2747
2730
  },
2748
2731
  {
2749
2732
  "kind": "method",
2750
2733
  "name": "renderDestinations",
2751
- "privacy": "private"
2734
+ "privacy": "private",
2735
+ "description": "Renders destination device type badges"
2752
2736
  }
2753
2737
  ],
2754
2738
  "attributes": [
@@ -2804,7 +2788,8 @@
2804
2788
  "name": "node",
2805
2789
  "type": {
2806
2790
  "text": "GraphNode"
2807
- }
2791
+ },
2792
+ "description": "The graph node to display information for"
2808
2793
  },
2809
2794
  {
2810
2795
  "kind": "field",
@@ -2812,6 +2797,7 @@
2812
2797
  "type": {
2813
2798
  "text": "boolean"
2814
2799
  },
2800
+ "description": "Whether the section starts expanded",
2815
2801
  "default": "true",
2816
2802
  "attribute": "expanded"
2817
2803
  },
@@ -2836,7 +2822,8 @@
2836
2822
  {
2837
2823
  "kind": "method",
2838
2824
  "name": "toggleExpanded",
2839
- "privacy": "private"
2825
+ "privacy": "private",
2826
+ "description": "Toggles the section expanded/collapsed state"
2840
2827
  },
2841
2828
  {
2842
2829
  "kind": "field",
@@ -2868,7 +2855,8 @@
2868
2855
  {
2869
2856
  "kind": "method",
2870
2857
  "name": "renderForeignBuild",
2871
- "privacy": "private"
2858
+ "privacy": "private",
2859
+ "description": "Renders the foreign build details section if present"
2872
2860
  },
2873
2861
  {
2874
2862
  "kind": "method",
@@ -2878,7 +2866,8 @@
2878
2866
  "type": {
2879
2867
  "text": "TemplateResult"
2880
2868
  }
2881
- }
2869
+ },
2870
+ "description": "Renders the expanded node info rows and subsections"
2882
2871
  }
2883
2872
  ],
2884
2873
  "attributes": [
@@ -2887,6 +2876,7 @@
2887
2876
  "type": {
2888
2877
  "text": "boolean"
2889
2878
  },
2879
+ "description": "Whether the section starts expanded",
2890
2880
  "default": "true",
2891
2881
  "fieldName": "expanded"
2892
2882
  }
@@ -2925,7 +2915,7 @@
2925
2915
  "declarations": [
2926
2916
  {
2927
2917
  "kind": "class",
2928
- "description": "Reusable row component for displaying nodes in lists.\nFeatures sharp edges, accent borders, and monospace typography.",
2918
+ "description": "Reusable row component for displaying nodes in lists.",
2929
2919
  "name": "GraphListItemRow",
2930
2920
  "members": [
2931
2921
  {
@@ -2933,7 +2923,8 @@
2933
2923
  "name": "node",
2934
2924
  "type": {
2935
2925
  "text": "GraphNode"
2936
- }
2926
+ },
2927
+ "description": "The graph node to display in this row"
2937
2928
  },
2938
2929
  {
2939
2930
  "kind": "field",
@@ -2941,6 +2932,7 @@
2941
2932
  "type": {
2942
2933
  "text": "string"
2943
2934
  },
2935
+ "description": "Optional subtitle text shown below the node name",
2944
2936
  "attribute": "subtitle"
2945
2937
  },
2946
2938
  {
@@ -2949,6 +2941,7 @@
2949
2941
  "type": {
2950
2942
  "text": "number"
2951
2943
  },
2944
+ "description": "Current canvas zoom level for color adjustments",
2952
2945
  "default": "1",
2953
2946
  "attribute": "zoom"
2954
2947
  },
@@ -2958,6 +2951,7 @@
2958
2951
  "type": {
2959
2952
  "text": "boolean"
2960
2953
  },
2954
+ "description": "Whether this row is currently selected",
2961
2955
  "attribute": "is-selected"
2962
2956
  },
2963
2957
  {
@@ -2971,17 +2965,20 @@
2971
2965
  {
2972
2966
  "kind": "method",
2973
2967
  "name": "handleClick",
2974
- "privacy": "private"
2968
+ "privacy": "private",
2969
+ "description": "Handles row click and dispatches row-select event"
2975
2970
  },
2976
2971
  {
2977
2972
  "kind": "method",
2978
2973
  "name": "handleMouseEnter",
2979
- "privacy": "private"
2974
+ "privacy": "private",
2975
+ "description": "Handles mouse enter and dispatches row-hover event"
2980
2976
  },
2981
2977
  {
2982
2978
  "kind": "method",
2983
2979
  "name": "handleMouseLeave",
2984
- "privacy": "private"
2980
+ "privacy": "private",
2981
+ "description": "Handles mouse leave and dispatches row-hover-end event"
2985
2982
  }
2986
2983
  ],
2987
2984
  "events": [
@@ -3013,6 +3010,7 @@
3013
3010
  "type": {
3014
3011
  "text": "string"
3015
3012
  },
3013
+ "description": "Optional subtitle text shown below the node name",
3016
3014
  "fieldName": "subtitle"
3017
3015
  },
3018
3016
  {
@@ -3020,6 +3018,7 @@
3020
3018
  "type": {
3021
3019
  "text": "number"
3022
3020
  },
3021
+ "description": "Current canvas zoom level for color adjustments",
3023
3022
  "default": "1",
3024
3023
  "fieldName": "zoom"
3025
3024
  },
@@ -3028,6 +3027,7 @@
3028
3027
  "type": {
3029
3028
  "text": "boolean"
3030
3029
  },
3030
+ "description": "Whether this row is currently selected",
3031
3031
  "fieldName": "isSelected"
3032
3032
  }
3033
3033
  ],
@@ -3061,7 +3061,7 @@
3061
3061
  },
3062
3062
  {
3063
3063
  "kind": "javascript-module",
3064
- "path": "src/ui/components/node-list-events.ts",
3064
+ "path": "src/ui/components/node-list-base.ts",
3065
3065
  "declarations": [
3066
3066
  {
3067
3067
  "kind": "class",
@@ -3145,7 +3145,7 @@
3145
3145
  "name": "NodeListEventsBase",
3146
3146
  "declaration": {
3147
3147
  "name": "NodeListEventsBase",
3148
- "module": "src/ui/components/node-list-events.ts"
3148
+ "module": "src/ui/components/node-list-base.ts"
3149
3149
  }
3150
3150
  }
3151
3151
  ]
@@ -3237,7 +3237,8 @@
3237
3237
  {
3238
3238
  "kind": "method",
3239
3239
  "name": "toggleExpanded",
3240
- "privacy": "private"
3240
+ "privacy": "private",
3241
+ "description": "Toggles the list expanded/collapsed state"
3241
3242
  },
3242
3243
  {
3243
3244
  "kind": "field",
@@ -3246,26 +3247,9 @@
3246
3247
  "text": "NodeWithEdge[]"
3247
3248
  },
3248
3249
  "privacy": "private",
3250
+ "description": "Returns the resolved item list, supporting both items and legacy nodes props",
3249
3251
  "readonly": true
3250
3252
  },
3251
- {
3252
- "kind": "method",
3253
- "name": "getNodeSubtitle",
3254
- "privacy": "private",
3255
- "return": {
3256
- "type": {
3257
- "text": "string"
3258
- }
3259
- },
3260
- "parameters": [
3261
- {
3262
- "name": "node",
3263
- "type": {
3264
- "text": "GraphNode"
3265
- }
3266
- }
3267
- ]
3268
- },
3269
3253
  {
3270
3254
  "kind": "method",
3271
3255
  "name": "renderKindBadge",
@@ -3277,7 +3261,8 @@
3277
3261
  "text": "NodeWithEdge"
3278
3262
  }
3279
3263
  }
3280
- ]
3264
+ ],
3265
+ "description": "Renders a dependency kind badge for the given item"
3281
3266
  },
3282
3267
  {
3283
3268
  "kind": "method",
@@ -3299,7 +3284,7 @@
3299
3284
  "description": "Forward node selection event",
3300
3285
  "inheritedFrom": {
3301
3286
  "name": "NodeListEventsBase",
3302
- "module": "src/ui/components/node-list-events.ts"
3287
+ "module": "src/ui/components/node-list-base.ts"
3303
3288
  }
3304
3289
  },
3305
3290
  {
@@ -3322,7 +3307,7 @@
3322
3307
  "description": "Forward node hover event",
3323
3308
  "inheritedFrom": {
3324
3309
  "name": "NodeListEventsBase",
3325
- "module": "src/ui/components/node-list-events.ts"
3310
+ "module": "src/ui/components/node-list-base.ts"
3326
3311
  }
3327
3312
  },
3328
3313
  {
@@ -3337,7 +3322,7 @@
3337
3322
  "description": "Handle hover end - dispatch with null nodeId",
3338
3323
  "inheritedFrom": {
3339
3324
  "name": "NodeListEventsBase",
3340
- "module": "src/ui/components/node-list-events.ts"
3325
+ "module": "src/ui/components/node-list-base.ts"
3341
3326
  }
3342
3327
  }
3343
3328
  ],
@@ -3350,7 +3335,7 @@
3350
3335
  "description": "Dispatched when a node row is clicked (detail: { node })",
3351
3336
  "inheritedFrom": {
3352
3337
  "name": "NodeListEventsBase",
3353
- "module": "src/ui/components/node-list-events.ts"
3338
+ "module": "src/ui/components/node-list-base.ts"
3354
3339
  }
3355
3340
  },
3356
3341
  {
@@ -3361,7 +3346,7 @@
3361
3346
  "description": "Dispatched on node row hover (detail: { nodeId })",
3362
3347
  "inheritedFrom": {
3363
3348
  "name": "NodeListEventsBase",
3364
- "module": "src/ui/components/node-list-events.ts"
3349
+ "module": "src/ui/components/node-list-base.ts"
3365
3350
  }
3366
3351
  }
3367
3352
  ],
@@ -3414,7 +3399,7 @@
3414
3399
  ],
3415
3400
  "superclass": {
3416
3401
  "name": "NodeListEventsBase",
3417
- "module": "/src/ui/components/node-list-events"
3402
+ "module": "/src/ui/components/node-list-base"
3418
3403
  },
3419
3404
  "summary": "Collapsible node list with section header and kind badges",
3420
3405
  "tagName": "xcode-graph-node-list",
@@ -3455,7 +3440,8 @@
3455
3440
  "privacy": "public",
3456
3441
  "type": {
3457
3442
  "text": "GraphNode"
3458
- }
3443
+ },
3444
+ "description": "The node to display details for"
3459
3445
  },
3460
3446
  {
3461
3447
  "kind": "field",
@@ -3463,7 +3449,8 @@
3463
3449
  "privacy": "public",
3464
3450
  "type": {
3465
3451
  "text": "GraphNode[]"
3466
- }
3452
+ },
3453
+ "description": "All nodes in the graph (for dependency resolution)"
3467
3454
  },
3468
3455
  {
3469
3456
  "kind": "field",
@@ -3471,7 +3458,8 @@
3471
3458
  "privacy": "public",
3472
3459
  "type": {
3473
3460
  "text": "GraphEdge[]"
3474
- }
3461
+ },
3462
+ "description": "All edges in the graph"
3475
3463
  },
3476
3464
  {
3477
3465
  "kind": "field",
@@ -3479,7 +3467,8 @@
3479
3467
  "privacy": "public",
3480
3468
  "type": {
3481
3469
  "text": "GraphEdge[] | undefined"
3482
- }
3470
+ },
3471
+ "description": "Edges remaining after filter application"
3483
3472
  },
3484
3473
  {
3485
3474
  "kind": "field",
@@ -3487,7 +3476,8 @@
3487
3476
  "privacy": "public",
3488
3477
  "type": {
3489
3478
  "text": "Cluster[] | undefined"
3490
- }
3479
+ },
3480
+ "description": "Available clusters for cluster navigation"
3491
3481
  },
3492
3482
  {
3493
3483
  "kind": "field",
@@ -3496,6 +3486,7 @@
3496
3486
  "type": {
3497
3487
  "text": "boolean"
3498
3488
  },
3489
+ "description": "Whether direct dependencies highlighting is active",
3499
3490
  "attribute": "active-direct-deps"
3500
3491
  },
3501
3492
  {
@@ -3505,6 +3496,7 @@
3505
3496
  "type": {
3506
3497
  "text": "boolean"
3507
3498
  },
3499
+ "description": "Whether transitive dependencies highlighting is active",
3508
3500
  "attribute": "active-transitive-deps"
3509
3501
  },
3510
3502
  {
@@ -3514,6 +3506,7 @@
3514
3506
  "type": {
3515
3507
  "text": "boolean"
3516
3508
  },
3509
+ "description": "Whether direct dependents highlighting is active",
3517
3510
  "attribute": "active-direct-dependents"
3518
3511
  },
3519
3512
  {
@@ -3523,6 +3516,7 @@
3523
3516
  "type": {
3524
3517
  "text": "boolean"
3525
3518
  },
3519
+ "description": "Whether transitive dependents highlighting is active",
3526
3520
  "attribute": "active-transitive-dependents"
3527
3521
  },
3528
3522
  {
@@ -3532,6 +3526,7 @@
3532
3526
  "type": {
3533
3527
  "text": "number"
3534
3528
  },
3529
+ "description": "Current canvas zoom level for color adjustments",
3535
3530
  "attribute": "zoom"
3536
3531
  },
3537
3532
  {
@@ -3539,7 +3534,7 @@
3539
3534
  "name": "focusTrap",
3540
3535
  "privacy": "private",
3541
3536
  "readonly": true,
3542
- "default": "new FocusTrapController(this, { isActive: () => !!this.node, onDeactivate: () => this.bubbleEvent('close'), escapeDeactivates: true, clickOutsideDeactivates: true, })"
3537
+ "default": "new FocusTrapController(this, { isActive: () => Boolean(this.node), onDeactivate: () => this.bubbleEvent('close'), escapeDeactivates: true, clickOutsideDeactivates: true, })"
3543
3538
  },
3544
3539
  {
3545
3540
  "kind": "field",
@@ -3565,7 +3560,8 @@
3565
3560
  "text": "unknown"
3566
3561
  }
3567
3562
  }
3568
- ]
3563
+ ],
3564
+ "description": "Dispatches a composed bubbling custom event with the given name and detail"
3569
3565
  }
3570
3566
  ],
3571
3567
  "events": [
@@ -3614,6 +3610,7 @@
3614
3610
  "type": {
3615
3611
  "text": "boolean"
3616
3612
  },
3613
+ "description": "Whether direct dependencies highlighting is active",
3617
3614
  "fieldName": "activeDirectDeps"
3618
3615
  },
3619
3616
  {
@@ -3621,6 +3618,7 @@
3621
3618
  "type": {
3622
3619
  "text": "boolean"
3623
3620
  },
3621
+ "description": "Whether transitive dependencies highlighting is active",
3624
3622
  "fieldName": "activeTransitiveDeps"
3625
3623
  },
3626
3624
  {
@@ -3628,6 +3626,7 @@
3628
3626
  "type": {
3629
3627
  "text": "boolean"
3630
3628
  },
3629
+ "description": "Whether direct dependents highlighting is active",
3631
3630
  "fieldName": "activeDirectDependents"
3632
3631
  },
3633
3632
  {
@@ -3635,6 +3634,7 @@
3635
3634
  "type": {
3636
3635
  "text": "boolean"
3637
3636
  },
3637
+ "description": "Whether transitive dependents highlighting is active",
3638
3638
  "fieldName": "activeTransitiveDependents"
3639
3639
  },
3640
3640
  {
@@ -3642,6 +3642,7 @@
3642
3642
  "type": {
3643
3643
  "text": "number"
3644
3644
  },
3645
+ "description": "Current canvas zoom level for color adjustments",
3645
3646
  "fieldName": "zoom"
3646
3647
  }
3647
3648
  ],
@@ -3808,7 +3809,8 @@
3808
3809
  {
3809
3810
  "kind": "method",
3810
3811
  "name": "toggleExpanded",
3811
- "privacy": "private"
3812
+ "privacy": "private",
3813
+ "description": "Toggles the expanded/collapsed state"
3812
3814
  },
3813
3815
  {
3814
3816
  "kind": "field",
@@ -3919,6 +3921,7 @@
3919
3921
  "type": {
3920
3922
  "text": "string"
3921
3923
  },
3924
+ "description": "Display name of the cluster",
3922
3925
  "attribute": "cluster-name"
3923
3926
  },
3924
3927
  {
@@ -3927,6 +3930,7 @@
3927
3930
  "type": {
3928
3931
  "text": "'package' | 'project'"
3929
3932
  },
3933
+ "description": "Whether this cluster is a package or project",
3930
3934
  "attribute": "cluster-type"
3931
3935
  },
3932
3936
  {
@@ -3935,6 +3939,7 @@
3935
3939
  "type": {
3936
3940
  "text": "string"
3937
3941
  },
3942
+ "description": "Accent color for the cluster icon and badges",
3938
3943
  "attribute": "cluster-color"
3939
3944
  },
3940
3945
  {
@@ -3943,6 +3948,7 @@
3943
3948
  "type": {
3944
3949
  "text": "string"
3945
3950
  },
3951
+ "description": "Filesystem path to the cluster source (used for source type detection and copy)",
3946
3952
  "attribute": "cluster-path"
3947
3953
  },
3948
3954
  {
@@ -3951,6 +3957,7 @@
3951
3957
  "type": {
3952
3958
  "text": "boolean"
3953
3959
  },
3960
+ "description": "Whether the cluster comes from an external dependency",
3954
3961
  "attribute": "is-external"
3955
3962
  },
3956
3963
  {
@@ -3970,7 +3977,8 @@
3970
3977
  "type": {
3971
3978
  "text": "SourceType"
3972
3979
  }
3973
- }
3980
+ },
3981
+ "description": "Determines the source type (Local/Registry/Git) from the cluster path"
3974
3982
  },
3975
3983
  {
3976
3984
  "kind": "method",
@@ -3980,12 +3988,14 @@
3980
3988
  "type": {
3981
3989
  "text": "string"
3982
3990
  }
3983
- }
3991
+ },
3992
+ "description": "Extracts a shortened display path from the full cluster path"
3984
3993
  },
3985
3994
  {
3986
3995
  "kind": "method",
3987
3996
  "name": "handleCopyPath",
3988
- "privacy": "private"
3997
+ "privacy": "private",
3998
+ "description": "Copies the full cluster path to the clipboard"
3989
3999
  }
3990
4000
  ],
3991
4001
  "events": [
@@ -4000,6 +4010,7 @@
4000
4010
  "type": {
4001
4011
  "text": "string"
4002
4012
  },
4013
+ "description": "Display name of the cluster",
4003
4014
  "fieldName": "clusterName"
4004
4015
  },
4005
4016
  {
@@ -4007,6 +4018,7 @@
4007
4018
  "type": {
4008
4019
  "text": "'package' | 'project'"
4009
4020
  },
4021
+ "description": "Whether this cluster is a package or project",
4010
4022
  "fieldName": "clusterType"
4011
4023
  },
4012
4024
  {
@@ -4014,6 +4026,7 @@
4014
4026
  "type": {
4015
4027
  "text": "string"
4016
4028
  },
4029
+ "description": "Accent color for the cluster icon and badges",
4017
4030
  "fieldName": "clusterColor"
4018
4031
  },
4019
4032
  {
@@ -4021,6 +4034,7 @@
4021
4034
  "type": {
4022
4035
  "text": "string"
4023
4036
  },
4037
+ "description": "Filesystem path to the cluster source (used for source type detection and copy)",
4024
4038
  "fieldName": "clusterPath"
4025
4039
  },
4026
4040
  {
@@ -4028,6 +4042,7 @@
4028
4042
  "type": {
4029
4043
  "text": "boolean"
4030
4044
  },
4045
+ "description": "Whether the cluster comes from an external dependency",
4031
4046
  "fieldName": "isExternal"
4032
4047
  }
4033
4048
  ],
@@ -4074,6 +4089,7 @@
4074
4089
  "type": {
4075
4090
  "text": "number"
4076
4091
  },
4092
+ "description": "Number of dependencies visible after filtering",
4077
4093
  "attribute": "filtered-dependencies"
4078
4094
  },
4079
4095
  {
@@ -4082,6 +4098,7 @@
4082
4098
  "type": {
4083
4099
  "text": "number"
4084
4100
  },
4101
+ "description": "Total number of dependencies before filtering",
4085
4102
  "attribute": "total-dependencies"
4086
4103
  },
4087
4104
  {
@@ -4090,6 +4107,7 @@
4090
4107
  "type": {
4091
4108
  "text": "number"
4092
4109
  },
4110
+ "description": "Number of dependents visible after filtering",
4093
4111
  "attribute": "filtered-dependents"
4094
4112
  },
4095
4113
  {
@@ -4098,6 +4116,7 @@
4098
4116
  "type": {
4099
4117
  "text": "number"
4100
4118
  },
4119
+ "description": "Total number of dependents before filtering",
4101
4120
  "attribute": "total-dependents"
4102
4121
  },
4103
4122
  {
@@ -4106,6 +4125,7 @@
4106
4125
  "type": {
4107
4126
  "text": "boolean"
4108
4127
  },
4128
+ "description": "Whether the direct dependencies card is toggled on",
4109
4129
  "attribute": "active-direct-deps"
4110
4130
  },
4111
4131
  {
@@ -4114,6 +4134,7 @@
4114
4134
  "type": {
4115
4135
  "text": "boolean"
4116
4136
  },
4137
+ "description": "Whether the direct dependents card is toggled on",
4117
4138
  "attribute": "active-direct-dependents"
4118
4139
  },
4119
4140
  {
@@ -4121,7 +4142,8 @@
4121
4142
  "name": "platforms",
4122
4143
  "type": {
4123
4144
  "text": "Set<string>"
4124
- }
4145
+ },
4146
+ "description": "Set of platform names present in this cluster"
4125
4147
  },
4126
4148
  {
4127
4149
  "kind": "field",
@@ -4137,6 +4159,7 @@
4137
4159
  "type": {
4138
4160
  "text": "boolean"
4139
4161
  },
4162
+ "description": "Whether the section starts expanded",
4140
4163
  "default": "true",
4141
4164
  "attribute": "expanded"
4142
4165
  },
@@ -4152,7 +4175,8 @@
4152
4175
  {
4153
4176
  "kind": "method",
4154
4177
  "name": "toggleExpanded",
4155
- "privacy": "private"
4178
+ "privacy": "private",
4179
+ "description": "Toggles the expanded/collapsed state"
4156
4180
  },
4157
4181
  {
4158
4182
  "kind": "method",
@@ -4165,12 +4189,14 @@
4165
4189
  "text": "string"
4166
4190
  }
4167
4191
  }
4168
- ]
4192
+ ],
4193
+ "description": "Dispatches a toggle event for the given stats card"
4169
4194
  },
4170
4195
  {
4171
4196
  "kind": "method",
4172
4197
  "name": "renderTargetBreakdown",
4173
- "privacy": "private"
4198
+ "privacy": "private",
4199
+ "description": "Renders the target type breakdown badges"
4174
4200
  },
4175
4201
  {
4176
4202
  "kind": "method",
@@ -4180,7 +4206,8 @@
4180
4206
  "type": {
4181
4207
  "text": "TemplateResult"
4182
4208
  }
4183
- }
4209
+ },
4210
+ "description": "Renders the expanded stats content with cards and breakdowns"
4184
4211
  }
4185
4212
  ],
4186
4213
  "events": [
@@ -4205,6 +4232,7 @@
4205
4232
  "type": {
4206
4233
  "text": "number"
4207
4234
  },
4235
+ "description": "Number of dependencies visible after filtering",
4208
4236
  "fieldName": "filteredDependencies"
4209
4237
  },
4210
4238
  {
@@ -4212,6 +4240,7 @@
4212
4240
  "type": {
4213
4241
  "text": "number"
4214
4242
  },
4243
+ "description": "Total number of dependencies before filtering",
4215
4244
  "fieldName": "totalDependencies"
4216
4245
  },
4217
4246
  {
@@ -4219,6 +4248,7 @@
4219
4248
  "type": {
4220
4249
  "text": "number"
4221
4250
  },
4251
+ "description": "Number of dependents visible after filtering",
4222
4252
  "fieldName": "filteredDependents"
4223
4253
  },
4224
4254
  {
@@ -4226,6 +4256,7 @@
4226
4256
  "type": {
4227
4257
  "text": "number"
4228
4258
  },
4259
+ "description": "Total number of dependents before filtering",
4229
4260
  "fieldName": "totalDependents"
4230
4261
  },
4231
4262
  {
@@ -4233,6 +4264,7 @@
4233
4264
  "type": {
4234
4265
  "text": "boolean"
4235
4266
  },
4267
+ "description": "Whether the direct dependencies card is toggled on",
4236
4268
  "fieldName": "activeDirectDeps"
4237
4269
  },
4238
4270
  {
@@ -4240,6 +4272,7 @@
4240
4272
  "type": {
4241
4273
  "text": "boolean"
4242
4274
  },
4275
+ "description": "Whether the direct dependents card is toggled on",
4243
4276
  "fieldName": "activeDirectDependents"
4244
4277
  },
4245
4278
  {
@@ -4247,6 +4280,7 @@
4247
4280
  "type": {
4248
4281
  "text": "boolean"
4249
4282
  },
4283
+ "description": "Whether the section starts expanded",
4250
4284
  "default": "true",
4251
4285
  "fieldName": "expanded"
4252
4286
  }
@@ -4293,14 +4327,16 @@
4293
4327
  "name": "clusterNodes",
4294
4328
  "type": {
4295
4329
  "text": "GraphNode[]"
4296
- }
4330
+ },
4331
+ "description": "All nodes belonging to this cluster"
4297
4332
  },
4298
4333
  {
4299
4334
  "kind": "field",
4300
4335
  "name": "nodesByType",
4301
4336
  "type": {
4302
4337
  "text": "Record<string, GraphNode[]>"
4303
- }
4338
+ },
4339
+ "description": "Nodes grouped by their type (e.g., framework, library)"
4304
4340
  },
4305
4341
  {
4306
4342
  "kind": "field",
@@ -4308,6 +4344,7 @@
4308
4344
  "type": {
4309
4345
  "text": "number"
4310
4346
  },
4347
+ "description": "Number of targets visible after filtering",
4311
4348
  "attribute": "filtered-targets-count"
4312
4349
  },
4313
4350
  {
@@ -4316,6 +4353,7 @@
4316
4353
  "type": {
4317
4354
  "text": "number"
4318
4355
  },
4356
+ "description": "Total number of targets in the cluster",
4319
4357
  "attribute": "total-targets-count"
4320
4358
  },
4321
4359
  {
@@ -4323,7 +4361,8 @@
4323
4361
  "name": "edges",
4324
4362
  "type": {
4325
4363
  "text": "GraphEdge[]"
4326
- }
4364
+ },
4365
+ "description": "All edges in the graph (for dependency counting)"
4327
4366
  },
4328
4367
  {
4329
4368
  "kind": "field",
@@ -4331,6 +4370,7 @@
4331
4370
  "type": {
4332
4371
  "text": "number"
4333
4372
  },
4373
+ "description": "Current canvas zoom level for color adjustments",
4334
4374
  "attribute": "zoom"
4335
4375
  },
4336
4376
  {
@@ -4355,7 +4395,8 @@
4355
4395
  {
4356
4396
  "kind": "method",
4357
4397
  "name": "toggleExpanded",
4358
- "privacy": "private"
4398
+ "privacy": "private",
4399
+ "description": "Toggles the expanded/collapsed state"
4359
4400
  },
4360
4401
  {
4361
4402
  "kind": "field",
@@ -4374,7 +4415,8 @@
4374
4415
  "type": {
4375
4416
  "text": "ClusterListItem[]"
4376
4417
  }
4377
- }
4418
+ },
4419
+ "description": "Builds a flat list of headers and nodes for virtualized rendering"
4378
4420
  },
4379
4421
  {
4380
4422
  "kind": "method",
@@ -4392,7 +4434,8 @@
4392
4434
  "text": "{\n dependencies: number;\n dependents: number;\n }"
4393
4435
  }
4394
4436
  }
4395
- ]
4437
+ ],
4438
+ "description": "Formats dependency and dependent counts into a subtitle string"
4396
4439
  },
4397
4440
  {
4398
4441
  "kind": "method",
@@ -4414,7 +4457,7 @@
4414
4457
  "description": "Forward node selection event",
4415
4458
  "inheritedFrom": {
4416
4459
  "name": "NodeListEventsBase",
4417
- "module": "src/ui/components/node-list-events.ts"
4460
+ "module": "src/ui/components/node-list-base.ts"
4418
4461
  }
4419
4462
  },
4420
4463
  {
@@ -4437,7 +4480,7 @@
4437
4480
  "description": "Forward node hover event",
4438
4481
  "inheritedFrom": {
4439
4482
  "name": "NodeListEventsBase",
4440
- "module": "src/ui/components/node-list-events.ts"
4483
+ "module": "src/ui/components/node-list-base.ts"
4441
4484
  }
4442
4485
  },
4443
4486
  {
@@ -4452,7 +4495,7 @@
4452
4495
  "description": "Handle hover end - dispatch with null nodeId",
4453
4496
  "inheritedFrom": {
4454
4497
  "name": "NodeListEventsBase",
4455
- "module": "src/ui/components/node-list-events.ts"
4498
+ "module": "src/ui/components/node-list-base.ts"
4456
4499
  }
4457
4500
  }
4458
4501
  ],
@@ -4465,7 +4508,7 @@
4465
4508
  "description": "Dispatched when a target is clicked (detail: { node })",
4466
4509
  "inheritedFrom": {
4467
4510
  "name": "NodeListEventsBase",
4468
- "module": "src/ui/components/node-list-events.ts"
4511
+ "module": "src/ui/components/node-list-base.ts"
4469
4512
  }
4470
4513
  },
4471
4514
  {
@@ -4476,7 +4519,7 @@
4476
4519
  "description": "Dispatched on hover (detail: { nodeId })",
4477
4520
  "inheritedFrom": {
4478
4521
  "name": "NodeListEventsBase",
4479
- "module": "src/ui/components/node-list-events.ts"
4522
+ "module": "src/ui/components/node-list-base.ts"
4480
4523
  }
4481
4524
  }
4482
4525
  ],
@@ -4486,6 +4529,7 @@
4486
4529
  "type": {
4487
4530
  "text": "number"
4488
4531
  },
4532
+ "description": "Number of targets visible after filtering",
4489
4533
  "fieldName": "filteredTargetsCount"
4490
4534
  },
4491
4535
  {
@@ -4493,6 +4537,7 @@
4493
4537
  "type": {
4494
4538
  "text": "number"
4495
4539
  },
4540
+ "description": "Total number of targets in the cluster",
4496
4541
  "fieldName": "totalTargetsCount"
4497
4542
  },
4498
4543
  {
@@ -4500,6 +4545,7 @@
4500
4545
  "type": {
4501
4546
  "text": "number"
4502
4547
  },
4548
+ "description": "Current canvas zoom level for color adjustments",
4503
4549
  "fieldName": "zoom"
4504
4550
  },
4505
4551
  {
@@ -4514,7 +4560,7 @@
4514
4560
  ],
4515
4561
  "superclass": {
4516
4562
  "name": "NodeListEventsBase",
4517
- "module": "/src/ui/components/node-list-events"
4563
+ "module": "/src/ui/components/node-list-base"
4518
4564
  },
4519
4565
  "summary": "Collapsible cluster targets list grouped by node type",
4520
4566
  "tagName": "xcode-graph-cluster-targets-list",
@@ -4554,35 +4600,40 @@
4554
4600
  "name": "cluster",
4555
4601
  "type": {
4556
4602
  "text": "Cluster"
4557
- }
4603
+ },
4604
+ "description": "The cluster to display details for"
4558
4605
  },
4559
4606
  {
4560
4607
  "kind": "field",
4561
4608
  "name": "clusterNodes",
4562
4609
  "type": {
4563
4610
  "text": "GraphNode[]"
4564
- }
4611
+ },
4612
+ "description": "Nodes belonging to this cluster"
4565
4613
  },
4566
4614
  {
4567
4615
  "kind": "field",
4568
4616
  "name": "allNodes",
4569
4617
  "type": {
4570
4618
  "text": "GraphNode[]"
4571
- }
4619
+ },
4620
+ "description": "All nodes in the graph (for dependency resolution)"
4572
4621
  },
4573
4622
  {
4574
4623
  "kind": "field",
4575
4624
  "name": "edges",
4576
4625
  "type": {
4577
4626
  "text": "GraphEdge[]"
4578
- }
4627
+ },
4628
+ "description": "All edges in the graph"
4579
4629
  },
4580
4630
  {
4581
4631
  "kind": "field",
4582
4632
  "name": "filteredEdges",
4583
4633
  "type": {
4584
4634
  "text": "GraphEdge[] | undefined"
4585
- }
4635
+ },
4636
+ "description": "Edges remaining after filter application"
4586
4637
  },
4587
4638
  {
4588
4639
  "kind": "field",
@@ -4590,6 +4641,7 @@
4590
4641
  "type": {
4591
4642
  "text": "boolean"
4592
4643
  },
4644
+ "description": "Whether direct dependencies highlighting is active",
4593
4645
  "attribute": "active-direct-deps"
4594
4646
  },
4595
4647
  {
@@ -4598,6 +4650,7 @@
4598
4650
  "type": {
4599
4651
  "text": "boolean"
4600
4652
  },
4653
+ "description": "Whether direct dependents highlighting is active",
4601
4654
  "attribute": "active-direct-dependents"
4602
4655
  },
4603
4656
  {
@@ -4606,6 +4659,7 @@
4606
4659
  "type": {
4607
4660
  "text": "number"
4608
4661
  },
4662
+ "description": "Current canvas zoom level for color adjustments",
4609
4663
  "attribute": "zoom"
4610
4664
  },
4611
4665
  {
@@ -4613,7 +4667,7 @@
4613
4667
  "name": "focusTrap",
4614
4668
  "privacy": "private",
4615
4669
  "readonly": true,
4616
- "default": "new FocusTrapController(this, { isActive: () => !!this.cluster, onDeactivate: () => this.bubbleEvent('close'), escapeDeactivates: true, clickOutsideDeactivates: true, })"
4670
+ "default": "new FocusTrapController(this, { isActive: () => Boolean(this.cluster), onDeactivate: () => this.bubbleEvent('close'), escapeDeactivates: true, clickOutsideDeactivates: true, })"
4617
4671
  },
4618
4672
  {
4619
4673
  "kind": "field",
@@ -4654,7 +4708,8 @@
4654
4708
  "text": "unknown"
4655
4709
  }
4656
4710
  }
4657
- ]
4711
+ ],
4712
+ "description": "Dispatches a bubbling composed custom event"
4658
4713
  }
4659
4714
  ],
4660
4715
  "events": [
@@ -4683,6 +4738,7 @@
4683
4738
  "type": {
4684
4739
  "text": "boolean"
4685
4740
  },
4741
+ "description": "Whether direct dependencies highlighting is active",
4686
4742
  "fieldName": "activeDirectDeps"
4687
4743
  },
4688
4744
  {
@@ -4690,6 +4746,7 @@
4690
4746
  "type": {
4691
4747
  "text": "boolean"
4692
4748
  },
4749
+ "description": "Whether direct dependents highlighting is active",
4693
4750
  "fieldName": "activeDirectDependents"
4694
4751
  },
4695
4752
  {
@@ -4697,6 +4754,7 @@
4697
4754
  "type": {
4698
4755
  "text": "number"
4699
4756
  },
4757
+ "description": "Current canvas zoom level for color adjustments",
4700
4758
  "fieldName": "zoom"
4701
4759
  }
4702
4760
  ],
@@ -4749,7 +4807,8 @@
4749
4807
  {
4750
4808
  "kind": "method",
4751
4809
  "name": "handleClick",
4752
- "privacy": "private"
4810
+ "privacy": "private",
4811
+ "description": "Handles the click event and dispatches clear-filters"
4753
4812
  }
4754
4813
  ],
4755
4814
  "events": [
@@ -4805,7 +4864,7 @@
4805
4864
  "declarations": [
4806
4865
  {
4807
4866
  "kind": "class",
4808
- "description": "Input field for filtering nodes by name/text search.\nFeatures sharp edges, dramatic focus glow, and animated icon.",
4867
+ "description": "Input field for filtering nodes by name/text search.",
4809
4868
  "name": "GraphSearchBar",
4810
4869
  "members": [
4811
4870
  {
@@ -4854,12 +4913,14 @@
4854
4913
  "text": "Event"
4855
4914
  }
4856
4915
  }
4857
- ]
4916
+ ],
4917
+ "description": "Dispatches search-change with the current input value"
4858
4918
  },
4859
4919
  {
4860
4920
  "kind": "method",
4861
4921
  "name": "handleClear",
4862
- "privacy": "private"
4922
+ "privacy": "private",
4923
+ "description": "Dispatches search-clear to reset the search input"
4863
4924
  },
4864
4925
  {
4865
4926
  "kind": "method",
@@ -4872,7 +4933,8 @@
4872
4933
  "text": "KeyboardEvent"
4873
4934
  }
4874
4935
  }
4875
- ]
4936
+ ],
4937
+ "description": "Clears the search and blurs the input when Escape is pressed"
4876
4938
  }
4877
4939
  ],
4878
4940
  "events": [
@@ -4950,6 +5012,7 @@
4950
5012
  "type": {
4951
5013
  "text": "string"
4952
5014
  },
5015
+ "description": "Unique section identifier",
4953
5016
  "attribute": "id"
4954
5017
  },
4955
5018
  {
@@ -4958,6 +5021,7 @@
4958
5021
  "type": {
4959
5022
  "text": "string"
4960
5023
  },
5024
+ "description": "Display title for the section header",
4961
5025
  "attribute": "title"
4962
5026
  },
4963
5027
  {
@@ -4966,6 +5030,7 @@
4966
5030
  "type": {
4967
5031
  "text": "string"
4968
5032
  },
5033
+ "description": "Icon name for the section header slot",
4969
5034
  "attribute": "icon-name"
4970
5035
  },
4971
5036
  {
@@ -4974,6 +5039,7 @@
4974
5039
  "type": {
4975
5040
  "text": "boolean"
4976
5041
  },
5042
+ "description": "Whether the section is currently expanded",
4977
5043
  "attribute": "is-expanded"
4978
5044
  },
4979
5045
  {
@@ -4981,14 +5047,16 @@
4981
5047
  "name": "items",
4982
5048
  "type": {
4983
5049
  "text": "FilterItem[]"
4984
- }
5050
+ },
5051
+ "description": "Filter items to display as toggleable checkboxes"
4985
5052
  },
4986
5053
  {
4987
5054
  "kind": "field",
4988
5055
  "name": "selectedItems",
4989
5056
  "type": {
4990
5057
  "text": "Set<string>"
4991
- }
5058
+ },
5059
+ "description": "Set of currently selected item keys"
4992
5060
  },
4993
5061
  {
4994
5062
  "kind": "field",
@@ -4996,9 +5064,10 @@
4996
5064
  "type": {
4997
5065
  "text": "FilterType"
4998
5066
  },
5067
+ "description": "The type of filter this section controls",
4999
5068
  "attribute": "filter-type",
5000
- "expandedType": {
5001
- "text": "'nodeType' | 'platform' | 'project' | 'package'"
5069
+ "parsedType": {
5070
+ "text": "'platform' | 'project' | 'nodeType' | 'package'"
5002
5071
  }
5003
5072
  },
5004
5073
  {
@@ -5007,12 +5076,14 @@
5007
5076
  "type": {
5008
5077
  "text": "number"
5009
5078
  },
5079
+ "description": "Current canvas zoom level for color adjustments",
5010
5080
  "attribute": "zoom"
5011
5081
  },
5012
5082
  {
5013
5083
  "kind": "method",
5014
5084
  "name": "handleToggle",
5015
- "privacy": "private"
5085
+ "privacy": "private",
5086
+ "description": "Dispatches section-toggle event when header is clicked"
5016
5087
  },
5017
5088
  {
5018
5089
  "kind": "method",
@@ -5031,7 +5102,8 @@
5031
5102
  "text": "boolean"
5032
5103
  }
5033
5104
  }
5034
- ]
5105
+ ],
5106
+ "description": "Dispatches item-toggle event when a checkbox item is toggled"
5035
5107
  },
5036
5108
  {
5037
5109
  "kind": "method",
@@ -5044,7 +5116,8 @@
5044
5116
  "text": "FilterItem | null"
5045
5117
  }
5046
5118
  }
5047
- ]
5119
+ ],
5120
+ "description": "Dispatches preview-change event on item hover for filter preview"
5048
5121
  },
5049
5122
  {
5050
5123
  "kind": "method",
@@ -5069,7 +5142,8 @@
5069
5142
  "text": "string"
5070
5143
  }
5071
5144
  }
5072
- ]
5145
+ ],
5146
+ "description": "Renders the appropriate icon for a filter item based on filter type"
5073
5147
  },
5074
5148
  {
5075
5149
  "kind": "method",
@@ -5082,7 +5156,8 @@
5082
5156
  "text": "FilterItem"
5083
5157
  }
5084
5158
  }
5085
- ]
5159
+ ],
5160
+ "description": "Renders a single filter item as a toggleable button"
5086
5161
  }
5087
5162
  ],
5088
5163
  "events": [
@@ -5114,6 +5189,7 @@
5114
5189
  "type": {
5115
5190
  "text": "string"
5116
5191
  },
5192
+ "description": "Unique section identifier",
5117
5193
  "fieldName": "id"
5118
5194
  },
5119
5195
  {
@@ -5121,6 +5197,7 @@
5121
5197
  "type": {
5122
5198
  "text": "string"
5123
5199
  },
5200
+ "description": "Display title for the section header",
5124
5201
  "fieldName": "title"
5125
5202
  },
5126
5203
  {
@@ -5128,6 +5205,7 @@
5128
5205
  "type": {
5129
5206
  "text": "string"
5130
5207
  },
5208
+ "description": "Icon name for the section header slot",
5131
5209
  "fieldName": "iconName"
5132
5210
  },
5133
5211
  {
@@ -5135,6 +5213,7 @@
5135
5213
  "type": {
5136
5214
  "text": "boolean"
5137
5215
  },
5216
+ "description": "Whether the section is currently expanded",
5138
5217
  "fieldName": "isExpanded"
5139
5218
  },
5140
5219
  {
@@ -5142,9 +5221,10 @@
5142
5221
  "type": {
5143
5222
  "text": "FilterType"
5144
5223
  },
5224
+ "description": "The type of filter this section controls",
5145
5225
  "fieldName": "filterType",
5146
- "expandedType": {
5147
- "text": "'nodeType' | 'platform' | 'project' | 'package'"
5226
+ "parsedType": {
5227
+ "text": "'platform' | 'project' | 'nodeType' | 'package'"
5148
5228
  }
5149
5229
  },
5150
5230
  {
@@ -5152,6 +5232,7 @@
5152
5232
  "type": {
5153
5233
  "text": "number"
5154
5234
  },
5235
+ "description": "Current canvas zoom level for color adjustments",
5155
5236
  "fieldName": "zoom"
5156
5237
  }
5157
5238
  ],
@@ -5204,17 +5285,8 @@
5204
5285
  {
5205
5286
  "kind": "method",
5206
5287
  "name": "handleClearFilters",
5207
- "privacy": "private"
5208
- },
5209
- {
5210
- "kind": "method",
5211
- "name": "renderSearchIcon",
5212
- "privacy": "private"
5213
- },
5214
- {
5215
- "kind": "method",
5216
- "name": "renderClearIcon",
5217
- "privacy": "private"
5288
+ "privacy": "private",
5289
+ "description": "Handles the clear filters button click"
5218
5290
  }
5219
5291
  ],
5220
5292
  "events": [
@@ -5278,35 +5350,40 @@
5278
5350
  "name": "allNodes",
5279
5351
  "type": {
5280
5352
  "text": "GraphNode[]"
5281
- }
5353
+ },
5354
+ "description": "All nodes in the graph (unfiltered)"
5282
5355
  },
5283
5356
  {
5284
5357
  "kind": "field",
5285
5358
  "name": "allEdges",
5286
5359
  "type": {
5287
5360
  "text": "GraphEdge[]"
5288
- }
5361
+ },
5362
+ "description": "All edges in the graph (unfiltered)"
5289
5363
  },
5290
5364
  {
5291
5365
  "kind": "field",
5292
5366
  "name": "filteredNodes",
5293
5367
  "type": {
5294
5368
  "text": "GraphNode[]"
5295
- }
5369
+ },
5370
+ "description": "Nodes remaining after filter and search application"
5296
5371
  },
5297
5372
  {
5298
5373
  "kind": "field",
5299
5374
  "name": "filteredEdges",
5300
5375
  "type": {
5301
5376
  "text": "GraphEdge[]"
5302
- }
5377
+ },
5378
+ "description": "Edges remaining after filter and search application"
5303
5379
  },
5304
5380
  {
5305
5381
  "kind": "field",
5306
5382
  "name": "clusters",
5307
5383
  "type": {
5308
5384
  "text": "Cluster[] | undefined"
5309
- }
5385
+ },
5386
+ "description": "Available clusters from the layout engine"
5310
5387
  },
5311
5388
  {
5312
5389
  "kind": "field",
@@ -5342,7 +5419,8 @@
5342
5419
  "text": "string | null"
5343
5420
  }
5344
5421
  }
5345
- ]
5422
+ ],
5423
+ "description": "Finds an existing cluster or synthesizes one from matching nodes"
5346
5424
  },
5347
5425
  {
5348
5426
  "kind": "field",
@@ -5383,12 +5461,14 @@
5383
5461
  "text": "string"
5384
5462
  }
5385
5463
  }
5386
- ]
5464
+ ],
5465
+ "description": "Updates the global search query signal when the search bar value changes."
5387
5466
  },
5388
5467
  {
5389
5468
  "kind": "method",
5390
5469
  "name": "handleClearFilters",
5391
- "privacy": "private"
5470
+ "privacy": "private",
5471
+ "description": "Resets all filters and clears the search query"
5392
5472
  },
5393
5473
  {
5394
5474
  "kind": "method",
@@ -5413,7 +5493,8 @@
5413
5493
  "text": "boolean"
5414
5494
  }
5415
5495
  }
5416
- ]
5496
+ ],
5497
+ "description": "Toggles a single filter item on or off within its filter category"
5417
5498
  },
5418
5499
  {
5419
5500
  "kind": "method",
@@ -5426,12 +5507,14 @@
5426
5507
  "text": "PreviewFilter"
5427
5508
  }
5428
5509
  }
5429
- ]
5510
+ ],
5511
+ "description": "Updates the global preview filter signal to highlight matching nodes on the canvas."
5430
5512
  },
5431
5513
  {
5432
5514
  "kind": "method",
5433
5515
  "name": "handleToggleCollapse",
5434
- "privacy": "private"
5516
+ "privacy": "private",
5517
+ "description": "Toggles the sidebar between collapsed and expanded states"
5435
5518
  },
5436
5519
  {
5437
5520
  "kind": "method",
@@ -5444,7 +5527,8 @@
5444
5527
  "text": "SidebarSection"
5445
5528
  }
5446
5529
  }
5447
- ]
5530
+ ],
5531
+ "description": "Toggles a filter section between expanded and collapsed"
5448
5532
  },
5449
5533
  {
5450
5534
  "kind": "method",
@@ -5457,7 +5541,8 @@
5457
5541
  "text": "SidebarSection"
5458
5542
  }
5459
5543
  }
5460
- ]
5544
+ ],
5545
+ "description": "Expands the sidebar, clears selection, and scrolls to the given filter section"
5461
5546
  },
5462
5547
  {
5463
5548
  "kind": "method",
@@ -5470,7 +5555,8 @@
5470
5555
  "text": "ReturnType<typeof filters.get>"
5471
5556
  }
5472
5557
  }
5473
- ]
5558
+ ],
5559
+ "description": "Renders the collapsed sidebar icon bar with filter badges"
5474
5560
  },
5475
5561
  {
5476
5562
  "kind": "method",
@@ -5495,7 +5581,8 @@
5495
5581
  "text": "{\n activeDirectDeps: boolean;\n activeTransitiveDeps: boolean;\n activeDirectDependents: boolean;\n activeTransitiveDependents: boolean;\n }"
5496
5582
  }
5497
5583
  }
5498
- ]
5584
+ ],
5585
+ "description": "Renders the node details panel with dependency highlight toggles"
5499
5586
  },
5500
5587
  {
5501
5588
  "kind": "method",
@@ -5520,7 +5607,8 @@
5520
5607
  "text": "{\n activeDirectDeps: boolean;\n activeDirectDependents: boolean;\n }"
5521
5608
  }
5522
5609
  }
5523
- ]
5610
+ ],
5611
+ "description": "Renders the cluster details panel with dependency highlight toggles"
5524
5612
  },
5525
5613
  {
5526
5614
  "kind": "method",
@@ -5533,7 +5621,8 @@
5533
5621
  "text": "FilterViewOptions"
5534
5622
  }
5535
5623
  }
5536
- ]
5624
+ ],
5625
+ "description": "Renders the filter view with search bar, stats, and filter sections"
5537
5626
  },
5538
5627
  {
5539
5628
  "kind": "method",
@@ -5564,17 +5653,20 @@
5564
5653
  "text": "FilterItemsGroup"
5565
5654
  }
5566
5655
  }
5567
- ]
5656
+ ],
5657
+ "description": "Renders the product types, platforms, projects, and packages filter sections"
5568
5658
  },
5569
5659
  {
5570
5660
  "kind": "method",
5571
5661
  "name": "handleBackToFilters",
5572
- "privacy": "private"
5662
+ "privacy": "private",
5663
+ "description": "Clears both node and cluster selection to return to the filter view."
5573
5664
  },
5574
5665
  {
5575
5666
  "kind": "method",
5576
5667
  "name": "renderDetailsToolbar",
5577
- "privacy": "private"
5668
+ "privacy": "private",
5669
+ "description": "Renders the toolbar with back-to-filters breadcrumb and collapse button"
5578
5670
  },
5579
5671
  {
5580
5672
  "kind": "method",
@@ -5587,7 +5679,8 @@
5587
5679
  "text": "ExpandedContentOptions"
5588
5680
  }
5589
5681
  }
5590
- ]
5682
+ ],
5683
+ "description": "Renders expanded content: node details, cluster details, or filter view"
5591
5684
  }
5592
5685
  ],
5593
5686
  "superclass": {
@@ -5646,63 +5739,72 @@
5646
5739
  "name": "displayNodes",
5647
5740
  "type": {
5648
5741
  "text": "GraphNode[]"
5649
- }
5742
+ },
5743
+ "description": "Nodes to render on the canvas (after search/filter/highlight processing)"
5650
5744
  },
5651
5745
  {
5652
5746
  "kind": "field",
5653
5747
  "name": "displayEdges",
5654
5748
  "type": {
5655
5749
  "text": "GraphEdge[]"
5656
- }
5750
+ },
5751
+ "description": "Edges to render on the canvas (after search/filter/highlight processing)"
5657
5752
  },
5658
5753
  {
5659
5754
  "kind": "field",
5660
5755
  "name": "filteredNodes",
5661
5756
  "type": {
5662
5757
  "text": "GraphNode[]"
5663
- }
5758
+ },
5759
+ "description": "Nodes remaining after filter application (for sidebar stats)"
5664
5760
  },
5665
5761
  {
5666
5762
  "kind": "field",
5667
5763
  "name": "filteredEdges",
5668
5764
  "type": {
5669
5765
  "text": "GraphEdge[]"
5670
- }
5766
+ },
5767
+ "description": "Edges remaining after filter application (for sidebar stats)"
5671
5768
  },
5672
5769
  {
5673
5770
  "kind": "field",
5674
5771
  "name": "allNodes",
5675
5772
  "type": {
5676
5773
  "text": "GraphNode[]"
5677
- }
5774
+ },
5775
+ "description": "All nodes in the graph (unfiltered, for sidebar filter computation)"
5678
5776
  },
5679
5777
  {
5680
5778
  "kind": "field",
5681
5779
  "name": "allEdges",
5682
5780
  "type": {
5683
5781
  "text": "GraphEdge[]"
5684
- }
5782
+ },
5783
+ "description": "All edges in the graph (unfiltered, for sidebar filter computation)"
5685
5784
  },
5686
5785
  {
5687
5786
  "kind": "field",
5688
5787
  "name": "clusters",
5689
5788
  "type": {
5690
5789
  "text": "Cluster[] | undefined"
5691
- }
5790
+ },
5791
+ "description": "Available clusters from the layout engine"
5692
5792
  },
5693
5793
  {
5694
5794
  "kind": "field",
5695
5795
  "name": "transitiveDeps",
5696
5796
  "type": {
5697
5797
  "text": "TransitiveResult"
5698
- }
5798
+ },
5799
+ "description": "Transitive dependency chain for the selected node"
5699
5800
  },
5700
5801
  {
5701
5802
  "kind": "field",
5702
5803
  "name": "transitiveDependents",
5703
5804
  "type": {
5704
5805
  "text": "TransitiveResult"
5705
- }
5806
+ },
5807
+ "description": "Transitive dependent chain for the selected node"
5706
5808
  },
5707
5809
  {
5708
5810
  "kind": "method",
@@ -5833,6 +5935,7 @@
5833
5935
  "type": {
5834
5936
  "text": "AppError | null"
5835
5937
  },
5938
+ "description": "The error to display in this toast",
5836
5939
  "default": "null"
5837
5940
  },
5838
5941
  {
@@ -5841,6 +5944,7 @@
5841
5944
  "type": {
5842
5945
  "text": "boolean"
5843
5946
  },
5947
+ "description": "Whether the toast is currently visible (triggers slide-in animation)",
5844
5948
  "default": "false",
5845
5949
  "attribute": "visible",
5846
5950
  "reflects": true
@@ -5853,7 +5957,8 @@
5853
5957
  "type": {
5854
5958
  "text": "void"
5855
5959
  }
5856
- }
5960
+ },
5961
+ "description": "Handles the dismiss event with slide-out animation"
5857
5962
  },
5858
5963
  {
5859
5964
  "kind": "method",
@@ -5863,7 +5968,8 @@
5863
5968
  "type": {
5864
5969
  "text": "void"
5865
5970
  }
5866
- }
5971
+ },
5972
+ "description": "Handles the action button click"
5867
5973
  }
5868
5974
  ],
5869
5975
  "events": [
@@ -5888,6 +5994,7 @@
5888
5994
  "type": {
5889
5995
  "text": "boolean"
5890
5996
  },
5997
+ "description": "Whether the toast is currently visible (triggers slide-in animation)",
5891
5998
  "default": "false",
5892
5999
  "fieldName": "visible"
5893
6000
  }
@@ -5922,7 +6029,7 @@
5922
6029
  },
5923
6030
  {
5924
6031
  "kind": "javascript-module",
5925
- "path": "src/ui/components/error-notification-container.ts",
6032
+ "path": "src/ui/components/toast-container.ts",
5926
6033
  "declarations": [
5927
6034
  {
5928
6035
  "kind": "class",
@@ -5945,7 +6052,8 @@
5945
6052
  "text": "CustomEvent<{ errorId: string }>"
5946
6053
  }
5947
6054
  }
5948
- ]
6055
+ ],
6056
+ "description": "Dismisses an error toast by forwarding the error ID to the error service."
5949
6057
  },
5950
6058
  {
5951
6059
  "kind": "method",
@@ -5963,12 +6071,13 @@
5963
6071
  "text": "CustomEvent<{ error: AppError }>"
5964
6072
  }
5965
6073
  }
5966
- ]
6074
+ ],
6075
+ "description": "Executes the action associated with an error toast (e.g. retry)."
5967
6076
  }
5968
6077
  ],
5969
6078
  "superclass": {
5970
6079
  "name": "SignalWatcherLitElement",
5971
- "module": "src/ui/components/error-notification-container.ts"
6080
+ "module": "src/ui/components/toast-container.ts"
5972
6081
  },
5973
6082
  "summary": "Error toast notification stack manager",
5974
6083
  "tagName": "xcode-graph-error-notification-container",
@@ -5981,7 +6090,7 @@
5981
6090
  "name": "GraphErrorNotificationContainer",
5982
6091
  "declaration": {
5983
6092
  "name": "GraphErrorNotificationContainer",
5984
- "module": "src/ui/components/error-notification-container.ts"
6093
+ "module": "src/ui/components/toast-container.ts"
5985
6094
  }
5986
6095
  },
5987
6096
  {
@@ -5989,104 +6098,306 @@
5989
6098
  "name": "xcode-graph-error-notification-container",
5990
6099
  "declaration": {
5991
6100
  "name": "GraphErrorNotificationContainer",
5992
- "module": "src/ui/components/error-notification-container.ts"
6101
+ "module": "src/ui/components/toast-container.ts"
5993
6102
  }
5994
6103
  }
5995
6104
  ]
5996
6105
  },
5997
6106
  {
5998
6107
  "kind": "javascript-module",
5999
- "path": "src/components/graph-app.ts",
6108
+ "path": "src/ui/components/file-upload.ts",
6000
6109
  "declarations": [
6001
6110
  {
6002
6111
  "kind": "class",
6003
- "description": "Root application component that orchestrates the entire graph visualization.\nAccepts graph data via `.nodes` and `.edges` properties, making it a\nself-contained web component that can be embedded in any host application.",
6004
- "name": "GraphApp",
6112
+ "description": "Overlay button for loading a Tuist graph JSON file via file picker or drag-and-drop.",
6113
+ "name": "GraphFileUpload",
6005
6114
  "members": [
6006
6115
  {
6007
6116
  "kind": "field",
6008
- "name": "nodes",
6009
- "type": {
6010
- "text": "GraphNode[]"
6011
- }
6012
- },
6013
- {
6014
- "kind": "field",
6015
- "name": "edges",
6016
- "type": {
6017
- "text": "GraphEdge[]"
6018
- }
6019
- },
6020
- {
6021
- "kind": "field",
6022
- "name": "layoutOptions",
6023
- "type": {
6024
- "text": "LayoutOptions | undefined"
6025
- }
6026
- },
6027
- {
6028
- "kind": "field",
6029
- "name": "graphDataService",
6117
+ "name": "isDragOver",
6030
6118
  "type": {
6031
- "text": "GraphDataService | null"
6119
+ "text": "boolean"
6032
6120
  },
6033
6121
  "privacy": "private",
6034
- "default": "null"
6122
+ "default": "false"
6035
6123
  },
6036
6124
  {
6037
- "kind": "field",
6038
- "name": "dataFingerprint",
6039
- "type": {
6040
- "text": "string | null"
6041
- },
6125
+ "kind": "method",
6126
+ "name": "handleClick",
6042
6127
  "privacy": "private",
6043
- "default": "null"
6128
+ "description": "Opens the hidden file input dialog"
6044
6129
  },
6045
6130
  {
6046
- "kind": "field",
6047
- "name": "filtersInitialized",
6048
- "type": {
6049
- "text": "boolean"
6050
- },
6131
+ "kind": "method",
6132
+ "name": "handleKeyDown",
6051
6133
  "privacy": "private",
6052
- "default": "false"
6134
+ "parameters": [
6135
+ {
6136
+ "name": "e",
6137
+ "type": {
6138
+ "text": "KeyboardEvent"
6139
+ }
6140
+ }
6141
+ ],
6142
+ "description": "Handles keyboard activation (Enter/Space) to open file dialog"
6053
6143
  },
6054
6144
  {
6055
6145
  "kind": "method",
6056
- "name": "refreshGraphData",
6146
+ "name": "handleFileChange",
6057
6147
  "privacy": "private",
6058
6148
  "parameters": [
6059
6149
  {
6060
- "name": "nodes",
6150
+ "name": "e",
6061
6151
  "type": {
6062
- "text": "GraphNode[]"
6152
+ "text": "Event"
6063
6153
  }
6064
- },
6154
+ }
6155
+ ],
6156
+ "description": "Handles file input change and reads the selected file"
6157
+ },
6158
+ {
6159
+ "kind": "method",
6160
+ "name": "handleDragOver",
6161
+ "privacy": "private",
6162
+ "parameters": [
6065
6163
  {
6066
- "name": "edges",
6164
+ "name": "e",
6067
6165
  "type": {
6068
- "text": "GraphEdge[]"
6166
+ "text": "DragEvent"
6069
6167
  }
6070
6168
  }
6071
- ]
6169
+ ],
6170
+ "description": "Handles dragover to enable drop and show visual feedback"
6072
6171
  },
6073
6172
  {
6074
6173
  "kind": "method",
6075
- "name": "seedData",
6174
+ "name": "handleDragLeave",
6076
6175
  "privacy": "private",
6077
- "return": {
6078
- "type": {
6079
- "text": "void"
6176
+ "description": "Handles dragleave to reset visual feedback"
6177
+ },
6178
+ {
6179
+ "kind": "method",
6180
+ "name": "handleDrop",
6181
+ "privacy": "private",
6182
+ "parameters": [
6183
+ {
6184
+ "name": "e",
6185
+ "type": {
6186
+ "text": "DragEvent"
6187
+ }
6188
+ }
6189
+ ],
6190
+ "description": "Handles file drop and reads the dropped file"
6191
+ },
6192
+ {
6193
+ "kind": "method",
6194
+ "name": "readFile",
6195
+ "privacy": "private",
6196
+ "parameters": [
6197
+ {
6198
+ "name": "file",
6199
+ "type": {
6200
+ "text": "File"
6201
+ }
6202
+ }
6203
+ ],
6204
+ "description": "Reads a file as text, parses JSON, and dispatches graph-file-loaded event"
6205
+ }
6206
+ ],
6207
+ "events": [
6208
+ {
6209
+ "name": "graph-file-loaded",
6210
+ "type": {
6211
+ "text": "CustomEvent"
6212
+ },
6213
+ "description": "Dispatched when a valid JSON file is loaded (detail: { raw: unknown })"
6214
+ }
6215
+ ],
6216
+ "superclass": {
6217
+ "name": "LitElement",
6218
+ "package": "lit"
6219
+ },
6220
+ "summary": "File upload button with drag-and-drop support",
6221
+ "tagName": "xcode-graph-file-upload",
6222
+ "customElement": true
6223
+ }
6224
+ ],
6225
+ "exports": [
6226
+ {
6227
+ "kind": "js",
6228
+ "name": "GraphFileUpload",
6229
+ "declaration": {
6230
+ "name": "GraphFileUpload",
6231
+ "module": "src/ui/components/file-upload.ts"
6232
+ }
6233
+ },
6234
+ {
6235
+ "kind": "custom-element-definition",
6236
+ "name": "xcode-graph-file-upload",
6237
+ "declaration": {
6238
+ "name": "GraphFileUpload",
6239
+ "module": "src/ui/components/file-upload.ts"
6240
+ }
6241
+ }
6242
+ ]
6243
+ },
6244
+ {
6245
+ "kind": "javascript-module",
6246
+ "path": "src/components/xcode-graph.ts",
6247
+ "declarations": [
6248
+ {
6249
+ "kind": "class",
6250
+ "description": "Root application component that orchestrates the entire graph visualization.\nAccepts graph data via `.nodes` and `.edges` properties, making it a\nself-contained web component that can be embedded in any host application.",
6251
+ "name": "GraphApp",
6252
+ "members": [
6253
+ {
6254
+ "kind": "field",
6255
+ "name": "nodes",
6256
+ "type": {
6257
+ "text": "GraphNode[]"
6258
+ },
6259
+ "description": "Graph nodes to visualize"
6260
+ },
6261
+ {
6262
+ "kind": "field",
6263
+ "name": "edges",
6264
+ "type": {
6265
+ "text": "GraphEdge[]"
6266
+ },
6267
+ "description": "Graph edges connecting the nodes"
6268
+ },
6269
+ {
6270
+ "kind": "field",
6271
+ "name": "layoutOptions",
6272
+ "type": {
6273
+ "text": "LayoutOptions | undefined"
6274
+ },
6275
+ "description": "Optional layout configuration for ELK hierarchical layout"
6276
+ },
6277
+ {
6278
+ "kind": "field",
6279
+ "name": "showUpload",
6280
+ "type": {
6281
+ "text": "boolean"
6282
+ },
6283
+ "description": "Whether to show the file upload overlay for loading graph JSON",
6284
+ "attribute": "show-upload"
6285
+ },
6286
+ {
6287
+ "kind": "field",
6288
+ "name": "colorScheme",
6289
+ "type": {
6290
+ "text": "ColorScheme"
6291
+ },
6292
+ "description": "Color scheme preference. Set to `'light'` or `'dark'` to force a mode,\nor `'auto'` (default) to follow the user's system preference.",
6293
+ "attribute": "color-scheme",
6294
+ "parsedType": {
6295
+ "text": "'light' | 'dark' | 'auto'"
6296
+ }
6297
+ },
6298
+ {
6299
+ "kind": "field",
6300
+ "name": "graphDataService",
6301
+ "type": {
6302
+ "text": "GraphDataService | null"
6303
+ },
6304
+ "privacy": "private",
6305
+ "default": "null"
6306
+ },
6307
+ {
6308
+ "kind": "field",
6309
+ "name": "dataFingerprint",
6310
+ "type": {
6311
+ "text": "string | null"
6312
+ },
6313
+ "privacy": "private",
6314
+ "default": "null"
6315
+ },
6316
+ {
6317
+ "kind": "field",
6318
+ "name": "filtersInitialized",
6319
+ "type": {
6320
+ "text": "boolean"
6321
+ },
6322
+ "privacy": "private",
6323
+ "default": "false"
6324
+ },
6325
+ {
6326
+ "kind": "field",
6327
+ "name": "mediaQueryCleanup",
6328
+ "type": {
6329
+ "text": "(() => void) | null"
6330
+ },
6331
+ "privacy": "private",
6332
+ "default": "null"
6333
+ },
6334
+ {
6335
+ "kind": "method",
6336
+ "name": "refreshGraphData",
6337
+ "privacy": "private",
6338
+ "parameters": [
6339
+ {
6340
+ "name": "nodes",
6341
+ "type": {
6342
+ "text": "GraphNode[]"
6343
+ }
6344
+ },
6345
+ {
6346
+ "name": "edges",
6347
+ "type": {
6348
+ "text": "GraphEdge[]"
6349
+ }
6350
+ }
6351
+ ],
6352
+ "description": "Recomputes graph services and circular dependency analysis when data changes."
6353
+ },
6354
+ {
6355
+ "kind": "method",
6356
+ "name": "applyColorScheme",
6357
+ "privacy": "private",
6358
+ "return": {
6359
+ "type": {
6360
+ "text": "void"
6080
6361
  }
6081
6362
  }
6082
6363
  },
6364
+ {
6365
+ "kind": "method",
6366
+ "name": "setThemeAttribute",
6367
+ "privacy": "private",
6368
+ "return": {
6369
+ "type": {
6370
+ "text": "void"
6371
+ }
6372
+ },
6373
+ "parameters": [
6374
+ {
6375
+ "name": "theme",
6376
+ "type": {
6377
+ "text": "'light' | 'dark'"
6378
+ }
6379
+ }
6380
+ ],
6381
+ "description": "Sets the `data-theme` attribute on the host element to the given theme."
6382
+ },
6383
+ {
6384
+ "kind": "method",
6385
+ "name": "seedData",
6386
+ "privacy": "private",
6387
+ "return": {
6388
+ "type": {
6389
+ "text": "void"
6390
+ }
6391
+ },
6392
+ "description": "Pushes current nodes and edges into global signals and refreshes the graph data service."
6393
+ },
6083
6394
  {
6084
6395
  "kind": "method",
6085
6396
  "name": "loadRawGraph",
6086
6397
  "privacy": "public",
6087
6398
  "return": {
6088
6399
  "type": {
6089
- "text": "void"
6400
+ "text": "Promise<void>"
6090
6401
  }
6091
6402
  },
6092
6403
  "parameters": [
@@ -6097,12 +6408,47 @@
6097
6408
  }
6098
6409
  }
6099
6410
  ],
6100
- "description": "Load raw Tuist graph JSON (the output of `tuist graph --format json`).\nTransforms it into GraphData and sets nodes/edges automatically.\nShows user-facing warnings/errors via ErrorService if the transform has issues."
6411
+ "description": "Load raw Tuist graph JSON (the output of `tuist graph --format json`).\nTransforms it into GraphData and sets nodes/edges automatically.\nShows user-facing warnings/errors via ErrorService if the transform has issues.\n\nThe transform service (and its Zod dependency) is lazy-loaded on first\ncall so the main bundle stays small until validation is actually needed."
6412
+ },
6413
+ {
6414
+ "kind": "method",
6415
+ "name": "handleFileLoaded",
6416
+ "privacy": "private",
6417
+ "parameters": [
6418
+ {
6419
+ "name": "e",
6420
+ "type": {
6421
+ "text": "CustomEvent<{ raw: unknown }>"
6422
+ }
6423
+ }
6424
+ ],
6425
+ "description": "Handles the `graph-file-loaded` event from the file upload component."
6426
+ }
6427
+ ],
6428
+ "attributes": [
6429
+ {
6430
+ "name": "show-upload",
6431
+ "type": {
6432
+ "text": "boolean"
6433
+ },
6434
+ "description": "Whether to show the file upload overlay for loading graph JSON",
6435
+ "fieldName": "showUpload"
6436
+ },
6437
+ {
6438
+ "name": "color-scheme",
6439
+ "type": {
6440
+ "text": "ColorScheme"
6441
+ },
6442
+ "description": "Color scheme preference. Set to `'light'` or `'dark'` to force a mode,\nor `'auto'` (default) to follow the user's system preference.",
6443
+ "fieldName": "colorScheme",
6444
+ "parsedType": {
6445
+ "text": "'light' | 'dark' | 'auto'"
6446
+ }
6101
6447
  }
6102
6448
  ],
6103
6449
  "superclass": {
6104
6450
  "name": "SignalWatcherLitElement",
6105
- "module": "src/components/graph-app.ts"
6451
+ "module": "src/components/xcode-graph.ts"
6106
6452
  },
6107
6453
  "summary": "Embeddable graph visualization entry point",
6108
6454
  "tagName": "xcode-graph",
@@ -6115,7 +6461,7 @@
6115
6461
  "name": "GraphApp",
6116
6462
  "declaration": {
6117
6463
  "name": "GraphApp",
6118
- "module": "src/components/graph-app.ts"
6464
+ "module": "src/components/xcode-graph.ts"
6119
6465
  }
6120
6466
  },
6121
6467
  {
@@ -6123,7 +6469,30 @@
6123
6469
  "name": "xcode-graph",
6124
6470
  "declaration": {
6125
6471
  "name": "GraphApp",
6126
- "module": "src/components/graph-app.ts"
6472
+ "module": "src/components/xcode-graph.ts"
6473
+ }
6474
+ }
6475
+ ]
6476
+ },
6477
+ {
6478
+ "kind": "javascript-module",
6479
+ "path": "src/components/index.ts",
6480
+ "declarations": [],
6481
+ "exports": [
6482
+ {
6483
+ "kind": "js",
6484
+ "name": "ColorScheme",
6485
+ "declaration": {
6486
+ "name": "ColorScheme",
6487
+ "module": "./xcode-graph"
6488
+ }
6489
+ },
6490
+ {
6491
+ "kind": "js",
6492
+ "name": "GraphApp",
6493
+ "declaration": {
6494
+ "name": "GraphApp",
6495
+ "module": "./xcode-graph"
6127
6496
  }
6128
6497
  }
6129
6498
  ]
@@ -6220,7 +6589,8 @@
6220
6589
  {
6221
6590
  "kind": "method",
6222
6591
  "name": "resolveEdgeProps",
6223
- "privacy": "private"
6592
+ "privacy": "private",
6593
+ "description": "Resolves edge properties by merging declared values with defaults."
6224
6594
  }
6225
6595
  ],
6226
6596
  "attributes": [
@@ -6329,7 +6699,7 @@
6329
6699
  "declarations": [
6330
6700
  {
6331
6701
  "kind": "class",
6332
- "description": "",
6702
+ "description": "Generates and renders a cached parallax starfield on a canvas.",
6333
6703
  "name": "Starfield",
6334
6704
  "members": [
6335
6705
  {
@@ -6515,7 +6885,7 @@
6515
6885
  "privacy": "private",
6516
6886
  "return": {
6517
6887
  "type": {
6518
- "text": "Star"
6888
+ "text": ""
6519
6889
  }
6520
6890
  },
6521
6891
  "parameters": [
@@ -6523,33 +6893,39 @@
6523
6893
  "name": "isBright",
6524
6894
  "type": {
6525
6895
  "text": "boolean"
6526
- }
6896
+ },
6897
+ "description": "Whether the star should use bright star parameters."
6527
6898
  },
6528
6899
  {
6529
6900
  "name": "spanX",
6530
6901
  "type": {
6531
6902
  "text": "number"
6532
- }
6903
+ },
6904
+ "description": "Horizontal spawn region width."
6533
6905
  },
6534
6906
  {
6535
6907
  "name": "spanY",
6536
6908
  "type": {
6537
6909
  "text": "number"
6538
- }
6910
+ },
6911
+ "description": "Vertical spawn region height."
6539
6912
  },
6540
6913
  {
6541
6914
  "name": "offsetX",
6542
6915
  "type": {
6543
6916
  "text": "number"
6544
- }
6917
+ },
6918
+ "description": "Horizontal offset to center the spawn region."
6545
6919
  },
6546
6920
  {
6547
6921
  "name": "offsetY",
6548
6922
  "type": {
6549
6923
  "text": "number"
6550
- }
6924
+ },
6925
+ "description": "Vertical offset to center the spawn region."
6551
6926
  }
6552
- ]
6927
+ ],
6928
+ "description": "Creates a single star with randomized position, size, opacity, and color."
6553
6929
  },
6554
6930
  {
6555
6931
  "kind": "method",
@@ -6565,15 +6941,18 @@
6565
6941
  "name": "panX",
6566
6942
  "type": {
6567
6943
  "text": "number"
6568
- }
6944
+ },
6945
+ "description": "Rounded camera X offset in world space."
6569
6946
  },
6570
6947
  {
6571
6948
  "name": "panY",
6572
6949
  "type": {
6573
6950
  "text": "number"
6574
- }
6951
+ },
6952
+ "description": "Rounded camera Y offset in world space."
6575
6953
  }
6576
- ]
6954
+ ],
6955
+ "description": "Renders all stars with parallax offsets to an OffscreenCanvas cache."
6577
6956
  },
6578
6957
  {
6579
6958
  "kind": "field",
@@ -6648,32 +7027,127 @@
6648
7027
  },
6649
7028
  {
6650
7029
  "kind": "javascript-module",
6651
- "path": "src/ui/components/action-button.ts",
6652
- "declarations": [
7030
+ "path": "src/graph/components/index.ts",
7031
+ "declarations": [],
7032
+ "exports": [
6653
7033
  {
6654
- "kind": "class",
6655
- "description": "A semantic action button with color variants and active states.\nUsed for action buttons in panels and forms.",
6656
- "name": "GraphActionButton",
6657
- "slots": [
6658
- {
6659
- "description": "Optional icon to display before the text",
6660
- "name": "icon"
6661
- },
6662
- {
6663
- "description": "Button text content",
6664
- "name": ""
6665
- }
6666
- ],
6667
- "members": [
6668
- {
6669
- "kind": "field",
6670
- "name": "shadowRootOptions",
6671
- "type": {
6672
- "text": "ShadowRootInit"
6673
- },
6674
- "static": true,
6675
- "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, }"
6676
- },
7034
+ "kind": "js",
7035
+ "name": "*",
7036
+ "declaration": {
7037
+ "name": "*",
7038
+ "module": "src/graph/components/canvas"
7039
+ }
7040
+ },
7041
+ {
7042
+ "kind": "js",
7043
+ "name": "GraphCanvas",
7044
+ "declaration": {
7045
+ "name": "GraphCanvas",
7046
+ "module": "./graph-canvas"
7047
+ }
7048
+ },
7049
+ {
7050
+ "kind": "js",
7051
+ "name": "GraphEdge",
7052
+ "declaration": {
7053
+ "name": "GraphEdge",
7054
+ "module": "./graph-edge"
7055
+ }
7056
+ },
7057
+ {
7058
+ "kind": "js",
7059
+ "name": "GraphHiddenDom",
7060
+ "declaration": {
7061
+ "name": "GraphHiddenDom",
7062
+ "module": "./graph-hidden-dom"
7063
+ }
7064
+ },
7065
+ {
7066
+ "kind": "js",
7067
+ "name": "GraphBackground",
7068
+ "declaration": {
7069
+ "name": "GraphBackground",
7070
+ "module": "./graph-overlays"
7071
+ }
7072
+ },
7073
+ {
7074
+ "kind": "js",
7075
+ "name": "GraphControls",
7076
+ "declaration": {
7077
+ "name": "GraphControls",
7078
+ "module": "./graph-overlays"
7079
+ }
7080
+ },
7081
+ {
7082
+ "kind": "js",
7083
+ "name": "GraphEmptyStateOverlay",
7084
+ "declaration": {
7085
+ "name": "GraphEmptyStateOverlay",
7086
+ "module": "./graph-overlays"
7087
+ }
7088
+ },
7089
+ {
7090
+ "kind": "js",
7091
+ "name": "GraphInstructions",
7092
+ "declaration": {
7093
+ "name": "GraphInstructions",
7094
+ "module": "./graph-overlays"
7095
+ }
7096
+ },
7097
+ {
7098
+ "kind": "js",
7099
+ "name": "Star",
7100
+ "declaration": {
7101
+ "name": "Star",
7102
+ "module": "./starfield"
7103
+ }
7104
+ },
7105
+ {
7106
+ "kind": "js",
7107
+ "name": "StarfieldOptions",
7108
+ "declaration": {
7109
+ "name": "StarfieldOptions",
7110
+ "module": "./starfield"
7111
+ }
7112
+ },
7113
+ {
7114
+ "kind": "js",
7115
+ "name": "Starfield",
7116
+ "declaration": {
7117
+ "name": "Starfield",
7118
+ "module": "./starfield"
7119
+ }
7120
+ }
7121
+ ]
7122
+ },
7123
+ {
7124
+ "kind": "javascript-module",
7125
+ "path": "src/ui/components/action-button.ts",
7126
+ "declarations": [
7127
+ {
7128
+ "kind": "class",
7129
+ "description": "A semantic action button with color variants and active states.\nUsed for action buttons in panels and forms.",
7130
+ "name": "GraphActionButton",
7131
+ "slots": [
7132
+ {
7133
+ "description": "Optional icon to display before the text",
7134
+ "name": "icon"
7135
+ },
7136
+ {
7137
+ "description": "Button text content",
7138
+ "name": ""
7139
+ }
7140
+ ],
7141
+ "members": [
7142
+ {
7143
+ "kind": "field",
7144
+ "name": "shadowRootOptions",
7145
+ "type": {
7146
+ "text": "ShadowRootInit"
7147
+ },
7148
+ "static": true,
7149
+ "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, }"
7150
+ },
6677
7151
  {
6678
7152
  "kind": "field",
6679
7153
  "name": "variant",
@@ -6683,8 +7157,8 @@
6683
7157
  "description": "Button color variant",
6684
7158
  "default": "'neutral'",
6685
7159
  "attribute": "variant",
6686
- "expandedType": {
6687
- "text": "'primary' | 'success' | 'warning' | 'neutral'"
7160
+ "parsedType": {
7161
+ "text": "'neutral' | 'primary' | 'success' | 'warning'"
6688
7162
  }
6689
7163
  },
6690
7164
  {
@@ -6727,8 +7201,8 @@
6727
7201
  "description": "Button color variant",
6728
7202
  "default": "'neutral'",
6729
7203
  "fieldName": "variant",
6730
- "expandedType": {
6731
- "text": "'primary' | 'success' | 'warning' | 'neutral'"
7204
+ "parsedType": {
7205
+ "text": "'neutral' | 'primary' | 'success' | 'warning'"
6732
7206
  }
6733
7207
  },
6734
7208
  {
@@ -6823,8 +7297,8 @@
6823
7297
  "description": "Alert variant (determines color scheme)",
6824
7298
  "default": "'info'",
6825
7299
  "attribute": "variant",
6826
- "expandedType": {
6827
- "text": "'warning' | 'error' | 'info' | 'success'"
7300
+ "parsedType": {
7301
+ "text": "'success' | 'warning' | 'error' | 'info'"
6828
7302
  }
6829
7303
  },
6830
7304
  {
@@ -6869,7 +7343,8 @@
6869
7343
  {
6870
7344
  "kind": "method",
6871
7345
  "name": "handleDismiss",
6872
- "privacy": "private"
7346
+ "privacy": "private",
7347
+ "description": "Handles the dismiss event and hides the banner"
6873
7348
  }
6874
7349
  ],
6875
7350
  "events": [
@@ -6890,8 +7365,8 @@
6890
7365
  "description": "Alert variant (determines color scheme)",
6891
7366
  "default": "'info'",
6892
7367
  "fieldName": "variant",
6893
- "expandedType": {
6894
- "text": "'warning' | 'error' | 'info' | 'success'"
7368
+ "parsedType": {
7369
+ "text": "'success' | 'warning' | 'error' | 'info'"
6895
7370
  }
6896
7371
  },
6897
7372
  {
@@ -6956,7 +7431,7 @@
6956
7431
  "declarations": [
6957
7432
  {
6958
7433
  "kind": "class",
6959
- "description": "Displays package/project badge with sharp styling and monospace typography.\nWrapper around graph-badge with container styling.",
7434
+ "description": "Displays package/project badge with accent styling and monospace typography.\nWrapper around graph-badge with container styling.",
6960
7435
  "name": "GraphClusterTypeBadge",
6961
7436
  "members": [
6962
7437
  {
@@ -7048,6 +7523,7 @@
7048
7523
  "type": {
7049
7524
  "text": "string[][]"
7050
7525
  },
7526
+ "description": "Array of circular dependency cycles, each cycle is a list of node names",
7051
7527
  "default": "[]"
7052
7528
  },
7053
7529
  {
@@ -7071,30 +7547,14 @@
7071
7547
  {
7072
7548
  "kind": "method",
7073
7549
  "name": "handleToggleExpand",
7074
- "privacy": "private"
7550
+ "privacy": "private",
7551
+ "description": "Toggles the expanded details view"
7075
7552
  },
7076
7553
  {
7077
7554
  "kind": "method",
7078
7555
  "name": "handleDismiss",
7079
- "privacy": "private"
7080
- },
7081
- {
7082
- "kind": "method",
7083
- "name": "formatCycle",
7084
7556
  "privacy": "private",
7085
- "return": {
7086
- "type": {
7087
- "text": "string"
7088
- }
7089
- },
7090
- "parameters": [
7091
- {
7092
- "name": "cycle",
7093
- "type": {
7094
- "text": "string[]"
7095
- }
7096
- }
7097
- ]
7557
+ "description": "Handles the dismiss event and hides the warning"
7098
7558
  }
7099
7559
  ],
7100
7560
  "events": [
@@ -7152,8 +7612,8 @@
7152
7612
  "description": "The icon name to render",
7153
7613
  "default": "'product-types'",
7154
7614
  "attribute": "name",
7155
- "expandedType": {
7156
- "text": "'product-types' | 'platforms' | 'projects' | 'packages'"
7615
+ "parsedType": {
7616
+ "text": "'platforms' | 'projects' | 'packages' | 'product-types'"
7157
7617
  }
7158
7618
  },
7159
7619
  {
@@ -7169,22 +7629,26 @@
7169
7629
  {
7170
7630
  "kind": "method",
7171
7631
  "name": "renderProductTypes",
7172
- "privacy": "private"
7632
+ "privacy": "private",
7633
+ "description": "Renders the product types grid icon"
7173
7634
  },
7174
7635
  {
7175
7636
  "kind": "method",
7176
7637
  "name": "renderPlatforms",
7177
- "privacy": "private"
7638
+ "privacy": "private",
7639
+ "description": "Renders the platforms grid icon"
7178
7640
  },
7179
7641
  {
7180
7642
  "kind": "method",
7181
7643
  "name": "renderProjects",
7182
- "privacy": "private"
7644
+ "privacy": "private",
7645
+ "description": "Renders the projects folder icon"
7183
7646
  },
7184
7647
  {
7185
7648
  "kind": "method",
7186
7649
  "name": "renderPackages",
7187
- "privacy": "private"
7650
+ "privacy": "private",
7651
+ "description": "Renders the packages box icon"
7188
7652
  }
7189
7653
  ],
7190
7654
  "attributes": [
@@ -7196,8 +7660,8 @@
7196
7660
  "description": "The icon name to render",
7197
7661
  "default": "'product-types'",
7198
7662
  "fieldName": "name",
7199
- "expandedType": {
7200
- "text": "'product-types' | 'platforms' | 'projects' | 'packages'"
7663
+ "parsedType": {
7664
+ "text": "'platforms' | 'projects' | 'packages' | 'product-types'"
7201
7665
  }
7202
7666
  },
7203
7667
  {
@@ -7238,31 +7702,403 @@
7238
7702
  }
7239
7703
  ]
7240
7704
  },
7705
+ {
7706
+ "kind": "javascript-module",
7707
+ "path": "src/ui/components/index.ts",
7708
+ "declarations": [],
7709
+ "exports": [
7710
+ {
7711
+ "kind": "js",
7712
+ "name": "ActionButtonVariant",
7713
+ "declaration": {
7714
+ "name": "ActionButtonVariant",
7715
+ "module": "./action-button"
7716
+ }
7717
+ },
7718
+ {
7719
+ "kind": "js",
7720
+ "name": "GraphActionButton",
7721
+ "declaration": {
7722
+ "name": "GraphActionButton",
7723
+ "module": "./action-button"
7724
+ }
7725
+ },
7726
+ {
7727
+ "kind": "js",
7728
+ "name": "AlertBannerVariant",
7729
+ "declaration": {
7730
+ "name": "AlertBannerVariant",
7731
+ "module": "./alert-banner"
7732
+ }
7733
+ },
7734
+ {
7735
+ "kind": "js",
7736
+ "name": "GraphAlertBanner",
7737
+ "declaration": {
7738
+ "name": "GraphAlertBanner",
7739
+ "module": "./alert-banner"
7740
+ }
7741
+ },
7742
+ {
7743
+ "kind": "js",
7744
+ "name": "BadgeSize",
7745
+ "declaration": {
7746
+ "name": "BadgeSize",
7747
+ "module": "./badge"
7748
+ }
7749
+ },
7750
+ {
7751
+ "kind": "js",
7752
+ "name": "BadgeVariant",
7753
+ "declaration": {
7754
+ "name": "BadgeVariant",
7755
+ "module": "./badge"
7756
+ }
7757
+ },
7758
+ {
7759
+ "kind": "js",
7760
+ "name": "GraphBadge",
7761
+ "declaration": {
7762
+ "name": "GraphBadge",
7763
+ "module": "./badge"
7764
+ }
7765
+ },
7766
+ {
7767
+ "kind": "js",
7768
+ "name": "GraphBuildSettings",
7769
+ "declaration": {
7770
+ "name": "GraphBuildSettings",
7771
+ "module": "./build-settings"
7772
+ }
7773
+ },
7774
+ {
7775
+ "kind": "js",
7776
+ "name": "GraphClearFiltersButton",
7777
+ "declaration": {
7778
+ "name": "GraphClearFiltersButton",
7779
+ "module": "./clear-filters-button"
7780
+ }
7781
+ },
7782
+ {
7783
+ "kind": "js",
7784
+ "name": "GraphClusterComposition",
7785
+ "declaration": {
7786
+ "name": "GraphClusterComposition",
7787
+ "module": "./cluster-composition"
7788
+ }
7789
+ },
7790
+ {
7791
+ "kind": "js",
7792
+ "name": "GraphClusterDetailsPanel",
7793
+ "declaration": {
7794
+ "name": "GraphClusterDetailsPanel",
7795
+ "module": "./cluster-details-panel"
7796
+ }
7797
+ },
7798
+ {
7799
+ "kind": "js",
7800
+ "name": "GraphClusterHeader",
7801
+ "declaration": {
7802
+ "name": "GraphClusterHeader",
7803
+ "module": "./cluster-header"
7804
+ }
7805
+ },
7806
+ {
7807
+ "kind": "js",
7808
+ "name": "GraphClusterStats",
7809
+ "declaration": {
7810
+ "name": "GraphClusterStats",
7811
+ "module": "./cluster-stats"
7812
+ }
7813
+ },
7814
+ {
7815
+ "kind": "js",
7816
+ "name": "GraphClusterTargetsList",
7817
+ "declaration": {
7818
+ "name": "GraphClusterTargetsList",
7819
+ "module": "./cluster-targets-list"
7820
+ }
7821
+ },
7822
+ {
7823
+ "kind": "js",
7824
+ "name": "GraphClusterTypeBadge",
7825
+ "declaration": {
7826
+ "name": "GraphClusterTypeBadge",
7827
+ "module": "./cluster-type-badge"
7828
+ }
7829
+ },
7830
+ {
7831
+ "kind": "js",
7832
+ "name": "GraphCycleWarning",
7833
+ "declaration": {
7834
+ "name": "GraphCycleWarning",
7835
+ "module": "./cycle-warning"
7836
+ }
7837
+ },
7838
+ {
7839
+ "kind": "js",
7840
+ "name": "GraphDeploymentTargets",
7841
+ "declaration": {
7842
+ "name": "GraphDeploymentTargets",
7843
+ "module": "./deployment-targets"
7844
+ }
7845
+ },
7846
+ {
7847
+ "kind": "js",
7848
+ "name": "GraphEmptyState",
7849
+ "declaration": {
7850
+ "name": "GraphEmptyState",
7851
+ "module": "./empty-state"
7852
+ }
7853
+ },
7854
+ {
7855
+ "kind": "js",
7856
+ "name": "GraphErrorToast",
7857
+ "declaration": {
7858
+ "name": "GraphErrorToast",
7859
+ "module": "./error-toast"
7860
+ }
7861
+ },
7862
+ {
7863
+ "kind": "js",
7864
+ "name": "GraphFileUpload",
7865
+ "declaration": {
7866
+ "name": "GraphFileUpload",
7867
+ "module": "./file-upload"
7868
+ }
7869
+ },
7870
+ {
7871
+ "kind": "js",
7872
+ "name": "FilterIconName",
7873
+ "declaration": {
7874
+ "name": "FilterIconName",
7875
+ "module": "./filter-icon"
7876
+ }
7877
+ },
7878
+ {
7879
+ "kind": "js",
7880
+ "name": "GraphFilterIcon",
7881
+ "declaration": {
7882
+ "name": "GraphFilterIcon",
7883
+ "module": "./filter-icon"
7884
+ }
7885
+ },
7886
+ {
7887
+ "kind": "js",
7888
+ "name": "FilterItem",
7889
+ "declaration": {
7890
+ "name": "FilterItem",
7891
+ "module": "./filter-section"
7892
+ }
7893
+ },
7894
+ {
7895
+ "kind": "js",
7896
+ "name": "FilterType",
7897
+ "declaration": {
7898
+ "name": "FilterType",
7899
+ "module": "./filter-section"
7900
+ }
7901
+ },
7902
+ {
7903
+ "kind": "js",
7904
+ "name": "GraphFilterSection",
7905
+ "declaration": {
7906
+ "name": "GraphFilterSection",
7907
+ "module": "./filter-section"
7908
+ }
7909
+ },
7910
+ {
7911
+ "kind": "js",
7912
+ "name": "IconButtonColor",
7913
+ "declaration": {
7914
+ "name": "IconButtonColor",
7915
+ "module": "./icon-button"
7916
+ }
7917
+ },
7918
+ {
7919
+ "kind": "js",
7920
+ "name": "IconButtonSize",
7921
+ "declaration": {
7922
+ "name": "IconButtonSize",
7923
+ "module": "./icon-button"
7924
+ }
7925
+ },
7926
+ {
7927
+ "kind": "js",
7928
+ "name": "IconButtonVariant",
7929
+ "declaration": {
7930
+ "name": "IconButtonVariant",
7931
+ "module": "./icon-button"
7932
+ }
7933
+ },
7934
+ {
7935
+ "kind": "js",
7936
+ "name": "GraphIconButton",
7937
+ "declaration": {
7938
+ "name": "GraphIconButton",
7939
+ "module": "./icon-button"
7940
+ }
7941
+ },
7942
+ {
7943
+ "kind": "js",
7944
+ "name": "GraphInfoRow",
7945
+ "declaration": {
7946
+ "name": "GraphInfoRow",
7947
+ "module": "./info-row"
7948
+ }
7949
+ },
7950
+ {
7951
+ "kind": "js",
7952
+ "name": "GraphListItemRow",
7953
+ "declaration": {
7954
+ "name": "GraphListItemRow",
7955
+ "module": "./list-item-row"
7956
+ }
7957
+ },
7958
+ {
7959
+ "kind": "js",
7960
+ "name": "GraphMetricsSection",
7961
+ "declaration": {
7962
+ "name": "GraphMetricsSection",
7963
+ "module": "./metrics-section"
7964
+ }
7965
+ },
7966
+ {
7967
+ "kind": "js",
7968
+ "name": "GraphNodeDetailsPanel",
7969
+ "declaration": {
7970
+ "name": "GraphNodeDetailsPanel",
7971
+ "module": "./node-details-panel"
7972
+ }
7973
+ },
7974
+ {
7975
+ "kind": "js",
7976
+ "name": "GraphNodeHeader",
7977
+ "declaration": {
7978
+ "name": "GraphNodeHeader",
7979
+ "module": "./node-header"
7980
+ }
7981
+ },
7982
+ {
7983
+ "kind": "js",
7984
+ "name": "GraphNodeInfo",
7985
+ "declaration": {
7986
+ "name": "GraphNodeInfo",
7987
+ "module": "./node-info"
7988
+ }
7989
+ },
7990
+ {
7991
+ "kind": "js",
7992
+ "name": "GraphNodeList",
7993
+ "declaration": {
7994
+ "name": "GraphNodeList",
7995
+ "module": "./node-list"
7996
+ }
7997
+ },
7998
+ {
7999
+ "kind": "js",
8000
+ "name": "NodeListEventsBase",
8001
+ "declaration": {
8002
+ "name": "NodeListEventsBase",
8003
+ "module": "./node-list-base"
8004
+ }
8005
+ },
8006
+ {
8007
+ "kind": "js",
8008
+ "name": "GraphPanelHeader",
8009
+ "declaration": {
8010
+ "name": "GraphPanelHeader",
8011
+ "module": "./panel-header"
8012
+ }
8013
+ },
8014
+ {
8015
+ "kind": "js",
8016
+ "name": "GraphRightSidebar",
8017
+ "declaration": {
8018
+ "name": "GraphRightSidebar",
8019
+ "module": "./right-sidebar"
8020
+ }
8021
+ },
8022
+ {
8023
+ "kind": "js",
8024
+ "name": "GraphCollapsedSidebar",
8025
+ "declaration": {
8026
+ "name": "GraphCollapsedSidebar",
8027
+ "module": "./right-sidebar-collapsed"
8028
+ }
8029
+ },
8030
+ {
8031
+ "kind": "js",
8032
+ "name": "GraphRightSidebarHeader",
8033
+ "declaration": {
8034
+ "name": "GraphRightSidebarHeader",
8035
+ "module": "./right-sidebar-header"
8036
+ }
8037
+ },
8038
+ {
8039
+ "kind": "js",
8040
+ "name": "GraphSearchBar",
8041
+ "declaration": {
8042
+ "name": "GraphSearchBar",
8043
+ "module": "./search-bar"
8044
+ }
8045
+ },
8046
+ {
8047
+ "kind": "js",
8048
+ "name": "GraphSectionHeader",
8049
+ "declaration": {
8050
+ "name": "GraphSectionHeader",
8051
+ "module": "./section-header"
8052
+ }
8053
+ },
8054
+ {
8055
+ "kind": "js",
8056
+ "name": "GraphSidebarCollapseIcon",
8057
+ "declaration": {
8058
+ "name": "GraphSidebarCollapseIcon",
8059
+ "module": "./sidebar-collapse-icon"
8060
+ }
8061
+ },
8062
+ {
8063
+ "kind": "js",
8064
+ "name": "GraphStatsCard",
8065
+ "declaration": {
8066
+ "name": "GraphStatsCard",
8067
+ "module": "./stats-card"
8068
+ }
8069
+ },
8070
+ {
8071
+ "kind": "js",
8072
+ "name": "GraphTagBadge",
8073
+ "declaration": {
8074
+ "name": "GraphTagBadge",
8075
+ "module": "./tag-badge"
8076
+ }
8077
+ },
8078
+ {
8079
+ "kind": "js",
8080
+ "name": "GraphErrorNotificationContainer",
8081
+ "declaration": {
8082
+ "name": "GraphErrorNotificationContainer",
8083
+ "module": "./toast-container"
8084
+ }
8085
+ }
8086
+ ]
8087
+ },
7241
8088
  {
7242
8089
  "kind": "javascript-module",
7243
8090
  "path": "src/ui/layout/header.ts",
7244
8091
  "declarations": [
7245
8092
  {
7246
8093
  "kind": "class",
7247
- "description": "Top header component with bold identity. Features scan line effect,\nglowing logo, and monospace typography.",
8094
+ "description": "Top header component with logo and breadcrumb navigation.",
7248
8095
  "name": "GraphHeader",
7249
- "members": [
7250
- {
7251
- "kind": "method",
7252
- "name": "renderSelectorIcon",
7253
- "privacy": "private"
7254
- },
7255
- {
7256
- "kind": "method",
7257
- "name": "renderSlashIcon",
7258
- "privacy": "private"
7259
- }
7260
- ],
8096
+ "members": [],
7261
8097
  "superclass": {
7262
8098
  "name": "LitElement",
7263
8099
  "package": "lit"
7264
8100
  },
7265
- "summary": "Mission control themed header bar",
8101
+ "summary": "Application header bar",
7266
8102
  "tagName": "xcode-graph-header",
7267
8103
  "customElement": true
7268
8104
  }
@@ -7349,7 +8185,7 @@
7349
8185
  "declarations": [
7350
8186
  {
7351
8187
  "kind": "class",
7352
- "description": "Left sidebar navigation with staggered entrance animations.\nFeatures noise texture, accent borders, and monospace typography.",
8188
+ "description": "Left sidebar navigation with tab items.",
7353
8189
  "name": "GraphSidebar",
7354
8190
  "members": [
7355
8191
  {
@@ -7358,6 +8194,7 @@
7358
8194
  "type": {
7359
8195
  "text": "boolean"
7360
8196
  },
8197
+ "description": "Whether the sidebar is currently collapsed",
7361
8198
  "attribute": "collapsed",
7362
8199
  "reflects": true
7363
8200
  },
@@ -7367,6 +8204,7 @@
7367
8204
  "type": {
7368
8205
  "text": "boolean"
7369
8206
  },
8207
+ "description": "Whether the sidebar should start collapsed on first render",
7370
8208
  "attribute": "defaultCollapsed"
7371
8209
  },
7372
8210
  {
@@ -7398,12 +8236,14 @@
7398
8236
  "text": "ActiveTabType"
7399
8237
  }
7400
8238
  }
7401
- ]
8239
+ ],
8240
+ "description": "Dispatches a tab-change event when a navigation item is clicked"
7402
8241
  },
7403
8242
  {
7404
8243
  "kind": "method",
7405
8244
  "name": "toggleCollapse",
7406
- "privacy": "private"
8245
+ "privacy": "private",
8246
+ "description": "Toggles the sidebar between collapsed and expanded states"
7407
8247
  }
7408
8248
  ],
7409
8249
  "events": [
@@ -7421,6 +8261,7 @@
7421
8261
  "type": {
7422
8262
  "text": "boolean"
7423
8263
  },
8264
+ "description": "Whether the sidebar is currently collapsed",
7424
8265
  "fieldName": "collapsed"
7425
8266
  },
7426
8267
  {
@@ -7428,6 +8269,7 @@
7428
8269
  "type": {
7429
8270
  "text": "boolean"
7430
8271
  },
8272
+ "description": "Whether the sidebar should start collapsed on first render",
7431
8273
  "fieldName": "defaultCollapsed"
7432
8274
  },
7433
8275
  {
@@ -7474,6 +8316,45 @@
7474
8316
  }
7475
8317
  }
7476
8318
  ]
8319
+ },
8320
+ {
8321
+ "kind": "javascript-module",
8322
+ "path": "src/ui/layout/index.ts",
8323
+ "declarations": [],
8324
+ "exports": [
8325
+ {
8326
+ "kind": "js",
8327
+ "name": "GraphTab",
8328
+ "declaration": {
8329
+ "name": "GraphTab",
8330
+ "module": "./graph-tab"
8331
+ }
8332
+ },
8333
+ {
8334
+ "kind": "js",
8335
+ "name": "GraphHeader",
8336
+ "declaration": {
8337
+ "name": "GraphHeader",
8338
+ "module": "./header"
8339
+ }
8340
+ },
8341
+ {
8342
+ "kind": "js",
8343
+ "name": "GraphPlaceholderTab",
8344
+ "declaration": {
8345
+ "name": "GraphPlaceholderTab",
8346
+ "module": "./placeholder-tab"
8347
+ }
8348
+ },
8349
+ {
8350
+ "kind": "js",
8351
+ "name": "GraphSidebar",
8352
+ "declaration": {
8353
+ "name": "GraphSidebar",
8354
+ "module": "./sidebar"
8355
+ }
8356
+ }
8357
+ ]
7477
8358
  }
7478
8359
  ]
7479
8360
  }