workshop: страница в общей оболочке сайта + компоненты

Мастерская переехала на eureka2: страница /workshop — часть сайта (lib/workshop.js,
общая шапка/навигация/подвал), оформление в tokens сайта (assets/workshop/
workshop.css), компоненты читают данные пода по SSE /workshop/sse.
Компоненты перенесены на сторону сайта, геометрия мозга — assets/workshop/.
build.js собирает страницу (active: workshop).
This commit is contained in:
eureka 2026-10-04 01:08:02 +03:00
parent e2fe11f723
commit cc3d6c5ca0
15 changed files with 1627 additions and 2 deletions

View file

@ -33,6 +33,13 @@ import { fileURLToPath } from "node:url";
import { page, esc } from "./lib/template.js";
import { homeTitle, homeDescription, homeBody } from "./lib/home.js";
import { parseFrontMatter, renderMarkdown } from "./lib/markdown.js";
import {
workshopTitle,
workshopDescription,
workshopBody,
workshopHead,
workshopScripts,
} from "./lib/workshop.js";
const ROOT = path.dirname(fileURLToPath(import.meta.url));
const GALLERY = path.join(ROOT, "gallery");
@ -142,6 +149,28 @@ buildHome();
buildGalleryIndex();
buildWorks();
// --- мастерская -----------------------------------------------------------
// Страница /workshop — часть сайта: общая оболочка (шапка/навигация/подвал), а
// данные (SSE, /words) отдаёт под мастерской на atlant. Здесь только страница.
function buildWorkshop() {
fs.mkdirSync(path.join(ROOT, "workshop"), { recursive: true });
fs.writeFileSync(
path.join(ROOT, "workshop", "index.html"),
page({
title: workshopTitle,
description: workshopDescription,
body: workshopBody,
active: "workshop",
mainClass: "wide",
headExtra: workshopHead,
footExtra: workshopScripts,
})
);
}
buildWorkshop();
// --- статьи ---------------------------------------------------------------
function readArticles() {