Skip to content

docs(storybook): add the Flow Node Panels pattern page - #1450

Closed
dbacomputer wants to merge 1 commit into
mainfrom
feat/flow-node-panels
Closed

dbacomputer wants to merge 1 commit into
mainfrom
feat/flow-node-panels

Conversation

@dbacomputer

Copy link
Copy Markdown
Collaborator

Summary

Adds a Flow Node Panels page under Apollo Wind / Patterns / Layout Patterns. It's a UX quality reference whose right panels match Flow Workbench node for node.

  • The canvas shows every Flow Workbench node type, grouped by Flow's add-node categories: 65 built-in nodes, plus 11 examples of runtime nodes (connectors and resources).
  • Click a node to open its right panel. Each panel renders from that node's real Flow form definition through NodePropertyPanel / MetadataForm, so fields, sections, labels and defaults match Flow.
  • 46 nodes also have a Figma design reference (the hand-built inventory mockups). The Flow definition / Design reference toggle switches between the two.
  • Every panel has its own link. Selecting a node writes &args=node:<slug> to the URL, and Copy link copies it. The slug is the nodeType with . replaced by - (for example core.logic.delay becomes core-logic-delay). The upcoming Flow ↔ Apollo comparison page will use the same key.

How it works

  • apps/storybook/src/patterns/flow-node-panels/flow-node-manifests.json is a snapshot of Flow's node definitions. Apollo can't import @uipath/flow-core, because Flow depends on Apollo. Regenerate the snapshot with:
    pnpm --filter storybook-app sync:flow-nodes <path-to-flow-workbench>
    This reads Flow's built @uipath/flow-core/manifest entry. Build flow-schema and flow-core in Flow first.
  • Flow's own custom editors (prompt editor, code editor, pickers and so on) have no Apollo equivalent. Each one renders as a labelled placeholder naming the component, so the gap stays visible instead of being blank. There are 118 placeholder fields across the catalog.
  • The node inventory data and NodeInventoryPanel moved out of Flow.stories.tsx into templates/node-inventory.tsx, so both pages share them. The code moved as-is, with no behaviour change.

Known gaps

  • The agent nodes' default model is blank in this snapshot. The author's flow-workbench install couldn't fetch @uipath/agents-storage-schemas from GitHub Packages (403), so it was stubbed for this one run. Fields and labels are unaffected. Re-run sync:flow-nodes from a healthy Flow checkout to fill in the defaults.
  • 8 Flow nodes have no form (Mock, Merge, End, Terminate, Error handler, Manual trigger, Incoming call, Subflow). They show NodePropertyPanel's default "No form schema defined" state. What these panels should show is an open UX question.

Testing

  • Opened every one of the 76 panels by driving the node arg. Each rendered its node's label, with no console errors.
  • Deep links (&args=node:core-logic-delay) open with the node selected and zoomed in. Clicking a node updates the manager URL.
  • The existing UX DAP - Send email story still renders after the inventory move.
  • biome check is clean on all touched files. tsc -p packages/apollo-react passes.

Panel links

Live once Storybook deploys.

