From 75100df67476272e4142673f2cc94ccbe74ca1dc Mon Sep 17 00:00:00 2001 From: kolaente Date: Thu, 19 Feb 2026 15:10:33 +0100 Subject: [PATCH] feat: migrate view pages from FontAwesome to Phosphor Icons --- frontend/src/views/filters/FilterEdit.vue | 2 +- frontend/src/views/labels/ListLabels.vue | 14 ++-- frontend/src/views/project/ListProjects.vue | 8 +- .../settings/ProjectSettingsDuplicate.vue | 3 +- .../project/settings/ProjectSettingsEdit.vue | 2 +- .../project/settings/ProjectSettingsViews.vue | 13 ++-- .../settings/ProjectSettingsWebhooks.vue | 10 ++- frontend/src/views/tasks/ShowTasks.vue | 4 +- frontend/src/views/tasks/TaskDetailView.vue | 76 ++++++++++--------- frontend/src/views/teams/EditTeam.vue | 18 +++-- frontend/src/views/teams/ListTeams.vue | 4 +- frontend/src/views/user/Settings.vue | 5 +- .../src/views/user/settings/ApiTokens.vue | 3 +- frontend/src/views/user/settings/Caldav.vue | 8 +- 14 files changed, 97 insertions(+), 73 deletions(-) diff --git a/frontend/src/views/filters/FilterEdit.vue b/frontend/src/views/filters/FilterEdit.vue index 60eb83039..a0f9fe20c 100644 --- a/frontend/src/views/filters/FilterEdit.vue +++ b/frontend/src/views/filters/FilterEdit.vue @@ -2,7 +2,7 @@ + {{ $t('label.create.header') }} @@ -42,10 +43,7 @@ class="label-edit-button is-small" @click.stop.prevent="editLabel(label)" > - + @@ -87,10 +85,11 @@
+ > + +
@@ -122,6 +121,7 @@ import {computed, nextTick, ref} from 'vue' import {useI18n} from 'vue-i18n' import BaseButton from '@/components/base/BaseButton.vue' +import {PhPencilSimple, PhPlus, PhTrash} from '@phosphor-icons/vue' import Editor from '@/components/input/AsyncEditor' import ColorPicker from '@/components/input/ColorPicker.vue' import FormField from '@/components/input/FormField.vue' diff --git a/frontend/src/views/project/ListProjects.vue b/frontend/src/views/project/ListProjects.vue index 2a2192537..2e0a6054f 100644 --- a/frontend/src/views/project/ListProjects.vue +++ b/frontend/src/views/project/ListProjects.vue @@ -15,15 +15,17 @@
+ {{ $t('filters.create.title') }} + {{ $t('project.create.header') }}
@@ -41,6 +43,8 @@ import {computed} from 'vue' import {useI18n} from 'vue-i18n' import FancyCheckbox from '@/components/input/FancyCheckbox.vue' + +import {PhFunnel, PhPlus} from '@phosphor-icons/vue' import ProjectCardGrid from '@/components/project/partials/ProjectCardGrid.vue' import {useTitle} from '@/composables/useTitle' diff --git a/frontend/src/views/project/settings/ProjectSettingsDuplicate.vue b/frontend/src/views/project/settings/ProjectSettingsDuplicate.vue index 764a44803..7f832df2c 100644 --- a/frontend/src/views/project/settings/ProjectSettingsDuplicate.vue +++ b/frontend/src/views/project/settings/ProjectSettingsDuplicate.vue @@ -2,10 +2,10 @@ +

{{ $t('project.duplicate.text') }}

@@ -17,6 +17,7 @@ import {useRoute} from 'vue-router' import {useI18n} from 'vue-i18n' import CreateEdit from '@/components/misc/CreateEdit.vue' +import {PhClipboard} from '@phosphor-icons/vue' import ProjectSearch from '@/components/tasks/partials/ProjectSearch.vue' import {success} from '@/message' diff --git a/frontend/src/views/project/settings/ProjectSettingsEdit.vue b/frontend/src/views/project/settings/ProjectSettingsEdit.vue index 41e65a830..e814f6a81 100644 --- a/frontend/src/views/project/settings/ProjectSettingsEdit.vue +++ b/frontend/src/views/project/settings/ProjectSettingsEdit.vue @@ -2,7 +2,7 @@ + > + + + > + + - + diff --git a/frontend/src/views/project/settings/ProjectSettingsWebhooks.vue b/frontend/src/views/project/settings/ProjectSettingsWebhooks.vue index 6e5def93a..ad2ab0c38 100644 --- a/frontend/src/views/project/settings/ProjectSettingsWebhooks.vue +++ b/frontend/src/views/project/settings/ProjectSettingsWebhooks.vue @@ -9,6 +9,7 @@ import ProjectModel from '@/models/project' import type {IProject} from '@/modelTypes/IProject' import CreateEdit from '@/components/misc/CreateEdit.vue' +import {PhPlus, PhTrash} from '@phosphor-icons/vue' import {useBaseStore} from '@/stores/base' import type {IWebhook} from '@/modelTypes/IWebhook' @@ -128,10 +129,10 @@ function validateSelectedEvents() { > + {{ $t('project.webhooks.create') }} @@ -239,9 +240,9 @@ function validateSelectedEvents() {

+ {{ $t('project.webhooks.create') }} @@ -277,9 +278,10 @@ function validateSelectedEvents() { + > + + diff --git a/frontend/src/views/tasks/ShowTasks.vue b/frontend/src/views/tasks/ShowTasks.vue index 4ca0c80a8..051dfec69 100644 --- a/frontend/src/views/tasks/ShowTasks.vue +++ b/frontend/src/views/tasks/ShowTasks.vue @@ -28,7 +28,7 @@ class="clear-filter-button" @click="clearLabelFilter" > - +

- + {{ $t('task.detail.back') }}

- + {{ $t('task.attributes.assignees') }}
- + {{ $t('task.attributes.priority') }}
- + {{ $t('task.attributes.dueDate') }}
@@ -137,7 +137,7 @@ @click="() => {task.dueDate = null;saveTask()}" > - +
@@ -153,7 +153,7 @@ >
- + {{ $t('task.attributes.percentDone') }}
- + {{ $t('task.attributes.startDate') }}
@@ -191,7 +191,7 @@ @click="() => {task.startDate = null;saveTask()}" > - +
@@ -207,7 +207,7 @@ >
- + {{ $t('task.attributes.endDate') }}
@@ -224,7 +224,7 @@ @click="() => {task.endDate = null;saveTask()}" > - +
@@ -240,7 +240,7 @@ >
- + {{ $t('task.attributes.reminders') }}
- + {{ $t('task.attributes.repeat') }}
- +
@@ -293,7 +293,7 @@ >
- + {{ $t('task.attributes.color') }}
- + {{ $t('task.attributes.labels') }}
@@ -365,7 +365,7 @@ >

- + {{ $t('task.attributes.relatedTasks') }}

@@ -386,7 +386,7 @@ >

- + {{ $t('task.detail.move') }}

@@ -426,10 +426,10 @@ v-shortcut="'t'" :class="{'is-pending': !task.done}" class="button--mark-done" - icon="check-double" variant="secondary" @click="toggleTaskDone()" > + {{ task.done ? $t('task.detail.undone') : $t('task.detail.done') }} + {{ task.isFavorite ? $t('task.detail.actions.unfavorite') : $t('task.detail.actions.favorite') }} @@ -454,33 +454,32 @@ + {{ $t('task.detail.actions.label') }} + {{ $t('task.detail.actions.priority') }} + {{ $t('task.detail.actions.percentDone') }} + {{ $t('task.detail.actions.color') }} @@ -490,33 +489,33 @@ v-shortcut="'a'" v-cy="'taskDetail.assign'" variant="secondary" - icon="users" @click="setFieldActive('assignees')" > + {{ $t('task.detail.actions.assign') }} + {{ $t('task.detail.actions.attachments') }} + {{ $t('task.detail.actions.relatedTasks') }} + {{ $t('task.detail.actions.moveProject') }} @@ -525,47 +524,47 @@ + {{ $t('task.detail.actions.dueDate') }} + {{ $t('task.detail.actions.startDate') }} + {{ $t('task.detail.actions.endDate') }} + {{ $t('task.detail.actions.reminders') }} + {{ $t('task.detail.actions.repeatAfter') }} + {{ $t('task.detail.actions.delete') }} @@ -588,7 +587,7 @@ :aria-label="$t('task.detail.scrollToBottom')" @click="scrollToBottom" > - + + > + + @@ -95,9 +96,9 @@
+ {{ $t('team.edit.addUser') }}
@@ -130,13 +131,13 @@ @@ -157,9 +158,10 @@ v-if="m.id !== userInfo.id" :loading="teamMemberService.loading" danger - icon="trash-alt" @click="() => {memberToDelete = m; showUserDeleteModal = true}" - /> + > + + @@ -236,6 +238,8 @@ import {useI18n} from 'vue-i18n' import {useRoute, useRouter} from 'vue-router' import Editor from '@/components/input/AsyncEditor' + +import {PhLock, PhPlus, PhTrash, PhUser} from '@phosphor-icons/vue' import FancyCheckbox from '@/components/input/FancyCheckbox.vue' import FormField from '@/components/input/FormField.vue' import Multiselect from '@/components/input/Multiselect.vue' diff --git a/frontend/src/views/teams/ListTeams.vue b/frontend/src/views/teams/ListTeams.vue index e4b1ee8b5..f2c81e757 100644 --- a/frontend/src/views/teams/ListTeams.vue +++ b/frontend/src/views/teams/ListTeams.vue @@ -6,8 +6,9 @@ + {{ $t('team.create.title') }} @@ -44,6 +45,7 @@ import {ref, shallowReactive} from 'vue' import { useI18n } from 'vue-i18n' import TeamService from '@/services/team' +import {PhPlus} from '@phosphor-icons/vue' import { useTitle } from '@/composables/useTitle' const { t } = useI18n({useScope: 'global'}) diff --git a/frontend/src/views/user/Settings.vue b/frontend/src/views/user/Settings.vue index 7f6870aaf..d24f41454 100644 --- a/frontend/src/views/user/Settings.vue +++ b/frontend/src/views/user/Settings.vue @@ -27,9 +27,7 @@ {{ text }} - + @@ -51,6 +49,7 @@ import { useAuthStore } from '@/stores/auth' import {useRoute} from 'vue-router' import BaseButton from '@/components/base/BaseButton.vue' +import {PhArrowSquareOut} from '@phosphor-icons/vue' const { t } = useI18n({useScope: 'global'}) useTitle(() => t('user.settings.title')) diff --git a/frontend/src/views/user/settings/ApiTokens.vue b/frontend/src/views/user/settings/ApiTokens.vue index 712ab8be2..0ae029410 100644 --- a/frontend/src/views/user/settings/ApiTokens.vue +++ b/frontend/src/views/user/settings/ApiTokens.vue @@ -6,6 +6,7 @@ import {parseScopesFromQuery} from '@/helpers/parseScopesFromQuery' import {useFlatpickrLanguage} from '@/helpers/useFlatpickrLanguage' import {formatDateSince, formatDisplayDate} from '@/helpers/time/formatDate' import XButton from '@/components/input/Button.vue' +import {PhPlus} from '@phosphor-icons/vue' import BaseButton from '@/components/base/BaseButton.vue' import ApiTokenModel from '@/models/apiTokenModel' import FancyCheckbox from '@/components/input/FancyCheckbox.vue' @@ -381,11 +382,11 @@ function toggleGroupPermissionsFromChild(group: string, checked: boolean) { + {{ $t('user.settings.apiTokens.createAToken') }} diff --git a/frontend/src/views/user/settings/Caldav.vue b/frontend/src/views/user/settings/Caldav.vue index bc79e6972..137a24bb4 100644 --- a/frontend/src/views/user/settings/Caldav.vue +++ b/frontend/src/views/user/settings/Caldav.vue @@ -15,9 +15,10 @@ + > + + @@ -75,11 +76,11 @@ + {{ $t('user.settings.caldav.createToken') }} @@ -103,6 +104,7 @@ import {useTitle} from '@/composables/useTitle' import {useCopyToClipboard} from '@/composables/useCopyToClipboard' import {success} from '@/message' import BaseButton from '@/components/base/BaseButton.vue' +import {PhClipboard, PhPlus} from '@phosphor-icons/vue' import Message from '@/components/misc/Message.vue' import FormField from '@/components/input/FormField.vue' import CaldavTokenService from '@/services/caldavToken'