From 1dffd47bc167818a744d9e407bd2dfb61171422c Mon Sep 17 00:00:00 2001 From: BOTAlex <zhentao2004@gmail.com> Date: Tue, 14 Jan 2025 02:56:20 +0100 Subject: [PATCH] oh fuck, even more cooking!!! --- src/routes/+page.svelte | 60 +++++---------------------- src/routes/comps/MobileTags.svelte | 10 +++++ src/routes/comps/NameAndTag.svelte | 6 ++- src/routes/comps/Profile.svelte | 66 ++++++++++++++++++++++++++++++ src/routes/comps/Tags.svelte | 30 ++++++++++++-- 5 files changed, 116 insertions(+), 56 deletions(-) create mode 100644 src/routes/comps/MobileTags.svelte create mode 100644 src/routes/comps/Profile.svelte diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index e6b6383..d5603bb 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -30,6 +30,7 @@ import Time5 from "$lib/GamePreviews/time-5.gif" import Tags from './comps/Tags.svelte'; import NameAndTag from './comps/NameAndTag.svelte'; + import Profile from './comps/Profile.svelte'; const mobileThreshold : string = '600px'; // was 1000px. zhen testing let mobile : boolean; @@ -65,59 +66,39 @@ Developers </h1> - - <div class="developersProfile pl-4 font-mono"> - <NameAndTag name="Zhen / Alex" tags={["Programmer", "3D artist", "UX Designer"]} isMobile={mobile}/> + <Profile name="Zhen / Alex" tags={["Programmer", "3D artist", "UX Designer"]} isMobile={mobile}> <span> <p>Hi, I am Alex/Zhen, {@html !mobile ? "" : "<br/>"} I'm that chinese guy.</p> <p>Here's my CV: <a href="/zhen/cv/rev2?hideOnPrint=1" style="color:lightblue;">pdf</a></p> </span> - </div> + </Profile> <ProfileSpacer/> - <div class="developersProfile pl-4 font-mono"> - <NameAndTag name="Sveske / Benjamin" tags={["Programmer"]} isMobile={mobile}/> + <Profile name="Sveske / Benjamin" tags={["Programmer"]} isMobile={mobile}> <span> <p>Hi, I use Arch, btw.</p> <p><a href="https://www.linkedin.com/in/benjamin-dreyer/" target="_blank" style="color:lightblue;">Linked-in</a></p> </span> - </div> + </Profile> <ProfileSpacer/> - <div class="w-full"> - <div class="developersProfile absolute snorre pl-4 font-mono pointer-events-none select-none"> - <pre style="font-size: {!mobile ? 1.5 : 1.5}rem;"> </pre> - <span> - <pre> </pre> - <pre> </pre> - </span> - </div> - <div class="developersProfile snorre-overlay relative pl-4 font-mono"> - <NameAndTag name="Snorre" tags={["Programmer"]} isMobile={mobile}/> - <span> - <p>I'm the diversity hire. (Gay)</p> - <p><a href="https://www.linkedin.com/in/snorrealtschul/" target="_blank" style="color:lightblue;">Linked-in</a></p> - </span> - </div> - </div> + <Profile isSnorre={true} tags={["Programmer"]} isMobile={mobile}/> <ProfileSpacer/> - <div class="developersProfile pl-4 font-mono"> - <NameAndTag name="Oliver" tags={["Sound designer", "Story designer", "Programmer"]} isMobile={mobile}/> + <Profile name="Oliver" tags={["Sound designer", "Story designer","2D Artist", "Programmer"]} isMobile={mobile}> <span> <p>Snorre does not get paid.</p> <p><a href="https://www.linkedin.com/in/oliver-schwenger-291944278/" target="_blank" style="color:lightblue;">Linked-in</a></p> </span> - </div> + </Profile> <ProfileSpacer/> - <div class="developersProfile pl-4 font-mono"> - <NameAndTag name="Zylvester" tags={["2D Artist", "3D Artist", "Sound designer", "Story designer"]} isMobile={mobile}/> + <Profile name="Zylvester" tags={["2D/3D Artist", "Sound designer", "Story designer"]} isMobile={mobile}> <span> <p>Hi, I am [insert text here]</p> <p>Here's a joke about recursion: <a href="/" target="_blank" style="color:lightblue;">recursion</a></p> </span> - </div> + </Profile> </div> </div> @@ -241,27 +222,6 @@ font-family: var(--title-font); } - .developersProfile:not(.snorre):not(.snorre-overlay){ - background-image: linear-gradient(oklch(var(--p)) 33%, rgba(255,255,255,0) 0%); - background-position: left; - background-size: 0.1rem 0.5rem; - background-repeat: repeat-y; - } - - .snorre { - border-left: dashed transparent 0.1rem; - border-image: linear-gradient(to bottom, red, orange, yellow, green, blue, indigo, violet); - border-image-slice: 1; - } - - .snorre-overlay { - background-image: linear-gradient(rgba(255,255,255,0) 0%, rgba(255,255,255,0) 40%, oklch(var(--b1)) 40%); - background-position: left; - background-size: 0.1rem 0.5rem; - background-repeat: repeat-y; - } - - #backgroundGif{ width: 100%; height: 100%; diff --git a/src/routes/comps/MobileTags.svelte b/src/routes/comps/MobileTags.svelte new file mode 100644 index 0000000..40e4eac --- /dev/null +++ b/src/routes/comps/MobileTags.svelte @@ -0,0 +1,10 @@ +<script> + import Tags from "./Tags.svelte"; + + export let isMobile = false; + export let tags = ["null"]; +</script> + +{#if isMobile} + <Tags Tags={tags} isMobile={isMobile}/> +{/if} \ No newline at end of file diff --git a/src/routes/comps/NameAndTag.svelte b/src/routes/comps/NameAndTag.svelte index 1eea9f2..9862718 100644 --- a/src/routes/comps/NameAndTag.svelte +++ b/src/routes/comps/NameAndTag.svelte @@ -1,5 +1,5 @@ <script> - import Tags from "./Tags.svelte"; + import Tags from "./Tags.svelte"; // Should've used better names lol export let isMobile = false; export let name = ""; @@ -9,5 +9,7 @@ <div class="flex items-center"> <h2 style="font-size: {!isMobile ? 1.5 : 1.5}rem;">{name}</h2> <div class="flex flex-grow"/> - <Tags Tags={tags}/> + {#if !isMobile} + <Tags Tags={tags} isMobile={isMobile}/> + {/if} </div> \ No newline at end of file diff --git a/src/routes/comps/Profile.svelte b/src/routes/comps/Profile.svelte new file mode 100644 index 0000000..acb02be --- /dev/null +++ b/src/routes/comps/Profile.svelte @@ -0,0 +1,66 @@ +<script> + import MobileTags from "./MobileTags.svelte"; + import NameAndTag from "./NameAndTag.svelte"; + + export let isMobile = false; + export let name = ""; + export let tags = ["null"]; + export let isSnorre = false; + + // Shit code but who cares, if it works /shrug +</script> + + +{#if !isSnorre} + <div class="developersProfile {isSnorre ? "isSnorre" : ""} pl-4 font-mono"> + <NameAndTag name={name} tags={tags} isMobile={isMobile}/> + <span> + <p>Hi, I am Alex/Zhen, {@html !isMobile ? "" : "<br/>"} I'm that chinese guy.</p> + <p>Here's my CV: <a href="/zhen/cv/rev2?hideOnPrint=1" style="color:lightblue;">pdf</a></p> + </span> + <MobileTags tags={tags} isMobile={isMobile}/> + </div> +{:else} + <div class="w-full"> + <div class="developersProfile absolute snorre pl-4 font-mono pointer-events-none select-none"> + <pre style="font-size: {!isMobile ? 1.5 : 1.5}rem;"> </pre> + <span> + <pre> </pre> + <pre> </pre> + </span> + {#if isMobile} + <pre> </pre> + {/if} + </div> + <div class="developersProfile snorre-overlay relative pl-4 font-mono"> + <NameAndTag name="Snorre" tags={tags} isMobile={isMobile}/> + <span> + <p>I'm the diversity hire. (Gay)</p> + <p><a href="https://www.linkedin.com/in/snorrealtschul/" target="_blank" style="color:lightblue;">Linked-in</a></p> + </span> + <MobileTags tags={tags} isMobile={isMobile}/> + </div> + </div> +{/if} + +<style> + .developersProfile:not(.snorre):not(.snorre-overlay){ + background-image: linear-gradient(oklch(var(--p)) 33%, rgba(255,255,255,0) 0%); + background-position: left; + background-size: 0.1rem 0.5rem; + background-repeat: repeat-y; + } + + .snorre { + border-left: dashed transparent 0.1rem; + border-image: linear-gradient(to bottom, red, orange, yellow, green, blue, indigo, violet); + border-image-slice: 1; + } + + .snorre-overlay { + background-image: linear-gradient(rgba(255,255,255,0) 0%, rgba(255,255,255,0) 40%, oklch(var(--b1)) 40%); + background-position: left; + background-size: 0.1rem 0.5rem; + background-repeat: repeat-y; + } +</style> \ No newline at end of file diff --git a/src/routes/comps/Tags.svelte b/src/routes/comps/Tags.svelte index 5c110d7..7651497 100644 --- a/src/routes/comps/Tags.svelte +++ b/src/routes/comps/Tags.svelte @@ -1,18 +1,40 @@ <script lang="ts"> export let Tags= ["null"]; - let colors: { [String: string]: string } = { + export let isMobile = false; + type ColorType = string | { color1: string; color2: string; rotation: string; offset: string }; + let colors: { [String: string]: ColorType} = { "programmer": "#0CC27F", "uxdesigner": "#027893", "3dartist": "#F4881C", "2dartist": "#F1EAC0", + "2d/3dartist": {"color1":"#F1EAC0", "color2":"#F4881C","rotation": "-65deg", "offset": "71.5%"}, "sounddesigner": "#F3EC2A", "storydesigner": "#EEC12A", }; + </script> -<div class="flex gap-2"> +<div class="flex gap-2" style='font-size: {!isMobile ? "0.875rem" : "2vw"};'> {#each Tags as tag} - <div class="badge2 text-primary-content cozette" style="background-color: {colors[tag.replaceAll(" ", "").toLowerCase()] || "#ccc"};">{tag}</div> + {@const key = tag.replaceAll(" ", "").toLowerCase()} + {#if key.indexOf("/") < 0} + <div class="badge2 text-primary-content cozette" style="background-color: {colors[key] || "#ccc"};">{tag}</div> + {:else} + <!-- Gradient Badge --> + {#if typeof colors[key] === 'object' && colors[key] !== null} + <div + class="badge2 text-primary-content cozette" + style="background: linear-gradient({colors[key].rotation}, {colors[key].color1} {colors[key].offset}, {colors[key].color2} {colors[key].offset});"> + {tag} + </div> + {:else} + <div + class="badge2 text-primary-content cozette" + style="background-color: #ccc;"> + {tag} + </div> + {/if} + {/if} {/each} </div> @@ -22,11 +44,11 @@ align-items: center; justify-content: center; height: 1.25rem /* 20px */; - font-size: 0.875rem /* 14px */; line-height: 1.25rem /* 20px */; width: fit-content; padding-left: 0.563rem /* 9.008px */; padding-right: 0.563rem /* 9.008px */; border-radius: var(--rounded-badge, 1.9rem /* 30.4px */); } + </style> \ No newline at end of file