about: color+links, ScheduleButton goundwork

This commit is contained in:
Noah Swerhun 2024-04-08 17:02:45 -05:00
parent d1c3933ced
commit 03d58a4fc0
15 changed files with 155 additions and 25 deletions

View file

@ -13,7 +13,9 @@
"@astrojs/check": "^0.5.10", "@astrojs/check": "^0.5.10",
"@astrojs/solid-js": "^4.0.1", "@astrojs/solid-js": "^4.0.1",
"@astrojs/tailwind": "^5.1.0", "@astrojs/tailwind": "^5.1.0",
"@nanostores/solid": "^0.4.2",
"astro": "^4.5.12", "astro": "^4.5.12",
"nanostores": "^0.10.3",
"solid-js": "^1.8.16", "solid-js": "^1.8.16",
"tailwindcss": "^3.4.3", "tailwindcss": "^3.4.3",
"typescript": "^5.4.3" "typescript": "^5.4.3"

View file

@ -14,9 +14,15 @@ dependencies:
'@astrojs/tailwind': '@astrojs/tailwind':
specifier: ^5.1.0 specifier: ^5.1.0
version: 5.1.0(astro@4.5.12)(tailwindcss@3.4.3) version: 5.1.0(astro@4.5.12)(tailwindcss@3.4.3)
'@nanostores/solid':
specifier: ^0.4.2
version: 0.4.2(nanostores@0.10.3)(solid-js@1.8.16)
astro: astro:
specifier: ^4.5.12 specifier: ^4.5.12
version: 4.5.12(typescript@5.4.3) version: 4.5.12(typescript@5.4.3)
nanostores:
specifier: ^0.10.3
version: 0.10.3
solid-js: solid-js:
specifier: ^1.8.16 specifier: ^1.8.16
version: 1.8.16 version: 1.8.16
@ -1094,6 +1100,16 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/sourcemap-codec': 1.4.15
dev: false dev: false
/@nanostores/solid@0.4.2(nanostores@0.10.3)(solid-js@1.8.16):
resolution: {integrity: sha512-8v32+C9KdRbnvP4x4Oiw/CtL1tZwbRxYfmFsPIY9PXevCgxSFnicG6VnLLtNAR7F0kl8Ec7OROHO34Ffv0KDzg==}
peerDependencies:
nanostores: '>=0.8.0'
solid-js: ^1.6.0
dependencies:
nanostores: 0.10.3
solid-js: 1.8.16
dev: false
/@nodelib/fs.scandir@2.1.5: /@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
@ -3212,6 +3228,11 @@ packages:
hasBin: true hasBin: true
dev: false dev: false
/nanostores@0.10.3:
resolution: {integrity: sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==}
engines: {node: ^18.0.0 || >=20.0.0}
dev: false
/napi-build-utils@1.0.2: /napi-build-utils@1.0.2:
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
requiresBuild: true requiresBuild: true

View file

@ -23,9 +23,9 @@
rx="150" rx="150"
ry="150" /> ry="150" />
<path <path
style="font-weight:bold;font-size:933.333px;font-family:'Old Standard';-inkscape-font-specification:'Old Standard Bold';fill:#27272a" style="font-weight:bold;font-size:666.667px;font-family:'Old Standard';-inkscape-font-specification:'Old Standard Bold';letter-spacing:-50px;fill:#27272a"
d="m 203.99999,872.26654 h 313.59989 v -29.86666 h -65.33331 c -16.79999,0 -22.39999,-5.59999 -22.39999,-22.39999 v -279.9999 h 220.26659 v 279.9999 c 0,16.8 -5.6,22.39999 -22.39999,22.39999 h -65.33331 v 29.86666 h 313.59989 v -29.86666 h -65.33331 c -16.8,0 -22.39999,-5.59999 -22.39999,-22.39999 v -559.9998 c 0,-16.8 5.59999,-22.39999 22.39999,-22.39999 h 65.33331 V 207.73344 H 560.5332 v 29.86666 h 67.19998 c 16.79999,0 22.39999,5.59999 22.39999,22.39999 V 506.4 H 429.86658 V 260.00009 c 0,-16.8 5.6,-22.39999 22.39999,-22.39999 h 65.33331 V 207.73344 H 203.99999 v 29.86666 h 65.33331 c 16.8,0 22.4,5.59999 22.4,22.39999 v 559.9998 c 0,16.8 -5.6,22.39999 -22.4,22.39999 h -65.33331 z" d="M 65.666628,777.33344 H 289.66674 v -21.33335 h -46.66669 c -12.00001,0 -16.00001,-4 -16.00001,-16.00001 V 539.99999 h 157.33341 v 200.00009 c 0,12.00001 -4,16.00001 -16.00001,16.00001 h -46.66669 v 21.33335 h 224.00011 v -21.33335 h -46.66669 c -12,0 -16,-4 -16,-16.00001 V 339.99989 c 0,-12.00001 4,-16.00001 16,-16.00001 h 46.66669 V 302.66654 H 320.33342 v 21.33334 h 48.00002 c 12.00001,0 16.00001,4 16.00001,16.00001 V 515.99997 H 227.00004 V 339.99989 c 0,-12.00001 4,-16.00001 16.00001,-16.00001 h 46.66669 V 302.66654 H 65.666628 v 21.33334 h 46.666692 c 12,0 16.00001,4 16.00001,16.00001 v 400.00019 c 0,12.00001 -4.00001,16.00001 -16.00001,16.00001 H 65.666628 Z m 499.333192,0 h 248.00012 c 110.66672,0 201.33346,-102.66672 201.33346,-241.33346 0,-138.66673 -90.66674,-233.33344 -201.33346,-233.33344 H 564.99982 v 21.33334 h 46.66669 c 12,0 16.00001,4 16.00001,16.00001 v 400.00019 c 0,12.00001 -4.00001,16.00001 -16.00001,16.00001 H 564.99982 Z M 726.33323,740.00008 V 339.99989 c 0,-12.00001 4,-16.00001 16.00001,-16.00001 h 59.33336 c 53.33336,0 99.33338,36.00002 99.33338,116.00006 v 200.00009 c 0,80.00004 -46.00002,116.00006 -99.33338,116.00006 h -59.33336 c -12.00001,0 -16.00001,-4 -16.00001,-16.00001 z"
id="text3" id="text3"
aria-label="H" /> aria-label="HD" />
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2 KiB

