auto-claude: subtask-1-1 - Restructure SortableFeatureCard badge layout

- Reorganize layout for better visual hierarchy: title first, then description, then metadata
- Make badges more compact with smaller text (text-[10px]) and reduced padding (px-1.5 py-0)
- Separate priority badge in header from complexity/impact badges in footer
- Replace competitor insight text with icon-only badge (with tooltip)
- Reduce card padding from p-4 to p-3
- Change title from truncate to line-clamp-2 for better readability
- Move complexity and impact badges to dedicated metadata row at bottom
- Remove " impact" text suffix for cleaner look
- Shorten "Go to Task" button text to "Task"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
AndyMik90
2025-12-17 22:04:47 +01:00
parent 32760348ae
commit dc886dce44
@@ -64,39 +64,27 @@ export function SortableFeatureCard({
{...listeners} {...listeners}
> >
<Card <Card
className="p-4 hover:bg-muted/50 cursor-pointer transition-colors" className="p-3 hover:bg-muted/50 cursor-pointer transition-colors"
onClick={onClick} onClick={onClick}
> >
<div className="flex items-start justify-between"> {/* Header - Title with priority badge and action button */}
<div className="flex items-start justify-between gap-2">
<div className="flex-1 min-w-0"> <div className="flex-1 min-w-0">
<div className="flex items-center gap-2 mb-1 flex-wrap"> <div className="flex items-center gap-1.5 mb-1">
<Badge <Badge
variant="outline" variant="outline"
className={ROADMAP_PRIORITY_COLORS[feature.priority]} className={cn('text-[10px] px-1.5 py-0', ROADMAP_PRIORITY_COLORS[feature.priority])}
> >
{ROADMAP_PRIORITY_LABELS[feature.priority]} {ROADMAP_PRIORITY_LABELS[feature.priority]}
</Badge> </Badge>
<Badge
variant="outline"
className={`text-xs ${ROADMAP_COMPLEXITY_COLORS[feature.complexity]}`}
>
{feature.complexity}
</Badge>
<Badge
variant="outline"
className={`text-xs ${ROADMAP_IMPACT_COLORS[feature.impact]}`}
>
{feature.impact} impact
</Badge>
{hasCompetitorInsight && ( {hasCompetitorInsight && (
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Badge <Badge
variant="outline" variant="outline"
className="text-xs text-primary border-primary/50" className="text-[10px] px-1.5 py-0 text-primary border-primary/50"
> >
<TrendingUp className="h-3 w-3 mr-1" /> <TrendingUp className="h-2.5 w-2.5" />
Competitor Insight
</Badge> </Badge>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent> <TooltipContent>
@@ -105,39 +93,61 @@ export function SortableFeatureCard({
</Tooltip> </Tooltip>
)} )}
</div> </div>
<h3 className="font-medium truncate">{feature.title}</h3> <h3 className="font-medium text-sm leading-snug line-clamp-2">{feature.title}</h3>
<p className="text-sm text-muted-foreground line-clamp-2">
{feature.description}
</p>
</div> </div>
{feature.linkedSpecId ? ( <div className="shrink-0">
<Button {feature.linkedSpecId ? (
variant="outline"
size="sm"
onClick={(e) => {
e.stopPropagation();
onGoToTask?.(feature.linkedSpecId!);
}}
>
<ExternalLink className="h-3 w-3 mr-1" />
Go to Task
</Button>
) : (
feature.status !== 'done' &&
onConvertToSpec && (
<Button <Button
variant="outline" variant="outline"
size="sm" size="sm"
className="h-7 px-2"
onClick={(e) => { onClick={(e) => {
e.stopPropagation(); e.stopPropagation();
onConvertToSpec(feature); onGoToTask?.(feature.linkedSpecId!);
}} }}
> >
<Play className="h-3 w-3 mr-1" /> <ExternalLink className="h-3 w-3 mr-1" />
Build Task
</Button> </Button>
) ) : (
)} feature.status !== 'done' &&
onConvertToSpec && (
<Button
variant="outline"
size="sm"
className="h-7 px-2"
onClick={(e) => {
e.stopPropagation();
onConvertToSpec(feature);
}}
>
<Play className="h-3 w-3 mr-1" />
Build
</Button>
)
)}
</div>
</div>
{/* Description */}
<p className="mt-1.5 text-xs text-muted-foreground line-clamp-2">
{feature.description}
</p>
{/* Metadata badges - compact row */}
<div className="mt-2 flex items-center gap-1.5">
<Badge
variant="outline"
className={cn('text-[10px] px-1.5 py-0', ROADMAP_COMPLEXITY_COLORS[feature.complexity])}
>
{feature.complexity}
</Badge>
<Badge
variant="outline"
className={cn('text-[10px] px-1.5 py-0', ROADMAP_IMPACT_COLORS[feature.impact])}
>
{feature.impact}
</Badge>
</div> </div>
</Card> </Card>
</div> </div>