mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 21:21:10 +02:00
Expands the builder from 3 M1 blocks to 8. Containers (columns) and
media blocks (image, gallery) are the structural additions; cta and faq
round out the content coverage.
packages/website-blocks:
- image, cta, faq, columns (container), gallery — each with Zod schema,
renderer (mode-aware for edit/preview/public), and fallback inspector.
- Block type extended with optional `children` + `renderChild` snippet
so containers render their children through the same chrome the
outer renderer provides (click-to-select, public-path tagging).
- themes/: 3 presets (classic light, modern dark, warm) with
`resolveTheme` + `themeCssVars` helpers. Public layout now emits
CSS vars via `style=` on the root; block components read
`var(--wb-primary)` / `var(--wb-bg)` / `var(--wb-fg)` / etc.
- Registry updated; new exports + `./themes` subpath export.
apps/mana/apps/web/src/lib/modules/website:
- upload.ts: multipart POST to mana-media with `app=website` scope,
returns { mediaId, url }. 25 MB cap, non-image rejection client-side.
- components/ImageInspector + GalleryInspector: app-side overrides
wired to upload. Registered via `CUSTOM_INSPECTORS` in BlockInspector
so block.type → app-side inspector, fallback to registry otherwise.
- components/SiteSettingsDialog: theme preset picker + color overrides
for primary/bg/fg + footer text. Mounted from a ⚙ button in the
editor's left pane.
- components/BlockRenderer: rebuilt around a byParent map + recursive
`renderBlock` snippet so container blocks can render their children
through the same click-to-select wrapper as top-level blocks.
- routes/s/[siteSlug]: rename `[[...path]]` → `[...path]` (SvelteKit
treats rest segments as optional automatically — double-bracket form
errored at sync time). +page.svelte renders snapshot trees
recursively so published pages match the editor.
apps/api: unchanged.
Validation:
- pnpm run validate:all: all 6 gates green
- pnpm run check (web): 0 errors, 0 warnings
- apps/api type-check: green
- website-blocks tsc: green
Plan: docs/plans/website-builder.md (M3 block shipped)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
48 lines
1 KiB
JSON
48 lines
1 KiB
JSON
{
|
|
"name": "@mana/website-blocks",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"description": "Block-tree primitives for the Mana website builder — Svelte components + Zod schemas, mode-aware rendering for editor/preview/public.",
|
|
"type": "module",
|
|
"svelte": "./src/index.ts",
|
|
"main": "./src/index.ts",
|
|
"types": "./src/index.ts",
|
|
"exports": {
|
|
".": {
|
|
"svelte": "./src/index.ts",
|
|
"types": "./src/index.ts",
|
|
"default": "./src/index.ts"
|
|
},
|
|
"./registry": {
|
|
"svelte": "./src/registry.ts",
|
|
"types": "./src/registry.ts",
|
|
"default": "./src/registry.ts"
|
|
},
|
|
"./types": {
|
|
"types": "./src/types.ts",
|
|
"default": "./src/types.ts"
|
|
},
|
|
"./themes": {
|
|
"types": "./src/themes/index.ts",
|
|
"default": "./src/themes/index.ts"
|
|
}
|
|
},
|
|
"files": [
|
|
"src"
|
|
],
|
|
"scripts": {
|
|
"lint": "eslint .",
|
|
"test": "vitest run"
|
|
},
|
|
"peerDependencies": {
|
|
"svelte": "^5.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"svelte": "^5.16.0",
|
|
"typescript": "^5.7.3",
|
|
"vitest": "^2.0.0"
|
|
},
|
|
"dependencies": {
|
|
"zod": "^3.23.8"
|
|
}
|
|
}
|