Skip to content

refactor: migrate web icons to @makeplane/propel - #9731

Merged
sriramveeraghanta merged 2 commits into
previewfrom
refactor/web-icons-to-makeplane-icons
Sep 2, 2026
Merged

refactor: migrate web icons to @makeplane/propel#9731
sriramveeraghanta merged 2 commits into
previewfrom
refactor/web-icons-to-makeplane-icons

Conversation

@anmolsinghbhatia

Copy link
Copy Markdown
Contributor

Description

Migrates the audit-confirmed icon symbols in apps/web (470 files) to @makeplane/propel/icons — the largest scope of this migration. apps/web already declared the dependency.
Unresolved symbols, including all State, Priority and Brand icons, stay on their existing imports.
Lucide size became explicit width/height, including three sites that forward a size variable; the member dropdown chain and pages AI menu widen from LucideIcon to ComponentType<SVGProps<SVGSVGElement>> so generated Propel icons satisfy them.
CycleGroupIcon (6 files) is not migrated: it dispatches a different glyph and colour per cycle status, which CyclesOutline cannot express.

Icon mapping (150 rows)
Current Propel
UserActivityIcon ActivityOutline
ListFilterPlus AddFilterOutline
CreateIcon, PlusIcon AddOutline
AddWorkItemIcon AddWorkItemOutline
Sparkle, Sparkles AiStar1Outline
AlertOctagon, OctagonAlert AlertOctagonOutline
AlignLeft AlignLeftOutline
AnalyticsIcon AnalyticsOutline
ArchiveIcon ArchiveOutline
Minimize2, Shrink ArrowCollapseOutline
ArrowDown ArrowDownOutline
ArrowLeft, MoveLeft ArrowNarrowLeftOutline
ArrowRight, MoveRight ArrowNarrowRightOutline
AtSign AtOutline
Paperclip, PaperclipIcon AttachOutline
ArchiveX AutoCloseOutline
BarChart2, BarChart4, ChartNoAxesColumn BarOutline
CreditCard BillingsOutline
CircleDot BlockingOutline
BoardLayoutIcon BoardOutline
Boxes BoxesOutline
Building BuildingOutline
Calendar, CalendarDays, CalendarLayoutIcon CalendarOutline
MessageCircle, MessageSquare, MessageSquareIcon ChatOutline
CheckCheck CheckDoneOutline
ChevronDownIcon ChevronDownOutline
ChevronLeftIcon ChevronLeftOutline
ChevronRightIcon ChevronRightOutline
ChevronUpIcon ChevronUpOutline
Clipboard ClipboardOutline
Clock ClockOutline
CloseCircleFilledIcon CloseCircleFilled
CircleX, XCircle CloseCircleOutline
CloseIcon, X CloseOutline
CalendarCheck CompletedAtOutline
CopyIcon CopyOutline
CornerDownRight CornerRightDownOutline
FolderPlus CreateFolderOutline
Box CubeOutline
ContrastIcon, CycleIcon CyclesOutline
DashboardIcon DashboardsOutline
SuspendedUserIcon DeactivatedUserOutline
SetAsDefaultIcon DefaultTabOutline
Trash2, TrashIcon DeleteOutline
FileText DocumentationOutline
Download DownloadOutline
DraftIcon DraftsOutline
GripVertical, MoveDiagonal DragDropOutline
DueDatePropertyIcon DueDateOutline
CopyPlus, DuplicatePropertyIcon, FileStack DuplicateOfOutline
EditIcon, PenSquare, Pencil EditOutline
EpicIcon EpicOutline
EstimatePropertyIcon EstimateOutline
ArrowUpToLine, FileOutput ExportOutline
FilterIcon, ListFilter FilterOutline
Folder FolderOutline
Expand, Maximize2 FullScreenOutline
FullScreenPanelIcon FullScreenPeekOutline
GitBranch GitBranchOutline
GithubIcon Github
Earth, GlobeIcon GlobeOutline
GridLayoutIcon, LayoutGrid, LayoutGridIcon GridOutline
Component GroupOutline
Hash HashOutline
HelpCircle HelpOutline
EyeOff HideOutline
Network HierarchyOutline
History HistoryOutline
Home, HomeIcon HomeOutline
ImageIcon ImageOutline
Inbox, InboxIcon InboxOutline
InfoFillIcon InfoFilled
Info, InfoIcon InfoOutline
Intake, IntakeIcon IntakeOutline
KeyRound KeyOutline
LabelFilledIcon LabelsFilled
LabelPropertyIcon, TagIcon LabelsOutline
PanelLeft LeftSidePaneOutline
CopyLinkIcon, Link, Link2Icon, LinkIcon LinkOutline
ListLayoutIcon ListOutline
Loader LoadingOutline
LockKeyhole LockedOutline
LockIcon LockOutline
LogOut LogOutOutline
Mail, Mails MailOutline
MembersPropertyIcon, Users, Users2Icon, UsersIcon MembersOutline
Minus MinusOutline
CenterPanelIcon ModalPeekOutline
DiceIcon, ModuleIcon ModuleOutline
Monitor MonitorOutline
Ellipsis, MoreHorizontal MoreHorizontalOutline
MoreVertical, MoreVerticalIcon MoreVerticalOutline
MultipleStickyIcon, RecentStickyIcon MultipleStickyOutline
ExternalLink, NewTabIcon NewTabOutline
PageIcon PagesOutline
Palette PaletteOutline
ParentPropertyIcon ParentOutline
Pin PinOutline
CirclePlus PlusCircleOutline
PreferencesIcon, SlidersHorizontal PreferencesOutline
PriorityPropertyIcon PriorityOutline
Briefcase, Hotel, ProjectIcon ProjectsOutline
SmilePlus ReactionOutline
RefreshCcw, RefreshCw, RotateCcw RefreshOutline
RelatedIcon RelatesToOutline
RelationPropertyIcon RelationsOutline
CommentReplyIcon ReplyOutline
ArchiveRestore, ArchiveRestoreIcon RestoreOutline
PanelRight RightSidePaneOutline
Rocket RocketOutline
SearchIcon SearchOutline
FilterAppliedIcon SelectedFilterOutline
Settings, Settings2, SettingsIcon SettingsOutline
Share2 ShareAltOutline
Eye, EyeIcon ShowOutline
SidePanelIcon SidePeekOutline
ArrowUpNarrowWide, ArrowUpWideNarrow SortAscendingOutline
ArrowDownWideNarrow SortDescendingOutline
Star StarOutline
StartDatePropertyIcon StartDateOutline
DoubleCircleIcon, StatePropertyIcon StateOutline
StickyNote, StickyNoteIcon StickyNoteOutline
Bell SubscribeOutline
SheetLayoutIcon TableOutline
ALargeSmall, Type TextOutline
Lightbulb ThoughtsOutline
CheckCircleFilledIcon TickCircleFilled
CheckCircle, CheckCircle2, CircleCheck TickCircleOutline
CheckIcon TickOutline
TimelineLayoutIcon TimelineOutline
Timer TimeTrackingOutline
ListTodo ToDoOutline
ArrowUp TopArrowOutline
TransferIcon TransferWorkItemOutline
Zap TriggerOutline
LockKeyholeOpen UnlockedOutline
PinOff UnpinOutline
BellOff UnsubscribeOutline
UploadCloud UploadOutline
SquareUser UserAltOutline
UserMinus2 UserMinusOutline
CircleUser, CircleUserRound, User, User2, UserCirclePropertyIcon, UserRound UserOutline
UserPlus, UserPlus2 UserPlusOutline
ViewsIcon ViewsOutline
AlertCircle, CircleAlert WarningCircleOutline
AlertTriangle, AlertTriangleIcon, TriangleAlert WarningTriangleOutline
Webhook WebhooksOutline
Shapes WidgetOutline
Layers, LayersIcon, WorkItemsIcon WorkItemsOutline
YourWorkIcon YourWorkOutline

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • Feature (non-breaking change which adds functionality)
  • Improvement (change that would cause existing functionality to not work as expected)
  • Code refactoring
  • Performance improvements
  • Documentation update

