feat: add notable contributors section

This commit is contained in:
JovannMC 2025-04-26 16:19:15 +03:00
parent 95d57a0427
commit 9036d8cf4f
No known key found for this signature in database
5 changed files with 106 additions and 59 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -5,7 +5,6 @@
import Dropdown from "./Dropdown.svelte"; import Dropdown from "./Dropdown.svelte";
import Tooltip from "../visual/Tooltip.svelte"; import Tooltip from "../visual/Tooltip.svelte";
import ProgressBar from "../visual/ProgressBar.svelte"; import ProgressBar from "../visual/ProgressBar.svelte";
import { fade } from "$lib/animation";
const length = $derived(files.files.length); const length = $derived(files.files.length);
const progress = $derived(files.files.filter((f) => f.result).length); const progress = $derived(files.files.filter((f) => f.result).length);

View File

@ -3,7 +3,7 @@
import { HeartHandshakeIcon } from "lucide-svelte"; import { HeartHandshakeIcon } from "lucide-svelte";
import { GITHUB_URL_VERT } from "$lib/consts"; import { GITHUB_URL_VERT } from "$lib/consts";
let { mainContribs, ghContribs } = $props(); let { mainContribs, notableContribs, ghContribs } = $props();
</script> </script>
{#snippet contributor( {#snippet contributor(
@ -11,8 +11,9 @@
github: string, github: string,
avatar: string, avatar: string,
role?: string, role?: string,
smaller?: boolean,
)} )}
<div class="flex items-center gap-4"> <div class="flex items-center gap-4" class:gap-1={smaller}>
<a <a
href={github} href={github}
target="_blank" target="_blank"
@ -23,14 +24,22 @@
src={avatar} src={avatar}
alt={name} alt={name}
title={name} title={name}
class="{role class="{smaller
? 'w-12 h-12 hoverable'
: role
? 'w-14 h-14 hoverable-md' ? 'w-14 h-14 hoverable-md'
: 'w-10 h-10 hoverable-lg'} rounded-full" : 'w-10 h-10 hoverable-lg'} rounded-full"
/> />
</a> </a>
{#if role} {#if role}
<div class="flex flex-col gap-1"> <div class="flex flex-col gap-1">
<p class="text-xl font-semibold">{name}</p> <p
class="font-semibold"
class:text-xl={!smaller}
class:text-base={smaller}
>
{name}
</p>
<p class="text-sm font-normal text-muted">{role}</p> <p class="text-sm font-normal text-muted">{role}</p>
</div> </div>
{/if} {/if}
@ -60,6 +69,24 @@
</div> </div>
</div> </div>
<!-- Notable contributors -->
<div class="flex flex-col gap-4">
<div class="flex flex-col gap-1">
<h2 class="text-base font-bold">Notable contributors</h2>
<div class="flex flex-col gap-2">
<p class="text-base text-muted font-normal">
We'd like to thank these people for their major
contributions to VERT.
</p>
<div class="flex flex-col gap-2">
{#each notableContribs as contrib}
{@const { name, github, avatar, role } = contrib}
{@render contributor(name, github, avatar, role, true)}
{/each}
</div>
</div>
</div>
<!-- GitHub contributors --> <!-- GitHub contributors -->
<div class="flex flex-col gap-4"> <div class="flex flex-col gap-4">
<div class="flex flex-col gap-1"> <div class="flex flex-col gap-1">
@ -106,9 +133,11 @@
<h2 class="mt-2 -mb-2">Libraries</h2> <h2 class="mt-2 -mb-2">Libraries</h2>
<p class="font-normal"> <p class="font-normal">
A big thanks to FFmpeg (audio, video), libvips (images) and Pandoc A big thanks to FFmpeg (audio, video), libvips (images) and
(documents) for maintaining such excellent libraries for so many Pandoc (documents) for maintaining such excellent libraries for
years. VERT relies on them to provide you with your conversions. so many years. VERT relies on them to provide you with your
conversions.
</p> </p>
</div> </div>
</Panel> </div></Panel
>

View File

@ -6,10 +6,12 @@
import avatarNullptr from "$lib/assets/avatars/nullptr.jpg"; import avatarNullptr from "$lib/assets/avatars/nullptr.jpg";
import avatarLiam from "$lib/assets/avatars/liam.jpg"; import avatarLiam from "$lib/assets/avatars/liam.jpg";
import avatarJovannMC from "$lib/assets/avatars/jovannmc.jpg"; import avatarJovannMC from "$lib/assets/avatars/jovannmc.jpg";
import avatarRealmy from "$lib/assets/avatars/realmy.jpg";
import avatarAzurejelly from "$lib/assets/avatars/azurejelly.jpg";
import { GITHUB_API_URL } from "$lib/consts"; import { GITHUB_API_URL } from "$lib/consts";
import { addToast } from "$lib/store/ToastProvider"; import { addToast } from "$lib/store/ToastProvider";
import { dev } from "$app/environment"; // import { dev } from "$app/environment";
import { page } from "$app/state"; // import { page } from "$app/state";
/* interface Donator { /* interface Donator {
name: string; name: string;
@ -47,6 +49,21 @@
}, },
]; ];
const notableContribs: Contributor[] = [
{
name: "azurejelly",
github: "https://github.com/azurejelly",
role: "Maintaining Docker & CI support",
avatar: avatarAzurejelly,
},
{
name: "realmy",
github: "https://github.com/RealmyTheMan",
role: "Former designer & co-founder",
avatar: avatarRealmy,
}
];
let ghContribs: Contributor[] = []; let ghContribs: Contributor[] = [];
onMount(async () => { onMount(async () => {
@ -66,13 +83,15 @@
} }
const allContribs = await response.json(); const allContribs = await response.json();
// Filter out main contributors // Filter out main and notable contributors
const mainContribNames = mainContribs.map((contrib) => const excludedNames = new Set([
contrib.github.split("/").pop(), ...mainContribs.map((c) => c.github.split("/").pop()),
); ...notableContribs.map((c) => c.github.split("/").pop()),
]);
const filteredContribs = allContribs.filter( const filteredContribs = allContribs.filter(
(contrib: { login: string }) => (contrib: { login: string }) =>
!mainContribNames.includes(contrib.login), !excludedNames.has(contrib.login),
); );
// Fetch and cache avatar images as Base64 // Fetch and cache avatar images as Base64
@ -135,7 +154,7 @@
<!-- Resources & Donate to VERT --> <!-- Resources & Donate to VERT -->
<div class="flex flex-col gap-4 flex-1"> <div class="flex flex-col gap-4 flex-1">
<About.Resources /> <About.Resources />
<About.Credits {mainContribs} {ghContribs} /> <About.Credits {mainContribs} {notableContribs} {ghContribs} />
{#if donationsEnabled} {#if donationsEnabled}
<About.Vertd /> <About.Vertd />
{/if} {/if}