diff --git a/config.toml b/config.toml index f452bfec..dff4d6ae 100644 --- a/config.toml +++ b/config.toml @@ -57,7 +57,7 @@ title = "~/tabi" description = "tabi es un tema accesible para Zola con búsqueda, soporte multilingüe, JavaScript opcional, una puntuación perfecta en Lighthouse y documentación exhaustiva. Diseñado para sitios web y blogs personales." generate_feeds = true taxonomies = [{name = "tags", feed = true}] -build_search_index = true +build_search_index = false [languages.ca] title = "~/tabi" @@ -178,6 +178,8 @@ iine_icon = "thumbs_up" # See https://iine.to/#customise # Unify like counts across all language versions of the same page. # When enabled, likes on /es/blog/hello/ will count towards /blog/hello/ (default language). iine_unified_languages = true +# Enable iine like buttons on micro posts. +micro_iine = true # Show "Jump to posts" link next to series' title. # By default, the link appears automatically when a series description exceeds 2000 characters. diff --git a/content/_index.md b/content/_index.md index 4d1dbe67..72bbe673 100644 --- a/content/_index.md +++ b/content/_index.md @@ -10,6 +10,10 @@ projects_path = "projects/_index.md" max_projects = 3 show_projects_first = false social_media_card = "index.jpg" +micro_path = "micro/_index.md" +max_micro = 3 +micro_section_name = "Latest thoughts" +show_micro = true +++ tabi is an accessible [Zola](https://www.getzola.org) theme with [search](@/blog/mastering-tabi-settings/index.md#search), [multi-language support](@/blog/faq-languages/index.md), [optional JavaScript](@/blog/javascript/index.md), a perfect Lighthouse score, and comprehensive documentation. Crafted for personal websites and blogs. diff --git a/content/micro/2025-11-08-1430.md b/content/micro/2025-11-08-1430.md new file mode 100644 index 00000000..8224e9a5 --- /dev/null +++ b/content/micro/2025-11-08-1430.md @@ -0,0 +1,6 @@ ++++ +title = "Start microblogs to capture ideas" +date = 2025-11-08T14:30:00+08:00 ++++ + +Why Microblog: Thoughts decay without capture; short posts reduce friction between idea and publication. \ No newline at end of file diff --git a/content/micro/2025-11-08-2211.md b/content/micro/2025-11-08-2211.md new file mode 100644 index 00000000..1ec52246 --- /dev/null +++ b/content/micro/2025-11-08-2211.md @@ -0,0 +1,6 @@ ++++ +title = "Start writing" +date = 2025-11-08T22:11:53+08:00 ++++ + +Writing clarifies thinking and compounds your expertise into searchable, permanent knowledge capital. diff --git a/content/micro/2025-11-08-2226.md b/content/micro/2025-11-08-2226.md new file mode 100644 index 00000000..dc490a19 --- /dev/null +++ b/content/micro/2025-11-08-2226.md @@ -0,0 +1,6 @@ ++++ +title = "SSG is simple" +date = 2025-11-08T22:26:37+08:00 ++++ + +Why use SSG: Pre-rendered HTML eliminates servers, databases, and runtime vulnerabilities while maximizing speed. diff --git a/content/micro/2025-11-08-2300.md b/content/micro/2025-11-08-2300.md new file mode 100644 index 00000000..9fdf4199 --- /dev/null +++ b/content/micro/2025-11-08-2300.md @@ -0,0 +1,6 @@ ++++ +title = "Just ship the code" +date = 2025-11-08T23:00:00+08:00 ++++ + +Shipping code is better than perfect code. Ship it. \ No newline at end of file diff --git a/content/micro/_index.md b/content/micro/_index.md new file mode 100644 index 00000000..b224aaa6 --- /dev/null +++ b/content/micro/_index.md @@ -0,0 +1,8 @@ ++++ +title = "Micro" +description = "Short blogs" +sort_by = "date" +template = "section.html" +paginate_by = 20 +generate_feeds = true ++++ \ No newline at end of file diff --git a/sass/main.scss b/sass/main.scss index d1470ff3..3b3b7637 100644 --- a/sass/main.scss +++ b/sass/main.scss @@ -12,6 +12,7 @@ @use 'parts/_image-hover.scss'; @use 'parts/_image-toggler.scss'; @use 'parts/_image.scss'; +@use 'parts/_micro.scss'; @use 'parts/_misc.scss'; @use 'parts/_multilingual_quote.scss'; @use 'parts/_pagination.scss'; diff --git a/sass/parts/_micro.scss b/sass/parts/_micro.scss new file mode 100644 index 00000000..ca04e557 --- /dev/null +++ b/sass/parts/_micro.scss @@ -0,0 +1,65 @@ +#micro-posts { + margin-top: 4rem; +} + +.micro-list { + .micro-entry { + border-bottom: 0.5px solid var(--divider-color); + padding: 1.3rem 0; + + &:last-child { + border-bottom: none; + } + } + + .micro-date { + display: inline-block; + transition: color 0.15s; + color: var(--meta-color); + font-weight: 300; + font-size: 0.85rem; + text-decoration: none; + + &:hover { + background-color: transparent; + color: var(--primary-color); + } + } + + .micro-meta { + display: flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 0.35rem; + + .iine-button { + color: var(--meta-color); + font-size: 0.85rem; + } + } + + .micro-text { + color: var(--text-color); + font-weight: 350; + font-size: 0.95rem; + line-height: 1.6; + + p { + margin: 0.5rem 0 1rem; + + &:first-child { + margin-top: 0; + } + + &:last-child { + margin-bottom: 0; + } + } + } +} + +@media only screen and (max-width: 1100px) { + #micro-posts { + margin-top: 3rem; + } +} diff --git a/scripts/new-micro.sh b/scripts/new-micro.sh new file mode 100755 index 00000000..db333cec --- /dev/null +++ b/scripts/new-micro.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# Quick micro post generator - eliminates title/date friction + +set -euo pipefail + +# Get current timestamp +NOW=$(date +"%Y-%m-%dT%H:%M:%S%:z") +FILENAME=$(date +"%Y-%m-%d-%H%M") +TITLE=$(date +"%Y-%m-%d %H:%M") + +# Get content from stdin or prompt +if [ -t 0 ]; then + echo "Enter micro post content (Ctrl+D when done):" + CONTENT=$(cat) +else + CONTENT=$(cat) +fi + +# Create post +cat > "content/micro/${FILENAME}.md" < {%- endif -%} diff --git a/templates/partials/main_page_micro_list.html b/templates/partials/main_page_micro_list.html new file mode 100644 index 00000000..dc4f2129 --- /dev/null +++ b/templates/partials/main_page_micro_list.html @@ -0,0 +1,38 @@ +{% if section.extra.show_micro | default(value=false) %} + {% if section.extra.micro_path %} + {%- set micro_section = get_section(path=section.extra.micro_path) -%} + {%- if micro_section -%} + {%- set show_pages = micro_section.pages -%} + {%- set max_micro = section.extra.max_micro | default(value=5) -%} + {%- set section_name = section.extra.micro_section_name | default(value="Latest Thoughts") -%} +
+

{{ section_name }}

+
+ {% for post in show_pages | slice(end=max_micro) %} +
+
+ + + + {%- if config.extra.micro_iine | default(value=false) -%} + {%- set slug = post.path -%} + {%- include "partials/iine_button.html" -%} + {%- endif -%} +
+
+ {{ post.content | safe }} +
+
+ {% endfor %} +
+ {%- if show_pages | length > max_micro -%} + + {%- endif -%} +
+ {%- endif -%} + {% endif %} +{% endif %} diff --git a/templates/section.html b/templates/section.html index 3739461b..4d996650 100644 --- a/templates/section.html +++ b/templates/section.html @@ -52,6 +52,9 @@ {%- include "partials/main_page_posts_list.html" -%} {%- include "partials/main_page_projects_list.html" -%} {%- endif -%} + +{# Add micro posts section #} +{%- include "partials/main_page_micro_list.html" -%} {%- include "partials/extra_features.html" -%} diff --git a/theme.toml b/theme.toml index 97e4e8d8..ebecad55 100644 --- a/theme.toml +++ b/theme.toml @@ -124,6 +124,8 @@ iine_icon = "heart" # See https://iine.to/#customise # Unify like counts across all language versions of the same page. # When enabled, likes on /es/blog/hello/ will count towards /blog/hello/ (default language). iine_unified_languages = true +# Enable iine like buttons on micro posts. +micro_iine = false # Show "Jump to posts" link next to series' title. # By default, the link appears automatically when a series description exceeds 2000 characters.