Skip to content

refactor: migrate space icons to @makeplane/propel - #9729

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

refactor: migrate space icons to @makeplane/propel#9729
anmolsinghbhatia wants to merge 1 commit into
previewfrom
refactor/space-icons-to-makeplane-icons

Conversation

@anmolsinghbhatia

@anmolsinghbhatia anmolsinghbhatia commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Description

Migrates the audit-confirmed icon symbols in apps/space (28 files) to @makeplane/propel/icons and adds the @makeplane/propel catalog dependency.
Unresolved symbols — StateGroupIcon, PriorityIcon, PlaneLockup, PlaneLogo, Circle, CircleDashed, SignalHigh — stay on their existing imports.
Propel icons paint with fill rather than stroke, so 7 stroke-placeholder classes became text-placeholder to keep the rendered colour; Lucide size props became explicit width/height.
CycleGroupIcon is not migrated: it dispatches a different glyph and colour per cycle status, which CyclesOutline cannot express.

Icon mapping

Current Propel
Sun AppearanceOutline
ArrowDown ArrowDownOutline
MoveRight ArrowNarrowRightOutline
Paperclip AttachOutline
BoardLayoutIcon BoardOutline
MessageSquare ChatOutline
ChevronDownIcon ChevronDownOutline
ChevronUpIcon ChevronUpOutline
XCircle CloseCircleOutline
CloseIcon CloseOutline
CycleIcon CyclesOutline
DueDatePropertyIcon DueDateOutline
FullScreenPanelIcon FullScreenPeekOutline
EyeOff HideOutline
Info InfoOutline
LabelPropertyIcon LabelsOutline
LinkIcon LinkOutline
ListLayoutIcon ListOutline
Lock LockOutline
LogOut LogOutOutline
MembersPropertyIcon MembersOutline
CenterPanelIcon ModalPeekOutline
ModuleIcon ModuleOutline
Moon MoonOutline
MoreVertical MoreVerticalOutline
PriorityPropertyIcon PriorityOutline
ProjectIcon ProjectsOutline
SearchIcon SearchOutline
Eye ShowOutline
SidePanelIcon SidePeekOutline
StatePropertyIcon StateOutline
CircleCheck TickCircleOutline
CheckIcon TickOutline
ArrowUp TopArrowOutline
ViewsIcon ViewsOutline
CircleAlert WarningCircleOutline

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

  • Sign-in flow: email clear, password show/hide and unique-code icons render in placeholder grey.
  • Issue filters, applied-filter chips, and the filter search clear button.
  • Issue layouts: cycle, module, due-date, label and member property icons; kanban sub-group chevrons stay centred.
  • Peek overview header, comment confirm/cancel, navbar theme toggle and sign-out.
  • Cycle status and priority icons are unchanged (still the legacy components).

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

Summary by CodeRabbit

  • Style
    • Updated icons across authentication forms, issue filters, layouts, properties, navigation, peek views, and reactions for a more consistent outline style.
    • Refined theme, visibility, status, date, link, attachment, and navigation icons throughout the interface.
    • Preserved existing interactions, including filtering, editing, panel controls, sign-out, and voting.

Replace confirmed icon symbols in apps/space with their audited
@makeplane/propel/icons targets. Unresolved symbols (StateGroupIcon,
PriorityIcon, PlaneLockup, PlaneLogo, Circle, CircleDashed, SignalHigh)
stay on their existing imports.

Propel icons paint with fill rather than stroke, so stroke-placeholder
classes become text-placeholder to preserve the rendered color. Lucide
size props become explicit width/height, and one chevron gains an
explicit height because Propel defaults to 1em where the legacy
IconWrapper defaulted to 16.

CycleGroupIcon is deliberately not migrated: it dispatches a different
glyph and color per cycle status, which CyclesOutline cannot express.
Copilot AI lite review requested due to automatic review settings September 1, 2026 13:28
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit efb433d.

@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: 6db5d865-9ccf-4e78-858d-d20ea8eccef1

