feat(apollo-react)!: canvas wind integration [MST-8290]#482
Open
BenGSchulz wants to merge 1 commit intomainfrom
Open
feat(apollo-react)!: canvas wind integration [MST-8290]#482BenGSchulz wants to merge 1 commit intomainfrom
BenGSchulz wants to merge 1 commit intomainfrom
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Dependency License Review
License distribution
Excluded packages
|
There was a problem hiding this comment.
Pull request overview
Migrates @uipath/apollo-react’s canvas package away from Material UI primitives to apollo-wind (Tailwind + shadcn/Radix), aiming to remove the MUI runtime dependency while keeping the existing Canvas API surface largely intact.
Changes:
- Replaces MUI-based UI primitives (icons, typography, buttons, tooltips, menus, skeleton/spinner/badge) with apollo-wind equivalents and new Canvas wrappers (
CanvasTooltip,CanvasDropdownMenu). - Adds Tailwind build + Storybook integration to support canvas Tailwind utilities and apollo-wind styling.
- Updates tests and mocks to reflect Radix/shadcn behaviors and new DOM output.
Reviewed changes
Copilot reviewed 60 out of 61 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Updates lockfile for Tailwind tooling and related dependency graph changes. |
| packages/apollo-wind/src/styles/tailwind.consumer.css | Adds semantic background variables and adjusts canvas token bridging. |
| packages/apollo-wind/src/components/ui/tooltip.tsx | Exports TooltipPortal for portal-based tooltip rendering. |
| packages/apollo-wind/src/components/ui/skeleton.tsx | Adjusts skeleton background token. |
| packages/apollo-wind/src/components/ui/dropdown-menu.tsx | Adjusts separator background token. |
| packages/apollo-wind/src/components/ui/badge.tsx | Adds semantic badge variants (error/warning/info/success). |
| packages/apollo-react/src/test/canvas-mocks.ts | Adds Radix tooltip mocks for canvas tests. |
| packages/apollo-react/src/canvas/utils/icon-registry.tsx | Renames NodeIcon to CanvasIcon and adds deprecated alias. |
| packages/apollo-react/src/canvas/utils/adornment-resolver.tsx | Swaps MUI icons/tooltips to CanvasIcon/CanvasTooltip. |
| packages/apollo-react/src/canvas/styles/tailwind.canvas.css | Introduces a Tailwind “input” entrypoint for canvas utility compilation. |
| packages/apollo-react/src/canvas/storybook-utils/decorators.tsx | Wraps stories with apollo-wind TooltipProvider. |
| packages/apollo-react/src/canvas/storybook-utils/components/StoryInfoPanel.tsx | Migrates panel UI to apollo-wind Button + Tailwind typography. |
| packages/apollo-react/src/canvas/index.ts | Auto-imports the new canvas Tailwind entrypoint alongside variables. |
| packages/apollo-react/src/canvas/controls/Breadcrumb/Breadcrumb.tsx | Migrates typography/tooltips to Tailwind + CanvasTooltip. |
| packages/apollo-react/src/canvas/constants.ts | Adds CANVAS_COMPACT_BREAKPOINT constant. |
| packages/apollo-react/src/canvas/components/TriggerNode/TriggerNode.tsx | Migrates tooltip + icon usage to canvas wind stack. |
| packages/apollo-react/src/canvas/components/Toolbox/SearchBox.tsx | Replaces MUI icons with CanvasIcon. |
| packages/apollo-react/src/canvas/components/Toolbox/ListView.tsx | Migrates list view to Tailwind typography, Skeleton, CanvasTooltip, CanvasIcon. |
| packages/apollo-react/src/canvas/components/Toolbox/ListView.test.tsx | Updates assertions to match Tailwind/shadcn output. |
| packages/apollo-react/src/canvas/components/Toolbox/Header.tsx | Replaces MUI header controls with apollo-wind Button + Tailwind text. |
| packages/apollo-react/src/canvas/components/Toolbar/shared/ToolbarButton.tsx | Replaces MUI tooltip/icon with CanvasTooltip/CanvasIcon. |
| packages/apollo-react/src/canvas/components/Toolbar/shared/toolbar.types.ts | Updates icon prop doc to match icon registry semantics. |
| packages/apollo-react/src/canvas/components/Toolbar/NodeToolbar/NodeToolbar.tsx | Migrates overflow button/icon to CanvasTooltip/CanvasIcon. |
| packages/apollo-react/src/canvas/components/StickyNoteNode/StickyNoteNode.tsx | Migrates toolbar icons from NodeIcon to CanvasIcon. |
| packages/apollo-react/src/canvas/components/StickyNoteNode/FormattingToolbar.tsx | Migrates tooltips/icons to CanvasTooltip/CanvasIcon. |
| packages/apollo-react/src/canvas/components/StageNode/TaskMenu.tsx | Replaces MUI menu with CanvasDropdownMenu wrapper. |
| packages/apollo-react/src/canvas/components/StageNode/TaskContent.tsx | Migrates badge/spinner/buttons/typography to apollo-wind + Tailwind. |
| packages/apollo-react/src/canvas/components/StageNode/StageNode.tsx | Broad migration away from MUI to wind primitives and CanvasTooltip. |
| packages/apollo-react/src/canvas/components/StageNode/DraggableTask.tsx | Migrates entry-condition tooltip to CanvasTooltip; removes menu-open click guard. |
| packages/apollo-react/src/canvas/components/StageNode/DraggableTask.test.tsx | Removes menu-open click guard test; keeps other interactions. |
| packages/apollo-react/src/canvas/components/StageNode/AdhocTask.tsx | Removes menu-open click guard and related plumbing. |
| packages/apollo-react/src/canvas/components/StageNode/AdhocTask.test.tsx | Updates spinner assertions and removes menu-open click guard test. |
| packages/apollo-react/src/canvas/components/shared/CanvasDropdownMenu.tsx | New Radix dropdown wrapper used across canvas menus. |
| packages/apollo-react/src/canvas/components/NodePropertiesPanel/NodePropertiesPanel.tsx | Migrates pin/unpin button to apollo-wind Button + CanvasIcon. |
| packages/apollo-react/src/canvas/components/NodeInspector.tsx | Migrates typography to Tailwind spans. |
| packages/apollo-react/src/canvas/components/NodeContextMenu/NodeContextMenu.tsx | Replaces MUI menu with CanvasDropdownMenu and simplifies close logic. |
| packages/apollo-react/src/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.tsx | Migrates control panel buttons/typography to wind + CanvasIcon. |
| packages/apollo-react/src/canvas/components/HierarchicalCanvas/HierarchicalCanvas.tsx | Migrates spinner + breadcrumb icons to wind + CanvasIcon. |
| packages/apollo-react/src/canvas/components/GroupNode/GroupNode.tsx | Migrates icons to CanvasIcon. |
| packages/apollo-react/src/canvas/components/FloatingCanvasPanel/PanelChrome.tsx | Migrates header typography + close button to Tailwind + wind Button. |
| packages/apollo-react/src/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.tsx | Replaces MUI icons/spinner with CanvasIcon + wind Spinner. |
| packages/apollo-react/src/canvas/components/CodedAgent/CodedAgentFlow.tsx | Migrates icons/spinner/typography to CanvasIcon + wind Spinner + Tailwind text. |
| packages/apollo-react/src/canvas/components/CanvasTooltip.tsx | Adds CanvasTooltip wrapper over Radix Tooltip to preserve prior tooltip API. |
| packages/apollo-react/src/canvas/components/CanvasPositionControls.tsx | Migrates controls to wind Button + CanvasTooltip + CanvasIcon. |
| packages/apollo-react/src/canvas/components/ButtonHandle/SmartHandle.tsx | Migrates add icon and label typography to CanvasIcon + Tailwind spans. |
| packages/apollo-react/src/canvas/components/ButtonHandle/ButtonHandle.tsx | Migrates tooltip/icon/typography to CanvasTooltip + CanvasIcon + Tailwind spans. |
| packages/apollo-react/src/canvas/components/BlankCanvasNode/BlankCanvasNode.tsx | Migrates add icon to CanvasIcon. |
| packages/apollo-react/src/canvas/components/BaseNode/NodeLabel.tsx | Switches tooltip implementation to CanvasTooltip. |
| packages/apollo-react/src/canvas/components/BaseNode/BaseNode.tsx | Migrates error icon and loading skeleton semantics for wind stack. |
| packages/apollo-react/src/canvas/components/BaseNode/BaseNode.test.tsx | Updates skeleton test id and mocks wind Skeleton. |
| packages/apollo-react/src/canvas/components/BaseNode/BaseNode.styles.ts | Switches skeleton base component to wind Skeleton. |
| packages/apollo-react/src/canvas/components/BaseCanvas/CanvasProviders.tsx | Injects Radix TooltipProvider and provider marker at canvas root. |
| packages/apollo-react/src/canvas/components/AgentCanvas/nodes/ResourceNode.tsx | Migrates resource icons/adornments to CanvasIcon. |
| packages/apollo-react/src/canvas/components/AgentCanvas/nodes/AgentNode.tsx | Migrates add-instructions icon to CanvasIcon. |
| packages/apollo-react/src/canvas/components/AgentCanvas/components/TimelinePlayer.tsx | Migrates controls to wind Button + Tailwind text. |
| packages/apollo-react/src/canvas/components/AgentCanvas/components/SuggestionGroupPanel.tsx | Removes MUI breakpoint dependency and migrates buttons/icons to wind + CanvasIcon. |
| packages/apollo-react/src/canvas/components/AddNodePanel/AddNodePreview.tsx | Migrates preview icon to CanvasIcon. |
| packages/apollo-react/package.json | Adds canvas CSS build step and Tailwind CLI devDependency. |
| apps/storybook/package.json | Adds Tailwind + Tailwind Vite plugin deps for canvas Storybook. |
| apps/storybook/.storybook/preview.tsx | Removes MUI baseline/global styles and apollo-wind styles import for canvas-only Storybook. |
| apps/storybook/.storybook/main.ts | Adds Tailwind Vite plugin and aliases apollo-wind to source for HMR. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)
packages/apollo-react/src/canvas/utils/icon-registry.tsx:122
- The PR description mentions a deprecated alias for backwards compatibility, but only the
NodeIconvalue is aliased. The exportedNodeIconPropstype was renamed toCanvasIconProps, which can break TS consumers importingNodeIconProps. Consider re-exportingNodeIconPropsas a deprecated alias ofCanvasIconPropsto keep the compatibility story consistent.
packages/apollo-react/src/canvas/components/CanvasPositionControls.tsx
Outdated
Show resolved
Hide resolved
packages/apollo-react/src/canvas/components/NodeContextMenu/NodeContextMenu.tsx
Outdated
Show resolved
Hide resolved
packages/apollo-react/src/canvas/components/shared/CanvasDropdownMenu.tsx
Show resolved
Hide resolved
fccbdcb to
181adfe
Compare
181adfe to
cdbcaa1
Compare
cdbcaa1 to
2473305
Compare
packages/apollo-react/src/canvas/components/shared/CanvasDropdownMenu.tsx
Show resolved
Hide resolved
packages/apollo-react/src/canvas/components/shared/CanvasDropdownMenu.tsx
Show resolved
Hide resolved
2473305 to
117b316
Compare
117b316 to
52d363d
Compare
packages/apollo-react/src/canvas/components/shared/CanvasDropdownMenu.tsx
Show resolved
Hide resolved
584ece8 to
a0d394b
Compare
📦 Dev Packages
|
a0d394b to
7dc7474
Compare
packages/apollo-react/src/canvas/components/shared/CanvasDropdownMenu.tsx
Show resolved
Hide resolved
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migrate the canvas package (
apollo-react/canvas) from Material UI components to apollo-wind (Tailwind CSS + shadcn/Radix) primitives, eliminating the MUI runtime dependency from canvas components.What changed
Icon system — All
ApIcon(Material Icons) usages replaced withCanvasIcon(Lucide icons via the canvas icon registry).NodeIconrenamed toCanvasIconwith a deprecated alias for backwards compatibility.Typography —
ApTypographywithFontVariantTokenreplaced with plain<span>elements using Tailwind utility classes (text-sm,font-bold,truncate, etc.).Buttons —
ApButtonandApIconButtonreplaced withButtonfrom@uipath/apollo-windusing appropriatevariant/sizeprops.Tooltips —
ApTooltipreplaced with a newCanvasTooltipwrapper component around Radix Tooltip from apollo-wind. Preserves the existing API surface (smartTooltip,delay,placement,hide,isOpen). ATooltipProvideris now injected at theCanvasProviderslevel.Dropdown menus —
ApMenureplaced with a newCanvasDropdownMenuwrapper around RadixDropdownMenu. This significantly simplifiesNodeContextMenuandTaskMenu— manual keyboard/click-away handling removed in favor of Radix's built-in behavior. Usesmodal={false}to work correctly inside React Flow'sforeignObject.Other component swaps:
ApSkeletonSkeletonApCircularProgress/ApProgressSpinnerSpinnerApBadgeBadgeApLinkButton variant="link"CssBaseline/GlobalStylesMUI breakpoint removal —
useTheme().breakpoints.values.smreplaced with a newCANVAS_COMPACT_BREAKPOINTconstant (600px), removing the lastuseTheme()call from canvas code.Tailwind build integration
tailwind.canvas.cssentry point pre-compiles only the Tailwind utilities used by canvas components and their apollo-wind dependencies. Auto-imported viacanvas/index.tsso consumers need no Tailwind setup.build:css:canvasscript uses@tailwindcss/clito emitdist/canvas/styles/tailwind.canvas.cssas part of the package build.@tailwindcss/viteplugin and source-directory aliases for apollo-wind HMR during development.apollo-wind enhancements
error,warning,info,successsemantic variants with corresponding theme tokens.TooltipPortalfor portal-based rendering.bg-mutedtobg-surface-overlayfor better theme consistency.--error-background,--info-background,--success-background,--warning-backgroundCSS custom properties.Test updates
skeleton-icontest ID,.animate-pulseclass,role="status"for spinners,.lucide-chevron-rightselector).