Skip to content

Commit a24a139

Browse files
samejrericallam
authored andcommitted
Nicer display of versions
1 parent 1b2a447 commit a24a139

1 file changed

Lines changed: 42 additions & 52 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: 42 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import { InputGroup } from "~/components/primitives/InputGroup";
3232
import { Label } from "~/components/primitives/Label";
3333
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
3434
import { Paragraph } from "~/components/primitives/Paragraph";
35+
import { RadioButtonCircle } from "~/components/primitives/RadioButton";
3536
import { Popover, PopoverContent, PopoverTrigger } from "~/components/primitives/Popover";
3637
import * as Property from "~/components/primitives/PropertyTable";
3738
import {
@@ -717,7 +718,10 @@ export default function PromptDetailPage() {
717718
</div>
718719

719720
{/* Tab content */}
720-
<div className="overflow-y-auto px-3 py-3 scrollbar-thin scrollbar-track-transparent scrollbar-thumb-charcoal-600">
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+
)}>
721725
{tab === "details" && (
722726
<DetailsTab prompt={prompt} selectedVersion={selectedVersion} />
723727
)}
@@ -1870,72 +1874,58 @@ function VersionsTab({
18701874
onSelectVersion: (version: number) => void;
18711875
}) {
18721876
return (
1873-
<div>
1877+
<div className="divide-y divide-grid-dimmed border-b border-grid-dimmed">
18741878
{versions.map((v) => {
18751879
const isSelected = selectedVersion?.id === v.id;
18761880
const isCurrent = v.labels.includes("current");
18771881
const isLatest = v.labels.includes("latest");
18781882
const isOverride = v.labels.includes("override");
18791883

1880-
const dotColor = isOverride
1881-
? "bg-amber-400"
1882-
: isCurrent
1883-
? "bg-green-500"
1884-
: "bg-charcoal-600";
1885-
18861884
return (
18871885
<div
18881886
key={v.id}
18891887
onClick={() => onSelectVersion(v.version)}
1890-
className={`group flex cursor-pointer items-start gap-2.5 border-b border-grid-dimmed px-3 py-2 transition last:border-0 ${
1891-
isSelected ? "bg-indigo-500/10" : "hover:bg-charcoal-850"
1892-
}`}
1888+
className={cn(
1889+
"flex cursor-pointer items-center gap-3 px-3 py-3 text-sm transition",
1890+
isSelected ? "bg-indigo-500/10 hover:bg-indigo-500/[0.07]" : "hover:bg-charcoal-750"
1891+
)}
18931892
>
1894-
{/* Timeline dot */}
1895-
<div className="flex flex-col items-center pt-1.5">
1896-
<div className={`size-2 rounded-full ${dotColor}`} />
1897-
</div>
1898-
1899-
{/* Content */}
1900-
<div className="flex min-w-0 flex-1 flex-col gap-0.5">
1901-
<div className="flex items-center justify-between">
1902-
<div className="flex items-center gap-1.5">
1903-
<span
1904-
className={`text-xs font-medium ${
1905-
isSelected ? "text-text-bright" : "text-text-bright"
1906-
}`}
1907-
>
1908-
v{v.version}
1909-
</span>
1910-
{isOverride && (
1911-
<Badge variant="extra-small" className="border-amber-500/30 text-amber-400">
1912-
override
1913-
</Badge>
1893+
<RadioButtonCircle checked={isSelected} />
1894+
<div className="min-w-0 flex-1">
1895+
<div className="flex items-center gap-1.5">
1896+
<div
1897+
className={cn(
1898+
"size-2 shrink-0 rounded-full",
1899+
isOverride
1900+
? "bg-amber-400"
1901+
: isCurrent
1902+
? "bg-green-500"
1903+
: "bg-charcoal-600"
19141904
)}
1915-
{isCurrent && <Badge variant="extra-small">current</Badge>}
1916-
{isLatest && !isCurrent && <Badge variant="extra-small">latest</Badge>}
1917-
</div>
1918-
<span className="text-xxs text-text-dimmed">
1919-
<DateTime date={v.createdAt} />
1920-
</span>
1921-
</div>
1922-
1923-
<div className="flex items-center gap-1.5 text-xxs text-text-dimmed">
1924-
<span className={v.source !== "code" ? "text-amber-400" : ""}>{v.source}</span>
1925-
{v.model && (
1926-
<>
1927-
<span className="text-charcoal-600">/</span>
1928-
<span>{v.model}</span>
1929-
</>
1930-
)}
1931-
{v.commitMessage && (
1932-
<>
1933-
<span className="text-charcoal-600">/</span>
1934-
<span className="truncate">{v.commitMessage}</span>
1935-
</>
1905+
/>
1906+
<span className="font-medium text-text-bright">v{v.version}</span>
1907+
{isOverride && (
1908+
<Badge variant="extra-small" className="border-amber-500/30 text-amber-400">
1909+
override
1910+
</Badge>
19361911
)}
1912+
{isCurrent && <Badge variant="extra-small">current</Badge>}
1913+
{isLatest && !isCurrent && <Badge variant="extra-small">latest</Badge>}
1914+
<span className={cn("text-xs", v.source !== "code" ? "text-amber-400" : "text-text-dimmed")}>
1915+
{v.source}
1916+
</span>
19371917
</div>
1918+
{(v.model || v.commitMessage) && (
1919+
<div className="flex items-center gap-1.5 truncate text-xs text-text-dimmed">
1920+
{v.model && <span>{v.model}</span>}
1921+
{v.model && v.commitMessage && <span className="text-charcoal-600">/</span>}
1922+
{v.commitMessage && <span className="truncate">{v.commitMessage}</span>}
1923+
</div>
1924+
)}
19381925
</div>
1926+
<span className="shrink-0 text-xs text-text-dimmed">
1927+
<DateTime date={v.createdAt} />
1928+
</span>
19391929
</div>
19401930
);
19411931
})}

0 commit comments

Comments
 (0)