feat(apollo-react): Input/Output panel prototype#852
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Dependency License Review
License distribution
Excluded packages
|
07ccaac to
23ce159
Compare
📊 Coverage + size by packagePer-package coverage and bundle size on this PR. New-line coverage = of the source lines this PR adds or changes, the % hit by tests.
"Coverage" is each package's own |
There was a problem hiding this comment.
Pull request overview
Adds a Storybook prototype for a node property panel Input/Output experience (three side-by-side UX concepts), and extends NodePropertyPanel with a small new title-bar slot to support compact controls used by the concepts.
Changes:
- Added
headerExtra?: ReactNodetoNodePropertyPanelPropsand rendered it in the title bar (between title and close button). - Implemented three Input/Output panel concept prototypes in Storybook, including expandable trees, inline editing, search/filter, copy affordances, and Monaco-based Schema/JSON/Types views.
- Added
@monaco-editor/reactto Storybook app deps and updated the lockfile accordingly.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Locks @monaco-editor/react (and its dependency graph) for the Storybook prototype. |
| apps/storybook/package.json | Adds @monaco-editor/react as a dev dependency to support Monaco usage in Storybook. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.types.ts | Extends the public API with headerExtra for title-bar customization. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.tsx | Renders headerExtra in the title bar next to the close button. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.stories.tsx | Adds the three Input/Output UX concept prototypes, Monaco editor tabs, and supporting helpers. |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
23ce159 to
d7374f6
Compare
d7374f6 to
33fc987
Compare
33fc987 to
ffe8667
Compare
ffe8667 to
c84244b
Compare
c84244b to
c6770fd
Compare
c6770fd to
6a1c510
Compare
6a1c510 to
efd167f
Compare
3032a0e to
eebcf79
Compare
eebcf79 to
31ed232
Compare
31ed232 to
3ecba90
Compare
3ecba90 to
dc102fb
Compare
dc102fb to
aa83289
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 13 changed files in this pull request and generated 2 comments.
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
Comments suppressed due to low confidence (1)
packages/apollo-wind/src/components/ui/search.tsx:21
SearchPropsno longer allows passing the newInput-levelvariant/sizeprops (and it omitssizeentirely). SinceSearchforwards props toInput, its prop type should be based onInputPropsso consumers can usevariant="ghost" size="xs"and stay in sync withInput’s API.
export interface SearchProps
extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size'> {
value?: string;
onChange?: (value: string) => void;
onClear?: () => void;
showClearButton?: boolean;
}
…pt variants Three side-by-side concepts for design review of the node property panel's input/output experience. Each concept explores a different UX approach for browsing, filtering, and copying output references. - Concept 1: Schema/JSON tabs with Referenced/All fields filter and inline editing - Concept 2: Compact header with node identity + Referenced toggle, tree + JSON tabs, inline editing with copy affordance (recommended) - Concept 3: Full node identity row, Schema/Types/JSON tabs, filter icon on search Shared additions across concepts: - Expandable/collapsible tree grouped by top-level node - Inline value editing on leaf fields (click to edit, Enter/Escape to confirm) - Input/Output mode toggle per concept panel - Pro/con notes card below each panel with recommendation callout on Concept 2 - NodePropertyPanel: headerExtra slot for compact controls in the title bar Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Concept 2: replace Referenced toggle+chips with a compact dropdown filter (Referenced N / All), unify schema and JSON container styling with matching border, background, and transparent Monaco theme so both tabs feel visually continuous. Add top padding to schema tree rows. Concept notes: add per-concept UX headline and rewrite pros/cons to communicate design tradeoffs to developers reviewing the concepts. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Button: add 4xs size (h-5/20px) with [&_svg]:size-3 icon override for compact ghost icon buttons in dense panel UIs. Input: add ghost variant (no border, bg-surface-overlay) and xs size (h-6/24px, text-xs, rounded) for compact toolbar search fields. Uses Omit<InputHTMLAttributes, 'size'> to avoid collision with the HTML size attribute. Future-theme overrides are gated to default/default only. Both additions include test coverage and Storybook documentation. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nd Apollo Wind components Semantic tokens: - TypeBadge: replace hard-coded palette colors (blue-500, amber-500, green-500, purple-500) with text-info, text-warning, text-success, text-chart-purple; use /10 and /30 opacity modifiers for bg and border - outputValueColorClass: replace hex values (#2f8a3e, #0e7490, etc.) with text-success, text-info, text-error, text-foreground-subtle Apollo Wind components: - Convert 5 ghost icon buttons (search toggle, collapse all, copy expression, case collapse, delete case) to Button size="4xs" icon variant="ghost" using the new 4xs size from apollo-wind - Convert compact search field to Input variant="ghost" size="xs" using the new variants from apollo-wind UX polish: - Add CurrentModeIcon to the node mode badge trigger so the closed state matches the open dropdown (icon + label instead of label only) - Add cursor-pointer to node mode triggers, filter trigger, Add case buttons, and context toggle; drag handle already had cursor-grab Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Summary
Property panel Input/Output experience. The story renders two panels side by side — Input (left) and Output (right) — with a context toggle switching between In Flow and In Studio product surfaces.
This PR has been refined from the initial prototype to be production-ready: semantic tokens throughout, Apollo Wind components as the foundational building blocks, and correct cursor behavior on interactive elements.
What is in the prototype
Context toggle (In Flow / In Studio)
Status badge (Output mode only)
TypeBadge
Tree (Input panel)
Tree (Output panel)
Filter button
JSON tab
Apollo Wind component changes (apollo-wind package)
These additions are production-ready and available for use beyond this prototype.
Button: new 4xs size
size="4xs"adds h-5 (20px) with px-1, text-xs, and [&_svg]:size-3 icon scalingInput: new ghost variant and xs size
variant="ghost"removes the border and sets bg-surface-overlaysize="xs"sets h-6 (24px), px-2, text-xs, roundedHow to review
Open Storybook > Apollo React / Canvas Components / Panels / Node Property Panel > Input / Output
NodePropertyPanel component changes
headerExtra?: ReactNodeslot: renders on the right side of the title bar immediately before the close button, used here for compact controlsTest plan
pnpm --filter @uipath/apollo-react exec tsc --noEmitpnpm --filter @uipath/apollo-wind test🤖 Generated with Claude Code