mirror of
https://github.com/gcushen/hugo-academic.git
synced 2025-10-13 18:25:20 +02:00
## Preact Block Integration - Enable Preact component detection for data-driven pages: - Fix init.html to resolve sections_source + per-section ref before Preact detection - Correct resource paths: blox/* → js/hbx/blocks/* (Hugo module mounts) - Update libraries.html to load Preact core + compiled block scripts - Add dynamic icon rendering for Preact components: - Create Icon.jsx component with SVG decoding - Add get_icon_data.html partial for passing icon strings to Preact props - Update preact-wrapper.html to fetch icon data and inject into props - Wire hero component to render dynamic icons via <Icon svg={icon_svg} /> - Centralized logging system: - Add functions/logger.html to wrap warnf/errorf safely - Degrade to HTML comments in constrained contexts (content adapters) ## Reusable Landing Page Content System - Add sections_source support: - Page front matter: sections_source: pages/<key> loads base from data/pages/<key>.yaml - Inline sections deep-merge over base by position; extras appended - Add per-section ref system: - Any section: ref: blocks/<slug> loads from data/blocks/<slug>.yaml - Inline section properties deep-merge over ref (content/design submaps) - Enable content reuse across multiple landing pages - Create reusable block library: - Add test/data/blocks/: hero_basic.yaml, features_basic.yaml - Add test/content/linked/index.md demo using refs with overrides - Add pragmatic deep merge for content/design override handling ## Infrastructure & Schemas - Update base-block.json schema: - Fix gradient structure: flat → nested (gradient.start/end/direction) - Fix color structure: string|{light,dark} (matches parse_block_v3.html) - Update hero schema to properly extend base via $ref - Fix Tailwind source path generation: - Add tailwind_sources.html with test vs starter site logic - scripts/view-test.sh: export HUGO_BLOX_TEST_SITE=true - Update block directory structure: - blox/<name>/config.html (was blox/<name>--CONFIG.html) - Apply to init.html + parse_block_v2.html - Code quality improvements: - Biome config: match Prettier rules ## Content Adapters (Removed) - Investigated Hugo content adapters for landing pages - Found execution context limitations (early build phase, limited site methods) - Archived to backups/content-adapters-*.zip and removed from test site - Decision: use standard pages + data linking instead of adapters This enables dynamic Preact rendering with proper icon support while providing a flexible, reusable content system for landing pages that maintains the "single file = page" mental model with optional advanced linking.
97 lines
2.6 KiB
Text
97 lines
2.6 KiB
Text
{
|
|
"folders": [
|
|
{
|
|
"path": "."
|
|
}
|
|
],
|
|
"settings": {
|
|
"files.exclude": {
|
|
"**/node_modules/**": true,
|
|
"**/public/**": true,
|
|
"**/resources/**": true,
|
|
"**/pagefind/**": true
|
|
},
|
|
"search.exclude": {
|
|
"**/node_modules/**": true,
|
|
"**/public/**": true,
|
|
"**/resources/**": true,
|
|
"**/pagefind/**": true
|
|
},
|
|
"files.watcherExclude": {
|
|
"**/node_modules/**": true,
|
|
"**/public/**": true,
|
|
"**/resources/**": true,
|
|
"**/pagefind/**": true
|
|
},
|
|
"explorer.excludeGitIgnore": true,
|
|
"workbench.editor.labelFormat": "medium",
|
|
"breadcrumbs.enabled": true,
|
|
"npm.packageManager": "pnpm",
|
|
"editor.detectIndentation": false,
|
|
"editor.formatOnSave": true,
|
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
"editor.codeActionsOnSave": {
|
|
"source.fixAll.stylelint": "explicit"
|
|
},
|
|
|
|
"[javascript]": { "editor.defaultFormatter": "biomejs.biome" },
|
|
"[typescript]": { "editor.defaultFormatter": "biomejs.biome" },
|
|
"[json]": { "editor.defaultFormatter": "biomejs.biome" },
|
|
"[css]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
|
"[html]": {
|
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
"editor.formatOnSave": true
|
|
},
|
|
"[markdown]": {
|
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
"files.trimTrailingWhitespace": false
|
|
},
|
|
"[python]": {
|
|
"editor.tabSize": 4,
|
|
"editor.insertSpaces": true
|
|
},
|
|
"[yaml]": {
|
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
},
|
|
"[toml]": {
|
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
},
|
|
|
|
"eslint.workingDirectories": [{ "mode": "auto" }],
|
|
"eslint.validate": [
|
|
"javascript",
|
|
"javascriptreact",
|
|
"typescript",
|
|
"typescriptreact"
|
|
],
|
|
|
|
"stylelint.validate": ["css"],
|
|
|
|
"tailwindCSS.emmetCompletions": true,
|
|
|
|
"yaml.validate": true,
|
|
"prettier.useEditorConfig": true
|
|
},
|
|
"extensions": {
|
|
"recommendations": [
|
|
"dbaeumer.vscode-eslint",
|
|
"esbenp.prettier-vscode",
|
|
"stylelint.vscode-stylelint",
|
|
"bradlc.vscode-tailwindcss",
|
|
"redhat.vscode-yaml",
|
|
"tamasfe.even-better-toml",
|
|
"DavidAnson.vscode-markdownlint",
|
|
"ms-python.python",
|
|
"charliermarsh.ruff",
|
|
"streetsidesoftware.code-spell-checker",
|
|
"mikestead.dotenv",
|
|
"eamodio.gitlens",
|
|
"bierner.markdown-mermaid",
|
|
"EditorConfig.EditorConfig",
|
|
"biomejs.biome",
|
|
"github.vscode-github-actions",
|
|
"timonwong.shellcheck",
|
|
"budparr.language-hugo-vscode"
|
|
]
|
|
}
|
|
}
|