From 34b44096a221a5c3f37690c3f9a3c0c37b5fad30 Mon Sep 17 00:00:00 2001 From: Typed SIGTERM Date: Fri, 21 Nov 2025 17:18:22 +0800 Subject: [PATCH] refactor(stage-pages): split onboarding component (#733) --- .../pages/settings/modules/consciousness.vue | 2 - .../src/pages/settings/modules/speech.vue | 2 - .../stage-ui/src/components/misc/Alert.vue | 17 +- .../dialogs/onboarding/onboarding-dialog.vue | 4 +- .../dialogs/onboarding/onboarding.vue | 427 ++---------------- .../onboarding/step-model-selection.vue | 76 ++++ .../step-provider-configuration.vue | 211 +++++++++ .../onboarding/step-provider-selection.vue | 45 ++ .../dialogs/onboarding/step-welcome.vue | 56 +++ .../scenarios/dialogs/onboarding/utils.ts | 15 + 10 files changed, 453 insertions(+), 402 deletions(-) create mode 100644 packages/stage-ui/src/components/scenarios/dialogs/onboarding/step-model-selection.vue create mode 100644 packages/stage-ui/src/components/scenarios/dialogs/onboarding/step-provider-configuration.vue create mode 100644 packages/stage-ui/src/components/scenarios/dialogs/onboarding/step-provider-selection.vue create mode 100644 packages/stage-ui/src/components/scenarios/dialogs/onboarding/step-welcome.vue create mode 100644 packages/stage-ui/src/components/scenarios/dialogs/onboarding/utils.ts diff --git a/packages/stage-pages/src/pages/settings/modules/consciousness.vue b/packages/stage-pages/src/pages/settings/modules/consciousness.vue index 031183405..6b845dfab 100644 --- a/packages/stage-pages/src/pages/settings/modules/consciousness.vue +++ b/packages/stage-pages/src/pages/settings/modules/consciousness.vue @@ -71,9 +71,7 @@ function updateCustomModelName(value: string) { to="/settings/providers" border="2px solid" class="border-neutral-100 bg-white dark:border-neutral-900 hover:border-primary-500/30 dark:bg-neutral-900/20 dark:hover:border-primary-400/30" - flex="~ col items-center justify-center" - transition="all duration-200 ease-in-out" relative min-w-50 w-fit rounded-xl p-4 > diff --git a/packages/stage-pages/src/pages/settings/modules/speech.vue b/packages/stage-pages/src/pages/settings/modules/speech.vue index 9921fef07..d5e934888 100644 --- a/packages/stage-pages/src/pages/settings/modules/speech.vue +++ b/packages/stage-pages/src/pages/settings/modules/speech.vue @@ -202,9 +202,7 @@ function updateCustomModelName(value: string) { to="/settings/providers#speech" border="2px solid" class="border-neutral-100 bg-white dark:border-neutral-900 hover:border-primary-500/30 dark:bg-neutral-900/20 dark:hover:border-primary-400/30" - flex="~ col items-center justify-center" - transition="all duration-200 ease-in-out" relative min-w-50 w-fit rounded-xl p-4 > diff --git a/packages/stage-ui/src/components/misc/Alert.vue b/packages/stage-ui/src/components/misc/Alert.vue index cca6bc3fe..0e06f1f21 100644 --- a/packages/stage-ui/src/components/misc/Alert.vue +++ b/packages/stage-ui/src/components/misc/Alert.vue @@ -5,20 +5,25 @@ const props = defineProps<{ type?: 'error' | 'warning' | 'success' | 'info' | 'loading' }>() +defineSlots<{ + title: (props: any) => any + content: (props: any) => any +}>() + const slots = useSlots() const containerClass = computed(() => { switch (props.type) { case 'error': - return 'border-solid border-2 border-red-200 bg-red-50 dark:border-red-800/30 dark:bg-red-900/20' + return 'border-red-200 bg-red-50 dark:border-red-800/30 dark:bg-red-900/20' case 'warning': - return 'border-solid border-2 border-amber-200 bg-amber-50 dark:border-amber-800/30 dark:bg-amber-900/20' + return 'border-amber-200 bg-amber-50 dark:border-amber-800/30 dark:bg-amber-900/20' case 'success': - return 'border-solid border-2 border-green-200 bg-green-50 dark:border-green-800/30 text-green-700 dark:bg-green-900/30 dark:text-green-300' + return 'border-green-200 bg-green-50 dark:border-green-800/30 text-green-700 dark:bg-green-900/30 dark:text-green-300' case 'info': - return 'border-solid border-2 border-blue-200 bg-blue-50 dark:border-blue-800/30 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300' + return 'border-blue-200 bg-blue-50 dark:border-blue-800/30 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300' case 'loading': - return 'border-solid border-2 border-blue-200 bg-blue-50 dark:border-blue-800/30 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300' + return 'border-blue-200 bg-blue-50 dark:border-blue-800/30 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300' } return '' }) @@ -57,7 +62,7 @@ const titleClass = computed(() => {