No description
Find a file
saberzero1 68ce4d4c8a
chore: commit dist/ and remove prepare script
Pre-built output is now committed to the repository so that
Quartz can skip the build step during plugin installation.
The prepare script is removed to prevent redundant builds
when installing from npm/git.
2026-03-14 21:58:53 +01:00
.github/workflows Initial commit 2026-02-07 04:05:30 +01:00
dist chore: commit dist/ and remove prepare script 2026-03-14 21:58:53 +01:00
src feat: add render event listener for in-place DOM re-initialization 2026-03-12 19:45:40 +01:00
test fix: resolve ESLint and formatting issues for CI compliance 2026-03-09 03:47:43 +01:00
.eslintrc.json fix: resolve CI failures by fixing lint config and test setup 2026-02-09 12:58:48 +01:00
.gitignore chore: commit dist/ and remove prepare script 2026-03-14 21:58:53 +01:00
.prettierrc Initial commit 2026-02-07 04:05:30 +01:00
CHANGELOG.md Initial commit 2026-02-07 04:05:30 +01:00
LICENSE Initial commit 2026-02-07 04:05:30 +01:00
package-lock.json chore: commit dist/ and remove prepare script 2026-03-14 21:58:53 +01:00
package.json chore: commit dist/ and remove prepare script 2026-03-14 21:58:53 +01:00
README.md docs: update README for v5 unified config system 2026-02-25 16:07:11 +01:00
tsconfig.json Migrate types to use @quartz-community/types exports 2026-02-13 13:18:34 +01:00
tsup.config.ts fix: compile SCSS via sass instead of raw text to prevent lightningcss errors 2026-02-26 16:44:51 +01:00
vitest.config.ts fix: resolve CI failures by fixing lint config and test setup 2026-02-09 12:58:48 +01:00

@quartz-community/graph

The Graph View component for Quartz - visualize your digital garden as an interactive network graph.

Features

  • 🕸️ Interactive Network Graph - Visualize connections between your pages
  • 🎨 Local & Global Views - See connections to current page or explore the entire graph
  • Smooth Animations - Built with D3 force simulation and PixiJS rendering
  • 🏷️ Tag Support - Visualize tags as nodes in the graph
  • 🖱️ Interactive Controls - Drag, zoom, and pan around the graph
  • 💾 Visited Tracking - Highlights pages you've already visited
  • ⌨️ Keyboard Shortcuts - Press Ctrl/Cmd + G to toggle the global graph

Installation

npx quartz plugin add github:quartz-community/graph

Usage

plugins:
  - source: github:quartz-community/graph
    enabled: true
    layout:
      position: right
      priority: 10

For advanced use cases, you can override in TypeScript:

import * as ExternalPlugin from "./.quartz/plugins";

ExternalPlugin.Graph({
  localGraph: {
    drag: true,
    zoom: true,
    depth: 1,
  },
  globalGraph: {
    drag: true,
    zoom: true,
    depth: -1,
  },
});

Configuration Options

interface D3Config {
  /** Enable node dragging */
  drag: boolean;
  /** Enable zooming */
  zoom: boolean;
  /** Depth of connections to show (-1 for all) */
  depth: number;
  /** Graph scale factor */
  scale: number;
  /** Force repelling strength */
  repelForce: number;
  /** Center force strength */
  centerForce: number;
  /** Distance between linked nodes */
  linkDistance: number;
  /** Label font size */
  fontSize: number;
  /** Opacity multiplier */
  opacityScale: number;
  /** Tags to exclude */
  removeTags: string[];
  /** Show tags as nodes */
  showTags: boolean;
  /** Dim non-hovered nodes on hover */
  focusOnHover?: boolean;
  /** Enable radial layout */
  enableRadial?: boolean;
}

interface GraphOptions {
  localGraph?: Partial<D3Config>; // Local page graph config
  globalGraph?: Partial<D3Config>; // Global graph config
}

Default Behavior

Local Graph

By default, the local graph:

  • Shows 1 level of connections (direct links only)
  • Dragging enabled
  • Zoom enabled
  • Tags shown as nodes
  • 250px height
  • Displays on the right side of pages

Global Graph

By default, the global graph:

  • Shows all connections (depth: -1)
  • Opens in fullscreen modal when clicking the graph icon
  • Keyboard shortcut: Ctrl/Cmd + G
  • Focus on hover enabled (dims non-connected nodes)
  • Radial layout enabled
  • Click outside or press Escape to close

How It Works

The Graph component fetches connection data from /static/contentIndex.json (generated by the ContentIndex emitter) and renders it using:

  • D3 for physics simulation (force-directed layout)
  • PixiJS for high-performance WebGL rendering

External libraries are loaded from CDN when the graph is first rendered.

[!info] Graph View requires the ContentIndex emitter plugin to be present in your Quartz configuration.

Development

This is a first-party Quartz community plugin. It serves as both:

  1. A production-ready Graph View component
  2. A reference implementation for building Quartz community plugins

To build locally:

npm install
npm run build

The prepare script automatically builds during installation.

Documentation

See the Quartz documentation for more information.

License

MIT