import { useState } from 'react' import { DataSourceManager } from '@/components/organisms/DataSourceManager' import { ComponentBindingDialog } from '@/components/molecules/ComponentBindingDialog' import { DataSource, UIComponent } from '@/types/json-ui' import { DataBindingHeader } from '@/components/data-binding-designer/DataBindingHeader' import { ComponentBindingsCard } from '@/components/data-binding-designer/ComponentBindingsCard' import { HowItWorksCard } from '@/components/data-binding-designer/HowItWorksCard' import dataBindingCopy from '@/data/data-binding-designer.json' interface SeedDataSource extends Omit { computeId?: string } const computeRegistry: Record) => any> = { displayName: (data) => `Welcome, ${data.userProfile?.name || 'Guest'}!`, } const buildSeedDataSources = (sources: SeedDataSource[]): DataSource[] => { return sources.map((source) => { if (source.type === 'computed' && source.computeId) { return { ...source, compute: computeRegistry[source.computeId], } } return source }) } export function DataBindingDesigner() { const [dataSources, setDataSources] = useState( buildSeedDataSources(dataBindingCopy.seed.dataSources as SeedDataSource[]), ) const [mockComponents] = useState(dataBindingCopy.seed.components) const [selectedComponent, setSelectedComponent] = useState(null) const [bindingDialogOpen, setBindingDialogOpen] = useState(false) const handleEditBinding = (component: UIComponent) => { setSelectedComponent(component) setBindingDialogOpen(true) } const handleSaveBinding = (updatedComponent: UIComponent) => { console.log('Updated component bindings:', updatedComponent) } return (
) }