From ba8d911ddf7d346bf3a81090587ed481a6063085 Mon Sep 17 00:00:00 2001
From: ShyProton <shayanr1001@gmail.com>
Date: Tue, 23 Jan 2024 15:28:55 -0500
Subject: [PATCH] feat: adds header items, title logo

---
 compile.sh                      |  3 --
 src/routes/+layout.svelte       |  6 +--
 src/routes/Header.svelte        | 61 --------------------------
 src/routes/Header/Header.svelte | 78 +++++++++++++++++++++++++++++++++
 src/routes/Header/Item.svelte   | 36 +++++++++++++++
 5 files changed, 117 insertions(+), 67 deletions(-)
 delete mode 100644 src/routes/Header.svelte
 create mode 100644 src/routes/Header/Header.svelte
 create mode 100644 src/routes/Header/Item.svelte

diff --git a/compile.sh b/compile.sh
index 3e438b1..9e924df 100755
--- a/compile.sh
+++ b/compile.sh
@@ -1,7 +1,4 @@
 #!/bin/sh
-
-
-
 make
 
 cd bin/
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 2b57e98..d42b39b 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -1,11 +1,11 @@
 <script lang="ts">
-	import '../app.css';
-	import Header from './Header.svelte';
+  import "../app.css";
+  import Header from "./Header/Header.svelte";
 </script>
 
 <Header />
 <slot />
 
 <style>
-	@import '../variables.css';
+  @import "../variables.css";
 </style>
diff --git a/src/routes/Header.svelte b/src/routes/Header.svelte
deleted file mode 100644
index 733c272..0000000
--- a/src/routes/Header.svelte
+++ /dev/null
@@ -1,61 +0,0 @@
-<nav>
-	<div class="title">Library Manager</div>
-	<div class="items">
-		<div></div>
-		<!--  TODO: Switch icon between nf-md-view_list and nf-md-view_grid -->
-		<div>󰕰</div>
-		<div></div>
-	</div>
-</nav>
-
-<style>
-	nav {
-		height: 80px;
-		background-color: var(--dark-gray);
-		display: flex;
-		align-items: center;
-
-		& div {
-			height: 100%;
-			width: 50%;
-
-			padding: 0 20px;
-
-			display: flex;
-			align-items: center;
-
-			user-select: none;
-			-webkit-user-select: none;
-			-ms-user-select: none;
-
-			&:hover {
-				cursor: default;
-			}
-
-			&.title {
-				font-size: 40px;
-				font-weight: bold;
-				font-family: 'Oswald', sans-serif;
-			}
-
-			&.items {
-				font-family: 'NFSymbols', monospace;
-				font-size: 20px;
-
-				justify-content: flex-end;
-
-				& div {
-					width: auto;
-
-					display: flex;
-					justify-content: center;
-					align-items: center;
-
-					&:last-child {
-						padding-right: 0;
-					}
-				}
-			}
-		}
-	}
-</style>
diff --git a/src/routes/Header/Header.svelte b/src/routes/Header/Header.svelte
new file mode 100644
index 0000000..8aa8dea
--- /dev/null
+++ b/src/routes/Header/Header.svelte
@@ -0,0 +1,78 @@
+<script lang="ts">
+  import Item from "./Item.svelte";
+
+  enum ViewMode {
+    Grid,
+    List,
+  }
+
+  let view_mode = ViewMode.Grid;
+
+  function toggle_view() {
+    if (view_mode == ViewMode.Grid) {
+      view_mode = ViewMode.List;
+    } else if (view_mode == ViewMode.List) {
+      view_mode = ViewMode.Grid;
+    }
+  }
+</script>
+
+<nav>
+  <div class="title">
+    <div class="icon">󰗚</div>
+    Library Manager
+  </div>
+  <div class="items">
+    <Item></Item>
+    <Item on:click={toggle_view}>
+      {#if view_mode == ViewMode.Grid}
+        󰕰
+      {:else if view_mode == ViewMode.List}
+        󰕲
+      {/if}
+    </Item>
+    <Item></Item>
+  </div>
+</nav>
+
+<style>
+  nav {
+    height: 80px;
+    background-color: var(--dark-gray);
+    display: flex;
+    align-items: center;
+
+    & div {
+      height: 100%;
+
+      padding: 0 20px;
+
+      display: flex;
+      align-items: center;
+
+      user-select: none;
+      -webkit-user-select: none;
+      -ms-user-select: none;
+
+      &:hover {
+        cursor: default;
+      }
+
+      &.title {
+        & .icon {
+          font-family: "NFSymbols", monospace;
+          padding-left: 0;
+        }
+
+        width: 100%;
+        font-size: 40px;
+        font-weight: bold;
+        font-family: "Oswald", sans-serif;
+      }
+
+      &.items {
+        justify-content: flex-end;
+      }
+    }
+  }
+</style>
diff --git a/src/routes/Header/Item.svelte b/src/routes/Header/Item.svelte
new file mode 100644
index 0000000..4e302c3
--- /dev/null
+++ b/src/routes/Header/Item.svelte
@@ -0,0 +1,36 @@
+<button>
+  <slot />
+</button>
+
+<style>
+  button {
+    font-family: "NFSymbols", monospace;
+    font-size: 20px;
+    color: var(--foreground);
+
+    padding: 0 10px;
+    margin: 0 10px;
+    border-radius: 50%;
+
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    background: transparent;
+    border: none;
+
+    aspect-ratio: 1;
+
+    transition: background-color 0.1s linear, text-shadow 0.1s linear;
+
+    &:hover {
+      cursor: pointer;
+      background-color: var(--light-gray);
+      text-shadow: 2px 2px var(--dark-gray);
+    }
+
+    &:last-child {
+      margin-right: 0;
+    }
+  }
+</style>