import { useState, useCallback } from 'react'; import { Dialog } from '../../base'; import { WidgetEditor, WidgetProvider, useWidgets, } from '@refocus/sdk'; type CreateWidgetProps = { onCreate: (name: string, data: any) => void; children?: React.ReactNode; }; type WidgetEditorProps = { id: string; onSave: (data: any) => void; }; const Editor: React.FC = ({ id, onSave }) => { return ( ); }; type WidgetSelectorProps = { onSelect: (id: string) => void; }; const WidgetSelector: React.FC = ({ onSelect }) => { const widgets = useWidgets(); const handleSelect = useCallback( (id: string) => { onSelect(id); }, [onSelect], ); return (
{widgets.map((widget) => ( ))}
); }; const Root: React.FC = ({ onCreate, children }) => { const [id, setId] = useState(''); const handleSave = useCallback( (data: any) => { onCreate(id, data); }, [id, onCreate], ); return ( {children} {id && } {!id && } ); }; const CreateWidget = Object.assign(Root, { Trigger: Dialog.Trigger, }); export { CreateWidget };