All 76 panel links
Node Node type Version Design ref
Agent
Autonomous agent uipath.agent.autonomous v1.4 yes
Conversational agent uipath.agent.conversational v1.11 yes
Voice agent uipath.agent.voice v1.6 yes
Quick form escalation uipath.agent.resource.escalation.quick-form v1.3
Action app escalation uipath.agent.resource.escalation.coded-action-app v1.3
Agent tools
Analyze Files uipath.agent.resource.tool.builtin.analyzefiles v1.3
Batch transform uipath.agent.resource.tool.builtin.batchtransform v1.2
Create File uipath.agent.resource.tool.builtin.createfile v1.0
HTTP Request uipath.agent.resource.tool.builtin.httprequest v1.2
Jev Classifier uipath.agent.resource.tool.builtin.jevclassifier v1.0
Summarize document uipath.agent.resource.tool.builtin.summarize v1.3 yes
Client-side tool uipath.agent.resource.tool.clientside v1.1
Connector
HTTP Request core.action.http.v2 v2.6 yes
Send Message connector.slack.send-message dynamic example yes
Data
Batch transform uipath.pattern.batch-transform v1.0 yes
Transform core.action.transform v1.1 yes
Filter core.action.transform.filter v1.1 yes
Map core.action.transform.map v1.1 yes
Group by core.action.transform.group-by v1.1 yes
Read file core.action.file.read v1.0
Create file core.action.file.create v1.0
Query entity records core.datafabric.read v1.4 yes
Update entity record core.datafabric.update v1.3 yes
Delete entity record core.datafabric.delete v1.3
Create entity record core.datafabric.create v1.3
Document
Summarize document uipath.pattern.deep-rag v1.1
Classify document uipath.document.classify v1.0
Extract connector.document.extract dynamic example yes
Human
Quick Form uipath.human-in-the-loop.quick-form v1.9 yes
Action App uipath.human-in-the-loop.coded-action-app v1.6 yes
Validate extraction uipath.human-in-the-loop.document-validation v1.7
Validate classification uipath.human-in-the-loop.document-classification v1.1
Record decision uipath.decision v1.0
Control
Mock core.logic.mock v1.0 yes
Decision core.logic.decision v1.4 yes
Loop core.logic.loop v2.4 yes
Do while core.logic.dowhile v1.0
Merge core.logic.merge v1.0 yes
Switch core.logic.switch v1.3 yes
Agentic Switch core.logic.agentic-switch v1.0
End core.control.end v1.0 yes
Response core.control.response v1.0
Terminate core.logic.terminate v1.0 yes
Error handler core.control.error-handler v1.0
Tool
Wait for message uipath.conversational.wait-for-message v1.1 yes
Send message uipath.conversational.send-message v1.1 yes
Get conversation context uipath.conversational.get-conversation-context v1.0 yes
Create outgoing call uipath.conversational.voice.create-outgoing-call v1.1 yes
End call uipath.conversational.voice.end-call v1.0 yes
HTTP Request core.action.http v1.3
Script core.action.script v1.1 yes
Create queue item core.action.queue.create v1.2 yes
Create and wait for queue item core.action.queue.create-and-wait v1.2 yes
Set transaction status core.action.queue.set-transaction-status v1.0
Set transaction progress core.action.queue.set-transaction-progress v1.0
Postpone transaction item core.action.queue.postpone-transaction-item v1.0
Delete queue items core.action.queue.delete-items v1.0
Bulk add queue items core.action.queue.bulk-add v1.0
Get queue items core.action.queue.get-items v1.0
Trigger
Manual trigger core.trigger.manual v1.0 yes
Form trigger core.trigger.form v1.0
Conversation trigger core.trigger.conversation v1.3 yes
Incoming call core.trigger.voice v1.1 yes
Scheduled trigger core.trigger.scheduled v1.2 yes
Queue trigger core.trigger.queue v1.0
Message Received in Slack connector.slack.message-received dynamic example yes
HTTP Webhook connector.http.webhook dynamic example yes
Wait for event
Delay core.logic.delay v1.0 yes
HTTP Webhook callback connector.http.webhook-wait dynamic example yes
Email Received (Wait) connector.gmail.email-received-wait dynamic example yes
Maestro Flow
Subflow core.subflow v1.0 yes
Flow resource.flow dynamic example yes
BPMN resource.maestro-bpmn dynamic example yes
Case resource.maestro-case dynamic example yes
RPA Workflow resource.rpa-workflow dynamic example yes
API Workflow resource.api-workflow dynamic example yes

🤖 Generated with Claude Code

Every Flow Workbench node on one canvas; selecting a node opens its right
panel, rendered from the node's real Flow form definition. Nodes with a
Figma mockup can switch to it. Each panel deep-links via `args=node:<slug>`.

Flow's node definitions come from a JSON snapshot regenerated with
`pnpm --filter storybook-app sync:flow-nodes <flow-workbench>`, since Apollo
can't depend on Flow. The node inventory moves out of Flow.stories.tsx into
node-inventory.tsx so both pages share it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 22, 2026 16:47
@github-actions
github-actions Bot temporarily deployed to preview/apollo-design October 22, 2026 16:48 Destroyed
@github-actions
github-actions Bot temporarily deployed to preview/apollo-landing October 22, 2026 16:48 Destroyed
@github-actions
github-actions Bot temporarily deployed to preview/apollo-docs October 22, 2026 16:48 Destroyed
@github-actions
github-actions Bot temporarily deployed to preview/apollo-vertex October 22, 2026 16:48 Destroyed
@github-actions github-actions Bot added the size:XXL 1,000+ changed lines. label Oct 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Dependency License Review

  • ✅ 1957 package(s) scanned
  • ✅ No license issues found
  • ⚠️ 2 package(s) excluded (see details below)
License distribution
License Packages
MIT 1721
ISC 91
Apache-2.0 57
BSD-3-Clause 28
BSD-2-Clause 23
BlueOak-1.0.0 8
MPL-2.0 4
CC0-1.0 4
MIT-0 3
MIT OR Apache-2.0 2
(MIT OR Apache-2.0) 2
Unlicense 2
LGPL-3.0-or-later 1
Python-2.0 1
CC-BY-4.0 1
(MPL-2.0 OR Apache-2.0) 1
Unknown 1
Artistic-2.0 1
(WTFPL OR MIT) 1
(BSD-2-Clause OR MIT OR Apache-2.0) 1
CC-BY-3.0 1
0BSD 1
(MIT OR CC0-1.0) 1
MIT AND ISC 1
Excluded packages
Package Version License Reason
@img/sharp-libvips-linux-x64 1.3.4 LGPL-3.0-or-later LGPL pre-built binary, not linked
khroma 2.1.0 Unknown MIT per GitHub repo, missing license field in package.json

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved link generation and panel rendering issues undermine reliable navigation and accurate comparisons with Flow.

