Add Craft.js site builder (v2) - complete rebuild from GrapesJS

Rebuilt the visual site builder from scratch using Craft.js, React 18,
and TypeScript. The new editor renders directly in the DOM (no iframe),
supports 40+ components, multi-page with shared header/footer, 16
templates, full-spectrum color/gradient controls, custom head code
injection, save/publish workflow, and auto-save.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-05 18:31:16 -07:00
co-authored by Claude Opus 4.6
parent b511a6684d
commit 91a6b6f34b
103 changed files with 26296 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
import { useState, useCallback } from 'react';
interface ContextMenuState {
visible: boolean;
x: number;
y: number;
nodeId: string | null;
}
export function useContextMenu() {
const [menuState, setMenuState] = useState<ContextMenuState>({
visible: false,
x: 0,
y: 0,
nodeId: null,
});
const show = useCallback((x: number, y: number, nodeId: string | null) => {
setMenuState({ visible: true, x, y, nodeId });
}, []);
const hide = useCallback(() => {
setMenuState((prev) => ({ ...prev, visible: false }));
}, []);
return { menuState, show, hide };
}