summaryrefslogtreecommitdiff
path: root/layouts/_default
diff options
context:
space:
mode:
Diffstat (limited to 'layouts/_default')
-rw-r--r--layouts/_default/baseof.html46
-rw-r--r--layouts/_default/list.html146
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 }}