2026-04-05 18:31:16 -07:00
|
|
|
import React from 'react';
|
|
|
|
|
import { Editor } from '@craftjs/core';
|
|
|
|
|
import { EditorShell } from './editor/EditorShell';
|
|
|
|
|
import { componentResolver } from './components/resolver';
|
|
|
|
|
import { WhpConfig } from './types';
|
|
|
|
|
import { EditorConfigProvider } from './state/EditorConfigContext';
|
|
|
|
|
import { SiteDesignProvider } from './state/SiteDesignContext';
|
|
|
|
|
import { PageProvider } from './state/PageContext';
|
2026-05-25 12:43:28 -07:00
|
|
|
import { SitesmithProvider, useSitesmithModal } from './state/SitesmithContext';
|
|
|
|
|
import { SitesmithModal } from './panels/sitesmith/SitesmithModal';
|
2026-04-05 18:31:16 -07:00
|
|
|
|
|
|
|
|
interface AppProps {
|
|
|
|
|
whpConfig: WhpConfig | null;
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-25 12:43:28 -07:00
|
|
|
const SitesmithModalMount: React.FC = () => {
|
|
|
|
|
const { isOpen, target, close } = useSitesmithModal();
|
|
|
|
|
if (!isOpen) return null;
|
|
|
|
|
return <SitesmithModal target={target} onClose={close} />;
|
|
|
|
|
};
|
|
|
|
|
|
2026-04-05 18:31:16 -07:00
|
|
|
export const App: React.FC<AppProps> = ({ whpConfig }) => {
|
|
|
|
|
return (
|
|
|
|
|
<EditorConfigProvider config={whpConfig}>
|
|
|
|
|
<SiteDesignProvider>
|
|
|
|
|
<Editor resolver={componentResolver} enabled={true}>
|
|
|
|
|
<PageProvider>
|
2026-05-25 12:43:28 -07:00
|
|
|
<SitesmithProvider>
|
|
|
|
|
<EditorShell />
|
|
|
|
|
<SitesmithModalMount />
|
|
|
|
|
</SitesmithProvider>
|
2026-04-05 18:31:16 -07:00
|
|
|
</PageProvider>
|
|
|
|
|
</Editor>
|
|
|
|
|
</SiteDesignProvider>
|
|
|
|
|
</EditorConfigProvider>
|
|
|
|
|
);
|
|
|
|
|
};
|