diff options
Diffstat (limited to 'layouts')
| -rw-r--r-- | layouts/404.html | 21 | ||||
| -rw-r--r-- | layouts/_default/list.html | 27 | ||||
| -rw-r--r-- | layouts/_default/single.html | 28 | ||||
| -rw-r--r-- | layouts/_default/terms.html | 15 | ||||
| -rw-r--r-- | layouts/curriculo/single.html | 522 | ||||
| -rw-r--r-- | layouts/index.html | 75 | ||||
| -rw-r--r-- | layouts/leituras/list.html | 90 | ||||
| -rw-r--r-- | layouts/leituras/single.html | 38 | ||||
| -rw-r--r-- | layouts/partials/footer.html | 10 | ||||
| -rw-r--r-- | layouts/partials/header.html | 33 | ||||
| -rw-r--r-- | layouts/partials/navbar.html | 17 | ||||
| -rw-r--r-- | layouts/shortcodes/img.html | 34 | ||||
| -rw-r--r-- | layouts/shortcodes/rawhtml.html | 1 | ||||
| -rw-r--r-- | layouts/shortcodes/video.html | 3 | ||||
| -rw-r--r-- | layouts/taxonomy/term.html | 21 |
15 files changed, 935 insertions, 0 deletions
diff --git a/layouts/404.html b/layouts/404.html new file mode 100644 index 0000000..27f0e58 --- /dev/null +++ b/layouts/404.html @@ -0,0 +1,21 @@ +{{ partial "header.html" . -}} +{{ partial "navbar.html" . -}} + +<main> + <section class="post-body" style="text-align:center;"> + <p class="page-intro" style="margin:0 auto 8px; text-align:center;">Erro 404</p> + <h1 class="page-title" style="text-align:center;">Essa página não existe.</h1> + <p class="page-intro" style="margin:0 auto 40px; text-align:center;"> + O link pode estar quebrado, ou a página foi movida. + </p> + + <ul class="linklist" style="display:inline-block; text-align:left;"> + <li><a href="/">← Página inicial</a></li> + <li><a href="/escritos/">Escritos</a></li> + <li><a href="/leituras/">Leituras</a></li> + <li><a href="/curriculo/">Currículo</a></li> + </ul> + </section> +</main> + +{{ partial "footer.html" . }} diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..5468281 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,27 @@ +{{ partial "header.html" . -}} + +<main> + <section class="post-body"> + <a class="back-link" href="/">← voltar</a> + + <h1 class="page-title">{{ .Title | title }}</h1> + + <ul class="recent-posts"> + {{ range .RegularPages.ByDate.Reverse }} + <li> + <span class="recent-post-left"> + <a href="{{ .Permalink }}">{{ .Title }}</a> + {{ with .Params.tags }}{{ range . }} + <a href="{{ "/tags/" | relURL }}{{ . | urlize }}/" class="post-tag">{{ . }}</a> + {{ end }}{{ end }} + </span> + {{ with .Params.date }} + <span class="recent-post-date">{{ . | time | dateFormat "2006-01-02" }}</span> + {{ end }} + </li> + {{ end }} + </ul> + </section> +</main> + +{{ partial "footer.html" . }} diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..e1272ce --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,28 @@ +{{ partial "header.html" . -}} + +<article class="post-body"> + <a class="back-link" href="/">← voltar</a> + + <header class="post-header"> + <h1>{{ .Title }}</h1> + {{ with .Params.excerpt }} + <p class="post-excerpt-lead">{{ . }}</p> + {{ end }} + {{ with .Date }}{{ if not .IsZero }} + <p class="post-date">{{ .Format "02/01/2006" }}</p> + {{ end }}{{ end }} + {{ with .Params.tags }} + <div class="post-tags-bar"> + {{ range . }} + <a href="{{ "/tags/" | relURL }}{{ . | urlize }}/" class="post-tag">{{ . }}</a> + {{ end }} + </div> + {{ end }} + </header> + + <div class="content"> + {{ .Content }} + </div> +</article> + +{{ partial "footer.html" . }} diff --git a/layouts/_default/terms.html b/layouts/_default/terms.html new file mode 100644 index 0000000..a3def21 --- /dev/null +++ b/layouts/_default/terms.html @@ -0,0 +1,15 @@ +{{ partial "header.html" . -}} +{{ partial "navbar.html" . -}} + +<main> + <section class="post-body"> + <h1 class="page-title">{{ .Title | title }}</h1> + <nav class="indice" style="margin-top:20px;"> + {{ range .Data.Terms.Alphabetical }} + <a href="{{ .Page.RelPermalink }}">{{ .Term }} ({{ .Count }})</a> + {{ end }} + </nav> + </section> +</main> + +{{ partial "footer.html" . }} diff --git a/layouts/curriculo/single.html b/layouts/curriculo/single.html new file mode 100644 index 0000000..048238c --- /dev/null +++ b/layouts/curriculo/single.html @@ -0,0 +1,522 @@ +<!DOCTYPE html> +<html lang="pt-br"> +<head> + <title>{{ .Title }} — Sivaldo Davi</title> + <meta name="robots" content="{{ if .Params.noindex }}noindex, nofollow{{ else }}index, follow{{ end }}"> + <meta name="author" content="Sivaldo Davi"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta charset="utf-8"> + <style> + :root { + --bg: #121212; + --fg: #dddddd; + --dim: #666; + --muted: #333; + --link: #599cab; + --border: #1e1e1e; + --border2: #2a2a2a; + --ui: "Inter", -apple-system, BlinkMacSystemFont, sans-serif; + --serif: "Georgia", serif; + } + + * { box-sizing: border-box; margin: 0; } + + body { + background: var(--bg); + color: var(--fg); + font-family: var(--ui); + font-size: 0.95rem; + line-height: 1.7; + max-width: 780px; + margin: 0 auto; + padding: 60px 24px 100px; + } + + a { color: var(--link); text-decoration: none; } + a:hover { text-decoration: underline; } + + .back { + display: inline-block; + font-size: 0.82rem; + color: var(--dim); + margin-bottom: 60px; + } + .back:hover { color: var(--fg); text-decoration: none; } + + /* cabeçalho */ + .cv-header { + border-left: 2px solid var(--border2); + padding-left: 22px; + margin-bottom: 56px; + } + .cv-header h1 { + font-family: var(--serif); + font-size: 1.7rem; + font-weight: normal; + color: #eee; + margin-bottom: 6px; + } + .cv-header .subtitulo { + font-size: 0.85rem; + color: var(--dim); + margin-bottom: 16px; + } + .cv-header .contatos { + font-size: 0.85rem; + color: #999; + display: flex; + flex-wrap: wrap; + gap: 6px 18px; + line-height: 2; + } + .cv-header .contatos a { color: #999; } + .cv-header .contatos a:hover { color: var(--link); text-decoration: none; } + .cv-header .sep { color: var(--muted); } + .pdf-link { + display: inline-block; + margin-top: 18px; + font-size: 0.8rem; + color: var(--dim); + border: 1px solid var(--border2); + padding: 5px 12px; + border-radius: 2px; + letter-spacing: 0.03em; + } + .pdf-link:hover { color: var(--fg); border-color: var(--dim); text-decoration: none; } + + /* seções */ + .cv-section { margin-bottom: 48px; } + .cv-section h2 { + font-size: 0.7rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 1.6px; + color: var(--dim); + border-bottom: 1px solid var(--border); + padding-bottom: 7px; + margin-bottom: 24px; + } + + /* objetivo */ + .objetivo p { + color: #aaa; + font-size: 0.95rem; + line-height: 1.8; + max-width: 640px; + } + + /* entradas */ + .entrada { + display: grid; + grid-template-columns: 1fr auto; + gap: 2px 20px; + margin-bottom: 28px; + align-items: start; + } + .entrada:last-child { margin-bottom: 0; } + .entrada-titulo { font-size: 0.95rem; color: #ddd; font-weight: 500; grid-column: 1; } + .entrada-local { font-size: 0.85rem; color: var(--dim); grid-column: 1; } + .entrada-periodo { + font-size: 0.82rem; + color: var(--dim); + white-space: nowrap; + grid-column: 2; + grid-row: 1; + text-align: right; + padding-top: 3px; + } + .entrada-desc { + grid-column: 1 / -1; + font-size: 0.87rem; + color: #777; + margin-top: 4px; + line-height: 1.6; + } + .entrada-desc a { color: #777; border-bottom: 1px solid var(--border2); } + .entrada-desc a:hover { color: var(--link); border-color: var(--link); text-decoration: none; } + + /* nota honesta */ + .nota-honesta { + font-size: 0.87rem; + color: #555; + font-style: italic; + padding: 12px 0 12px 16px; + border-left: 2px solid var(--border2); + line-height: 1.7; + } + .nota-honesta a { color: #555; border-bottom: 1px solid var(--border2); } + .nota-honesta a:hover { color: var(--link); text-decoration: none; } + + /* projetos */ + .projeto { + border-left: 1px solid var(--border2); + padding-left: 16px; + margin-bottom: 28px; + } + .projeto:last-child { margin-bottom: 0; } + .projeto-cabecalho { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 16px; + margin-bottom: 4px; + flex-wrap: wrap; + } + .projeto-nome { font-size: 0.95rem; color: #ddd; font-weight: 500; } + .projeto-lang { font-size: 0.75rem; color: var(--dim); font-family: Menlo, Consolas, monospace; } + .projeto-desc { font-size: 0.87rem; color: #777; line-height: 1.6; margin-bottom: 6px; } + .projeto-desc a { color: #777; } + .projeto-desc a:hover { color: var(--link); } + .projeto-link { font-size: 0.78rem; color: var(--dim); } + .projeto-link a { color: var(--dim); } + .projeto-link a:hover { color: var(--link); } + + /* presença */ + .presenca { list-style: none; padding: 0; } + .presenca li { + padding: 10px 0; + border-bottom: 1px solid var(--border); + display: flex; + align-items: baseline; + gap: 14px; + flex-wrap: wrap; + } + .presenca li:last-child { border-bottom: none; } + .presenca-nome { + font-size: 0.9rem; + color: #ddd; + font-weight: 500; + min-width: 110px; + flex-shrink: 0; + } + .presenca-desc { font-size: 0.85rem; color: #777; } + .presenca-desc a { color: #777; } + .presenca-desc a:hover { color: var(--link); } + + /* qualificações */ + .cv-list { list-style: none; padding: 0; } + .cv-list li { + font-size: 0.9rem; + color: #aaa; + padding: 8px 0; + border-bottom: 1px solid var(--border); + display: flex; + gap: 14px; + } + .cv-list li:last-child { border-bottom: none; } + .item-label { + color: var(--dim); + font-size: 0.8rem; + min-width: 90px; + flex-shrink: 0; + padding-top: 1px; + } + + /* interesses */ + .interesses { display: flex; flex-wrap: wrap; gap: 8px; } + .interesse-tag { + font-size: 0.8rem; + color: #999; + border: 1px solid var(--border2); + padding: 4px 12px; + border-radius: 2px; + } + + footer { + margin-top: 80px; + padding-top: 22px; + border-top: 1px solid var(--border); + display: flex; + justify-content: space-between; + font-size: 0.78rem; + color: var(--dim); + flex-wrap: wrap; + gap: 8px; + } + footer a { color: var(--dim); } + footer a:hover { color: var(--fg); } + + @media (max-width: 560px) { + .entrada { grid-template-columns: 1fr; } + .entrada-periodo { grid-column: 1; grid-row: auto; text-align: left; } + .presenca li { flex-direction: column; gap: 4px; } + .projeto-cabecalho { flex-direction: column; gap: 2px; } + } + </style> +</head> +<body> + + <a class="back" href="/">← sivaldodavi.com</a> + + <header class="cv-header"> + <h1>Sivaldo Davi Pereira</h1> + <div class="subtitulo">Bacharelando em Direito · Pinheiro, Maranhão</div> + <div class="contatos"> + <a href="mailto:Sivaldodavi@disroot.org">Sivaldodavi@disroot.org</a> + <span class="sep">·</span> + <span>(98) 98141-7363</span> + <span class="sep">·</span> + <a href="https://www.linkedin.com/in/sivaldo-davi-pereira-156720405/" target="_blank" rel="noopener">LinkedIn</a> + <span class="sep">·</span> + <a href="http://lattes.cnpq.br/0213004367898500" target="_blank" rel="noopener">Lattes</a> + <span class="sep">·</span> + <a href="https://codeberg.org/sivaldodavi" target="_blank" rel="noopener">Codeberg</a> + </div> + <a class="pdf-link" href="/curriculo/arquivo.pdf" target="_blank">↓ versão PDF</a> + </header> + + <main> + + <section class="cv-section objetivo"> + <h2>Objetivo</h2> + <p> + Bacharelando em Direito com interesse em Direito Digital. Busco oportunidade + para atuar em rotinas jurídicas e administrativas, aplicando competências em + redação técnica, pesquisa normativa e comunicação inclusiva. + </p> + </section> + + <section class="cv-section"> + <h2>Formação</h2> + + <div class="entrada"> + <span class="entrada-titulo">Graduação em Direito</span> + <span class="entrada-periodo">2026 – presente</span> + <span class="entrada-local">Faculdade Supremo Redentor (FACSUR) — 1º Período</span> + </div> + + <div class="entrada"> + <span class="entrada-titulo">Ensino Médio e Técnico em Agronegócio</span> + <span class="entrada-periodo">2022 – 2024</span> + <span class="entrada-local">Fundação Bradesco — Unidade Pinheiro, Maranhão</span> + <span class="entrada-desc"> + Formação técnica com ênfase em análise de cadeias produtivas e gestão rural. + </span> + </div> + </section> + + <section class="cv-section"> + <h2>Produção acadêmica</h2> + + <p class="nota-honesta"> + Curso iniciado em 2026. Sem artigos ou publicações formais até o momento — + esta seção será atualizada conforme o desenvolvimento da graduação. + Textos de natureza jurídica são publicados no + <a href="https://sivaldodavi.substack.com" target="_blank" rel="noopener">Substack</a> + e em <a href="https://dir.sivaldodavi.com" target="_blank" rel="noopener">dir.sivaldodavi.com</a>. + </p> + + <!-- + ================================================================ + PRODUÇÃO ACADÊMICA — descomentar quando houver publicações reais + ================================================================ + + <div class="entrada"> + <span class="entrada-titulo"> + LGPD e o acesso a dados pessoais no processo civil: limites e perspectivas + </span> + <span class="entrada-periodo">2027</span> + <span class="entrada-local">Artigo — Revista Res Severa Verum Gaudium (UFRGS), v. X, n. X</span> + <span class="entrada-desc"> + Análise da aplicabilidade da Lei Geral de Proteção de Dados no âmbito do + processo civil, com foco nos limites ao acesso probatório e nas tensões com + o princípio da ampla defesa. + </span> + </div> + + <div class="entrada"> + <span class="entrada-titulo"> + Soberania digital e o direito à autodeterminação informacional + </span> + <span class="entrada-periodo">2026</span> + <span class="entrada-local">Trabalho de conclusão de disciplina — FACSUR, 1º Período</span> + <span class="entrada-desc"> + Paper desenvolvido na disciplina de Teoria Geral do Direito, relacionando o + conceito de soberania estatal com a emergência do direito à + autodeterminação informacional na era digital. + <a href="https://dir.sivaldodavi.com" target="_blank" rel="noopener">Versão publicada →</a> + </span> + </div> + + <div class="entrada"> + <span class="entrada-titulo"> + Iniciação Científica: Direito Digital e regulação algorítmica no Brasil + </span> + <span class="entrada-periodo">2027 – 2028</span> + <span class="entrada-local">FACSUR — orientação: Prof. Me. [Nome do Orientador]</span> + <span class="entrada-desc"> + Pesquisa sobre os marcos regulatórios da inteligência artificial no Brasil, + com ênfase no PL 2.338/2023 e suas implicações para a responsabilidade civil + de sistemas automatizados de decisão. + </span> + </div> + + ================================================================ + --> + + </section> + + <section class="cv-section"> + <h2>Projetos</h2> + + <div class="projeto"> + <div class="projeto-cabecalho"> + <span class="projeto-nome">direito</span> + <span class="projeto-lang">HTML · CSS · JS</span> + </div> + <p class="projeto-desc"> + Site de estudos e materiais de Direito, hospedado em + <a href="https://dir.sivaldodavi.com" target="_blank" rel="noopener">dir.sivaldodavi.com</a>. + Construído com Hugo, reúne anotações, resumos e referências organizadas por disciplina. + </p> + <div class="projeto-link"> + <a href="https://codeberg.org/sivaldodavi/direito" target="_blank" rel="noopener">codeberg.org/sivaldodavi/direito</a> + </div> + </div> + + <div class="projeto"> + <div class="projeto-cabecalho"> + <span class="projeto-nome">sivas-academic</span> + <span class="projeto-lang">Typst</span> + </div> + <p class="projeto-desc"> + Templates de trabalhos acadêmicos em Typst seguindo as normas ABNT — + inclui modelos para artigo científico, case e projeto de pesquisa, + com versões modulares e autocontidas. Inspirado no pacote Abntyp. + </p> + <div class="projeto-link"> + <a href="https://codeberg.org/sivaldodavi/sivas-academic" target="_blank" rel="noopener">codeberg.org/sivaldodavi/sivas-academic</a> + </div> + </div> + + <div class="projeto"> + <div class="projeto-cabecalho"> + <span class="projeto-nome">zap-go</span> + <span class="projeto-lang">Go</span> + </div> + <p class="projeto-desc"> + Utilitário de linha de comando para automação de envio de mensagens via + WhatsApp e e-mail (SMTP). Configurado via arquivo TOML, sem dependências + de serviços de terceiros pagos. + </p> + <div class="projeto-link"> + <a href="https://codeberg.org/sivaldodavi/zap-go" target="_blank" rel="noopener">codeberg.org/sivaldodavi/zap-go</a> + </div> + </div> + + </section> + + <section class="cv-section"> + <h2>Presença & publicações</h2> + <ul class="presenca"> + <!-- + ================================================================ + Descomentar quando os perfis forem criados: + + <li> + <span class="presenca-nome">Substack</span> + <span class="presenca-desc"> + Textos sobre Direito Digital, LGPD e regulação — + <a href="https://sivaldodavi.substack.com" target="_blank" rel="noopener">sivaldodavi.substack.com</a> + </span> + </li> + <li> + <span class="presenca-nome">YouTube</span> + <span class="presenca-desc"> + Vídeos sobre Direito e tecnologia — + <a href="https://youtube.com/@sivaldodavi" target="_blank" rel="noopener">youtube.com/@sivaldodavi</a> + </span> + </li> + <li> + <span class="presenca-nome">Instagram</span> + <span class="presenca-desc"> + Conteúdo jurídico e acadêmico — + <a href="https://instagram.com/sivaldodavi" target="_blank" rel="noopener">instagram.com/sivaldodavi</a> + </span> + </li> + ================================================================ + --> + <li> + <span class="presenca-nome">Site pessoal</span> + <span class="presenca-desc"> + Escritos sobre teologia, filosofia e tecnologia — + <a href="https://sivaldodavi.com">sivaldodavi.com</a> + </span> + </li> + <li> + <span class="presenca-nome">Direito</span> + <span class="presenca-desc"> + Estudos e materiais jurídicos — + <a href="https://dir.sivaldodavi.com" target="_blank" rel="noopener">dir.sivaldodavi.com</a> + </span> + </li> + <li> + <span class="presenca-nome">Codeberg</span> + <span class="presenca-desc"> + Projetos com foco em soberania digital — + <a href="https://codeberg.org/sivaldodavi" target="_blank" rel="noopener">codeberg.org/sivaldodavi</a> + </span> + </li> + <li> + <span class="presenca-nome">Lattes</span> + <span class="presenca-desc"> + <a href="http://lattes.cnpq.br/0213004367898500" target="_blank" rel="noopener">lattes.cnpq.br/0213004367898500</a> + </span> + </li> + </ul> + </section> + + <section class="cv-section"> + <h2>Qualificações</h2> + <ul class="cv-list"> + <li> + <span class="item-label">Idiomas</span> + <span>Português (nativo) · Inglês básico (NewCenter Cursos) · LIBRAS intermediário (FIC — Fundação Bradesco)</span> + </li> + <li> + <span class="item-label">Escrita</span> + <span>Redação técnica e jurídica · Typst · Markdown</span> + </li> + <li> + <span class="item-label">Informática</span> + <span>Pacote Office · Google Workspace · Linux (Alpine, dwm) · Shell scripting · Go</span> + </li> + </ul> + </section> + + <section class="cv-section"> + <h2>Áreas de interesse</h2> + <div class="interesses"> + <span class="interesse-tag">Direito Digital</span> + <span class="interesse-tag">LGPD</span> + <span class="interesse-tag">Segurança da Informação</span> + <span class="interesse-tag">Compliance</span> + <span class="interesse-tag">Legal Ops</span> + <span class="interesse-tag">Automação documental</span> + <span class="interesse-tag">Acessibilidade institucional</span> + <span class="interesse-tag">Soberania digital</span> + </div> + </section> + + <section class="cv-section"> + <h2>Informações adicionais</h2> + <ul class="cv-list"> + <li> + <span class="item-label">Agronegócio</span> + <span>Experiência em análise de cadeias produtivas e gestão rural (Técnico em Agronegócio, Fundação Bradesco).</span> + </li> + <li> + <span class="item-label">Pesquisa</span> + <span>Facilidade com pesquisa técnica e jurídica, organização de arquivos e aprendizado de novos sistemas.</span> + </li> + </ul> + </section> + + </main> + + <footer> + <span>GPL 3.0 · CC BY-NC-SA 4.0</span> + </footer> + +</body> +</html> diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..2906524 --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,75 @@ +{{ partial "header.html" . -}} +{{ partial "navbar.html" . -}} + +<main> + + <section class="hero"> + <div class="hero-text"> + <h1>Ave, sou Sivaldo Davi.</h1> + <p> + Estudante de Direito, leitor e entusiasta do Unix. + Penso sobre teologia, filosofia e tecnologia — + às vezes em separado, às vezes como se fossem a mesma coisa. + </p> + <p> + Por aqui também deixo o que uso e indico: + <a href="/software/">software</a>, + <a href="/hardware/">hardware</a> + e <a href="/websites/">websites</a>. + </p> + <p> + Pode me encontrar pelo + <a href="mailto:sivaldo@sivaldodavi.com">e-mail</a> + ou no <a href="https://codeberg.org/sivaldodavi">Codeberg</a>. + </p> + </div> + <div class="hero-photo"> + <img src="/p/pic.webp" alt="Sivaldo Davi"> + </div> + </section> + + <hr> + + <div class="grid"> + + <section> + <h2>Escritos recentes</h2> + {{ $meses := slice "jan." "fev." "mar." "abr." "mai." "jun." "jul." "ago." "set." "out." "nov." "dez." }} + <ul class="posts"> + {{ range first 3 (where .Site.RegularPages "Section" "escritos") }} + <li> + <a href="{{ .Permalink }}">{{ .Title }}</a> + {{ with .Params.excerpt }}<div class="post-excerpt">{{ . }}</div>{{ end }} + <div class="post-meta">{{ .Date.Day }} {{ index $meses (sub .Date.Month 1) }} {{ .Date.Year }}</div> + </li> + {{ end }} + </ul> + <a class="ver-todos" href="/escritos/">todos os escritos →</a> + </section> + + <section> + <h2>Leituras</h2> + <ul class="books"> + {{ range first 3 (where (where .Site.RegularPages "Section" "leituras") "Params.destaque" true) }} + <li> + {{ if .Params.capa }} + <div class="book-capa"><img src="{{ .Params.capa }}" alt="Capa do livro {{ .Title }}"></div> + {{ else }} + <div class="book-capa"></div> + {{ end }} + <div class="book-info"> + <a class="book-title" href="{{ .Permalink }}">{{ .Title }}</a> + <span class="book-author">{{ .Params.autor }}</span> + {{ with index .Params.tags 0 }}<span class="tag">{{ . }}</span>{{ end }} + </div> + </li> + {{ end }} + </ul> + <a class="ver-todos" href="/leituras/">todas as leituras →</a> + </section> + + </div> + +</main> + +{{ partial "footer.html" . }} diff --git a/layouts/leituras/list.html b/layouts/leituras/list.html new file mode 100644 index 0000000..f6844cb --- /dev/null +++ b/layouts/leituras/list.html @@ -0,0 +1,90 @@ +{{ partial "header.html" . -}} + +<main class="post-body"> + + <a class="back-link" href="/">← sivaldodavi.com</a> + + <h1 class="page-title">Leituras</h1> + <p class="page-intro"> + Livros que li, estou lendo, ou que comecei e parei — organizados por área. + </p> + + {{/* Categorias e subcategorias são derivadas do conteúdo (frontmatter), e não + mais fixadas no template — basta adicionar "categoria" num novo livro + para que ele apareça automaticamente, sem editar este arquivo. */}} + {{ $livrosTodos := .RegularPages }} + {{ $categorias := slice }} + {{ range $livrosTodos }} + {{ with .Params.categoria }} + {{ $categorias = $categorias | append . }} + {{ end }} + {{ end }} + {{ $categorias = $categorias | uniq | sort }} + + <nav class="indice"> + {{ range $categorias }} + <a href="#{{ . | urlize }}">{{ . }}</a> + {{ end }} + </nav> + + {{ range $categorias }} + {{ $categoria := . }} + {{ $livros := where $livrosTodos "Params.categoria" $categoria }} + <section class="categoria" id="{{ $categoria | urlize }}"> + <h2>{{ $categoria }}</h2> + + {{ $semSub := where $livros "Params.subcategoria" "" }} + {{ range $semSub.ByTitle }} + <div class="livro"> + {{ if .Params.capa }} + <div class="livro-capa"><img src="{{ .Params.capa }}" alt="Capa do livro {{ .Title }}"></div> + {{ else }} + <div class="livro-capa sem-capa">sem capa</div> + {{ end }} + <div class="livro-info"> + <a class="livro-titulo" href="{{ .Permalink }}">{{ .Title }}</a> + <span class="livro-autor">{{ .Params.autor }}</span> + </div> + {{ if and .Params.status (ne .Params.status "lido") }} + <span class="livro-status livro-status-{{ .Params.status | urlize }}">{{ .Params.status }}</span> + {{ end }} + </div> + {{ end }} + + {{ $subcategorias := slice }} + {{ range $livros }} + {{ with .Params.subcategoria }} + {{ $subcategorias = $subcategorias | append . }} + {{ end }} + {{ end }} + {{ $subcategorias = $subcategorias | uniq | sort }} + + {{ range $subcategorias }} + {{ $sub := . }} + {{ $livrosSub := where $livros "Params.subcategoria" $sub }} + <div class="subcategoria"> + <h3>{{ $sub }}</h3> + {{ range $livrosSub.ByTitle }} + <div class="livro"> + {{ if .Params.capa }} + <div class="livro-capa"><img src="{{ .Params.capa }}" alt="Capa do livro {{ .Title }}"></div> + {{ else }} + <div class="livro-capa sem-capa">sem capa</div> + {{ end }} + <div class="livro-info"> + <a class="livro-titulo" href="{{ .Permalink }}">{{ .Title }}</a> + <span class="livro-autor">{{ .Params.autor }}</span> + </div> + {{ if and .Params.status (ne .Params.status "lido") }} + <span class="livro-status livro-status-{{ .Params.status | urlize }}">{{ .Params.status }}</span> + {{ end }} + </div> + {{ end }} + </div> + {{ end }} + </section> + {{ end }} + +</main> + +{{ partial "footer.html" . }} diff --git a/layouts/leituras/single.html b/layouts/leituras/single.html new file mode 100644 index 0000000..1f0b38c --- /dev/null +++ b/layouts/leituras/single.html @@ -0,0 +1,38 @@ +{{ partial "header.html" . -}} + +<main class="post-body"> + + <a class="back-link" href="/leituras/">← leituras</a> + + <div class="livro-header"> + {{ if .Params.capa }} + <div class="livro-capa-grande"><img src="{{ .Params.capa }}" alt="Capa do livro {{ .Title }}, de {{ .Params.autor }}"></div> + {{ else }} + <div class="livro-capa-grande sem-capa">sem capa</div> + {{ end }} + <div class="livro-header-info"> + <h1>{{ .Title }}</h1> + <span class="autor">{{ .Params.autor }}</span> + <div class="meta"> + {{ with .Params.status }}<span class="status{{ if ne . "lido" }} status-{{ . | urlize }}{{ end }}">{{ . }}</span>{{ end }} + {{ range .Params.tags }}<span class="tag">{{ . }}</span>{{ end }} + </div> + {{ with .Params.link_externo }} + <a class="link-externo" href="{{ . }}" target="_blank" rel="noopener">↗ ver online</a> + {{ end }} + </div> + </div> + + <hr> + + <div class="resenha"> + {{ if .Content }} + {{ .Content }} + {{ else }} + <p class="sem-resenha">Ainda sem resenha — só na estante por enquanto.</p> + {{ end }} + </div> + +</main> + +{{ partial "footer.html" . }} diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html new file mode 100644 index 0000000..8d9cf58 --- /dev/null +++ b/layouts/partials/footer.html @@ -0,0 +1,10 @@ +<footer> + <div class="footer-left"> + Since 2026 | <a href="https://codeberg.org/sivaldodavi">Source (Git)</a> + </div> + <div class="footer-right"> + GPL 3.0 | CC BY-NC-SA 4.0 + </div> +</footer> +</body> +</html> diff --git a/layouts/partials/header.html b/layouts/partials/header.html new file mode 100644 index 0000000..c29eabc --- /dev/null +++ b/layouts/partials/header.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html lang="{{ .Site.LanguageCode }}"> + <head> + <title>{{ if not .IsHome }}{{ .Title | title }} | {{ end }}{{ .Site.Title }}</title> + <link rel="stylesheet" type="text/css" href="/index.css"> + <link rel="icon" type="image/webp" href="/p/pic.webp"> + + {{ if or .Params.noindex (eq .Kind "404") }} + <meta name="robots" content="noindex, nofollow"> + {{ else }} + <meta name="robots" content="index, follow"> + {{ end }} + + {{ $desc := "Ave, meu nome é Sivaldo Davi e este é meu site na internet." }} + {{ with .Params.descricao }}{{ $desc = . }}{{ end }} + {{ if and (not .Params.descricao) (not .IsHome) }} + {{ with .Summary }}{{ $desc = . | plainify | truncate 160 }}{{ end }} + {{ end }} + <meta name="description" content="{{ $desc }}"> + <meta name="author" content="Sivaldo Davi"> + + <meta property="og:type" content="website"> + <meta property="og:title" content="{{ if not .IsHome }}{{ .Title | title }} | {{ end }}{{ .Site.Title }}"> + <meta property="og:description" content="{{ $desc }}"> + <meta property="og:image" content="{{ if .Params.capa }}{{ .Params.capa | absURL }}{{ else }}{{ "/p/pic.webp" | absURL }}{{ end }}"> + <meta property="og:url" content="{{ .Permalink }}"> + <meta name="twitter:card" content="summary"> + + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta charset="utf-8"> + </head> + <body> + diff --git a/layouts/partials/navbar.html b/layouts/partials/navbar.html new file mode 100644 index 0000000..83bf631 --- /dev/null +++ b/layouts/partials/navbar.html @@ -0,0 +1,17 @@ +<nav class="nav-container {{ if .IsHome }}home-nav{{ else }}post-nav{{ end }}"> + {{ if .IsHome }} + <a href="{{ .Site.BaseURL }}escritos/">escritos</a> + <a href="{{ .Site.BaseURL }}leituras/">leituras</a> + <a href="{{ .Site.BaseURL }}curriculo/">currículo</a> + <a href="{{ .Site.BaseURL }}contact/">contato</a> + {{ else }} + <div class="centered-post-title"> + <a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a> + </div> + <div class="post-nav-links"> + <a href="{{ .Site.BaseURL }}escritos/">escritos</a> + <a href="{{ .Site.BaseURL }}leituras/">leituras</a> + <a href="{{ .Site.BaseURL }}curriculo/">currículo</a> + </div> + {{ end }} +</nav> diff --git a/layouts/shortcodes/img.html b/layouts/shortcodes/img.html new file mode 100644 index 0000000..40002cf --- /dev/null +++ b/layouts/shortcodes/img.html @@ -0,0 +1,34 @@ +<!-- + class: class of figure + link: url of image + id: id of image + alt: alt text + caption: caption + mouse: text when moused over + width: fixed width (ex: 600px, 80%) + maxwidth: max width (ex: 800px) +--> + +<figure {{ with .Get "class" }}class="{{.}}"{{ end -}}> + {{- with .Get "link"}}<a href="{{.}}">{{ end -}} + <img + src="{{ .Get "src" }}" + {{- with .Get "mouse" }} title="{{.}}"{{ end -}} + {{- with .Get "id" }} id="{{.}}"{{ end -}} + {{- with .Get "alt" }} alt="{{.}}"{{ end -}} + {{- if or (.Get "width") (.Get "maxwidth") }} + style=" + {{- with .Get "width" }}width: {{.}};{{ end -}} + {{- with .Get "maxwidth" }}max-width: {{.}};{{ end -}} + height: auto; + " + {{- end -}} + > + {{- if .Get "link"}}</a>{{ end -}} + + {{- with .Get "caption" -}} + <figcaption> + {{- . -}} + </figcaption> + {{- end -}} +</figure> diff --git a/layouts/shortcodes/rawhtml.html b/layouts/shortcodes/rawhtml.html new file mode 100644 index 0000000..59448a1 --- /dev/null +++ b/layouts/shortcodes/rawhtml.html @@ -0,0 +1 @@ +{{ .Inner }} diff --git a/layouts/shortcodes/video.html b/layouts/shortcodes/video.html new file mode 100644 index 0000000..51be6ec --- /dev/null +++ b/layouts/shortcodes/video.html @@ -0,0 +1,3 @@ +<video width="640" height="480" preload="none" controls> + <source src="{{ .Get "src" }}" type="video/webm"> +</video> diff --git a/layouts/taxonomy/term.html b/layouts/taxonomy/term.html new file mode 100644 index 0000000..d133caa --- /dev/null +++ b/layouts/taxonomy/term.html @@ -0,0 +1,21 @@ +{{ partial "header.html" . -}} +{{ partial "navbar.html" . -}} + +<main> + <section class="post-body"> + <h1 class="page-title" style="text-align:center;">{{ .Title }}</h1> + + <ul class="recent-posts"> + {{ range .Pages.ByDate.Reverse }} + <li> + <a href="{{ .Permalink }}">{{ .Title }}</a> + {{ with .Params.date }} + <span class="recent-post-date">{{ . | time | dateFormat "2006-01-02" }}</span> + {{ end }} + </li> + {{ end }} + </ul> + </section> +</main> + +{{ partial "footer.html" . }} |
