trial custom theme
authorAngeloR <xangelo@gmail.com>
Mon, 12 Jan 2026 14:45:46 +0000 (09:45 -0500)
committerAngeloR <xangelo@gmail.com>
Mon, 12 Jan 2026 15:07:18 +0000 (10:07 -0500)
13 files changed:
.gitmodules
themes/custom-mytheme/layouts/_default/baseof.html [new file with mode: 0644]
themes/custom-mytheme/layouts/_default/list.html [new file with mode: 0644]
themes/custom-mytheme/layouts/_default/single.html [new file with mode: 0644]
themes/custom-mytheme/layouts/index.html [new file with mode: 0644]
themes/custom-mytheme/layouts/partials/footer.html [new file with mode: 0644]
themes/custom-mytheme/layouts/partials/head.html [new file with mode: 0644]
themes/custom-mytheme/layouts/partials/header.html [new file with mode: 0644]
themes/custom-mytheme/layouts/partials/post-list.html [new file with mode: 0644]
themes/custom-mytheme/static/css/style.css [new file with mode: 0644]
themes/custom-mytheme/theme.toml [new file with mode: 0644]
themes/hugo-bearblog [new submodule]
themes/hugo-xmin [new submodule]

index 5630415b0d428c59c00cee824a753edbc4ca5c45..b009d56d377a9bf48e5e4d2c442bba5eec02c749 100644 (file)
@@ -20,3 +20,9 @@
 [submodule "themes/plain-hugo-theme"]
        path = themes/plain-hugo-theme
        url = git@github.com:AngeloR/plain-hugo-theme.git
