← GDG /

#302 gdtest_details_shortcode

#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).
View Site → Build Log ๐Ÿงช Test Coverage

Build Mode

○ No great-docs.yml

This package has no pre-supplied config. It tests the full great-docs initgreat-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 data
๐Ÿ“ user_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