diff options
| author | Sivaldo <sivaldodavi@disroot.org> | 2026-06-13 19:20:23 -0300 |
|---|---|---|
| committer | Sivaldo <sivaldodavi@disroot.org> | 2026-06-13 19:20:23 -0300 |
| commit | 7316238f16655bd127b04476bbf7864b27f940f9 (patch) | |
| tree | 61f25290b3e5fd14894e52754cfe6dd4e85845ef /layouts/_default | |
Diffstat (limited to 'layouts/_default')
| -rw-r--r-- | layouts/_default/baseof.html | 46 | ||||
| -rw-r--r-- | layouts/_default/list.html | 146 |
2 files changed, 192 insertions, 0 deletions
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..4fca1f9 --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,46 @@ +<!DOCTYPE html> +<html lang="pt-BR"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="description" content="{{ .Site.Params.description }}"> + <meta name="theme-color" content="#c9a961"> + <link rel="manifest" href="{{ "/manifest.json" | relURL }}"> + <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect fill='%230f0f13' width='100' height='100'/><text x='50' y='75' font-size='60' font-weight='bold' text-anchor='middle' fill='%23c9a961' font-family='monospace'>D</text></svg>"> + <link rel="preconnect" href="https://fonts.googleapis.com"> + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link href="https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,600;1,400&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"> + <link rel="stylesheet" href="{{ "/main.css" | relURL }}"> + <title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title> +</head> +<body> + <header> + {{ block "header" . }} + <a class="site-name" href="{{ "/" | relURL }}">direito</a> + {{ end }} + </header> + <main> + {{ block "main" . }}{{ end }} + </main> + + <script src="{{ "/quiz-parser.js" | relURL }}"></script> + <script src="{{ "/quiz-engine.js" | relURL }}"></script> + <script src="{{ "/quiz-runtime.js" | relURL }}"></script> + <script src="{{ "/footnotes.js" | relURL }}"></script> + <script src="{{ "/home-filter.js" | relURL }}"></script> + <script src="{{ "/toc.js" | relURL }}"></script> + <script src="{{ "/dark-mode.js" | relURL }}"></script> + <script src="{{ "/keyboard-shortcuts.js" | relURL }}"></script> + <script src="{{ "/dashboard.js" | relURL }}"></script> + + {{ block "scripts" . }}{{ end }} + + <script> + if ('serviceWorker' in navigator) { + window.addEventListener('load', () => { + navigator.serviceWorker.register('/sw.js').catch(() => {}); + }); + } + </script> +</body> +</html> diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..09804c9 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,146 @@ +{{ define "title" }} + {{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} · {{ .Site.Title }}{{ end }} +{{ end }} + +{{ define "header" }} + <a class="site-name" href="{{ "/" | relURL }}">direito</a> + {{ if not .IsHome }} + <span class="header-sep">/</span> + <span class="breadcrumb">{{ .Title }}</span> + {{ end }} +{{ end }} + +{{ define "main" }} +{{ if .IsHome }} + + {{/* Mapas por slug de disciplina */}} + {{ $simMap := dict }} + {{ $quizMap := dict }} + {{ $discsQz := slice }} + {{ range .Site.RegularPages }} + {{ if eq .Section "quizzes" }} + {{ $slug := .File.Dir | strings.TrimSuffix "/" | path.Base }} + {{ if not (in $discsQz $slug) }}{{ $discsQz = $discsQz | append $slug }}{{ end }} + {{ $isSim := or (.Params.simulado) (in (.File.BaseFileName | lower) "simulado") }} + {{ if $isSim }} + {{ $simMap = merge $simMap (dict $slug (add (index $simMap $slug | default 0) 1)) }} + {{ else }} + {{ $quizMap = merge $quizMap (dict $slug (add (index $quizMap $slug | default 0) 1)) }} + {{ end }} + {{ end }} + {{ end }} + + <div class="disc-grid"> + {{ $txtsSlugs := slice }} + {{ range .Site.Sections }} + {{ if eq .Section "txts" }} + {{ range .Sections }} + {{ $slug := .RelPermalink | strings.TrimSuffix "/" | path.Base }} + {{ $txtsSlugs = $txtsSlugs | append $slug }} + {{ $sims := index $simMap $slug | default 0 }} + {{ $qz := index $quizMap $slug | default 0 }} + <a class="disc-card fade" href="{{ .RelPermalink }}" data-filterable> + <div class="disc-card-name">{{ .Title }}</div> + <div class="disc-card-meta"> + {{ $n := len .RegularPages }} + {{ if $n }}{{ $n }} assunto{{ if gt $n 1 }}s{{ end }}{{ else }}sem textos{{ end }} + {{ if $sims }} · simulado{{ end }} + {{ if $qz }} · {{ $qz }} exercício{{ if gt $qz 1 }}s{{ end }}{{ end }} + </div> + </a> + {{ end }} + {{ end }} + {{ end }} + + {{/* Disciplinas que só existem em quizzes (sem txts) */}} + {{ range $slug := $discsQz }} + {{ if not (in $txtsSlugs $slug) }} + {{ $sims := index $simMap $slug | default 0 }} + {{ $qz := index $quizMap $slug | default 0 }} + <a class="disc-card fade" href="/{{ $slug }}/" data-filterable> + <div class="disc-card-name">{{ humanize (replace $slug "-" " ") }}</div> + <div class="disc-card-meta"> + {{ if $sims }}simulado · {{ end }}{{ $qz }} exercício{{ if gt $qz 1 }}s{{ end }} + </div> + </a> + {{ end }} + {{ end }} + </div> + +{{ else }} + {{/* Página de disciplina */}} + {{ $discSlug := .RelPermalink | strings.TrimSuffix "/" | path.Base }} + <div class="discipline fade"> + <div class="disc-back"><a href="{{ "/" | relURL }}">← disciplinas</a></div> + <div class="discipline-name">{{ .Title }}</div> + + {{ if .Content }} + <div class="disc-intro"> + <article class="prose disc-intro-prose">{{ .Content }}</article> + </div> + {{ end }} + + <div class="disc-extras-wrap"> + {{ partial "disc-extras.html" . }} + </div> + + {{/* Simulados desta disciplina */}} + {{ $simulados := slice }} + {{ range $.Site.RegularPages }} + {{ if eq .Section "quizzes" }} + {{ $parent := .File.Dir | strings.TrimSuffix "/" | path.Base }} + {{ if eq $parent $discSlug }} + {{ if or (.Params.simulado) (in (.File.BaseFileName | lower) "simulado") }} + {{ $simulados = $simulados | append . }} + {{ end }} + {{ end }} + {{ end }} + {{ end }} + {{ with $simulados }} + <div class="subject-group" style="margin-bottom:1.5rem;"> + <div class="sq-label" style="margin-bottom:.65rem;">simulados</div> + <div class="sq-list"> + {{ range . }} + <a class="sq-item" href="{{ .RelPermalink }}"> + <span class="sq-name" style="color:var(--amber);">{{ .Title }}</span> + <span class="sq-meta">simulado</span> + </a> + {{ end }} + </div> + </div> + {{ end }} + + {{/* Assuntos com vínculo aos exercícios */}} + {{ $exercises := slice }} + {{ range $.Site.RegularPages }} + {{ if eq .Section "quizzes" }} + {{ $parent := .File.Dir | strings.TrimSuffix "/" | path.Base }} + {{ if eq $parent $discSlug }} + {{ if not (or (.Params.simulado) (in (.File.BaseFileName | lower) "simulado")) }} + {{ $exercises = $exercises | append . }} + {{ end }} + {{ end }} + {{ end }} + {{ end }} + + <div class="subject-list"> + {{ range .RegularPages }} + {{ $assuntoSlug := .File.BaseFileName }} + {{ $linkedQuiz := false }} + {{ range $exercises }} + {{ if eq .File.BaseFileName $assuntoSlug }} + {{ $linkedQuiz = . }} + {{ end }} + {{ end }} + <a class="subject-row" href="{{ .RelPermalink }}"> + <span class="subject-row-name">{{ .Title }}</span> + <span class="subject-row-meta"> + texto{{ if $linkedQuiz }} · exercícios{{ end }} + </span> + </a> + {{ end }} + {{ if not .RegularPages }}<p class="empty-note">sem assuntos ainda</p>{{ end }} + </div> + </div> +{{ end }} +{{ end }} |
