feat: stacked pages

This commit is contained in:
saberzero1 2026-03-13 19:46:11 +01:00
parent 2694c3306d
commit bce404d415
No known key found for this signature in database
6 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,55 @@
---
title: StackedPages
tags:
- plugin/component
---
Andy Matuschak-style stacked pages (sliding panes). Clicking internal links opens pages side by side in a horizontal stack, allowing you to trace your path through your notes. Each pane shows a full page and can be individually scrolled or closed.
> [!note]
> For information on how to add, remove or configure plugins, see the [[configuration#Plugins|Configuration]] page.
## Usage
Once enabled, clicking any internal link on a page opens the linked page as a new pane to the right instead of navigating away. The URL updates with a `#stacked=slug1,slug2` hash encoding your current stack, so you can share or bookmark a specific trail of pages.
Stacked pages are disabled on mobile by default (below 800px) since horizontal panning doesn't work well on small screens. On mobile, links navigate normally.
### Interactions
- **Click a link**: Opens the target page in a new pane to the right. If the maximum number of panes is reached, the leftmost pane is removed.
- **Close a pane**: Click the × button in the pane header to remove it from the stack.
- **Collapsed spines**: When panes overflow the viewport, earlier panes collapse to a thin vertical spine showing the page title. Click a spine to bring that pane back into focus.
- **Browser back/forward**: The full stack state is stored in the URL hash and integrated with browser history, so back/forward navigation works as expected.
## Configuration
This plugin accepts the following configuration options:
- `paneWidth`: Width of each stacked pane in pixels. Defaults to `640`.
- `maxPanes`: Maximum number of panes visible at once. Defaults to `5`.
- `enableOnMobile`: Whether to enable stacked pages on mobile devices. Defaults to `false`.
- `mobileBreakpoint`: Viewport width (in pixels) below which the mobile behavior applies. Matches the Quartz mobile breakpoint. Defaults to `800`.
- `showSpines`: Whether to show collapsed spine headers when panes overflow. Defaults to `true`.
- `animateTransitions`: Whether to animate pane open/close transitions. Defaults to `true`.
### Default options
```yaml title="quartz.config.yaml"
- source: github:quartz-community/stacked-pages
enabled: true
options:
paneWidth: 640
maxPanes: 5
enableOnMobile: false
mobileBreakpoint: 800
showSpines: true
animateTransitions: true
```
## API
- Category: Component
- Function name: `ExternalPlugin.StackedPages()`.
- Source: [`quartz-community/stacked-pages`](https://github.com/quartz-community/stacked-pages)
- Install: `npx quartz plugin add github:quartz-community/stacked-pages`

View File

@ -237,6 +237,8 @@ plugins:
position: body position: body
priority: 100 priority: 100
display: all display: all
- source: github:quartz-community/stacked-pages
enabled: true
layout: layout:
groups: groups:
toolbar: toolbar:

View File

@ -103,6 +103,8 @@ plugins:
enabled: false enabled: false
- source: github:quartz-community/encrypted-pages - source: github:quartz-community/encrypted-pages
enabled: false enabled: false
- source: github:quartz-community/stacked-pages
enabled: false
- source: github:quartz-community/alias-redirects - source: github:quartz-community/alias-redirects
enabled: true enabled: true
- source: github:quartz-community/content-index - source: github:quartz-community/content-index

View File

@ -103,6 +103,8 @@ plugins:
enabled: false enabled: false
- source: github:quartz-community/encrypted-pages - source: github:quartz-community/encrypted-pages
enabled: true enabled: true
- source: github:quartz-community/stacked-pages
enabled: false
- source: github:quartz-community/alias-redirects - source: github:quartz-community/alias-redirects
enabled: true enabled: true
- source: github:quartz-community/content-index - source: github:quartz-community/content-index

View File

@ -113,6 +113,8 @@ plugins:
enabled: false enabled: false
- source: github:quartz-community/encrypted-pages - source: github:quartz-community/encrypted-pages
enabled: true enabled: true
- source: github:quartz-community/stacked-pages
enabled: false
- source: github:quartz-community/alias-redirects - source: github:quartz-community/alias-redirects
enabled: true enabled: true
- source: github:quartz-community/content-index - source: github:quartz-community/content-index

View File

@ -113,6 +113,8 @@ plugins:
enabled: false enabled: false
- source: github:quartz-community/encrypted-pages - source: github:quartz-community/encrypted-pages
enabled: true enabled: true
- source: github:quartz-community/stacked-pages
enabled: false
- source: github:quartz-community/alias-redirects - source: github:quartz-community/alias-redirects
enabled: true enabled: true
- source: github:quartz-community/content-index - source: github:quartz-community/content-index