import classnames from 'classnames'; import { useState } from 'react'; import { useActiveRequest } from '../hooks/useActiveRequest'; import { useCreateRequest } from '../hooks/useCreateRequest'; import { useDeleteRequest } from '../hooks/useDeleteRequest'; import { useRequests } from '../hooks/useRequests'; import { useTheme } from '../hooks/useTheme'; import { useUpdateRequest } from '../hooks/useUpdateRequest'; import type { HttpRequest } from '../lib/models'; import { Button } from './core/Button'; import { IconButton } from './core/IconButton'; import { HStack, VStack } from './core/Stacks'; import { WindowDragRegion } from './core/WindowDragRegion'; interface Props { className?: string; } export function Sidebar({ className }: Props) { const requests = useRequests(); const activeRequest = useActiveRequest(); const deleteRequest = useDeleteRequest(activeRequest); 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 deleteRequest = useDeleteRequest(request); 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(); el?.select(); }; return (
  • deleteRequest.mutate()} />
  • ); }