From 34aff92c429294c44c888fcb85ff0e332558f553 Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Wed, 3 Apr 2024 20:25:56 -0700 Subject: [PATCH] added a bunch of stuff, forgot to commit, check description - add unfinished mobile drawer - massive blog formatting updates - small style updates to main page, etc --- bun.lockb | Bin 137596 -> 139420 bytes package.json | 7 +- src/app.html | 11 +- src/lib/app.css | 2 +- src/lib/assets/coredump-icon.png | Bin 0 -> 1786 bytes src/lib/assets/coredump-icon.svg | 48 ++++++ src/lib/assets/coredump-white.png | Bin 0 -> 6985 bytes src/lib/components/Blog/Article.svelte | 29 ++++ src/lib/components/Navbar/Drawer.svelte | 49 ++++++ src/lib/components/Navbar/Navbar.svelte | 34 ++-- src/lib/components/ui/tooltip/index.ts | 15 ++ .../ui/tooltip/tooltip-content.svelte | 28 ++++ src/lib/styles/markdown.css | 149 ++++++++++++++++++ src/routes/blog/+layout.svelte | 1 + src/routes/blog/+page.svelte | 32 +--- src/routes/blog/+page.ts | 18 ++- static/favicon-dark.ico | Bin 0 -> 16958 bytes static/favicon-light.ico | Bin 0 -> 16958 bytes static/favicon.png | Bin 1571 -> 0 bytes static/test.md | 12 ++ 20 files changed, 388 insertions(+), 47 deletions(-) create mode 100644 src/lib/assets/coredump-icon.png create mode 100644 src/lib/assets/coredump-icon.svg create mode 100644 src/lib/assets/coredump-white.png create mode 100644 src/lib/components/Blog/Article.svelte create mode 100644 src/lib/components/ui/tooltip/index.ts create mode 100644 src/lib/components/ui/tooltip/tooltip-content.svelte create mode 100644 src/lib/styles/markdown.css create mode 100644 static/favicon-dark.ico create mode 100644 static/favicon-light.ico delete mode 100644 static/favicon.png diff --git a/bun.lockb b/bun.lockb index b00f6bc767bf4d89e6a293eb0bb6a6d7a2f0ddac..df7d72b1dd1bf08ccc74bcaa48405f16f77534e9 100755 GIT binary patch delta 25580 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 NcJEBEjw?0){{R~nar*!O diff --git a/package.json b/package.json index f126697..6efe5b5 100644 --- a/package.json +++ b/package.json @@ -48,11 +48,14 @@ "bits-ui": "^0.21.2", "clsx": "^2.1.0", "marked": "^12.0.1", + "marked-alert": "^2.0.1", "marked-katex-extension": "^5.0.1", "mode-watcher": "^0.3.0", "svelte-radix": "^1.1.0", "svelte-sonner": "^0.3.21", "tailwind-merge": "^2.2.2", - "tailwind-variants": "^0.2.1" - } + "tailwind-variants": "^0.2.1", + "vaul-svelte": "^0.3.0" + }, + "packageManager": "pnpm@8.15.5+sha1.a58c038faac410c947dbdb93eb30994037d0fce2" } diff --git a/src/app.html b/src/app.html index 77a5ff5..66dad16 100644 --- a/src/app.html +++ b/src/app.html @@ -2,7 +2,16 @@ - + + %sveltekit.head% diff --git a/src/lib/app.css b/src/lib/app.css index e5576d6..f7bc66f 100644 --- a/src/lib/app.css +++ b/src/lib/app.css @@ -82,7 +82,7 @@ @layer components { .dots-background { --dot-bg: theme('colors.background'); - --dot-color: theme('colors.foreground'); + --dot-color: theme('colors.muted.foreground'); --dot-size: 1px; --dot-space: 22px; background: diff --git a/src/lib/assets/coredump-icon.png b/src/lib/assets/coredump-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..57df827dc8721ab96ba61c445734cb6a47379638 GIT binary patch literal 1786 zcmeAS@N?(olHy`uVBq!ia0y~yVC(>50S;!M$lMjeRzT`ofKP}kkREB^|NsAF)*-(db&7N?LZmxgs%6-h{#x&g7upk+S`8CoV9#@=gPrN8LM9( z^yv5+s~**|LG;m+f2%SC4@GqBJnMN;sb#G|+Vy5Xj@7Rj6$O|Cm=qZl*$R@L9zAL$ z?b%`8&-dRtr=N4`B!P*j`wfpZ*PBVsOWe9_onTJtM4bo{P<9s zz3*7sj~0vnA0B+2DJ9)DRbD^e@9GVn`2x$Y-K(_@PiDRtRr~kz%cY)Q)6`sEANzd& z{5qc%<{F!&tEa!tQBk~SFZi}l@mJ2zP}u(AVj0_Q zy@hYNB+EJEbJGppfrK;LU+m&dP3O3zdMnoP$M3p%Fk@EeUA$z&65A%b=sIt9T)*DI zg|nPZAvQuRE(uO*|KPd6d&*74nnmTEP1Y^`ck}`a+COyOQRR9o5W9V<({zoE&Oer1 zQtf&zu=gIr+1Jx=t6GE!ELPyIx;_^G5y`Op+s|gQTUI>+Na6XG|;!`}f&HIAl5ec9HEpN6t15G|s z;8Y6aJm9_b=kLe2LNco?Lzv;A$D-iEZq*{!tmoLi!uc^!f8gx2-7K<;%y>aA(Dm8H zBJ0#2I(>n2M(>M1n>Szyh6T<&e#}6P7g>}+T9SLN0o~kdm;}^g;-n0eFtqXo+J9t) zTgg95pbMQ%+p}Q42L-|l|5dR`XMmx%D>i8jkUA8bvVeV&{_D z1ih_5hd$t8lvyPRNuJ{24Io^m{d3j646Km1>+Y+ z>(|&^e@t#QP&gp*IxyV0cz}AHniGM6x5D5xFiuU)fc6Ex=6*Em9gufU;J`vDV5WrT zO@T!gtIjRBYZw1viFHdEb5JSU+i!oH)bA>8k?vV#oMC=g-Q}w27U?!5b_a-Uthj33 zg1ZYs<~r`K-S@z=oZ~Ghi&fViocvDUYyJddmVy;-@D$1cOs2_-limoZa!pKWf53TA zxJjJ_nC*m|RBkGIi71`q1B>{B)IpF#hf8b49lK4u(ZB*G>D&7~-~xvIw%- + + + +///// +<<<<<<< +::::: +>>>>>>> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<:::::< +::::: +>:::::> +<<<<<<< +::::: +>>>>>>> +::::: +///// + + diff --git a/src/lib/assets/coredump-white.png b/src/lib/assets/coredump-white.png new file mode 100644 index 0000000000000000000000000000000000000000..66f17daf57b0d345c4e7f32834bd8147896c5619 GIT binary patch literal 6985 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 ZBfLDc?u1~U9r#2BbFevVU1{l``hURLoR + import { ChevronRight } from 'svelte-radix'; + + export let content: string; + export let title: string; + export let description: string; + + +
+
+
The Coredump
+ +
{title}
+
+
+

+ {title} +

+ {#if description} +

+ {description} +

+ {/if} +
+ +
+ {@html content} +
+
diff --git a/src/lib/components/Navbar/Drawer.svelte b/src/lib/components/Navbar/Drawer.svelte index e69de29..d2053f6 100644 --- a/src/lib/components/Navbar/Drawer.svelte +++ b/src/lib/components/Navbar/Drawer.svelte @@ -0,0 +1,49 @@ + + + + + + + + + +
+
+ + + + + + +

+

+ It uses + + Bits' Dialog primitive + + under the hood and is inspired by + + this tweet. + +

+
+
+
+ + + diff --git a/src/lib/components/Navbar/Navbar.svelte b/src/lib/components/Navbar/Navbar.svelte index a7fb83a..e066e2b 100644 --- a/src/lib/components/Navbar/Navbar.svelte +++ b/src/lib/components/Navbar/Navbar.svelte @@ -7,6 +7,8 @@ import { navigating } from '$app/stores'; import Coredump from '$lib/assets/Coredump.svelte'; import Separator from '../ui/separator/separator.svelte'; + import * as Tooltip from '$lib/components/ui/tooltip'; + import Drawer from './Drawer.svelte'; let current: 'blog' | 'about' | 'home' | 'portfolio' | string; @@ -25,14 +27,15 @@ }); -