chore: extract menu tree logic from MenuSource into a reusable MenuTreeSourceTrait

Closes #3614644

Merge request reports

Loading