CHORE: Cleaned up components to make main.svelte easier to maintain.
This commit is contained in:
		| @@ -3,13 +3,9 @@ | |||||||
| 	import { Toast, ToastType } from "$lib/toast"; | 	import { Toast, ToastType } from "$lib/toast"; | ||||||
|     import { addToast } from "$lib/store"; |     import { addToast } from "$lib/store"; | ||||||
|  |  | ||||||
|     import Card from '$lib/components/Card.svelte'; |     import Skills from './skills.svelte'; | ||||||
|     import Modal from '$lib/components/Modal.svelte'; |  | ||||||
|  |  | ||||||
|     import Timeline from "./timeline.svelte"; |     import Timeline from "./timeline.svelte"; | ||||||
|  |  | ||||||
| 	let showModal: boolean = false; |  | ||||||
|     let activeModal: any = null; |  | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <style> | <style> | ||||||
| @@ -65,18 +61,6 @@ | |||||||
|         font-size: 1.5em; |         font-size: 1.5em; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     .card-footer { |  | ||||||
|         margin-bottom: 1em; |  | ||||||
|         display: flex; |  | ||||||
|         gap: 1.5em; |  | ||||||
|         justify-content: space-between; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     .logo { |  | ||||||
|         color: var(--fg); |  | ||||||
|         font-size: 3em; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /* Skills Cards CSS */ |     /* Skills Cards CSS */ | ||||||
|     .container { |     .container { | ||||||
|         padding-top: 3em; |         padding-top: 3em; | ||||||
| @@ -118,22 +102,7 @@ | |||||||
|         <h1>Skills</h1> |         <h1>Skills</h1> | ||||||
|         <hr /> |         <hr /> | ||||||
|         <div class="cards"> |         <div class="cards"> | ||||||
|             {#each info.skills as skill} |             <Skills skills="{info.skills}"></Skills> | ||||||
|                 <Card on:click={() => {showModal = true; activeModal = skill}}> |  | ||||||
|                     <div slot="header"> |  | ||||||
|                         <h2>{skill.skill}</h2> |  | ||||||
|                         <i class="{skill.logo} logo"></i> |  | ||||||
|                     </div> |  | ||||||
|                     <div slot="content"> |  | ||||||
|                         <p class="not-required">{@html skill.usage}</p> |  | ||||||
|                     </div> |  | ||||||
|                     <div slot="footer"> |  | ||||||
|                         <!-- svelte-ignore a11y-invalid-attribute --> |  | ||||||
|                         <a href="#">View More</a> |  | ||||||
|                         <a href="/repos">Repos</a> |  | ||||||
|                     </div> |  | ||||||
|                 </Card> |  | ||||||
|             {/each} |  | ||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -152,24 +121,4 @@ | |||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
|     <div style="display: none;">{addToast(new Toast("Unable to load me.json", ToastType.Error, true, 3000))}</div> |     <div style="display: none;">{addToast(new Toast("Unable to load me.json", ToastType.Error, true, 3000))}</div> | ||||||
| {/await} | {/await} | ||||||
|  |  | ||||||
|  |  | ||||||
| <!--Modal to be displayed on click--> |  | ||||||
| {#if activeModal != null} |  | ||||||
|     <Modal bind:showModal> |  | ||||||
|         <h2 slot="header" class="card-header"> |  | ||||||
|             {activeModal.skill} |  | ||||||
|             <i class="{activeModal.logo} logo"></i> |  | ||||||
|         </h2> |  | ||||||
|  |  | ||||||
|         <p> |  | ||||||
|             {activeModal.about} |  | ||||||
|         </p> |  | ||||||
|  |  | ||||||
|         <div class="card-footer"> |  | ||||||
|             <a href="{activeModal.link}" target="_blank" rel="noopener noreferrer">Learn More</a> |  | ||||||
|             <a href="/repos">Repos</a> |  | ||||||
|         </div> |  | ||||||
|     </Modal> |  | ||||||
| {/if} |  | ||||||
							
								
								
									
										59
									
								
								src/skills.svelte
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								src/skills.svelte
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | |||||||
|  | <script lang="ts"> | ||||||
|  |     export let skills: any; | ||||||
|  |  | ||||||
|  |     import Card from '$lib/components/Card.svelte'; | ||||||
|  |     import Modal from '$lib/components/Modal.svelte'; | ||||||
|  |  | ||||||
|  |     let showModal: boolean = false; | ||||||
|  |     let activeModal: any = null; | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style> | ||||||
|  |     .card-footer { | ||||||
|  |         margin-bottom: 1em; | ||||||
|  |         display: flex; | ||||||
|  |         gap: 1.5em; | ||||||
|  |         justify-content: space-between; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .logo { | ||||||
|  |         color: var(--fg); | ||||||
|  |         font-size: 3em; | ||||||
|  |     } | ||||||
|  | </style> | ||||||
|  |  | ||||||
|  | {#each skills as skill} | ||||||
|  |     <Card on:click={() => {showModal = true; activeModal = skill}}> | ||||||
|  |         <div slot="header"> | ||||||
|  |             <h2>{skill.skill}</h2> | ||||||
|  |             <i class="{skill.logo} logo"></i> | ||||||
|  |         </div> | ||||||
|  |         <div slot="content"> | ||||||
|  |             <p class="not-required">{@html skill.usage}</p> | ||||||
|  |         </div> | ||||||
|  |         <div slot="footer"> | ||||||
|  |             <!-- svelte-ignore a11y-invalid-attribute --> | ||||||
|  |             <a href="#">View More</a> | ||||||
|  |             <a href="/repos">Repos</a> | ||||||
|  |         </div> | ||||||
|  |     </Card> | ||||||
|  | {/each} | ||||||
|  |  | ||||||
|  | <!--Modal to be displayed on click--> | ||||||
|  | {#if activeModal != null} | ||||||
|  |     <Modal bind:showModal> | ||||||
|  |         <h2 slot="header" class="card-header"> | ||||||
|  |             {activeModal.skill} | ||||||
|  |             <i class="{activeModal.logo} logo"></i> | ||||||
|  |         </h2> | ||||||
|  |  | ||||||
|  |         <p> | ||||||
|  |             {activeModal.about} | ||||||
|  |         </p> | ||||||
|  |  | ||||||
|  |         <div class="card-footer"> | ||||||
|  |             <a href="{activeModal.link}" target="_blank" rel="noopener noreferrer">Learn More</a> | ||||||
|  |             <a href="/repos">Repos</a> | ||||||
|  |         </div> | ||||||
|  |     </Modal> | ||||||
|  | {/if} | ||||||
		Reference in New Issue
	
	Block a user