{/* Preset Selection */}
{presets.map((preset) => (
))}
{/* Text3D Input (shown only for text3d preset) */}
{shape.props.preset === 'text3d' && (
{
editor.updateShape({
id: shape.id,
type: "BlenderGen",
props: { text3dContent: e.target.value },
})
}}
onPointerDown={(e) => e.stopPropagation()}
onKeyDown={(e) => {
e.stopPropagation()
if (e.key === 'Enter' && !shape.props.isLoading) {
handleGenerate()
}
}}
/>
)}
{/* Complexity Slider */}
{/* Render Button */}
{/* Render History */}
{/* Loading State */}
{shape.props.isLoading && (
Rendering 3D scene...
This may take 30-60 seconds
{shape.props.loadingPrompt && (
Preset:
{shape.props.preset}
{shape.props.preset === 'text3d' && ` - "${shape.props.loadingPrompt}"`}
)}
)}
{/* Render History */}
{shape.props.renderHistory.map((render, index) => (

{
const newHistory = shape.props.renderHistory.filter(r => r.id !== render.id)
editor.updateShape
({
id: shape.id,
type: "BlenderGen",
props: { renderHistory: newHistory },
})
}}
/>
Preset: {render.preset}
{render.seed && Seed: {render.seed}}
{render.renderTime && Time: {render.renderTime}s}
))}
{/* Empty State */}
{shape.props.renderHistory.length === 0 && !shape.props.isLoading && !shape.props.error && (
🎬
Select a preset and click Render
)}
{/* Error Display */}
{shape.props.error && (
⚠️
{shape.props.error}
)}