diff --git a/src/App.vue b/src/App.vue
index 0a7ace0181..90e7e30e76 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,9 +1,11 @@
-
+ class="absolute inset-0 flex items-center justify-center"
+ >
+
+
@@ -11,9 +13,9 @@
diff --git a/src/components/toast/ProgressToastItem.vue b/src/components/toast/ProgressToastItem.vue
index 079be418f7..f9ee47cbb3 100644
--- a/src/components/toast/ProgressToastItem.vue
+++ b/src/components/toast/ProgressToastItem.vue
@@ -2,6 +2,7 @@
import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
+import Loader from '@/components/common/Loader.vue'
import StatusBadge from '@/components/common/StatusBadge.vue'
import type { AssetDownload } from '@/stores/assetDownloadStore'
import { cn } from '@/utils/tailwindUtil'
@@ -47,9 +48,7 @@ const isPending = computed(() => job.status === 'created')
-
+
{{ progressPercent }}%
diff --git a/src/platform/assets/components/ActiveMediaAssetCard.vue b/src/platform/assets/components/ActiveMediaAssetCard.vue
index c0f4622410..db1fcb81bf 100644
--- a/src/platform/assets/components/ActiveMediaAssetCard.vue
+++ b/src/platform/assets/components/ActiveMediaAssetCard.vue
@@ -24,20 +24,14 @@
class="absolute inset-0 flex items-center justify-center bg-modal-card-placeholder-background"
>
-
+
-
+
-
+
{{ progressPercent(job) }}%
diff --git a/src/platform/assets/components/ModelImportProgressDialog.vue b/src/platform/assets/components/ModelImportProgressDialog.vue
index 92b21e2823..941ce4c969 100644
--- a/src/platform/assets/components/ModelImportProgressDialog.vue
+++ b/src/platform/assets/components/ModelImportProgressDialog.vue
@@ -4,6 +4,7 @@ import Popover from 'primevue/popover'
import { computed, ref } from 'vue'
import { useI18n } from 'vue-i18n'
+import Loader from '@/components/common/Loader.vue'
import HoneyToast from '@/components/honeyToast/HoneyToast.vue'
import ProgressToastItem from '@/components/toast/ProgressToastItem.vue'
import Button from '@/components/ui/button/Button.vue'
@@ -175,9 +176,7 @@ function closeDialog() {
>
-
+
diff --git a/src/platform/assets/components/UploadModelFooter.vue b/src/platform/assets/components/UploadModelFooter.vue
index d7ad18198d..4db94dfc3d 100644
--- a/src/platform/assets/components/UploadModelFooter.vue
+++ b/src/platform/assets/components/UploadModelFooter.vue
@@ -49,10 +49,7 @@
:disabled="!canFetchMetadata || isFetchingMetadata"
@click="emit('fetchMetadata')"
>
-
+
{{ $t('g.continue') }}
import { ref } from 'vue'
+import Loader from '@/components/common/Loader.vue'
import Button from '@/components/ui/button/Button.vue'
import VideoHelpDialog from '@/platform/assets/components/VideoHelpDialog.vue'
diff --git a/src/platform/workspace/auth/WorkspaceAuthGate.test.ts b/src/platform/workspace/auth/WorkspaceAuthGate.test.ts
index 42e6fc4ae9..fc87bfa530 100644
--- a/src/platform/workspace/auth/WorkspaceAuthGate.test.ts
+++ b/src/platform/workspace/auth/WorkspaceAuthGate.test.ts
@@ -1,6 +1,7 @@
import { flushPromises, mount } from '@vue/test-utils'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { ref } from 'vue'
+import { createI18n } from 'vue-i18n'
import WorkspaceAuthGate from './WorkspaceAuthGate.vue'
@@ -50,10 +51,6 @@ vi.mock('@/platform/distribution/types', () => ({
}
}))
-vi.mock('primevue/progressspinner', () => ({
- default: { template: '' }
-}))
-
describe('WorkspaceAuthGate', () => {
beforeEach(() => {
vi.clearAllMocks()
@@ -66,8 +63,11 @@ describe('WorkspaceAuthGate', () => {
mockWorkspaceStoreInitialize.mockResolvedValue(undefined)
})
+ const i18n = createI18n({ legacy: false })
+
const mountComponent = () =>
mount(WorkspaceAuthGate, {
+ global: { plugins: [i18n] },
slots: {
default: 'App Content
'
}
@@ -81,7 +81,7 @@ describe('WorkspaceAuthGate', () => {
await flushPromises()
expect(wrapper.find('[data-testid="slot-content"]').exists()).toBe(true)
- expect(wrapper.find('.progress-spinner').exists()).toBe(false)
+ expect(wrapper.find('[role="status"]').exists()).toBe(false)
expect(mockRefreshRemoteConfig).not.toHaveBeenCalled()
})
})
@@ -92,7 +92,7 @@ describe('WorkspaceAuthGate', () => {
const wrapper = mountComponent()
- expect(wrapper.find('.progress-spinner').exists()).toBe(true)
+ expect(wrapper.find('[role="status"]').exists()).toBe(true)
expect(wrapper.find('[data-testid="slot-content"]').exists()).toBe(false)
})
@@ -100,7 +100,7 @@ describe('WorkspaceAuthGate', () => {
mockIsInitialized.value = false
const wrapper = mountComponent()
- expect(wrapper.find('.progress-spinner').exists()).toBe(true)
+ expect(wrapper.find('[role="status"]').exists()).toBe(true)
mockIsInitialized.value = true
mockCurrentUser.value = null
@@ -180,7 +180,7 @@ describe('WorkspaceAuthGate', () => {
await flushPromises()
// Still showing spinner before timeout
- expect(wrapper.find('.progress-spinner').exists()).toBe(true)
+ expect(wrapper.find('[role="status"]').exists()).toBe(true)
// Advance past the 10 second timeout
await vi.advanceTimersByTimeAsync(10_001)
diff --git a/src/platform/workspace/auth/WorkspaceAuthGate.vue b/src/platform/workspace/auth/WorkspaceAuthGate.vue
index 571f8aea92..41a1d60c09 100644
--- a/src/platform/workspace/auth/WorkspaceAuthGate.vue
+++ b/src/platform/workspace/auth/WorkspaceAuthGate.vue
@@ -4,7 +4,7 @@
v-else
class="fixed inset-0 z-[1100] flex items-center justify-center bg-[var(--p-mask-background)]"
>
-
+
@@ -22,8 +22,8 @@
* instead of workspace tokens when the workspace feature is enabled.
*/
import { promiseTimeout, until } from '@vueuse/core'
+import Loader from '@/components/common/Loader.vue'
import { storeToRefs } from 'pinia'
-import ProgressSpinner from 'primevue/progressspinner'
import { onMounted, ref } from 'vue'
import { useFeatureFlags } from '@/composables/useFeatureFlags'
diff --git a/src/renderer/extensions/linearMode/LinearControls.vue b/src/renderer/extensions/linearMode/LinearControls.vue
index 290fb8ce78..c8a7eebd68 100644
--- a/src/renderer/extensions/linearMode/LinearControls.vue
+++ b/src/renderer/extensions/linearMode/LinearControls.vue
@@ -5,6 +5,7 @@ import { storeToRefs } from 'pinia'
import { computed, ref, shallowRef } from 'vue'
import { useI18n } from 'vue-i18n'
+import Loader from '@/components/common/Loader.vue'
import ScrubableNumberInput from '@/components/common/ScrubableNumberInput.vue'
import Popover from '@/components/ui/Popover.vue'
import Button from '@/components/ui/button/Button.vue'
@@ -266,7 +267,7 @@ defineExpose({ runButtonClick })
-
+
diff --git a/src/renderer/extensions/linearMode/OutputHistoryActiveQueueItem.vue b/src/renderer/extensions/linearMode/OutputHistoryActiveQueueItem.vue
index e49e08e62b..a1b5d26b52 100644
--- a/src/renderer/extensions/linearMode/OutputHistoryActiveQueueItem.vue
+++ b/src/renderer/extensions/linearMode/OutputHistoryActiveQueueItem.vue
@@ -1,6 +1,7 @@