import classnames from 'classnames'; import { useState } from 'react'; import { useRequestCreate, useRequestUpdate } from '../hooks/useRequest'; import { useTheme } from '../hooks/useTheme'; import type { HttpRequest } from '../lib/models'; import { ButtonLink } from './ButtonLink'; import { IconButton } from './IconButton'; import { HStack, VStack } from './Stacks'; import { WindowDragRegion } from './WindowDragRegion'; interface Props { workspaceId: string; requests: HttpRequest[]; activeRequestId?: string; className?: string; } export function Sidebar({ className, activeRequestId, workspaceId, requests }: Props) { const createRequest = useRequestCreate({ workspaceId, navigateAfter: true }); const { appearance, toggleAppearance } = useTheme(); return (
{ await createRequest.mutate({ name: 'Test Request' }); }} /> {requests.map((r) => ( ))} {/**/}
); } function SidebarItem({ request, active }: { request: HttpRequest; active: boolean }) { const updateRequest = useRequestUpdate(request); const [editing, setEditing] = useState(false); const handleSubmitNameEdit = async (el: HTMLInputElement) => { await updateRequest.mutate({ name: el.value }); setEditing(false); }; const handleFocus = (el: HTMLInputElement | null) => { el?.focus(); }; return (
  • setEditing(true)} justify="start" > {editing ? ( handleSubmitNameEdit(e.currentTarget)} onKeyDown={async (e) => { if (e.key === 'Enter') { await handleSubmitNameEdit(e.currentTarget); } }} /> ) : ( request.name || request.url )}
  • ); }