code/components/Repository.jsx

107 lines
2.6 KiB
React
Raw Normal View History

2021-07-12 08:23:02 +00:00
const image = {
folder: 'folder.svg',
star: 'star.svg',
};
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
function getLanguageColor(language) {
if (!language) {
return;
}
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
switch (language.toLowerCase()) {
case 'go':
return '#a1d5ed';
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
case 'julia':
return '#d35bde';
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
case 'javascript':
return '#e4f060';
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
case 'typescript':
return '#4e85de';
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
case 'vue':
return '#4ede85';
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
case 'shell':
return '#9dde4e';
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
case 'html':
return '#de704e';
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
default:
return '#bab7b6';
2021-07-05 18:32:33 +00:00
}
2021-07-12 08:23:02 +00:00
}
2021-07-05 18:32:33 +00:00
2021-07-12 08:23:02 +00:00
function Repository({url, name, stars, language, description}) {
2021-07-05 18:32:33 +00:00
return (
2021-07-13 09:24:26 +00:00
<div class="flex flex-col py-4 px-2 lg:px-0 opacity-80 hover:opacity-100 transition duration-500 ease-in-out">
2021-07-12 08:23:02 +00:00
<div class="flex-1 text-sm hover:text-blue-300 font-bold transition duration-500 ease-in-out">
2021-07-05 18:32:33 +00:00
<a href={url}>
<div class="flex flex-row items-center">
<div class="flex-initial">
<img
src={image.folder}
class="text-white h-3 w-3 fill-current inline"
alt="Repository"
/>
</div>
<div class="flex-initial px-4">
{ name }
</div>
</div>
</a>
</div>
<div class="flex-2 text-xs opacity-80 lg:w-2/3">
{ description }
</div>
<div class="flex-1">
<div class="flex flex-row items-center">
<div class="flex-1 text-xs">
<div class="flex flex-row items-center content-center">
<div class="flex-initial">
<svg
v-show="language"
class="h-2 w-2 inline"
viewBox="0 0 100 100"
>
<circle
cx="50"
cy="50"
r="40"
2021-07-12 08:23:02 +00:00
fill={getLanguageColor(language)}
2021-07-05 18:32:33 +00:00
/>
</svg>
</div>
<div class="flex-initial px-2">
{ language }
</div>
</div>
</div>
<div
v-show="stars > 0"
class="flex-2 text-xs"
>
<div class="flex flex-row items-center content-center">
<div class="flex-initial">
<img
src={image.star}
class="text-white font-bold h-3 w-3 fill-current -inset-y-1"
alt="Stargazers"
/>
</div>
<div class="flex-initial px-2">
{ stars }
</div>
</div>
</div>
</div>
</div>
</div>
);
}
export default Repository;