diff --git a/hugo-blox-builder.code-workspace b/hugo-blox-builder.code-workspace index 1dab6e1c..e974c885 100644 --- a/hugo-blox-builder.code-workspace +++ b/hugo-blox-builder.code-workspace @@ -24,7 +24,8 @@ "**/pagefind/**": true }, "explorer.excludeGitIgnore": true, - + "workbench.editor.labelFormat": "medium", + "breadcrumbs.enabled": true, "npm.packageManager": "pnpm", "editor.formatOnSave": true, diff --git a/modules/blox-tailwind/layouts/_partials/blox/collection.html b/modules/blox-tailwind/blox/collection/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/collection.html rename to modules/blox-tailwind/blox/collection/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/cta-button-list.html b/modules/blox-tailwind/blox/cta-button-list/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/cta-button-list.html rename to modules/blox-tailwind/blox/cta-button-list/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/cta-card.html b/modules/blox-tailwind/blox/cta-card/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/cta-card.html rename to modules/blox-tailwind/blox/cta-card/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/cta-image-paragraph.html b/modules/blox-tailwind/blox/cta-image-paragraph/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/cta-image-paragraph.html rename to modules/blox-tailwind/blox/cta-image-paragraph/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/features.html b/modules/blox-tailwind/blox/features/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/features.html rename to modules/blox-tailwind/blox/features/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/hero.html b/modules/blox-tailwind/blox/hero/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/hero.html rename to modules/blox-tailwind/blox/hero/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/markdown.html b/modules/blox-tailwind/blox/markdown/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/markdown.html rename to modules/blox-tailwind/blox/markdown/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/resume-awards.html b/modules/blox-tailwind/blox/resume-awards/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/resume-awards.html rename to modules/blox-tailwind/blox/resume-awards/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/resume-biography-3.html b/modules/blox-tailwind/blox/resume-biography-3/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/resume-biography-3.html rename to modules/blox-tailwind/blox/resume-biography-3/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/resume-biography.html b/modules/blox-tailwind/blox/resume-biography/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/resume-biography.html rename to modules/blox-tailwind/blox/resume-biography/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/resume-experience.html b/modules/blox-tailwind/blox/resume-experience/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/resume-experience.html rename to modules/blox-tailwind/blox/resume-experience/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/resume-languages.html b/modules/blox-tailwind/blox/resume-languages/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/resume-languages.html rename to modules/blox-tailwind/blox/resume-languages/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/resume-skills.html b/modules/blox-tailwind/blox/resume-skills/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/resume-skills.html rename to modules/blox-tailwind/blox/resume-skills/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/stats.html b/modules/blox-tailwind/blox/stats/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/stats.html rename to modules/blox-tailwind/blox/stats/block.html diff --git a/modules/blox-tailwind/layouts/_partials/blox/testimonials.html b/modules/blox-tailwind/blox/testimonials/block.html similarity index 100% rename from modules/blox-tailwind/layouts/_partials/blox/testimonials.html rename to modules/blox-tailwind/blox/testimonials/block.html diff --git a/modules/blox-tailwind/hugo.yaml b/modules/blox-tailwind/hugo.yaml index b530c50c..73398b54 100644 --- a/modules/blox-tailwind/hugo.yaml +++ b/modules/blox-tailwind/hugo.yaml @@ -65,30 +65,6 @@ minify: keepSpecialComments: true sitemap: changefreq: weekly -module: - hugoVersion: - min: '0.148.2' - extended: true - imports: - - path: github.com/HugoBlox/hugo-blox-builder/modules/blox-analytics - mounts: - - source: content - target: content - - source: static - target: static - - source: layouts - target: layouts - - source: data - target: data - - source: assets - target: assets - - source: i18n - target: i18n - - source: archetypes - target: archetypes - - disableWatch: true - source: hugo_stats.json - target: assets/notwatching/hugo_stats.json security: funcs: getenv: @@ -113,3 +89,62 @@ params: date_format: 'Jan 2, 2006' time_format: '3:04 PM' address_format: en-us +module: + hugoVersion: + min: '0.148.2' + extended: true + imports: + - path: github.com/HugoBlox/hugo-blox-builder/modules/blox-analytics + mounts: + - source: content + target: content + - source: static + target: static + - source: layouts + target: layouts + - source: data + target: data + - source: assets + target: assets + - source: i18n + target: i18n + - source: archetypes + target: archetypes + - disableWatch: true + source: hugo_stats.json + target: assets/notwatching/hugo_stats.json + + # BLOX A) Server-rendered block templates (Go HTML) + - source: blox + target: layouts/partials/hbx/blocks + includeFiles: + - '**/block.html' + + # BLOX B) Client islands (compiled with js.Build/js.Batch) + - source: blox + target: assets/js/hbx/blocks + includeFiles: + - '**/*.js' + - '**/*.ts' + - '**/*.jsx' + - '**/*.tsx' + + # BLOX C) Block-specific CSS + - source: blox + target: assets/css/hbx/blocks + includeFiles: + - '**/*.css' + + # BLOX D) Shared assets (optional) + - source: blox/shared/js + target: assets/js/hbx/shared + - source: blox/shared/css + target: assets/css/hbx/shared + - source: blox + target: assets/img/hbx/blocks + includeFiles: + - '**/*.png' + - '**/*.jpg' + - '**/*.jpeg' + - '**/*.svg' + - '**/*.webp' diff --git a/modules/blox-tailwind/i18n/ar.yaml b/modules/blox-tailwind/i18n/ar.yaml index 88e2de7f..b5d2e96a 100644 --- a/modules/blox-tailwind/i18n/ar.yaml +++ b/modules/blox-tailwind/i18n/ar.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/ca.yaml b/modules/blox-tailwind/i18n/ca.yaml index f73ca3d3..e1f0559c 100644 --- a/modules/blox-tailwind/i18n/ca.yaml +++ b/modules/blox-tailwind/i18n/ca.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/cs.yaml b/modules/blox-tailwind/i18n/cs.yaml index 9c505c0b..f1676fc6 100644 --- a/modules/blox-tailwind/i18n/cs.yaml +++ b/modules/blox-tailwind/i18n/cs.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/da.yaml b/modules/blox-tailwind/i18n/da.yaml index e1dcfb7f..231d0182 100644 --- a/modules/blox-tailwind/i18n/da.yaml +++ b/modules/blox-tailwind/i18n/da.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/el.yaml b/modules/blox-tailwind/i18n/el.yaml index 01b3d3d6..9a8e353b 100644 --- a/modules/blox-tailwind/i18n/el.yaml +++ b/modules/blox-tailwind/i18n/el.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/en.yaml b/modules/blox-tailwind/i18n/en.yaml index 4b89d06f..025ffbc0 100644 --- a/modules/blox-tailwind/i18n/en.yaml +++ b/modules/blox-tailwind/i18n/en.yaml @@ -322,7 +322,7 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. # Feedback widget diff --git a/modules/blox-tailwind/i18n/es.yaml b/modules/blox-tailwind/i18n/es.yaml index 969b3abf..c13f45d8 100644 --- a/modules/blox-tailwind/i18n/es.yaml +++ b/modules/blox-tailwind/i18n/es.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/et.yaml b/modules/blox-tailwind/i18n/et.yaml index 8e1147f3..6872017f 100644 --- a/modules/blox-tailwind/i18n/et.yaml +++ b/modules/blox-tailwind/i18n/et.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/eu.yaml b/modules/blox-tailwind/i18n/eu.yaml index 279a346f..bfd78566 100644 --- a/modules/blox-tailwind/i18n/eu.yaml +++ b/modules/blox-tailwind/i18n/eu.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/fa.yaml b/modules/blox-tailwind/i18n/fa.yaml index 4f7125a1..4c3cf356 100644 --- a/modules/blox-tailwind/i18n/fa.yaml +++ b/modules/blox-tailwind/i18n/fa.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/fi.yaml b/modules/blox-tailwind/i18n/fi.yaml index f7c7acbd..5284d083 100644 --- a/modules/blox-tailwind/i18n/fi.yaml +++ b/modules/blox-tailwind/i18n/fi.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/hu.yaml b/modules/blox-tailwind/i18n/hu.yaml index 7c50de80..d7f6813d 100644 --- a/modules/blox-tailwind/i18n/hu.yaml +++ b/modules/blox-tailwind/i18n/hu.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/it.yaml b/modules/blox-tailwind/i18n/it.yaml index 9bf7bd07..2286ab33 100644 --- a/modules/blox-tailwind/i18n/it.yaml +++ b/modules/blox-tailwind/i18n/it.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/ja.yaml b/modules/blox-tailwind/i18n/ja.yaml index f5884693..ebc97a6a 100644 --- a/modules/blox-tailwind/i18n/ja.yaml +++ b/modules/blox-tailwind/i18n/ja.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/km.yaml b/modules/blox-tailwind/i18n/km.yaml index 2462eff5..a6c162d6 100644 --- a/modules/blox-tailwind/i18n/km.yaml +++ b/modules/blox-tailwind/i18n/km.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/ko.yaml b/modules/blox-tailwind/i18n/ko.yaml index 48bcdf22..bb3dc7ca 100644 --- a/modules/blox-tailwind/i18n/ko.yaml +++ b/modules/blox-tailwind/i18n/ko.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/lt.yaml b/modules/blox-tailwind/i18n/lt.yaml index d3755abd..f72709a7 100644 --- a/modules/blox-tailwind/i18n/lt.yaml +++ b/modules/blox-tailwind/i18n/lt.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/lv.yaml b/modules/blox-tailwind/i18n/lv.yaml index 35cab2e4..9119bc6e 100644 --- a/modules/blox-tailwind/i18n/lv.yaml +++ b/modules/blox-tailwind/i18n/lv.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/nl.yaml b/modules/blox-tailwind/i18n/nl.yaml index e746e94f..969d7fb7 100644 --- a/modules/blox-tailwind/i18n/nl.yaml +++ b/modules/blox-tailwind/i18n/nl.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/pl.yaml b/modules/blox-tailwind/i18n/pl.yaml index 0d0a3ef5..55bb890d 100644 --- a/modules/blox-tailwind/i18n/pl.yaml +++ b/modules/blox-tailwind/i18n/pl.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/pt.yaml b/modules/blox-tailwind/i18n/pt.yaml index e2499c8a..fb92f20e 100644 --- a/modules/blox-tailwind/i18n/pt.yaml +++ b/modules/blox-tailwind/i18n/pt.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/ro.yaml b/modules/blox-tailwind/i18n/ro.yaml index fde6b7b3..ba315acd 100644 --- a/modules/blox-tailwind/i18n/ro.yaml +++ b/modules/blox-tailwind/i18n/ro.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/ru.yaml b/modules/blox-tailwind/i18n/ru.yaml index d56e14e1..8f4923e1 100644 --- a/modules/blox-tailwind/i18n/ru.yaml +++ b/modules/blox-tailwind/i18n/ru.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/so.yaml b/modules/blox-tailwind/i18n/so.yaml index ce159dfc..8f63234a 100644 --- a/modules/blox-tailwind/i18n/so.yaml +++ b/modules/blox-tailwind/i18n/so.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/sv.yaml b/modules/blox-tailwind/i18n/sv.yaml index b9f4057c..1af157a9 100644 --- a/modules/blox-tailwind/i18n/sv.yaml +++ b/modules/blox-tailwind/i18n/sv.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/tr.yaml b/modules/blox-tailwind/i18n/tr.yaml index a9e82015..3da983dd 100644 --- a/modules/blox-tailwind/i18n/tr.yaml +++ b/modules/blox-tailwind/i18n/tr.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/uk.yaml b/modules/blox-tailwind/i18n/uk.yaml index 0a7809ba..bbce6be2 100644 --- a/modules/blox-tailwind/i18n/uk.yaml +++ b/modules/blox-tailwind/i18n/uk.yaml @@ -262,4 +262,4 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. diff --git a/modules/blox-tailwind/i18n/vi.yaml b/modules/blox-tailwind/i18n/vi.yaml index 2fc7f3fd..d92899d3 100644 --- a/modules/blox-tailwind/i18n/vi.yaml +++ b/modules/blox-tailwind/i18n/vi.yaml @@ -262,7 +262,7 @@ # Published with - id: published_with - translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators. + translation: Made with {hugoblox}. # Feedback widget diff --git a/modules/blox-tailwind/layouts/_partials/functions/parse_block_v2.html b/modules/blox-tailwind/layouts/_partials/functions/parse_block_v2.html index 62356f4d..7605b579 100644 --- a/modules/blox-tailwind/layouts/_partials/functions/parse_block_v2.html +++ b/modules/blox-tailwind/layouts/_partials/functions/parse_block_v2.html @@ -9,14 +9,9 @@ {{ range $r := site.Data.blox_aliases.renames }} {{ $block_type = cond (eq $block_type $r.old) $r.new $block_type }} {{ end }} -{{ $block_path := printf "blox/%s.html" $block_type }} +{{ $block_path := printf "hbx/blocks/%s/block.html" $block_type }} {{ if not (templates.Exists (printf "_partials/%s" $block_path)) }} - {{ $block_path_community := printf "blox/community/%s.html" $block_type }} - {{ if not (templates.Exists (printf "_partials/%s" $block_path_community)) }} - {{ errorf "%s uses a `%s` blox but the `%s` blox was not found. Check the name of the blox and try again. For a custom or community blox, upload it first to `hugo-blox/blox/community/%s.html`. For an All Access blox, upload it first to `hugo-blox/blox/all-access/%s.html`" $page.File.Path $block_type $block_type $block_type $block_type }} - {{ else }} - {{ $block_path = $block_path_community }} - {{ end }} + {{ errorf "%s uses a `%s` block but the `%s` block was not found at `%s`. Check the name of the block and ensure it exists in the blox/%s/ directory." $page.File.Path $block_type $block_type $block_path $block_type }} {{ end }} {{/* Mermaid block: Workaround to make Hugo's .Page.Store.Set cascade up to the parent of headless pages */}} diff --git a/modules/blox-tailwind/layouts/_partials/hbx/resolve.html b/modules/blox-tailwind/layouts/_partials/hbx/resolve.html new file mode 100644 index 00000000..9113b781 --- /dev/null +++ b/modules/blox-tailwind/layouts/_partials/hbx/resolve.html @@ -0,0 +1,15 @@ +{{/* HBX resolver: maps a section { block: "", ... } to the block partial. + This resolver looks up blocks from the blox//block.html structure, + which are mounted to layouts/partials/hbx/blocks//block.html via module.yaml. +*/}} +{{- $id := .section.block -}} +{{- if not $id }}{{ errorf "HBX: section is missing 'block' key: %v" .section }}{{ end -}} + +{{- $params := .section -}} +{{- $path := printf "hbx/blocks/%s/block.html" $id -}} + +{{- if templates.Exists (printf "partials/%s" $path) -}} + {{ partial $path (dict "wcPage" .ctx "wcBlock" $params "wcIdentifier" ($params.id | default (printf "section-%s" $id))) }} +{{- else -}} + {{ errorf "HBX: block '%s' not found at %q" $id $path }} +{{- end -}} diff --git a/modules/blox-tailwind/layouts/_partials/hbx/sections.html b/modules/blox-tailwind/layouts/_partials/hbx/sections.html new file mode 100644 index 00000000..78dd0d93 --- /dev/null +++ b/modules/blox-tailwind/layouts/_partials/hbx/sections.html @@ -0,0 +1,11 @@ +{{/* Returns sections from front matter or from data. */}} +{{- $sections := .Params.sections -}} +{{- if not $sections -}} + {{/* Data-driven pages. */}} + {{- $p := .File.PathBase -}} + {{- with index site.Data.pages $p -}} + {{- $sections = .sections -}} + {{- warnf "HBX: Using data-driven sections from data/pages/%s for page %s" $p $.RelPermalink -}} + {{- end -}} +{{- end -}} +{{- return $sections -}} diff --git a/modules/blox-tailwind/layouts/_partials/landing_page.html b/modules/blox-tailwind/layouts/_partials/landing_page.html index 65e7cfc7..25f5de62 100644 --- a/modules/blox-tailwind/layouts/_partials/landing_page.html +++ b/modules/blox-tailwind/layouts/_partials/landing_page.html @@ -1,5 +1,11 @@ -{{/* Load Hugo Blox */}} -{{ range $index, $block := .Params.sections }} +{{/* Load Hugo Blox - HBX resolver-based system + Blocks live in `blox//block.html` and are mounted to `layouts/partials/hbx/blocks//block.html`. + Landing pages must specify `sections: [{ block: '', ... }]`. +*/}} +{{/* Use unified sections source */}} +{{- $sections := partial "hbx/sections.html" . -}} + +{{ range $index, $block := $sections }} {{/* Do not show sections intended only for the demo site. */}} {{ if or (not $block.demo) ($block.demo | and (eq (os.Getenv "HUGO_BLOX_DEMO") "true")) }} {{ partial "functions/parse_block_v2" (dict "page" $ "block" $block) }} diff --git a/modules/blox-tailwind/layouts/_partials/site_footer.html b/modules/blox-tailwind/layouts/_partials/site_footer.html index f6476781..a3e66bf9 100644 --- a/modules/blox-tailwind/layouts/_partials/site_footer.html +++ b/modules/blox-tailwind/layouts/_partials/site_footer.html @@ -10,21 +10,66 @@ {{ end }} {{ partial $footer_section_path . }} -

