chore(templates): update modules to latest commits

This commit is contained in:
Splitter
2025-11-30 08:55:00 +00:00
parent 664135b288
commit a6a2fe83bd
18 changed files with 409 additions and 30 deletions

View File

@@ -47,7 +47,7 @@ jobs:
# Install Tailwind CLI if package.json exists # Install Tailwind CLI if package.json exists
if [ -f "package.json" ]; then if [ -f "package.json" ]; then
echo "Installing Tailwind dependencies..." echo "Installing Tailwind dependencies..."
pnpm install || npm install pnpm install --no-frozen-lockfile || npm install
fi fi
- name: Setup Hugo - name: Setup Hugo

View File

@@ -121,5 +121,4 @@ Join thousands of creators in our vibrant community to ask questions, share your
MIT © 2016-Present [George Cushen](https://georgecushen.com) MIT © 2016-Present [George Cushen](https://georgecushen.com)
<!--START_SECTION:news--> <!--START_SECTION:news-->
<!--Updated at 2025-11-30T02:10:01.063Z-->
<!--END_SECTION:news--> <!--END_SECTION:news-->

View File

@@ -3,8 +3,8 @@
# Hugo Documentation: https://gohugo.io/getting-started/configuration/#all-configuration-settings # Hugo Documentation: https://gohugo.io/getting-started/configuration/#all-configuration-settings
# This file is formatted using YAML syntax - learn more at https://learnxinyminutes.com/docs/yaml/ # This file is formatted using YAML syntax - learn more at https://learnxinyminutes.com/docs/yaml/
# Website name # Website name (set in params.yaml under hugoblox.branding.name)
title: Hugo Academic CV Theme title: ''
# Website URL # Website URL
baseURL: 'https://example.com/' baseURL: 'https://example.com/'
@@ -30,7 +30,7 @@ pagination:
enableEmoji: true enableEmoji: true
enableRobotsTXT: true enableRobotsTXT: true
footnotereturnlinkcontents: <sup>^</sup> footnotereturnlinkcontents: <sup>^</sup>
ignoreFiles: [\.ipynb$, .ipynb_checkpoints$, \.Rmd$, \.Rmarkdown$, _cache$] ignoreFiles: [".ipynb_checkpoints$", "\\.Rmd$", "\\.Rmarkdown$", "_cache$"]
disableAliases: true disableAliases: true
outputs: outputs:
home: [HTML, RSS, headers, redirects, backlinks] home: [HTML, RSS, headers, redirects, backlinks]

View File

@@ -3,19 +3,73 @@
# Documentation: https://docs.hugoblox.com/ # Documentation: https://docs.hugoblox.com/
# This file is formatted using YAML syntax - learn more at https://learnxinyminutes.com/docs/yaml/ # This file is formatted using YAML syntax - learn more at https://learnxinyminutes.com/docs/yaml/
# Appearance # ==============================================================================
appearance: # HUGO BLOX CONFIGURATION
mode: system # ==============================================================================
color: indigo hugoblox:
# ────────────────────────────────────────────────────────────────────────────
# BRANDING
# Your site's identity - used in navbar, footer, SEO, and copyright
# ────────────────────────────────────────────────────────────────────────────
branding:
# Display name shown in navbar and general site display
name: "Your Name"
# Optional: Browser tab title (defaults to name if not set)
# site_title: "Your Name | Research"
# Optional: Legal/copyright entity (defaults to name if not set)
# organization: "Your Full Legal Name"
# SEO # ────────────────────────────────────────────────────────────────────────────
# THEME
# Controls colors and appearance
# ────────────────────────────────────────────────────────────────────────────
theme:
# Mode: 'light', 'dark', or 'system' (follows OS preference)
mode: system
# Theme pack: name from data/themes/ or { light: "x", dark: "y" } for mix-and-match
pack: "default"
# Optional: Override theme pack colors
# colors:
# primary: "indigo" # Tailwind palette name or hex (e.g., "#6366f1")
# secondary: "emerald"
# neutral: "stone" # Affects gray utilities (text-gray-*, bg-gray-*)
# ────────────────────────────────────────────────────────────────────────────
# TYPOGRAPHY
# Controls fonts and text sizing
# ────────────────────────────────────────────────────────────────────────────
typography:
# Font: 'sans' (Inter), 'serif' (Roboto Slab), or 'native' (system fonts)
font: "sans"
# Size: 'sm', 'md', 'lg', or 'xl' (affects base font size and scale)
size: "md"
# ────────────────────────────────────────────────────────────────────────────
# LAYOUT
# Controls spacing and visual structure
# ────────────────────────────────────────────────────────────────────────────
layout:
# Border radius: 'none', 'sm', 'md', 'lg', or 'full'
radius: "md"
# Spacing density: 'compact', 'comfortable', or 'spacious'
spacing: "comfortable"
# ==============================================================================
# SEO & MARKETING
# ==============================================================================
marketing: marketing:
seo: seo:
site_type: Person site_type: Person
local_business_type: '' local_business_type: ''
org_name: ''
description: 'The highly-customizable Hugo Academic theme powered by Hugo Blox Builder. Easily create your personal academic website.' description: 'The highly-customizable Hugo Academic theme powered by Hugo Blox Builder. Easily create your personal academic website.'
twitter: 'GetResearchDev' twitter: 'BuildLore'
llm:
allow:
- /
disallow: []
note: 'Guidance for AI crawlers - customize to match your public content.'
contact: ''
policy_url: ''
analytics: analytics:
google_analytics: '' google_analytics: ''
baidu_tongji: '' baidu_tongji: ''
@@ -26,33 +80,41 @@ marketing:
google: '' google: ''
baidu: '' baidu: ''
# Site header # ==============================================================================
# SITE HEADER
# ==============================================================================
header: header:
navbar: navbar:
enable: true enable: true
block: 'navbar' block: 'navbar'
fixed_to_top: true fixed_to_top: true
show_search: true show_search: true
show_theme_chooser: true show_mode_toggle: true
logo: show_theme_picker: true
text: 'Your Name'
# Site footer # ==============================================================================
# SITE FOOTER
# ==============================================================================
footer: footer:
copyright: copyright:
notice: '© {year} Me. This work is licensed under {license}' # Use {year} for current year, {name} for branding.organization, {license} for CC license link
notice: '© {year} {name}. This work is licensed under {license}'
license: license:
enable: true enable: true
allow_derivatives: false allow_derivatives: false
share_alike: true share_alike: true
allow_commercial: false allow_commercial: false
# Localization # ==============================================================================
# LOCALIZATION
# ==============================================================================
locale: locale:
date_format: 'Jan 2, 2006' date_format: 'Jan 2, 2006'
time_format: '3:04 PM' time_format: '3:04 PM'
# Site features # ==============================================================================
# SITE FEATURES
# ==============================================================================
features: features:
math: math:
enable: false enable: false

View File

@@ -23,8 +23,11 @@ sections:
education: '' education: ''
interests: '' interests: ''
design: design:
# Apply a gradient background # Use the new Gradient Mesh which automatically adapts to the selected theme colors
css_class: hbx-bg-gradient background:
gradient_mesh:
enable: true
# Avatar customization # Avatar customization
avatar: avatar:
size: medium # Options: small (150px), medium (200px, default), large (320px), xl (400px), xxl (500px) size: medium # Options: small (150px), medium (200px, default), large (320px), xl (400px), xxl (500px)
@@ -80,7 +83,7 @@ sections:
# Page type to display. E.g. post, talk, publication... # Page type to display. E.g. post, talk, publication...
page_type: blog page_type: blog
# Choose how many pages you would like to display (0 = all pages) # Choose how many pages you would like to display (0 = all pages)
count: 5 count: 10
# Filter on criteria # Filter on criteria
filters: filters:
author: '' author: ''

View File

@@ -37,7 +37,7 @@ profiles:
url: 'mailto:alex.johnson@meta.com' url: 'mailto:alex.johnson@meta.com'
label: E-mail Me label: E-mail Me
- icon: brands/x - icon: brands/x
url: https://twitter.com/AlexAIResearch url: https://x.com/AlexAIResearch
- icon: brands/github - icon: brands/github
url: https://github.com/alexjohnsonai url: https://github.com/alexjohnsonai
- icon: brands/linkedin - icon: brands/linkedin

View File

@@ -8,6 +8,21 @@ tags:
- Hugo - Hugo
- Hugo Blox - Hugo Blox
- Markdown - Markdown
cover:
image: "https://images.unsplash.com/photo-1557682250-33bd709cbe85?q=80&w=2560"
position:
x: 50
y: 40
overlay:
enabled: true
type: "gradient"
opacity: 0.4
gradient: "bottom"
fade:
enabled: true
height: "80px"
icon:
name: "✨"
image: image:
caption: 'Image credit: [**Unsplash**](https://unsplash.com)' caption: 'Image credit: [**Unsplash**](https://unsplash.com)'
--- ---

View File

@@ -8,6 +8,22 @@ date: 2023-10-27
image: image:
caption: 'Image credit: [**Unsplash**](https://unsplash.com)' caption: 'Image credit: [**Unsplash**](https://unsplash.com)'
cover:
image: "https://images.unsplash.com/photo-1557682250-33bd709cbe85?q=80&w=2560"
position:
x: 50
y: 40
overlay:
enabled: true
type: "gradient"
opacity: 0.4
gradient: "bottom"
fade:
enabled: true
height: "80px"
icon:
name: "✨"
authors: authors:
- admin - admin
- Ted - Ted
@@ -41,7 +57,7 @@ Welcome 👋
- 👉 [**Create a new site**](https://hugoblox.com/templates/) - 👉 [**Create a new site**](https://hugoblox.com/templates/)
- 📚 [**Personalize your site**](https://docs.hugoblox.com/) - 📚 [**Personalize your site**](https://docs.hugoblox.com/)
- 💬 [Chat with the **Hugo Blox community**](https://discord.gg/z8wNYzb) or [**Hugo community**](https://discourse.gohugo.io) - 💬 [Chat with the **Hugo Blox community**](https://discord.gg/z8wNYzb) or [**Hugo community**](https://discourse.gohugo.io)
- 🐦 Twitter: [@GetResearchDev](https://x.com/BuildLore) [@GeorgeCushen](https://twitter.com/GeorgeCushen) #MadeWithHugoBlox - 🐦 Twitter: [@BuildLore](https://x.com/BuildLore) [@GeorgeCushen](https://x.com/GeorgeCushen) #MadeWithHugoBlox
- 💡 [Request a **feature** or report a **bug** for _Hugo Blox_](https://github.com/HugoBlox/hugo-blox-builder/issues) - 💡 [Request a **feature** or report a **bug** for _Hugo Blox_](https://github.com/HugoBlox/hugo-blox-builder/issues)
- ⬆️ **Updating Hugo Blox?** View the [Update Guide](https://docs.hugoblox.com/reference/update/) and [Release Notes](https://github.com/HugoBlox/hugo-blox-builder/releases) - ⬆️ **Updating Hugo Blox?** View the [Update Guide](https://docs.hugoblox.com/reference/update/) and [Release Notes](https://github.com/HugoBlox/hugo-blox-builder/releases)

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

View File

@@ -0,0 +1,161 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "2f21e4c5",
"metadata": {},
"source": [
"# Ship Notebook Stories in Minutes\n",
"Hugo Blox Notebook renderer turns your `.ipynb` experiments into beautiful long-form posts.\n",
"Use this sample to see how markdown, code, and outputs flow together."
]
},
{
"cell_type": "markdown",
"id": "3078072c",
"metadata": {},
"source": [
"1. Drop notebooks inside `assets/notebooks/` (or import them as page resources).\n",
"2. Reference them with `{{</* notebook src=\"your.ipynb\" */>}}`.\n",
"3. Control code, outputs, metadata badges, and download links via shortcode params."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7b29b28a",
"metadata": {
"tags": [
"demo",
"quickstart"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting data...\n",
"Training notebook-ready block...\n",
"Done!\n"
]
},
{
"data": {
"text/plain": [
"0.982"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import math\n",
"accuracy = 0.982\n",
"print(\"Collecting data...\")\n",
"print(\"Training notebook-ready block...\")\n",
"print(\"Done!\")\n",
"accuracy"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ceecfe89",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style='font-family:Inter,ui-sans-serif;'><strong>Launch Readiness:</strong> <span style='color:#22c55e;'>98.2% confidence</span><br><em>Notebook blocks are theme-aware and dark-mode friendly.</em></div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from IPython.display import HTML\n",
"HTML(\"<div style='font-family:Inter,ui-sans-serif;'><strong>Launch Readiness:</strong> <span style='color:#22c55e;'>98.2% confidence</span><br><em>Notebook blocks are theme-aware and dark-mode friendly.</em></div>\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "664e49ca",
"metadata": {
"tags": [
"metrics"
]
},
"outputs": [
{
"data": {
"application/json": {
"metrics": {
"engagement_rate": 0.73,
"read_time_minutes": 4.6,
"subscribers": 1280
}
},
"text/plain": [
"{'metrics': {'engagement_rate': 0.73, 'read_time_minutes': 4.6, 'subscribers': 1280}}"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"metrics = {\n",
" 'metrics': {\n",
" 'engagement_rate': 0.73,\n",
" 'read_time_minutes': 4.6,\n",
" 'subscribers': 1280\n",
" }\n",
"}\n",
"metrics"
]
},
{
"cell_type": "markdown",
"id": "0f761ba1",
"metadata": {},
"source": [
"> Tip: Pair this block with Call-to-Action cards or the Embed shortcode to link to GitHub repos, datasets, or ARXIV preprints."
]
}
],
"metadata": {
"authors": [
{
"name": "HugoBlox Studio"
}
],
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@@ -0,0 +1,70 @@
---
title: ⚡️ Turn Jupyter Notebooks into Blog Posts
summary: Publish your data science and research directly from Jupyter Notebooks. No screenshots required.
date: 2024-07-15
authors:
- admin
tags:
- Hugo Blox
- Jupyter
- Open Science
- Tutorials
cover:
# image: cover.jpg # Auto-detected from cover image in this folder
icon:
name: "📔"
image:
caption: "Image credit: [HugoBlox](https://hugoblox.com)"
focal_point: Center
placement: 1
content_meta:
trending: true
---
As a researcher or data scientist, your work often lives in Jupyter Notebooks. But sharing those insights effectively usually means taking screenshots, messy copy-pasting, or exporting to PDF.
Hugo Blox changes that. With the `{{</* notebook */>}}` shortcode, you can render your actual `.ipynb` files directly as beautiful, interactive blog posts or project pages. Keep your code, outputs, and narrative in one place.
{{< toc mobile_only=true is_open=true >}}
## Why publish notebooks?
> [!TIP]
> **Reproducible Research**: By publishing the actual notebook, you allow others to download and run your code, verifying your results and building upon your work.
- **No more screenshots** Render crisp code and vector plots directly from your source.
- **Theme consistent** Notebooks automatically adapt to your site's theme (including dark mode).
- **Flexible sourcing** Display notebooks from your `assets/` folder, page bundles, or even directly from a remote GitHub URL.
- **Interactive** Users can copy code blocks or download the full notebook to run locally.
## Example: Data Science Workflow
Below is a live example of a notebook rendered right here in this post. Notice how the markdown, code, and outputs (text, HTML, and JSON) are all preserved and styled.
{{< notebook
src="hugoblox-onboarding.ipynb"
title="Launch Readiness Analysis"
show_metadata=true
line_numbers=true
dense=false
download_label="Download notebook"
show_outputs=true
>}}
## How to add a notebook
1. **Save your notebook.** Place your `.ipynb` file in `assets/notebooks/` (for global access) or inside a page bundle (like `content/blog/my-post/analysis.ipynb`).
2. **Add the shortcode.** In any Markdown page, simply use:
`{{</* notebook src="analysis.ipynb" */>}}`
3. **Customize.** You can hide code cells for non-technical audiences (`show_code=false`) or just show the output (`show_outputs=true`).
> [!IMPORTANT]
> Hugo Blox respects your privacy. Notebook rendering happens statically at build time—no third-party services required.
## Next steps
- **Try it out:** Drop one of your existing notebooks into this site and see how it looks.
- **Link your papers:** Use the Embed shortcode to link your notebook to your latest arXiv preprint or GitHub repository.
- **Get help:** Join the community on [Discord](https://discord.gg/z8wNYzb) or check the [documentation](https://docs.hugoblox.com).
Happy researching! 🚀

View File

@@ -9,6 +9,21 @@ tags:
- Markdown - Markdown
image: image:
caption: 'Image credit: [**Unsplash**](https://unsplash.com)' caption: 'Image credit: [**Unsplash**](https://unsplash.com)'
cover:
image: "https://images.unsplash.com/photo-1557682250-33bd709cbe85?q=80&w=2560"
position:
x: 50
y: 40
overlay:
enabled: true
type: "gradient"
opacity: 0.4
gradient: "bottom"
fade:
enabled: true
height: "80px"
icon:
name: "✨"
--- ---
Easily manage your projects - create ideation mind maps, Gantt charts, todo lists, and more! Easily manage your projects - create ideation mind maps, Gantt charts, todo lists, and more!

View File

@@ -9,6 +9,21 @@ tags:
- Markdown - Markdown
image: image:
caption: 'Image credit: [**Unsplash**](https://unsplash.com)' caption: 'Image credit: [**Unsplash**](https://unsplash.com)'
cover:
image: "https://images.unsplash.com/photo-1557682250-33bd709cbe85?q=80&w=2560"
position:
x: 50
y: 40
overlay:
enabled: true
type: "gradient"
opacity: 0.4
gradient: "bottom"
fade:
enabled: true
height: "80px"
icon:
name: "✨"
--- ---
Create a personal knowledge base and share your knowledge with your peers. Create a personal knowledge base and share your knowledge with your peers.

View File

@@ -11,6 +11,21 @@ tags:
- Markdown - Markdown
image: image:
caption: 'Embed rich media such as videos and LaTeX math' caption: 'Embed rich media such as videos and LaTeX math'
cover:
image: "https://images.unsplash.com/photo-1557682250-33bd709cbe85?q=80&w=2560"
position:
x: 50
y: 40
overlay:
enabled: true
type: "gradient"
opacity: 0.4
gradient: "bottom"
fade:
enabled: true
height: "80px"
icon:
name: "✨"
--- ---
[Hugo Blox Builder](https://hugoblox.com) is designed to give technical content creators a seamless experience. You can focus on the content and the Hugo Blox Builder which this template is built upon handles the rest. [Hugo Blox Builder](https://hugoblox.com) is designed to give technical content creators a seamless experience. You can focus on the content and the Hugo Blox Builder which this template is built upon handles the rest.

4
go.mod
View File

@@ -3,6 +3,6 @@ module github.com/HugoBlox/hugo-blox-builder/templates/academic-cv
go 1.19 go 1.19
require ( require (
github.com/HugoBlox/hugo-blox-builder/modules/blox-plugin-netlify v1.1.2 github.com/HugoBlox/hugo-blox-builder/modules/blox-plugin-netlify v0.0.0-20231109145828-d9695efa098f
github.com/HugoBlox/hugo-blox-builder/modules/blox-tailwind v0.10.0 github.com/HugoBlox/hugo-blox-builder/modules/blox-tailwind v0.0.0-20251130065528-c8f2322fa65e
) )

View File

@@ -8,7 +8,7 @@
echo "Go version: $(go version || echo 'Go not available')" echo "Go version: $(go version || echo 'Go not available')"
echo "=== Installing dependencies ===" echo "=== Installing dependencies ==="
pnpm install --verbose pnpm install --verbose --no-frozen-lockfile
echo "=== Running Hugo build ===" echo "=== Running Hugo build ==="
hugo --gc --minify -b $URL --logLevel debug --printI18nWarnings --printPathWarnings hugo --gc --minify -b $URL --logLevel debug --printI18nWarnings --printPathWarnings
@@ -38,7 +38,7 @@
set -e set -e
echo "=== Deploy Preview Build ===" echo "=== Deploy Preview Build ==="
echo "Deploy URL: $DEPLOY_PRIME_URL" echo "Deploy URL: $DEPLOY_PRIME_URL"
pnpm install --verbose pnpm install --verbose --no-frozen-lockfile
hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL --logLevel debug --printI18nWarnings --printPathWarnings hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL --logLevel debug --printI18nWarnings --printPathWarnings
pnpm dlx pagefind --source 'public' --verbose pnpm dlx pagefind --source 'public' --verbose
""" """
@@ -48,7 +48,7 @@
set -e set -e
echo "=== Branch Deploy Build ===" echo "=== Branch Deploy Build ==="
echo "Deploy URL: $DEPLOY_PRIME_URL" echo "Deploy URL: $DEPLOY_PRIME_URL"
pnpm install --verbose pnpm install --verbose --no-frozen-lockfile
hugo --gc --minify -b $DEPLOY_PRIME_URL --logLevel debug --printI18nWarnings --printPathWarnings hugo --gc --minify -b $DEPLOY_PRIME_URL --logLevel debug --printI18nWarnings --printPathWarnings
pnpm dlx pagefind --source 'public' --verbose pnpm dlx pagefind --source 'public' --verbose
""" """

8
pnpm-lock.yaml generated
View File

@@ -14,6 +14,9 @@ importers:
'@tailwindcss/typography': '@tailwindcss/typography':
specifier: ^0.5.10 specifier: ^0.5.10
version: 0.5.16(tailwindcss@4.1.12) version: 0.5.16(tailwindcss@4.1.12)
preact:
specifier: ^10.27.2
version: 10.27.2
tailwindcss: tailwindcss:
specifier: ^4.1.12 specifier: ^4.1.12
version: 4.1.12 version: 4.1.12
@@ -376,6 +379,9 @@ packages:
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
engines: {node: '>=4'} engines: {node: '>=4'}
preact@10.27.2:
resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==}
source-map-js@1.2.1: source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@@ -683,6 +689,8 @@ snapshots:
cssesc: 3.0.0 cssesc: 3.0.0
util-deprecate: 1.0.2 util-deprecate: 1.0.2
preact@10.27.2: {}
source-map-js@1.2.1: {} source-map-js@1.2.1: {}
tailwindcss@4.1.12: {} tailwindcss@4.1.12: {}