5
src/components/Em.astro Normal file
View file

@ -0,0 +1,5 @@
---
---
<span class="text-accent font-bold"><slot /></span>

View file

@ -3,7 +3,9 @@ import Nav from "@/components/Nav.tsx";
--- ---
<header class="my-10 w-fit mx-auto"> <header class="my-10 w-fit mx-auto">
<h1 class="text-4xl md:text-6xl font-bold font-display text-center"> <h1
class="text-4xl md:text-6xl tracking-tight font-bold font-display text-center"
>
J. Hunter DeLoche J. Hunter DeLoche
</h1> </h1>
<div transition:persist> <div transition:persist>

View file

@ -1,7 +0,0 @@
---
---
<h2 class="font-display text-2xl font-bold text-center">
<slot />
</h2>

View file

@ -1,4 +1,6 @@
import { For, createSignal, onMount } from "solid-js"; import { For, onMount } from "solid-js";
import { useStore } from "@nanostores/solid";
import { $currentPage } from "@/scripts/currentPage"
interface Page { interface Page {
path: string, path: string,
@ -16,13 +18,12 @@ const activeClasses = "font-bold !text-foreground";
const Nav = () => { const Nav = () => {
const [currentPage, setCurrentPage] = createSignal<string>(); const currentPage = useStore($currentPage);
onMount(() => { onMount(() => {
setCurrentPage(window.location.pathname); $currentPage.set(window.location.pathname);
}); });
return ( return (
<nav class="pt-4 w-full flex flex-row justify-around"> <nav class="pt-4 w-full flex flex-row justify-around">
<For each={pages}>{ <For each={pages}>{
@ -34,7 +35,7 @@ const Nav = () => {
} }
href={page.path} href={page.path}
onClick={() => { onClick={() => {
setCurrentPage(page.path); $currentPage.set(page.path);
}} }}
> >
{page.name} {page.name}

View file

@ -0,0 +1,19 @@
import { $currentPage } from "@/scripts/currentPage"
import type { ParentComponent } from "solid-js";
import { splitProps } from "solid-js";
interface Props {
href: string,
class?: string,
}
const PageLink: ParentComponent<Props> = (props) => {
const [local, others] = splitProps(props, ["children"]);
return (
<a {...others} onClick={() => $currentPage.set(others.href)}>
{local.children}
</a>
);
};
export default PageLink;

View file

@ -0,0 +1,49 @@
---
const { event_path } = Astro.props;
---
<button
class="px-5 py-3 rounded-md text-background bg-foreground font-bold drop-shadow-md hover:drop-shadow-accent hover:bg-accent transition-all duration-300 m-3"
data-cal-link={`jhdeloche/${event_path}`}
data-cal-namespace=""
data-cal-config='{"layout":"month_view"}'
>
<slot />
</button>
<script is:inline>
(function (C, A, L) {
let p = function (a, ar) {
a.q.push(ar);
};
let d = C.document;
C.Cal =
C.Cal ||
function () {
let cal = C.Cal;
let ar = arguments;
if (!cal.loaded) {
cal.ns = {};
cal.q = cal.q || [];
d.head.appendChild(d.createElement("script")).src = A;
cal.loaded = true;
}
if (ar[0] === L) {
const api = () => p(api, arguments);
const namespace = ar[1];
api.q = api.q || [];
typeof namespace === "string"
? (cal.ns[namespace] = api) && p(api, ar)
: p(cal, ar);
return;
}
p(cal, ar);
};
})(window, "https://cal.jhunterdeloche.com/embed/embed.js", "init");
Cal("init", { origin: "https://cal.jhunterdeloche.com" });
Cal("ui", {
hideEventTypeDetails: false,
layout: "month_view",
});
</script>

View file

@ -0,0 +1,7 @@
---
---
<h2 class="font-display text-2xl font-bold text-center tracking-tighter">
<slot />
</h2>

View file

@ -1,7 +1,9 @@
--- ---
import Layout from "@/layouts/Layout.astro"; import Layout from "@/layouts/Layout.astro";
import Paragraph from "@/components/Paragraph.astro"; import Paragraph from "@/components/Paragraph.astro";
import Heading from "@/components/Heading.astro"; import SectionTitle from "@/components/SectionTitle.astro";
import PageLink from "@/components/PageLink";
import Em from "@/components/Em.astro";
import { Image } from "astro:assets"; import { Image } from "astro:assets";
import portrait from "@/assets/headshot_lg.jpg"; import portrait from "@/assets/headshot_lg.jpg";
@ -14,18 +16,18 @@ import portrait from "@/assets/headshot_lg.jpg";
<div class="flex flex-col gap-10 md:flex-row items-center justify-around"> <div class="flex flex-col gap-10 md:flex-row items-center justify-around">
<div class=""> <div class="">
<Image <Image
class="rounded-md w-full" class="rounded-md w-full border-accent border-[1px] drop-shadow-accent"
src={portrait} src={portrait}
alt="Portrait of Hunter." alt="Portrait of Hunter."
/> />
</div> </div>
<div class="basis-1/2"> <div class="basis-1/2">
<Heading>About Me</Heading> <SectionTitle>About Me</SectionTitle>
<Paragraph> <Paragraph>
Hunter DeLoche is a biological sciences and music student at the <Em>Hunter DeLoche</Em> is a biological sciences and music student at the
University of Chicago. Additionally, he is a cadet in the Colleges Army University of Chicago. Additionally, he is a cadet in the Colleges Army
ROTC program, intending to commission as a second lieutenant in the ROTC program, intending to commission as a second lieutenant in the Medical
Medical Service Corps upon graduation. Service Corps upon graduation.
</Paragraph> </Paragraph>
<Paragraph> <Paragraph>
Hunter has a passion for the mind and its biological, psychological, and Hunter has a passion for the mind and its biological, psychological, and
@ -39,12 +41,30 @@ import portrait from "@/assets/headshot_lg.jpg";
formed his progressive rock band, Amnesium, as an outlet for his formed his progressive rock band, Amnesium, as an outlet for his
compositions. Amnesiums debut album, <i>Event Horizon,</i> is a concept compositions. Amnesiums debut album, <i>Event Horizon,</i> is a concept
album that envisions psychosis meshed with science fiction. To learn more album that envisions psychosis meshed with science fiction. To learn more
about his music, visit the "music" page above. about his music, visit the
<Em>
<PageLink
client:load
href="/music"
class="underline underline-offset-2 hover:underline-offset-4 transition-all duration-100"
>
music page</PageLink
>.
</Em>
</Paragraph> </Paragraph>
<Paragraph> <Paragraph>
Hunter also volunteers as a writing tutor for those working on their Hunter also volunteers as a writing tutor for those working on their
college application process. For free writing advising and revision college application process. For free writing advising and revision
services, visit the “writing” page above. services, visit the
<Em>
<PageLink
client:load
href="/writing"
class="underline underline-offset-2 hover:underline-offset-4 transition-all duration-100"
>
writing page</PageLink
>.
</Em>
</Paragraph> </Paragraph>
</div> </div>
</div> </div>

View file

@ -1,7 +1,8 @@
--- ---
import Layout from "@/layouts/Layout.astro"; import Layout from "@/layouts/Layout.astro";
import ScheduleButton from "@/components/ScheduleButton.astro";
--- ---
<Layout title="J. Hunter DeLoche | Music" description="music"> <Layout title="J. Hunter DeLoche | Music" description="music">
<div class="">this is the music page</div> <div class="">This is the music page</div>
</Layout> </Layout>

View file

@ -1,5 +1,6 @@
--- ---
import Layout from "@/layouts/Layout.astro"; import Layout from "@/layouts/Layout.astro";
import ScheduleButton from "@/components/ScheduleButton.astro";
--- ---
<Layout title="J. Hunter DeLoche | Writing" description="writing"> <Layout title="J. Hunter DeLoche | Writing" description="writing">

View file

@ -0,0 +1,3 @@
import { atom } from "nanostores";
export const $currentPage = atom("");

View file

@ -18,6 +18,12 @@ export default {
screens: { screens: {
md: "850px", md: "850px",
}, },
dropShadow: {
accent: [
'0 10px 8px rgba(6, 78, 59, 0.1)',
'0 4px 3px rgba(6, 78, 59, 0.2)'
],
},
}, },
}, },
future: { future: {