From 6117f751b02ad8491450e7726c75848436d9da3f Mon Sep 17 00:00:00 2001 From: Tajudeen Date: Thu, 23 Jul 2026 12:29:20 +0100 Subject: [PATCH] feat(ui): migrate onboarding flows to design-system btn/input classes Replace hardcoded gradient and border button styles in express and local setup onboarding with .btn-primary/.btn-secondary/.btn-ghost, add native .input:focus support, and extend design-system contract tests. Co-authored-by: Cursor --- .../src/onboarding/ExpressOnboardingFlow.tsx | 47 +++++-------------- .../react/src/onboarding/LocalSetupWizard.tsx | 34 +++++++------- .../cortexide/browser/react/src/styles.css | 1 + .../test/common/designSystem.test.ts | 26 ++++++++++ 4 files changed, 55 insertions(+), 53 deletions(-) diff --git a/src/vs/workbench/contrib/cortexide/browser/react/src/onboarding/ExpressOnboardingFlow.tsx b/src/vs/workbench/contrib/cortexide/browser/react/src/onboarding/ExpressOnboardingFlow.tsx index 66fcde65fc12..3a9967a27fb6 100644 --- a/src/vs/workbench/contrib/cortexide/browser/react/src/onboarding/ExpressOnboardingFlow.tsx +++ b/src/vs/workbench/contrib/cortexide/browser/react/src/onboarding/ExpressOnboardingFlow.tsx @@ -341,8 +341,7 @@ const ExpressShell = ({ children, onCustomize, onDismiss }: { type="button" onClick={onDismiss} aria-label={t('express.dismiss')} - className="p-2 rounded-xl transition-colors" - style={{ color: 'var(--cortex-fg-3, rgba(255,255,255,0.6))' }} + className="btn btn-icon btn-ghost p-2" > @@ -357,8 +356,7 @@ const ExpressShell = ({ children, onCustomize, onDismiss }: { @@ -422,19 +419,14 @@ const InstallConfirmPanel = ({ t, hardware, pack, onConfirm, onDecline }: { @@ -501,8 +493,7 @@ const ReadyPanel = ({ t, onStart }: { @@ -530,12 +521,7 @@ const GroqFallbackPanel = ({ t, apiKey, onApiKeyChange, onSubmit, errorMessage } href={GROQ_KEYS_URL} target="_blank" rel="noopener noreferrer" - className="inline-flex items-center gap-2 px-4 py-2.5 rounded-xl text-sm font-medium transition-colors" - style={{ - border: '1px solid var(--cortex-border-3, rgba(255,255,255,0.1))', - color: 'var(--cortex-fg-1, rgba(255,255,255,0.9))', - background: 'var(--cortex-bg-3, rgba(255,255,255,0.04))', - }} + className="btn btn-secondary inline-flex items-center gap-2 px-4 py-2.5 text-sm font-medium" > {t('express.openGroqKeyPage')} @@ -549,12 +535,7 @@ const GroqFallbackPanel = ({ t, apiKey, onApiKeyChange, onSubmit, errorMessage } value={apiKey} onChange={(e) => onApiKeyChange(e.target.value)} placeholder={t('express.pasteKeyPlaceholder')} - className="w-full px-3 py-2.5 rounded-xl text-sm font-mono outline-none" - style={{ - background: 'var(--cortex-bg-3, rgba(255,255,255,0.04))', - border: '1px solid var(--cortex-border-3, rgba(255,255,255,0.1))', - color: 'var(--cortex-fg-0, #ffffff)', - }} + className="input w-full px-3 py-2.5 text-sm font-mono outline-none" /> {errorMessage && (

{errorMessage}

@@ -565,8 +546,7 @@ const GroqFallbackPanel = ({ t, apiKey, onApiKeyChange, onSubmit, errorMessage } type="button" onClick={onSubmit} disabled={!apiKey.trim()} - className="w-full px-4 py-2.5 rounded-xl font-medium text-white transition-transform disabled:opacity-50 disabled:cursor-not-allowed enabled:hover:translate-y-[-1px]" - style={{ background: 'var(--cortex-brand, #6b5bff)' }} + className="btn btn-primary w-full px-4 py-2.5 font-medium" > {t('express.useGroqKey')} @@ -587,19 +567,14 @@ const ErrorPanel = ({ t, message, onRetry, onFallback }: { diff --git a/src/vs/workbench/contrib/cortexide/browser/react/src/onboarding/LocalSetupWizard.tsx b/src/vs/workbench/contrib/cortexide/browser/react/src/onboarding/LocalSetupWizard.tsx index 07191ab324e5..db354c7bcc54 100644 --- a/src/vs/workbench/contrib/cortexide/browser/react/src/onboarding/LocalSetupWizard.tsx +++ b/src/vs/workbench/contrib/cortexide/browser/react/src/onboarding/LocalSetupWizard.tsx @@ -240,7 +240,7 @@ export const LocalSetupWizard = ({ onComplete, onSkip }: LocalSetupWizardProps) @@ -262,7 +262,7 @@ export const LocalSetupWizard = ({ onComplete, onSkip }: LocalSetupWizardProps) {progress.canCancel && @@ -304,7 +304,7 @@ const ChoiceStep = ({ onChoice, onBack }: {onChoice: (choice: 'local' | 'cloud'
@@ -398,7 +398,7 @@ const SystemCheckStep = ({ systemCheck, onInstall, onNext, onBack, canGoBack }: {systemCheck.ollamaRunning && @@ -429,7 +429,7 @@ const ModelPackStep = ({ selectedPack, onSelect, onDownload, state, onBack, canG {canGoBack && @@ -534,7 +534,7 @@ const VerificationStep = ({ onVerify, onSkip, state, onBack, canGoBack }: {onVer {onSkip && @@ -596,7 +596,7 @@ const VerificationResultsStep = ({ results, onNext, onBack, canGoBack }: {result {canGoBack && @@ -665,7 +665,7 @@ const DefaultsStep = ({ onComplete, onBack, canGoBack }: {onComplete: () => void {canGoBack &&