Files
pages/src/routes/projects/+page.svelte

79 lines
1.9 KiB
Svelte
Raw Normal View History

<script lang="ts">
2025-04-01 21:30:20 +02:00
import BannerTitle from "$lib/banner-title.svelte";
import Header from "$lib/header.svelte";
2025-04-01 21:30:20 +02:00
import type { Project } from './projects';
import { projects } from './projects';
2025-04-01 21:30:20 +02:00
let getActiveProjects = function(projects: Project[], isActive: boolean): Project[] {
var result: Project[] = [];
projects.forEach(project => {
if (project.isActive == isActive) {
result.push(project);
}
});
return result;
}
</script>
<Header />
2025-04-01 21:30:20 +02:00
<BannerTitle title="My Disordered Projects" banner="projects/banner.webp" />
<h2>Active Projects</h2>
{#each getActiveProjects(projects, true) as activeProject}
{@render projectSummary({ project: activeProject })}
{/each}
<h2>Past Projects</h2>
{#each getActiveProjects(projects, false) as pastProject}
{@render projectSummary({ project: pastProject })}
{/each}
{#snippet projectSummary({
project
}: {
project: Project;
})}
<div>
<h3 id="{project.id}">{project.title}</h3>
2025-04-01 21:30:20 +02:00
{#if project.subtitle}
<p class="subtitle">» {project.subtitle}</p>
{/if}
{#if project.banner}
<img class="banner" src="{project.banner}">
{/if}
{#if project.icon}
<img class="icon" src="{project.icon}">
{/if}
{#each project.paragraphs as paragraph}
<p>{@html paragraph}</p>
{/each}
<ul>
{#each project.links as link}
<li><a href="{link.link}">{@html link.text}</a></li>
{/each}
</ul>
</div>
2025-04-01 21:30:20 +02:00
{/snippet}
<style>
.subtitle {
color: var(--color-highlight);
font-weight: 700;
font-style: italic;
margin-top: 0;
}
.banner {
width: 80%;
margin-left: auto;
margin-right: auto;
display: flex;
}
.icon {
float: left;
margin: 16px 16px 16px 0;
width: 20%;
}
</style>