import classnames from 'classnames'; import { useState } from 'react'; import { useActiveRequest } from '../hooks/useActiveRequest'; import { useCreateRequest } from '../hooks/useCreateRequest'; import { useRequests } from '../hooks/useRequests'; import { useTheme } from '../hooks/useTheme'; import { useUpdateRequest } from '../hooks/useUpdateRequest'; 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 { className?: string; } export function Sidebar({ className }: Props) { const requests = useRequests(); const activeRequest = useActiveRequest(); const createRequest = useCreateRequest({ 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 = useUpdateRequest(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 )}
  • ); }