Added Loading Spinner #19
							
								
								
									
										73
									
								
								src/lib/components/Loading.svelte
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								src/lib/components/Loading.svelte
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
				
			|||||||
 | 
					<style>
 | 
				
			||||||
 | 
					    .loader {
 | 
				
			||||||
 | 
					        position: absolute;
 | 
				
			||||||
 | 
					        top: calc(50% - 32px);
 | 
				
			||||||
 | 
					        left: calc(50% - 32px);
 | 
				
			||||||
 | 
					        width: 64px;
 | 
				
			||||||
 | 
					        height: 64px;
 | 
				
			||||||
 | 
					        border-radius: 50%;
 | 
				
			||||||
 | 
					        perspective: 800px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .inner {
 | 
				
			||||||
 | 
					        position: absolute;
 | 
				
			||||||
 | 
					        box-sizing: border-box;
 | 
				
			||||||
 | 
					        width: 100%;
 | 
				
			||||||
 | 
					        height: 100%;
 | 
				
			||||||
 | 
					        border-radius: 50%;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .inner.one {
 | 
				
			||||||
 | 
					        left: 0%;
 | 
				
			||||||
 | 
					        top: 0%;
 | 
				
			||||||
 | 
					        animation: rotate-one 1s linear infinite;
 | 
				
			||||||
 | 
					        border-bottom: 3px solid #efeffa;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .inner.two {
 | 
				
			||||||
 | 
					        right: 0%;
 | 
				
			||||||
 | 
					        top: 0%;
 | 
				
			||||||
 | 
					        animation: rotate-two 1s linear infinite;
 | 
				
			||||||
 | 
					        border-right: 3px solid #efeffa;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .inner.three {
 | 
				
			||||||
 | 
					        right: 0%;
 | 
				
			||||||
 | 
					        bottom: 0%;
 | 
				
			||||||
 | 
					        animation: rotate-three 1s linear infinite;
 | 
				
			||||||
 | 
					        border-top: 3px solid #efeffa;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @keyframes rotate-one {
 | 
				
			||||||
 | 
					        0% {
 | 
				
			||||||
 | 
					            transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        100% {
 | 
				
			||||||
 | 
					            transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @keyframes rotate-two {
 | 
				
			||||||
 | 
					        0% {
 | 
				
			||||||
 | 
					            transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        100% {
 | 
				
			||||||
 | 
					            transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @keyframes rotate-three {
 | 
				
			||||||
 | 
					        0% {
 | 
				
			||||||
 | 
					            transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        100% {
 | 
				
			||||||
 | 
					            transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="loader">
 | 
				
			||||||
 | 
					    <div class="inner one" />
 | 
				
			||||||
 | 
					    <div class="inner two" />
 | 
				
			||||||
 | 
					    <div class="inner three" />
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
@@ -6,6 +6,7 @@
 | 
				
			|||||||
    import Skills from './skills.svelte';
 | 
					    import Skills from './skills.svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    import Timeline from "./timeline.svelte";
 | 
					    import Timeline from "./timeline.svelte";
 | 
				
			||||||
 | 
						import Loading from "$lib/components/Loading.svelte";
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style>
 | 
					<style>
 | 
				
			||||||
@@ -65,11 +66,7 @@
 | 
				
			|||||||
</style>
 | 
					</style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{#await getJson('/json/me.json')}
 | 
					{#await getJson('/json/me.json')}
 | 
				
			||||||
    <div class="card">
 | 
					    <Loading />
 | 
				
			||||||
        <div class="card-header">
 | 
					 | 
				
			||||||
            <h1>Loading...</h1>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
{:then info}
 | 
					{:then info}
 | 
				
			||||||
    <div class="main-card">
 | 
					    <div class="main-card">
 | 
				
			||||||
        <div class="card-header">
 | 
					        <div class="card-header">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@
 | 
				
			|||||||
    import { repos, loadRepos, addToast } from "$lib/stores";
 | 
					    import { repos, loadRepos, addToast } from "$lib/stores";
 | 
				
			||||||
    import { timeSince } from "$lib/api/git";
 | 
					    import { timeSince } from "$lib/api/git";
 | 
				
			||||||
    import Card from "$lib/components/Cards/Card.svelte";
 | 
					    import Card from "$lib/components/Cards/Card.svelte";
 | 
				
			||||||
 | 
					    import Loading from "$lib/components/Loading.svelte";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    onMount(loadRepos);
 | 
					    onMount(loadRepos);
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
@@ -33,6 +34,6 @@
 | 
				
			|||||||
            {/each}
 | 
					            {/each}
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    {:else}
 | 
					    {:else}
 | 
				
			||||||
        <p>Loading repositories...</p>
 | 
					        <Loading />
 | 
				
			||||||
    {/if}
 | 
					    {/if}
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user