Easy Icons to DS Icons Migration Checklist
Migration Prompt
Use this workflow for every migration batch:
- Find the
EasyIcon,EasyIconButton, wrapper, or dynamic icon usages listed in the relevant batch. - Create a branch named exactly as the checklist item, or switch to it if it already exists.
- Replace only the old icon-system usage in that batch, preserving the exact behavior and visual appearance.
- Do not expand the batch to unrelated call-sites just because they render the same concrete icon name. Change neighboring code only when it is required to migrate the listed old icon-system usage.
- If the migration requires wrapper, prop, adapter, GraphQL, or other API changes, include only the minimal supporting changes needed for that old icon-system migration.
- When a batch targets
EasyIcon, do not migrate plainDSIcon, raw.icon-*, or other non-EasyIconrenderers in the same branch unless they are a direct dependency of theEasyIconremoval. - Keep the end goal in mind: fully remove
EASYICONSand all remaining dependencies on the old icon system.
Status
Done
- [x]
feature/686058_migrate_info_icon_to_dsicon - mapping:
info -> c-info - type:
direct+local component change -
status: done
-
[x]
feature/686058_migrate_file_icon_to_dsicon - mapping:
file -> file - type:
direct -
status: done
-
[x]
feature/686058_migrate_calendar_icon_to_dsicon - mapping:
calendar -> calendar - type:
local component change -
status: done
-
[x]
feature/686058_migrate_assistant_content_icons_to_dsicon - mapping:
chat -> a-chat,email -> email,eye -> eye,link -> link,send -> send,user + add -> user-add - type:
local component change -
status: done
-
[x]
feature/686058_migrate_feedback_icons_to_dsicon - mapping:
briefcase -> briefcase-24,warning -> warning-sign,error -> o-warning,check -> check - type:
local component change -
status: done
-
[x]
feature/686058_migrate_direct_easyicon_to_dsicon - mapping:
check,link,circleAdd -> c-add,add -> e-add,plus -> i-add,minus -> i-delete,unfold -> enlarge - type:
direct+local component change -
status: done
-
[x]
feature/686058_migrate_dynamic_expand_icons_to_dsicon - branch:
feature/686058_migrate_direct_easyicon_to_dsicon - expressions:
props.expandIcon,expandIcon(panel.id), ternary expand/collapse,valueIcon - type:
local component change -
status: done
-
[x]
feature/686058_migrate_dynamic_emoji_icons_to_dsicon - branch:
feature/686058_migrate_direct_easyicon_to_dsicon - expressions: emoji hover toggles
- type:
local component change -
status: done
-
[x]
feature/686058_migrate_easyicon_local_components_to_dsicon - mapping:
copy -> copy-2,refresh -> refresh-02,warning -> warning-sign,briefcase -> briefcase-24,squareAdd -> s-add,minus -> i-delete - type:
local component change+shared wrapper consumer cleanup -
status: done
-
[x]
feature/686058_migrate_easyiconbutton_wave1_to_dsicon - mapping:
squareAdd -> s-add,addTask -> add-task,boxArrowTopRight -> box-arrow-top-right,next -> arrow-right,delete -> i-delete,arrowUp -> arrow-up,arrowDown -> arrow-down,expand-more -> chevron-down,expand-less -> chevron-top - type:
EasyIconButtonwrapper migration +EasyListdirect migration + first wave of action buttons -
status: done
-
[x]
feature/686058_migrate_remaining_easyiconbutton_consumers_to_dsicon - mapping:
close -> e-remove,more -> dots,settings -> setup-preferences,question -> c-question,upload -> data-upload,loading -> reload,table-column-plus-before -> column,view-list -> list,card-text-outline -> cards,copy -> copy-2,menu -> menu-8,plus -> i-add,edit -> pen,delete -> i-delete - note:
favorite,filter,unlink,pin, and other already-DS values remain onEasyIconButtononly as wrapper consumers; no fallback-specific cleanup is included in this branch - type:
EasyIconButtonwrapper consumer cleanup - status: done
Remaining
Wrappers And Infra
- [ ]
feature/686058_migrate_shared_easyicon_wrappers_to_dsicon - remaining scope:
EasyExpansionPanelsicon bridge cleanup -
note:
EasyAlert,EasyConfirm, andEasyNotificationalready renderDSIcon -
[ ]
feature/686058_migrate_easyiconbutton_wrapper_fallback_to_dsicon -
remaining scope: remove the legacy
<i class="icon ...">fallback fromEasyIconButtonafter all wrapper callers are migrated -
[ ]
feature/686058_migrate_global_icon_adapter_to_dsicon - remaining scope:
easy-ui/plugins/easyIconset.tsand any remaining shared icon plumbing that still rendersEasyIcon
Confirmed Safe Mappings
add -> e-addaddTask -> add-taskarrowDown -> arrow-downarrowUp -> arrow-upboxArrowTopRight -> box-arrow-top-rightbriefcase -> briefcase-24calendar -> calendarchat -> a-chatcircleAdd -> c-addcopy -> copy-2delete -> i-deleteedit -> penfavorite -> favoritefilter -> filterloading -> reloadmenu -> menu-8more -> dotsclose -> e-removeemail -> emailexpand-less -> chevron-topexpand-more -> chevron-downeye -> eyefile -> fileinfo -> c-infolink -> linkminus -> i-deletenext -> arrow-rightplus -> i-addquestion -> c-questionrefresh -> refresh-02settings -> setup-preferencessquareAdd -> s-addtable-column-plus-before -> columnunfold -> enlargeunlink -> unlinkupload -> data-uploadview-list -> listcard-text-outline -> cardswarning -> warning-sign
Current Remaining Inventory
Direct EasyIcon Usages
app/frontend/src/easy-icons/components/easy_icon_set/EasyIconSetIcons.vue
Shared Wrappers Still To Migrate Fully
app/frontend/src/easy-ui/components/EasyExpansionPanels.vueapp/frontend/src/easy-ui/components/EasyIconButton.vue
Dynamic / Non-template Refs
app/frontend/src/easy-ui/plugins/easyIconset.ts
Internal / Showcase
app/frontend/src/easy-icons/components/easy_icon_set/EasyIconSetCodeExample.vueapp/frontend/src/easy-icons/components/easy_icon_set/EasyIconSetIcons.vue
Notes On Current Branch State
feature/686058_migrate_direct_easyicon_to_dsicon,feature/686058_migrate_easyiconbutton_wave1_to_dsicon, andfeature/686058_migrate_remaining_easyiconbutton_consumers_to_dsiconare treated as done in the current branch state.EasyIconButtonwrapper consumers were normalized to DS icon names in this branch; remaining work is now infrastructure cleanup, not consumer migration.EasyAlert,EasyConfirm, andEasyNotificationalready renderDSIcon; they are no longer part of the remaining inventory.ProjectComponentStateIconno longer usesEasyIcon, but its waiting state still renders a legacy raw loading icon outside the remainingEasyIconmigration scope.- Remaining work is concentrated in
EasyIconSetIcons.vue,easyIconset.ts,EasyExpansionPanels.vue, and the finalEasyIconButtonfallback cleanup.