mirror of
https://github.com/BradNut/personal-website-sveltekit
synced 2025-09-08 23:20:18 +00:00
commit
fe65d64036
7 changed files with 291 additions and 251 deletions
10
package.json
10
package.json
|
|
@ -14,7 +14,7 @@
|
||||||
"format": "prettier --plugin-search-dir . --write ."
|
"format": "prettier --plugin-search-dir . --write ."
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify-icons/material-symbols": "^1.2.36",
|
"@iconify-icons/material-symbols": "^1.2.37",
|
||||||
"@iconify-icons/mdi": "^1.2.44",
|
"@iconify-icons/mdi": "^1.2.44",
|
||||||
"@iconify-icons/radix-icons": "^1.2.8",
|
"@iconify-icons/radix-icons": "^1.2.8",
|
||||||
"@iconify-icons/simple-icons": "^1.2.48",
|
"@iconify-icons/simple-icons": "^1.2.48",
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
"@sveltejs/adapter-auto": "^1.0.3",
|
"@sveltejs/adapter-auto": "^1.0.3",
|
||||||
"@sveltejs/adapter-static": "^2.0.2",
|
"@sveltejs/adapter-static": "^2.0.2",
|
||||||
"@sveltejs/adapter-vercel": "^1.0.6",
|
"@sveltejs/adapter-vercel": "^1.0.6",
|
||||||
"@sveltejs/kit": "^1.15.6",
|
"@sveltejs/kit": "^1.15.7",
|
||||||
"@types/postcss-preset-env": "^8.0.0",
|
"@types/postcss-preset-env": "^8.0.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.59.0",
|
"@typescript-eslint/eslint-plugin": "^5.59.0",
|
||||||
"@typescript-eslint/parser": "^5.59.0",
|
"@typescript-eslint/parser": "^5.59.0",
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
"just-intersect": "^4.3.0",
|
"just-intersect": "^4.3.0",
|
||||||
"mdsvex": "^0.10.6",
|
"mdsvex": "^0.10.6",
|
||||||
"mdsvex-relative-images": "^1.0.3",
|
"mdsvex-relative-images": "^1.0.3",
|
||||||
"postcss": "^8.4.22",
|
"postcss": "^8.4.23",
|
||||||
"postcss-import": "^15.1.0",
|
"postcss-import": "^15.1.0",
|
||||||
"postcss-load-config": "^4.0.1",
|
"postcss-load-config": "^4.0.1",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
|
|
@ -55,8 +55,8 @@
|
||||||
"tslib": "^2.5.0",
|
"tslib": "^2.5.0",
|
||||||
"typescript": "^4.9.5",
|
"typescript": "^4.9.5",
|
||||||
"vanilla-lazyload": "^17.8.3",
|
"vanilla-lazyload": "^17.8.3",
|
||||||
"vite": "^4.2.1",
|
"vite": "^4.3.1",
|
||||||
"vite-imagetools": "^4.0.18",
|
"vite-imagetools": "^4.0.19",
|
||||||
"vitest": "^0.25.3"
|
"vitest": "^0.25.3"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|
|
||||||
473
pnpm-lock.yaml
473
pnpm-lock.yaml
File diff suppressed because it is too large
Load diff
|
|
@ -1,10 +1,19 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import Img from '@zerodevx/svelte-img';
|
||||||
import type { Album } from "$root/lib/types/album";
|
import type { Album } from "$root/lib/types/album";
|
||||||
|
|
||||||
|
|
||||||
export let albums: Album[];
|
export let albums: Album[];
|
||||||
const displayAlbums =
|
const displayAlbums =
|
||||||
albums?.length > 6 ? albums.slice(0, 6) : albums;
|
albums?.length > 6 ? albums.slice(0, 6) : albums;
|
||||||
|
|
||||||
|
for (let album of displayAlbums) {
|
||||||
|
album.src = [
|
||||||
|
{ format: 'avif', src: `${album.artwork}`, width: 230, height: 230 },
|
||||||
|
{ format: 'webp', src: `${album.artwork}`, width: 230, height: 230},
|
||||||
|
{ format: 'jpg', src: `${album.artwork}`, width: 230, height: 230}
|
||||||
|
]
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -19,12 +28,7 @@
|
||||||
href={album.url}
|
href={album.url}
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
<img
|
<Img src={album.src} alt={`Album art for ${album.title}`} />
|
||||||
src={`https://images.weserv.nl/?url=${encodeURIComponent(
|
|
||||||
album.artwork
|
|
||||||
)}&w=230&h=230`}
|
|
||||||
alt={`Album art for ${album.title}`}
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</figure>
|
</figure>
|
||||||
<a
|
<a
|
||||||
|
|
@ -81,6 +85,11 @@
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 550px) {
|
@media (max-width: 550px) {
|
||||||
grid-template-columns: 0.75fr 0.75fr;
|
grid-template-columns: 0.75fr 0.75fr;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,12 @@ export type Album = {
|
||||||
artwork: string;
|
artwork: string;
|
||||||
title: string;
|
title: string;
|
||||||
artist: string;
|
artist: string;
|
||||||
|
src?: ExternalImageSource[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ExternalImageSource = {
|
||||||
|
format: string;
|
||||||
|
src: string;
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@
|
||||||
max-width: 85vw;
|
max-width: 85vw;
|
||||||
|
|
||||||
@media (min-width: 1600px) {
|
@media (min-width: 1600px) {
|
||||||
max-width: 50vw;
|
max-width: 60vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
|
||||||
|
|
@ -343,12 +343,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.extracurricular {
|
.extracurricular {
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-columns: repeat(3, auto);
|
flex-wrap: wrap;
|
||||||
/* justify-content: center; */
|
place-content: center;
|
||||||
/* align-items: center; */
|
|
||||||
gap: 1.5rem;
|
gap: 1.5rem;
|
||||||
|
|
||||||
|
.card {
|
||||||
|
max-width: 30rem;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 1000px) {
|
@media (max-width: 1000px) {
|
||||||
grid-template-columns: repeat(2, auto);
|
grid-template-columns: repeat(2, auto);
|
||||||
--cardHeightMin: 20rem;
|
--cardHeightMin: 20rem;
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
<SEO title="Portfolio" />
|
<SEO title="Portfolio" />
|
||||||
|
|
||||||
<h1>Portfolio!</h1>
|
<h1>Portfolio!</h1>
|
||||||
<TabGroup>
|
<TabGroup class="tab-group">
|
||||||
<TabList aria-label="tabs portfolios" class="tab-list">
|
<TabList aria-label="tabs portfolios" class="tab-list">
|
||||||
<Tab class={({selected}) => selected ? "tab-selected portfolio-tab" : "tab-unselected portfolio-tab"}>
|
<Tab class={({selected}) => selected ? "tab-selected portfolio-tab" : "tab-unselected portfolio-tab"}>
|
||||||
<h2>Personal Sites</h2>
|
<h2>Personal Sites</h2>
|
||||||
|
|
@ -38,13 +38,18 @@
|
||||||
style="max-height: 640px;"
|
style="max-height: 640px;"
|
||||||
src={personalSite}
|
src={personalSite}
|
||||||
loading="eager"
|
loading="eager"
|
||||||
alt="Picture of Bradley Shellnut's Gatsby Personal Website">
|
alt="Picture of Bradley Shellnut's Personal Website">
|
||||||
|
<span slot="portfolio-links">
|
||||||
|
<p>
|
||||||
|
<ExternalLink ariaLabel="View GitHub repository for my personal website" href="https://github.com/BradNut/personal-website-sveltekit" icon={GitHub} showIcon>GitHub repository</ExternalLink>
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
<PersonalWebsiteSvelteKit slot="portfolio-details" />
|
<PersonalWebsiteSvelteKit slot="portfolio-details" />
|
||||||
</Portfolio>
|
</Portfolio>
|
||||||
<Portfolio name="Wedding Website"
|
<Portfolio name="Wedding Website"
|
||||||
style="max-height: 640px;"
|
style="max-height: 640px;"
|
||||||
src={weddingWebsite}
|
src={weddingWebsite}
|
||||||
alt="Picture of Bradley Shellnut's Gatsby Personal Website">
|
alt="Picture of NextJS Wedding Website">
|
||||||
<span slot="portfolio-links">
|
<span slot="portfolio-links">
|
||||||
<p>
|
<p>
|
||||||
<ExternalLink ariaLabel="View Wedding Website" href="https://weddingsite-six.vercel.app/" showIcon>View Site</ExternalLink>
|
<ExternalLink ariaLabel="View Wedding Website" href="https://weddingsite-six.vercel.app/" showIcon>View Site</ExternalLink>
|
||||||
|
|
@ -79,6 +84,12 @@
|
||||||
</TabGroup>
|
</TabGroup>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
|
:global(.tab-group) {
|
||||||
|
@media(min-width: 1000px) {
|
||||||
|
max-width: 50vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
:global(.tab-list) {
|
:global(.tab-list) {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue