Skip to content

Components

Full-featured application wrapper with sidebar, editor, navbar, and config panel.

<script>
import { App } from '@flowdrop/flowdrop/editor';
</script>
<App
workflow={myWorkflow}
nodes={nodeMetadataList}
endpointConfig={config}
authProvider={auth}
showNavbar={true}
/>
PropTypeDefaultDescription
workflowWorkflowInitial workflow to load
nodesNodeMetadata[]Available node types (overrides API fetch)
endpointConfigEndpointConfigAPI endpoint configuration
authProviderAuthProviderAuthentication provider
heightstring | numberEditor height
widthstring | numberEditor width
showNavbarbooleantrueShow the top navbar
disableSidebarbooleanfalseHide the node sidebar
readOnlybooleanfalseDisable all editing
lockWorkflowbooleanfalsePrevent structural changes (add/remove nodes/edges)
showSettingsbooleanfalseShow settings gear in navbar
navbarTitlestringCustom title in navbar
navbarActionsNavbarAction[]Custom action buttons in navbar
pipelineIdstringPipeline ID for execution status display
nodeStatusesRecord<string, string>Node execution statuses for overlay
eventHandlersFlowDropEventHandlersLifecycle event handlers
featuresFlowDropFeaturesFeature flags

Core canvas component using SvelteFlow. Renders nodes and edges with drag-and-drop, zoom, pan, and minimap.

<script>
import { WorkflowEditor } from '@flowdrop/flowdrop/editor';
</script>
<WorkflowEditor {nodes} {endpointConfig} />
PropTypeDefaultDescription
nodesNodeMetadata[]Node type definitions
endpointConfigEndpointConfigAPI configuration
heightstring | numberCanvas height
widthstring | numberCanvas width
readOnlybooleanfalseDisable editing
lockWorkflowbooleanfalsePrevent structural changes
nodeStatusesRecord<string, string>Execution status overlay
pipelineIdstringPipeline ID for status

Left sidebar displaying available node types organized by category.

<script>
import { NodeSidebar } from '@flowdrop/flowdrop/editor';
</script>
<NodeSidebar {nodes} />
PropTypeDefaultDescription
nodesNodeMetadata[][]Node types to display
selectedCategoryNodeCategoryPre-select a category filter
activeFormatWorkflowFormatFilter nodes by workflow format compatibility

Dynamic node wrapper that resolves and renders the correct node component based on type. Automatically injects NodeStatusOverlay. Used internally by the editor.

All node components accept NodeComponentProps from the registry:

ComponentTypeDescription
WorkflowNodeComponentworkflowNodeFull-featured node with input/output port lists
SimpleNodesimpleCompact layout with header, icon, description
SquareNodesquareMinimal icon-only square design
ToolNodetoolAgent tool node with badge indicator
GatewayNodegatewayConditional branching with multiple output ports
TerminalNodeterminalCircular start/end node
NotesNodenoteSticky note with markdown content

See Node Types for visual examples.

Renders a form from JSON Schema definition.

<script>
import { SchemaForm } from '@flowdrop/flowdrop/form';
</script>
<SchemaForm
schema={jsonSchema}
values={formValues}
onChange={(values) => {
/* handle change */
}}
/>

Configuration form with support for dynamic schemas, template variables, and external edit links.

PropTypeDefaultDescription
nodeWorkflowNodeNode to configure (derives schema/values)
schemaConfigSchemaDirect JSON Schema (alternative to node)
uiSchemaUISchemaElementLayout definition for the form
valuesRecord<string, unknown>Configuration values
showUIExtensionsbooleanfalseShow UI extension fields
workflowIdstringFor dynamic schema and variable API requests
workflowNodesWorkflowNode[]All nodes (for template variable resolution)
workflowEdgesWorkflowEdge[]All edges (for template variable resolution)
authProviderAuthProviderAuth for API requests
onChangefunctionCalled on any field change
onSavefunctionCalled when form is saved
onCancelfunctionCalled when form is cancelled

Generic panel wrapper for displaying details and a configuration form.

PropTypeDefaultDescription
titlestringPanel title
idstringEntity identifier
descriptionstringDescription text
detailsDetailItem[]Key-value detail rows
configTitlestringConfig section title
onClosefunctionClose callback
childrenSnippetSlot for form content
ComponentSchema MatchDescription
FormTextFieldtype: "string"Text input
FormTextareaformat: "multiline"Multi-line text
FormNumberFieldtype: "number" / "integer"Number input
FormToggletype: "boolean"Toggle switch
FormSelectenum or oneOfSelect dropdown
FormCheckboxGroupenum + multiple: trueCheckbox group
FormRangeFieldformat: "range"Range slider
FormArraytype: "array"Dynamic array editor
FormCodeEditorformat: "json"JSON/code editor (requires form/code)
FormTemplateEditorformat: "template"Template editor with variables (requires form/code)
FormMarkdownEditorformat: "markdown"Markdown editor (requires form/markdown)

Renders markdown content using the marked library.

<script>
import { MarkdownDisplay } from '@flowdrop/flowdrop/display';
</script>
<MarkdownDisplay content="**Hello** world" />

Full interactive playground with chat interface and session management.

PropTypeDefaultDescription
workflowIdstringWorkflow to test (required)
workflowWorkflowPre-loaded workflow data
modePlaygroundMode'standalone''standalone' or 'embedded'
initialSessionIdstringResume a previous session
endpointConfigEndpointConfigAPI configuration
configPlaygroundConfigPlayground options
onClosefunctionClose callback (for embedded mode)
ComponentInterrupt TypeDescription
InterruptBubbleAllContainer that renders the correct prompt
ConfirmationPromptconfirmationYes/No approval
ChoicePromptchoiceSelection from options
TextInputPrompttext_inputText entry
FormPromptformJSON Schema form
ReviewPromptreviewField change review with diffs

Button to cycle through light/dark/auto themes.

<script>
import { ThemeToggle } from '@flowdrop/flowdrop/settings';
</script>
<ThemeToggle />

Tabbed settings interface for managing user preferences across categories (theme, editor, UI, behavior, API). Can be embedded anywhere in your layout.

<script>
import { SettingsPanel } from '@flowdrop/flowdrop/settings';
</script>
<SettingsPanel
categories={['theme', 'editor', 'ui']}
showSyncButton={false}
showResetButton={true}
onSettingsChange={(category, values) => {
/* handle change */
}}
onClose={() => {
/* handle close */
}}
/>
PropTypeDefaultDescription
categoriesSettingsCategory[]All categoriesWhich tabs to display. Options: "theme", "editor", "ui", "behavior", "api"
showSyncButtonbooleantrueShow the “Sync to Cloud” button in the footer
showResetButtonbooleantrueShow the reset/reset-all buttons in the footer
onSettingsChangefunctionCalled when any setting changes with (category, values)
onClosefunctionClose callback (also renders a “Close” button in the footer)
classstringCustom CSS class

Modal dialog wrapper around SettingsPanel. Provides backdrop, close-on-escape, and open/close animations.

<script>
import { SettingsModal } from '@flowdrop/flowdrop/settings';
let open = $state(false);
</script>
<button onclick={() => (open = true)}>Open Settings</button>
<SettingsModal bind:open showSyncButton={false} />
PropTypeDefaultDescription
openbooleanfalseWhether the modal is open (bindable)
categoriesSettingsCategory[]All categoriesWhich tabs to display
showSyncButtonbooleantrueShow the “Sync to Cloud” button
showResetButtonbooleantrueShow the reset buttons
onClosefunctionCalled when the modal is closed
onSettingsChangefunctionCalled when any setting changes
classstringCustom CSS class for the modal

To hide the cloud sync button (e.g. for self-hosted deployments):

<SettingsModal bind:open showSyncButton={false} />

To show only specific settings categories:

<SettingsModal bind:open categories={['theme', 'editor']} />

When using the vanilla JS mount API, pass settings modal options via FlowDropMountOptions:

import { mountFlowDropApp, createEndpointConfig } from '@flowdrop/flowdrop';
const app = await mountFlowDropApp(document.getElementById('editor'), {
endpointConfig: createEndpointConfig('/api/flowdrop'),
showSettings: true,
// Customize the settings modal
settingsCategories: ['theme', 'editor', 'ui'], // hide Behavior & API tabs
showSettingsSyncButton: false, // hide "Sync to Cloud"
showSettingsResetButton: true // show reset (default)
});
OptionTypeDefaultDescription
showSettingsbooleantrueShow the settings gear icon in the navbar
settingsCategoriesSettingsCategory[]All categoriesWhich tabs to display in the settings modal
showSettingsSyncButtonbooleantrueShow the “Sync to Cloud” button
showSettingsResetButtonbooleantrueShow the reset buttons
ComponentDescription
NodeStatusOverlayDisplays execution status on nodes (pending, running, completed, error)
StatusIconColor-coded status icon
PipelineStatusFull pipeline execution view with logs sidebar
  • DirectoryApp
    • Navbar (Logo, workflow name, save/export, custom actions)
    • NodeSidebar (search, category groups, draggable node cards)
    • DirectoryWorkflowEditor (SvelteFlow canvas)
      • DirectoryUniversalNode
        • NodeStatusOverlay
        • [Node Component] (WorkflowNode, SimpleNode, etc.)
    • DirectoryConfigSidebar
      • ConfigForm (JSON Schema form with template variables)