refactor: rename modules and update migration docs

BREAKING CHANGE
Module paths moved to `github.com/HugoBlox/kit` with new names:
- core `blox-tailwind` → `blox`
- analytics → `analytics`
- netlify → `integrations/netlify`
- slides (reveal) → `slides`
Update go.mod, module.yaml/params, scripts, tests, and v0.11 migration guide accordingly.
This commit is contained in:
George Cushen committed 2026-01-02 20:59:48 +00:00
1 parent e7e0c714d3
commit f4280ddb1c
566 files changed
+134 -151

No files matched your search

@@ -236,9 +236,9 @@ jobs:
id: min
run: |
set -euo pipefail
VERSION=$(grep -E "^[[:space:]]*min:[[:space:]]*['\"]?" modules/blox-tailwind/hugo.yaml | head -n1 | sed -E "s/.*min:[[:space:]]*['\"]?([^'\"#]+).*/\\1/")
VERSION=$(grep -E "^[[:space:]]*min:[[:space:]]*['\"]?" modules/blox/hugo.yaml | head -n1 | sed -E "s/.*min:[[:space:]]*['\"]?([^'\"#]+).*/\\1/")
if [ -z "$VERSION" ]; then
echo "::error::Could not read module.hugoVersion.min from modules/blox-tailwind/hugo.yaml"
echo "::error::Could not read module.hugoVersion.min from modules/blox/hugo.yaml"
exit 1
fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
+6 -6
View File
@@ -142,12 +142,12 @@ That's it! You're ready to contribute. 🎉
```
kit/
├── modules/
│ └── blox-tailwind/ # Main theme module
│ ├── layouts/ # HTML templates (easy to edit!)
│ ├── assets/css/ # Tailwind CSS v4 styles
│ └── i18n/ # Translations (help translate!)
│ └── blox/ # Main theme module
│ ├── layouts/ # HTML templates (easy to edit!)
│ ├── assets/css/ # Tailwind CSS v4 styles
│ └── i18n/ # Translations (help translate!)
├── templates/
│ ├── academic-cv/ # CV/Resume template
│ ├── academic-cv/ # CV/Resume template
│ ├── blog/ # Blog template
│ └── documentation/ # Docs template
└── scripts/ # Helper scripts
@@ -177,7 +177,7 @@ Please be mindful of the project [scope](#scope).
### Contribute a language pack
To contribute a **new language pack** or an improvement to a language pack, refer to the [language pack guide](https://docs.hugoblox.com/reference/language/#create-or-modify-a-language-pack). Once created, [fork Hugo Blox Builder](https://github.com/HugoBlox/kit), place your language pack in `modules/blox-tailwind/i18n/`, add the language metadata to `modules/blox-tailwind/data/languages.yaml`, and open a Pull Request on Github with these two files.
To contribute a **new language pack** or an improvement to a language pack, refer to the [language pack guide](https://docs.hugoblox.com/reference/language/#create-or-modify-a-language-pack). Once created, [fork Hugo Blox Builder](https://github.com/HugoBlox/kit), place your language pack in `modules/blox/i18n/`, add the language metadata to `modules/blox/data/languages.yaml`, and open a Pull Request on Github with these two files.
### Contribute a theme pack
+2 -2
View File
@@ -21,14 +21,14 @@
"!**/*.backlinks.json",
"!**/hugo_stats.json",
"!**/*.code-workspace",
"!**/modules/blox-tailwind/data/icons/devicon.json",
"!**/modules/blox/data/icons/devicon.json",
"!**/templates",
"!**/test",
"!**/modules/**/package.json",
"!**/assets/jsconfig.json",
"!**/docs-local",
"!**/backups",
"!**/modules/blox-tailwind/assets/css/config/safelist.css"
"!**/modules/blox/assets/css/config/safelist.css"
]
},
"formatter": {
@@ -1,8 +1,8 @@
# blox-analytics
# Analytics module
**A Hugo module (plugin) for website analytics and search engine verification.**
**A Hugo Blox module for website analytics and search engine verification.**
Are you using the `blox-tailwind` module? The analytics module is already included, so you do not need to install it. For all other sites, refer to the installation guide below.
Are you using the `blox` module? The analytics module is already included, so you do not need to install it. For all other sites, refer to the installation guide below.
## Install
@@ -13,7 +13,7 @@ Get analytics and verification for your Hugo site by following the guide below:
```yaml
module:
imports:
- path: github.com/HugoBlox/kit/modules/blox-analytics
- path: github.com/HugoBlox/kit/modules/analytics
```
2. Load the module in your site's `<head>` with:
+3
View File
@@ -0,0 +1,3 @@
module github.com/HugoBlox/kit/modules/analytics
go 1.15
File renamed without changes.
-3
View File
@@ -1,3 +0,0 @@
module github.com/HugoBlox/kit/modules/blox-analytics
go 1.15
-3
View File
@@ -1,3 +0,0 @@
module github.com/HugoBlox/kit/modules/blox-plugin-netlify
go 1.15
-3
View File
@@ -1,3 +0,0 @@
module github.com/HugoBlox/kit/modules/blox-plugin-reveal
go 1.19
@@ -1 +0,0 @@
.pagefind-ui__result.svelte-j9e30.svelte-j9e30{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-j9e30.svelte-j9e30:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-thumb.svelte-j9e30.svelte-j9e30{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-j9e30.svelte-j9e30{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-j9e30.svelte-j9e30{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-j9e30.svelte-j9e30{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-j9e30.svelte-j9e30{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-j9e30.svelte-j9e30{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf{display:flex;flex-direction:column;padding-left:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf:first-of-type{padding-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{font-size:.9em;position:relative}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:before{content:"\2937 ";position:absolute;top:0;right:calc(100% + .1em)}.pagefind-ui__result-thumb.svelte-4xnkmf.svelte-4xnkmf{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-4xnkmf.svelte-4xnkmf{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-4xnkmf.svelte-4xnkmf{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-4xnkmf.svelte-4xnkmf{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-raLine truncated
@@ -1,2 +0,0 @@
(()=>{var Gn=Object.defineProperty;var A=(n,e)=>{for(var t in e)Gn(n,t,{get:e[t],enumerable:!0})};function j(){}function Qe(n){return n()}function Dt(){return Object.create(null)}function G(n){n.forEach(Qe)}function qe(n){return typeof n=="function"}function V(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}var Le;function se(n,e){return Le||(Le=document.createElement("a")),Le.href=e,n===Le.href}function zt(n){return Object.keys(n).length===0}var Ut=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global,_e=class{constructor(e){this.options=e,this._listeners="WeakMap"in Ut?new WeakMap:void 0}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!==null&&e!==void 0?e:this._observer=new ResizeObserver(t=>{var l;for(let s of t)_e.entries.set(s.target,s),(l=this._listeners.get(s.target))===null||l===void 0||l(s)})}};_e.entries="WeakMap"in Ut?new WeakMap:void 0;var It=!1;function Vn(){It=!0}function Wn(){It=!1}function b(n,e){n.appendChild(e)}function y(n,e,t){n.insertBefore(e,t||null)}function v(n){n.parentNode&&n.parentNode.removeChild(n)}function X(n,e){for(let t=0;t<n.length;t+=1)n[t]&&n[t].d(e)}function C(n){return document.createElement(n)}function Jn(n){return document.createElementNS("http://www.w3.org/2000/svg",n)}function w(n){return document.createTextNode(n)}function S(){return w(" ")}function Z(){return w("")}function W(n,e,t,l){return n.addEventListener(e,t,l),()=>n.removeEventListener(e,t,l)}function p(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Kn(n){return Array.from(n.childNodes)}function N(n,e){e=""+e,n.data!==e&&(n.data=e)}function xe(n,e){n.value=e??""}function B(n,e,t){n.classList[t?"add":"remove"](e)}var Be=class{constructor(e=!1){this.is_svg=!1,this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,t,l=null){this.e||(this.is_svg?this.e=Jn(t.nodeName):this.e=C(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(l)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;t<this.n.length;t+=1)y(this.t,this.n[t],e)}p(e){this.d(),this.h(e),this.i(this.a)}d(){this.n.forEach(v)}};var de;function fe(n){de=n}function Yn(){if(!de)throw new Error("Function called outside component initialization");return de}function $e(n){Yn().$$.on_mount.push(n)}var te=[];var le=[],ne=[],Ye=[],Xn=Promise.resolve(),Xe=!1;function Zn(){Xe||(Xe=!0,Xn.then(Pt))}function Ze(n){ne.push(n)}function Lt(n){Ye.push(n)}var Ke=new Set,ee=0;function Pt(){if(ee!==0)return;let n=de;do{try{for(;ee<te.length;){let e=te[ee];ee++,fe(e),Qn(e.$$)}}catch(e){throw te.length=0,ee=0,e}for(fe(null),te.length=0,ee=0;le.length;)le.pop()();for(let e=0;e<ne.length;e+=1){let t=ne[e];Ke.has(t)||(Ke.add(t),t())}ne.length=0}while(te.length);for(;Ye.length;)Ye.pop()();Xe=!1,Ke.clear(),fe(n)}function Qn(n){if(n.fragment!==null){n.update(),G(n.before_update);let e=n.dirty;n.dirty=[-1],n.fragment&&n.fragment.p(n.ctx,e),n.after_update.forEach(Ze)}}function xn(n){let e=[],t=[];ne.forEach(l=>n.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),ne=e}var Pe=new Set,$;function re(){$={r:0,c:[],p:$}}function ie(){$.r||G($.c),$=$.p}function D(n,e){n&&n.i&&(Pe.delete(n),n.i(e))}function I(n,e,t,l){if(n&&n.o){if(Pe.has(n))return;Pe.add(n),$.c.push(()=>{Pe.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function qt(n,e){I(n,1,1,()=>{e.delete(n.key)})}function Bt(n,e,t,l,s,r,i,o,a,h,_,f){let c=n.length,E=r.length,u=c,m={};for(;u--;)m[n[u].key]=u;let d=[],T=new Map,R=new Map,k=[];for(u=E;u--;){let M=f(s,r,u),L=t(M),U=i.get(L);U?l&&k.push(()=>U.p(M,e)):(U=h(L,M),U.c()),T.set(L,d[u]=U),L in m&&R.set(L,Math.abs(u-m[L]))}let F=new Set,x=new Set;function ae(M){D(M,1),M.m(o,_),i.set(M.key,M),_=M.first,E--}for(;c&&E;){let M=d[E-1],L=n[c-1],U=M.key,Y=L.key;M===L?(_=M.first,c--,E--):T.has(Y)?!i.has(U)||F.has(U)?ae(M):x.has(Y)?c--:R.get(U)>R.get(Y)?(x.add(U),ae(M)):(F.add(Y),c--):(a(L,i),c--)}for(;c--;){let M=n[c];T.has(M.key)||a(M,i)}for(;E;)ae(d[E-1]);return G(k),d}var $n=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],Or=new Set([...$n]);function Gt(n,e,t){let l=n.$$.props[e];l!==void 0&&(n.$$.bound[l]=t,t(n.$$.ctx[l]))}function Ge(n){n&&n.c()}function he(n,e,t,l){let{fragment:s,after_update:r}=n.$$;s&&s.m(e,t),l||Ze(()=>{let i=n.$$.on_mount.map(Qe).filter(qe);n.$$.on_destroy?n.$$.on_destroy.push(...i):G(i),n.$$.on_mount=[]}),r.forEach(Ze)}function oe(n,e){let t=n.$$;t.fragment!==null&&(xn(t.after_update),G(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function el(n,e){n.Line truncated
`))}h||t(22,h=a?12:30);let H={...u||{},excerptLength:h};await g.options(H);for(let O of m){if(!O.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let P=O.bundlePath;delete O.bundlePath,await g.mergeIndex(P,O)}k=g,Fn()}},Fn=async()=>{k&&(Ht=await k.filters(),(!ue||!Object.keys(ue).length)&&t(16,ue=Ht))},Hn=g=>{let H={};return Object.entries(g).filter(([,O])=>O).forEach(([O])=>{let[P,Bn]=O.split(/:(.*)$/);H[P]=H[P]||[],H[P].push(Bn)}),H},ce,Nn=async(g,H)=>{if(!g){t(13,Y=!1),ce&&clearTimeout(ce);return}let O=Hn(H),P=()=>On(g,O);E>0&&g?(ce&&clearTimeout(ce),ce=setTimeout(P,E),await jt(),k.preload(g,{filters:O})):P(),jn()},jt=async()=>{for(;!k;)Ot(),await new Promise(g=>setTimeout(g,50))},On=async(g,H)=>{t(14,Ft=g||""),typeof f=="function"&&(g=f(g)),t(12,U=!0),t(13,Y=!0),await jt();let O=++Mt,P=await k.search(g,{filters:H});Mt===O&&(P.filters&&Object.keys(P.filters)?.length&&t(16,ue=P.filters),t(11,L=P),t(12,U=!1),t(15,Je=5))},jn=()=>{let g=x.offsetWidth;g!=ae&&t(8,F.style.paddingRight=`${g+2}px`,F)},Dn=g=>{g?.preventDefault(),t(15,Je+=5)},zn=g=>{g.key==="Escape"&&(t(6,R=""),F.blur()),g.key==="Enter"&&g.preventDefault()};function Un(){R=this.value,t(6,R),t(21,d)}function In(g){le[g?"unshift":"push"](()=>{F=g,t(8,F)})}function Ln(g){le[g?"unshift":"push"](()=>{x=g,t(9,x)})}let Pn=()=>{t(6,R=""),F.blur()};function qn(g){Ie=g,t(7,Ie)}return n.$$set=g=>{"base_path"in g&&t(23,r=g.base_path),"reset_styles"in g&&t(0,i=g.reset_styles),"show_images"in g&&t(1,o=g.show_images),"show_sub_results"in g&&t(2,a=g.show_sub_results),"excerpt_length"in g&&t(22,h=g.excerpt_length),"process_result"in g&&t(3,_=g.process_result),"process_term"in g&&t(24,f=g.process_term),"show_empty_filters"in g&&t(4,c=g.show_empty_filters),"debounce_timeout_ms"in g&&t(25,E=g.debounce_timeout_ms),"pagefind_options"in g&&t(26,u=g.pagefind_options),"merge_index"in g&&t(27,m=g.merge_index),"trigger_search_term"in g&&t(21,d=g.trigger_search_term),"translations"in g&&t(5,T=g.translations)},n.$$.update=()=>{if(n.$$.dirty[0]&2097152)e:d&&(t(6,R=d),t(21,d=""));if(n.$$.dirty[0]&192)e:Nn(R,Ie)},[i,o,a,_,c,T,R,Ie,F,x,M,L,U,Y,Ft,Je,ue,Nt,Mn,Ot,Dn,d,h,r,f,E,u,m,zn,Un,In,Ln,Pn,qn]}var wt=class extends q{constructor(e){super(),J(this,e,Hr,Mr,V,{base_path:23,reset_styles:0,show_images:1,show_sub_results:2,excerpt_length:22,process_result:3,process_term:24,show_empty_filters:4,debounce_timeout_ms:25,pagefind_options:26,merge_index:27,trigger_search_term:21,translations:5},null,[-1,-1])}},An=wt;var At;try{At=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?ui.js.*$/)[1]}catch{At="/pagefind/"}var We=class{constructor(e){this._pfs=null;let t=e.element??"[data-pagefind-ui]",l=e.bundlePath??At,s=e.resetStyles??!0,r=e.showImages??!0,i=e.showSubResults??!1,o=e.excerptLength??0,a=e.processResult??null,h=e.processTerm??null,_=e.showEmptyFilters??!0,f=e.debounceTimeoutMs??300,c=e.mergeIndex??[],E=e.translations??[];delete e.element,delete e.bundlePath,delete e.resetStyles,delete e.showImages,delete e.showSubResults,delete e.excerptLength,delete e.processResult,delete e.processTerm,delete e.showEmptyFilters,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations;let u=t instanceof HTMLElement?t:document.querySelector(t);u?this._pfs=new An({target:u,props:{base_path:l,reset_styles:s,show_images:r,show_sub_results:i,excerpt_length:o,process_result:a,process_term:h,show_empty_filters:_,debounce_timeout_ms:f,merge_index:c,translations:E,pagefind_options:e}}):console.error(`Pagefind UI couldn't find the selector ${t}`)}triggerSearch(e){this._pfs.$$set({trigger_search_term:e})}};window.PagefindUI=We;})();
@@ -1,6 +0,0 @@
{
"htmlElements": {},
"htmlAttributes": {},
"cssClasses": [],
"ids": []
}
-5
View File
@@ -1,5 +0,0 @@
module github.com/HugoBlox/kit/modules/blox-tailwind
go 1.19
require github.com/HugoBlox/kit/modules/blox-analytics v0.3.0
@@ -1,3 +0,0 @@
{{- define "main" -}}
{{ partial "docs_layout.html" . }}
{{- end -}}
@@ -1,3 +0,0 @@
{{- define "main" -}}
{{ partial "docs_layout.html" . }}
{{- end -}}
File renamed without changes.
@@ -1,6 +1,6 @@
# Hugo Blox Tailwind UI
# Hugo Blox (core)
The Hugo Blox web framework utilizing [Tailwind CSS v4](https://tailwindcss.com/) with Hugo's native integration for styling components with Tailwind v4.
The Hugo Blox web framework powered by [Tailwind CSS v4](https://tailwindcss.com/) with Hugo's native integration for styling components with Tailwind v4.
## Requirements
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 566 files, more files were not shown because too many files have changed in this diff. Show more