@@ -32,6 +32,7 @@ import { InputGroup } from "~/components/primitives/InputGroup";
3232import { Label } from "~/components/primitives/Label" ;
3333import { NavBar , PageAccessories , PageTitle } from "~/components/primitives/PageHeader" ;
3434import { Paragraph } from "~/components/primitives/Paragraph" ;
35+ import { RadioButtonCircle } from "~/components/primitives/RadioButton" ;
3536import { Popover , PopoverContent , PopoverTrigger } from "~/components/primitives/Popover" ;
3637import * as Property from "~/components/primitives/PropertyTable" ;
3738import {
@@ -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