91a6b6f34b
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>
82 lines
2.4 KiB
TypeScript
82 lines
2.4 KiB
TypeScript
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,
|
|
};
|