feat(goose2): Alex redesign — tighten agents page

- Card and figure sized down ~20% (w-200→160, h-420→336) for a tighter grid.
- Persona name promoted out of the description paragraph onto its own row
  above the body, so the pill reads as a label rather than an inline prefix.
- Gallery container switches from fixed gap-32 to justify-evenly with a gap-8
  floor — cards redistribute evenly when the sidebar collapses and fall back
  to horizontal scroll when they overflow.
- SkeletonCard updated to match the new dimensions and the split
  name/description layout.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
tulsi
2026-04-29 10:53:06 -07:00
parent a9937f0f56
commit 8bc0af21cd
2 changed files with 14 additions and 10 deletions
@@ -76,14 +76,14 @@ export function PersonaCard({
onKeyDown={handleCardKeyDown}
tabIndex={0}
className={cn(
"group relative flex w-[200px] shrink-0 cursor-pointer flex-col py-4",
"group relative flex w-[160px] shrink-0 cursor-pointer flex-col py-4",
"transition-colors duration-200",
isActive && "bg-black/[0.03]",
)}
>
{/* Fixed-height figure box: figure aligned to bottom, centered horizontally;
wider figures bleed into the gap between cells (intentional editorial overflow) */}
<div className="flex h-[420px] w-full items-end justify-center">
<div className="flex h-[336px] w-full items-end justify-center">
<img
src={resolvePersonaFigure(persona.displayName)}
alt=""
@@ -94,10 +94,13 @@ export function PersonaCard({
<div className="mt-4 h-px w-full bg-black/30" />
<p className="mt-4 line-clamp-6 h-[144px] w-full text-[16px] leading-[24px] text-[var(--text-muted-alex)]">
<span className="mr-1 inline-flex h-5 items-center rounded-full bg-[var(--surface-button)] px-[6px] pb-[3px] align-middle text-[14px] text-[var(--text-title-alex)]">
<div className="mt-4 w-full">
<span className="inline-flex h-5 items-center rounded-full bg-[var(--surface-button)] px-[6px] pb-[3px] text-[14px] text-[var(--text-title-alex)]">
{persona.displayName}
</span>
</div>
<p className="mt-2 line-clamp-6 h-[144px] w-full text-[16px] leading-[24px] text-[var(--text-muted-alex)]">
{persona.systemPrompt}
</p>
@@ -20,12 +20,13 @@ interface PersonaGalleryProps {
function SkeletonCard() {
return (
<div aria-hidden="true" className="flex w-[200px] shrink-0 flex-col py-4">
<div className="flex h-[420px] w-full items-end justify-center">
<Skeleton className="h-full w-[140px]" />
<div aria-hidden="true" className="flex w-[160px] shrink-0 flex-col py-4">
<div className="flex h-[336px] w-full items-end justify-center">
<Skeleton className="h-full w-[112px]" />
</div>
<Skeleton className="mt-4 h-px w-full" />
<Skeleton className="mt-4 h-[144px] w-full" />
<Skeleton className="mt-4 h-5 w-24 rounded-full" />
<Skeleton className="mt-2 h-[144px] w-full" />
</div>
);
}
@@ -58,7 +59,7 @@ export function PersonaGallery({
<section
role="status"
aria-label={t("gallery.loading")}
className="flex h-full items-center gap-32 overflow-x-auto px-16"
className="flex h-full items-center justify-evenly gap-8 overflow-x-auto px-16"
>
<SkeletonCard />
<SkeletonCard />
@@ -72,7 +73,7 @@ export function PersonaGallery({
<section
{...dropHandlers}
className={cn(
"flex h-full items-center gap-32 overflow-x-auto px-16 transition-colors",
"flex h-full items-center justify-evenly gap-8 overflow-x-auto px-16 transition-colors",
isDragOver && "ring-2 ring-ring ring-offset-2 ring-inset",
)}
>