Skip to content

Commit 8d5b28f

Browse files
committed
feat: full-width override banner, cleaner header for prompt detail page
1 parent db26f63 commit 8d5b28f

File tree

1 file changed

+33
-26
lines changed
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug

1 file changed

+33
-26
lines changed

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug/route.tsx

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -497,13 +497,11 @@ export default function PromptDetailPage() {
497497
<span className="text-xs text-text-dimmed">
498498
v{selectedVersion.version}
499499
{isCurrent && <span className="ml-1 text-green-500">current</span>}
500+
{selectedVersion.labels.includes("override") && (
501+
<span className="ml-1 text-amber-400">override</span>
502+
)}
500503
</span>
501504
)}
502-
{overrideVersion && (
503-
<Badge variant="extra-small" className="border-amber-500/30 text-amber-400">
504-
override active (v{overrideVersion.version})
505-
</Badge>
506-
)}
507505
{selectedVersion && !isCurrent && selectedVersion.source === "code" && (
508506
<Button
509507
variant="tertiary/small"
@@ -529,12 +527,38 @@ export default function PromptDetailPage() {
529527
Reactivate as override
530528
</Button>
531529
)}
532-
<Button variant="tertiary/small" onClick={() => setOverrideDialogOpen(true)}>
533-
{overrideVersion ? "Edit Override" : "Create Override"}
534-
</Button>
530+
{!overrideVersion && (
531+
<Button variant="tertiary/small" onClick={() => setOverrideDialogOpen(true)}>
532+
Create Override
533+
</Button>
534+
)}
535535
</div>
536536
</PageAccessories>
537537
</NavBar>
538+
{overrideVersion && (
539+
<div className="flex items-center justify-between bg-amber-500/10 px-4 py-2">
540+
<span className="text-xs text-amber-300">
541+
Override v{overrideVersion.version} is active. API calls resolve this version instead of the deployed prompt.
542+
</span>
543+
<div className="flex items-center gap-2">
544+
<Button
545+
variant="tertiary/small"
546+
onClick={() => setOverrideDialogOpen(true)}
547+
>
548+
Edit
549+
</Button>
550+
<Button
551+
variant="tertiary/small"
552+
onClick={() =>
553+
fetcher.submit({ intent: "removeOverride" }, { method: "POST" })
554+
}
555+
disabled={fetcher.state !== "idle"}
556+
>
557+
Remove
558+
</Button>
559+
</div>
560+
</div>
561+
)}
538562
<PageBody scrollable={false}>
539563
<ResizablePanelGroup
540564
autosaveId="prompt-detail"
@@ -553,28 +577,11 @@ export default function PromptDetailPage() {
553577
<ResizablePanel id="prompt-template" default="250px" min="80px">
554578
<div className="flex h-full flex-col overflow-hidden p-3 pb-0">
555579
{/* Sticky header */}
556-
<div className="mb-2 flex-shrink-0 space-y-2">
580+
<div className="mb-2 flex-shrink-0">
557581
<div className="flex items-center justify-between">
558582
<Header3>Template</Header3>
559583
{content && <CopyButton value={content} variant="icon" size="extra-small" />}
560584
</div>
561-
{overrideVersion && (
562-
<div className="flex items-center justify-between rounded border border-amber-500/30 bg-amber-500/5 px-3 py-2">
563-
<span className="text-xs text-amber-300">
564-
Dashboard override active (v{overrideVersion.version}). This version is
565-
served instead of the deployed version.
566-
</span>
567-
<Button
568-
variant="tertiary/small"
569-
onClick={() =>
570-
fetcher.submit({ intent: "removeOverride" }, { method: "POST" })
571-
}
572-
disabled={fetcher.state !== "idle"}
573-
>
574-
Remove override
575-
</Button>
576-
</div>
577-
)}
578585
</div>
579586
{/* Scrollable content */}
580587
{content ? (

0 commit comments

Comments
 (0)