<script>
	import HomeIcons from './home-icons.svelte';
	import Project from './project.svelte';
</script>

<div class="content-slim">
	<div class="item">
		<HomeIcons />
	</div>
	<div class="item home-greeting">
		<h1>Welcome to my internet space</h1>
	</div>
	<div class="item home-description">
		<p>
			Hello, I'm Trivernis, a german software developer, working on way too many projects at once.
			My pronouns are he/they. I primarily use Rust because it's just the best programming language.
		</p>
	</div>
	<div class="item github-stats">
		<img
			alt="Dynamically generated by GitHub readme stats. It displays my total stars earned, total commits, PRs, issues and repositories."
			src="https://github-readme-stats.vercel.app/api?username=trivernis&show_icons=true&theme=tokyonight"
		/>
		<img
			alt="Dynamically generated by GitHub readme stats. It displays my most used languages. At the time of writing this it's rust with 53%."
			src="https://github-readme-stats.vercel.app/api/top-langs/?username=trivernis&hide=html&show_icons=true&theme=tokyonight"
		/>
	</div>
	<div class="item projects">
		<h1>Some Projects</h1>
		<Project
			name="Mediarepo"
			href="https://mediarepo.trivernis.dev"
			description="A media management tool written in Rust and Angular.
			It uses tags to sort images into categories and can be run fully headless.
			Furthermore it can be run in a classic server-client fashion as well as a single
			desktop application."
		/>
		<Project
			name="2b-rs"
			href="https://git.trivernis.net/Trivernis/2b-rs"
			description="A discord bot written in Rust.
			It provides commands for playing music, searching for xkcd comics, finding image sources etc."
		/>
		<Project
			name="rusty-value"
			href="https://git.trivernis.net/Trivernis/rusty-value"
			description="A Rust libary to get a generic representation for any rust type.
			The library features a derive trait to create a rusty value from any type. The value can
			be inspected by using match expressions."
		/>
		<Project
			name="multi-trait-object"
			href="https://git.trivernis.net/Trivernis/multi-trait-object"
			description="A Rust library to store all traits alongside a dynamic value.
			Usually dyn types in rust only support one non-marker trait since the fat pointer representation
			of a dyn type only includes one pointer to the data and one pointer to the v-table of the trait.
			This libary creates even fatter pointers for trait objects to store multiple v-table pointers alongside
			a data pointer. This way you can create dyn objects that are both Clone and Debug.
			Also this libary is super unsafe."
		/>
		<Project
			name="Snekdown"
			href="https://git.trivernis.net/Trivernis/snekdown"
			description="A custom markdown flavour with a parser and html renderer written entirely in Rust."
		/>
		<h4>And there's even more on my Git and GitHub...</h4>
	</div>
</div>

<style lang="scss">
	.content-slim {
		display: flex;
		flex-direction: column;
		margin: 5% 15% 5em;
	}

	.item {
		flex-basis: 66%;
		margin: auto;
	}

	.home-greeting {
		display: flex;
		margin: auto;
		width: 100%;

		h1 {
			font-size: 3em;
			text-align: center;
			width: 100%;
		}
	}

	.home-description {
		width: 100%;
		font-size: 1.5em;
		margin: auto;
		text-align: center;
	}

	.github-stats {
		margin: auto;
		display: flex;
		align-items: center;
		flex-wrap: wrap;
		width: 100%;

		img {
			padding: 5px;
			margin: auto;
			display: flex;
			max-width: 100%;
		}
	}
	@media screen and (max-width: 1000px) {
		.home-greeting {
			h1 {
				font-size: 2em;
			}
		}
		.home-description {
			font-size: 1.2em;
		}
	}
</style>
