diff --git a/frontends/nextjs/src/components/ComponentConfigDialog.tsx b/frontends/nextjs/src/components/ComponentConfigDialog.tsx
index bde7be4e3..80f228a17 100644
--- a/frontends/nextjs/src/components/ComponentConfigDialog.tsx
+++ b/frontends/nextjs/src/components/ComponentConfigDialog.tsx
@@ -55,7 +55,7 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode
void loadConfig()
}, [node.id, node.type])
- const handleSave = async () => {
+ const handleSave = useCallback(async () => {
const newConfig: ComponentConfig = {
id: config?.id || `config_${Date.now()}`,
componentId: node.id,
@@ -70,20 +70,20 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode
toast.success('Configuration saved')
onSave()
- }
+ }, [config, node.id, props, styles, events, onSave])
const componentDef = componentCatalog.find(c => c.type === node.type)
- const renderPropEditor = (propSchema: any) => {
+ const renderPropEditor = (propSchema: PropDefinition) => {
const value = props[propSchema.name] ?? propSchema.defaultValue
switch (propSchema.type) {
case 'string':
return (
setProps({ ...props, [propSchema.name]: e.target.value })}
- placeholder={propSchema.defaultValue}
+ placeholder={String(propSchema.defaultValue || '')}
/>
)
@@ -91,7 +91,7 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode
return (
setProps({ ...props, [propSchema.name]: Number(e.target.value) })}
/>
)
@@ -99,7 +99,7 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode
case 'boolean':
return (
setProps({ ...props, [propSchema.name]: checked })}
/>
)
@@ -107,14 +107,14 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode
case 'select':
return (