@@ -7,8 +7,14 @@ import {
77 CardHeader ,
88 CardTitle ,
99} from " ./ui/card" ;
10- import { Circle , Star , GitFork , ExternalLink } from " lucide-react" ;
10+ import {
11+ CircleIcon ,
12+ StarIcon ,
13+ GitForkIcon ,
14+ ExternalLinkIcon ,
15+ } from " lucide-react" ;
1116import { Badge } from " ./ui/badge" ;
17+ import { Image } from " astro:assets" ;
1218
1319interface Props {
1420 repo: Awaited <ReturnType <typeof fetchUserRepos >>[number ];
@@ -23,35 +29,51 @@ const languageColours: Record<string, string> = {
2329 Java: " #b07219" ,
2430 Kotlin: " #A97BFF" ,
2531 Astro: " #ff5a03" ,
32+ Shell: " #89e051" ,
2633};
2734
2835const repoLanguageColour = repo .language
2936 ? languageColours [repo .language ]
3037 : null ;
3138---
3239
33- <Card className =" overflow-hidden" >
34- <CardHeader className =" pb-4" >
35- <CardTitle
36- className =" flex shrink items-center justify-between truncate text-lg"
37- >
38- <a
39- href ={ repo .html_url }
40- class =" inline-flex items-center gap-2 hover:underline"
41- target =" _blank"
42- rel =" noopener noreferrer"
40+ <Card className =" group overflow-hidden" >
41+ <CardHeader className =" pb-3" >
42+ <div class =" flex flex-col gap-y-1" >
43+ <div class =" flex flex-row items-center gap-1.5" >
44+ <Image
45+ src ={ repo .owner .avatar_url }
46+ alt ={ repo .owner .login }
47+ width ={ 24 }
48+ height ={ 24 }
49+ class =" rounded-full"
50+ />
51+ <a href ={ repo .owner .html_url } class =" text-xs hover:underline" >
52+ { repo .owner .name ?? repo .owner .login }
53+ </a >
54+ {
55+ repo .archived && (
56+ <Badge variant = " destructive" className = " ml-auto" >
57+ Archived
58+ </Badge >
59+ )
60+ }
61+ </div >
62+ <CardTitle
63+ className =" flex shrink items-center justify-between truncate text-lg"
4364 >
44- { repo .full_name }
45- <ExternalLink className =" size-4" />
46- </a >
47- {
48- repo .archived && (
49- <Badge variant = " destructive" className = " ml-4" >
50- Archived
51- </Badge >
52- )
53- }
54- </CardTitle >
65+ <a
66+ href ={ repo .html_url }
67+ class =" inline-flex items-center gap-2"
68+ target =" _blank"
69+ rel =" noopener noreferrer"
70+ >
71+ <span class =" hover:underline" >{ repo .name } </span >
72+ <ExternalLinkIcon className =" size-4" />
73+ </a >
74+ </CardTitle >
75+ </div >
76+
5577 <CardDescription className =" h-10 min-h-10 overflow-hidden" >
5678 <p class =" line-clamp-2 text-ellipsis" >{ repo .description } </p >
5779 </CardDescription >
@@ -61,7 +83,7 @@ const repoLanguageColour = repo.language
6183 repo .language && (
6284 <div class = " flex items-center" title = " Language" >
6385 { repoLanguageColour && (
64- <Circle
86+ <CircleIcon
6587 className = " mr-1 size-3"
6688 style = { {
6789 color: repoLanguageColour ,
@@ -82,13 +104,13 @@ const repoLanguageColour = repo.language
82104 }
83105
84106 <div class =" flex items-center" title =" Stars" >
85- <Star className =" mr-1 size-3" />
107+ <StarIcon className =" mr-1 size-3" />
86108 { repo .stargazers_count }
87109 <span class =" sr-only" >Stars</span >
88110 </div >
89111
90112 <div class =" flex items-center" title =" Forks" >
91- <GitFork className =" mr-1 size-3" />
113+ <GitForkIcon className =" mr-1 size-3" />
92114 { repo .forks_count }
93115 <span class =" sr-only" >Forks</span >
94116 </div >
0 commit comments