From c6f2ae3130480de01cc3db32263934c401892fef Mon Sep 17 00:00:00 2001
From: Alexander Brown
Date: Mon, 12 Jan 2026 17:25:01 -0800
Subject: [PATCH] fix(upload-model): UI/UX improvements for Upload Model Dialog
(#7969)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
Addresses UI/UX feedback on the Upload Model Dialog (BYOM feature).
## Changes
1. **Standardize link styling** - Use consistent `text-muted-foreground
underline` for all links in both URL input variants
2. **Increase warning/example text font size** - Changed from 12px
(`text-xs`) to 14px (`text-sm`) for better readability
3. **Fix padding inconsistency** - Aligned padding between model name
box and SingleSelect dropdown; moved "Not sure?" help text inline with
the label
4. **Add "Upload Another" button** - Allows users to upload multiple
models without closing and reopening the dialog
## Testing
- Verified link styling consistency across both Civitai and generic URL
input components
- Confirmed padding alignment in confirmation step
- Tested Upload Another button resets wizard to step 1
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7969-fix-upload-model-UI-UX-improvements-for-Upload-Model-Dialog-2e66d73d3650815c8184cedb3d02672d)
by [Unito](https://www.unito.io)
---
src/locales/en/main.json | 1 +
.../components/UploadModelConfirmation.vue | 18 +++++-----
.../assets/components/UploadModelDialog.vue | 4 ++-
.../assets/components/UploadModelFooter.vue | 33 +++++++++++++------
.../assets/components/UploadModelUrlInput.vue | 6 ++--
.../components/UploadModelUrlInputCivitai.vue | 8 ++---
.../composables/useUploadModelWizard.ts | 17 +++++++++-
7 files changed, 60 insertions(+), 27 deletions(-)
diff --git a/src/locales/en/main.json b/src/locales/en/main.json
index 6ef5343ac..81e73b986 100644
--- a/src/locales/en/main.json
+++ b/src/locales/en/main.json
@@ -2311,6 +2311,7 @@
"filterBy": "Filter by",
"findInLibrary": "Find it in the {type} section of the models library.",
"finish": "Finish",
+ "importAnother": "Import Another",
"genericLinkPlaceholder": "Paste link here",
"jobId": "Job ID",
"loadingModels": "Loading {type}...",
diff --git a/src/platform/assets/components/UploadModelConfirmation.vue b/src/platform/assets/components/UploadModelConfirmation.vue
index 881b47d32..53beb03a1 100644
--- a/src/platform/assets/components/UploadModelConfirmation.vue
+++ b/src/platform/assets/components/UploadModelConfirmation.vue
@@ -5,7 +5,7 @@
{{ $t('assetBrowser.modelAssociatedWithLink') }}
-
+
+
+
+
+ {{ $t('assetBrowser.notSureLeaveAsIs') }}
+
+
-
-
- {{ $t('assetBrowser.notSureLeaveAsIs') }}
-
diff --git a/src/platform/assets/components/UploadModelDialog.vue b/src/platform/assets/components/UploadModelDialog.vue
index 5013e418d..f7ad5de71 100644
--- a/src/platform/assets/components/UploadModelDialog.vue
+++ b/src/platform/assets/components/UploadModelDialog.vue
@@ -48,6 +48,7 @@
@fetch-metadata="handleFetchMetadata"
@upload="handleUploadModel"
@close="handleClose"
+ @import-another="resetWizard"
/>
@@ -85,7 +86,8 @@ const {
canUploadModel,
fetchMetadata,
uploadModel,
- goToPreviousStep
+ goToPreviousStep,
+ resetWizard
} = useUploadModelWizard(modelTypes)
async function handleFetchMetadata() {
diff --git a/src/platform/assets/components/UploadModelFooter.vue b/src/platform/assets/components/UploadModelFooter.vue
index 04c27c394..95ca59e45 100644
--- a/src/platform/assets/components/UploadModelFooter.vue
+++ b/src/platform/assets/components/UploadModelFooter.vue
@@ -80,21 +80,33 @@
{{ $t('assetBrowser.upload') }}
-
+
+
+
()
diff --git a/src/platform/assets/components/UploadModelUrlInput.vue b/src/platform/assets/components/UploadModelUrlInput.vue
index 8b814c0e5..d2c743d7a 100644
--- a/src/platform/assets/components/UploadModelUrlInput.vue
+++ b/src/platform/assets/components/UploadModelUrlInput.vue
@@ -20,7 +20,7 @@
:href="civitaiUrl"
target="_blank"
rel="noopener noreferrer"
- class="text-muted underline"
+ class="text-muted-foreground underline"
>
{{ $t('assetBrowser.providerCivitai') }},
@@ -35,7 +35,7 @@
:href="huggingFaceUrl"
target="_blank"
rel="noopener noreferrer"
- class="text-muted underline"
+ class="text-muted-foreground underline"
>
{{ $t('assetBrowser.providerHuggingFace') }}
@@ -58,7 +58,7 @@
class="icon-[lucide--circle-check-big] absolute top-1/2 right-3 size-5 -translate-y-1/2 text-green-500"
/>
-
+
{{ error }}
diff --git a/src/platform/assets/components/UploadModelUrlInputCivitai.vue b/src/platform/assets/components/UploadModelUrlInputCivitai.vue
index 39e244c86..82c1dcf31 100644
--- a/src/platform/assets/components/UploadModelUrlInputCivitai.vue
+++ b/src/platform/assets/components/UploadModelUrlInputCivitai.vue
@@ -11,7 +11,7 @@
{{ $t('assetBrowser.uploadModelDescription2Link') }}
@@ -51,14 +51,14 @@
class="icon-[lucide--circle-check-big] absolute top-1/2 right-3 size-5 -translate-y-1/2 text-green-500"
/>
-
+
{{ error }}
{{ $t('assetBrowser.civitaiLinkExampleStrong') }}
@@ -67,7 +67,7 @@
{{ $t('assetBrowser.civitaiLinkExampleUrl') }}
diff --git a/src/platform/assets/composables/useUploadModelWizard.ts b/src/platform/assets/composables/useUploadModelWizard.ts
index bac9c7eb2..207fed562 100644
--- a/src/platform/assets/composables/useUploadModelWizard.ts
+++ b/src/platform/assets/composables/useUploadModelWizard.ts
@@ -284,6 +284,20 @@ export function useUploadModelWizard(modelTypes: Ref) {
}
}
+ function resetWizard() {
+ currentStep.value = 1
+ isFetchingMetadata.value = false
+ isUploading.value = false
+ uploadStatus.value = undefined
+ uploadError.value = ''
+ wizardData.value = {
+ url: '',
+ name: '',
+ tags: []
+ }
+ selectedModelType.value = undefined
+ }
+
return {
// State
currentStep,
@@ -302,6 +316,7 @@ export function useUploadModelWizard(modelTypes: Ref) {
// Actions
fetchMetadata,
uploadModel,
- goToPreviousStep
+ goToPreviousStep,
+ resetWizard
}
}