diff --git a/apps/desktop/src/components/desktop-onboarding-overlay.tsx b/apps/desktop/src/components/desktop-onboarding-overlay.tsx
index 90fd653f1e..992756f498 100644
--- a/apps/desktop/src/components/desktop-onboarding-overlay.tsx
+++ b/apps/desktop/src/components/desktop-onboarding-overlay.tsx
@@ -3,7 +3,7 @@ import { useEffect, useMemo, useRef, useState } from 'react'
import { Button } from '@/components/ui/button'
import { Input } from '@/components/ui/input'
-import { Check, ChevronRight, ExternalLink, KeyRound, Loader2, Sparkles } from '@/lib/icons'
+import { Check, ChevronLeft, ChevronRight, ExternalLink, KeyRound, Loader2, Sparkles } from '@/lib/icons'
import { cn } from '@/lib/utils'
import {
$desktopOnboarding,
@@ -174,78 +174,34 @@ function Picker({ ctx }: { ctx: OnboardingContext }) {
const ordered = useMemo(() => (providers ? sortProviders(providers) : []), [providers])
const hasOauth = ordered.length > 0
- return (
- <>
- {hasOauth && (
-
- )}
+ if (mode === 'apikey' || !hasOauth) {
+ return
+ }
- {mode === 'oauth' && hasOauth ? (
-
- {providers === null ? (
-
}>Looking up providers...
- ) : (
- ordered.map(provider => (
-
void startProviderOAuth(p, ctx)} provider={provider} />
- ))
- )}
-
+ return (
+
+ {providers === null ? (
+
}>Looking up providers...
) : (
-
+ ordered.map(provider => (
+
void startProviderOAuth(p, ctx)} provider={provider} />
+ ))
)}
- >
+ setOnboardingMode('apikey')}>I have an API key
+
)
}
-interface ModeTab {
- id: T
- label: string
-}
-
-interface ModeTabsProps {
- mode: T
- onChange: (mode: T) => void
- tabs: ModeTab[]
-}
-
-const TAB_COLS: Record = {
- 2: 'grid-cols-2',
- 3: 'grid-cols-3',
- 4: 'grid-cols-4'
-}
-
-function ModeTabs({ mode, onChange, tabs }: ModeTabsProps) {
+function ModeSwitchLink({ children, onClick }: { children: React.ReactNode; onClick: () => void }) {
return (
-
- {tabs.map(tab => (
-
- ))}
+
+
)
}
@@ -287,7 +243,7 @@ function ProviderRow({
)
}
-function ApiKeyForm({ ctx }: { ctx: OnboardingContext }) {
+function ApiKeyForm({ canGoBack, ctx }: { canGoBack: boolean; ctx: OnboardingContext }) {
const [option, setOption] = useState
(API_KEY_OPTIONS[0])
const [value, setValue] = useState('')
const [saving, setSaving] = useState(false)
@@ -316,6 +272,16 @@ function ApiKeyForm({ ctx }: { ctx: OnboardingContext }) {
return (
+ {canGoBack ? (
+
+ ) : null}
{API_KEY_OPTIONS.map(o => (
-
-
- Waiting for you to authorize...
+
+
+
+ Waiting for you to authorize...
+
+
-
)