+[submodule "themes/hugo-bearblog"]
+       path = themes/hugo-bearblog
+       url = https://github.com/janraasch/hugo-bearblog.git
+[submodule "themes/hugo-xmin"]
+       path = themes/hugo-xmin
+       url = https://github.com/yihui/hugo-xmin.git
diff --git a/themes/custom-mytheme/layouts/_default/baseof.html b/themes/custom-mytheme/layouts/_default/baseof.html
new file mode 100644 (file)
index 0000000..ebdb47d
--- /dev/null
@@ -0,0 +1,13 @@
+<!doctype html>
+<html lang="{{ .Site.Language.Lang }}">
+  <head>
+    {{ partial "head.html" . }}
+  </head>
+  <body class="site">
+    {{ partial "header.html" . }}
+    <main class="page">
+      {{ block "main" . }}{{ end }}
+    </main>
+    {{ partial "footer.html" . }}
+  </body>
+</html>
diff --git a/themes/custom-mytheme/layouts/_default/list.html b/themes/custom-mytheme/layouts/_default/list.html
new file mode 100644 (file)
index 0000000..a4b506e
--- /dev/null
@@ -0,0 +1,24 @@
+{{ define "main" }}
+  <section class="list-header">
+    <h1>{{ .Title }}</h1>
+    {{ if .Content }}
+      <div class="list-content">
+        {{ .Content }}
+      </div>
+    {{ end }}
+  </section>
+  <section class="list-items">
+    {{ if eq .Section "posts" }}
+      {{ partial "post-list.html" . }}
+    {{ else }}
+      <ul class="post-list">
+        {{ range .Pages.ByDate.Reverse }}
+          <li>
+            <span class="post-date">{{ .Date.Format "2006-01-02" }}</span>
+            <a href="{{ .RelPermalink }}">{{ .Title }}</a>
+          </li>
+        {{ end }}
+      </ul>
+    {{ end }}
+  </section>
+{{ end }}
diff --git a/themes/custom-mytheme/layouts/_default/single.html b/themes/custom-mytheme/layouts/_default/single.html
new file mode 100644 (file)
index 0000000..be214b3
--- /dev/null
@@ -0,0 +1,20 @@
+{{ define "main" }}
+  <article class="post">
+    <header class="post-header">
+      <h1>{{ .Title }}</h1>
+      <p class="post-meta">
+        <time datetime="{{ .Date.Format "2006-01-02" }}">{{ .Date.Format "January 2, 2006" }}</time>
+        {{ with .Params.tags }}
+          <span class="post-tags">
+            {{ range . }}
+              <span class="tag">{{ . }}</span>
+            {{ end }}
+          </span>
+        {{ end }}
+      </p>
+    </header>
+    <div class="post-content">
+      {{ .Content }}
+    </div>
+  </article>
+{{ end }}
diff --git a/themes/custom-mytheme/layouts/index.html b/themes/custom-mytheme/layouts/index.html
new file mode 100644 (file)
index 0000000..ed01fc8
--- /dev/null
@@ -0,0 +1,11 @@
+{{ define "main" }}
+  {{ if .Content }}
+    <section class="home-intro">
+      {{ .Content }}
+    </section>
+  {{ end }}
+  <section class="home-posts">
+    <h2>All Posts</h2>
+    {{ partial "post-list.html" . }}
+  </section>
+{{ end }}
diff --git a/themes/custom-mytheme/layouts/partials/footer.html b/themes/custom-mytheme/layouts/partials/footer.html
new file mode 100644 (file)
index 0000000..b53e86e
--- /dev/null
@@ -0,0 +1,3 @@
+<footer class="site-footer">
+  <p>{{ with .Site.Copyright }}{{ . }}{{ else }}© {{ now.Format "2006" }} {{ .Site.Title }}{{ end }}</p>
+</footer>
diff --git a/themes/custom-mytheme/layouts/partials/head.html b/themes/custom-mytheme/layouts/partials/head.html
new file mode 100644 (file)
index 0000000..de79732
--- /dev/null
@@ -0,0 +1,7 @@
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} | {{ .Site.Title }}{{ end }}</title>
+<link rel="stylesheet" href="{{ "css/style.css" | relURL }}">
+{{ with .OutputFormats.Get "rss" }}
+  <link rel="alternate" type="application/rss+xml" title="{{ $.Site.Title }}" href="{{ .RelPermalink }}">
+{{ end }}
diff --git a/themes/custom-mytheme/layouts/partials/header.html b/themes/custom-mytheme/layouts/partials/header.html
new file mode 100644 (file)
index 0000000..dfc75f6
--- /dev/null
@@ -0,0 +1,27 @@
+<header class="site-header">
+  <div class="site-title">
+    <a href="{{ "/" | relURL }}">{{ .Site.Title }}</a>
+  </div>
+  {{ with .Site.Params.subtitle }}
+    <p class="site-subtitle">{{ . }}</p>
+  {{ end }}
+  <nav class="site-nav" aria-label="Primary">
+    {{ with .Site.Menus.main }}
+      {{ range . }}
+        <a href="{{ .URL | relURL }}">{{ .Name }}</a>
+      {{ end }}
+    {{ else }}
+      <a href="{{ "/" | relURL }}">Home</a>
+      {{ $pages := where .Site.RegularPages "Section" "pages" }}
+      {{ range $pages }}
+        <a href="{{ .RelPermalink }}">{{ .Title }}</a>
+      {{ end }}
+      {{ with .Site.GetPage "/posts" }}
+        <a href="{{ .RelPermalink }}">Posts</a>
+      {{ end }}
+      {{ with .OutputFormats.Get "rss" }}
+        <a href="{{ .RelPermalink }}">RSS</a>
+      {{ end }}
+    {{ end }}
+  </nav>
+</header>
diff --git a/themes/custom-mytheme/layouts/partials/post-list.html b/themes/custom-mytheme/layouts/partials/post-list.html
new file mode 100644 (file)
index 0000000..1be34e3
--- /dev/null
@@ -0,0 +1,13 @@
+{{ $posts := where .Site.RegularPages "Section" "posts" }}
+{{ $posts = sort $posts "Date" "desc" }}
+{{ range $group := $posts.GroupByDate "2006" }}
+  <h3 class="post-year">{{ $group.Key }}</h3>
+  <ul class="post-list">
+    {{ range $group.Pages }}
+      <li>
+        <span class="post-date">{{ .Date.Format "2006-01-02" }}</span>
+        <a href="{{ .RelPermalink }}">{{ .Title }}</a>
+      </li>
+    {{ end }}
+  </ul>
+{{ end }}
diff --git a/themes/custom-mytheme/static/css/style.css b/themes/custom-mytheme/static/css/style.css
new file mode 100644 (file)
index 0000000..0e2c2e3
--- /dev/null
@@ -0,0 +1,240 @@
+:root {
+  --ink: #0f0f0f;
+  --paper: #fbfbf8;
+  --accent: #0f2a57;
+  --border: #d7d7d0;
+  --muted: #606060;
+}
+
+* {
+  box-sizing: border-box;
+}
+
+html {
+  font-size: 18px;
+}
+
+body {
+  margin: 0;
+  color: var(--ink);
+  background-color: var(--paper);
+  font-family: "Times New Roman", Times, serif;
+  line-height: 1.8;
+}
+
+.site {
+  min-height: 100vh;
+  display: flex;
+  flex-direction: column;
+}
+
+.site-header,
+.site-footer,
+.page {
+  width: min(700px, 92vw);
+  margin: 0 auto;
+}
+
+.site-header {
+  padding: 2.8rem 0 1.8rem;
+  border-bottom: 1px solid var(--border);
+  background-color: var(--paper);
+}
+
+.site-title a {
+  font-size: clamp(2rem, 4vw, 3.2rem);
+  text-decoration: none;
+  color: var(--ink);
+  letter-spacing: 0.01em;
+}
+
+.site-subtitle {
+  margin: 0.6rem 0 0;
+  font-style: italic;
+  color: var(--muted);
+}
+
+.site-nav {
+  margin-top: 1.5rem;
+  display: flex;
+  flex-wrap: wrap;
+  gap: 0.6rem 1.2rem;
+  font-family: "Courier New", Courier, monospace;
+  font-size: 0.85rem;
+  text-transform: uppercase;
+  letter-spacing: 0.12em;
+}
+
+.site-nav a {
+  color: var(--ink);
+  text-decoration: none;
+  padding: 0.1rem 0;
+  border-bottom: 1px solid transparent;
+}
+
+.site-nav a:hover,
+.site-nav a:focus {
+  border-color: var(--accent);
+  color: var(--accent);
+}
+
+.page {
+  flex: 1;
+  padding: 2.5rem 0 3rem;
+  background-color: var(--paper);
+}
+
+.home-intro {
+  margin-bottom: 3rem;
+}
+
+.home-posts h2 {
+  margin-bottom: 1rem;
+  font-size: 1.2rem;
+  text-transform: uppercase;
+  letter-spacing: 0.18em;
+  border-bottom: 1px solid var(--border);
+  display: inline-block;
+  padding-bottom: 0.2rem;
+}
+
+.post-list {
+  list-style: none;
+  padding: 0;
+  margin: 1.5rem 0 0;
+  display: flex;
+  flex-direction: column;
+  gap: 0.9rem;
+}
+
+.post-year {
+  margin: 2rem 0 0.5rem;
+  font-size: 1.2rem;
+  letter-spacing: 0.2em;
+  text-transform: uppercase;
+  border-bottom: 2px solid var(--border);
+  display: block;
+  padding-bottom: 0.2rem;
+}
+
+.post-list li {
+  padding: 0.8rem 1rem;
+  border: 1px solid var(--border);
+  background: #ffffff;
+  display: grid;
+  grid-template-columns: 8.5rem 1fr;
+  gap: 1rem;
+  align-items: baseline;
+}
+
+.post-date {
+  font-family: "Courier New", Courier, monospace;
+  color: var(--muted);
+  font-size: 0.9rem;
+}
+
+.post-list a {
+  color: var(--ink);
+  text-decoration: none;
+  border-bottom: 2px solid transparent;
+}
+
+.post-list a:hover,
+.post-list a:focus {
+  border-color: var(--accent);
+  color: var(--accent);
+}
+
+.post-header h1 {
+  font-size: clamp(1.6rem, 3vw, 2.4rem);
+  line-height: 1.2;
+  margin-bottom: 0.4rem;
+}
+
+.post-meta {
+  margin: 0;
+  font-family: "Courier New", Courier, monospace;
+  text-transform: uppercase;
+  letter-spacing: 0.12em;
+  font-size: 0.8rem;
+  color: var(--muted);
+}
+
+.post-tags {
+  margin-left: 1rem;
+}
+
+.tag {
+  display: inline-block;
+  padding: 0.1rem 0.4rem;
+  border: 1px solid var(--border);
+  margin-right: 0.4rem;
+}
+
+.post-content {
+  margin-top: 2rem;
+}
+
+.post-content h2,
+.post-content h3,
+.post-content h4 {
+  border-bottom: 1px solid var(--border);
+  display: inline-block;
+  padding-bottom: 0.2rem;
+}
+
+.post-content a {
+  color: var(--accent);
+  text-decoration: underline;
+  text-decoration-thickness: 1px;
+}
+
+.post-content pre {
+  padding: 1rem;
+  border: 1px solid var(--border);
+  background: #0f0f0f;
+  color: #f2f2f2;
+  overflow-x: auto;
+}
+
+.post-content code {
+  font-family: "Courier New", Courier, monospace;
+  font-size: 0.95rem;
+}
+
+blockquote {
+  margin: 1.5rem 0;
+  padding: 1rem 1.5rem;
+  border-left: 4px solid var(--border);
+  background: #ffffff;
+}
+
+img {
+  max-width: 100%;
+  height: auto;
+  border: 1px solid var(--border);
+}
+
+.site-footer {
+  padding: 2rem 0 3rem;
+  border-top: 1px solid var(--border);
+  font-family: "Courier New", Courier, monospace;
+  text-transform: uppercase;
+  letter-spacing: 0.12em;
+  color: var(--muted);
+  background-color: var(--paper);
+}
+
+@media (max-width: 720px) {
+  html {
+    font-size: 16px;
+  }
+
+  .site-nav {
+    gap: 0.5rem 1rem;
+  }
+
+  .post-list li {
+    grid-template-columns: 1fr;
+  }
+}
diff --git a/themes/custom-mytheme/theme.toml b/themes/custom-mytheme/theme.toml
new file mode 100644 (file)
index 0000000..fc9e886
--- /dev/null
@@ -0,0 +1,8 @@
+name = "custom-mytheme"
+license = "MIT"
+licenselink = "https://opensource.org/licenses/MIT"
+description = "Minimal, brutalist-inspired Hugo theme."
+min_version = "0.80.0"
+
+[author]
+  name = "Angelo Rodrigues"
diff --git a/themes/hugo-bearblog b/themes/hugo-bearblog
new file mode 160000 (submodule)
index 0000000..e43c252
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit e43c252b8dded99643a6217c516762c0049fe37d
diff --git a/themes/hugo-xmin b/themes/hugo-xmin
new file mode 160000 (submodule)
index 0000000..c871e56
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c871e5665f5eceb919c8fdb284b73c7a07012646