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:
@@ -0,0 +1,81 @@
|
||||
import { Container } from './layout/Container';
|
||||
import { Section } from './layout/Section';
|
||||
import { ColumnLayout } from './layout/ColumnLayout';
|
||||
import { BackgroundSection } from './layout/BackgroundSection';
|
||||
import { Heading } from './basic/Heading';
|
||||
import { TextBlock } from './basic/TextBlock';
|
||||
import { ButtonLink } from './basic/ButtonLink';
|
||||
import { Logo } from './basic/Logo';
|
||||
import { Menu } from './basic/Menu';
|
||||
import { Navbar } from './basic/Navbar';
|
||||
import { Footer } from './basic/Footer';
|
||||
import { Divider } from './basic/Divider';
|
||||
import { Spacer } from './basic/Spacer';
|
||||
import { Icon } from './basic/Icon';
|
||||
import { ImageBlock } from './media/ImageBlock';
|
||||
import { VideoBlock } from './media/VideoBlock';
|
||||
import { MapEmbed } from './media/MapEmbed';
|
||||
import { HeroSimple } from './sections/HeroSimple';
|
||||
import { FeaturesGrid } from './sections/FeaturesGrid';
|
||||
import { CTASection } from './sections/CTASection';
|
||||
import { Countdown } from './sections/Countdown';
|
||||
import { Testimonials } from './sections/Testimonials';
|
||||
import { FormContainer } from './forms/FormContainer';
|
||||
import { InputField } from './forms/InputField';
|
||||
import { TextareaField } from './forms/TextareaField';
|
||||
import { FormButton } from './forms/FormButton';
|
||||
import { ContactForm } from './forms/ContactForm';
|
||||
import { StarRating } from './basic/StarRating';
|
||||
import { SocialLinks } from './basic/SocialLinks';
|
||||
import { CallToAction } from './sections/CallToAction';
|
||||
import { Accordion } from './sections/Accordion';
|
||||
import { Tabs } from './sections/Tabs';
|
||||
import { PricingTable } from './sections/PricingTable';
|
||||
import { Gallery } from './sections/Gallery';
|
||||
import { ContentSlider } from './sections/ContentSlider';
|
||||
import { NumberCounter } from './sections/NumberCounter';
|
||||
import { SubscribeForm } from './forms/SubscribeForm';
|
||||
import { SearchBar } from './basic/SearchBar';
|
||||
import { HtmlBlock } from './basic/HtmlBlock';
|
||||
|
||||
export const componentResolver = {
|
||||
Container,
|
||||
Section,
|
||||
ColumnLayout,
|
||||
BackgroundSection,
|
||||
Heading,
|
||||
TextBlock,
|
||||
ButtonLink,
|
||||
Logo,
|
||||
Menu,
|
||||
Navbar,
|
||||
Footer,
|
||||
Divider,
|
||||
Spacer,
|
||||
Icon,
|
||||
ImageBlock,
|
||||
VideoBlock,
|
||||
MapEmbed,
|
||||
HeroSimple,
|
||||
FeaturesGrid,
|
||||
CTASection,
|
||||
Countdown,
|
||||
Testimonials,
|
||||
FormContainer,
|
||||
InputField,
|
||||
TextareaField,
|
||||
FormButton,
|
||||
ContactForm,
|
||||
StarRating,
|
||||
SocialLinks,
|
||||
CallToAction,
|
||||
Accordion,
|
||||
Tabs,
|
||||
PricingTable,
|
||||
Gallery,
|
||||
ContentSlider,
|
||||
NumberCounter,
|
||||
SubscribeForm,
|
||||
SearchBar,
|
||||
HtmlBlock,
|
||||
};
|
||||
Reference in New Issue
Block a user