
Layout.pudu
Pudu168 lines10.6 KB
1/** @Docgen.Theme.Layout — the default page layout and its overridable partials */2module PuduLangDocgen.Theme.Layout345const LAYOUT: Array[Str] = [6 "<!doctype html>",7 "<html\{\{#lang\}\} lang=\"\{\{lang\}\}\"\{\{/lang\}\} data-root=\"\{\{root\}\}\" data-theme=\"auto\">",8 "\{\{>head\}\}",9 "<body class=\"kind-\{\{kind\}\} layout-\{\{layout\}\}\">",10 "<a class=\"skip-link\" href=\"#main\">\{\{text.skip\}\}</a>",11 "\{\{^chromeless\}\}\{\{>header\}\}\{\{/chromeless\}\}",12 "<div class=\"page\">",13 "\{\{#showToc\}\}\{\{>sidebar\}\}\{\{/showToc\}\}",14 "<main id=\"main\" class=\"main\" tabindex=\"-1\">",15 "\{\{#showBreadcrumb\}\}\{\{>breadcrumb\}\}\{\{/showBreadcrumb\}\}",16 "\{\{>actions\}\}",17 "<article class=\"content\">",18 "\{\{\{body\}\}\}",19 "</article>",20 "\{\{>pager\}\}",21 "</main>",22 "\{\{#showAffix\}\}\{\{>affix\}\}\{\{/showAffix\}\}",23 "</div>",24 "\{\{#showFooter\}\}\{\{>footer\}\}\{\{/showFooter\}\}",25 "\{\{>scripts\}\}",26 "</body>",27 "</html>"28]293031const PARTIAL_ACTIONS: Array[Str] = [32 "\{\{#hasActions\}\}<div class=\"page-actions\">",33 "\{\{#lastModified\}\}<span class=\"page-date\">\{\{text.updated\}\} <time datetime=\"\{\{lastModified\}\}\">\{\{lastModified\}\}</time></span>\{\{/lastModified\}\}",34 "\{\{#editUrl\}\}<a class=\"page-action\" href=\"\{\{editUrl\}\}\"><svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M11.1 1.3a1.5 1.5 0 0 1 2.1 0l1.5 1.5a1.5 1.5 0 0 1 0 2.1l-8.5 8.5-3.7 1.1 1.1-3.7zM4.9 11.2l-.4 1.3 1.3-.4 6.7-6.7-.9-.9z\"/></svg>\{\{text.edit\}\}</a>\{\{/editUrl\}\}",35 "\{\{#pdfUrl\}\}<a class=\"page-action pdf\" href=\"\{\{pdfUrl\}\}\"><svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M7.25 1h1.5v8.19l2.72-2.72 1.06 1.06L8 12.06 3.47 7.53l1.06-1.06 2.72 2.72zM2 13.5h12V15H2z\"/></svg>\{\{text.pdf\}\}</a>\{\{/pdfUrl\}\}",36 "</div>\{\{/hasActions\}\}"37]383940const PARTIAL_AFFIX: Array[Str] = [41 "<aside class=\"affix\" aria-label=\"\{\{text.inThisArticle\}\}\">",42 "<div class=\"affix-inner\">",43 "<h2 class=\"affix-title\">\{\{text.inThisArticle\}\}</h2>",44 "<ul>\{\{#headings\}\}<li class=\"level-\{\{level\}\}\"><a href=\"#\{\{id\}\}\">\{\{title\}\}</a></li>\{\{/headings\}\}</ul>",45 "</div>",46 "</aside>"47]484950const PARTIAL_BREADCRUMB: Array[Str] = [51 "<nav class=\"breadcrumb\" aria-label=\"\{\{text.breadcrumb\}\}\"><ol>\{\{#breadcrumb\}\}<li>\{\{#href\}\}<a href=\"\{\{href\}\}\">\{\{name\}\}</a>\{\{/href\}\}\{\{^href\}\}<span aria-current=\"page\">\{\{name\}\}</span>\{\{/href\}\}</li>\{\{/breadcrumb\}\}</ol></nav>"52]535455const PARTIAL_FOOTER: Array[Str] = [56 "<footer class=\"site-footer\">",57 "<div class=\"footer-inner\">\{\{#footer\}\}\{\{\{footer\}\}\}\{\{/footer\}\}\{\{^footer\}\}<div class=\"footer-bar\">",58 "<span class=\"footer-name\">\{\{siteName\}\}</span>",59 "\{\{#hasFooterLinks\}\}<nav class=\"footer-links\" aria-label=\"\{\{text.footer\}\}\"><ul>\{\{#footerLinks\}\}<li><a href=\"\{\{href\}\}\">\{\{name\}\}</a></li>\{\{/footerLinks\}\}</ul></nav>\{\{/hasFooterLinks\}\}",60 "\{\{#copyright\}\}<p class=\"footer-copyright\">\{\{copyright\}\}</p>\{\{/copyright\}\}",61 "</div>\{\{/footer\}\}</div>",62 "</footer>"63]646566const PARTIAL_HEAD: Array[Str] = [67 "<head>",68 "<meta charset=\"utf-8\">",69 "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">",70 "<title>\{\{title\}\}\{\{#siteTitle\}\} | \{\{siteTitle\}\}\{\{/siteTitle\}\}</title>",71 "<meta name=\"generator\" content=\"pudu-lang-docgen\">",72 "\{\{#description\}\}<meta name=\"description\" content=\"\{\{description\}\}\">\{\{/description\}\}",73 "\{\{#keywords\}\}<meta name=\"keywords\" content=\"\{\{keywords\}\}\">\{\{/keywords\}\}",74 "\{\{#author\}\}<meta name=\"author\" content=\"\{\{author\}\}\">\{\{/author\}\}",75 "\{\{#noindex\}\}<meta name=\"robots\" content=\"noindex, nofollow\">\{\{/noindex\}\}",76 "\{\{#canonical\}\}<link rel=\"canonical\" href=\"\{\{canonical\}\}\">\{\{/canonical\}\}",77 "<meta property=\"og:type\" content=\"\{\{ogType\}\}\">",78 "<meta property=\"og:title\" content=\"\{\{title\}\}\">",79 "<meta property=\"og:site_name\" content=\"\{\{siteName\}\}\">",80 "\{\{#description\}\}<meta property=\"og:description\" content=\"\{\{description\}\}\">\{\{/description\}\}",81 "\{\{#canonical\}\}<meta property=\"og:url\" content=\"\{\{canonical\}\}\">\{\{/canonical\}\}",82 "\{\{#image\}\}<meta property=\"og:image\" content=\"\{\{image\}\}\">\{\{/image\}\}",83 "\{\{#lang\}\}<meta property=\"og:locale\" content=\"\{\{lang\}\}\">\{\{/lang\}\}",84 "<meta name=\"twitter:card\" content=\"\{\{#image\}\}summary_large_image\{\{/image\}\}\{\{^image\}\}summary\{\{/image\}\}\">",85 "<meta name=\"twitter:title\" content=\"\{\{title\}\}\">",86 "\{\{#description\}\}<meta name=\"twitter:description\" content=\"\{\{description\}\}\">\{\{/description\}\}",87 "\{\{#image\}\}<meta name=\"twitter:image\" content=\"\{\{image\}\}\">\{\{/image\}\}",88 "\{\{#twitter\}\}<meta name=\"twitter:site\" content=\"\{\{twitter\}\}\">\{\{/twitter\}\}",89 "\{\{#extraMeta\}\}<meta name=\"\{\{name\}\}\" content=\"\{\{content\}\}\">",90 "\{\{/extraMeta\}\}",91 "<meta name=\"color-scheme\" content=\"light dark\">",92 "\{\{#themeColor\}\}<meta name=\"theme-color\" content=\"\{\{themeColor\}\}\">\{\{/themeColor\}\}",93 "\{\{#favicon\}\}<link rel=\"icon\" href=\"\{\{favicon\}\}\">\{\{/favicon\}\}",94 "\{\{#touchIcon\}\}<link rel=\"apple-touch-icon\" href=\"\{\{touchIcon\}\}\">\{\{/touchIcon\}\}",95 "<link rel=\"stylesheet\" href=\"\{\{root\}\}_assets/site.css\">",96 "\{\{#customStyle\}\}<link rel=\"stylesheet\" href=\"\{\{customStyle\}\}\">\{\{/customStyle\}\}",97 "\{\{#structuredData\}\}<script type=\"application/ld+json\">\{\{\{structuredData\}\}\}</script>\{\{/structuredData\}\}",98 "\{\{#analytics\}\}<script async src=\"https://www.googletagmanager.com/gtag/js?id=\{\{analytics\}\}\"></script>",99 "<script>window.dataLayer=window.dataLayer||[];function gtag()\{dataLayer.push(arguments)\}gtag(\"js\",new Date());gtag(\"config\",\"\{\{analytics\}\}\");</script>\{\{/analytics\}\}",100 "<script>try\{var t=localStorage.getItem(\"docgen-theme\");if(t)document.documentElement.setAttribute(\"data-theme\",t)\}catch(e)\{\}</script>",101 "</head>"102]103104105const PARTIAL_HEADER: Array[Str] = [106 "<header class=\"site-header\">",107 "<div class=\"header-inner\">",108 "\{\{#showToc\}\}<button type=\"button\" class=\"icon-button menu-toggle\" aria-controls=\"sidebar\" aria-expanded=\"false\" aria-label=\"\{\{text.menu\}\}\"><svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M1 3h14v1.5H1zm0 4.25h14v1.5H1zM1 11.5h14V13H1z\"/></svg></button>\{\{/showToc\}\}",109 "<a class=\"brand\" href=\"\{\{logoUrl\}\}\">\{\{#logo\}\}<img class=\"brand-logo\" src=\"\{\{logo\}\}\" alt=\"\" width=\"24\" height=\"24\">\{\{/logo\}\}<span class=\"brand-name\">\{\{siteName\}\}</span></a>",110 "\{\{#showNavbar\}\}<nav id=\"navbar\" class=\"navbar\" aria-label=\"\{\{text.primary\}\}\"><ul>\{\{#navbar\}\}<li><a href=\"\{\{href\}\}\"\{\{#active\}\} aria-current=\"true\" class=\"active\"\{\{/active\}\}>\{\{name\}\}</a></li>\{\{/navbar\}\}</ul></nav>\{\{/showNavbar\}\}",111 "<div class=\"header-tools\">",112 "\{\{#searchEnabled\}\}<div class=\"search\" role=\"search\">",113 "<svg class=\"search-icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M6.5 1a5.5 5.5 0 0 1 4.38 8.82l3.65 3.65-1.06 1.06-3.65-3.65A5.5 5.5 0 1 1 6.5 1zm0 1.5a4 4 0 1 0 0 8 4 4 0 0 0 0-8z\"/></svg>",114 "<input id=\"search-input\" type=\"search\" placeholder=\"\{\{text.search\}\}\" aria-label=\"\{\{text.search\}\}\" autocomplete=\"off\" spellcheck=\"false\" aria-controls=\"search-results\" aria-expanded=\"false\">",115 "<div id=\"search-results\" class=\"search-results\" role=\"listbox\" hidden></div>",116 "</div>\{\{/searchEnabled\}\}",117 "\{\{#showNavbar\}\}<button type=\"button\" class=\"icon-button nav-toggle\" aria-controls=\"navbar\" aria-expanded=\"false\" aria-label=\"\{\{text.primary\}\}\"><svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M2 6.5h2.5V9H2zm4.75 0h2.5V9h-2.5zm4.75 0H14V9h-2.5z\"/></svg></button>\{\{/showNavbar\}\}",118 "<button type=\"button\" class=\"icon-button theme-toggle\" aria-label=\"\{\{text.theme\}\}\" title=\"\{\{text.theme\}\}\"><svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1zm0 1.5v11a5.5 5.5 0 0 1 0-11z\"/></svg></button>",119 "</div>",120 "</div>",121 "</header>"122]123124125const PARTIAL_PAGER: Array[Str] = [126 "\{\{#hasPager\}\}<nav class=\"pager\" aria-label=\"\{\{text.pager\}\}\">",127 "\{\{#previous\}\}<a class=\"pager-link previous\" href=\"\{\{href\}\}\" rel=\"prev\"><span class=\"pager-label\">\{\{text.previous\}\}</span><span class=\"pager-title\">\{\{name\}\}</span></a>\{\{/previous\}\}",128 "\{\{#next\}\}<a class=\"pager-link next\" href=\"\{\{href\}\}\" rel=\"next\"><span class=\"pager-label\">\{\{text.next\}\}</span><span class=\"pager-title\">\{\{name\}\}</span></a>\{\{/next\}\}",129 "</nav>\{\{/hasPager\}\}"130]131132133const PARTIAL_SCRIPTS: Array[Str] = [134 "<script src=\"\{\{root\}\}_assets/site.js\" defer></script>",135 "\{\{#mermaid\}\}<script src=\"\{\{mermaidScript\}\}\" defer></script>\{\{/mermaid\}\}",136 "\{\{#math\}\}<script src=\"\{\{mathScript\}\}\" defer></script>\{\{/math\}\}",137 "\{\{#customScript\}\}<script src=\"\{\{customScript\}\}\" defer></script>\{\{/customScript\}\}"138]139140141const PARTIAL_SIDEBAR: Array[Str] = [142 "<aside id=\"sidebar\" class=\"sidebar\" aria-label=\"\{\{text.contents\}\}\">",143 "<div class=\"sidebar-inner\">",144 "\{\{#showTocFilter\}\}<div class=\"toc-filter\"><input type=\"search\" placeholder=\"\{\{text.filter\}\}\" aria-label=\"\{\{text.filter\}\}\" autocomplete=\"off\"></div>\{\{/showTocFilter\}\}",145 "<nav class=\"toc\" aria-label=\"\{\{text.contents\}\}\">",146 "\{\{\{toc\}\}\}",147 "</nav>",148 "</div>",149 "</aside>"150]151152153154export fn templates() -> Array[(Str, Str)] {155 [156 ("layout", LAYOUT.join("\n")),157 ("partials/actions", PARTIAL_ACTIONS.join("\n")),158 ("partials/affix", PARTIAL_AFFIX.join("\n")),159 ("partials/breadcrumb", PARTIAL_BREADCRUMB.join("\n")),160 ("partials/footer", PARTIAL_FOOTER.join("\n")),161 ("partials/head", PARTIAL_HEAD.join("\n")),162 ("partials/header", PARTIAL_HEADER.join("\n")),163 ("partials/pager", PARTIAL_PAGER.join("\n")),164 ("partials/scripts", PARTIAL_SCRIPTS.join("\n")),165 ("partials/sidebar", PARTIAL_SIDEBAR.join("\n"))166 ]167}168