== Background
This task is a blocker for adopting Codex icons T363920.
Codex CSS only icons as they are currently implemented require an additional `cdx-button__icon` class on the icon when it is inside a button. This means that when providing template data for icons, we need to include extra information on whether or not the icon is being used inside a button or not (as well as icon size). This is a problem for Vector due to our menu architecture, which treats icons generically regardless of how they are used.
In order to handle this extra data inside our menu architecture and templating, we need to migrate all of our menus to the component system, and properly build out an Icon component. Currently many menus with icons still being modified in Hooks.php, and the menu code inside the component system is mostly hardcoded.
== User story
As a user I want expected icon styles and colors in both night and dark mode
== Requirements
- Menu code is removed from Hooks.php, all menus are using the component system
- VectorComponentLink is used
- VectorComponentIcon is introduced
== Design
no design changes
== Communication criteria - does this need an announcement or discussion?
none