fix InlineError blank space and ElicitationUrlPanel URL overflow

Only render InlineError details Stack when there is content to show.
Add wrapping Code theme variant for long URLs that would push buttons
offscreen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
cliffhall 2026-03-22 18:49:26 -04:00
commit 4a4818e933
3 changed files with 37 additions and 25 deletions

View file

@ -16,28 +16,33 @@ export function InlineError({
maxRetries,
docLink,
}: InlineErrorProps) {
const hasDetails =
retryCount !== undefined || details !== undefined || docLink !== undefined;
return (
<Alert color="red" variant="light" title={message}>
<Stack gap="xs">
{retryCount !== undefined && (
<Text size="sm">
Retry attempt {retryCount}
{maxRetries !== undefined && ` of ${maxRetries}`}
</Text>
)}
{details && (
<Spoiler maxHeight={0} showLabel="Show more" hideLabel="Show less">
<Text size="sm">{details}</Text>
</Spoiler>
)}
{docLink && (
<Group>
<Anchor href={docLink} target="_blank" size="sm">
View Troubleshooting Guide &rarr;
</Anchor>
</Group>
)}
</Stack>
{hasDetails && (
<Stack gap="xs">
{retryCount !== undefined && (
<Text size="sm">
Retry attempt {retryCount}
{maxRetries !== undefined && ` of ${maxRetries}`}
</Text>
)}
{details && (
<Spoiler maxHeight={0} showLabel="Show more" hideLabel="Show less">
<Text size="sm">{details}</Text>
</Spoiler>
)}
{docLink && (
<Group>
<Anchor href={docLink} target="_blank" size="sm">
View Troubleshooting Guide &rarr;
</Anchor>
</Group>
)}
</Stack>
)}
</Alert>
);
}

View file

@ -35,7 +35,9 @@ export function ElicitationUrlPanel({
</Text>
<Divider />
<Text size="sm">The server is requesting you visit:</Text>
<Code block>{url}</Code>
<Code block variant="wrapping">
{url}
</Code>
<Group>
<Button variant="light" onClick={onCopyUrl}>
Copy URL

View file

@ -1,9 +1,14 @@
import { Code } from "@mantine/core";
export const ThemeCode = Code.extend({
styles: () => ({
root: {
styles: (_theme, props) => {
const root: Record<string, string> = {
backgroundColor: "var(--inspector-surface-code)",
},
}),
};
if (props.variant === "wrapping") {
root.wordBreak = "break-all";
root.whiteSpace = "pre-wrap";
}
return { root };
},
});