- {{ $is_sponsor := site.Params.i_am_a_sponsor | default false }} - {{ $hide_published_with_footer := site.Params.power_ups.hide_published_with | default true }} - {{ if not (and $is_sponsor $hide_published_with_footer) }} - {{ $default := "Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators." }} - {{ $i18n_published_with := i18n "published_with" | default $default }} - {{ if not (findRE "{hugoblox}" $i18n_published_with) }} - {{ warnf "Please attribute Hugo Blox using `{hugoblox}` in the `published_with` text." }} - {{ $i18n_published_with = $default }} + {{/* Attribution - PLEASE DO NOT REMOVE THIS, SUPPORT OPEN SOURCE */}} + {{- if not (site.Params.i_am_a_sponsor | default false) -}} + {{- $base := "https://hugoblox.com" -}} + {{- $tid := "" -}} + {{- $ref := .Site.Params.affiliate_ref | default "" -}} + + {{/* Detect Template */}} + {{ $hugoblox_file := "" }} + {{ if fileExists "hugoblox.yaml" }} + {{ $hugoblox_file = readFile "hugoblox.yaml" }} + {{ if $hugoblox_file }} + {{ $hugoblox_data := $hugoblox_file | transform.Unmarshal }} + {{ $tid = $hugoblox_data.template.id | default "" }} {{ end }} - {{ $i18n_published_with = replace $i18n_published_with "{hugoblox}" "Hugo Blox Builder" | safeHTML }} + {{ end }} + + {{/* Per-site variant selection */}} + {{- $brandOptions := slice "Hugo Blox" "Hugo Blox Builder" "Hugo Blox — Open Source" -}} + {{- $ctaWhenTemplate := slice "Duplicate this template →" "Clone this template →" "Build yours →" "Create yours →" "Build your site →" "Create your site →" -}} + {{- $ctaNoTemplate := slice "Start free →" "Build yours →" "Create yours →" "Build your site →" "Create your site →" -}} + + {{- $seed := .Site.BaseURL -}} + {{- $h := md5 $seed -}} + {{- $digits := replaceRE "[^0-9]" "" $h -}} + {{- if lt (len $digits) 6 }}{{- $digits = printf "%s123456" $digits -}}{{- end -}} + {{- $n := int (substr $digits 0 6) -}} + + {{- $brandText := index $brandOptions (mod $n (len $brandOptions)) -}} + {{- $ctaText := cond (ne $tid "") + (index $ctaWhenTemplate (mod $n (len $ctaWhenTemplate))) + (index $ctaNoTemplate (mod $n (len $ctaNoTemplate))) -}} + + {{- $target := cond (ne $tid "") + (printf "%s/templates/%s/start" $base $tid) + (printf "%s/start" $base) -}} + + {{- $brandHref := printf "%s?utm_source=site_footer&utm_medium=referral&utm_campaign=poweredby_oss&utm_content=brand_%s" + $base (cond (ne $tid "") (printf "%s" $tid) "na") -}} + {{- $ctaHref := printf "%s?utm_source=site_footer&utm_medium=referral&utm_campaign=poweredby_oss&utm_content=cta_%s" + $target (cond (ne $tid "") (printf "%s" $tid) "na") -}} + {{- if ne $ref "" -}} + {{- $brandHref = printf "%s&ref=%s" $brandHref $ref -}} + {{- $ctaHref = printf "%s&ref=%s" $ctaHref $ref -}} + {{- end -}} + +

