"""Register page assets with Sphinx so their URLs include content checksums."""

from __future__ import annotations

import typing

if typing.TYPE_CHECKING:
    from docutils import nodes
    from sphinx.application import Sphinx


def add_page_assets(
    app: Sphinx,
    pagename: str,
    _templatename: str,
    _context: dict[str, typing.Any],
    _doctree: nodes.document | None,
) -> None:
    if app.builder is None or app.builder.name != 'html':
        return
    if pagename == 'index':
        app.add_css_file('home.css', priority=900)
        app.add_js_file('showcase.js', loading_method='defer', priority=900)
    if pagename in (
        'tutorial/index',
        'howto/index',
        'reference/index',
        'explanation/index',
        'installation',
    ):
        app.add_css_file('guide-cards.css', priority=900)
    if pagename in ('reference/index', 'explanation/index', 'installation'):
        app.add_css_file('section-pages.css', priority=900)


def setup(app: Sphinx) -> dict[str, bool]:
    app.connect('html-page-context', add_page_assets)
    return {'parallel_read_safe': True, 'parallel_write_safe': True}