From 2083b2bd2cb634f1c6ec76635bc4c598c9ae0ee1 Mon Sep 17 00:00:00 2001 From: kolaente Date: Thu, 19 Feb 2026 15:10:24 +0100 Subject: [PATCH] feat: migrate task, project, and input components from FontAwesome to Phosphor Icons --- .../src/components/input/DatepickerInline.vue | 13 +++-- frontend/src/components/input/Multiselect.vue | 3 +- frontend/src/components/input/Password.vue | 3 +- frontend/src/components/input/Reactions.vue | 3 +- .../project/ProjectSettingsDropdown.vue | 58 +++++++++++++------ .../project/partials/FilterPopup.vue | 5 +- .../project/partials/ProjectCard.vue | 5 +- .../project/views/ProjectKanban.vue | 41 +++++++++---- .../components/project/views/ProjectTable.vue | 5 +- .../components/project/views/ViewEditForm.vue | 7 ++- frontend/src/components/tasks/AddTask.vue | 7 ++- frontend/src/components/tasks/TaskForm.vue | 5 +- 12 files changed, 110 insertions(+), 45 deletions(-) diff --git a/frontend/src/components/input/DatepickerInline.vue b/frontend/src/components/input/DatepickerInline.vue index de6503833..275294a78 100644 --- a/frontend/src/components/input/DatepickerInline.vue +++ b/frontend/src/components/input/DatepickerInline.vue @@ -4,7 +4,7 @@ class="datepicker__quick-select-date" @click.stop="setDate('today')" > - + {{ $t('input.datepicker.today') }} {{ getWeekdayFromStringInterval('today') }} @@ -14,7 +14,7 @@ class="datepicker__quick-select-date" @click.stop="setDate('tomorrow')" > - + {{ $t('input.datepicker.tomorrow') }} {{ getWeekdayFromStringInterval('tomorrow') }} @@ -24,7 +24,7 @@ class="datepicker__quick-select-date" @click.stop="setDate('nextMonday')" > - + {{ $t('input.datepicker.nextMonday') }} {{ getWeekdayFromStringInterval('nextMonday') }} @@ -35,7 +35,7 @@ class="datepicker__quick-select-date" @click.stop="setDate('thisWeekend')" > - + {{ $t('input.datepicker.thisWeekend') }} {{ getWeekdayFromStringInterval('thisWeekend') }} @@ -45,7 +45,7 @@ class="datepicker__quick-select-date" @click.stop="setDate('laterThisWeek')" > - + {{ $t('input.datepicker.laterThisWeek') }} {{ getWeekdayFromStringInterval('laterThisWeek') }} @@ -55,7 +55,7 @@ class="datepicker__quick-select-date" @click.stop="setDate('nextWeek')" > - + {{ $t('input.datepicker.nextWeek') }} {{ getWeekdayFromStringInterval('nextWeek') }} @@ -77,6 +77,7 @@ import flatPickr from 'vue-flatpickr-component' import 'flatpickr/dist/flatpickr.css' import BaseButton from '@/components/base/BaseButton.vue' +import {PhCalendarBlank, PhSun, PhCoffee, PhMartini, PhHorse, PhFastForward} from '@phosphor-icons/vue' import {formatDate} from '@/helpers/time/formatDate' import {calculateDayInterval} from '@/helpers/time/calculateDayInterval' diff --git a/frontend/src/components/input/Multiselect.vue b/frontend/src/components/input/Multiselect.vue index ec75b2a2c..ce2620b4f 100644 --- a/frontend/src/components/input/Multiselect.vue +++ b/frontend/src/components/input/Multiselect.vue @@ -62,7 +62,7 @@ class="removal-button" @click="resetSelectedValue" > - + @@ -134,6 +134,7 @@ import {closeWhenClickedOutside} from '@/helpers/closeWhenClickedOutside' import BaseButton from '@/components/base/BaseButton.vue' import CustomTransition from '@/components/misc/CustomTransition.vue' +import {PhX} from '@phosphor-icons/vue' const props = withDefaults(defineProps<{ /** The object with the value, updated every time an entry is selected */ diff --git a/frontend/src/components/input/Password.vue b/frontend/src/components/input/Password.vue index 8d7b6461d..833f9ffc9 100644 --- a/frontend/src/components/input/Password.vue +++ b/frontend/src/components/input/Password.vue @@ -20,7 +20,7 @@ :aria-label="passwordFieldType === 'password' ? $t('user.auth.showPassword') : $t('user.auth.hidePassword')" @click="togglePasswordFieldType" > - +

{{ $t('reaction.add') }} - + {{ $t('project.openSettingsMenu') }} - + @@ -21,21 +18,27 @@ @@ -43,51 +46,65 @@ @@ -140,6 +163,7 @@ import {useConfigStore} from '@/stores/config' import {useProjectStore} from '@/stores/projects' import {useAuthStore} from '@/stores/auth' import {PERMISSIONS} from '@/constants/permissions' +import {PhDotsThree, PhPen, PhEye, PhTrash, PhArchive, PhImage, PhShareNetwork, PhClipboard, PhLightning, PhStack} from '@phosphor-icons/vue' const props = withDefaults(defineProps<{ project: IProject diff --git a/frontend/src/components/project/partials/FilterPopup.vue b/frontend/src/components/project/partials/FilterPopup.vue index 22bd9173c..78e6a5517 100644 --- a/frontend/src/components/project/partials/FilterPopup.vue +++ b/frontend/src/components/project/partials/FilterPopup.vue @@ -1,10 +1,12 @@ @@ -57,6 +57,7 @@ import {computed} from 'vue' import type {IProject} from '@/modelTypes/IProject' import BaseButton from '@/components/base/BaseButton.vue' +import {PhFunnel, PhStar} from '@phosphor-icons/vue' import {useProjectBackground} from '@/composables/useProjectBackground' import {useProjectStore} from '@/stores/projects' diff --git a/frontend/src/components/project/views/ProjectKanban.vue b/frontend/src/components/project/views/ProjectKanban.vue index ae1d65182..51662ef96 100644 --- a/frontend/src/components/project/views/ProjectKanban.vue +++ b/frontend/src/components/project/views/ProjectKanban.vue @@ -50,7 +50,7 @@ class="icon is-small has-text-success mie-2" @click.stop="() => collapseBucket(bucket)" > - +

+
+ > + +
+ {{ $t('project.kanban.doneBucket') }} + {{ $t('project.kanban.defaultBucket') }} + {{ $t('project.kanban.collapse') }} + {{ $t('misc.delete') }} @@ -197,11 +212,13 @@ v-tooltip="bucket.limit > 0 && bucket.count >= bucket.limit ? $t('project.kanban.bucketLimitReached') : ''" class="is-fullwidth has-text-centered" :shadow="false" - icon="plus" variant="secondary" :disabled="bucket.limit > 0 && bucket.count >= bucket.limit" @click="toggleShowNewTaskInput(bucket.id)" > + {{ bucket.tasks.length === 0 ? $t('project.kanban.addTask') : $t('project.kanban.addAnotherTask') }} @@ -250,9 +267,11 @@ :shadow="false" class="is-transparent is-fullwidth has-text-centered" variant="secondary" - icon="plus" @click="() => showNewBucketInput = true" > + {{ $t('project.kanban.addBucket') }} @@ -300,8 +319,10 @@ import {useAuthStore} from '@/stores/auth' import ProjectWrapper from '@/components/project/ProjectWrapper.vue' import FilterPopup from '@/components/project/partials/FilterPopup.vue' import KanbanCard from '@/components/tasks/partials/KanbanCard.vue' +import BaseButton from '@/components/base/BaseButton.vue' import Dropdown from '@/components/misc/Dropdown.vue' import DropdownItem from '@/components/misc/DropdownItem.vue' +import {PhChecks, PhDotsThreeVertical, PhFloppyDisk, PhSquaresFour, PhCaretDoubleUp, PhTrash, PhPlus} from '@phosphor-icons/vue' import { type CollapsedBuckets, diff --git a/frontend/src/components/project/views/ProjectTable.vue b/frontend/src/components/project/views/ProjectTable.vue index 76c641a61..983064e1c 100644 --- a/frontend/src/components/project/views/ProjectTable.vue +++ b/frontend/src/components/project/views/ProjectTable.vue @@ -10,11 +10,13 @@ @@ -316,6 +318,7 @@ import Sort from '@/components/tasks/partials/Sort.vue' import FilterPopup from '@/components/project/partials/FilterPopup.vue' import Pagination from '@/components/misc/Pagination.vue' import Popup from '@/components/misc/Popup.vue' +import {PhSquaresFour} from '@phosphor-icons/vue' import type {SortBy} from '@/composables/useTaskList' import {useTaskList} from '@/composables/useTaskList' diff --git a/frontend/src/components/project/views/ViewEditForm.vue b/frontend/src/components/project/views/ViewEditForm.vue index 40e6c4993..caa966f3c 100644 --- a/frontend/src/components/project/views/ViewEditForm.vue +++ b/frontend/src/components/project/views/ViewEditForm.vue @@ -12,6 +12,7 @@ import XButton from '@/components/input/Button.vue' import FilterInputDocs from '@/components/input/filter/FilterInputDocs.vue' import FilterInput from '@/components/input/filter/FilterInput.vue' import FormField from '@/components/input/FormField.vue' +import {PhTrash, PhPlus} from '@phosphor-icons/vue' const props = withDefaults(defineProps<{ modelValue: IProjectView, @@ -225,7 +226,7 @@ function handleBubbleSave() { class="is-danger" @click.prevent="() => view.bucketConfiguration.splice(index, 1)" > - +
+ {{ $t('project.kanban.addBucket') }}
diff --git a/frontend/src/components/tasks/AddTask.vue b/frontend/src/components/tasks/AddTask.vue index 1ce0b1d3c..074b341b8 100644 --- a/frontend/src/components/tasks/AddTask.vue +++ b/frontend/src/components/tasks/AddTask.vue @@ -12,7 +12,7 @@ {{ $t('project.list.addPlaceholder') }} - +