Screenshots and Media (if applicable)

Test Scenarios

  • Work item list, kanban, spreadsheet, calendar and gantt layouts: property icons, layout switcher, filter and display dropdowns.
  • Work item detail relation icons (blocking / blocked by / duplicate / relates to) render at the size their parent passes.
  • Inbox/intake status icons render at the parent-provided size.
  • Member dropdowns across cycles, modules, projects and views, including the module analytics sidebar lead selector.
  • Pages editor toolbar and AI menu; stickies action bar; sub-issues inline spinner still animates.
  • State and priority icons are unchanged.

References

Part of the community icon migration to @makeplane/propel/icons. Mappings come from the icon audit manifest; none were inferred by name or appearance.

🤖 Generated with Claude Code

Replace confirmed icon symbols across apps/web with their audited
@makeplane/propel/icons targets. Unresolved symbols and the State,
Priority and Brand icons stay on their existing imports.

Lucide size props become explicit width/height, including the two
relation icons and the inbox status icon that forward a size variable.
Two aliased imports resolve to targets the file already imported, so
the aliases are dropped rather than importing the same symbol twice.

Widen the member dropdown chain and the AI menu from LucideIcon to
ComponentType<SVGProps<SVGSVGElement>> so both Lucide and Propel icons
satisfy them; both only ever render the icon with a className.

CycleGroupIcon is deliberately not migrated: it dispatches a different
glyph and color per cycle status, which CyclesOutline cannot express.

apps/web already declared @makeplane/propel, so no dependency change
was needed.
Copilot AI lite review requested due to automatic review settings September 1, 2026 13:28
@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 470 files, which is 170 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: 7dd804b3-e098-4742-9e65-571788b23fc3

📥 Commits

Reviewing files that changed from the base of the PR and between 12eb601 and 431a838.

📒 Files selected for processing (470)
  • apps/web/app/(all)/[workspaceSlug]/(projects)/active-cycles/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/browse/[workItem]/work-item-header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/drafts/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/extended-project-sidebar.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/mobile-header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/mobile-header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/mobile-header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/mobile-header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/mobile-header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/mobile-header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/stickies/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/header.tsx
  • apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/page.tsx
  • apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx
  • apps/web/app/(all)/invitations/page.tsx
  • apps/web/app/(all)/workspace-invitations/page.tsx
  • apps/web/app/error/dev.tsx
  • apps/web/core/components/account/auth-forms/auth-banner.tsx
  • apps/web/core/components/account/auth-forms/email.tsx
  • apps/web/core/components/account/auth-forms/forgot-password-popover.tsx
  • apps/web/core/components/account/auth-forms/forgot-password.tsx
  • apps/web/core/components/account/auth-forms/password.tsx
  • apps/web/core/components/account/auth-forms/reset-password.tsx
  • apps/web/core/components/account/auth-forms/set-password.tsx
  • apps/web/core/components/account/auth-forms/unique-code.tsx
  • apps/web/core/components/account/deactivate-account-modal.tsx
  • apps/web/core/components/active-cycles/workspace-active-cycles-upgrade.tsx
  • apps/web/core/components/analytics/insight-table/data-table.tsx
  • apps/web/core/components/analytics/insight-table/root.tsx
  • apps/web/core/components/analytics/overview/active-project-item.tsx
  • apps/web/core/components/analytics/select/analytics-params.tsx
  • apps/web/core/components/analytics/select/duration.tsx
  • apps/web/core/components/analytics/select/project.tsx
  • apps/web/core/components/analytics/select/select-y-axis.tsx
  • apps/web/core/components/analytics/work-items/modal/header.tsx
  • apps/web/core/components/analytics/work-items/priority-chart.tsx
  • apps/web/core/components/analytics/work-items/workitems-insight-table.tsx
  • apps/web/core/components/api-token/modal/form.tsx
  • apps/web/core/components/api-token/modal/generated-token-details.tsx
  • apps/web/core/components/api-token/token-list-item.tsx
  • apps/web/core/components/automation/auto-archive-automation.tsx
  • apps/web/core/components/automation/auto-close-automation.tsx
  • apps/web/core/components/base-layouts/constants.ts
  • apps/web/core/components/breadcrumbs/project.tsx
  • apps/web/core/components/comments/card/display.tsx
  • apps/web/core/components/comments/card/edit-form.tsx
  • apps/web/core/components/comments/comment-block.tsx
  • apps/web/core/components/comments/quick-actions.tsx
  • apps/web/core/components/common/activity/activity-block.tsx
  • apps/web/core/components/common/activity/helper.tsx
  • apps/web/core/components/common/applied-filters/date.tsx
  • apps/web/core/components/common/applied-filters/members.tsx
  • apps/web/core/components/common/latest-feature-block.tsx
  • apps/web/core/components/common/layout-error-boundary.tsx
  • apps/web/core/components/common/page-access-icon.tsx
  • apps/web/core/components/common/quick-actions-factory.tsx
  • apps/web/core/components/core/activity.tsx
  • apps/web/core/components/core/description-versions/dropdown.tsx
  • apps/web/core/components/core/description-versions/modal.tsx
  • apps/web/core/components/core/filters/date-filter-modal.tsx
  • apps/web/core/components/core/filters/date-filter-select.tsx
  • apps/web/core/components/core/modals/bulk-delete-issues-modal.tsx
  • apps/web/core/components/core/modals/existing-issues-list-modal.tsx
  • apps/web/core/components/core/modals/gpt-assistant-popover.tsx
  • apps/web/core/components/core/modals/user-image-upload-modal.tsx
  • apps/web/core/components/core/modals/workspace-image-upload-modal.tsx
  • apps/web/core/components/core/sidebar/sidebar-menu-hamburger-toggle.tsx
  • apps/web/core/components/cycles/active-cycle/cycle-stats.tsx
  • apps/web/core/components/cycles/analytics-sidebar/issue-progress.tsx
  • apps/web/core/components/cycles/analytics-sidebar/sidebar-details.tsx
  • apps/web/core/components/cycles/analytics-sidebar/sidebar-header.tsx
  • apps/web/core/components/cycles/applied-filters/date.tsx
  • apps/web/core/components/cycles/applied-filters/root.tsx
  • apps/web/core/components/cycles/applied-filters/status.tsx
  • apps/web/core/components/cycles/archived-cycles/header.tsx
  • apps/web/core/components/cycles/cycles-view-header.tsx
  • apps/web/core/components/cycles/dropdowns/filters/root.tsx
  • apps/web/core/components/cycles/list/cycle-list-group-header.tsx
  • apps/web/core/components/cycles/list/cycle-list-item-action.tsx
  • apps/web/core/components/cycles/list/cycle-list-project-group-header.tsx
  • apps/web/core/components/cycles/list/cycles-list-item.tsx
  • apps/web/core/components/cycles/quick-actions.tsx
  • apps/web/core/components/cycles/transfer-issues-modal.tsx
  • apps/web/core/components/cycles/transfer-issues.tsx
  • apps/web/core/components/dropdowns/cycle/cycle-options.tsx
  • apps/web/core/components/dropdowns/cycle/index.tsx
  • apps/web/core/components/dropdowns/date-range.tsx
  • apps/web/core/components/dropdowns/date.tsx
  • apps/web/core/components/dropdowns/estimate.tsx
  • apps/web/core/components/dropdowns/intake-state/base.tsx
  • apps/web/core/components/dropdowns/layout.tsx
  • apps/web/core/components/dropdowns/member/avatar.tsx
  • apps/web/core/components/dropdowns/member/base.tsx
  • apps/web/core/components/dropdowns/member/dropdown.tsx
  • apps/web/core/components/dropdowns/member/member-options.tsx
  • apps/web/core/components/dropdowns/module/button-content.tsx
  • apps/web/core/components/dropdowns/module/module-options.tsx
  • apps/web/core/components/dropdowns/priority.tsx
  • apps/web/core/components/dropdowns/project/base.tsx
  • apps/web/core/components/dropdowns/state/base.tsx
  • apps/web/core/components/editor/lite-text/lite-toolbar.tsx
  • apps/web/core/components/editor/lite-text/toolbar.tsx
  • apps/web/core/components/editor/sticky-editor/toolbar.tsx
  • apps/web/core/components/estimates/create/modal.tsx
  • apps/web/core/components/estimates/create/stage-one.tsx
  • apps/web/core/components/estimates/estimate-list-item-buttons.tsx
  • apps/web/core/components/estimates/points/create-root.tsx
  • apps/web/core/components/estimates/points/create.tsx
  • apps/web/core/components/estimates/points/preview.tsx
  • apps/web/core/components/estimates/points/update.tsx
  • apps/web/core/components/exporter/column.tsx
  • apps/web/core/components/exporter/prev-exports.tsx
  • apps/web/core/components/gantt-chart/blocks/block-row.tsx
  • apps/web/core/components/gantt-chart/chart/header.tsx
  • apps/web/core/components/gantt-chart/helpers/add-block.tsx
  • apps/web/core/components/home/widgets/empty-states/no-projects.tsx
  • apps/web/core/components/home/widgets/links/action.tsx
  • apps/web/core/components/home/widgets/links/link-detail.tsx
  • apps/web/core/components/home/widgets/links/root.tsx
  • apps/web/core/components/home/widgets/recents/filters.tsx
  • apps/web/core/components/home/widgets/recents/index.tsx
  • apps/web/core/components/home/widgets/recents/issue.tsx
  • apps/web/core/components/home/widgets/recents/page.tsx
  • apps/web/core/components/icons/locked-component.tsx
  • apps/web/core/components/inbox/content/inbox-issue-header.tsx
  • apps/web/core/components/inbox/content/inbox-issue-mobile-header.tsx
  • apps/web/core/components/inbox/content/issue-properties.tsx
  • apps/web/core/components/inbox/inbox-filter/applied-filters/date.tsx
  • apps/web/core/components/inbox/inbox-filter/applied-filters/label.tsx
  • apps/web/core/components/inbox/inbox-filter/applied-filters/member.tsx
  • apps/web/core/components/inbox/inbox-filter/applied-filters/priority.tsx
  • apps/web/core/components/inbox/inbox-filter/applied-filters/state.tsx
  • apps/web/core/components/inbox/inbox-filter/applied-filters/status.tsx
  • apps/web/core/components/inbox/inbox-filter/filters/filter-selection.tsx
  • apps/web/core/components/inbox/inbox-filter/root.tsx
  • apps/web/core/components/inbox/inbox-filter/sorting/order-by.tsx
  • apps/web/core/components/inbox/inbox-status-icon.tsx
  • apps/web/core/components/inbox/modals/create-modal/issue-properties.tsx
  • apps/web/core/components/inbox/modals/select-duplicate.tsx
  • apps/web/core/components/inbox/root.tsx
  • apps/web/core/components/integration/single-integration-card.tsx
  • apps/web/core/components/issues/attachment/attachment-detail.tsx
  • apps/web/core/components/issues/attachment/attachment-item-list.tsx
  • apps/web/core/components/issues/attachment/attachment-list-item.tsx
  • apps/web/core/components/issues/filters.tsx
  • apps/web/core/components/issues/header.tsx
  • apps/web/core/components/issues/issue-detail-widgets/action-buttons.tsx
  • apps/web/core/components/issues/issue-detail-widgets/attachments/quick-action-button.tsx
  • apps/web/core/components/issues/issue-detail-widgets/links/quick-action-button.tsx
  • apps/web/core/components/issues/issue-detail-widgets/relations/quick-action-button.tsx
  • apps/web/core/components/issues/issue-detail-widgets/sub-issues/display-filters.tsx
  • apps/web/core/components/issues/issue-detail-widgets/sub-issues/filters.tsx
  • apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/list-group.tsx
  • apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/list-item.tsx
  • apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/properties.tsx
  • apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/root.tsx
  • apps/web/core/components/issues/issue-detail-widgets/sub-issues/quick-action-button.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity-filter.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/archived-at.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/assignee.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/attachment.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/cycle.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/default.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/description.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/estimate.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/helpers/activity-block.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/inbox.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/label.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/link.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/module.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/name.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/parent.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/priority.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/start_date.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/state.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/target_date.tsx
  • apps/web/core/components/issues/issue-detail/issue-activity/sort-root.tsx
  • apps/web/core/components/issues/issue-detail/issue-detail-quick-actions.tsx
  • apps/web/core/components/issues/issue-detail/label/create-label.tsx
  • apps/web/core/components/issues/issue-detail/label/label-list-item.tsx
  • apps/web/core/components/issues/issue-detail/label/select/label-select.tsx
  • apps/web/core/components/issues/issue-detail/links/link-detail.tsx
  • apps/web/core/components/issues/issue-detail/links/link-item.tsx
  • apps/web/core/components/issues/issue-detail/links/root.tsx
  • apps/web/core/components/issues/issue-detail/parent-select.tsx
  • apps/web/core/components/issues/issue-detail/relation-select.tsx
  • apps/web/core/components/issues/issue-detail/sidebar.tsx
  • apps/web/core/components/issues/issue-detail/subscription.tsx
  • apps/web/core/components/issues/issue-layouts/calendar/dropdowns/months-dropdown.tsx
  • apps/web/core/components/issues/issue-layouts/calendar/dropdowns/options-dropdown.tsx
  • apps/web/core/components/issues/issue-layouts/calendar/header.tsx
  • apps/web/core/components/issues/issue-layouts/calendar/issue-block.tsx
  • apps/web/core/components/issues/issue-layouts/calendar/quick-add-issue-actions.tsx
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/cycle.tsx
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/date.tsx
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/label.tsx
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/members.tsx
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/module.tsx
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/priority.tsx
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/project.tsx
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/state-group.tsx
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/state.tsx
  • apps/web/core/components/issues/issue-layouts/filters/header/filters/module.tsx
  • apps/web/core/components/issues/issue-layouts/filters/header/helpers/filter-header.tsx
  • apps/web/core/components/issues/issue-layouts/filters/header/helpers/filter-option.tsx
  • apps/web/core/components/issues/issue-layouts/filters/header/mobile-layout-selection.tsx
  • apps/web/core/components/issues/issue-layouts/group-drag-overlay.tsx
  • apps/web/core/components/issues/issue-layouts/kanban/block.tsx
  • apps/web/core/components/issues/issue-layouts/kanban/headers/group-by-card.tsx
  • apps/web/core/components/issues/issue-layouts/kanban/headers/sub-group-by-card.tsx
  • apps/web/core/components/issues/issue-layouts/layout-icon.tsx
  • apps/web/core/components/issues/issue-layouts/list/block.tsx
  • apps/web/core/components/issues/issue-layouts/list/headers/group-by-card.tsx
  • apps/web/core/components/issues/issue-layouts/properties/all-properties.tsx
  • apps/web/core/components/issues/issue-layouts/properties/label-dropdown.tsx
  • apps/web/core/components/issues/issue-layouts/properties/labels.tsx
  • apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/helper.tsx
  • apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/issue-detail.tsx
  • apps/web/core/components/issues/issue-layouts/quick-add/button/gantt.tsx
  • apps/web/core/components/issues/issue-layouts/quick-add/button/kanban.tsx
  • apps/web/core/components/issues/issue-layouts/quick-add/button/list.tsx
  • apps/web/core/components/issues/issue-layouts/quick-add/button/spreadsheet.tsx
  • apps/web/core/components/issues/issue-layouts/quick-add/root.tsx
  • apps/web/core/components/issues/issue-layouts/spreadsheet/columns/due-date-column.tsx
  • apps/web/core/components/issues/issue-layouts/spreadsheet/columns/header-column.tsx
  • apps/web/core/components/issues/issue-layouts/spreadsheet/columns/start-date-column.tsx
  • apps/web/core/components/issues/issue-layouts/spreadsheet/issue-row.tsx
  • apps/web/core/components/issues/issue-layouts/utils.tsx
  • apps/web/core/components/issues/issue-modal/components/default-properties.tsx
  • apps/web/core/components/issues/issue-modal/components/description-editor.tsx
  • apps/web/core/components/issues/issue-modal/components/parent-tag.tsx
  • apps/web/core/components/issues/issue-update-status.tsx
  • apps/web/core/components/issues/layout-quick-actions.tsx
  • apps/web/core/components/issues/parent-issues-list-modal.tsx
  • apps/web/core/components/issues/peek-overview/error.tsx
  • apps/web/core/components/issues/peek-overview/header.tsx
  • apps/web/core/components/issues/peek-overview/loader.tsx
  • apps/web/core/components/issues/peek-overview/properties.tsx
  • apps/web/core/components/issues/preview-card/date.tsx
  • apps/web/core/components/issues/relations/issue-list-item.tsx
  • apps/web/core/components/issues/select/base.tsx
  • apps/web/core/components/issues/workspace-draft/draft-issue-block.tsx
  • apps/web/core/components/issues/workspace-draft/draft-issue-properties.tsx
  • apps/web/core/components/labels/label-block/label-item-block.tsx
  • apps/web/core/components/labels/label-block/label-name.tsx
  • apps/web/core/components/labels/project-setting-label-group.tsx
  • apps/web/core/components/labels/project-setting-label-item.tsx
  • apps/web/core/components/license/modal/card/base-paid-plan-card.tsx
  • apps/web/core/components/license/modal/card/free-plan.tsx
  • apps/web/core/components/modules/analytics-sidebar/issue-progress.tsx
  • apps/web/core/components/modules/analytics-sidebar/root.tsx
  • apps/web/core/components/modules/applied-filters/date.tsx
  • apps/web/core/components/modules/applied-filters/members.tsx
  • apps/web/core/components/modules/applied-filters/root.tsx
  • apps/web/core/components/modules/applied-filters/status.tsx
  • apps/web/core/components/modules/archived-modules/header.tsx
  • apps/web/core/components/modules/dropdowns/filters/root.tsx
  • apps/web/core/components/modules/dropdowns/order-by.tsx
  • apps/web/core/components/modules/links/list-item.tsx
  • apps/web/core/components/modules/module-card-item.tsx
  • apps/web/core/components/modules/module-layout-icon.tsx
  • apps/web/core/components/modules/module-list-item-action.tsx
  • apps/web/core/components/modules/module-list-item.tsx
  • apps/web/core/components/modules/module-view-header.tsx
  • apps/web/core/components/modules/quick-actions.tsx
  • apps/web/core/components/modules/select/status.tsx
  • apps/web/core/components/modules/sidebar-select/select-status.tsx
  • apps/web/core/components/navigation/app-rail-root.tsx
  • apps/web/core/components/navigation/customize-navigation-dialog.tsx
  • apps/web/core/components/navigation/project-actions-menu.tsx
  • apps/web/core/components/navigation/project-header-button.tsx
  • apps/web/core/components/navigation/project-header.tsx
  • apps/web/core/components/navigation/tab-navigation-overflow-menu.tsx
  • apps/web/core/components/navigation/tab-navigation-visible-item.tsx
  • apps/web/core/components/navigation/top-nav-power-k.tsx
  • apps/web/core/components/navigation/top-navigation-root.tsx
  • apps/web/core/components/navigation/use-navigation-items.ts
  • apps/web/core/components/onboarding/create-or-join-workspaces.tsx
  • apps/web/core/components/onboarding/header.tsx
  • apps/web/core/components/onboarding/invite-members.tsx
  • apps/web/core/components/onboarding/profile-setup.tsx
  • apps/web/core/components/onboarding/steps/profile/consent.tsx
  • apps/web/core/components/onboarding/steps/profile/root.tsx
  • apps/web/core/components/onboarding/steps/profile/set-password.tsx
  • apps/web/core/components/onboarding/steps/role/root.tsx
  • apps/web/core/components/onboarding/steps/team/root.tsx
  • apps/web/core/components/onboarding/steps/usecase/root.tsx
  • apps/web/core/components/onboarding/steps/workspace/create.tsx
  • apps/web/core/components/onboarding/tour/root.tsx
  • apps/web/core/components/onboarding/tour/sidebar.tsx
  • apps/web/core/components/pages/dropdowns/actions.tsx
  • apps/web/core/components/pages/editor/ai/ask-pi-menu.tsx
  • apps/web/core/components/pages/editor/ai/menu.tsx
  • apps/web/core/components/pages/editor/content-limit-banner.tsx
  • apps/web/core/components/pages/editor/header/root.tsx
  • apps/web/core/components/pages/editor/toolbar/color-dropdown.tsx
  • apps/web/core/components/pages/editor/toolbar/options-dropdown.tsx
  • apps/web/core/components/pages/editor/toolbar/root.tsx
  • apps/web/core/components/pages/editor/toolbar/toolbar.tsx
  • apps/web/core/components/pages/header/archived-badge.tsx
  • apps/web/core/components/pages/header/copy-link-control.tsx
  • apps/web/core/components/pages/header/favorite-control.tsx
  • apps/web/core/components/pages/header/lock-control.tsx
  • apps/web/core/components/pages/header/root.tsx
  • apps/web/core/components/pages/list/applied-filters/root.tsx
  • apps/web/core/components/pages/list/block-item-action.tsx
  • apps/web/core/components/pages/list/block.tsx
  • apps/web/core/components/pages/list/filters/root.tsx
  • apps/web/core/components/pages/list/order-by.tsx
  • apps/web/core/components/pages/list/search-input.tsx
  • apps/web/core/components/pages/modals/page-form.tsx
  • apps/web/core/components/pages/navigation-pane/tab-panels/assets.tsx
  • apps/web/core/components/pages/version/main-content.tsx
  • apps/web/core/components/power-k/config/account-commands.ts
  • apps/web/core/components/power-k/config/creation/command.ts
  • apps/web/core/components/power-k/config/help-commands.ts
  • apps/web/core/components/power-k/config/miscellaneous-commands.ts
  • apps/web/core/components/power-k/config/navigation/commands.ts
  • apps/web/core/components/power-k/config/preferences-commands.ts
  • apps/web/core/components/power-k/menus/cycles.tsx
  • apps/web/core/components/power-k/menus/views.tsx
  • apps/web/core/components/power-k/ui/modal/command-item.tsx
  • apps/web/core/components/power-k/ui/modal/context-indicator.tsx
  • apps/web/core/components/power-k/ui/modal/header.tsx
  • apps/web/core/components/power-k/ui/modal/no-results-command.tsx
  • apps/web/core/components/power-k/ui/modal/search-results-map.tsx
  • apps/web/core/components/power-k/ui/modal/shortcuts-root.tsx
  • apps/web/core/components/power-k/ui/pages/context-based/cycle/commands.ts
  • apps/web/core/components/power-k/ui/pages/context-based/module/commands.tsx
  • apps/web/core/components/power-k/ui/pages/context-based/page/commands.ts
  • apps/web/core/components/power-k/ui/pages/context-based/work-item/commands.ts
  • apps/web/core/components/profile/activity/activity-list.tsx
  • apps/web/core/components/profile/overview/stats.tsx
  • apps/web/core/components/profile/sidebar.tsx
  • apps/web/core/components/project-states/group-item.tsx
  • apps/web/core/components/project-states/options/delete.tsx
  • apps/web/core/components/project-states/state-item-title.tsx
  • apps/web/core/components/project/applied-filters/access.tsx
  • apps/web/core/components/project/applied-filters/date.tsx
  • apps/web/core/components/project/applied-filters/members.tsx
  • apps/web/core/components/project/applied-filters/project-display-filters.tsx
  • apps/web/core/components/project/applied-filters/root.tsx
  • apps/web/core/components/project/card.tsx
  • apps/web/core/components/project/confirm-project-member-remove.tsx
  • apps/web/core/components/project/create/common-attributes.tsx
  • apps/web/core/components/project/create/header.tsx
  • apps/web/core/components/project/delete-project-modal.tsx
  • apps/web/core/components/project/dropdowns/filters/member-list.tsx
  • apps/web/core/components/project/dropdowns/filters/root.tsx
  • apps/web/core/components/project/dropdowns/order-by.tsx
  • apps/web/core/components/project/filters.tsx
  • apps/web/core/components/project/form.tsx
  • apps/web/core/components/project/header.tsx
  • apps/web/core/components/project/leave-project-modal.tsx
  • apps/web/core/components/project/member-header-column.tsx
  • apps/web/core/components/project/member-list.tsx
  • apps/web/core/components/project/multi-select-modal.tsx
  • apps/web/core/components/project/project-network-icon.tsx
  • apps/web/core/components/project/publish-project/modal.tsx
  • apps/web/core/components/project/search-projects.tsx
  • apps/web/core/components/project/send-project-invitation-modal.tsx
  • apps/web/core/components/project/settings/features-list.tsx
  • apps/web/core/components/project/settings/helper.tsx
  • apps/web/core/components/projects/mobile-header.tsx
  • apps/web/core/components/projects/settings/intake/header.tsx
  • apps/web/core/components/readonly/cycle.tsx
  • apps/web/core/components/readonly/date.tsx
  • apps/web/core/components/readonly/estimate.tsx
  • apps/web/core/components/readonly/module.tsx
  • apps/web/core/components/relations/index.tsx
  • apps/web/core/components/rich-filters/add-filters/button.tsx
  • apps/web/core/components/rich-filters/filter-item/close-button.tsx
  • apps/web/core/components/rich-filters/filter-item/invalid.tsx
  • apps/web/core/components/rich-filters/filters-row.tsx
  • apps/web/core/components/rich-filters/filters-toggle.tsx
  • apps/web/core/components/settings/mobile/nav.tsx
  • apps/web/core/components/settings/profile/content/pages/general/form.tsx
  • apps/web/core/components/settings/profile/content/pages/security.tsx
  • apps/web/core/components/settings/profile/modal.tsx
  • apps/web/core/components/settings/profile/sidebar/item-categories.tsx
  • apps/web/core/components/settings/profile/sidebar/workspace-options.tsx
  • apps/web/core/components/settings/project/sidebar/header.tsx
  • apps/web/core/components/settings/project/sidebar/item-icon.tsx
  • apps/web/core/components/settings/workspace/sidebar/header.tsx
  • apps/web/core/components/settings/workspace/sidebar/item-icon.tsx
  • apps/web/core/components/sidebar/search-button.tsx
  • apps/web/core/components/sidebar/sidebar-toggle-button.tsx
  • apps/web/core/components/sidebar/sidebar-wrapper.tsx
  • apps/web/core/components/stickies/action-bar.tsx
  • apps/web/core/components/stickies/layout/stickies-list.tsx
  • apps/web/core/components/stickies/modal/search.tsx
  • apps/web/core/components/stickies/modal/stickies.tsx
  • apps/web/core/components/stickies/sticky/root.tsx
  • apps/web/core/components/stickies/widget.tsx
  • apps/web/core/components/ui/empty-space.tsx
  • apps/web/core/components/ui/integration-and-import-export-banner.tsx
  • apps/web/core/components/views/applied-filters/access.tsx
  • apps/web/core/components/views/applied-filters/root.tsx
  • apps/web/core/components/views/filters/filter-selection.tsx
  • apps/web/core/components/views/filters/order-by.tsx
  • apps/web/core/components/views/form.tsx
  • apps/web/core/components/views/quick-actions.tsx
  • apps/web/core/components/views/view-list-header.tsx
  • apps/web/core/components/views/view-list-item-action.tsx
  • apps/web/core/components/views/view-list-item.tsx
  • apps/web/core/components/web-hooks/form/delete-section.tsx
  • apps/web/core/components/web-hooks/form/secret-key.tsx
  • apps/web/core/components/workflow/state-option.tsx
  • apps/web/core/components/workspace-notifications/sidebar/filters/applied-filter.tsx
  • apps/web/core/components/workspace-notifications/sidebar/filters/menu/menu-option-item.tsx
  • apps/web/core/components/workspace-notifications/sidebar/filters/menu/root.tsx
  • apps/web/core/components/workspace-notifications/sidebar/header/options/menu-option/root.tsx
  • apps/web/core/components/workspace-notifications/sidebar/header/options/root.tsx
  • apps/web/core/components/workspace-notifications/sidebar/header/root.tsx
  • apps/web/core/components/workspace-notifications/sidebar/notification-card/item.tsx
  • apps/web/core/components/workspace-notifications/sidebar/notification-card/options/archive.tsx
  • apps/web/core/components/workspace-notifications/sidebar/notification-card/options/read.tsx
  • apps/web/core/components/workspace-notifications/sidebar/notification-card/options/snooze/modal.tsx
  • apps/web/core/components/workspace-notifications/sidebar/notification-card/options/snooze/root.tsx
  • apps/web/core/components/workspace/ConfirmWorkspaceMemberRemove.tsx
  • apps/web/core/components/workspace/billing/comparison/base.tsx
  • apps/web/core/components/workspace/billing/comparison/feature-detail.tsx
  • apps/web/core/components/workspace/billing/comparison/plans.tsx
  • apps/web/core/components/workspace/confirm-workspace-member-remove.tsx
  • apps/web/core/components/workspace/delete-workspace-form.tsx
  • apps/web/core/components/workspace/invite-modal/actions.tsx
  • apps/web/core/components/workspace/invite-modal/fields.tsx
  • apps/web/core/components/workspace/settings/invitations-list-item.tsx
  • apps/web/core/components/workspace/settings/member-columns.tsx
  • apps/web/core/components/workspace/settings/members-list.tsx
  • apps/web/core/components/workspace/settings/workspace-details.tsx
  • apps/web/core/components/workspace/sidebar/dropdown-item.tsx
  • apps/web/core/components/workspace/sidebar/extended-sidebar-item.tsx
  • apps/web/core/components/workspace/sidebar/favorites/favorite-folder.tsx
  • apps/web/core/components/workspace/sidebar/favorites/favorite-items/common/favorite-item-icon.tsx
  • apps/web/core/components/workspace/sidebar/favorites/favorite-items/common/favorite-item-quick-action.tsx
  • apps/web/core/components/workspace/sidebar/favorites/favorites-menu.tsx
  • apps/web/core/components/workspace/sidebar/help-section/root.tsx
  • apps/web/core/components/workspace/sidebar/helper.tsx
  • apps/web/core/components/workspace/sidebar/project-navigation.tsx
  • apps/web/core/components/workspace/sidebar/projects-list-item.tsx
  • apps/web/core/components/workspace/sidebar/projects-list.tsx
  • apps/web/core/components/workspace/sidebar/quick-actions.tsx
  • apps/web/core/components/workspace/sidebar/sidebar-menu-items.tsx
  • apps/web/core/components/workspace/sidebar/user-menu-root.tsx
  • apps/web/core/components/workspace/sidebar/user-menu.tsx
  • apps/web/core/components/workspace/sidebar/workspace-menu-header.tsx
  • apps/web/core/components/workspace/sidebar/workspace-menu-root.tsx
  • apps/web/core/components/workspace/sidebar/workspace-menu.tsx
  • apps/web/core/components/workspace/views/default-view-quick-action.tsx
  • apps/web/core/components/workspace/views/header.tsx
  • apps/web/core/components/workspace/views/view-list-item.tsx
  • apps/web/core/hooks/work-item-filters/use-work-item-filters-config.tsx
  • apps/web/core/layouts/auth-layout/workspace-wrapper.tsx
  • apps/web/helpers/views.helper.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown

React Doctor found 66 new issues in 55 files · 66 warnings · score 69 / 100 (Needs work) · 177 fixed · vs preview

66 warnings

app/(all)/workspace-invitations/page.tsx

  • ⚠️ L36 React function has high control-flow complexity no-high-complexity-react-function

core/components/account/auth-forms/password.tsx

  • ⚠️ L49 React function has high control-flow complexity no-high-complexity-react-function

core/components/account/auth-forms/reset-password.tsx

  • ⚠️ L131 Duplicated JSX structure duplicate-jsx-subtree
  • ⚠️ L164 Duplicated JSX structure duplicate-jsx-subtree

core/components/comments/card/display.tsx

  • ⚠️ L44 React function has high control-flow complexity no-high-complexity-react-function

core/components/core/modals/user-image-upload-modal.tsx

  • ⚠️ L30 React function has high control-flow complexity no-high-complexity-react-function
  • ⚠️ L100 Duplicated JSX structure duplicate-jsx-subtree

core/components/core/modals/workspace-image-upload-modal.tsx

  • ⚠️ L35 React function has high control-flow complexity no-high-complexity-react-function

core/components/cycles/active-cycle/cycle-stats.tsx

  • ⚠️ L55 React function has high control-flow complexity no-high-complexity-react-function

core/components/cycles/analytics-sidebar/sidebar-details.tsx

  • ⚠️ L31 React function has high control-flow complexity no-high-complexity-react-function

core/components/cycles/dropdowns/filters/root.tsx

  • ⚠️ L34 Duplicated JSX structure duplicate-jsx-subtree

core/components/cycles/list/cycle-list-item-action.tsx

  • ⚠️ L59 React function has high control-flow complexity no-high-complexity-react-function

core/components/dropdowns/date-range.tsx

  • ⚠️ L72 React function has high control-flow complexity no-high-complexity-react-function
  • ⚠️ L286 Interaction on static element no-static-element-interactions

core/components/dropdowns/date.tsx

  • ⚠️ L167 Interaction on static element no-static-element-interactions

core/components/dropdowns/estimate.tsx

  • ⚠️ L48 React function has high control-flow complexity no-high-complexity-react-function
  • ⚠️ L218 Interaction on static element no-static-element-interactions

core/components/dropdowns/intake-state/base.tsx

  • ⚠️ L48 React function has high control-flow complexity no-high-complexity-react-function
  • ⚠️ L203 Duplicated JSX structure duplicate-jsx-subtree

core/components/dropdowns/module/button-content.tsx

  • ⚠️ L29 React function has high control-flow complexity no-high-complexity-react-function

core/components/dropdowns/priority.tsx

  • ⚠️ L56 React function has high control-flow complexity no-high-complexity-react-function
  • ⚠️ L143 React function has high control-flow complexity no-high-complexity-react-function
  • ⚠️ L227 React function has high control-flow complexity no-high-complexity-react-function

core/components/dropdowns/project/base.tsx

  • ⚠️ L223 Interaction on static element no-static-element-interactions

core/components/dropdowns/state/base.tsx

  • ⚠️ L48 React function has high control-flow complexity no-high-complexity-react-function

core/components/icons/locked-component.tsx

  • ⚠️ L12 Constant JSX rebuilt each render rendering-hoist-jsx

core/components/inbox/content/inbox-issue-header.tsx

  • ⚠️ L62 React function has high control-flow complexity no-high-complexity-react-function

core/components/inbox/content/inbox-issue-mobile-header.tsx

  • ⚠️ L62 React function has high control-flow complexity no-high-complexity-react-function

core/components/inbox/content/issue-properties.tsx

  • ⚠️ L42 React function has high control-flow complexity no-high-complexity-react-function

core/components/inbox/modals/create-modal/issue-properties.tsx

  • ⚠️ L36 React function has high control-flow complexity no-high-complexity-react-function

core/components/integration/single-integration-card.tsx

  • ⚠️ L52 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/issue-detail-widgets/sub-issues/filters.tsx

  • ⚠️ L32 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/issue-detail-widgets/sub-issues/issues-list/list-item.tsx

  • ⚠️ L48 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/issue-detail-widgets/sub-issues/issues-list/properties.tsx

  • ⚠️ L42 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/issue-detail/label/select/label-select.tsx

  • ⚠️ L34 React function has high control-flow complexity no-high-complexity-react-function
  • ⚠️ L195 Click handler missing keyboard handler click-events-have-key-events
  • ⚠️ L195 Handler on non-interactive element no-noninteractive-element-interactions

core/components/issues/issue-detail/sidebar.tsx

  • ⚠️ L54 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/issue-layouts/kanban/headers/group-by-card.tsx

  • ⚠️ L39 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/issue-layouts/list/block.tsx

  • ⚠️ L54 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/issue-layouts/properties/all-properties.tsx

  • ⚠️ L58 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/issue-layouts/properties/label-dropdown.tsx

  • ⚠️ L48 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/issue-layouts/properties/labels.tsx

  • ⚠️ L191 Chained array iterations js-combine-iterations

core/components/issues/issue-layouts/spreadsheet/issue-row.tsx

  • ⚠️ L171 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/peek-overview/properties.tsx

  • ⚠️ L53 React function has high control-flow complexity no-high-complexity-react-function

core/components/issues/select/base.tsx

  • ⚠️ L41 React function has high control-flow complexity no-high-complexity-react-function
  • ⚠️ L153 Interaction on static element no-static-element-interactions

core/components/issues/workspace-draft/draft-issue-properties.tsx

  • ⚠️ L42 React function has high control-flow complexity no-high-complexity-react-function

core/components/modules/analytics-sidebar/issue-progress.tsx

  • ⚠️ L39 React function has high control-flow complexity no-high-complexity-react-function

core/components/modules/module-card-item.tsx

  • ⚠️ L38 React function has high control-flow complexity no-high-complexity-react-function

16 more warnings not shown.

Reviewed by React Doctor for commit 431a838. See inline comments for fixes.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Refactors apps/web to migrate audit-confirmed icon usages from the existing Lucide / @plane/propel/icons imports to @makeplane/propel/icons, aligning the web app with the ongoing community icon migration while leaving unresolved symbol groups (State/Priority/Brand, CycleGroupIcon) untouched.

Changes:

  • Updated icon imports/usages across apps/web to use @makeplane/propel/icons outline icons where mappings are known.
  • Replaced Lucide size usages with explicit width/height in select call sites to preserve sizing behavior.
  • Broadened a few icon-accepting types (e.g., member dropdown chain) to allow ComponentType<SVGProps<SVGSVGElement>> where needed.

Reviewed changes

Copilot reviewed 300 out of 470 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
apps/web/core/components/exporter/column.tsx Migrates download icon to DownloadOutline (note: currently also changes visible text/key to “DownloadOutline”).
apps/web/core/components/home/widgets/links/action.tsx Migrates “add link” icon to AddOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/core/components/issues/issue-layouts/quick-add/root.tsx Migrates quick-add icon to AddOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/core/components/issues/issue-layouts/quick-add/button/list.tsx Migrates list quick-add icon to AddOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/core/components/issues/issue-layouts/quick-add/button/spreadsheet.tsx Migrates spreadsheet quick-add icon to AddOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/core/components/issues/issue-layouts/quick-add/button/kanban.tsx Migrates kanban quick-add icon to AddOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/core/components/issues/issue-layouts/quick-add/button/gantt.tsx Migrates gantt quick-add icon to AddOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/core/components/issues/issue-layouts/calendar/quick-add-issue-actions.tsx Migrates calendar quick-add icon to AddOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/core/components/cycles/list/cycles-list-item.tsx Migrates completed check icon to TickOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/core/components/cycles/analytics-sidebar/sidebar-header.tsx Migrates close chevron to ChevronRightOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/core/components/modules/analytics-sidebar/root.tsx Migrates close chevron to ChevronRightOutline (note: contains text-2 class likely meant to be stroke-2).
apps/web/helpers/views.helper.ts Migrates view-access icons to GlobeOutline / LockOutline.
apps/web/core/layouts/auth-layout/workspace-wrapper.tsx Replaces Lucide logout icon with LogOutOutline and uses explicit width/height.
apps/web/core/components/workspace/views/header.tsx Replaces PlusIcon with AddOutline in global views header.
apps/web/core/components/workspace/sidebar/quick-actions.tsx Replaces AddWorkItemIcon with AddWorkItemOutline in sidebar quick action.
apps/web/core/components/pages/navigation-pane/tab-panels/assets.tsx Replaces Lucide download icon with DownloadOutline.
apps/web/core/components/issues/issue-update-status.tsx Replaces Lucide refresh icon with RefreshOutline for saving indicator.
apps/web/core/components/common/activity/activity-block.tsx Replaces Lucide network icon with HierarchyOutline fallback.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

onClick={() => handleClose()}
>
<ChevronRightIcon className="size-4 stroke-2 text-secondary" />
<ChevronRightOutline className="text-2 size-4 text-secondary" />
<div className="pointer-events-none absolute inset-0 flex items-center justify-center">
{progress === 100 ? (
<CheckIcon className="h-3 w-3 stroke-2" />
<TickOutline className="text-2 h-3 w-3" />
Comment on lines 96 to 98
key: "DownloadOutline",
content: "DownloadOutline",
tdRender: (rowData: RowData) =>
>
<div className="my-auto h-8 w-8 rounded-sm bg-layer-1/40 p-2">
<PlusIcon className="h-4 w-4 stroke-2 text-tertiary" />
<AddOutline className="text-2 h-4 w-4 text-tertiary" />
customButton={
<div className="flex w-full items-center gap-x-[6px] rounded-md px-2 py-1.5 text-tertiary hover:text-tertiary">
<PlusIcon className="h-3.5 w-3.5 flex-shrink-0 stroke-2" />
<AddOutline className="text-2 h-3.5 w-3.5 flex-shrink-0" />
onClick={onClick}
>
<PlusIcon className="h-3.5 w-3.5 stroke-2" />
<AddOutline className="text-2 h-3.5 w-3.5" />
onClick={onClick}
>
<PlusIcon className="h-3.5 w-3.5 stroke-2" />
<AddOutline className="text-2 h-3.5 w-3.5" />
onClick={onClick}
>
<PlusIcon className="h-3.5 w-3.5 stroke-2" />
<AddOutline className="text-2 h-3.5 w-3.5" />
onClick={() => handleIsOpen(true)}
>
<PlusIcon className="h-3.5 w-3.5 stroke-2" />
<AddOutline className="text-2 h-3.5 w-3.5" />
onClick={() => handleClose()}
>
<ChevronRightIcon className="h-3 w-3 stroke-2 text-on-color" />
<ChevronRightOutline className="text-2 h-3 w-3 text-on-color" />
@anmolsinghbhatia
anmolsinghbhatia marked this pull request as draft September 1, 2026 14:34

@codingwolf-at codingwolf-at left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Identifier replace leaked into user-facing copy (DownloadOutline / SettingsOutline / PinOutline / StarOutline us on GitHub), stroke-2 became text-2, favorited stars went hollow, and strokeWidth is a no-op on fill-based Propel glyphs.

Comment thread apps/web/core/components/exporter/column.tsx Outdated
Comment thread apps/web/core/components/project/card.tsx Outdated
Comment thread apps/web/core/components/workspace/sidebar/extended-sidebar-item.tsx Outdated
Comment thread apps/web/app/(all)/workspace-invitations/page.tsx Outdated
Comment thread apps/web/core/components/home/widgets/links/action.tsx Outdated
Comment thread apps/web/core/components/modules/analytics-sidebar/root.tsx Outdated
Comment thread apps/web/core/components/workspace/sidebar/favorites/favorite-folder.tsx Outdated
Comment thread apps/web/core/components/dropdowns/member/member-options.tsx Outdated
Restore the six user-facing strings the identifier rename overwrote.
The migration replaced every occurrence of a source symbol name,
including ones inside string literals and JSX text, so the GitHub
empty state read "StarOutline us on GitHub", the exporter column key,
header and button label became "DownloadOutline", the project card
action title became "SettingsOutline" and a tooltip became "PinOutline".

Drop 122 strokeWidth props and 10 text-2 classes. Propel glyphs paint
with fill="currentColor", so strokeWidth never changed weight, and
text-2 was a bad conversion of stroke-2, which is a stroke width rather
than a colour and has no meaning on a fill path.

Use StarFilled for the two favorited sidebar stars. Lucide's Star with
fill-yellow-500 was a solid star, and StarOutline is a ring path, so
filling it does not reproduce that shape.
@anmolsinghbhatia
anmolsinghbhatia marked this pull request as ready for review September 2, 2026 08:31
@@ -33,7 +33,7 @@ export const CycleFiltersSelection = observer(function CycleFiltersSelection(pro
<div className="flex h-full w-full flex-col overflow-hidden">
<div className="bg-surface-1 p-2.5 pb-0">

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

React Doctor · react-doctor/duplicate-jsx-subtree (warning)

5 copies of this 6-node JSX tree appear across 5 files, repeating about 72 lines. Composition path: CycleFiltersSelection > div > div.

Fix → Consider extracting a shared component if these trees represent the same UI concept. Keep them separate when the resemblance is incidental or the variants are likely to evolve independently.

Docs


export function LockedComponent(props: { toolTipContent?: string }) {
const { toolTipContent } = props;
const lockedComponent = (

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

React Doctor · react-doctor/rendering-hoist-jsx (warning)

This rebuilds on every render because static JSX "lockedComponent" is built inside the component, so move it to the top of the file to make it just once

Fix → Move the static JSX out to the top of the file: const ICON = <svg>...</svg>, so it isn't rebuilt on every render

Docs

<LoadingOutline className="spin h-3.5 w-3.5" />
) : canCreateLabel ? (
<ul className="space-y-1">
<Combobox.Option

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

React Doctor · react-doctor/click-events-have-key-events (warning)

Keyboard users can't trigger this click handler because there's no keyboard one, so add onKeyUp, onKeyDown, or onKeyPress.

Fix → Pair onClick with a key handler so keyboard users can trigger it.

Docs

<LoadingOutline className="spin h-3.5 w-3.5" />
) : canCreateLabel ? (
<ul className="space-y-1">
<Combobox.Option

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

React Doctor · react-doctor/no-noninteractive-element-interactions (warning)

Keyboard & screen reader users can't trigger this <li> because it isn't interactive, so use a button or link or add an interactive role.

Fix → Put interactions on a button or link, or add an interactive role.

Docs

@@ -22,9 +22,9 @@ export function ModuleLayoutIcon(props: ILayoutIcon) {

// get Layout icon
const icons = {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

React Doctor · react-doctor/prefer-module-scope-static-value (warning)

icons inside ModuleLayoutIcon uses no local state but is rebuilt every render, so it looks new each time & breaks memoized children. Move it to the top of the file, outside the component.

Fix → Move the value above the component, at the top of the file. It doesn't use local state, so rebuilding it each update is wasted and makes it look new every time.

Docs

@anmolsinghbhatia anmolsinghbhatia self-assigned this Sep 2, 2026
@sriramveeraghanta
sriramveeraghanta merged commit 6712389 into preview Sep 2, 2026
16 checks passed
@sriramveeraghanta
sriramveeraghanta deleted the refactor/web-icons-to-makeplane-icons branch September 2, 2026 15:06
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.

4 participants