import { useEffect, useMemo, useState } from 'react'; import type { RefObject } from 'react'; import type { AuthCopyStatus } from '../../types/types'; import { resolveAuthUrlForDisplay } from '../../utils/auth'; type ShellMinimalViewProps = { terminalContainerRef: RefObject; authUrl: string; authUrlVersion: number; initialCommand: string | null | undefined; isConnected: boolean; openAuthUrlInBrowser: (url: string) => boolean; copyAuthUrlToClipboard: (url: string) => Promise; }; export default function ShellMinimalView({ terminalContainerRef, authUrl, authUrlVersion, initialCommand, isConnected, openAuthUrlInBrowser, copyAuthUrlToClipboard, }: ShellMinimalViewProps) { const [authUrlCopyStatus, setAuthUrlCopyStatus] = useState('idle'); const [isAuthPanelHidden, setIsAuthPanelHidden] = useState(false); const displayAuthUrl = useMemo( () => resolveAuthUrlForDisplay(initialCommand, authUrl), [authUrl, initialCommand], ); // Keep auth panel UI state local to minimal mode and reset it when connection/url changes. useEffect(() => { setAuthUrlCopyStatus('idle'); setIsAuthPanelHidden(false); }, [authUrlVersion, displayAuthUrl, isConnected]); const hasAuthUrl = Boolean(displayAuthUrl); const showMobileAuthPanel = hasAuthUrl && !isAuthPanelHidden; const showMobileAuthPanelToggle = hasAuthUrl && isAuthPanelHidden; return (
{showMobileAuthPanel && (

Open or copy the login URL:

event.currentTarget.select()} className="w-full rounded border border-gray-600 bg-gray-800 px-2 py-1 text-xs text-gray-100 focus:outline-none focus:ring-1 focus:ring-blue-500" aria-label="Authentication URL" />
)} {showMobileAuthPanelToggle && (
)}
); }