refactor: restructure repo into src/ site/ dist/ vendor/ packs/

Separate framework source from website:
- src/layers/ + src/main.css: CSS framework source (was assets/css/)
- site/: Hugo website (content/, layouts/, hugo.toml)
- dist/: built output (asw.css, asw.min.css)
- vendor/open-props/: vendored dependency with version tracking
- Hugo module mounts: dist/ → static, site runs from site/

Build: hugo --source site/ passes (105 pages).
npm run build produces dist/asw.css.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ludo 2026-04-11 15:12:42 +02:00
parent 5bf233348d
commit 910b0e42a6
Signed by: ludo
GPG key ID: F6E479DEFAB84D6E
71 changed files with 76 additions and 3 deletions

13
.gitignore vendored
View file

@ -1,5 +1,14 @@
node_modules/ node_modules/
.hugo_build.lock .hugo_build.lock
resources/_gen/
public/
build.log build.log
postcss.dev.config.js
dev.sh
# Hugo output and cache (all under site/)
site/public/
site/resources/
site/hugo_stats.json
# dev.sh generated output (under site/)
site/static/css/
site/static/vendor/

File diff suppressed because one or more lines are too long

1
dist/asw.css vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/asw.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,10 @@
{ {
"name": "asw", "name": "asw",
"private": true, "private": true,
"scripts": {
"build": "postcss src/main.css -o dist/asw.css",
"build:min": "postcss src/main.css -o dist/asw.min.css"
},
"dependencies": { "dependencies": {
"open-props": "^1.7.0" "open-props": "^1.7.0"
}, },

View file

@ -145,3 +145,23 @@ title = 'ASW — Agentic Semantic Web'
[build.buildStats] [build.buildStats]
enable = true enable = true
# ── Module mounts ────────────────────────────────────────────────────
# Map repo-level directories into Hugo's expected structure.
# Paths are relative to this file's directory (site/).
[[module.mounts]]
source = "content"
target = "content"
[[module.mounts]]
source = "layouts"
target = "layouts"
[[module.mounts]]
source = "static"
target = "static"
[[module.mounts]]
source = "../dist"
target = "static"

View file

@ -64,9 +64,13 @@
"accordion", "accordion",
"actions-row", "actions-row",
"actor-variants", "actor-variants",
"agentic-semantic-web",
"agentic-task-pipeline", "agentic-task-pipeline",
"ai-disclosure", "ai-disclosure",
"another-subsection",
"area-chart", "area-chart",
"article",
"aside",
"asw-data-attribute-vocabulary", "asw-data-attribute-vocabulary",
"attributes", "attributes",
"axis-labels", "axis-labels",
@ -126,10 +130,12 @@
"fnref:2", "fnref:2",
"fnref:3", "fnref:3",
"font-size", "font-size",
"footer",
"getting-started-with-asw-hugo", "getting-started-with-asw-hugo",
"grid", "grid",
"grid-layouts", "grid-layouts",
"grouped-accordion", "grouped-accordion",
"header",
"headings", "headings",
"hero", "hero",
"horizontal-rule", "horizontal-rule",
@ -152,6 +158,7 @@
"lists", "lists",
"longer-trail", "longer-trail",
"main", "main",
"nav",
"navigation", "navigation",
"nested-lists", "nested-lists",
"notes", "notes",
@ -165,6 +172,11 @@
"references", "references",
"related", "related",
"report", "report",
"search",
"section",
"section-one",
"section-three",
"section-two",
"session-blocks", "session-blocks",
"setup", "setup",
"setup-1", "setup-1",
@ -174,12 +186,15 @@
"stats-row", "stats-row",
"status-dashboard-pattern", "status-dashboard-pattern",
"steps", "steps",
"subsection",
"tables", "tables",
"tasks", "tasks",
"text-utilities", "text-utilities",
"the-class-problem", "the-class-problem",
"the-design-principle",
"the-dorveille-principle", "the-dorveille-principle",
"the-economics-of-attention", "the-economics-of-attention",
"the-landmark-map",
"the-problem-of-discontinuity", "the-problem-of-discontinuity",
"the-table-of-hours", "the-table-of-hours",
"theming-a-site", "theming-a-site",
@ -201,6 +216,7 @@
"what-it-does", "what-it-does",
"what-it-leaves-alone", "what-it-leaves-alone",
"what-persists", "what-persists",
"what-this-is",
"what-we-subtract", "what-we-subtract",
"what-you-get", "what-you-get",
"why-semantic-html", "why-semantic-html",

20
vendor/README.md vendored Normal file
View file

@ -0,0 +1,20 @@
# vendor/
Third-party CSS files vendored directly into the repo so the build has no runtime npm dependency.
## Contents
| Directory | Package | Version | Files vendored |
|-----------|---------|---------|----------------|
| `open-props/` | [open-props](https://open-props.style/) | 1.7.23 | `open-props.min.css`, `media.min.css` |
## How to update
1. Bump the version in `package.json` and run `npm install`.
2. Copy the new files:
```bash
cp node_modules/open-props/open-props.min.css vendor/open-props/open-props.min.css
cp node_modules/open-props/media.min.css vendor/open-props/media.min.css
```
3. Update `vendor/open-props/VERSION` with the new version and today's date.
4. Commit all three changed files together.

1
vendor/open-props/VERSION vendored Normal file
View file

@ -0,0 +1 @@
open-props@1.7.23 — vendored 2026-04-11

1
vendor/open-props/media.min.css vendored Normal file
View file

@ -0,0 +1 @@
@custom-media --motionOK (prefers-reduced-motion: no-preference);@custom-media --motionNotOK (prefers-reduced-motion: reduce);@custom-media --opacityOK (prefers-reduced-transparency: no-preference);@custom-media --opacityNotOK (prefers-reduced-transparency: reduce);@custom-media --useDataOK (prefers-reduced-data: no-preference);@custom-media --useDataNotOK (prefers-reduced-data: reduce);@custom-media --OSdark (prefers-color-scheme: dark);@custom-media --OSlight (prefers-color-scheme: light);@custom-media --highContrast (prefers-contrast: more);@custom-media --lowContrast (prefers-contrast: less);@custom-media --invertedColors (inverted-colors: inverted);@custom-media --forcedColors (forced-colors: active);@custom-media --portrait (orientation: portrait);@custom-media --landscape (orientation: landscape);@custom-media --HDcolor (dynamic-range: high) or (color-gamut: p3);@custom-media --touch (hover: none) and (pointer: coarse);@custom-media --stylus (hover: none) and (pointer: fine);@custom-media --pointer (hover) and (pointer: coarse);@custom-media --mouse (hover) and (pointer: fine);@custom-media --xxs-only (min-width: 0px) and (max-width: 239.98px);@custom-media --xxs-n-above (min-width: 240px);@custom-media --xxs-n-below (max-width: 239.98px);@custom-media --xxs-phone (--xxs-only) and (--portrait);@custom-media --xs-only (min-width: 240px) and (max-width: 359.98px);@custom-media --xs-n-above (min-width: 360px);@custom-media --xs-n-below (max-width: 359.98px);@custom-media --xs-phone (--xs-only) and (--portrait);@custom-media --sm-only (min-width: 360px) and (max-width: 479.98px);@custom-media --sm-n-above (min-width: 480px);@custom-media --sm-n-below (max-width: 479.98px);@custom-media --sm-phone (--sm-only) and (--portrait);@custom-media --md-only (min-width: 480px) and (max-width: 767.98px);@custom-media --md-n-above (min-width: 768px);@custom-media --md-n-below (max-width: 767.98px);@custom-media --md-phone (--md-only) and (--portrait);@custom-media --lg-only (min-width: 768px) and (max-width: 1023.98px);@custom-media --lg-n-above (min-width: 1024px);@custom-media --lg-n-below (max-width: 1023.98px);@custom-media --lg-phone (--lg-only) and (--portrait);@custom-media --xl-only (min-width: 1024px) and (max-width: 1439.98px);@custom-media --xl-n-above (min-width: 1440px);@custom-media --xl-n-below (max-width: 1439.98px);@custom-media --xxl-only (min-width: 1440px) and (max-width: 1919.98px);@custom-media --xxl-n-above (min-width: 1920px);@custom-media --xxl-n-below (max-width: 1919.98px);

1
vendor/open-props/open-props.min.css vendored Normal file

File diff suppressed because one or more lines are too long