Skip to content

Commit fe2d7b7

Browse files
samejrericallam
authored andcommitted
Imrproved the Versions and override feature
1 parent 70488ac commit fe2d7b7

1 file changed

Lines changed: 49 additions & 30 deletions

File tree

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

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

Lines changed: 49 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
redirect,
1010
} from "@remix-run/server-runtime";
1111

12+
import { AnimatePresence, motion } from "framer-motion";
1213
import { useCallback, useEffect, useRef, useState } from "react";
1314
import { typedjson, useTypedLoaderData } from "remix-typedjson";
1415
import { CodeBlock } from "~/components/code/CodeBlock";
@@ -474,7 +475,7 @@ export default function PromptDetailPage() {
474475
};
475476

476477
return (
477-
<PageContainer>
478+
<PageContainer className="grid-rows-[auto_auto_1fr]">
478479
<NavBar>
479480
<PageTitle
480481
title={
@@ -530,26 +531,41 @@ export default function PromptDetailPage() {
530531
</div>
531532
</PageAccessories>
532533
</NavBar>
533-
{overrideVersion && (
534-
<div className="flex items-center justify-between bg-amber-500/10 px-4 py-2">
535-
<span className="text-xs text-amber-300">
536-
Override v{overrideVersion.version} is active. API calls resolve this version instead of
537-
the deployed prompt.
538-
</span>
539-
<div className="flex items-center gap-2">
540-
<Button variant="tertiary/small" onClick={() => setOverrideDialogOpen(true)}>
541-
Edit
542-
</Button>
543-
<Button
544-
variant="tertiary/small"
545-
onClick={() => fetcher.submit({ intent: "removeOverride" }, { method: "POST" })}
546-
disabled={fetcher.state !== "idle"}
534+
<div>
535+
<AnimatePresence initial={false}>
536+
{overrideVersion && (
537+
<motion.div
538+
className="flex flex-wrap items-center justify-between gap-2 overflow-hidden border-b border-amber-500/10 bg-amber-500/10 pl-4 pr-2"
539+
initial={{ opacity: 0, height: 0 }}
540+
animate={{ opacity: 1, height: "auto" }}
541+
exit={{ opacity: 0, height: 0 }}
542+
transition={{ duration: 0.2, ease: "easeInOut" }}
547543
>
548-
Remove
549-
</Button>
550-
</div>
551-
</div>
552-
)}
544+
<span className="py-1.5 text-xs text-amber-300">
545+
Override v{overrideVersion.version} is active. API calls resolve to this version
546+
instead of the deployed prompt.
547+
</span>
548+
<div className="flex items-center gap-2 py-1.5">
549+
<Button
550+
variant="tertiary/small"
551+
className="border-amber-300/50 bg-amber-400/10 text-amber-300 group-hover/button:border-amber-400/60 group-hover/button:bg-amber-500/25 group-hover/button:text-amber-200"
552+
onClick={() => setOverrideDialogOpen(true)}
553+
>
554+
Edit
555+
</Button>
556+
<Button
557+
variant="tertiary/small"
558+
className="border-amber-300/50 bg-amber-400/10 text-amber-300 group-hover/button:border-amber-400/60 group-hover/button:bg-amber-500/25 group-hover/button:text-amber-200"
559+
onClick={() => fetcher.submit({ intent: "removeOverride" }, { method: "POST" })}
560+
disabled={fetcher.state !== "idle"}
561+
>
562+
Remove
563+
</Button>
564+
</div>
565+
</motion.div>
566+
)}
567+
</AnimatePresence>
568+
</div>
553569
<PageBody scrollable={false}>
554570
<ResizablePanelGroup
555571
autosaveId="prompt-detail"
@@ -718,10 +734,12 @@ export default function PromptDetailPage() {
718734
</div>
719735

720736
{/* Tab content */}
721-
<div className={cn(
722-
"overflow-y-auto scrollbar-thin scrollbar-track-transparent scrollbar-thumb-charcoal-600",
723-
tab === "versions" ? "py-0" : "px-3 py-3"
724-
)}>
737+
<div
738+
className={cn(
739+
"overflow-y-auto scrollbar-thin scrollbar-track-transparent scrollbar-thumb-charcoal-600",
740+
tab === "versions" ? "py-0" : "px-3 py-3"
741+
)}
742+
>
725743
{tab === "details" && (
726744
<DetailsTab prompt={prompt} selectedVersion={selectedVersion} />
727745
)}
@@ -1896,11 +1914,7 @@ function VersionsTab({
18961914
<div
18971915
className={cn(
18981916
"size-2 shrink-0 rounded-full",
1899-
isOverride
1900-
? "bg-amber-400"
1901-
: isCurrent
1902-
? "bg-green-500"
1903-
: "bg-charcoal-600"
1917+
isOverride ? "bg-amber-400" : isCurrent ? "bg-green-500" : "bg-charcoal-600"
19041918
)}
19051919
/>
19061920
<span className="font-medium text-text-bright">v{v.version}</span>
@@ -1911,7 +1925,12 @@ function VersionsTab({
19111925
)}
19121926
{isCurrent && <Badge variant="extra-small">current</Badge>}
19131927
{isLatest && !isCurrent && <Badge variant="extra-small">latest</Badge>}
1914-
<span className={cn("text-xs", v.source !== "code" ? "text-amber-400" : "text-text-dimmed")}>
1928+
<span
1929+
className={cn(
1930+
"text-xs",
1931+
v.source !== "code" ? "text-amber-400" : "text-text-dimmed"
1932+
)}
1933+
>
19151934
{v.source}
19161935
</span>
19171936
</div>

0 commit comments

Comments
 (0)