feat: added project cards and content

This commit is contained in:
Bart van der Braak 2023-07-27 12:46:23 +02:00
parent 00f23425e2
commit 1a366172fc
11 changed files with 115 additions and 79 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -1,8 +1,10 @@
<script lang="ts">
import { AppBar, LightSwitch, drawerStore } from '@skeletonlabs/skeleton';
import { AppBar, LightSwitch, ProgressBar, drawerStore } from '@skeletonlabs/skeleton';
import GitHub from './icons/GitHub.svelte';
import Hamburger from './icons/Hamburger.svelte';
export let progress: number;
function drawerOpen(): void {
drawerStore.open();
}
@ -28,3 +30,5 @@
<LightSwitch />
</svelte:fragment>
</AppBar>
<ProgressBar label="Progress Bar" value={progress} max={100} rounded="" />

View file

@ -0,0 +1,41 @@
<script>
import { Avatar } from '@skeletonlabs/skeleton';
export let link = '';
export let headerImage = '';
export let headerSubTitle = '';
export let title = '';
export let description = '';
export let logo = '';
/**
* @type {any[]}
*/
export let contributors = [];
export let date = '';
</script>
<a class="card bg-initial card-hover overflow-hidden" href={link}>
<header>
<img src={headerImage} class="bg-black/50 w-full aspect-[21/9] object-cover" alt="Post" />
</header>
<div class="p-4 space-y-4">
<h6 class="h6">{headerSubTitle}</h6>
<h3 class="h3" data-toc-ignore>{title}</h3>
<article>
<p>
{description}
</p>
</article>
</div>
<hr class="opacity-50" />
<footer class="p-4 flex justify-start items-center space-x-4">
<Avatar src={logo} width="w-8" />
<div class="flex-auto flex justify-between items-center">
{#each contributors as contributor}
<Avatar src={contributor.imageSrc} width="w-8" />
{/each}
<small>{new Date(date).toLocaleDateString()}</small>
</div>
</footer>
</a>

View file

@ -2,7 +2,7 @@
import '../theme.postcss';
import '@skeletonlabs/skeleton/styles/skeleton.css';
import '../app.postcss';
import { AppShell, Drawer, drawerStore } from '@skeletonlabs/skeleton';
import { AppShell, Drawer, ProgressBar, drawerStore } from '@skeletonlabs/skeleton';
import Footer from '../lib/components/Footer.svelte';
import Navigation from '../lib/components/Navigation.svelte';
import Header from '$lib/components/Header.svelte';
@ -13,15 +13,25 @@
{ url: '/tools', label: 'Tools' },
{ url: '/blog', label: 'Blog' }
];
let progress = 0;
function handleScroll(event: Event) {
const { scrollTop, scrollHeight, clientHeight } = event.currentTarget as HTMLElement;
progress = (scrollTop / (scrollHeight - clientHeight)) * 100;
}
</script>
<Drawer width='w-[280px] md:w-[480px]'>
<Drawer width="w-[280px] md:w-[480px]">
<Navigation {routes} />
</Drawer>
<AppShell slotSidebarLeft="w-0 md:w-52">
<AppShell
slotSidebarLeft="w-0 md:w-52"
on:scroll={handleScroll}
>
<svelte:fragment slot="header">
<Header />
<Header {progress} />
</svelte:fragment>
<svelte:fragment slot="sidebarLeft">
<Navigation {routes} />

View file

@ -1,5 +1,5 @@
<!-- About.svelte -->
<script>
<script lang='ts'>
import { calculateAge } from '$lib/calculate-age';
</script>

View file

@ -1,4 +1,3 @@
<main class="text-center">
<h2 class="h2">Blog Posts</h2>
<main class="container mx-auto px-4 py-8 text-left">
<h2 class="text-3xl font-bold mb-8">Blog posts</h2>
</main>

View file

@ -1,71 +1,52 @@
<main class="text-center">
<h2 class="h2">My Projects</h2>
<script>
import videowallImage from '$lib/assets/videowall-irl.jpeg';
import tripleLogo from '$lib/assets/triple-logo.png';
import zaantjeImage from '$lib/assets/zaantje-3d.png';
import zaantjeLogo from '$lib/assets/zaantje-logo.png';
import ProjectCard from '$lib/components/ProjectCard.svelte';
<div class="project">
<h2>Triple Ticket Dashboard</h2>
<p>Dec 2021 - Present</p>
<p>The Ticket Dashboard consolidates tickets from various sources into a centralized view.</p>
</div>
let projects = [
{
id: 1,
link: '#',
headerImage: videowallImage,
headerSubTitle: 'Internal Project',
title: 'Videowall',
description: `An internal application to control an impressive 6x5 monitor setup with a user-friendly
frontend built on Next.js and a powerful backend developed in Golang.`,
logo: tripleLogo,
contributors: [],
date: '2021'
},
{
id: 2,
link: 'https://zaantje.com',
headerImage: zaantjeImage,
headerSubTitle: 'Personal Project',
title: 'Zaantje',
description: `A SPA crafted with Nuxt.js and Vue.js, backed by Sanity CMS, taking you
on a virtual tour of Zaandam, showcasing locations of famous music videos.`,
logo: zaantjeLogo,
contributors: [],
date: '2020'
}
];
</script>
<div class="project">
<h2>Triple Videowall</h2>
<p>May 2022 - Sep 2022</p>
<p>
An internal application to control an impressive 6x5 monitor setup with a user-friendly
frontend built on Next.js and a powerful backend developed in Golang.
</p>
</div>
<div class="project">
<h2>Zaantje</h2>
<p>Jan 2020 - Jan 2021</p>
<p>
A SPA crafted with Nuxt.js and Vue.js, backed by Sanity CMS, taking you on a virtual tour of
Zaandam, showcasing locations of famous music videos.
</p>
</div>
<h2>Open Source Contributions</h2>
<div class="contribution">
<h3>microsoft/terraform-provider-azuredevops</h3>
<p>Terraform Azure DevOps provider</p>
</div>
<div class="contribution">
<h3>iKenndac/Tofu</h3>
<p>An easy-to-use two-factor authentication app for iOS</p>
</div>
<div class="contribution">
<h3>bartvdbraak/SlayerWeightCalculator</h3>
<p>A calculator for RuneScape slayer geeks that need to know percentages. (archived)</p>
<main class="container mx-auto px-4 py-8 text-left">
<h2 class="text-3xl font-bold mb-8">My Projects</h2>
<div class="w-full text-token grid grid-cols-1 md:grid-cols-2 gap-4">
{#each projects as project}
<ProjectCard
link={project.link}
headerImage={project.headerImage}
headerSubTitle={project.headerSubTitle}
title={project.title}
description={project.description}
logo={project.logo}
contributors={project.contributors}
date={project.date}
/>
{/each}
</div>
</main>
<style>
h1 {
font-size: 2.5rem;
margin-bottom: 1rem;
}
h2 {
font-size: 2rem;
margin-top: 2rem;
}
.project,
.contribution {
margin: 1rem auto;
padding: 1rem;
max-width: 500px;
border: 2px solid #007bff;
border-radius: 10px;
}
.project p,
.contribution p {
margin: 0.5rem 0;
}
</style>

View file

@ -1,4 +1,5 @@
<main class="text-center">
<h2 class="h2">My Tools</h2>
<main class="container mx-auto px-4 py-8 text-left">
<h2 class="text-3xl font-bold mb-8">DevOps</h2>
<h2 class="text-3xl font-bold mb-8">MacOS</h2>
<h2 class="text-3xl font-bold mb-8">Other</h2>
</main>