---
tags: [gradio-custom-component, SimpleTextbox, workflow, builder, editor]
title: gradio_workflowbuilder
short_description: workflow builder
colorFrom: blue
colorTo: yellow
sdk: gradio
pinned: false
app_file: space.py
---
# `gradio_workflowbuilder`
workflow builder
## Installation
```bash
pip install gradio_workflowbuilder
```
## Usage
```python
import gradio as gr
from gradio_workflowbuilder import WorkflowBuilder
import json
def export_workflow(workflow_data):
"""Export workflow as formatted JSON"""
if not workflow_data:
return "No workflow to export"
return json.dumps(workflow_data, indent=2)
# Create the main interface
with gr.Blocks(
title="🎨 Visual Workflow Builder",
theme=gr.themes.Soft(),
css="""
.main-container { max-width: 1600px; margin: 0 auto; }
.workflow-section { margin-bottom: 2rem; }
.button-row { display: flex; gap: 1rem; justify-content: center; margin: 1rem 0; }
.component-description {
padding: 24px;
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
border-radius: 12px;
border-left: 4px solid #3b82f6;
margin: 16px 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}
.component-description p {
margin: 10px 0;
line-height: 1.6;
color: #374151;
}
.base-description {
font-size: 17px;
font-weight: 600;
color: #1e293b;
}
.base-description strong {
color: #3b82f6;
font-weight: 700;
}
.feature-description {
font-size: 16px;
color: #1e293b;
font-weight: 500;
}
.customization-note {
font-size: 15px;
color: #64748b;
font-style: italic;
}
.sample-intro {
font-size: 15px;
color: #1e293b;
font-weight: 600;
margin-top: 16px;
border-top: 1px solid #e2e8f0;
padding-top: 16px;
}
"""
) as demo:
with gr.Column(elem_classes=["main-container"]):
gr.Markdown("""
# 🎨 Visual Workflow Builder
**Create sophisticated workflows with drag and drop simplicity.**
""")
# Simple description section with styling
gr.HTML("""
Base custom component powered by svelteflow.
Create custom workflows.
You can customise the nodes as well as the design of the workflow.
Here is a sample:
name | type | default | description |
---|---|---|---|
value |
```python typing.Optional[typing.Dict[str, typing.Any]][ typing.Dict[str, typing.Any][str, typing.Any], None ] ``` | None |
Default workflow data with nodes and edges |
label |
```python typing.Optional[str][str, None] ``` | None |
Component label |
info |
```python typing.Optional[str][str, None] ``` | None |
Additional component information |
show_label |
```python typing.Optional[bool][bool, None] ``` | None |
Whether to show the label |
container |
```python bool ``` | True |
Whether to use container styling |
scale |
```python typing.Optional[int][int, None] ``` | None |
Relative width scale |
min_width |
```python int ``` | 160 |
Minimum width in pixels |
visible |
```python bool ``` | True |
Whether component is visible |
elem_id |
```python typing.Optional[str][str, None] ``` | None |
HTML element ID |
elem_classes |
```python typing.Optional[typing.List[str]][ typing.List[str][str], None ] ``` | None |
CSS classes |
render |
```python bool ``` | True |
Whether to render immediately |