📥 Commits

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

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • apps/space/components/account/auth-forms/auth-banner.tsx
  • apps/space/components/account/auth-forms/email.tsx
  • apps/space/components/account/auth-forms/password.tsx
  • apps/space/components/account/auth-forms/unique-code.tsx
  • apps/space/components/issues/filters/applied-filters/filters-list.tsx
  • apps/space/components/issues/filters/applied-filters/label.tsx
  • apps/space/components/issues/filters/applied-filters/priority.tsx
  • apps/space/components/issues/filters/applied-filters/state.tsx
  • apps/space/components/issues/filters/helpers/filter-header.tsx
  • apps/space/components/issues/filters/helpers/filter-option.tsx
  • apps/space/components/issues/filters/selection.tsx
  • apps/space/components/issues/issue-layouts/kanban/headers/sub-group-by-card.tsx
  • apps/space/components/issues/issue-layouts/properties/all-properties.tsx
  • apps/space/components/issues/issue-layouts/properties/cycle.tsx
  • apps/space/components/issues/issue-layouts/properties/due-date.tsx
  • apps/space/components/issues/issue-layouts/properties/labels.tsx
  • apps/space/components/issues/issue-layouts/properties/member.tsx
  • apps/space/components/issues/issue-layouts/properties/modules.tsx
  • apps/space/components/issues/issue-layouts/utils.tsx
  • apps/space/components/issues/navbar/layout-icon.tsx
  • apps/space/components/issues/navbar/root.tsx
  • apps/space/components/issues/navbar/theme.tsx
  • apps/space/components/issues/navbar/user-avatar.tsx
  • apps/space/components/issues/peek-overview/comment/comment-detail-card.tsx
  • apps/space/components/issues/peek-overview/header.tsx
  • apps/space/components/issues/peek-overview/issue-activity.tsx
  • apps/space/components/issues/peek-overview/issue-properties.tsx
  • apps/space/components/issues/reactions/issue-vote-reactions.tsx
  • apps/space/package.json

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The space app adds @makeplane/propel and replaces Lucide and legacy Propel icons with outline icons across authentication forms, issue filters, layouts, navigation, peek overviews, and vote reactions.

Changes

Propel icon migration

Layer / File(s) Summary
Dependency and authentication icons
apps/space/package.json, apps/space/components/account/auth-forms/*
Adds @makeplane/propel and updates authentication banner, email, password, and unique-code icons.
Issue filter icons
apps/space/components/issues/filters/*
Updates filter removal, navigation, selection, search, and checked-state icons.
Issue layout and property icons
apps/space/components/issues/issue-layouts/*
Updates Kanban group controls, issue properties, and cycle/module utility icons.
Issues navbar icons
apps/space/components/issues/navbar/*
Updates layout, project, theme, and sign-out icons.
Peek overview and reaction icons
apps/space/components/issues/peek-overview/*, apps/space/components/issues/reactions/*
Updates comment, peek-mode, activity, property, and vote reaction icons.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to efb43

This PR updates Space icons and their visual sizing and color presentation without changing application behavior, data, permissions, or deployment. No actionable merge-blocking risk remains beyond normal checks and review.

Suggested reviewers: sriramveeraghanta

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 28 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the primary change: migrating Space icons to @makeplane/propel.
Description check ✅ Passed The description is complete and relevant. It explains the migration, icon mappings, styling changes, exclusions, change type, test scenarios, and references.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 28 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/space-icons-to-makeplane-icons

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.

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

Migrates apps/space UI icon usage from Lucide / @plane/propel/icons to @makeplane/propel/icons for the audit-confirmed symbol set, aligning Space with the ongoing Propel icon standardization while keeping unresolved/legacy icon components on their existing imports.

Changes:

  • Added @makeplane/propel as an apps/space dependency (and updated lockfile).
  • Replaced icon imports/usages across 28 Space components to @makeplane/propel/icons, including converting Lucide size usage to explicit width/height where needed.
  • Updated placeholder color classes for fill-painted icons (stroke-placeholdertext-placeholder) where applicable.

Reviewed changes

Copilot reviewed 29 out of 30 changed files in this pull request and generated no comments.

Show a summary per file
File Description
pnpm-lock.yaml Locks @makeplane/propel dependency resolution for the workspace.
apps/space/package.json Adds @makeplane/propel dependency for Space app icon usage.
apps/space/components/issues/reactions/issue-vote-reactions.tsx Migrates vote arrow icons to @makeplane/propel/icons.
apps/space/components/issues/peek-overview/issue-properties.tsx Migrates property header icons (state/priority/due date/link) to @makeplane/propel/icons, keeps legacy state/priority components where needed.
apps/space/components/issues/peek-overview/issue-activity.tsx Migrates lock icon to @makeplane/propel/icons.
apps/space/components/issues/peek-overview/header.tsx Migrates peek-mode and link icons to @makeplane/propel/icons.
apps/space/components/issues/peek-overview/comment/comment-detail-card.tsx Migrates comment/chat/edit action icons to @makeplane/propel/icons.
apps/space/components/issues/navbar/user-avatar.tsx Migrates sign-out icon and replaces Lucide size with width/height.
apps/space/components/issues/navbar/theme.tsx Migrates theme toggle icons to @makeplane/propel/icons.
apps/space/components/issues/navbar/root.tsx Migrates project icon to @makeplane/propel/icons.
apps/space/components/issues/navbar/layout-icon.tsx Migrates layout icons to @makeplane/propel/icons while preserving ISvgIcons-based props shape.
apps/space/components/issues/issue-layouts/utils.tsx Migrates cycle/module group “None” icons to @makeplane/propel/icons while keeping dynamic cycle/status icons on legacy components.
apps/space/components/issues/issue-layouts/properties/modules.tsx Migrates module icon to @makeplane/propel/icons.
apps/space/components/issues/issue-layouts/properties/member.tsx Migrates members fallback icon to @makeplane/propel/icons.
apps/space/components/issues/issue-layouts/properties/labels.tsx Migrates label property icon to @makeplane/propel/icons.
apps/space/components/issues/issue-layouts/properties/due-date.tsx Migrates due date icon to @makeplane/propel/icons.
apps/space/components/issues/issue-layouts/properties/cycle.tsx Migrates cycle icon to @makeplane/propel/icons.
apps/space/components/issues/issue-layouts/properties/all-properties.tsx Migrates attachments/links/sub-issues icons to @makeplane/propel/icons.
apps/space/components/issues/issue-layouts/kanban/headers/sub-group-by-card.tsx Migrates kanban subgroup chevrons to @makeplane/propel/icons.
apps/space/components/issues/filters/selection.tsx Migrates filter search/clear icons to @makeplane/propel/icons.
apps/space/components/issues/filters/helpers/filter-option.tsx Migrates checked indicator icon to @makeplane/propel/icons.
apps/space/components/issues/filters/helpers/filter-header.tsx Migrates filter section chevrons to @makeplane/propel/icons.
apps/space/components/issues/filters/applied-filters/state.tsx Migrates applied-filter remove icon to @makeplane/propel/icons (keeps state glyph legacy).
apps/space/components/issues/filters/applied-filters/priority.tsx Migrates applied-filter remove icon to @makeplane/propel/icons (keeps priority glyph legacy).
apps/space/components/issues/filters/applied-filters/label.tsx Migrates applied-filter remove icon to @makeplane/propel/icons.
apps/space/components/issues/filters/applied-filters/filters-list.tsx Migrates “clear” icons to @makeplane/propel/icons.
apps/space/components/account/auth-forms/unique-code.tsx Migrates email clear + success icons and updates placeholder coloring for fill icons.
apps/space/components/account/auth-forms/password.tsx Migrates email clear + show/hide icons and updates placeholder coloring for fill icons.
apps/space/components/account/auth-forms/email.tsx Migrates clear + warning icons and updates placeholder coloring for fill icons.
apps/space/components/account/auth-forms/auth-banner.tsx Migrates info/close icons to @makeplane/propel/icons.
Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

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

} ${multiple ? "rounded-xs" : "rounded-full"}`}
>
{isChecked && <CheckIcon width={10} height={10} strokeWidth={3} />}
{isChecked && <TickOutline width={10} height={10} strokeWidth={3} />}

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.

strokeWidth is a no-op on @makeplane/propel/icons. These glyphs paint with fill="currentColor", not stroke — the prop lands on <svg> and never changes weight.

Here it used to matter: Lucide CheckIcon at 10px with strokeWidth={3} was intentionally fat. After the swap the tick is whatever optical weight is baked into the fill path, scaled from a 16 viewBox. Drop the prop so we do not pretend it still controls that.

Same leftover on:

  • filters/applied-filters/filters-list.tsx
  • filters/applied-filters/label.tsx
  • filters/applied-filters/priority.tsx
  • filters/applied-filters/state.tsx
  • filters/selection.tsx
  • issue-layouts/kanban/headers/sub-group-by-card.tsx
  • issue-layouts/properties/all-properties.tsx
  • issue-layouts/properties/labels.tsx
  • peek-overview/comment/comment-detail-card.tsx

Strip strokeWidth from every @makeplane/propel/icons usage in this PR. Worth a glance at the 10×10 filter tick and chip X after — those were the sizes that relied on stroke weight.

{showPassword?.password ? (
<EyeOff
className="absolute right-3 h-5 w-5 stroke-placeholder hover:cursor-pointer"
<HideOutline

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 icons bake aria-hidden="true" on the <svg>. Putting onClick on HideOutline / ShowOutline / CloseCircleOutline makes a control that mouse users can click and assistive tech skips: no button, no name, not in the tab order.

email.tsx in this PR already wraps the clear icon in a <button>. Do the same here (and the matching CloseCircleOutline in unique-code.tsx):

<button
  type="button"
  aria-label="Show password"
  className="absolute right-3 ..."
  onClick={() => handleShowPassword("password")}
>
  <ShowOutline className="h-5 w-5 text-placeholder" />
</button>

Keep aria-hidden on the SVG (decorative). Put the label + onClick on the button. Same for hide, confirm-password toggle, and both email-clear icons.

@anmolsinghbhatia
anmolsinghbhatia marked this pull request as draft September 1, 2026 14:33
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