Skip to content

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

Draft
anmolsinghbhatia wants to merge 1 commit into
previewfrom
refactor/web-icons-to-makeplane-icons
Draft

refactor: migrate web icons to @makeplane/propel#9731
anmolsinghbhatia wants to merge 1 commit 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: a73a4225-01b9-4932-875f-04acca8ed1f4

📥 Commits

Reviewing files that changed from the base of the PR and between 12eb601 and 244f94e.

📒 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 40 new issues in 40 files · 40 warnings · score 70 / 100 (Needs work) · 121 fixed · vs preview

40 warnings

core/components/cycles/archived-cycles/header.tsx

  • ⚠️ L23 Import from a barrel file no-barrel-import

core/components/cycles/cycles-view-header.tsx

  • ⚠️ L21 Import from a barrel file no-barrel-import

core/components/gantt-chart/blocks/block-row.tsx

  • ⚠️ L19 Import from a barrel file no-barrel-import

core/components/home/widgets/recents/index.tsx

  • ⚠️ L19 Import from a barrel file no-barrel-import

core/components/icons/locked-component.tsx

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

core/components/issues/filters.tsx

  • ⚠️ L23 Import from a barrel file no-barrel-import

core/components/issues/issue-detail-widgets/action-buttons.tsx

  • ⚠️ L13 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/archived-at.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/assignee.tsx

  • ⚠️ L13 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/attachment.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/cycle.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/default.tsx

  • ⚠️ L15 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/description.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/estimate.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/helpers/activity-block.tsx

  • ⚠️ L15 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/inbox.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/label.tsx

  • ⚠️ L13 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/link.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/module.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/name.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/parent.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/priority.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/start_date.tsx

  • ⚠️ L13 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/state.tsx

  • ⚠️ L12 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-activity/activity/actions/target_date.tsx

  • ⚠️ L13 Import from a barrel file no-barrel-import

core/components/issues/issue-detail/issue-detail-quick-actions.tsx

  • ⚠️ L25 Import from a barrel file no-barrel-import

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

  • ⚠️ L42 Import from a barrel file no-barrel-import

core/components/issues/issue-layouts/calendar/header.tsx

  • ⚠️ L21 Import from a barrel file no-barrel-import

core/components/issues/issue-layouts/calendar/quick-add-issue-actions.tsx

  • ⚠️ L24 Import from a barrel file no-barrel-import

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

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

core/components/issues/issue-layouts/quick-add/root.tsx

  • ⚠️ L20 Import from a barrel file no-barrel-import

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

  • ⚠️ L34 Import from a barrel file no-barrel-import

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

  • ⚠️ L42 Import from a barrel file no-barrel-import

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

  • ⚠️ L31 Import from a barrel file no-barrel-import

core/components/modules/module-layout-icon.tsx

  • ⚠️ L24 Static value rebuilt every render prefer-module-scope-static-value

core/components/project-states/state-item-title.tsx

  • ⚠️ L16 Import from a barrel file no-barrel-import

core/components/views/view-list-header.tsx

  • ⚠️ L18 Import from a barrel file no-barrel-import

core/components/workspace-notifications/sidebar/notification-card/item.tsx

  • ⚠️ L21 Import from a barrel file no-barrel-import

core/components/workspace/sidebar/favorites/favorite-folder.tsx

  • ⚠️ L43 Import from a barrel file no-barrel-import

core/components/workspace/sidebar/favorites/favorites-menu.tsx

  • ⚠️ L33 Import from a barrel file no-barrel-import

Reviewed by React Doctor for commit 244f94e. See inline comments for fixes.


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

import { ArchiveIcon } from "@plane/propel/icons";
import { useIssueDetail } from "@/hooks/store/use-issue-detail";
// components
import { IssueActivityBlockComponent } from "./";

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-barrel-import (warning)

This ships extra code to your users & slows page load. Import directly from "./helpers/activity-block".

Fix → Import from the direct path: import { Button } from './components/Button' instead of ./components

Docs

import { CyclesOutline } from "@makeplane/propel/icons";
import { useIssueDetail } from "@/hooks/store/use-issue-detail";
// components
import { IssueActivityBlockComponent } from "./";

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-barrel-import (warning)

This ships extra code to your users & slows page load. Import directly from "./helpers/activity-block".

Fix → Import from the direct path: import { Button } from './components/Button' instead of ./components

Docs

import { IntakeOutline } from "@makeplane/propel/icons";
import { useIssueDetail } from "@/hooks/store/use-issue-detail";
// components
import { IssueActivityBlockComponent } from "./";

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-barrel-import (warning)

This ships extra code to your users & slows page load. Import directly from "./helpers/activity-block".

Fix → Import from the direct path: import { Button } from './components/Button' instead of ./components

Docs

import { ModuleOutline } from "@makeplane/propel/icons";
import { useIssueDetail } from "@/hooks/store/use-issue-detail";
// components
import { IssueActivityBlockComponent } from "./";

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-barrel-import (warning)

This ships extra code to your users & slows page load. Import directly from "./helpers/activity-block".

Fix → Import from the direct path: import { Button } from './components/Button' instead of ./components

Docs

import { StateOutline } from "@makeplane/propel/icons";
import { useIssueDetail } from "@/hooks/store/use-issue-detail";
// components
import { IssueActivityBlockComponent, IssueLink } from "./";

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-barrel-import (warning)

This ships extra code to your users & slows page load. Import directly from: "./helpers/activity-block", "./helpers/issue-link".

Fix → Import from the direct path: import { Button } from './components/Button' instead of ./components

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

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 on lines +96 to +105
key: "DownloadOutline",
content: "DownloadOutline",
tdRender: (rowData: RowData) =>
checkExpiry(rowData.created_at) ? (
<>
{rowData.status == "completed" ? (
<a target="_blank" href={rowData?.url} rel="noopener noreferrer">
<button className="flex w-full items-center gap-1 font-medium text-accent-primary">
<Download className="h-4 w-4" />
<div>Download</div>
<DownloadOutline className="h-4 w-4" />
<div>DownloadOutline</div>

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: key, content, and the button label are now "DownloadOutline". Keep icon={DownloadOutline}; restore "Download" on key / content / the <div>.

@@ -128,43 +136,43 @@ export const ProjectCard = observer(function ProjectCard(props: Props) {
{
key: "settings",
action: () => router.push(`/${workspaceSlug}/settings/projects/${project.id}`),
title: "Settings",
icon: Settings,
title: "SettingsOutline",

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.

title is the action/tooltip label, not the icon name. Restore title: "Settings"; keep icon: SettingsOutline.

className="size-3.5 flex-shrink-0 text-placeholder outline-none hover:text-tertiary"
onClick={() => unPinNavigationItem(item.key)}
/>
</Tooltip>
) : (
<Tooltip label="Pin">
<Pin
<Tooltip label="PinOutline">

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.

"Pin" got renamed with the lucide identifier. Restore label="Pin". (Unpin survived because it is a different string.)

<EmptySpaceItem Icon={BoxesOutline} title="Continue to home" href="/" />
)}
<EmptySpaceItem Icon={Star} title="Star us on GitHub" href="https://github.com/makeplane" />
<EmptySpaceItem Icon={StarOutline} title="StarOutline us on GitHub" href="https://github.com/makeplane" />

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.

Visible empty-state copy became "StarOutline us on GitHub" because Star matched the lucide export. Restore title="Star us on GitHub"; keep Icon={StarOutline}.

Worth a sweep: grep title/label/content/key values ending in Outline/Filled.

>
<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" />

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.

stroke-2 (lucide stroke weight) was rewritten to text-2. That is not a stroke token here (text-11 / text-20 are font sizes), and Propel glyphs are fill paths so stroke-* would be a no-op anyway. Drop text-2.

Same pattern: quick-add list/kanban/gantt/spreadsheet/root + calendar quick-add, cycles-list-item, cycle sidebar header, module sidebar.

onClick={() => handleClose()}
>
<ChevronRightIcon className="h-3 w-3 stroke-2 text-on-color" />
<ChevronRightOutline className="text-2 h-3 w-3 text-on-color" />

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.

Drop text-2 (was stroke-2).

@@ -227,13 +233,13 @@ export function FavoriteFolder(props: Props) {
>
<CustomMenu.MenuItem onClick={() => handleRemoveFromFavorites(favorite)}>
<span className="flex items-center justify-start gap-2">
<Star className="fill-yellow-500 stroke-yellow-500 h-3.5 w-3.5" />
<StarOutline className="fill-yellow-500 text-yellow-500 h-3.5 w-3.5" />

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.

Lucide Star + fill-yellow-500 stroke-yellow-500 was a solid yellow star. StarOutline is a ring path, so fill-yellow-500 paints the outline, not the interior. Use StarFilled for the favorited state.

@@ -47,7 +47,7 @@ export const FavoriteItemQuickAction = observer(function FavoriteItemQuickAction
>
<CustomMenu.MenuItem onClick={() => handleRemoveFromFavorites(favorite)}>
<span className="flex items-center justify-start gap-2">
<Star className="fill-yellow-500 stroke-yellow-500 h-3.5 w-3.5 flex-shrink-0" />
<StarOutline className="fill-yellow-500 text-yellow-500 h-3.5 w-3.5 flex-shrink-0" />

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.

Same as the folder row: StarOutline + fill-yellow-500 will not look like the old solid Lucide star. Use StarFilled.

{subIssueHelpers.preview_loader.includes(issue.id) ? (
<div className="flex h-full w-full cursor-not-allowed items-center justify-center rounded-xs bg-layer-1 transition-all">
<Loader width={14} strokeWidth={2} className="animate-spin" />
<LinkOutline width={14} height={14} strokeWidth={2} className="animate-spin" />

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.

Old import was Link as Loader, so the spinner was already a link glyph. Mapping LinkLinkOutline kept that. Elsewhere in this PR loaders correctly became LoadingOutline. Use LoadingOutline with animate-spin here too.

>
<div className="flex items-center gap-1.5 rounded-sm border border-subtle bg-surface-2 px-2">
<SearchIcon className="h-3.5 w-3.5 text-placeholder" strokeWidth={1.5} />
<SearchOutline className="h-3.5 w-3.5 text-placeholder" strokeWidth={1.5} />

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.

Propel generated icons paint with fill="currentColor", not stroke. strokeWidth={1.5} on the <svg> does not thicken the path (Lucide API leftover). Safe to drop.

This shows up ~117 times in the PR — same cleanup everywhere you still pass strokeWidth to a *Outline/*Filled icon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants