tpl(starter): add minimal Tailwind starter template

This commit is contained in:
George Cushen committed 2026-04-22 01:40:43 +01:00
1 parent 3fc7cd05e4
commit 456a0faf43
16 files changed
+1566 -2

No files matched your search

@@ -63,6 +63,7 @@ jobs:
["templates/startup-landing-page"]="hugo-theme-startup-landing-page"
["templates/dev-portfolio"]="hugo-theme-developer-portfolio"
["templates/markdown-slides"]="hugo-theme-markdown-slides"
["templates/starter"]="hugo-starter"
)
build_full_matrix() {
+2 -2
View File
@@ -83,9 +83,9 @@ github.com/HugoBlox/kit/modules/slides -> ../../../modules/slides"
if [ "$PAGEFIND" = true ]; then
hugo
if command -v pnpm >/dev/null 2>&1; then
pnpm exec pagefind --site "public" --output-subdir ../static/pagefind
pnpm exec pagefind --site "public" --output-subdir ../static/pagefind 2>/dev/null || true
else
npm_config_yes=true npx pagefind --site "public" --output-subdir ../static/pagefind
npm_config_yes=true npx pagefind --site "public" --output-subdir ../static/pagefind 2>/dev/null || true
fi
fi
+138
View File
@@ -0,0 +1,138 @@
name: Build
env:
NODE_VERSION: '20'
on:
# Standalone trigger for PR validation
pull_request:
branches: ['main']
# Reusable workflow trigger - called by deploy.yml
workflow_call:
outputs:
artifact-id:
description: 'The ID of the uploaded artifact'
value: ${{ jobs.build.outputs.artifact-id }}
# Allow manual trigger for testing
workflow_dispatch:
# Read-only permissions for security
permissions:
contents: read
# Prevent duplicate builds for the same PR
concurrency:
group: build-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build:
if: github.repository_owner != 'HugoBlox'
runs-on: ubuntu-latest
timeout-minutes: 10
outputs:
artifact-id: ${{ steps.upload.outputs.artifact-id }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
# Fetch history for Hugo's .GitInfo and .Lastmod
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
- name: Setup pnpm
if: hashFiles('package.json') != ''
uses: pnpm/action-setup@v4
- name: Get Hugo Version
id: hugo-version
run: |
# Install pinned yq version for robust YAML parsing
YQ_VERSION="v4.44.1"
if ! wget -q --tries=3 --waitretry=1 -O /tmp/yq \
"https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_amd64"; then
echo "::error::Failed to download yq"
exit 1
fi
sudo mv /tmp/yq /usr/local/bin/yq
sudo chmod +x /usr/local/bin/yq
# Read hugo_version from hugoblox.yaml
VERSION=$(yq '.build.hugo_version // ""' hugoblox.yaml 2>/dev/null | grep -v '^null$' || true)
# Fallback to a known stable version if not specified
DEFAULT_VERSION="0.154.5"
VERSION=${VERSION:-$DEFAULT_VERSION}
# Validate version format (basic check)
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "::warning::Invalid hugo_version format '$VERSION', using default $DEFAULT_VERSION"
VERSION="$DEFAULT_VERSION"
fi
echo "HUGO_VERSION=$VERSION" >> $GITHUB_ENV
echo "Using Hugo version: $VERSION"
- name: Install dependencies
run: |
# Install Tailwind CLI if package.json exists
if [ -f "package.json" ]; then
echo "Installing Tailwind dependencies..."
pnpm install --no-frozen-lockfile || npm install
fi
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: ${{ env.HUGO_VERSION }}
extended: true
# Cache dependencies (Go modules, node_modules) - stable, rarely changes
- uses: actions/cache@v5
with:
path: |
/tmp/hugo_cache_runner/
node_modules/
modules/*/node_modules/
key: ${{ runner.os }}-hugo-deps-${{ hashFiles('**/go.mod', '**/package-lock.json',
'**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-hugo-deps-
# Cache Hugo resources (processed images, CSS) - invalidates only when assets/config change
- uses: actions/cache@v5
with:
path: resources/
key: ${{ runner.os }}-hugo-resources-${{ hashFiles('assets/**/*', 'config/**/*',
'hugo.yaml', 'package.json') }}
restore-keys: |
${{ runner.os }}-hugo-resources-
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build with Hugo
env:
HUGO_ENVIRONMENT: production
HUGO_BLOX_LICENSE: ${{ secrets.HUGO_BLOX_LICENSE }}
run: |
echo "Hugo Cache Dir: $(hugo config | grep cachedir)"
hugo --minify --baseURL "${{ steps.pages.outputs.base_url }}/"
- name: Generate Pagefind search index (if applicable)
run: |
# Check if site uses Pagefind search
if [ -f "package.json" ] && grep -q "pagefind" package.json; then
pnpm run pagefind || npx pagefind --site "public" 2>/dev/null || true
fi
- name: Upload artifact
id: upload
uses: actions/upload-pages-artifact@v4
with:
path: ./public
+83
View File
@@ -0,0 +1,83 @@
name: Deploy website to GitHub Pages
on:
# Trigger the workflow every time you push to the `main` branch
push:
branches: ['main']
# Allows you to run this workflow manually from the Actions tab on GitHub
workflow_dispatch:
# Provide permission to clone the repo and deploy it to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: 'pages'
cancel-in-progress: false
jobs:
# Check deployment configuration
config:
if: github.repository_owner != 'HugoBlox'
runs-on: ubuntu-latest
outputs:
deploy-host: ${{ steps.check.outputs.host }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: hugoblox.yaml
sparse-checkout-cone-mode: false
- name: Check deploy host
id: check
run: |
# Install pinned yq version for robust YAML parsing
YQ_VERSION="v4.44.1"
if ! wget -q --tries=3 --waitretry=1 -O /tmp/yq \
"https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_amd64"; then
echo "::error::Failed to download yq"
exit 1
fi
sudo mv /tmp/yq /usr/local/bin/yq
sudo chmod +x /usr/local/bin/yq
# Read deploy.host from hugoblox.yaml, default to github-pages
HOST=$(yq '.deploy.host // ""' hugoblox.yaml 2>/dev/null | grep -v '^null$' || true)
HOST=${HOST:-github-pages}
# Validate known hosts
if [[ ! "$HOST" =~ ^(github-pages|netlify|vercel|cloudflare|none)$ ]]; then
echo "::warning::Unknown deploy host '$HOST', defaulting to github-pages"
HOST="github-pages"
fi
echo "host=$HOST" >> $GITHUB_OUTPUT
echo "Deployment target: $HOST"
# Build website using reusable workflow (always runs for CI)
build:
needs: config
if: github.repository_owner != 'HugoBlox'
uses: ./.github/workflows/build.yml
secrets: inherit
# Deploy website to GitHub Pages hosting (only if configured)
deploy:
needs: [config, build]
if: needs.config.outputs.deploy-host == 'github-pages'
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
+98
View File
@@ -0,0 +1,98 @@
name: Upgrade HugoBlox
on:
workflow_dispatch:
inputs:
version_type:
description: 'Upgrade to version'
required: true
default: 'Stable'
type: choice
options:
- Stable
- Beta (Preview)
schedule:
# Run at 05:00 on Monday
- cron: '0 5 * * 1'
permissions:
contents: write
pull-requests: write
# Prevent duplicate upgrade runs
concurrency:
group: upgrade-${{ github.ref }}
cancel-in-progress: true
jobs:
upgrade:
name: Upgrade
if: github.repository_owner != 'HugoBlox'
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
package_json_path: ./package.json
run_install: false
- name: Setup Go
uses: actions/setup-go@v6
with:
go-version: '1.23'
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: 'latest'
extended: true
- name: Run Upgrade CLI
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Use manual input or default to stable for scheduled runs
VERSION_TYPE: ${{ inputs.version_type || 'Stable' }}
run: |
FLAGS="--yes --ci"
if [ "$VERSION_TYPE" == "Beta (Preview)" ]; then
FLAGS="$FLAGS --canary"
fi
echo "Running upgrade with flags: $FLAGS"
pnpm dlx hugoblox@latest upgrade $FLAGS
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "chore(deps): upgrade hugoblox modules"
title: "Upgrade HugoBlox Modules"
body: |
This PR upgrades the [HugoBlox](https://hugoblox.com) modules to the latest version.
**Changes:**
- Updated Hugo Modules (go.mod/go.sum)
- Applied automatic migrations (if any)
**Verification:**
- [ ] Check the Deploy Preview to ensure everything looks correct.
- [ ] Merge this PR to apply the updates.
branch: "chore/upgrade-hugoblox-${{ github.run_id }}"
delete-branch: true
base: main
labels: |
dependencies
automated-pr
+27
View File
@@ -0,0 +1,27 @@
# Hugo Build Artifacts
public/
resources/
.hugo_build.lock
hugo_stats.json
**/assets/jsconfig.json
# Node.js
node_modules/
# Environment
.env
.env.local
.env.*.local
# Pagefind search index
pagefind/
static/pagefind/
# OS
.DS_Store
Thumbs.db
*~
# Logs
*.log
npm-debug.log*
+229
View File
@@ -0,0 +1,229 @@
# [HugoBlox Starter — Your Blank Canvas](https://github.com/HugoBlox/hugo-starter)
[![Screenshot](https://github.com/HugoBlox/kit/raw/main/.github/media/hero.png)](https://hugoblox.com/templates/starter/start/?utm_source=github&utm_medium=readme&utm_content=preview)
<h1 align="center">Describe It. Deploy It. Own It.</h1>
<p align="center">
<strong>The fastest path from idea to live site.</strong><br/>
Start with a blank page. Tell AI what you want. Get a production site in minutes — not days.<br/>
Built on <a href="https://github.com/HugoBlox/kit">HugoBlox</a> — the open-source framework where AI generates your pages and you own everything as Markdown.
</p>
<p align="center">
<a href="https://hugoblox.com/templates/starter/start?utm_source=github&utm_medium=readme&utm_content=cta_top"><b>Deploy Free (60s)</b></a>
&nbsp;&nbsp;|&nbsp;&nbsp;
<a href="https://hugo.chat/?utm_source=github&utm_medium=readme&utm_content=cta_top_starter"><b>Build with AI</b></a>
&nbsp;&nbsp;|&nbsp;&nbsp;
<a href="https://hugoblox.com/templates/?open=starter&loading=true&utm_source=github&utm_medium=readme&utm_content=demo">Live Demo</a>
</p>
<div align="center">
<a href="https://github.com/HugoBlox/hugo-starter">
<img src="https://img.shields.io/github/stars/HugoBlox/hugo-starter?label=Star&logo=github&style=flat-square&color=181717" alt="GitHub Stars">
</a>
<a href="https://discord.gg/z8wNYzb">
<img src="https://img.shields.io/discord/722225264733716590?label=Discord&logo=discord&logoColor=white&style=flat-square&color=5865F2" alt="Discord">
</a>
<a href="https://github.com/HugoBlox/kit">
<img src="https://img.shields.io/github/stars/HugoBlox/kit?label=HugoBlox&logo=github&style=flat-square&color=181717" alt="HugoBlox Stars">
</a>
</div>
<p align="center">
<sub>Part of the <a href="https://github.com/HugoBlox/kit"><strong>HugoBlox</strong></a> ecosystem · <strong>150,000+</strong> sites · Rated <strong>4.9/5</strong> (official survey) · Trusted since <strong>2016</strong></sub>
</p>
---
## How It Works
Other templates give you someone else's layout. This one gives you a blank page and an AI that builds exactly what you ask for.
<table>
<tr>
<td width="50%" valign="top">
### 1. Tell AI what you want
Open [Hugo Chat](https://hugo.chat/?utm_source=github&utm_medium=readme&utm_content=how_it_works_starter) and describe your site in plain English:
> *"Build me a landing page for my SaaS with a hero, three feature columns, pricing table, and a contact form"*
> *"Create a research lab site with team profiles, a publications list, and a news feed"*
> *"I need a portfolio with a filterable project grid and an about page"*
Hugo Chat generates structured pages with correct front matter, blocks, and content — ready to paste in.
</td>
<td width="50%" valign="top">
### 2. Edit visually or in Markdown
Fine-tune with whichever workflow fits you:
**[Ownable CMS](https://marketplace.visualstudio.com/items?itemName=ownable.ownable)** — drag-and-drop editing inside VS Code. Rearrange blocks, update text, change design tokens. No terminal needed.
**Markdown** — every page is a file you can read and edit. Change a heading, add a section, commit and push.
**Hugo Chat** — come back anytime to generate new pages or refine existing ones.
### 3. Deploy free
Push to GitHub. Your site builds and deploys automatically via GitHub Pages. Zero cost, zero config.
</td>
</tr>
</table>
<p align="center">
<a href="https://hugo.chat/?utm_source=github&utm_medium=readme&utm_content=cta_mid_starter">
<img src="https://img.shields.io/badge/⚡️%20Start%20Building%20with%20AI-7c3aed?style=for-the-badge" alt="Build with AI" width="400">
</a>
</p>
---
## What You Can Build
This is a blank canvas with the full HugoBlox engine behind it. Add any combination of content types:
| Content type | URL | Use it for |
| :--- | :--- | :--- |
| **Landing pages** | any path | Hero sections, feature grids, CTAs, pricing — assembled from blocks |
| **Blog** | `/blog/` | Posts with dates, tags, categories, reading time |
| **Projects** | `/projects/` | Software, research projects, portfolio items |
| **Publications** | `/publications/` | Papers, articles, preprints with citation metadata |
| **Events** | `/events/` | Talks, webinars, workshops, conferences |
| **Datasets** | `/datasets/` | Research data with DOIs and download links |
| **Case studies** | `/case-studies/` | Customer stories, project showcases, impact reports |
| **Changelog** | `/changelog/` | Product updates, release notes, version history |
| **Courses** | `/courses/` | Lessons, tutorials, learning paths with breadcrumbs |
| **Docs** | `/docs/` | Documentation with sidebar navigation |
| **FAQ** | `/faq/` | Frequently asked questions |
| **Slides** | `/slides/` | Presentations from Markdown via reveal.js |
Every content type supports tags, categories, search, RSS, related content, and social sharing out of the box.
---
## 🚀 Get Started
### Step 1: Deploy Your Site
**Option A: Launch in browser** (fastest — no install needed)
> [!TIP]
> Deploy a live site in 60 seconds — no software to install:
> [**Deploy Starter free**](https://hugoblox.com/templates/starter/start?utm_source=github&utm_medium=readme&utm_content=get_started)
**Option B: Use the CLI**
```bash
# Requires Hugo Extended & Node.js
npx hugoblox create site --template starter
```
### Step 2: Build Pages With AI
Open [Hugo Chat](https://hugo.chat/?utm_source=github&utm_medium=readme&utm_content=step2_starter) and describe the pages you want. Paste the generated files into your `content/` folder. Push to GitHub — your site updates automatically.
### Step 3: Customize Visually
Install [Ownable CMS](https://marketplace.visualstudio.com/items?itemName=ownable.ownable) in VS Code to edit pages visually — rearrange blocks, update content, and preview changes without touching code.
![Ownable CMS in Action](https://raw.githubusercontent.com/HugoBlox/kit/main/.github/media/studio/slide-1.webp)
*Ownable CMS: Drag-and-drop page builder inside VS Code.*
> [!NOTE]
> **New to Hugo?** No problem. You don't need to know Hugo — build with AI or edit visually. Hugo is the engine under the hood that makes your site fast, secure, and free to host. [Learn more →](https://docs.ownable.dev/?utm_source=github&utm_medium=readme&utm_content=docs_starter)
---
## 🏆 Why HugoBlox?
> *Why not just use WordPress, Webflow, or an AI builder like Lovable?*
| | **AI builders** (Lovable, v0) | **CMS platforms** (WordPress, Webflow) | **HugoBlox** |
| :--- | :---: | :---: | :---: |
| AI generates your pages | Yes | No | **Yes** |
| You own the output as readable files | No — React code | No — database | **Yes — Markdown** |
| Free to host forever | No | No | **Yes** |
| Human-editable without the tool | Barely | No | **Yes — it's Markdown** |
| Open source | No | No | **Yes — MIT licensed** |
> [!IMPORTANT]
> Your content is plain Markdown files. No lock-in, no database, no vendor dependency. If you ever want to leave, take your files and go.
---
## FAQ
<details>
<summary><b>Do I need to know Hugo?</b></summary>
No. Build with Hugo Chat or edit visually with Ownable CMS. Hugo is the build engine — you don't need to touch it.
</details>
<details>
<summary><b>Why use this instead of a purpose-built template?</b></summary>
If you know what you want — a CV, a blog, a docs site — use those templates. The starter is for when you want full control, or when you're building something that doesn't fit a predefined layout. It's also the ideal starting point for Hugo Chat, which generates exactly the pages you describe.
</details>
<details>
<summary><b>Can I add any HugoBlox block?</b></summary>
Yes. The starter includes the full HugoBlox block library — hero, features, stats, testimonials, pricing, CTA, collection, and more. Assemble them in any combination.
</details>
<details>
<summary><b>Can I host for free?</b></summary>
Yes. GitHub Pages, Netlify, Vercel, and Cloudflare Pages all have free tiers for static sites. This template ships with GitHub Pages deployment pre-configured.
</details>
<details>
<summary><b>Can I migrate my content later?</b></summary>
Yes. Your site is just Markdown files in a folder. Copy them anywhere.
</details>
<details>
<summary><b>What's Hugo Chat?</b></summary>
An AI assistant that understands Hugo and HugoBlox. Describe what you want and it generates the right pages with correct front matter, blocks, and content. <a href="https://hugo.chat/?utm_source=github&utm_medium=readme&utm_content=faq_starter">Free to try.</a>
</details>
---
<h2 align="center">🚀 Ready to build?</h2>
<p align="center">
Deploy in 60 seconds. Build pages with AI. Own it as Markdown forever.
</p>
<p align="center">
<a href="https://hugoblox.com/templates/starter/start?utm_source=github&utm_medium=readme&utm_content=cta_final"><b>Deploy Starter — free</b></a>
&nbsp;&nbsp;|&nbsp;&nbsp;
<a href="https://hugo.chat/?utm_source=github&utm_medium=readme&utm_content=cta_final_starter"><b>Build with AI</b></a>
</p>
---
## Community & Support
- 💬 [**Discord**](https://discord.gg/z8wNYzb) — ask questions, share your site
- 📚 [**Docs**](https://docs.ownable.dev/?utm_source=github&utm_medium=readme&utm_content=community_starter)
- ⭐ [**Star HugoBlox**](https://github.com/HugoBlox/kit) — help others find it
- 🐦 [**Follow on X**](https://x.com/MakeOwnable)
### Sponsors
[**❤️ Sponsor on GitHub**](https://github.com/sponsors/gcushen) | [**🏢 Become a Partner**](https://github.com/sponsors/gcushen)
---
Copyright 2016-present [**Lore Labs**](https://lore.tech/?utm_source=github&utm_medium=readme).
Released under the [MIT License](./LICENSE.md).
<p align="center">
<sub>HugoBlox is a trademark of Lore Labs.</sub>
</p>
+133
View File
@@ -0,0 +1,133 @@
# Configuration of Hugo
# Guide: https://docs.hugoblox.com/
# Hugo Documentation: https://gohugo.io/getting-started/configuration/
title: ''
baseURL: 'https://example.com/'
############################
## LANGUAGE
############################
defaultContentLanguage: en
hasCJKLanguage: false
defaultContentLanguageInSubdir: false
removePathAccents: true
############################
## PAGE OPTIONS
############################
cascade:
# Blog posts
- target:
path: /blog/**
kind: page
pager: true
show_date: true
show_date_updated: true
reading_time: true
commentable: true
show_related: true
share: true
show_breadcrumb: false
# Publications
- target:
path: /publications/**
kind: page
show_date: true
share: true
pager: true
# Events
- target:
path: /events/**
kind: page
show_date: true
share: true
pager: true
# Projects
- target:
path: /projects/**
kind: page
show_date: false
share: true
# Datasets
- target:
path: /datasets/**
kind: page
show_date: true
share: true
# Case Studies
- target:
path: /case-studies/**
kind: page
show_date: true
share: true
# Changelog
- target:
path: /changelog/**
kind: page
show_date: true
pager: false
# Courses
- target:
path: /courses/**
kind: page
show_breadcrumb: true
pager: true
############################
## OUTPUTS
############################
outputs:
home: [HTML, RSS, backlinks]
section: [HTML, RSS]
############################
## ADVANCED
############################
build:
writeStats: true
enableGitInfo: false
summaryLength: 30
pagination:
pagerSize: 10
enableEmoji: true
enableRobotsTXT: true
footnotereturnlinkcontents: <sup>^</sup>
ignoreFiles: [".ipynb_checkpoints$", "\\.Rmd$", "\\.Rmarkdown$", "_cache$"]
disableAliases: true
imaging:
resampleFilter: lanczos
quality: 90
anchor: smart
hint: picture
timeout: 600000
taxonomies:
author: authors
tag: tags
category: categories
markup:
_merge: deep
related:
threshold: 80
includeNewer: true
toLower: true
indices:
- name: tags
weight: 100
- name: categories
weight: 70
security:
_merge: deep
sitemap:
_merge: deep
@@ -0,0 +1,23 @@
############################
## HUGO MODULES
## Install or uninstall themes and plugins here.
## Docs: https://gohugo.io/hugo-modules/
############################
imports:
- path: github.com/HugoBlox/kit/modules/blox
# Install any Hugo Blox within the `hugo-blox/blox/` folder
mounts:
- source: hugo-blox/blox/community
target: layouts/_partials/blox/community/
files:
- "**.html"
- source: hugo-blox/blox
target: assets/dist/community/blox/
files:
- "**.css"
- source: layouts
target: layouts
- source: assets
target: assets
@@ -0,0 +1,91 @@
# ══════════════════════════════════════════════════════════════════════════════
# HUGOBLOX CONFIGURATION
# Schema: hugoblox.com/schema/v2
# Documentation: https://docs.hugoblox.com/
# ══════════════════════════════════════════════════════════════════════════════
hugoblox:
schema: "2.0"
# ────────────────────────────────────────────────────────────────────────────
# IDENTITY
# ────────────────────────────────────────────────────────────────────────────
identity:
name: "HugoBlox Starter"
organization: ""
type: person # person | organization | local_business
tagline: ""
description: ""
social:
twitter: ""
# ────────────────────────────────────────────────────────────────────────────
# THEME
# ────────────────────────────────────────────────────────────────────────────
theme:
mode: system # light | dark | system
pack: "default"
colors:
primary: ""
secondary: ""
neutral: ""
# ────────────────────────────────────────────────────────────────────────────
# TYPOGRAPHY
# ────────────────────────────────────────────────────────────────────────────
typography:
pack: "system"
# ────────────────────────────────────────────────────────────────────────────
# LAYOUT
# ────────────────────────────────────────────────────────────────────────────
layout:
radius: "md" # none | sm | md | lg | full
spacing: "spacious" # compact | comfortable | spacious
avatar_shape: circle # circle | square | rounded
# ────────────────────────────────────────────────────────────────────────────
# HEADER
# ────────────────────────────────────────────────────────────────────────────
header:
enable: true
style: navbar # navbar | navbar-simple | minimal
sticky: true
align: center # left | center | right
search: false
theme_toggle: true
# ────────────────────────────────────────────────────────────────────────────
# FOOTER
# ────────────────────────────────────────────────────────────────────────────
footer:
style: minimal # minimal | columns | centered
# ────────────────────────────────────────────────────────────────────────────
# COPYRIGHT
# ────────────────────────────────────────────────────────────────────────────
copyright:
notice: "© {year} {name}"
# ────────────────────────────────────────────────────────────────────────────
# CONTENT
# ────────────────────────────────────────────────────────────────────────────
content:
math:
enable: false
toc:
enable: true
reading_time:
enable: true
# ────────────────────────────────────────────────────────────────────────────
# SEARCH
# ────────────────────────────────────────────────────────────────────────────
search:
enable: false
# ────────────────────────────────────────────────────────────────────────────
# LOCALE
# ────────────────────────────────────────────────────────────────────────────
locale:
date_format: "Jan 2, 2006"
time_format: "3:04 PM"
+12
View File
@@ -0,0 +1,12 @@
---
title: 'Home'
type: landing
sections:
- block: hero
content:
title: Welcome
text: Get started by adding new content with [Hugo Chat](https://hugo.chat/?utm_source=hugoblox_site&utm_medium=hero_cta&utm_content=starter_homepage) or editing visually with [Ownable CMS](https://marketplace.visualstudio.com/items?itemName=ownable.ownable) for VS Code.
design:
spacing:
padding: ['5rem', 0, '5rem', 0]
---
+20
View File
@@ -0,0 +1,20 @@
schema: hugoblox/author/v1
slug: me
is_owner: true
name:
display: Your Name
role: ''
bio: ''
affiliations:
- name: ''
url: ''
links:
- icon: at-symbol
url: mailto:hello@example.com
label: Email
- icon: brands/github
url: https://github.com/
- icon: brands/linkedin
url: https://www.linkedin.com/
+5
View File
@@ -0,0 +1,5 @@
module github.com/HugoBlox/kit/templates/starter
go 1.19
require github.com/HugoBlox/kit/modules/blox v0.12.0
+8
View File
@@ -0,0 +1,8 @@
build:
hugo_version: '0.159.2'
deploy:
# Deployment target: github-pages, netlify, vercel, cloudflare, or none
host: 'github-pages'
template:
id: "starter"
name: "Starter"
+19
View File
@@ -0,0 +1,19 @@
{
"name": "hugo-blox-starter",
"version": "1.0.0",
"private": true,
"packageManager": "pnpm@10.14.0",
"description": "Starter template for Hugo Blox with Tailwind CSS v4",
"scripts": {
"dev": "hugo server --disableFastRender",
"build": "hugo --minify && pnpm run pagefind",
"pagefind": "pagefind --site public 2>/dev/null || true"
},
"dependencies": {
"@tailwindcss/cli": "^4.1.12",
"@tailwindcss/typography": "^0.5.10",
"pagefind": "^1.4.0",
"preact": "^10.27.2",
"tailwindcss": "^4.1.12"
}
}
+677
View File
@@ -0,0 +1,677 @@
lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
.:
dependencies:
'@tailwindcss/cli':
specifier: ^4.1.12
version: 4.2.3
'@tailwindcss/typography':
specifier: ^0.5.10
version: 0.5.19(tailwindcss@4.2.3)
pagefind:
specifier: ^1.4.0
version: 1.5.2
preact:
specifier: ^10.27.2
version: 10.29.1
tailwindcss:
specifier: ^4.1.12
version: 4.2.3
packages:
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
'@jridgewell/remapping@2.3.5':
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
'@pagefind/darwin-arm64@1.5.2':
resolution: {integrity: sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ==}
cpu: [arm64]
os: [darwin]
'@pagefind/darwin-x64@1.5.2':
resolution: {integrity: sha512-IojxFWMEJe0RQ7PQ3KXQsPIImNsbpPYpoZ+QUDrL8fAl/O27IX+LVLs74/UzEZy5uA2LD8Nz1AiwKr72vrkZQw==}
cpu: [x64]
os: [darwin]
'@pagefind/freebsd-x64@1.5.2':
resolution: {integrity: sha512-7EVzo9+0w+2cbe671BtMj10UlNo83I+HrLVLfRxO731svHRJKUfJ/mo05gU14pe9PCfpKNQT8FS3Xc/oDN6pOA==}
cpu: [x64]
os: [freebsd]
'@pagefind/linux-arm64@1.5.2':
resolution: {integrity: sha512-Ovt9+K35sqzn8H3ZMXGwls4TD/wMJuvRtShHIsmUQREmaxjrDEX7gHckRCrwYJ4XE1H1p6HkLz3wukrAnsfXQw==}
cpu: [arm64]
os: [linux]
'@pagefind/linux-x64@1.5.2':
resolution: {integrity: sha512-V+tFqHKXhQKq/WqPBD67AFy7scn1/aZID00ws4fSDd+1daSi5UHR9VVlRrOUYKxn3VuFQYRD7lYXdZK1WED1YA==}
cpu: [x64]
os: [linux]
'@pagefind/windows-arm64@1.5.2':
resolution: {integrity: sha512-hN9Nh90fNW61nNRCW9ZyQrAj/mD0eRvmJ8NlTUzkbuW8kIzGJUi3cxjFkEcMZ5h/8FsKWD/VcouZl4yo1F7B6g==}
cpu: [arm64]
os: [win32]
'@pagefind/windows-x64@1.5.2':
resolution: {integrity: sha512-Fa2Iyw7kaDRzGMfNYNUXNW2zbL5FQVDgSOcbDHdzBrDEdpqOqg8TcZ68F22ol6NJ9IGzvUdmeyZypLW5dyhqsg==}
cpu: [x64]
os: [win32]
'@parcel/watcher-android-arm64@2.5.6':
resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [android]
'@parcel/watcher-darwin-arm64@2.5.6':
resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [darwin]
'@parcel/watcher-darwin-x64@2.5.6':
resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [darwin]
'@parcel/watcher-freebsd-x64@2.5.6':
resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [freebsd]
'@parcel/watcher-linux-arm-glibc@2.5.6':
resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
'@parcel/watcher-linux-arm-musl@2.5.6':
resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
'@parcel/watcher-linux-arm64-glibc@2.5.6':
resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-arm64-musl@2.5.6':
resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-x64-glibc@2.5.6':
resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
'@parcel/watcher-linux-x64-musl@2.5.6':
resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
'@parcel/watcher-win32-arm64@2.5.6':
resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [win32]
'@parcel/watcher-win32-ia32@2.5.6':
resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==}
engines: {node: '>= 10.0.0'}
cpu: [ia32]
os: [win32]
'@parcel/watcher-win32-x64@2.5.6':
resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [win32]
'@parcel/watcher@2.5.6':
resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==}
engines: {node: '>= 10.0.0'}
'@tailwindcss/cli@4.2.3':
resolution: {integrity: sha512-u5l8rpeoD4LRPAVLA9edxqm6rBASgxJawvusPmWq23cx75g52LAGWVp52FHkE4vgbbcSCjEACO0hZou1x0qJPg==}
hasBin: true
'@tailwindcss/node@4.2.3':
resolution: {integrity: sha512-dhXFXkW2dGvX4r/fi24gyXM0t1mFMrpykQjqrdA4SuavaMagm4SY1u5G2SCJwu1/0x/5RlZJ2VPjP3mKYQfCkA==}
'@tailwindcss/oxide-android-arm64@4.2.3':
resolution: {integrity: sha512-0Jmt1U/zPqeKp1+fvgI3qMqrV5b/EcFIbE5Dl5KdPl5Ri6e+95nlYNjfB3w8hJBeASI4IQSnIMz0tdVP1AVO4g==}
engines: {node: '>= 20'}
cpu: [arm64]
os: [android]
'@tailwindcss/oxide-darwin-arm64@4.2.3':
resolution: {integrity: sha512-c+/Etn/nghKBhd9fh2diG+3SEV1VTTPLlqH209yleofi28H87Cy6g1vsd3W3kf6r/dR5g4G4TEwHxo2Ydn6yFw==}
engines: {node: '>= 20'}
cpu: [arm64]
os: [darwin]
'@tailwindcss/oxide-darwin-x64@4.2.3':
resolution: {integrity: sha512-1DrKKsdJTLuLWVdpaLZ0j/g9YbCZyP9xnwSqEvl3gY4ZHdXmX7TwVAHkoWUljOq7JK5zvzIGhrYmfE/2DJ5qaA==}
engines: {node: '>= 20'}
cpu: [x64]
os: [darwin]
'@tailwindcss/oxide-freebsd-x64@4.2.3':
resolution: {integrity: sha512-HE6HHZYF8k7m80eVQ0RBvRGBdvvLvCpHiT38IRH9JSnBlt1T7gDzWoslWjmpXQFuqlRpzkCpbdKJa3NxWMfgVA==}
engines: {node: '>= 20'}
cpu: [x64]
os: [freebsd]
'@tailwindcss/oxide-linux-arm-gnueabihf@4.2.3':
resolution: {integrity: sha512-Li2wVd2kkKlKkTdpo7ujHSv6kxD1UYMvulAraikyvVf6AKNZ/VHbm8XoSNimZ+dF7SOFaDD2VAT64SK7WKcbjQ==}
engines: {node: '>= 20'}
cpu: [arm]
os: [linux]
'@tailwindcss/oxide-linux-arm64-gnu@4.2.3':
resolution: {integrity: sha512-otIiImZaHj9MiDK02ItoWxIVcMTZVAX2F1c32bg9y7ecV0AnN5JHDZqIO8LxWsTuig1d+Bjg0cBWn4A9sGJO9Q==}
engines: {node: '>= 20'}
cpu: [arm64]
os: [linux]
'@tailwindcss/oxide-linux-arm64-musl@4.2.3':
resolution: {integrity: sha512-MmIA32rNEOrjh6wnevlR3OjjlCuwgZ4JMJo7Vrhk4Fk56Vxi7EeF7cekSKwvlrnfcn/ERC1LdcG3sFneU8WdoA==}
engines: {node: '>= 20'}
cpu: [arm64]
os: [linux]
'@tailwindcss/oxide-linux-x64-gnu@4.2.3':
resolution: {integrity: sha512-BiCy1YV0IKO+xbD7gyZnENU4jdwDygeGQjncJoeIE5Kp4UqWHFsKUSJ3pp7vYURrqVzwJX2xD5gQeGnoXp4xPQ==}
engines: {node: '>= 20'}
cpu: [x64]
os: [linux]
'@tailwindcss/oxide-linux-x64-musl@4.2.3':
resolution: {integrity: sha512-venvyAu0AMKdr0c1Oz23IJJdZ72zSwKyHrLvqQV1cn49vPAJk3AuVtDkJ1ayk1sYI4M4j8Jv6ZGflpaP0QVSXQ==}
engines: {node: '>= 20'}
cpu: [x64]
os: [linux]
'@tailwindcss/oxide-wasm32-wasi@4.2.3':
resolution: {integrity: sha512-e3kColrZZCdtbwIOc07cNQ2zNf1sTPXTYLjjPlsgsaf+ttzAg/hOlDyEgHoOlBGxM88nPxeVaOGe9ThqVzPncg==}
engines: {node: '>=14.0.0'}
cpu: [wasm32]
bundledDependencies:
- '@napi-rs/wasm-runtime'
- '@emnapi/core'
- '@emnapi/runtime'
- '@tybys/wasm-util'
- '@emnapi/wasi-threads'
- tslib
'@tailwindcss/oxide-win32-arm64-msvc@4.2.3':
resolution: {integrity: sha512-qpwoUPzfu71cppxOtcz4LXMR1brljS13yOcAAnVHKIL++NJvSQKZBKlP39pVowd+G6Mq34YAbf4CUUYdLWL9gQ==}
engines: {node: '>= 20'}
cpu: [arm64]
os: [win32]
'@tailwindcss/oxide-win32-x64-msvc@4.2.3':
resolution: {integrity: sha512-dTRIlLRC5lCRHqO5DLb+A18HCvS394axmzqfnRNLptKVw7WuckpUwo1Z87Yw74mesbeIhnQTA2SZbRcIfVlwxg==}
engines: {node: '>= 20'}
cpu: [x64]
os: [win32]
'@tailwindcss/oxide@4.2.3':
resolution: {integrity: sha512-YyhwSBcxHLS3CU2Mk3dXDuVm8/Ia0+XvfpT8s9YQoICppkUeoobB3hgyGMYbyQ4vn6VgWH9bdv5UnzhTz2NPTQ==}
engines: {node: '>= 20'}
'@tailwindcss/typography@0.5.19':
resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
hasBin: true
detect-libc@2.1.2:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
enhanced-resolve@5.20.1:
resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==}
engines: {node: '>=10.13.0'}
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
jiti@2.6.1:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
lightningcss-android-arm64@1.32.0:
resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [android]
lightningcss-darwin-arm64@1.32.0:
resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.32.0:
resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.32.0:
resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
lightningcss-linux-arm-gnueabihf@1.32.0:
resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
lightningcss-linux-arm64-gnu@1.32.0:
resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
lightningcss-linux-arm64-musl@1.32.0:
resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
lightningcss-linux-x64-gnu@1.32.0:
resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
lightningcss-linux-x64-musl@1.32.0:
resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
lightningcss-win32-arm64-msvc@1.32.0:
resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
lightningcss-win32-x64-msvc@1.32.0:
resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
lightningcss@1.32.0:
resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
engines: {node: '>= 12.0.0'}
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
node-addon-api@7.1.1:
resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
pagefind@1.5.2:
resolution: {integrity: sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q==}
hasBin: true
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
picomatch@4.0.4:
resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
postcss-selector-parser@6.0.10:
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
engines: {node: '>=4'}
preact@10.29.1:
resolution: {integrity: sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==}
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
tailwindcss@4.2.3:
resolution: {integrity: sha512-fA/NX5gMf0ooCLISgB0wScaWgaj6rjTN2SVAwleURjiya7ITNkV+VMmoHtKkldP6CIZoYCZyxb8zP/e2TWoEtQ==}
tapable@2.3.2:
resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==}
engines: {node: '>=6'}
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
snapshots:
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/remapping@2.3.5':
dependencies:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
'@pagefind/darwin-arm64@1.5.2':
optional: true
'@pagefind/darwin-x64@1.5.2':
optional: true
'@pagefind/freebsd-x64@1.5.2':
optional: true
'@pagefind/linux-arm64@1.5.2':
optional: true
'@pagefind/linux-x64@1.5.2':
optional: true
'@pagefind/windows-arm64@1.5.2':
optional: true
'@pagefind/windows-x64@1.5.2':
optional: true
'@parcel/watcher-android-arm64@2.5.6':
optional: true
'@parcel/watcher-darwin-arm64@2.5.6':
optional: true
'@parcel/watcher-darwin-x64@2.5.6':
optional: true
'@parcel/watcher-freebsd-x64@2.5.6':
optional: true
'@parcel/watcher-linux-arm-glibc@2.5.6':
optional: true
'@parcel/watcher-linux-arm-musl@2.5.6':
optional: true
'@parcel/watcher-linux-arm64-glibc@2.5.6':
optional: true
'@parcel/watcher-linux-arm64-musl@2.5.6':
optional: true
'@parcel/watcher-linux-x64-glibc@2.5.6':
optional: true
'@parcel/watcher-linux-x64-musl@2.5.6':
optional: true
'@parcel/watcher-win32-arm64@2.5.6':
optional: true
'@parcel/watcher-win32-ia32@2.5.6':
optional: true
'@parcel/watcher-win32-x64@2.5.6':
optional: true
'@parcel/watcher@2.5.6':
dependencies:
detect-libc: 2.1.2
is-glob: 4.0.3
node-addon-api: 7.1.1
picomatch: 4.0.4
optionalDependencies:
'@parcel/watcher-android-arm64': 2.5.6
'@parcel/watcher-darwin-arm64': 2.5.6
'@parcel/watcher-darwin-x64': 2.5.6
'@parcel/watcher-freebsd-x64': 2.5.6
'@parcel/watcher-linux-arm-glibc': 2.5.6
'@parcel/watcher-linux-arm-musl': 2.5.6
'@parcel/watcher-linux-arm64-glibc': 2.5.6
'@parcel/watcher-linux-arm64-musl': 2.5.6
'@parcel/watcher-linux-x64-glibc': 2.5.6
'@parcel/watcher-linux-x64-musl': 2.5.6
'@parcel/watcher-win32-arm64': 2.5.6
'@parcel/watcher-win32-ia32': 2.5.6
'@parcel/watcher-win32-x64': 2.5.6
'@tailwindcss/cli@4.2.3':
dependencies:
'@parcel/watcher': 2.5.6
'@tailwindcss/node': 4.2.3
'@tailwindcss/oxide': 4.2.3
enhanced-resolve: 5.20.1
mri: 1.2.0
picocolors: 1.1.1
tailwindcss: 4.2.3
'@tailwindcss/node@4.2.3':
dependencies:
'@jridgewell/remapping': 2.3.5
enhanced-resolve: 5.20.1
jiti: 2.6.1
lightningcss: 1.32.0
magic-string: 0.30.21
source-map-js: 1.2.1
tailwindcss: 4.2.3
'@tailwindcss/oxide-android-arm64@4.2.3':
optional: true
'@tailwindcss/oxide-darwin-arm64@4.2.3':
optional: true
'@tailwindcss/oxide-darwin-x64@4.2.3':
optional: true
'@tailwindcss/oxide-freebsd-x64@4.2.3':
optional: true
'@tailwindcss/oxide-linux-arm-gnueabihf@4.2.3':
optional: true
'@tailwindcss/oxide-linux-arm64-gnu@4.2.3':
optional: true
'@tailwindcss/oxide-linux-arm64-musl@4.2.3':
optional: true
'@tailwindcss/oxide-linux-x64-gnu@4.2.3':
optional: true
'@tailwindcss/oxide-linux-x64-musl@4.2.3':
optional: true
'@tailwindcss/oxide-wasm32-wasi@4.2.3':
optional: true
'@tailwindcss/oxide-win32-arm64-msvc@4.2.3':
optional: true
'@tailwindcss/oxide-win32-x64-msvc@4.2.3':
optional: true
'@tailwindcss/oxide@4.2.3':
optionalDependencies:
'@tailwindcss/oxide-android-arm64': 4.2.3
'@tailwindcss/oxide-darwin-arm64': 4.2.3
'@tailwindcss/oxide-darwin-x64': 4.2.3
'@tailwindcss/oxide-freebsd-x64': 4.2.3
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.3
'@tailwindcss/oxide-linux-arm64-gnu': 4.2.3
'@tailwindcss/oxide-linux-arm64-musl': 4.2.3
'@tailwindcss/oxide-linux-x64-gnu': 4.2.3
'@tailwindcss/oxide-linux-x64-musl': 4.2.3
'@tailwindcss/oxide-wasm32-wasi': 4.2.3
'@tailwindcss/oxide-win32-arm64-msvc': 4.2.3
'@tailwindcss/oxide-win32-x64-msvc': 4.2.3
'@tailwindcss/typography@0.5.19(tailwindcss@4.2.3)':
dependencies:
postcss-selector-parser: 6.0.10
tailwindcss: 4.2.3
cssesc@3.0.0: {}
detect-libc@2.1.2: {}
enhanced-resolve@5.20.1:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.2
graceful-fs@4.2.11: {}
is-extglob@2.1.1: {}
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
jiti@2.6.1: {}
lightningcss-android-arm64@1.32.0:
optional: true
lightningcss-darwin-arm64@1.32.0:
optional: true
lightningcss-darwin-x64@1.32.0:
optional: true
lightningcss-freebsd-x64@1.32.0:
optional: true
lightningcss-linux-arm-gnueabihf@1.32.0:
optional: true
lightningcss-linux-arm64-gnu@1.32.0:
optional: true
lightningcss-linux-arm64-musl@1.32.0:
optional: true
lightningcss-linux-x64-gnu@1.32.0:
optional: true
lightningcss-linux-x64-musl@1.32.0:
optional: true
lightningcss-win32-arm64-msvc@1.32.0:
optional: true
lightningcss-win32-x64-msvc@1.32.0:
optional: true
lightningcss@1.32.0:
dependencies:
detect-libc: 2.1.2
optionalDependencies:
lightningcss-android-arm64: 1.32.0
lightningcss-darwin-arm64: 1.32.0
lightningcss-darwin-x64: 1.32.0
lightningcss-freebsd-x64: 1.32.0
lightningcss-linux-arm-gnueabihf: 1.32.0
lightningcss-linux-arm64-gnu: 1.32.0
lightningcss-linux-arm64-musl: 1.32.0
lightningcss-linux-x64-gnu: 1.32.0
lightningcss-linux-x64-musl: 1.32.0
lightningcss-win32-arm64-msvc: 1.32.0
lightningcss-win32-x64-msvc: 1.32.0
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
mri@1.2.0: {}
node-addon-api@7.1.1: {}
pagefind@1.5.2:
optionalDependencies:
'@pagefind/darwin-arm64': 1.5.2
'@pagefind/darwin-x64': 1.5.2
'@pagefind/freebsd-x64': 1.5.2
'@pagefind/linux-arm64': 1.5.2
'@pagefind/linux-x64': 1.5.2
'@pagefind/windows-arm64': 1.5.2
'@pagefind/windows-x64': 1.5.2
picocolors@1.1.1: {}
picomatch@4.0.4: {}
postcss-selector-parser@6.0.10:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
preact@10.29.1: {}
source-map-js@1.2.1: {}
tailwindcss@4.2.3: {}
tapable@2.3.2: {}
util-deprecate@1.0.2: {}