mirror of
https://github.com/johndoe6345789/low-code-react-app-b.git
synced 2026-04-24 21:54:56 +00:00
298 lines
9.5 KiB
JSON
298 lines
9.5 KiB
JSON
{
|
|
"id": "component-tree",
|
|
"name": "Component Tree Manager",
|
|
"layout": {
|
|
"type": "single"
|
|
},
|
|
"dataSources": [
|
|
{
|
|
"id": "trees",
|
|
"type": "kv",
|
|
"key": "app-component-trees",
|
|
"defaultValue": []
|
|
},
|
|
{
|
|
"id": "selectedTreeId",
|
|
"type": "static",
|
|
"defaultValue": null
|
|
},
|
|
{
|
|
"id": "createDialogOpen",
|
|
"type": "static",
|
|
"defaultValue": false
|
|
},
|
|
{
|
|
"id": "newTreeName",
|
|
"type": "static",
|
|
"defaultValue": ""
|
|
},
|
|
{
|
|
"id": "newTreeDescription",
|
|
"type": "static",
|
|
"defaultValue": ""
|
|
},
|
|
{
|
|
"id": "selectedTree",
|
|
"type": "static",
|
|
"expression": "data.trees.find(id === data.selectedTreeId)",
|
|
"dependencies": [
|
|
"trees",
|
|
"selectedTreeId"
|
|
]
|
|
},
|
|
{
|
|
"id": "treeCount",
|
|
"type": "static",
|
|
"expression": "data.trees.length",
|
|
"dependencies": [
|
|
"trees"
|
|
]
|
|
}
|
|
],
|
|
"components": [
|
|
{
|
|
"id": "root",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "h-full flex bg-gradient-to-br from-background via-background to-accent/5"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "sidebar",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "w-80 border-r border-border bg-card/50 backdrop-blur flex flex-col"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "sidebar-header",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "p-4 border-b border-border"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "header-content",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "flex items-center justify-between mb-3"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "header-title",
|
|
"type": "Heading",
|
|
"props": {
|
|
"className": "text-xl font-bold",
|
|
"children": "Component Trees"
|
|
}
|
|
},
|
|
{
|
|
"id": "tree-count-badge",
|
|
"type": "Badge",
|
|
"props": {
|
|
"variant": "secondary"
|
|
},
|
|
"bindings": {
|
|
"children": {
|
|
"source": "treeCount"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "create-button",
|
|
"type": "Button",
|
|
"props": {
|
|
"className": "w-full",
|
|
"children": "Create Tree"
|
|
},
|
|
"events": [
|
|
{
|
|
"event": "click",
|
|
"actions": [
|
|
{
|
|
"id": "open-create-dialog",
|
|
"type": "set-value",
|
|
"target": "createDialogOpen",
|
|
"value": true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "tree-list",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "flex-1 overflow-auto p-4 space-y-2"
|
|
},
|
|
"children": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "main-content",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "flex-1 flex flex-col"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "tree-selection-state",
|
|
"type": "div",
|
|
"conditional": {
|
|
"if": "selectedTree != null",
|
|
"then": {
|
|
"id": "tree-editor",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "flex-1 p-6 overflow-auto"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "tree-header",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "mb-6"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "tree-name",
|
|
"type": "Heading",
|
|
"props": {
|
|
"className": "text-3xl font-bold mb-2"
|
|
},
|
|
"bindings": {
|
|
"children": {
|
|
"source": "selectedTree",
|
|
"path": "name"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "tree-description",
|
|
"type": "Text",
|
|
"props": {
|
|
"className": "text-muted-foreground"
|
|
},
|
|
"bindings": {
|
|
"children": {
|
|
"source": "selectedTree",
|
|
"path": "description"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "tree-canvas",
|
|
"type": "Card",
|
|
"props": {
|
|
"className": "min-h-[500px]"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "canvas-header",
|
|
"type": "CardHeader",
|
|
"children": [
|
|
{
|
|
"id": "canvas-title",
|
|
"type": "CardTitle",
|
|
"props": {
|
|
"children": "Component Hierarchy"
|
|
}
|
|
},
|
|
{
|
|
"id": "canvas-description",
|
|
"type": "CardDescription",
|
|
"props": {
|
|
"children": "Build your component tree structure"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "canvas-content",
|
|
"type": "CardContent",
|
|
"children": [
|
|
{
|
|
"id": "canvas-placeholder",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "text-center text-muted-foreground py-12 border-2 border-dashed border-border rounded-lg",
|
|
"children": "Component tree builder - Add components to build your hierarchy"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"else": {
|
|
"id": "empty-state",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "flex-1 flex items-center justify-center"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "empty-state-content",
|
|
"type": "div",
|
|
"props": {
|
|
"className": "text-center space-y-4"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "empty-state-title",
|
|
"type": "Heading",
|
|
"props": {
|
|
"className": "text-2xl font-bold text-muted-foreground",
|
|
"children": "No Tree Selected"
|
|
}
|
|
},
|
|
{
|
|
"id": "empty-state-description",
|
|
"type": "Text",
|
|
"props": {
|
|
"className": "text-muted-foreground",
|
|
"children": "Select a component tree from the sidebar or create a new one"
|
|
}
|
|
},
|
|
{
|
|
"id": "empty-state-button",
|
|
"type": "Button",
|
|
"props": {
|
|
"variant": "default",
|
|
"children": "Create Your First Tree"
|
|
},
|
|
"events": [
|
|
{
|
|
"event": "click",
|
|
"actions": [
|
|
{
|
|
"id": "open-create-from-empty",
|
|
"type": "set-value",
|
|
"target": "createDialogOpen",
|
|
"value": true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"globalActions": []
|
|
} |