+ {{ $published_with := "Made with {hugoblox}." }} + {{ $i18n_published_with := i18n "published_with" | default $published_with }} + {{ $i18n_ctaText := i18n "poweredby_button" | default $ctaText }} + {{ if not (findRE "{hugoblox}" $i18n_published_with) }} + {{ warnf "Please attribute Hugo Blox using `{hugoblox}` in the i18n `published_with` text or sponsor with All Access to remove attribution." }} + {{ $i18n_published_with = $published_with }} + {{ end }} + {{ $i18n_published_with = replace $i18n_published_with "{hugoblox}" (printf "%s" $brandHref $brandText) | safeHTML }} {{ $i18n_published_with = replace $i18n_published_with "{repo_link}" "" | safeHTML }} {{ $i18n_published_with = replace $i18n_published_with "{/repo_link}" "" | safeHTML }} - {{ $i18n_published_with | replaceRE "{year}" now.Year | markdownify | emojify | safeHTML }} - {{ end }} -

+ {{ $i18n_published_with | safeHTML }} + {{ $i18n_ctaText }} +

+ {{- end -}} diff --git a/package.json b/package.json index e4703b77..20f20fae 100644 --- a/package.json +++ b/package.json @@ -32,27 +32,23 @@ "prettier-plugin-go-template": "~0.0.12", "stylelint": "14.8.2", "stylelint-config-prettier": "~9.0.3", - "stylelint-config-prettier-scss": "^0.0.1", "stylelint-config-standard": "~25.0.0", - "stylelint-config-standard-scss": "^3.0.0", "stylelint-scss": "~4.2.0" }, "scripts": { - "view": "scripts/view-starter.sh", - "view:local": "scripts/view-starter-dev.sh", + "prod": "scripts/view-starter-prod.sh", + "dev": "scripts/view-starter-dev.sh", "test": "echo \"Error: no test specified\" && exit 1", "lint": "pnpm run lint:js && pnpm run lint:style", "lint:js": "eslint '*/**/*.{js,ts,tsx}'", "lint:js:fix": "eslint '*/**/*.{js,ts,tsx}' --fix", - "lint:style": "stylelint 'modules/blox-tailwind/**/*.css'", - "lint:style:fix": "stylelint 'modules/blox-tailwind/**/*.css' --fix", - "format": "prettier --write \"*.{css,js,json,md,scss}\" \"./**/*.{css,js,json,md,scss}\"", + "lint:style": "stylelint '**/*.css'", + "lint:style:fix": "stylelint '**/*.css' --fix", + "format": "prettier --write \"*.{css,js,json,md}\" \"./**/*.{css,js,json,md}\"", "stylelint-conflict-check": "stylelint-config-prettier-check", - "update:starter": "scripts/update-starter.sh", "update:starters": "poetry run python ./scripts/update.py", "vendor:libs": "vite build --config vite.config.js", "vendor:libs:watch": "vite build --config vite.config.js --watch" }, - "browserslist": "> 1%", - "packageManager": "pnpm@10.14.0" + "browserslist": "> 1%" } diff --git a/scripts/gen_demo_resources.sh b/scripts/gen_demo_resources.sh deleted file mode 100755 index 194221b6..00000000 --- a/scripts/gen_demo_resources.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env zsh - -# Generate preprocessed resources for demo site whilst also removing disused resources. -# Run this script from the root Hugo Blox dir. -HUGO_THEME=hugo-blox-builder hugo --source exampleSite --themesDir ../../ --gc diff --git a/scripts/rm_hugo_cache.sh b/scripts/rm-hugo-cache.sh similarity index 100% rename from scripts/rm_hugo_cache.sh rename to scripts/rm-hugo-cache.sh diff --git a/scripts/update-starter.sh b/scripts/update-starter.sh deleted file mode 100755 index a3c8eea5..00000000 --- a/scripts/update-starter.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env zsh - -cd "starters/$1" -hugo mod get -u ./... -cd ../.. diff --git a/scripts/view-starter-dev.sh b/scripts/view-starter-dev.sh index b05cf5d2..40a12241 100755 --- a/scripts/view-starter-dev.sh +++ b/scripts/view-starter-dev.sh @@ -10,8 +10,15 @@ cleanup() { trap cleanup EXIT INT TERM usage() { + echo "View a starter template with local development modules and debug features." + echo "" echo "Usage: ./scripts/view-starter-dev.sh [--debug] [--no-pagefind]" echo "Example: ./scripts/view-starter-dev.sh blog --debug" + echo "" + echo "This script uses:" + echo " • Local development modules (via HUGO_MODULE_REPLACEMENTS)" + echo " • Development environment with demo/debug flags enabled" + echo " • Optional Pagefind search indexing and enhanced debugging" } if [ $# -lt 1 ]; then diff --git a/scripts/view-starter.sh b/scripts/view-starter-prod.sh similarity index 54% rename from scripts/view-starter.sh rename to scripts/view-starter-prod.sh index 6eafb53c..7e9c14c2 100755 --- a/scripts/view-starter.sh +++ b/scripts/view-starter-prod.sh @@ -8,9 +8,20 @@ exitfn () { trap "exitfn" INT +usage() { + echo "View a starter template with published production modules." + echo "" + echo "Usage: ./scripts/view-starter-prod.sh " + echo "Example: ./scripts/view-starter-prod.sh blog" + echo "" + echo "This script uses:" + echo " • Published/released modules (no local overrides)" + echo " • Production environment (simulates end-user experience)" + echo " • Minimal configuration for testing published versions" +} + if [ -z "$1" ]; then - echo "Usage: ./scripts/view-starter.sh " - echo "Example: ./scripts/view-starter.sh blog" + usage exit 1 fi @@ -31,8 +42,8 @@ if [ -f "package.json" ]; then fi fi -HUGO_ENVIRONMENT=development \ -HUGOxPARAMSxDECAP_CMSxLOCAL_BACKEND=true \ +# Use production environment with published modules (no local module replacements) +HUGO_ENVIRONMENT=production \ hugo server --panicOnWarning --renderStaticToDisk -F --port 8081 --bind 0.0.0.0 trap SIGINT diff --git a/scripts/view_demo.sh b/scripts/view_demo.sh deleted file mode 100755 index 6ab835b6..00000000 --- a/scripts/view_demo.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env zsh - -# View the demo site on any local devices by binding the local IP on port 1315. -# Run this script from the root Hugo Blox dir. -HUGO_THEME=hugo-blox-builder hugo \ ---source exampleSite --themesDir ../../ \ ---bind=0.0.0.0 -p 1315 --baseURL=http://0.0.0.0:1315 \ ---i18n-warnings --minify -e "development" \ -server - -#HUGO_THEME=hugo-blox-builder hugo convert toYAML --unsafe --themesDir ../../ diff --git a/starters/academic-cv/.github/workflows/deploy.yml b/starters/academic-cv/.github/workflows/deploy.yml index 0528a510..a8d26114 100644 --- a/starters/academic-cv/.github/workflows/deploy.yml +++ b/starters/academic-cv/.github/workflows/deploy.yml @@ -91,8 +91,6 @@ jobs: # Check if site uses Pagefind search if [ -f "package.json" ] && grep -q "pagefind" package.json; then pnpm dlx pagefind --source "public" || npx pagefind --source "public" - elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then - pnpm dlx pagefind --source "public" || npx pagefind --source "public" fi - name: Upload artifact diff --git a/starters/academic-cv/hugoblox.yaml b/starters/academic-cv/hugoblox.yaml index 0893d61f..c8f749cd 100644 --- a/starters/academic-cv/hugoblox.yaml +++ b/starters/academic-cv/hugoblox.yaml @@ -1,2 +1,5 @@ build: hugo_version: '0.148.2' +template: + id: "academic-cv" + name: "Academic CV" diff --git a/starters/blog/.github/workflows/deploy.yml b/starters/blog/.github/workflows/deploy.yml index 0528a510..a8d26114 100644 --- a/starters/blog/.github/workflows/deploy.yml +++ b/starters/blog/.github/workflows/deploy.yml @@ -91,8 +91,6 @@ jobs: # Check if site uses Pagefind search if [ -f "package.json" ] && grep -q "pagefind" package.json; then pnpm dlx pagefind --source "public" || npx pagefind --source "public" - elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then - pnpm dlx pagefind --source "public" || npx pagefind --source "public" fi - name: Upload artifact diff --git a/starters/blog/hugoblox.yaml b/starters/blog/hugoblox.yaml index 0893d61f..6bc1c540 100644 --- a/starters/blog/hugoblox.yaml +++ b/starters/blog/hugoblox.yaml @@ -1,2 +1,5 @@ build: hugo_version: '0.148.2' +template: + id: "blog" + name: "Blog" diff --git a/starters/documentation/.github/workflows/deploy.yml b/starters/documentation/.github/workflows/deploy.yml index 0528a510..a8d26114 100644 --- a/starters/documentation/.github/workflows/deploy.yml +++ b/starters/documentation/.github/workflows/deploy.yml @@ -91,8 +91,6 @@ jobs: # Check if site uses Pagefind search if [ -f "package.json" ] && grep -q "pagefind" package.json; then pnpm dlx pagefind --source "public" || npx pagefind --source "public" - elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then - pnpm dlx pagefind --source "public" || npx pagefind --source "public" fi - name: Upload artifact diff --git a/starters/documentation/hugoblox.yaml b/starters/documentation/hugoblox.yaml index 0893d61f..9f04d7c2 100644 --- a/starters/documentation/hugoblox.yaml +++ b/starters/documentation/hugoblox.yaml @@ -1,2 +1,5 @@ build: hugo_version: '0.148.2' +template: + id: "documentation" + name: "Documentation" diff --git a/starters/landing-page/.github/workflows/deploy.yml b/starters/landing-page/.github/workflows/deploy.yml index 0528a510..a8d26114 100644 --- a/starters/landing-page/.github/workflows/deploy.yml +++ b/starters/landing-page/.github/workflows/deploy.yml @@ -91,8 +91,6 @@ jobs: # Check if site uses Pagefind search if [ -f "package.json" ] && grep -q "pagefind" package.json; then pnpm dlx pagefind --source "public" || npx pagefind --source "public" - elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then - pnpm dlx pagefind --source "public" || npx pagefind --source "public" fi - name: Upload artifact diff --git a/starters/landing-page/hugoblox.yaml b/starters/landing-page/hugoblox.yaml index 0893d61f..bf1e7197 100644 --- a/starters/landing-page/hugoblox.yaml +++ b/starters/landing-page/hugoblox.yaml @@ -1,2 +1,5 @@ build: hugo_version: '0.148.2' +template: + id: "landing-page" + name: "Landing Page" diff --git a/starters/link-in-bio/.github/workflows/deploy.yml b/starters/link-in-bio/.github/workflows/deploy.yml index 0528a510..a8d26114 100644 --- a/starters/link-in-bio/.github/workflows/deploy.yml +++ b/starters/link-in-bio/.github/workflows/deploy.yml @@ -91,8 +91,6 @@ jobs: # Check if site uses Pagefind search if [ -f "package.json" ] && grep -q "pagefind" package.json; then pnpm dlx pagefind --source "public" || npx pagefind --source "public" - elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then - pnpm dlx pagefind --source "public" || npx pagefind --source "public" fi - name: Upload artifact diff --git a/starters/link-in-bio/hugoblox.yaml b/starters/link-in-bio/hugoblox.yaml index 0893d61f..831c9cb0 100644 --- a/starters/link-in-bio/hugoblox.yaml +++ b/starters/link-in-bio/hugoblox.yaml @@ -1,2 +1,5 @@ build: hugo_version: '0.148.2' +template: + id: "link-in-bio" + name: "Link in Bio" diff --git a/starters/resume/.github/workflows/deploy.yml b/starters/resume/.github/workflows/deploy.yml index 0528a510..a8d26114 100644 --- a/starters/resume/.github/workflows/deploy.yml +++ b/starters/resume/.github/workflows/deploy.yml @@ -91,8 +91,6 @@ jobs: # Check if site uses Pagefind search if [ -f "package.json" ] && grep -q "pagefind" package.json; then pnpm dlx pagefind --source "public" || npx pagefind --source "public" - elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then - pnpm dlx pagefind --source "public" || npx pagefind --source "public" fi - name: Upload artifact diff --git a/starters/resume/hugoblox.yaml b/starters/resume/hugoblox.yaml index 0893d61f..aa32a781 100644 --- a/starters/resume/hugoblox.yaml +++ b/starters/resume/hugoblox.yaml @@ -1,2 +1,5 @@ build: hugo_version: '0.148.2' +template: + id: "resume" + name: "Resume"