Skip to content

Easy Icons to DS Icons Migration Checklist

Migration Prompt

Use this workflow for every migration batch:

  1. Find the EasyIcon, EasyIconButton, wrapper, or dynamic icon usages listed in the relevant batch.
  2. Create a branch named exactly as the checklist item, or switch to it if it already exists.
  3. Replace only the old icon-system usage in that batch, preserving the exact behavior and visual appearance.
  4. 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.
  5. 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.
  6. When a batch targets EasyIcon, do not migrate plain DSIcon, raw .icon-*, or other non-EasyIcon renderers in the same branch unless they are a direct dependency of the EasyIcon removal.
  7. Keep the end goal in mind: fully remove EASYICONS and 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: EasyIconButton wrapper migration + EasyList direct 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 on EasyIconButton only as wrapper consumers; no fallback-specific cleanup is included in this branch
  • type: EasyIconButton wrapper consumer cleanup
  • status: done

Remaining

Wrappers And Infra

  • [ ] feature/686058_migrate_shared_easyicon_wrappers_to_dsicon
  • remaining scope: EasyExpansionPanels icon bridge cleanup
  • note: EasyAlert, EasyConfirm, and EasyNotification already render DSIcon

  • [ ] feature/686058_migrate_easyiconbutton_wrapper_fallback_to_dsicon

  • remaining scope: remove the legacy <i class="icon ..."> fallback from EasyIconButton after all wrapper callers are migrated

  • [ ] feature/686058_migrate_global_icon_adapter_to_dsicon

  • remaining scope: easy-ui/plugins/easyIconset.ts and any remaining shared icon plumbing that still renders EasyIcon

Confirmed Safe Mappings

  • add -> e-add
  • addTask -> add-task
  • arrowDown -> arrow-down
  • arrowUp -> arrow-up
  • boxArrowTopRight -> box-arrow-top-right
  • briefcase -> briefcase-24
  • calendar -> calendar
  • chat -> a-chat
  • circleAdd -> c-add
  • copy -> copy-2
  • delete -> i-delete
  • edit -> pen
  • favorite -> favorite
  • filter -> filter
  • loading -> reload
  • menu -> menu-8
  • more -> dots
  • close -> e-remove
  • email -> email
  • expand-less -> chevron-top
  • expand-more -> chevron-down
  • eye -> eye
  • file -> file
  • info -> c-info
  • link -> link
  • minus -> i-delete
  • next -> arrow-right
  • plus -> i-add
  • question -> c-question
  • refresh -> refresh-02
  • settings -> setup-preferences
  • squareAdd -> s-add
  • table-column-plus-before -> column
  • unfold -> enlarge
  • unlink -> unlink
  • upload -> data-upload
  • view-list -> list
  • card-text-outline -> cards
  • warning -> 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.vue
  • app/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.vue
  • app/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, and feature/686058_migrate_remaining_easyiconbutton_consumers_to_dsicon are treated as done in the current branch state.
  • EasyIconButton wrapper consumers were normalized to DS icon names in this branch; remaining work is now infrastructure cleanup, not consumer migration.
  • EasyAlert, EasyConfirm, and EasyNotification already render DSIcon; they are no longer part of the remaining inventory.
  • ProjectComponentStateIcon no longer uses EasyIcon, but its waiting state still renders a legacy raw loading icon outside the remaining EasyIcon migration scope.
  • Remaining work is concentrated in EasyIconSetIcons.vue, easyIconset.ts, EasyExpansionPanels.vue, and the final EasyIconButton fallback cleanup.