[Repository] Use icon variants instead of styling icons as text

Problem to solve

Icons are using .gl-text-subtle, but should use an icon color class (.gl-icon-color-*), and when possible, match the link text color/purpose.

Screenshots

CleanShot_2025-01-09_at_15.31.06_2x

Proposal

Use gl-icon-color-* classes.

Implementation guide

Switch from gl-text-* to gl-icon-color-* in app/assets/javascripts/repository/components/table/row.vue and app/presenters/project_presenter.rb:

diff --git a/app/assets/javascripts/repository/components/table/row.vue b/app/assets/javascripts/repository/components/table/row.vue
index 6a4dfbf8262b..a33be18ad97e 100644
--- a/app/assets/javascripts/repository/components/table/row.vue
+++ b/app/assets/javascripts/repository/components/table/row.vue
@@ -229,8 +229,8 @@ export default {
           :folder="isFolder"
           :submodule="isSubmodule"
           :loading="path === loadingPath"
-          css-classes="gl-relative file-icon"
-          class="gl-relative gl-mr-2 gl-text-secondary"
+          :class="['gl-relative file-icon', isFolder ? 'gl-icon-color-subtle' : '']"
+          class="gl-relative gl-mr-2"
         /><gl-truncate
           :text="fullPath"
           position="end"
diff --git a/app/presenters/project_presenter.rb b/app/presenters/project_presenter.rb
index a89cb2e1071e..fca047067015 100644
--- a/app/presenters/project_presenter.rb
+++ b/app/presenters/project_presenter.rb
@@ -23,7 +23,7 @@ class ProjectPresenter < Gitlab::View::Presenter::Delegated
   MAX_TOPICS_TO_SHOW = 3
 
   def statistic_default_class_list
-    'icon gl-mr-3 gl-text-subtle'
+    'icon gl-mr-3 gl-icon-color-subtle'
   end
 
   def statistic_icon(icon_name = 'plus', class_list = statistic_default_class_list)
Edited by Marcel van Remmerden