4 open issues
What changed in this PR

Adds a Flow Node Panels reference page to Storybook’s Layout Patterns, bringing Flow Workbench node forms and Figma mockups into Apollo’s design-system documentation.

Changes:

  • Adds a catalog of 65 built-in nodes and 11 runtime examples, with panel selection and shareable links.
  • Renders snapshot-backed forms with placeholders for Flow-specific editors and optional design references.
  • Extracts shared inventory components and adds a snapshot regeneration command.
File Description
packages/​apollo-react/​src/​canvas/​stories/​templates/​node-inventory.tsx Extracts shared node inventory and reference panels.
packages/​apollo-react/​src/​canvas/​stories/​templates/​Flow.stories.tsx Uses the extracted inventory components.
apps/​storybook/​src/​patterns/​LayoutPatterns.stories.tsx Registers the page with a node-selection argument.
apps/​storybook/​src/​patterns/​flow-node-panels/​FlowNodePanelsPage.tsx Adds the catalog canvas, panels, source toggle, and link controls.
apps/​storybook/​src/​patterns/​flow-node-panels/​flow-node-catalog.ts Groups nodes and adapts snapshot forms for rendering.
apps/​storybook/​scripts/​sync-flow-node-manifests.mts Generates snapshots from a Flow checkout.
apps/​storybook/​package.json Adds the snapshot synchronization command.

Review effort: Balanced

Comment on lines +190 to +196
try {
const top = window.top?.location;
if (top) return `${top.origin}${top.pathname}${query}`;
} catch {
// Cross-origin embed: fall back to this frame's origin.
}
return `${window.location.origin}/${query}`;
Comment on lines +250 to +254
value={item.designReference ? panelSource : 'flow-definition'}
onValueChange={(value) => value && onPanelSourceChange(value as PanelSource)}
aria-label="Panel source"
>
<ToggleGroupItem value="flow-definition" className="flex-1 text-xs">
onClose: () => void;
}) {
if (item.designReference && (panelSource === 'design-reference' || !item.manifest)) {
return <NodeInventoryPanel item={item.designReference} onClose={onClose} />;
Comment on lines +148 to +150
...manifest.form,
initialData: { ...manifest.form.initialData, inputs: manifest.inputDefaults },
actions: [],
@github-actions

Copy link
Copy Markdown
Contributor

Storybook visual diff

⚠️ Visual changes detected: 2 changed, 2 added (of 64 compared, 60 unchanged). View report

Baseline is the deployed main Storybook, so changes merged to main after this branch was last updated can also appear here. Logs

Updated (PT): Oct 22, 2026, 10:01:17 AM

@github-actions

Copy link
Copy Markdown
Contributor

📊 Coverage + size by package

Per-package coverage and bundle size on this PR. New-line coverage = of the source lines this PR adds or changes, the % hit by tests.

Package Coverage New-line coverage Packed (gzip) Unpacked vs main
@uipath/apollo-core — — 42.02 MB 50.17 MB ±0
@uipath/apollo-react 58.1% 0.0% (0/13) 8.15 MB 32.25 MB +15.4 KB
@uipath/apollo-ui-icons — — 2.86 MB 6.97 MB ±0
@uipath/apollo-vertex — — — — —
@uipath/apollo-wind — — 810.6 KB 4.68 MB +9 B
@uipath/ap-chat 85.8% — 40.42 MB 45.71 MB ±0

"Coverage" is each package's own coverage.include scope (e.g. apollo-core instruments only scripts/). "Packed"/"Unpacked" come from npm pack --dry-run and only cover built packages — "—" means not measured this run (package not affected / not built). "vs main" is the packed (gzipped) delta against the last successful main build (the package-sizes artifact from the Release workflow); "—" there means no main baseline was available this run. The baseline is main's latest build, not this PR's exact merge-base, so it includes any drift since the branch diverged. Packages with no vitest config are omitted.

@dbacomputer

Copy link
Copy Markdown
Collaborator Author

Closing: moving the Flow Node Panels reference out of Storybook into the maestro-design prototype (as a lab with per-node pages and search), where it can sit alongside the Flow vs Apollo comparison.

This branch was successfully deployed

No deployments
preview/apollo-vertex — 9a1b7704 Deployed Oct 22, 2026 by github-actions[bot]
preview/apollo-design — 9a1b7704 Deployed Oct 22, 2026 by github-actions[bot]
preview/apollo-landing — 9a1b7704 Deployed Oct 22, 2026 by github-actions[bot]
preview/apollo-docs — 9a1b7704 Deployed Oct 22, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants