Conversation
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughProject-wide icon migration to @plane/propel/icons: numerous React components replace lucide-react and older internal icons with new Propel icons. Propel icons package adds many new icons, updates exports, and ArchiveIcon gains a color prop. A new export FAVORITE_ITEM_LINKS was added. No control-flow changes; mostly visual/icon substitutions and import updates. Changes
Sequence Diagram(s)(omitted — changes are visual/icon substitutions without control-flow modifications) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~30 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
|
Linked to Plane Work Item(s) This comment was auto-generated by Plane |
There was a problem hiding this comment.
Pull Request Overview
This PR migrates icons from lucide-react to the new Propel Icons system to match the design system. The changes involve replacing lucide-react icons with custom Propel icons throughout the codebase and updating existing Propel icon usage for consistency.
- Migration from lucide-react to Propel Icons for navigation and UI elements
- Update of existing Propel icon names to match the design system
- Addition of new icon components with consistent naming patterns
Reviewed Changes
Copilot reviewed 97 out of 97 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/propel/src/icons/*.tsx | Added new icon components (HomeIcon, InboxIcon, ViewsIcon, etc.) |
| packages/propel/src/icons/index.ts | Updated exports to include new icons and reorganized alphabetically |
| packages/propel/src/tabs/tabs.stories.tsx | Replaced Home import with HomeIcon |
| packages/propel/src/icons/archive-icon.tsx | Updated ArchiveIcon with new design and color prop |
| apps/web/core/components/**/*.tsx | Migrated from lucide-react to Propel icons throughout components |
| apps/web/ce/constants/*.ts | Updated icon references in configuration files |
| apps/space/core/components/**/*.tsx | Updated Space app components to use new icons |
| apps/admin/app/**/*.tsx | Updated admin app icons |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/web/core/components/issues/issue-layouts/utils.tsx (1)
175-175: Replace ContrastIcon with CycleIcon for consistency.Line 175 still uses
ContrastIconfrom lucide-react for the "None" cycle option, which is inconsistent with the PR's objective to migrate fromContrastIcontoCycleIcon. The actual cycle entries at line 166 useCycleGroupIconfrom Propel.Apply this diff to complete the migration:
- icon: <ContrastIcon className="h-3.5 w-3.5" />, + icon: <CycleGroupIcon cycleGroup="draft" className="h-3.5 w-3.5" />,Alternatively, if a plain
CycleIconis more appropriate for "None":+import { CycleIcon } from "@plane/propel/icons"; ... - icon: <ContrastIcon className="h-3.5 w-3.5" />, + icon: <CycleIcon className="h-3.5 w-3.5" />,
♻️ Duplicate comments (1)
packages/propel/src/icons/view-icon.tsx (1)
21-31: Same clipPath ID pattern as AddIcon.This icon uses the same hardcoded clipPath ID pattern (
"clip0_1612_7029") as AddIcon. If this pattern is used across multiple icon components and multiple instances are rendered, verify there are no ID conflicts.
🧹 Nitpick comments (7)
apps/admin/app/(all)/(dashboard)/sidebar-help-section.tsx (1)
113-113: Consider removing redundant size props.The icon render includes both Tailwind classes (
h-3.5 w-3.5) and explicit width/height props. Since Tailwind classes will take precedence, the explicit props are redundant.Apply this diff to simplify:
-<Icon className="h-3.5 w-3.5 text-custom-text-200" width={14} height={14} /> +<Icon className="h-3.5 w-3.5 text-custom-text-200" />apps/web/core/components/inbox/root.tsx (1)
64-64: Remove the unnecessarystrokeWidthprop.The
IntakeIconcomponent renders a filled SVG (usingfillinstead ofstroke), so thestrokeWidth={1.5}prop has no visual effect. This appears to be a leftover from the previous icon implementation.Apply this diff to remove the prop:
- <IntakeIcon className="size-[60px]" strokeWidth={1.5} /> + <IntakeIcon className="size-[60px]" />apps/web/core/components/workspace/sidebar/help-menu.tsx (1)
74-74: Remove redundant size props.The PageIcon has both className size utilities (
h-3.5 w-3.5) and explicitheight={14}andwidth={14}props. This is redundant and inconsistent with other icon usages in this migration (see files like help-actions.tsx, view-list-item.tsx).Apply this diff to use only className for sizing:
- <PageIcon className="h-3.5 w-3.5 text-custom-text-200" height={14} width={14} /> + <PageIcon className="h-3.5 w-3.5 text-custom-text-200" />apps/web/core/components/issues/issue-detail-widgets/action-buttons.tsx (1)
4-6: LGTM! Icon migration correct, minor note on props.The replacement of lucide-react's
LayerswithViewsIconfrom the Propel icon set is correctly implemented.Note: The
strokeWidth={2}prop on line 40 has no effect sinceViewsIconuses fill-based SVG paths rather than strokes. This prop is harmless but could be removed for clarity.Also applies to: 40-40
apps/web/core/components/home/widgets/empty-states/recents.tsx (1)
9-24: Inconsistent icon sizing approach.Within the same function, different sizing approaches are used:
- Lines 9, 14:
ProjectIconandPageIconuseheight={30} width={30}props- Line 19:
WorkItemsIconusesclassName="w-[30px] h-[30px]"For consistency and maintainability, use the same approach for all icons.
Apply this diff to standardize on the props-based approach:
case "issue": return { - icon: <WorkItemsIcon className="text-custom-text-400/40 w-[30px] h-[30px]" />, + icon: <WorkItemsIcon height={30} width={30} className="text-custom-text-400/40" />, text: "home.recents.empty.issue", };apps/web/core/components/home/widgets/recents/index.tsx (1)
26-28: Inconsistent icon sizing approach.The filter icons use different sizing methods:
- Line 26:
WorkItemsIconusesclassName="w-4 h-4"- Lines 27-28:
PageIconandProjectIconuseheight={16} width={16}propsFor consistency, standardize on one approach.
Apply this diff to use the props-based approach consistently:
const filters: { name: TRecentActivityFilterKeys; icon?: React.ReactNode; i18n_key: string }[] = [ { name: "all item", i18n_key: "home.recents.filters.all" }, - { name: "issue", icon: <WorkItemsIcon className="w-4 h-4" />, i18n_key: "home.recents.filters.issues" }, + { name: "issue", icon: <WorkItemsIcon height={16} width={16} />, i18n_key: "home.recents.filters.issues" }, { name: "page", icon: <PageIcon height={16} width={16} />, i18n_key: "home.recents.filters.pages" }, { name: "project", icon: <ProjectIcon height={16} width={16} />, i18n_key: "home.recents.filters.projects" }, ];apps/web/core/components/workspace/sidebar/help-section.tsx (1)
77-77: Consolidate icon usage in sidebar components
Multiple sidebar files (e.g. help-section.tsx, dropdown-item.tsx, app-search.tsx, projects-list.tsx) still import icons fromlucide-reactusingsize={…}, while new Propel icons useheight/width. Migrate all icons to Propel or document approved exceptions.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (97)
apps/admin/app/(all)/(dashboard)/sidebar-help-section.tsx(3 hunks)apps/space/core/components/issues/issue-layouts/properties/all-properties.tsx(2 hunks)apps/space/core/components/issues/issue-layouts/properties/cycle.tsx(2 hunks)apps/space/core/components/issues/issue-layouts/properties/modules.tsx(2 hunks)apps/space/core/components/issues/issue-layouts/utils.tsx(2 hunks)apps/space/core/components/issues/navbar/root.tsx(2 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/active-cycles/header.tsx(2 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/header.tsx(2 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/drafts/header.tsx(2 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/header.tsx(2 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/header.tsx(2 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/header.tsx(2 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/header.tsx(2 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/header.tsx(3 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/header.tsx(3 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx(3 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx(4 hunks)apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/header.tsx(5 hunks)apps/web/ce/components/breadcrumbs/project.tsx(2 hunks)apps/web/ce/components/command-palette/helpers.tsx(6 hunks)apps/web/ce/components/issues/issue-layouts/utils.tsx(2 hunks)apps/web/ce/components/projects/navigation/helper.tsx(6 hunks)apps/web/ce/components/workspace/sidebar/helper.tsx(1 hunks)apps/web/ce/constants/project/settings/features.tsx(5 hunks)apps/web/ce/constants/sidebar-favorites.ts(1 hunks)apps/web/core/components/analytics/overview/active-project-item.tsx(2 hunks)apps/web/core/components/analytics/select/project.tsx(3 hunks)apps/web/core/components/analytics/select/select-y-axis.tsx(2 hunks)apps/web/core/components/analytics/work-items/workitems-insight-table.tsx(2 hunks)apps/web/core/components/command-palette/actions/help-actions.tsx(2 hunks)apps/web/core/components/command-palette/actions/project-actions.tsx(4 hunks)apps/web/core/components/command-palette/command-modal.tsx(2 hunks)apps/web/core/components/common/activity/helper.tsx(3 hunks)apps/web/core/components/core/activity.tsx(4 hunks)apps/web/core/components/cycles/analytics-sidebar/sidebar-details.tsx(3 hunks)apps/web/core/components/cycles/list/cycle-list-item-action.tsx(2 hunks)apps/web/core/components/cycles/transfer-issues-modal.tsx(2 hunks)apps/web/core/components/dropdowns/cycle/cycle-options.tsx(2 hunks)apps/web/core/components/dropdowns/cycle/index.tsx(2 hunks)apps/web/core/components/dropdowns/module/button-content.tsx(5 hunks)apps/web/core/components/dropdowns/module/module-options.tsx(3 hunks)apps/web/core/components/dropdowns/project/base.tsx(2 hunks)apps/web/core/components/home/widgets/empty-states/no-projects.tsx(2 hunks)apps/web/core/components/home/widgets/empty-states/recents.tsx(1 hunks)apps/web/core/components/home/widgets/recents/index.tsx(2 hunks)apps/web/core/components/home/widgets/recents/issue.tsx(2 hunks)apps/web/core/components/home/widgets/recents/page.tsx(2 hunks)apps/web/core/components/inbox/root.tsx(2 hunks)apps/web/core/components/instance/not-ready-view.tsx(1 hunks)apps/web/core/components/issues/issue-detail-widgets/action-buttons.tsx(2 hunks)apps/web/core/components/issues/issue-detail-widgets/sub-issues/quick-action-button.tsx(2 hunks)apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/cycle.tsx(2 hunks)apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/default.tsx(2 hunks)apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/inbox.tsx(2 hunks)apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/module.tsx(2 hunks)apps/web/core/components/issues/issue-detail/sidebar.tsx(3 hunks)apps/web/core/components/issues/issue-layouts/filters/applied-filters/module.tsx(2 hunks)apps/web/core/components/issues/issue-layouts/filters/header/filters/module.tsx(2 hunks)apps/web/core/components/issues/issue-layouts/properties/all-properties.tsx(2 hunks)apps/web/core/components/issues/issue-layouts/utils.tsx(2 hunks)apps/web/core/components/issues/peek-overview/properties.tsx(3 hunks)apps/web/core/components/modules/analytics-sidebar/root.tsx(3 hunks)apps/web/core/components/modules/module-card-item.tsx(2 hunks)apps/web/core/components/onboarding/steps/role/root.tsx(2 hunks)apps/web/core/components/onboarding/tour/sidebar.tsx(2 hunks)apps/web/core/components/pages/list/block.tsx(2 hunks)apps/web/core/components/pages/modals/page-form.tsx(2 hunks)apps/web/core/components/project/header.tsx(2 hunks)apps/web/core/components/views/form.tsx(2 hunks)apps/web/core/components/views/view-list-item.tsx(2 hunks)apps/web/core/components/workspace-notifications/sidebar/header/root.tsx(2 hunks)apps/web/core/components/workspace/sidebar/favorites/favorite-folder.tsx(2 hunks)apps/web/core/components/workspace/sidebar/favorites/favorite-items/common/helper.tsx(2 hunks)apps/web/core/components/workspace/sidebar/help-menu.tsx(2 hunks)apps/web/core/components/workspace/sidebar/help-section.tsx(2 hunks)apps/web/core/components/workspace/sidebar/help-section/root.tsx(2 hunks)apps/web/core/components/workspace/sidebar/project-navigation.tsx(6 hunks)apps/web/core/components/workspace/sidebar/quick-actions.tsx(2 hunks)apps/web/core/components/workspace/sidebar/user-menu.tsx(2 hunks)apps/web/core/components/workspace/sidebar/workspace-menu.tsx(2 hunks)packages/propel/src/icons/add-icon.tsx(1 hunks)packages/propel/src/icons/analytics-icon.tsx(1 hunks)packages/propel/src/icons/archive-icon.tsx(1 hunks)packages/propel/src/icons/cycle-icon.tsx(1 hunks)packages/propel/src/icons/dashboard-icon.tsx(1 hunks)packages/propel/src/icons/draft-icon.tsx(1 hunks)packages/propel/src/icons/home-icon.tsx(1 hunks)packages/propel/src/icons/inbox-icon.tsx(1 hunks)packages/propel/src/icons/index.ts(1 hunks)packages/propel/src/icons/intake-icon.tsx(1 hunks)packages/propel/src/icons/module-icon.tsx(1 hunks)packages/propel/src/icons/page-icon.tsx(1 hunks)packages/propel/src/icons/project-icon.tsx(1 hunks)packages/propel/src/icons/view-icon.tsx(1 hunks)packages/propel/src/icons/work-items-icon.tsx(1 hunks)packages/propel/src/icons/your-work-icon.tsx(1 hunks)packages/propel/src/tabs/tabs.stories.tsx(3 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-10-09T20:42:31.843Z
Learnt from: lifeiscontent
PR: makeplane/plane#7922
File: apps/admin/app/(all)/(dashboard)/ai/form.tsx:19-19
Timestamp: 2025-10-09T20:42:31.843Z
Learning: In the makeplane/plane repository, React types are globally available through TypeScript configuration. Type annotations like React.FC, React.ReactNode, etc. can be used without explicitly importing the React namespace. The codebase uses the modern JSX transform, so React imports are not required for JSX or type references.
Applied to files:
apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/default.tsxapps/admin/app/(all)/(dashboard)/sidebar-help-section.tsxapps/web/core/components/workspace-notifications/sidebar/header/root.tsxapps/web/core/components/cycles/analytics-sidebar/sidebar-details.tsxapps/web/core/components/pages/list/block.tsxapps/web/core/components/onboarding/steps/role/root.tsxapps/web/ce/constants/project/settings/features.tsxapps/web/core/components/dropdowns/project/base.tsxapps/web/core/components/workspace/sidebar/help-section.tsxapps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/header.tsx
📚 Learning: 2025-10-06T01:45:11.248Z
Learnt from: lifeiscontent
PR: makeplane/plane#7888
File: packages/propel/src/table/table.stories.tsx:1-1
Timestamp: 2025-10-06T01:45:11.248Z
Learning: When using Storybook with React + Vite framework, Meta and StoryObj types should be imported from "storybook/react-vite", not from "storybook/react". This is the correct pattern per Storybook's official documentation for framework-specific type imports.
Applied to files:
packages/propel/src/tabs/tabs.stories.tsx
🧬 Code graph analysis (82)
apps/web/app/(all)/[workspaceSlug]/(projects)/drafts/header.tsx (2)
apps/admin/core/components/common/breadcrumb-link.tsx (1)
BreadcrumbLink(12-38)packages/propel/src/icons/draft-icon.tsx (1)
DraftIcon(5-26)
apps/web/core/components/issues/issue-layouts/filters/applied-filters/module.tsx (1)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
apps/web/core/components/issues/issue-layouts/filters/header/filters/module.tsx (1)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
apps/web/core/components/project/header.tsx (1)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/cycles/list/cycle-list-item-action.tsx (1)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/default.tsx (1)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/core/components/issues/issue-layouts/utils.tsx (1)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
apps/web/core/components/analytics/select/select-y-axis.tsx (1)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/header.tsx (1)
packages/propel/src/icons/analytics-icon.tsx (1)
AnalyticsIcon(5-26)
apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/header.tsx (1)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/core/components/views/view-list-item.tsx (1)
packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)
apps/web/core/components/workspace/sidebar/quick-actions.tsx (1)
packages/propel/src/icons/add-icon.tsx (1)
AddIcon(5-33)
apps/web/core/components/command-palette/actions/project-actions.tsx (3)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/core/components/command-palette/actions/help-actions.tsx (1)
packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/core/components/home/widgets/empty-states/recents.tsx (3)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/core/components/modules/analytics-sidebar/root.tsx (1)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/core/components/home/widgets/recents/page.tsx (1)
packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/core/components/workspace/sidebar/help-section/root.tsx (1)
packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/core/components/dropdowns/cycle/index.tsx (1)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
apps/space/core/components/issues/issue-layouts/utils.tsx (1)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
packages/propel/src/icons/home-icon.tsx (1)
packages/propel/src/icons/index.ts (1)
ISvgIcons(1-1)
apps/web/core/components/home/widgets/recents/issue.tsx (1)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/header.tsx (2)
apps/web/core/components/common/switcher-label.tsx (1)
SwitcherLabel(47-55)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
apps/web/core/components/core/activity.tsx (3)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
apps/web/ce/components/breadcrumbs/project.tsx (2)
apps/web/core/components/common/switcher-label.tsx (1)
SwitcherLabel(47-55)packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/issues/peek-overview/properties.tsx (2)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
apps/web/core/components/workspace/sidebar/favorites/favorite-folder.tsx (1)
packages/propel/src/icons/draft-icon.tsx (1)
DraftIcon(5-26)
packages/propel/src/tabs/tabs.stories.tsx (1)
packages/propel/src/icons/home-icon.tsx (1)
HomeIcon(5-19)
apps/web/app/(all)/[workspaceSlug]/(projects)/active-cycles/header.tsx (1)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
apps/web/core/components/issues/issue-detail-widgets/action-buttons.tsx (1)
packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)
apps/admin/app/(all)/(dashboard)/sidebar-help-section.tsx (1)
packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/space/core/components/issues/issue-layouts/properties/all-properties.tsx (1)
packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)
apps/web/core/components/workspace/sidebar/project-navigation.tsx (6)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
apps/web/ce/components/command-palette/helpers.tsx (5)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/views/form.tsx (1)
packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)
apps/web/ce/components/issues/issue-layouts/utils.tsx (1)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
packages/propel/src/icons/work-items-icon.tsx (1)
packages/propel/src/icons/index.ts (1)
ISvgIcons(1-1)
apps/web/core/components/pages/modals/page-form.tsx (1)
packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/header.tsx (2)
apps/web/core/components/common/switcher-label.tsx (1)
SwitcherLabel(47-55)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
apps/web/core/components/cycles/transfer-issues-modal.tsx (1)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
apps/space/core/components/issues/navbar/root.tsx (1)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/workspace/sidebar/user-menu.tsx (4)
packages/propel/src/icons/home-icon.tsx (1)
HomeIcon(5-19)packages/propel/src/icons/your-work-icon.tsx (1)
YourWorkIcon(5-30)packages/propel/src/icons/inbox-icon.tsx (1)
InboxIcon(5-26)packages/propel/src/icons/draft-icon.tsx (1)
DraftIcon(5-26)
apps/web/core/components/workspace/sidebar/help-menu.tsx (1)
packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/core/components/workspace-notifications/sidebar/header/root.tsx (1)
packages/propel/src/icons/inbox-icon.tsx (1)
InboxIcon(5-26)
apps/web/core/components/dropdowns/module/module-options.tsx (1)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
apps/web/core/components/analytics/overview/active-project-item.tsx (1)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/home/widgets/empty-states/no-projects.tsx (1)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/workspace/sidebar/favorites/favorite-items/common/helper.tsx (2)
apps/web/ce/constants/sidebar-favorites.ts (1)
FAVORITE_ITEM_ICONS(14-21)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/header.tsx (3)
apps/web/core/components/common/switcher-label.tsx (1)
SwitcherLabel(47-55)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)apps/admin/core/components/common/breadcrumb-link.tsx (1)
BreadcrumbLink(12-38)
apps/web/core/components/dropdowns/cycle/cycle-options.tsx (1)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
apps/space/core/components/issues/issue-layouts/properties/cycle.tsx (1)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
apps/web/core/components/analytics/select/project.tsx (1)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/cycles/analytics-sidebar/sidebar-details.tsx (1)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx (2)
apps/web/core/components/common/switcher-label.tsx (2)
SwitcherLabel(47-55)SwitcherIcon(15-37)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/core/components/pages/list/block.tsx (1)
packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/app/(all)/[workspaceSlug]/(projects)/header.tsx (2)
apps/admin/core/components/common/breadcrumb-link.tsx (1)
BreadcrumbLink(12-38)packages/propel/src/icons/home-icon.tsx (1)
HomeIcon(5-19)
apps/web/core/components/modules/module-card-item.tsx (1)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/core/components/onboarding/steps/role/root.tsx (1)
packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)
apps/web/core/components/issues/issue-detail-widgets/sub-issues/quick-action-button.tsx (1)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/core/components/workspace/sidebar/workspace-menu.tsx (4)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/analytics-icon.tsx (1)
AnalyticsIcon(5-26)
apps/web/core/components/home/widgets/recents/index.tsx (3)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/dropdowns/module/button-content.tsx (1)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
apps/web/ce/constants/project/settings/features.tsx (5)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
apps/web/core/components/dropdowns/project/base.tsx (1)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/issues/issue-layouts/properties/all-properties.tsx (1)
packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)
apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/module.tsx (1)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/header.tsx (1)
packages/propel/src/icons/your-work-icon.tsx (1)
YourWorkIcon(5-30)
apps/web/ce/components/projects/navigation/helper.tsx (6)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
apps/web/core/components/command-palette/command-modal.tsx (1)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)
apps/web/core/components/workspace/sidebar/help-section.tsx (1)
packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/core/components/inbox/root.tsx (1)
packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
apps/web/core/components/common/activity/helper.tsx (3)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/header.tsx (3)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
apps/web/ce/components/workspace/sidebar/helper.tsx (8)
packages/propel/src/icons/home-icon.tsx (1)
HomeIcon(5-19)packages/propel/src/icons/inbox-icon.tsx (1)
InboxIcon(5-26)packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/analytics-icon.tsx (1)
AnalyticsIcon(5-26)packages/propel/src/icons/your-work-icon.tsx (1)
YourWorkIcon(5-30)packages/propel/src/icons/draft-icon.tsx (1)
DraftIcon(5-26)
apps/space/core/components/issues/issue-layouts/properties/modules.tsx (1)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)
apps/web/core/components/onboarding/tour/sidebar.tsx (5)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)
apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/inbox.tsx (1)
packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
apps/web/core/components/analytics/work-items/workitems-insight-table.tsx (1)
packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)
apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/cycle.tsx (1)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/header.tsx (2)
apps/web/core/components/common/switcher-label.tsx (2)
SwitcherLabel(47-55)SwitcherIcon(15-37)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)
apps/web/core/components/issues/issue-detail/sidebar.tsx (2)
packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
apps/web/ce/constants/sidebar-favorites.ts (5)
packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/project-icon.tsx (1)
ProjectIcon(5-26)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build and lint web apps
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
apps/web/core/components/workspace/sidebar/project-navigation.tsx (1)
180-180: Remove ineffective stroke classes.The stroke classes (
stroke-1andstroke-[1.5]) have no visual effect because all Propel icons use fill-based paths, not strokes. These classes appear to be remnants from the lucide-react migration.Apply this diff to remove the unnecessary stroke classes:
- <item.icon className={`flex-shrink-0 size-4 ${item.name === "Intake" ? "stroke-1" : "stroke-[1.5]"}`} /> + <item.icon className="flex-shrink-0 size-4" />apps/web/ce/constants/project/settings/features.tsx (1)
40-40: Consider using consistent sizing approach.The icon migration is correct, but
ModuleIconuses explicitwidth={20} height={20}props while all other icons in this file useclassName="h-5 w-5"for sizing. Although functionally equivalent, standardizing on one approach improves consistency.Apply this diff for consistency with other icons:
- icon: <ModuleIcon width={20} height={20} className="flex-shrink-0 text-custom-text-300" />, + icon: <ModuleIcon className="h-5 w-5 flex-shrink-0 text-custom-text-300" />,
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
apps/web/ce/components/projects/navigation/helper.tsx(7 hunks)apps/web/ce/constants/project/settings/features.tsx(6 hunks)apps/web/core/components/workspace/sidebar/project-navigation.tsx(7 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-10-09T20:42:31.843Z
Learnt from: lifeiscontent
PR: makeplane/plane#7922
File: apps/admin/app/(all)/(dashboard)/ai/form.tsx:19-19
Timestamp: 2025-10-09T20:42:31.843Z
Learning: In the makeplane/plane repository, React types are globally available through TypeScript configuration. Type annotations like React.FC, React.ReactNode, etc. can be used without explicitly importing the React namespace. The codebase uses the modern JSX transform, so React imports are not required for JSX or type references.
Applied to files:
apps/web/ce/constants/project/settings/features.tsx
🧬 Code graph analysis (3)
apps/web/ce/constants/project/settings/features.tsx (5)
packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
apps/web/ce/components/projects/navigation/helper.tsx (6)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
apps/web/core/components/workspace/sidebar/project-navigation.tsx (6)
packages/propel/src/icons/work-items-icon.tsx (1)
WorkItemsIcon(5-26)packages/propel/src/icons/cycle-icon.tsx (1)
CycleIcon(5-37)packages/propel/src/icons/module-icon.tsx (1)
ModuleIcon(5-42)packages/propel/src/icons/view-icon.tsx (1)
ViewsIcon(5-33)packages/propel/src/icons/page-icon.tsx (1)
PageIcon(5-26)packages/propel/src/icons/intake-icon.tsx (1)
IntakeIcon(5-33)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Analyze (javascript)
- GitHub Check: Build and lint web apps
🔇 Additional comments (7)
apps/web/core/components/workspace/sidebar/project-navigation.tsx (1)
9-9: LGTM! Icon migration successfully completed.The migration from lucide-react icons to Propel icons is correct. All icon imports and assignments are accurate, and the previous issue with the Intake item name has been resolved.
Also applies to: 72-72, 82-82, 92-92, 102-102, 112-112, 122-122
apps/web/ce/components/projects/navigation/helper.tsx (1)
3-3: LGTM! Icon migration successfully completed.The migration from lucide-react icons to Propel icons is correct. All icon imports and assignments are accurate, and the previous issue with the Intake item name has been resolved.
Also applies to: 23-23, 33-33, 43-43, 53-53, 63-63, 73-73
apps/web/ce/constants/project/settings/features.tsx (5)
2-4: LGTM!The import changes correctly reflect the icon migration to the Propel icon set. Retaining
Timerfrom lucide-react aligns with the PR objectives, as it's not part of this migration phase.
31-31: LGTM!The migration from
ContrastIcontoCycleIconis correct and aligns with the PR objectives. Therotate-180class intentionally adjusts the icon's orientation.
49-49: LGTM!The migration from lucide-react's
Layersto Propel'sViewsIconis correct and follows the PR objectives. The styling is consistent with other icons in the file.
58-58: LGTM!The migration from lucide-react's
FileTextto Propel'sPageIconis correct and aligns with the PR objectives. The styling is consistent with other icons in the file.
67-67: LGTM!The migration from
IntaketoIntakeIconis correct and follows the PR objectives. The styling is consistent with other icons in the file.
Summary
This PR includes:
Propel → Propel
Lucide-react → Propel
*For Draft, AddIcon is used where adding an item is semantically correct.
Summary by CodeRabbit