diff --git a/front/src/components/album/Widget.vue b/front/src/components/album/Widget.vue
index 8431e4f11..bf1d87b81 100644
--- a/front/src/components/album/Widget.vue
+++ b/front/src/components/album/Widget.vue
@@ -9,6 +9,7 @@ import { useI18n } from 'vue-i18n'
import axios from 'axios'
import AlbumCard from '~/components/album/Card.vue'
+import Button from '~/components/ui/Button.vue'
import useErrorHandler from '~/composables/useErrorHandler'
@@ -111,13 +112,12 @@ watch(
-
+
diff --git a/front/src/components/artist/Widget.vue b/front/src/components/artist/Widget.vue
index d98856ff1..0b603561c 100644
--- a/front/src/components/artist/Widget.vue
+++ b/front/src/components/artist/Widget.vue
@@ -9,6 +9,7 @@ import { useI18n } from 'vue-i18n'
import axios from 'axios'
import ArtistCard from '~/components/artist/Card.vue'
+import Button from '~/components/ui/Button.vue'
import useErrorHandler from '~/composables/useErrorHandler'
@@ -107,13 +108,12 @@ watch(
-
+
diff --git a/front/src/components/audio/ChannelSeries.vue b/front/src/components/audio/ChannelSeries.vue
index e8c5d1fa2..d5987ae95 100644
--- a/front/src/components/audio/ChannelSeries.vue
+++ b/front/src/components/audio/ChannelSeries.vue
@@ -8,6 +8,7 @@ import { useI18n } from 'vue-i18n'
import axios from 'axios'
import ChannelSerieCard from '~/components/audio/ChannelSerieCard.vue'
import AlbumCard from '~/components/audio/album/Card.vue'
+import Button from '~/components/ui/Button.vue'
interface Props {
filters: object
@@ -82,13 +83,12 @@ fetchData()
-
+
): void
@@ -75,13 +76,12 @@ fetchData()
-
+
props.websocketHandlers.includes('Listen'), (to) => {
-
+
diff --git a/front/src/components/auth/Authorize.vue b/front/src/components/auth/Authorize.vue
index 23ef5d99a..6289cd7f5 100644
--- a/front/src/components/auth/Authorize.vue
+++ b/front/src/components/auth/Authorize.vue
@@ -9,6 +9,7 @@ import { ref, computed } from 'vue'
import useSharedLabels from '~/composables/locale/useSharedLabels'
import useScopes from '~/composables/auth/useScopes'
import useFormData from '~/composables/useFormData'
+import Button from '~/components/ui/Button.vue'
interface Props {
clientId: string
@@ -204,13 +205,12 @@ whenever(() => props.clientId, fetchApplication, { immediate: true })
{{ unknownscope }}
-
+
diff --git a/front/src/components/auth/Logout.vue b/front/src/components/auth/Logout.vue
index 6f9fade54..bc692a9d2 100644
--- a/front/src/components/auth/Logout.vue
+++ b/front/src/components/auth/Logout.vue
@@ -3,6 +3,8 @@ import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
import { useStore } from '~/store'
+import Button from '~/components/ui/Button.vue'
+
const store = useStore()
const { t } = useI18n()
@@ -27,12 +29,11 @@ const labels = computed(() => ({
{{ t('components.auth.Logout.message.loggedIn', { username: store.state.auth.username }) }}
-
+
import { useI18n } from 'vue-i18n'
+import Button from '~/components/ui/Button.vue'
interface Events {
(e: 'refresh'): void
@@ -30,13 +31,12 @@ withDefaults(defineProps
(), {
-
+
diff --git a/front/src/components/federation/FetchButton.vue b/front/src/components/federation/FetchButton.vue
index 79fb32147..d259d13df 100644
--- a/front/src/components/federation/FetchButton.vue
+++ b/front/src/components/federation/FetchButton.vue
@@ -3,6 +3,7 @@ import type { BackendError } from '~/types'
import axios from 'axios'
import SemanticModal from '~/components/semantic/Modal.vue'
+import Button from '~/components/ui/Button.vue'
import { useTimeoutFn } from '@vueuse/core'
import { ref } from 'vue'
@@ -212,16 +213,15 @@ const { start: startPolling } = useTimeoutFn(poll, 1000, { immediate: false })
-
diff --git a/front/src/components/federation/LibraryWidget.vue b/front/src/components/federation/LibraryWidget.vue
index ed44f8c15..a84f8bb9b 100644
--- a/front/src/components/federation/LibraryWidget.vue
+++ b/front/src/components/federation/LibraryWidget.vue
@@ -8,6 +8,7 @@ import { useI18n } from 'vue-i18n'
import axios from 'axios'
import LibraryCard from '~/views/content/remote/Card.vue'
+import Button from '~/components/ui/Button.vue'
import useErrorHandler from '~/composables/useErrorHandler'
@@ -90,13 +91,12 @@ fetchData()
-
{{ t('components.federation.LibraryWidget.button.showMore') }}
-
+
diff --git a/front/src/components/forms/PasswordInput.vue b/front/src/components/forms/PasswordInput.vue
index c8ba7e54a..dd70c37cd 100644
--- a/front/src/components/forms/PasswordInput.vue
+++ b/front/src/components/forms/PasswordInput.vue
@@ -4,6 +4,8 @@ import { useI18n } from 'vue-i18n'
import { useClipboard, useVModel } from '@vueuse/core'
import { useStore } from '~/store'
+import Button from '~/components/ui/Button.vue'
+
interface Events {
(e: 'update:modelValue', value: string): void
}
@@ -53,22 +55,20 @@ const copyPassword = () => {
name="password"
:type="passwordInputType"
>
-
-
-
-
+
-
-
+
diff --git a/front/src/components/library/Albums.vue b/front/src/components/library/Albums.vue
index 19e7f236d..1e9d78ffc 100644
--- a/front/src/components/library/Albums.vue
+++ b/front/src/components/library/Albums.vue
@@ -17,6 +17,7 @@ import $ from 'jquery'
import TagsSelector from '~/components/library/TagsSelector.vue'
import AlbumCard from '~/components/album/Card.vue'
import Pagination from '~/components/vui/Pagination.vue'
+import Button from '~/components/ui/Button.vue'
import useSharedLabels from '~/composables/locale/useSharedLabels'
import useOrdering from '~/composables/navigation/useOrdering'
@@ -141,13 +142,12 @@ const paginateOptions = computed(() => sortedUniq([12, 25, 50, paginateBy.value]
name="search"
:placeholder="labels.searchPlaceholder"
>
-
-
+
diff --git a/front/src/components/library/ArtistBase.vue b/front/src/components/library/ArtistBase.vue
index 003af6c06..2cf3682e0 100644
--- a/front/src/components/library/ArtistBase.vue
+++ b/front/src/components/library/ArtistBase.vue
@@ -13,6 +13,7 @@ import useLogger from '~/composables/useLogger'
import EmbedWizard from '~/components/audio/EmbedWizard.vue'
import SemanticModal from '~/components/semantic/Modal.vue'
+import Button from '~/components/ui/Button.vue'
import PlayButton from '~/components/audio/PlayButton.vue'
import RadioButton from '~/components/radios/Button.vue'
import Popover from '~/components/ui/Popover.vue'
@@ -161,21 +162,20 @@ watch(() => props.id, fetchData, { immediate: true })
-
+
{{ t('components.library.ArtistBase.button.cancel') }}
-
+
diff --git a/front/src/components/library/FsBrowser.vue b/front/src/components/library/FsBrowser.vue
index ef7f2f411..3dd87ff0a 100644
--- a/front/src/components/library/FsBrowser.vue
+++ b/front/src/components/library/FsBrowser.vue
@@ -4,6 +4,8 @@ import type { FileSystem, FSEntry } from '~/types'
import { useVModel } from '@vueuse/core'
import { useI18n } from 'vue-i18n'
+import Button from '~/components/ui/Button.vue'
+
interface Events {
(e: 'update:modelValue', value: string[]): void
@@ -42,12 +44,12 @@ const handleClick = (entry: FSEntry) => {
disabled
:value="props.data.root + '/' + value.join('/')"
>
-
{{ t('components.library.FsBrowser.button.import') }}
-
+
-
+
{{ t('components.library.ImportStatusModal.button.close') }}
-
+
diff --git a/front/src/components/library/Podcasts.vue b/front/src/components/library/Podcasts.vue
index abbc6ba33..cfda4cc0e 100644
--- a/front/src/components/library/Podcasts.vue
+++ b/front/src/components/library/Podcasts.vue
@@ -3,8 +3,6 @@ import type { OrderingProps } from '~/composables/navigation/useOrdering'
import type { Artist, BackendResponse } from '~/types'
import type { RouteRecordName } from 'vue-router'
import type { OrderingField } from '~/store/ui'
-import Popover from "~/components/ui/Popover.vue"
-import PopoverItem from "~/components/ui/popover/PopoverItem.vue"
import { computed, ref, watch } from 'vue'
import { useRouteQuery } from '@vueuse/router'
@@ -20,6 +18,9 @@ import RemoteSearchForm from '~/components/RemoteSearchForm.vue'
import Modal from '~/components/ui/Modal.vue'
import ArtistCard from '~/components/artist/Card.vue'
import Pagination from '~/components/vui/Pagination.vue'
+import Popover from "~/components/ui/Popover.vue"
+import PopoverItem from "~/components/ui/popover/PopoverItem.vue"
+import Button from '~/components/ui/Button.vue'
import useSharedLabels from '~/composables/locale/useSharedLabels'
import useOrdering from '~/composables/navigation/useOrdering'
@@ -143,13 +144,12 @@ const paginateOptions = computed(() => sortedUniq([12, 30, 50, paginateBy.value]
name="search"
:placeholder="labels.searchPlaceholder"
>
-
-
-
+
@@ -275,17 +275,16 @@ const paginateOptions = computed(() => sortedUniq([12, 30, 50, paginateBy.value]
/>
-
+
{{ t('components.library.Podcasts.button.cancel') }}
-
-
+
{{ t('components.library.Podcasts.button.subscribe') }}
-
+
diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue
index cf63a3988..7509bfbd9 100644
--- a/front/src/components/library/Radios.vue
+++ b/front/src/components/library/Radios.vue
@@ -176,13 +176,12 @@ const paginateOptions = computed(() => sortedUniq([12, 25, 50, paginateBy.value]
name="search"
:placeholder="labels.searchPlaceholder"
>
-
-
-
+
diff --git a/front/src/components/library/TrackBase.vue b/front/src/components/library/TrackBase.vue
index 582088f84..93d4760e9 100644
--- a/front/src/components/library/TrackBase.vue
+++ b/front/src/components/library/TrackBase.vue
@@ -18,6 +18,7 @@ import PlayButton from '~/components/audio/PlayButton.vue'
import Button from '~/components/ui/Button.vue'
import Popover from '~/components/ui/Popover.vue'
import PopoverItem from '~/components/ui/popover/PopoverItem.vue'
+import Button from '~/components/ui/Button.vue'
import updateQueryString from '~/composables/updateQueryString'
import useErrorHandler from '~/composables/useErrorHandler'
@@ -191,9 +192,9 @@ const open = ref(false)
-
+
{{ t('components.library.TrackBase.button.cancel') }}
-
+
diff --git a/front/src/components/library/radios/Filter.vue b/front/src/components/library/radios/Filter.vue
index 546d86906..b14b6ea8c 100644
--- a/front/src/components/library/radios/Filter.vue
+++ b/front/src/components/library/radios/Filter.vue
@@ -14,6 +14,7 @@ import { clone } from 'lodash-es'
import SemanticModal from '~/components/semantic/Modal.vue'
import TrackTable from '~/components/audio/track/Table.vue'
+import Button from '~/components/ui/Button.vue'
import useErrorHandler from '~/composables/useErrorHandler'
@@ -197,9 +198,9 @@ fetchCandidates()
-
+
{{ t('components.library.radios.Filter.cancelButton') }}
-
+
diff --git a/front/src/components/manage/library/UploadsTable.vue b/front/src/components/manage/library/UploadsTable.vue
index 27e18a35b..54fb7c088 100644
--- a/front/src/components/manage/library/UploadsTable.vue
+++ b/front/src/components/manage/library/UploadsTable.vue
@@ -14,6 +14,7 @@ import axios from 'axios'
import ImportStatusModal from '~/components/library/ImportStatusModal.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import Pagination from '~/components/vui/Pagination.vue'
+import Button from '~/components/ui/Button.vue'
import useSmartSearch from '~/composables/navigation/useSmartSearch'
import useSharedLabels from '~/composables/locale/useSharedLabels'
@@ -334,13 +335,13 @@ const getPrivacyLevelChoice = (privacyLevel: PrivacyLevel) => {
>
{{ getImportStatusChoice(scope.obj.import_status).label }}
-
-
-
+
{{ humanSize(scope.obj.size) }}
diff --git a/front/src/components/manage/moderation/InstancePolicyModal.vue b/front/src/components/manage/moderation/InstancePolicyModal.vue
index 4a0431641..838e92819 100644
--- a/front/src/components/manage/moderation/InstancePolicyModal.vue
+++ b/front/src/components/manage/moderation/InstancePolicyModal.vue
@@ -9,6 +9,7 @@ import { useI18n } from 'vue-i18n'
import InstancePolicyForm from '~/components/manage/moderation/InstancePolicyForm.vue'
import InstancePolicyCard from '~/components/manage/moderation/InstancePolicyCard.vue'
import SemanticModal from '~/components/semantic/Modal.vue'
+import Button from '~/components/ui/Button.vue'
interface Props {
target: string
@@ -59,8 +60,7 @@ const fetchData = async () => {
-
@@ -105,10 +105,10 @@ const fetchData = async () => {
-
+
{{ t('components.manage.moderation.InstancePolicyModal.button.close') }}
-
+
-
+
diff --git a/front/src/components/playlists/Widget.vue b/front/src/components/playlists/Widget.vue
index bd39d8d38..772268cb0 100644
--- a/front/src/components/playlists/Widget.vue
+++ b/front/src/components/playlists/Widget.vue
@@ -11,6 +11,7 @@ import axios from 'axios'
import useErrorHandler from '~/composables/useErrorHandler'
import PlaylistCard from '~/components/playlists/Card.vue'
+import Button from '~/components/ui/Button.vue'
interface Props {
filters: Record
@@ -84,24 +85,22 @@ watch(
{{ t('components.playlists.Widget.placeholder.noPlaylists') }}
-
-
{{ t('components.playlists.Widget.button.create') }}
-
+
-
{{ t('components.playlists.Widget.button.more') }}
-
+
diff --git a/front/src/components/semantic/Modal.vue b/front/src/components/semantic/Modal.vue
index db787e4b5..cb8f79e07 100644
--- a/front/src/components/semantic/Modal.vue
+++ b/front/src/components/semantic/Modal.vue
@@ -1,26 +1,15 @@
-
-
+ title="props.title"
+ :class="classes"
>
-
+
+
-->
diff --git a/front/src/views/Search.vue b/front/src/views/Search.vue
index 5968d734c..6b816916a 100644
--- a/front/src/views/Search.vue
+++ b/front/src/views/Search.vue
@@ -17,6 +17,7 @@ import Pagination from '~/components/vui/Pagination.vue'
import RadioButton from '~/components/radios/Button.vue'
import RadioCard from '~/components/radios/Card.vue'
import TagsList from '~/components/tags/List.vue'
+import Button from '~/components/ui/Button.vue'
import useErrorHandler from '~/composables/useErrorHandler'
import useLogger from '~/composables/useLogger'
@@ -260,13 +261,12 @@ const radioConfig = computed(() => {
name="query"
type="text"
>
-
-
-
+
diff --git a/front/src/views/channels/SubscriptionsList.vue b/front/src/views/channels/SubscriptionsList.vue
index 8f64f3f1a..89682c355 100644
--- a/front/src/views/channels/SubscriptionsList.vue
+++ b/front/src/views/channels/SubscriptionsList.vue
@@ -9,6 +9,7 @@ import axios from 'axios'
import ChannelsWidget from '~/components/audio/ChannelsWidget.vue'
import RemoteSearchForm from '~/components/RemoteSearchForm.vue'
import SemanticModal from '~/components/semantic/Modal.vue'
+import Button from '~/components/ui/Button.vue'
import useErrorHandler from '~/composables/useErrorHandler'
@@ -91,17 +92,16 @@ const showSubscribeModal = ref(false)
/>
-
+
{{ t('views.channels.SubscriptionsList.button.cancel') }}
-
-
+
-
{{ t('views.channels.SubscriptionsList.button.subscribe') }}
-
+
diff --git a/front/src/views/playlists/List.vue b/front/src/views/playlists/List.vue
index 41c2a7e5d..3f92d782e 100644
--- a/front/src/views/playlists/List.vue
+++ b/front/src/views/playlists/List.vue
@@ -16,6 +16,7 @@ import $ from 'jquery'
import PlaylistCardList from '~/components/playlists/CardList.vue'
import Pagination from '~/components/vui/Pagination.vue'
+import Button from '~/components/ui/Button.vue'
import useSharedLabels from '~/composables/locale/useSharedLabels'
import useOrdering from '~/composables/navigation/useOrdering'
@@ -114,12 +115,11 @@ const paginateOptions = computed(() => sortedUniq([12, 25, 50, paginateBy.value]
{{ t('views.playlists.List.header.browse') }}
-
{{ t('views.playlists.List.button.manage') }}
-
+
|