diff --git a/src-tauri/src/window_ext.rs b/src-tauri/src/window_ext.rs index 5cad9bff..5c719184 100644 --- a/src-tauri/src/window_ext.rs +++ b/src-tauri/src/window_ext.rs @@ -1,7 +1,7 @@ use tauri::{Runtime, Window}; const TRAFFIC_LIGHT_OFFSET_X: f64 = 15.0; -const TRAFFIC_LIGHT_OFFSET_Y: f64 = 20.0; +const TRAFFIC_LIGHT_OFFSET_Y: f64 = 18.0; pub trait WindowExt { #[cfg(target_os = "macos")] diff --git a/src-web/App.tsx b/src-web/App.tsx index 661f539e..91189d59 100644 --- a/src-web/App.tsx +++ b/src-web/App.tsx @@ -1,21 +1,12 @@ import classnames from 'classnames'; import { useEffect, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; -import { Button } from './components/Button'; -import { Divider } from './components/Divider'; -import { Grid } from './components/Grid'; -import { IconButton } from './components/IconButton'; import { RequestPane } from './components/RequestPane'; import { ResponsePane } from './components/ResponsePane'; import { Sidebar } from './components/Sidebar'; import { HStack } from './components/Stacks'; import { WindowDragRegion } from './components/WindowDragRegion'; -import { - useDeleteRequest, - useRequests, - useRequestUpdate, - useSendRequest, -} from './hooks/useRequest'; +import { useRequests } from './hooks/useRequest'; type Params = { workspaceId: string; @@ -26,7 +17,6 @@ function App() { const p = useParams(); const workspaceId = p.workspaceId ?? ''; const { data: requests } = useRequests(workspaceId); - const navigate = useNavigate(); const request = requests?.find((r) => r.id === p.requestId); const [screenWidth, setScreenWidth] = useState(window.innerWidth); @@ -36,40 +26,28 @@ function App() { const isH = screenWidth > 900; return ( -
+
{request && ( -
-
+
+
-
- navigate(`/workspaces/${workspaceId}`)} - /> -
-
{request.name}
-
+ {request.name}
diff --git a/src-web/components/Button.tsx b/src-web/components/Button.tsx index a9328d6e..1b699d9f 100644 --- a/src-web/components/Button.tsx +++ b/src-web/components/Button.tsx @@ -52,7 +52,7 @@ export const Button = forwardRef(function Button( justify === 'center' && 'justify-center', size === 'md' && 'h-10 px-4', size === 'sm' && 'h-8 px-3 text-sm', - size === 'xs' && 'h-6 px-3 text-xs', + size === 'xs' && 'h-7 px-2.5 text-sm', )} {...props} > diff --git a/src-web/components/Editor/Editor.css b/src-web/components/Editor/Editor.css index ebdccbea..217c24ca 100644 --- a/src-web/components/Editor/Editor.css +++ b/src-web/components/Editor/Editor.css @@ -12,7 +12,7 @@ } .cm-editor { - @apply w-full block text-[0.85rem] bg-gray-25; + @apply bg-background w-full block text-[0.85rem]; &.cm-focused { outline: none !important; @@ -70,7 +70,7 @@ } .cm-editor .cm-gutters { - @apply bg-gray-25 border-0 text-gray-200; + @apply bg-background border-0 text-gray-200; } .cm-editor .cm-gutterElement { diff --git a/src-web/components/Editor/Editor.tsx b/src-web/components/Editor/Editor.tsx index 026c5839..2cff62a2 100644 --- a/src-web/components/Editor/Editor.tsx +++ b/src-web/components/Editor/Editor.tsx @@ -4,7 +4,7 @@ import { Compartment, EditorState } from '@codemirror/state'; import { keymap, placeholder as placeholderExt, tooltips } from '@codemirror/view'; import classnames from 'classnames'; import { EditorView } from 'codemirror'; -import type { HTMLAttributes } from 'react'; +import type { CSSProperties, HTMLAttributes } from 'react'; import { useEffect, useMemo, useRef, useState } from 'react'; import './Editor.css'; import { baseExtensions, getLanguageExtension, multiLineExtensions } from './extensions'; @@ -13,6 +13,7 @@ import { singleLineExt } from './singleLine'; export interface EditorProps extends Omit, 'onChange'> { height?: 'auto' | 'full'; contentType?: string; + backgroundColor?: string; autoFocus?: boolean; valueKey?: string | number; defaultValue?: string; @@ -26,6 +27,7 @@ export interface EditorProps extends Omit, 'onCha export default function Editor({ height, contentType, + backgroundColor, autoFocus, placeholder, valueKey, @@ -100,6 +102,7 @@ export default function Editor({ height === 'auto' ? 'cm-auto-height' : 'cm-full-height', singleLine ? 'cm-singleline' : 'cm-multiline', )} + data-color-background="var(--color-gray-50)" {...props} /> ); diff --git a/src-web/components/RequestPane.tsx b/src-web/components/RequestPane.tsx index 5f440c66..f005d42e 100644 --- a/src-web/components/RequestPane.tsx +++ b/src-web/components/RequestPane.tsx @@ -2,7 +2,6 @@ import classnames from 'classnames'; import { useRequestUpdate, useSendRequest } from '../hooks/useRequest'; import type { HttpRequest } from '../lib/models'; import { Button } from './Button'; -import { Divider } from './Divider'; import Editor from './Editor/Editor'; import { ScrollArea } from './ScrollArea'; import { HStack } from './Stacks'; @@ -18,10 +17,12 @@ export function RequestPane({ fullHeight, request, className }: Props) { const updateRequest = useRequestUpdate(request ?? null); const sendRequest = useSendRequest(request ?? null); return ( -
-
+
+
updateRequest.mutate({ url })} sendRequest={sendRequest.mutate} /> -
- -
+ {/**/}
{/**/} diff --git a/src-web/components/ResponsePane.tsx b/src-web/components/ResponsePane.tsx index 0560dd98..e2b7aa74 100644 --- a/src-web/components/ResponsePane.tsx +++ b/src-web/components/ResponsePane.tsx @@ -1,13 +1,10 @@ import classnames from 'classnames'; import { useEffect, useMemo, useState } from 'react'; import { useDeleteAllResponses, useDeleteResponse, useResponses } from '../hooks/useResponses'; -import { Button } from './Button'; -import { Divider } from './Divider'; import { Dropdown } from './Dropdown'; import Editor from './Editor/Editor'; import { Icon } from './Icon'; import { IconButton } from './IconButton'; -import { ScrollArea } from './ScrollArea'; import { HStack } from './Stacks'; interface Props { @@ -45,23 +42,23 @@ export function ResponsePane({ requestId, className }: Props) { }, [response?.body, contentType]); return ( -
- {/**/} - {/**/} - {response?.error && ( -
{response.error}
- )} - {response && ( - <> -
+
+
+ {/**/} + {/**/} + {response?.error && ( +
{response.error}
+ )} + {response && ( + <>
{response.status} @@ -104,43 +101,27 @@ export function ResponsePane({ requestId, className }: Props) { -
- -
-
- - - {['Preview', 'Headers', 'Cookies', 'Timing'].map((label, i) => ( - - ))} - - - {viewMode === 'pretty' && contentForIframe !== null ? ( -
-