#302
gdtest_details_shortcode
OK
INIT
Collapsible details extension with types, icons, accordion, nesting
Collapsible details shortcode showcase exercising the {{< details >}} shortcode in seven user-guide pages: basic usage (expand/collapse, open-by-default), callout types (note, warning, tip, danger), Lucide icons (custom and type-default), accordion groups (single-open behavior, multiple independent groups), nesting (2โ3 levels, mixed types), rich content (code blocks, lists, tables, blockquotes), and combinations (typed accordion, icon+type+open, nested accordion).
Build Mode
○ No great-docs.yml
This package has no pre-supplied config.
It tests the full great-docs init → great-docs build
pipeline from scratch, relying entirely on auto-detection of the package
layout, docstring style, and exports.
Dimensions
A1 B1 C4 D2 E6 F1 G1 H7
A1Flat layoutlayout
B1Explicit __all__exports
C4Mixed class+funcobjects
D2Googledocstrings
E6No directivesdirectives
F1Auto-discoveruser_guide
G1README.mdlanding
H7No extrasextras
Source Files
gdtest_details_shortcode/
__init__.py
"""Collapsible details extension demo package."""
__version__ = "1.0.0"
__all__ = ["render", "transform"]
def render(template: str) -> str:
"""Render a template string.
Parameters
----------
template
The template to render.
Returns
-------
str
Rendered output.
"""
return template
def transform(data: list) -> list:
"""Transform a data list.
Parameters
----------
data
Input data.
Returns
-------
list
Transformed data.
"""
return datauser_guide/
01-basic-usage.qmd
---
title: Basic Usage
---
The `::: {.details}` fenced div creates enhanced collapsible
sections with smooth animation and accessible markup.
## Simple Collapsible
A basic collapsible section with a title:
::: {.details summary="Click to expand"}
This content is hidden by default. Click the summary bar above
to reveal it.
You can include **bold**, *italic*, and `code` formatting.
:::
## Default Title
Omitting the summary gives a default label:
::: {.details}
Content with the default summary text.
:::
## Open by Default
Add the `.open` class to start expanded:
::: {.details .open summary="Already expanded"}
This section is visible when the page loads. The reader can
still click the summary bar to collapse it.
:::
## Multiple Sections
Several collapsible sections in sequence:
::: {.details summary="Section One"}
Content for the first section.
:::
::: {.details summary="Section Two"}
Content for the second section.
:::
::: {.details summary="Section Three"}
Content for the third section.
:::02-callout-types.qmd
---
title: Callout Types
---
The `type` attribute styles the details section like a
Quarto callout โ with matching colors and a default icon.
## Note
A note-styled collapsible section (`type="note"`):
::: {.details summary="Additional Information" type="note"}
This uses the note color scheme (blue) and automatically
includes the info icon.
Notes are good for supplementary information that most
readers can skip.
:::
## Warning
A warning-styled section (`type="warning"`):
::: {.details summary="Potential Issues" type="warning"}
This uses the warning color scheme (amber) with the
triangle-alert icon.
Use warnings for gotchas, common mistakes, or things
that could go wrong.
:::
## Tip
A tip-styled section (`type="tip"`):
::: {.details summary="Pro Tip" type="tip"}
This uses the tip color scheme (green) with the
lightbulb icon.
Tips are great for best practices and helpful advice.
:::
## Danger
A danger-styled section (`type="danger"`):
::: {.details summary="Breaking Changes" type="danger"}
This uses the danger color scheme (red) with the
circle-alert icon.
Use danger for destructive operations, breaking changes,
or irreversible actions.
:::
## All Types Together
Comparing all four types side by side:
::: {.details summary="Note type" type="note"}
Blue theme with info icon.
:::
::: {.details summary="Warning type" type="warning"}
Amber theme with alert icon.
:::
::: {.details summary="Tip type" type="tip"}
Green theme with lightbulb icon.
:::
::: {.details summary="Danger type" type="danger"}
Red theme with circle-alert icon.
:::03-icons.qmd
---
title: Icons
---
Add a Lucide icon before the summary text with the `icon`
attribute.
## Custom Icons
Any Lucide icon name works:
::: {.details summary="Configuration" icon="settings"}
Settings and configuration options for the project.
:::
::: {.details summary="Source Code" icon="code"}
View the implementation details.
:::
::: {.details summary="Download Options" icon="download"}
Available download formats and mirrors.
:::
::: {.details summary="Performance Notes" icon="zap"}
Benchmarks and optimization tips.
:::
::: {.details summary="Security Advisory" icon="shield"}
Important security information.
:::
## Icon with Type
When a `type` is set, the default icon for that type is used
automatically. You can override it with a custom icon:
::: {.details summary="Default note icon" type="note"}
Uses the default info icon for notes.
:::
::: {.details summary="Custom note icon" type="note" icon="book-open"}
Overrides the note icon with book-open.
:::
::: {.details summary="Custom warning icon" type="warning" icon="flame"}
Overrides the warning icon with flame.
:::04-accordion-groups.qmd
---
title: Accordion Groups
---
Use `group="name"` to create accordion behavior โ only one
section in the group can be open at a time.
## FAQ Accordion
Click one section and the others close automatically:
::: {.details summary="What is Great Docs?" group="faq"}
Great Docs is a documentation site generator for Python
packages. It builds beautiful, searchable API reference
sites from your docstrings.
:::
::: {.details summary="How do I install it?" group="faq"}
Install with pip:
```bash
pip install great-docs
```
Or with uv:
```bash
uv add great-docs
```
:::
::: {.details summary="What Python versions are supported?" group="faq"}
Great Docs supports Python 3.9 and later.
:::
::: {.details summary="Is it free?" group="faq"}
Yes! Great Docs is open source under the MIT license.
:::
## Multiple Groups
Different groups operate independently. Sections in the
"install" group don't affect the "config" group.
**Installation options:**
::: {.details summary="pip" group="install"}
```bash
pip install great-docs
```
:::
::: {.details summary="conda" group="install"}
```bash
conda install great-docs
```
:::
::: {.details summary="uv" group="install"}
```bash
uv add great-docs
```
:::
**Configuration files:**
::: {.details summary="great-docs.yml" group="config"}
The main configuration file for your documentation site.
:::
::: {.details summary="pyproject.toml" group="config"}
Package metadata is read from pyproject.toml automatically.
:::
::: {.details summary="_quarto.yml" group="config"}
Quarto configuration is generated automatically by Great Docs.
:::05-nesting.qmd
---
title: Nesting
---
Details sections can be nested inside each other for
hierarchical content. Use more colons for nested fences.
## Two Levels Deep
:::: {.details summary="Outer Section"}
This is the outer content.
::: {.details summary="Inner Section"}
This is nested inside the outer section.
:::
More outer content after the nested section.
::::
## Nested with Types
:::: {.details summary="Main Topic" type="note"}
An overview of the main topic.
::: {.details summary="Important caveat" type="warning"}
Watch out for this edge case when using the feature.
:::
::: {.details summary="Helpful hint" type="tip"}
Here is a useful tip related to this topic.
:::
::::
## Three Levels Deep
::::: {.details summary="Level 1"}
First level of nesting.
:::: {.details summary="Level 2"}
Second level of nesting.
::: {.details summary="Level 3"}
Third level โ the deepest.
:::
::::
:::::06-rich-content.qmd
---
title: Rich Content
---
The body of a details section supports full Markdown.
## Code Blocks
::: {.details summary="Python Example" icon="code"}
```python
import great_docs
site = great_docs.build(
package="my-package",
theme="sky",
)
site.serve()
```
:::
::: {.details summary="Shell Commands" icon="terminal"}
```bash
great-docs init my-project
cd my-project
great-docs build
great-docs serve
```
:::
## Lists
::: {.details summary="Feature List"}
Key features of the project:
- Automatic API reference generation
- Dark mode support
- Gradient theme presets
- Version badge system
- Keyboard navigation
:::
::: {.details summary="Numbered Steps"}
1. Install the package
2. Run `great-docs init`
3. Edit `great-docs.yml`
4. Run `great-docs build`
5. Deploy to GitHub Pages
:::
## Tables
::: {.details summary="Comparison Table" icon="table"}
| Feature | Free | Pro |
|---------|------|-----|
| API Reference | Yes | Yes |
| Dark Mode | Yes | Yes |
| Custom Themes | No | Yes |
| Priority Support | No | Yes |
:::
## Blockquotes
::: {.details summary="Notable Quotes"}
> Documentation is a love letter that you write to your
> future self.
>
> โ Damian Conway
:::
## Mixed Content
::: {.details summary="Full Example" type="tip" icon="book-open"}
Here is a complete example combining multiple elements:
**Step 1:** Install the package:
```bash
pip install great-docs
```
**Step 2:** Create the configuration:
| Setting | Value |
|---------|-------|
| theme | "sky" |
| parser | "numpy" |
**Step 3:** Build and verify:
```bash
great-docs build
great-docs serve
```
> The site should be available at `http://localhost:8080`.
:::07-combinations.qmd
---
title: Combinations
---
Combining multiple options together for real-world use cases.
## Typed Accordion
An accordion group where each section has a different type:
::: {.details .open summary="Overview" type="note" group="typed-acc"}
Start with a high-level overview of the feature.
This section is open by default.
:::
::: {.details summary="Known Issues" type="warning" group="typed-acc"}
Current limitations and known bugs.
:::
::: {.details summary="Best Practices" type="tip" group="typed-acc"}
Recommended approaches for common use cases.
:::
::: {.details summary="Migration Guide" type="danger" group="typed-acc"}
Breaking changes when upgrading from v1 to v2.
:::
## Icon + Type + Open
::: {.details .open summary="Release Notes" type="note" icon="rocket"}
Version 2.0 brings major improvements:
- Faster build times
- New gradient presets
- Improved dark mode
:::
## Accordion with Icons
::: {.details summary="Getting Started" icon="rocket" group="guide"}
Quick start instructions for new users.
:::
::: {.details summary="Configuration" icon="settings" group="guide"}
Detailed configuration reference.
:::
::: {.details summary="Deployment" icon="cloud" group="guide"}
Deploy your site to GitHub Pages, Netlify, or Vercel.
:::
::: {.details summary="Troubleshooting" icon="wrench" group="guide"}
Common issues and their solutions.
:::
## Gradient Theme
The `gradient` type uses your site's animated theme gradient on
the summary bar and a subdued tint in the body:
::: {.details summary="Animated Gradient" type="gradient"}
This details section uses the site's accent gradient colors
with a smooth shifting animation.
:::
::: {.details .open summary="Gradient (open)" type="gradient" icon="sparkles"}
A gradient section that starts expanded, with a custom icon.
- The summary bar has a vivid animated gradient
- The body has a subtle, subdued version
- Respects dark mode automatically
:::
::: {.details summary="Gradient Accordion A" type="gradient" group="grad-acc"}
First gradient accordion panel.
:::
::: {.details summary="Gradient Accordion B" type="gradient" group="grad-acc"}
Second gradient accordion panel.
:::
## Nested Accordion
An outer accordion with nested content:
:::: {.details summary="Frontend" group="stack"}
Frontend technologies used:
::: {.details summary="HTML/CSS"}
Quarto generates semantic HTML with SCSS theming.
:::
::: {.details summary="JavaScript"}
Custom JS for interactive features like accordion groups,
dark mode toggle, and keyboard navigation.
:::
::::
:::: {.details summary="Backend" group="stack"}
Backend technologies used:
::: {.details summary="Python"}
Core logic for parsing, rendering, and configuration.
:::
::: {.details summary="Lua"}
Quarto shortcode extensions for custom components.
:::
::::08-gradient-themes.qmd
---
title: Gradient Themes
---
Each gradient preset from the Great Docs theme system is
available as a details variant using `gradient="name"`.
## Sky
::: {.details summary="Sky gradient" gradient="sky"}
Soft sky blues โ inspired by clear horizons.
The animated gradient shifts smoothly through four
related hues, creating a gentle sense of motion.
:::
## Peach
::: {.details summary="Peach gradient" gradient="peach"}
Warm peach and blush tones โ friendly and inviting.
Works well for introductory or welcoming content.
:::
## Prism
::: {.details summary="Prism gradient" gradient="prism"}
Mint, sky, and lavender โ a multi-spectral blend.
Great for highlighting creative or multi-faceted topics.
:::
## Lilac
::: {.details summary="Lilac gradient" gradient="lilac"}
Lilac and pink โ soft and elegant.
A refined choice for design-related documentation.
:::
## Slate
::: {.details summary="Slate gradient" gradient="slate"}
Cool grays โ understated and professional.
Ideal for technical or enterprise documentation.
:::
## Honey
::: {.details summary="Honey gradient" gradient="honey"}
Warm cream and apricot โ rich and earthy.
A natural choice for warm, approachable content.
:::
## Dusk
::: {.details summary="Dusk gradient" gradient="dusk"}
Soft lavender-blue โ twilight serenity.
Evokes calm and focus, perfect for deep-dive content.
:::
## Mint
::: {.details summary="Mint gradient" gradient="mint"}
Pale aqua โ fresh and clean.
A crisp option for health, environment, or refreshing topics.
:::
## All Presets in Sequence
Every preset shown together for comparison:
::: {.details .open summary="Sky" gradient="sky"}
Light: soft sky blues. Dark: deep ocean.
:::
::: {.details .open summary="Peach" gradient="peach"}
Light: peach and blush. Dark: warm embers.
:::
::: {.details .open summary="Prism" gradient="prism"}
Light: mint, sky, lavender. Dark: deep jewel tones.
:::
::: {.details .open summary="Lilac" gradient="lilac"}
Light: lilac and pink. Dark: deep violet.
:::
::: {.details .open summary="Slate" gradient="slate"}
Light: cool grays. Dark: charcoal depths.
:::
::: {.details .open summary="Honey" gradient="honey"}
Light: warm cream. Dark: molten amber.
:::
::: {.details .open summary="Dusk" gradient="dusk"}
Light: soft lavender. Dark: midnight indigo.
:::
::: {.details .open summary="Mint" gradient="mint"}
Light: pale aqua. Dark: deep teal.
:::
## Gradient Preset Accordion
Same presets in accordion mode:
::: {.details summary="Sky" gradient="sky" group="presets"}
Soft sky blues with animated shimmer.
:::
::: {.details summary="Peach" gradient="peach" group="presets"}
Warm peach and blush tones.
:::
::: {.details summary="Prism" gradient="prism" group="presets"}
Multi-spectral mint, sky, and lavender.
:::
::: {.details summary="Lilac" gradient="lilac" group="presets"}
Elegant lilac and pink.
:::
::: {.details summary="Slate" gradient="slate" group="presets"}
Understated cool grays.
:::
::: {.details summary="Honey" gradient="honey" group="presets"}
Rich cream and apricot.
:::
::: {.details summary="Dusk" gradient="dusk" group="presets"}
Twilight lavender-blue.
:::
::: {.details summary="Mint" gradient="mint" group="presets"}
Fresh pale aqua.
:::
## Gleam Border Effect
Add `.gleam` to give the details frame a traveling light
that sweeps around the border:
::: {.details .gleam summary="Default gleam"}
A subtle light traces the border continuously.
:::
::: {.details .gleam summary="Gleam + Note" type="note"}
The gleam color matches the note type (blue).
:::
::: {.details .gleam summary="Gleam + Tip" type="tip"}
The gleam color matches the tip type (green).
:::
::: {.details .gleam summary="Gleam + Warning" type="warning"}
The gleam color matches the warning type (amber).
:::
::: {.details .gleam summary="Gleam + Danger" type="danger"}
The gleam color matches the danger type (red).
:::
## Gleam + Gradient Presets
Combining the gleam border with gradient backgrounds:
::: {.details .gleam summary="Sky gleam" gradient="sky"}
Animated sky gradient with a matching gleam border.
:::
::: {.details .gleam summary="Peach gleam" gradient="peach"}
Warm peach gradient with a matching gleam border.
:::
::: {.details .gleam summary="Prism gleam" gradient="prism"}
Multi-spectral gradient with a matching gleam border.
:::
::: {.details .gleam summary="Lilac gleam" gradient="lilac"}
Elegant lilac gradient with a matching gleam border.
:::
::: {.details .gleam summary="Dusk gleam" gradient="dusk"}
Twilight gradient with a matching gleam border.
:::
::: {.details .gleam summary="Mint gleam" gradient="mint"}
Fresh aqua gradient with a matching gleam border.
:::
## Gleam + Theme Gradient
::: {.details .gleam .open summary="Theme accent gleam" type="gradient"}
Uses the site accent colors for both the animated gradient
background and the gleam border effect.
:::README.md
# gdtest-details-shortcode
A synthetic test package that exercises the `::: {.details}`
fenced-div extension with every supported option: basic usage,
callout types, Lucide icons, accordion groups, nesting,
rich markdown content, and combined parameters.great-docs.yml generated
# Great Docs Configuration
# See https://posit-dev.github.io/great-docs/user-guide/configuration.html
#
# Every option appears below at its default value, with the values it accepts
# documented above it. Set only what you want to change: an option you leave
# out or commented out keeps its default.
# Module Name
# -----------
# Importable module name, when it differs from the project name
# (e.g. project 'py-yaml12' imports as 'yaml12').
# : null - (default) auto-detect
# : type(str) - the module name
# module: null
# Display Name
# ------------
# Display name for your package in the site navbar/title. Use this for a
# marketing/presentation name (e.g. 'My Package').
# : null - (default) the actual package name (e.g. 'my_package' or 'my-package')
# : type(str) - the name to display
# display_name: null
# Project Type
# ------------
# Primary ecosystem(s) the project belongs to. Controls which
# ecosystem-specific links and features are active by default.
# : python - (default) Python package; enables the PyPI link
# : go - Go CLI/library; disables the PyPI link by default
# : type(list) - mixed project, e.g. [python, go]
# project_type: python
# Docstring Parser
# ----------------
# The docstring format used in your package. Auto-detected during
# initialization, but can be overridden here.
# : numpy - (default) numpydoc style
# : google - Google style
# : sphinx - Sphinx/reStructuredText style
parser: numpy
# Dynamic Introspection
# ---------------------
# How the renderer inspects your package. Auto-detected during initialization
# based on what works for your package, but can be overridden here.
# : true - (default) runtime introspection; more accurate for complex packages
# : false - static analysis only; better for packages with cyclic aliases
dynamic: true
# Jupyter Kernel
# --------------
# Jupyter kernel to use for executing code cells in .qmd files.
# This is set at the project level so it applies to all pages, including
# auto-generated API reference pages. Can be overridden in individual .qmd
# file frontmatter if needed for special cases.
# jupyter: python3
# Exclusions
# ----------
# Items to exclude from auto-documentation (affects 'init' and 'scan')
# exclude:
# - InternalClass
# - helper_function
# exclude: []
# Names to force-include even if they match AUTO_EXCLUDE
# auto_include: []
# Bypass the built-in AUTO_EXCLUDE list entirely
# no_auto_exclude: false
# PyPI Link
# ---------
# : null - (default) link to pypi.org for Python projects, no link otherwise
# : true - auto-detect the package name and link to pypi.org
# : false - disable the PyPI link
# : type(str) - a custom package index URL
# pypi: https://artifactory.example.com/pkg
# pypi: null
# GitHub Integration
# ------------------
# GitHub repository URL override (e.g. "https://github.com/owner/repo").
# repo: null
# GitHub link style
# : widget - (default) a widget showing the stars count
# : icon - a simple icon
# github_style: widget
# Site URL
# --------
# Canonical address of the deployed docs site. Used for skills-page install
# commands, .well-known/ discovery, sitemaps, and subdirectory deployments;
# also sets website.site-url in _quarto.yml.
# site_url: null
# Source Link Configuration
# -------------------------
# source:
# enabled: true # Enable/disable source links (default: true)
# branch: null # Git branch/tag to link to (default: auto-detect)
# path: null # Custom source path for monorepos (default: auto-detect)
# placement: usage # Where to place the link: "usage" (default) or "title"
# Sidebar Filter
# --------------
# sidebar_filter:
# enabled: true # Enable/disable filter (default: true)
# min_items: 20 # Minimum items before showing filter (default: 20)
# CLI Documentation
# -----------------
# cli:
# enabled: false # Enable CLI documentation
# module: null # e.g. my_package.cli; auto-detected
# name: null # Click command object; auto-detected
# title: null # Optional index page + sidebar title
# desc: null # Optional intro paragraph atop the index page
# # sections: explicit grouping/ordering (omit = auto by code order). Example:
# # sections:
# # - title: "Project setup"
# # desc: "Create and configure a project."
# # contents: [init, config]
# # - title: Building
# # contents: [build, preview]
# sections: []
# Go CLI Documentation
# --------------------
# Builds the Go binary and extracts its command tree via --help. Works with any
# Go CLI (Cobra, urfave/cli, ...) whose subcommands support --help.
# go_cli:
# enabled: false # Enable Go CLI documentation (default: false)
# MCP Server Documentation
# ------------------------
# Auto-generates reference pages from an MCP server's tool/resource/prompt
# definitions.
# mcp:
# enabled: true # Enable MCP server documentation
# module: null # Importable module path (e.g. "sweet.mcp")
# server_var: null # Variable name of the Server instance; auto-detected when null
# name: null # Display name override; defaults to the server name
# # Manual tool categories (grouping on the index page). Example:
# # categories:
# # "Data tools": [load, save]
# categories: {}
# Dark Mode Toggle
# ----------------
# Enable/disable the dark mode toggle in navbar (default: true)
# dark_mode_toggle: true
# Author Information
# ------------------
# Author metadata for display in the landing page sidebar and page attribution
# authors:
# - name: "Your Name"
# email: you@example.com
# role: "Lead Developer"
# affiliation: Organization
# github: yourusername
# homepage: https://yoursite.com
# orcid: 0000-0002-1234-5678
# image: https://github.com/yourusername.png # Avatar (GitHub URL or local path)
# authors: []
# Funding
# -------
# Funding organization (copyright holder / funder).
# funding:
# name: "Posit Software, PBC"
# roles: ["Copyright holder", "funder"]
# ror: https://ror.org/03wc8by49
# funding: null
# Site Settings
# -------------
# Forwarded to _quarto.yml (format.html). `site` is a Quarto passthrough:
# its subtree is merged into `format.html`, so most valid `format.html` keys
# work here (e.g. `toc-title: "On this page"`). Reserved keys that great-docs
# manages itself and always overrides: `css` (copied and referenced by
# basename separately), `code-copy` (disabled โ great-docs supplies its own
# copy-code widget), `html-table-processing` (disabled โ required for GT
# table styling), and `mermaid` (fixed to the light theme โ dark mode is
# handled via a CSS container). The great-docs page/UI settings that used to
# live here (language, show_dates, date_format, show_author, show_security)
# are top-level keys below; setting them under `site` still works and is
# lifted automatically.
# site:
# theme: flatly # Quarto theme
# toc: true # Show table of contents
# toc-depth: 2 # TOC heading depth
# html-math-method: katex # HTML math renderer (e.g. mathjax)
# Page Metadata
# -------------
# Language for UI text (BCP 47 code, e.g., "en", "fr", "de", "ja", "zh-Hans")
# Translates navbar labels, widget text, tooltips, and accessibility labels
# language: en
# Show page timestamps in footer
# show_dates: false
# Date format (Python strftime)
# date_format: "%B %d, %Y"
# Show author attribution with dates
# show_author: true
# Show security policy page (from SECURITY.md)
# show_security: true
# Team Author
# -----------
# Optional catch-all author for auto-generated pages (reference, changelog, etc.)
# team_author:
# name: "Project Team"
# image: assets/team-avatar.png
# url: https://github.com/org/project
# team_author: null
# Changelog (GitHub Releases)
# ---------------------------
# Auto-generate a Changelog page from GitHub Releases.
# changelog:
# enabled: true # Enable/disable changelog (default: true)
# max_releases: 50 # Max releases to include (default: 50)
# Custom Sections
# ---------------
# Add custom page groups (examples, tutorials, blog, etc.) to the site.
# Each section gets a navbar link and a sidebar. An auto-generated
# card-based index page is created only when `index: true` is set;
# otherwise the navbar links directly to the first page in the section.
# If you provide your own index.qmd in the directory it is always used.
#
# sections:
# - title: Examples # Navbar link text
# dir: examples # Source directory (relative to project root)
# index: true # Generate card-based index page (default: false)
# index_columns: 2 # Columns for image cards: 1 or 2 (default: 2)
# navbar_after: "User Guide" # Place after this navbar item (optional)
# - title: Tutorials
# dir: tutorials # No index โ navbar links to first page
# - title: Blog # Blog section using Quarto's listing directive
# dir: blog
# type: blog # "blog" for Quarto listing, omit for card grid
# sections: []
# Custom Static Pages
# -------------------
# Add hand-written HTML pages that Great Docs should either wrap with the site
# shell (layout: passthrough) or copy through unchanged (layout: raw).
#
# : null - (default) discover the conventional `custom/` directory
# : false - disable discovery
# : type(str) - a single directory, e.g. marketing
# : type(list) - one entry per directory:
# custom_pages:
# - dir: marketing # Source directory (relative to project root)
# output: py # URL/output prefix (optional; defaults to dir basename)
# - dir: playgrounds
# output: demos
# custom_pages: null
# Homepage
# --------
# : index - (default) separate homepage from the README / index source
# : user_guide - the first user-guide page becomes the landing page
# homepage: index
# User Guide
# ----------
# Where the User Guide .qmd files live, and optionally how they are ordered.
# : null - (default) look for user_guide/ in the project root
# : type(str) - a custom directory (relative to project root), e.g. docs/guides
# : type(list) - explicit section ordering and grouping:
# user_guide:
# - section: "Get Started"
# contents:
# - text: Welcome
# href: index.qmd
# - quickstart.qmd
# - installation.qmd
# - section: "Advanced Topics"
# contents:
# - advanced-config.qmd
# - extending.qmd
#
# File paths are relative to the user guide directory (no user_guide/ prefix).
# When using explicit ordering, numeric filename prefixes are preserved as-is.
# user_guide: null
# Bibliography & Citations
# ------------------------
# Project-level bibliography for [@citation-key] syntax. Paths are relative to
# the project root; the file(s) are copied into the build directory and wired
# into _quarto.yml so every page can cite without per-page frontmatter.
# : [] - (default) no bibliography
# : type(str) - a single file, e.g. docs/references.bib
# : type(list) - several files:
# bibliography:
# - docs/references.bib
# - docs/software.bib
# bibliography: []
# csl: docs/nature.csl # optional citation style
# csl: null
# API Reference Structure
# -----------------------
# Explicit control over API reference sections. If not provided, sections are
# auto-generated from discovered exports. Each section has a title, description,
# and list of contents.
#
# For classes, use `members: true` (default) to document methods inline on the
# class page, or `members: false` to exclude methods (you can place them
# explicitly elsewhere in the reference if needed).
#
# reference:
# - title: "Core Classes"
# desc: "Main classes for working with the package"
# contents:
# - name: MyClass
# members: false # Don't document methods here
# - SimpleClass # Methods documented inline (default)
#
# - title: "Utility Functions"
# desc: "Helper functions for common tasks"
# contents:
# - helper_func
# - another_func
reference:
- title: Functions
desc: Utility functions
contents:
- render
- transform
# Inline Methods
# --------------
# Whether class methods get their own pages or stay inline.
# : 5 - (default) inline up to 5 methods, split above that
# : true - always inline
# : false - always split
# : type(int) - inline up to N methods, split above N
# inline_methods: 5
# Logo & Favicon
# --------------
# A logo replaces the text title in the navbar.
# : type(str) - a single file used in both light and dark mode
# : type(map) - (default) light/dark variants, as below
# logo:
# light: null # null = no logo
# dark: null # dark-mode variant; falls back to `light` when null
# show_title: false # keep the text title alongside the logo
# Favicon.
# : null - (default) auto-generate from the logo, else skip
# : type(str) - a single file, e.g. assets/favicon.png
# : type(map) - one file per purpose:
# favicon:
# icon: assets/icon.png
# apple_touch: assets/apple-touch-icon.png
# og_image: assets/og-image.png
# favicon: null
# Hero Section
# ------------
# Landing-page hero.
# : true - force enable
# : false - force disable
# : type(map) - (default) set the fields explicitly, as below
# hero:
# enabled: null # null = auto (on when a logo is set)
# logo: null # hero-specific logo; falls back to the navbar logo
# logo_height: 200px # max-height CSS value
# name: null # defaults to display_name; false hides it
# tagline: null # false hides it
# badges: auto # "auto" (from README), a list, or false
# starfield: false # interactive starfield animation
# Markdown Pages
# --------------
# Generate .md companions for every HTML page and show a copy/view-as-Markdown
# widget on each page.
# : false - disable both
# : type(map) - (default) set the fields explicitly, as below
# markdown_pages:
# enabled: true # Generate .md companions for every HTML page (default: true)
# widget: true # Show the copy/view-as-Markdown widget (requires enabled)
# Announcement Banner
# -------------------
# Site-wide banner above or below the navbar. Setting `content` enables it.
# : type(str) - the banner text (sets `content`)
# : type(map) - (default) set the fields explicitly, as below
# announcement:
# content: null # null = no banner; else the banner text (supports basic Markdown)
# type: info # "info" | "warning" | "success" | "danger"
# dismissable: true # Allow visitors to dismiss the banner
# url: null # Optional link the banner text points to
# style: null # Optional gradient preset (same names as navbar_style)
# position: above-navbar # "above-navbar" (default) | "below-navbar"
# Versioning
# ----------
# Multi-version documentation; disabled when empty. Newest first.
# : [] - (default) single-version site
# : type(list) - tags only, e.g. ["0.3", "0.2", "0.1"], or a map per version:
# versions:
# - tag: "0.3"
# label: "0.3.0"
# latest: true
# versions: []
# Version selector widget (enabled automatically when `versions` is non-empty).
# version_selector:
# enabled: true # Master switch for the widget
# placement: navbar-right # "navbar-right" | "navbar-left" | "sidebar-top"
# show_eol: true # Include end-of-life versions in the dropdown
# warning_banner: true # Show a banner on non-latest versions
# Floating version aliases.
# version_aliases:
# latest: true # /v/latest/ -> latest stable version
# stable: true # /v/stable/ -> same as latest
# dev: true # /v/dev/ -> prerelease version, if any
# Badge "new" expiry
# -----------------
# How long a page keeps its "new" status badge before it is considered old.
# : null - (default) no expiry; the badge persists
# : type(str) - a duration understood by parse_badge_expiry
# (see user_guide/30-multi-version-docs.qmd)
# new_is_old: null
# Colors & Navbar
# ---------------
# Site-wide accent color; sets --gd-accent.
# : null - (default) the theme's own accent color
# : type(str) - any CSS color, used in both modes, e.g. "#3b82f6"
# : type(map) - per-mode:
# accent_color:
# light: "#3b82f6"
# dark: "#60a5fa"
# accent_color: null
# Navbar gradient preset.
# : null - (default) no gradient
# : type(str) - a preset name, e.g. sky, peach, lilac
# navbar_style: null
# Navbar solid background color. Text color is chosen automatically for
# contrast (APCA). Overridden when navbar_style is set.
# : null - (default) the theme's own navbar color
# : type(str) - any CSS color, used in both modes, e.g. "#3b82f6"
# : type(map) - per-mode:
# navbar_color:
# light: "#3b82f6"
# dark: "#60a5fa"
# navbar_color: null
# Content-area gradient preset (same preset names as navbar_style); adds a
# subtle radial glow at the top of the content area.
# : type(str) - a preset name (sets `preset`)
# : type(map) - (default) set the fields explicitly, as below
# content_style:
# preset: null # null = disabled; else a gradient preset name
# pages: all # "all" or "homepage"
# Scale to Fit
# ------------
# Auto-shrink wide HTML output to the content width. The matched element's
# nearest output wrapper is scaled down (never up).
# : null - (default) disabled
# : false - disabled
# : type(list) - CSS selectors to auto-scale, e.g. ["#pb_tbl"]
# Per-page override: `scale-to-fit: ["#pb_tbl"]`
# scale_to_fit: null
# Minimum scale for scale-to-fit; below it, content is shown full size with
# horizontal scrolling instead.
# : null - (default) no minimum
# : false - no minimum
# : type(float) - minimum scale factor, 0-1 (e.g. 0.4 = don't shrink below 40%)
# : mobile - disable scaling at viewports โค 576px
# : tablet - disable scaling at viewports โค 768px
# : desktop - disable scaling at viewports โค 992px
# Per-page override: `scale-to-fit-min-scale: "tablet"`
# scale_to_fit_min_scale: null
# Navigation Icons
# ----------------
# Lucide icons prepended to sidebar/navbar entries.
# : {} - (default) no icons
# : false - disabled
# : type(map) - an icon per navbar/sidebar entry:
# nav_icons:
# navbar:
# "User Guide": book-open
# sidebar:
# Reference: code
# nav_icons: {}
# UI Features
# -----------
# Keyboard shortcuts and help overlay.
# keyboard_nav: true
# Auto-generated package-info page (dependency details), linked from homepage Meta.
# package_info_page: true
# Back-to-top floating button.
# back_to_top: true
# Footer attribution ("Site created with Great Docs").
# attribution: true
# Custom Head HTML
# ----------------
# Injected into <head> of every page.
# : [] - (default) nothing injected
# : type(str) - inline HTML, e.g. '<link rel="preconnect" href="https://example.com">'
# : type(list) - several entries, mixing inline HTML and `text:`/`file:` maps:
# include_in_header:
# - '<script defer src="/analytics.js"></script>'
# - file: partials/head.html
# include_in_header: []
# Freeze (Execution Caching)
# --------------------------
# Whether computational documents re-run during builds. A scalar shorthand
# sets `mode` (e.g. `freeze: false`).
# mode:
# : auto - (default) re-render only when the source changes
# : true - never re-render during project render
# : false - execute every document on every build
# : null - as false
# pre_render: script(s) to run before render (e.g. copy _freeze/ into the build dir)
# freeze:
# mode: auto
# pre_render: []
# Pre-render Scripts
# ------------------
# Quarto's native pre-render hook (alternative to freeze.pre_render). Copied
# into the build directory and wired into _quarto.yml. Paths are relative to
# root.
# : [] - (default) no scripts
# : type(str) - a single script, e.g. scripts/before-render.py
# : type(list) - several, e.g. [scripts/before-render.py, scripts/other.py]
# pre_render: []
# Agent Skills
# ------------
# Emits a SKILL.md conforming to the Agent Skills spec (https://agentskills.io/)
# so coding agents can learn the package.
# skill:
# enabled: true # Emit a SKILL.md for this package (default: true)
# file: null # Path to a hand-written SKILL.md (overrides auto-generation)
# well_known: true # Also serve at /.well-known/agent-skills/{name}/SKILL.md + index.json
# # Strings for the Gotchas section.
# gotchas: []
# # Strings for the Best Practices section.
# best_practices: []
# # Manual decision-table rows. Example:
# # decision_table:
# # - need: "Parse a file"
# # use: read_yaml()
# decision_table: []
# extra_body: null # Path to extra Markdown appended to the generated body
# # Multiple named skills (overrides 'file' when set):
# # skills:
# # - name: my-package
# # file: skills/my-package/SKILL.md
# # - name: authoring-pages
# # file: skills/authoring-pages/SKILL.md
# skills: []
# Social Cards & Open Graph
# -------------------------
# Auto-generate <meta> tags for social media previews (LinkedIn, Discord, Slack,
# Bluesky, Mastodon, X/Twitter, and other platforms). Enabled by default.
#
# Fine-grained control:
# social_cards:
# enabled: true
# image: assets/social-card.png # Default og:image for all pages
# twitter_site: "@myhandle" # Twitter/X site @handle
# twitter_card: summary_large_image # "summary" or "summary_large_image"
# social_cards:
# enabled: true # Auto-generate social preview meta tags (default: true)
# image: null # Default og:image for all pages; omitted from meta tags when null
# twitter_card: null # "summary" or "summary_large_image"
# twitter_site: null # Twitter/X site @handle (e.g. "@myhandle")
# Page Status Badges
# ------------------
# Lifecycle indicators in sidebar navigation. Pages opt in via frontmatter
# (`status: new`, `deprecated`, ...).
# page_status:
# enabled: false # Master switch for page status badges
# show_in_sidebar: true # Show badges next to sidebar navigation links
# show_on_pages: true # Show a status indicator below page titles (like tags)
# # Built-in status definitions (extend or override).
# statuses:
# new:
# label: New
# icon: sparkles
# color: "#10b981"
# description: Recently added
# updated:
# label: Updated
# icon: refresh-cw
# color: "#3b82f6"
# description: Recently updated
# beta:
# label: Beta
# icon: flask-conical
# color: "#f59e0b"
# description: Beta feature
# deprecated:
# label: Deprecated
# icon: triangle-alert
# color: "#ef4444"
# description: May be removed in a future release
# experimental:
# label: Experimental
# icon: beaker
# color: "#8b5cf6"
# description: API may change without notice
# upcoming:
# label: Upcoming
# icon: rocket
# color: "#e63946"
# description: Coming in a future release
# Page Tags
# ---------
# Categorize pages for discoverability via frontmatter
# (`tags: [Python, Testing, API]`).
# tags:
# enabled: false # Master switch for page tags
# index_page: true # Auto-generate a tags index page listing all tags and their pages
# show_on_pages: true # Render tag pills above page titles, linked to the tag index
# hierarchical: true # Support hierarchical tags with "/" (e.g. "Python/Testing")
# # Optional tag icons (tag name -> Lucide icon). Example:
# # icons:
# # Python: code
# icons: {}
# # Shadow tags: names hidden from public view (internal organization only).
# # Shadow-tagged pages are indexed but their tags are not rendered.
# shadow: []
# scoped: false # Show a tag cloud scoped to the section on section pages
# location: top # Default tag pill placement: "top" or "bottom"
# SEO
# ---
# Generates sitemap.xml, robots.txt, and discoverability metadata.
# seo:
# enabled: true # Master switch for all SEO features
# sitemap:
# enabled: true # Generate sitemap.xml
# # Change frequency by page type (always|hourly|daily|weekly|monthly|yearly|never).
# changefreq:
# homepage: weekly
# reference: monthly
# user_guide: monthly
# changelog: weekly
# default: monthly
# # Priority by page type (0.0-1.0).
# priority:
# homepage: 1.0
# reference: 0.8
# user_guide: 0.9
# changelog: 0.6
# default: 0.5
# robots:
# enabled: true # Generate robots.txt
# allow_all: true # Allow all crawlers by default
# disallow: [] # Paths to disallow, e.g. ["/drafts/", "/_internal/"]
# crawl_delay: null # Optional crawl delay in seconds
# extra_rules: [] # Extra raw lines, e.g. ["User-agent: GPTBot", "Disallow: /"]
# canonical:
# enabled: true # Add canonical URLs to pages
# # Base URL (e.g. "https://example.github.io/pkg/"); auto-detected from
# # GitHub Pages when null.
# base_url: null
# title_template: "{page_title} | {site_name}" # supports {page_title} and {site_name}
# structured_data:
# enabled: true # Add JSON-LD to pages
# type: SoftwareSourceCode # Schema.org type
# default_description: null # Falls back to the package description when null