From b9affbbb6d4dfb963e6d832f0511b8e7df61e1f8 Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Wed, 3 Apr 2024 02:16:22 -0700 Subject: [PATCH] feat: add test blog post with katex support --- README.md | 4 +- bun.lockb | Bin 134580 -> 136836 bytes package.json | 3 + src/globals.d.ts | 0 src/lib/components/Footer.svelte | 11 +- src/lib/components/Gpg.svelte | 57 ++++++++ src/lib/components/Navbar/Navbar.svelte | 2 +- src/lib/components/Socials.svelte | 63 ++++++++ .../alert-dialog/alert-dialog-action.svelte | 21 +++ .../alert-dialog/alert-dialog-cancel.svelte | 21 +++ .../alert-dialog/alert-dialog-content.svelte | 27 ++++ .../alert-dialog-description.svelte | 16 +++ .../alert-dialog/alert-dialog-footer.svelte | 16 +++ .../alert-dialog/alert-dialog-header.svelte | 13 ++ .../alert-dialog/alert-dialog-overlay.svelte | 21 +++ .../alert-dialog/alert-dialog-portal.svelte | 9 ++ .../ui/alert-dialog/alert-dialog-title.svelte | 14 ++ src/lib/components/ui/alert-dialog/index.ts | 40 ++++++ src/lib/components/ui/badge/badge.svelte | 18 +++ src/lib/components/ui/badge/index.ts | 22 +++ src/lib/components/ui/popover/index.ts | 17 +++ .../ui/popover/popover-content.svelte | 27 ++++ src/lib/components/ui/scroll-area/index.ts | 10 ++ .../scroll-area/scroll-area-scrollbar.svelte | 27 ++++ .../ui/scroll-area/scroll-area.svelte | 32 +++++ src/lib/components/ui/sonner/index.ts | 1 + src/lib/components/ui/sonner/sonner.svelte | 20 +++ src/lib/styles/katex.min.css | 1 + src/lib/utils.ts | 24 ++-- src/routes/+layout.svelte | 5 +- src/routes/+page.svelte | 35 +++-- src/routes/blog/+layout.svelte | 5 + src/routes/blog/+page.svelte | 49 ++++++- src/routes/blog/+page.ts | 17 +++ static/fonts/KaTeX_AMS-Regular.ttf | Bin 0 -> 63632 bytes static/fonts/KaTeX_AMS-Regular.woff | Bin 0 -> 33516 bytes static/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 28076 bytes static/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 12368 bytes static/fonts/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 7716 bytes static/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 6912 bytes static/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 12344 bytes static/fonts/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 7656 bytes static/fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 6908 bytes static/fonts/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 19584 bytes static/fonts/KaTeX_Fraktur-Bold.woff | Bin 0 -> 13296 bytes static/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 11348 bytes static/fonts/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 19572 bytes static/fonts/KaTeX_Fraktur-Regular.woff | Bin 0 -> 13208 bytes static/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 11316 bytes static/fonts/KaTeX_Main-Bold.ttf | Bin 0 -> 51336 bytes static/fonts/KaTeX_Main-Bold.woff | Bin 0 -> 29912 bytes static/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 25324 bytes static/fonts/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 32968 bytes static/fonts/KaTeX_Main-BoldItalic.woff | Bin 0 -> 19412 bytes static/fonts/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 16780 bytes static/fonts/KaTeX_Main-Italic.ttf | Bin 0 -> 33580 bytes static/fonts/KaTeX_Main-Italic.woff | Bin 0 -> 19676 bytes static/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 16988 bytes static/fonts/KaTeX_Main-Regular.ttf | Bin 0 -> 53580 bytes static/fonts/KaTeX_Main-Regular.woff | Bin 0 -> 30772 bytes static/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 26272 bytes static/fonts/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 31196 bytes static/fonts/KaTeX_Math-BoldItalic.woff | Bin 0 -> 18668 bytes static/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 16400 bytes static/fonts/KaTeX_Math-Italic.ttf | Bin 0 -> 31308 bytes static/fonts/KaTeX_Math-Italic.woff | Bin 0 -> 18748 bytes static/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 16440 bytes static/fonts/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 24504 bytes static/fonts/KaTeX_SansSerif-Bold.woff | Bin 0 -> 14408 bytes static/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 12216 bytes static/fonts/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 22364 bytes static/fonts/KaTeX_SansSerif-Italic.woff | Bin 0 -> 14112 bytes static/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 12028 bytes static/fonts/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 19436 bytes static/fonts/KaTeX_SansSerif-Regular.woff | Bin 0 -> 12316 bytes static/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 10344 bytes static/fonts/KaTeX_Script-Regular.ttf | Bin 0 -> 16648 bytes static/fonts/KaTeX_Script-Regular.woff | Bin 0 -> 10588 bytes static/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 9644 bytes static/fonts/KaTeX_Size1-Regular.ttf | Bin 0 -> 12228 bytes static/fonts/KaTeX_Size1-Regular.woff | Bin 0 -> 6496 bytes static/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5468 bytes static/fonts/KaTeX_Size2-Regular.ttf | Bin 0 -> 11508 bytes static/fonts/KaTeX_Size2-Regular.woff | Bin 0 -> 6188 bytes static/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5208 bytes static/fonts/KaTeX_Size3-Regular.ttf | Bin 0 -> 7588 bytes static/fonts/KaTeX_Size3-Regular.woff | Bin 0 -> 4420 bytes static/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3624 bytes static/fonts/KaTeX_Size4-Regular.ttf | Bin 0 -> 10364 bytes static/fonts/KaTeX_Size4-Regular.woff | Bin 0 -> 5980 bytes static/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 4928 bytes static/fonts/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 27556 bytes static/fonts/KaTeX_Typewriter-Regular.woff | Bin 0 -> 16028 bytes static/fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 13568 bytes static/test.md | 135 ++++++++++++++++++ static/youwen.gpg | 41 ++++++ 96 files changed, 783 insertions(+), 41 deletions(-) create mode 100644 src/globals.d.ts create mode 100644 src/lib/components/Gpg.svelte create mode 100644 src/lib/components/Socials.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-action.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-content.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-description.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-header.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-title.svelte create mode 100644 src/lib/components/ui/alert-dialog/index.ts create mode 100644 src/lib/components/ui/badge/badge.svelte create mode 100644 src/lib/components/ui/badge/index.ts create mode 100644 src/lib/components/ui/popover/index.ts create mode 100644 src/lib/components/ui/popover/popover-content.svelte create mode 100644 src/lib/components/ui/scroll-area/index.ts create mode 100644 src/lib/components/ui/scroll-area/scroll-area-scrollbar.svelte create mode 100644 src/lib/components/ui/scroll-area/scroll-area.svelte create mode 100644 src/lib/components/ui/sonner/index.ts create mode 100644 src/lib/components/ui/sonner/sonner.svelte create mode 100644 src/lib/styles/katex.min.css create mode 100644 src/routes/blog/+layout.svelte create mode 100644 src/routes/blog/+page.ts create mode 100644 static/fonts/KaTeX_AMS-Regular.ttf create mode 100644 static/fonts/KaTeX_AMS-Regular.woff create mode 100644 static/fonts/KaTeX_AMS-Regular.woff2 create mode 100644 static/fonts/KaTeX_Caligraphic-Bold.ttf create mode 100644 static/fonts/KaTeX_Caligraphic-Bold.woff create mode 100644 static/fonts/KaTeX_Caligraphic-Bold.woff2 create mode 100644 static/fonts/KaTeX_Caligraphic-Regular.ttf create mode 100644 static/fonts/KaTeX_Caligraphic-Regular.woff create mode 100644 static/fonts/KaTeX_Caligraphic-Regular.woff2 create mode 100644 static/fonts/KaTeX_Fraktur-Bold.ttf create mode 100644 static/fonts/KaTeX_Fraktur-Bold.woff create mode 100644 static/fonts/KaTeX_Fraktur-Bold.woff2 create mode 100644 static/fonts/KaTeX_Fraktur-Regular.ttf create mode 100644 static/fonts/KaTeX_Fraktur-Regular.woff create mode 100644 static/fonts/KaTeX_Fraktur-Regular.woff2 create mode 100644 static/fonts/KaTeX_Main-Bold.ttf create mode 100644 static/fonts/KaTeX_Main-Bold.woff create mode 100644 static/fonts/KaTeX_Main-Bold.woff2 create mode 100644 static/fonts/KaTeX_Main-BoldItalic.ttf create mode 100644 static/fonts/KaTeX_Main-BoldItalic.woff create mode 100644 static/fonts/KaTeX_Main-BoldItalic.woff2 create mode 100644 static/fonts/KaTeX_Main-Italic.ttf create mode 100644 static/fonts/KaTeX_Main-Italic.woff create mode 100644 static/fonts/KaTeX_Main-Italic.woff2 create mode 100644 static/fonts/KaTeX_Main-Regular.ttf create mode 100644 static/fonts/KaTeX_Main-Regular.woff create mode 100644 static/fonts/KaTeX_Main-Regular.woff2 create mode 100644 static/fonts/KaTeX_Math-BoldItalic.ttf create mode 100644 static/fonts/KaTeX_Math-BoldItalic.woff create mode 100644 static/fonts/KaTeX_Math-BoldItalic.woff2 create mode 100644 static/fonts/KaTeX_Math-Italic.ttf create mode 100644 static/fonts/KaTeX_Math-Italic.woff create mode 100644 static/fonts/KaTeX_Math-Italic.woff2 create mode 100644 static/fonts/KaTeX_SansSerif-Bold.ttf create mode 100644 static/fonts/KaTeX_SansSerif-Bold.woff create mode 100644 static/fonts/KaTeX_SansSerif-Bold.woff2 create mode 100644 static/fonts/KaTeX_SansSerif-Italic.ttf create mode 100644 static/fonts/KaTeX_SansSerif-Italic.woff create mode 100644 static/fonts/KaTeX_SansSerif-Italic.woff2 create mode 100644 static/fonts/KaTeX_SansSerif-Regular.ttf create mode 100644 static/fonts/KaTeX_SansSerif-Regular.woff create mode 100644 static/fonts/KaTeX_SansSerif-Regular.woff2 create mode 100644 static/fonts/KaTeX_Script-Regular.ttf create mode 100644 static/fonts/KaTeX_Script-Regular.woff create mode 100644 static/fonts/KaTeX_Script-Regular.woff2 create mode 100644 static/fonts/KaTeX_Size1-Regular.ttf create mode 100644 static/fonts/KaTeX_Size1-Regular.woff create mode 100644 static/fonts/KaTeX_Size1-Regular.woff2 create mode 100644 static/fonts/KaTeX_Size2-Regular.ttf create mode 100644 static/fonts/KaTeX_Size2-Regular.woff create mode 100644 static/fonts/KaTeX_Size2-Regular.woff2 create mode 100644 static/fonts/KaTeX_Size3-Regular.ttf create mode 100644 static/fonts/KaTeX_Size3-Regular.woff create mode 100644 static/fonts/KaTeX_Size3-Regular.woff2 create mode 100644 static/fonts/KaTeX_Size4-Regular.ttf create mode 100644 static/fonts/KaTeX_Size4-Regular.woff create mode 100644 static/fonts/KaTeX_Size4-Regular.woff2 create mode 100644 static/fonts/KaTeX_Typewriter-Regular.ttf create mode 100644 static/fonts/KaTeX_Typewriter-Regular.woff create mode 100644 static/fonts/KaTeX_Typewriter-Regular.woff2 create mode 100644 static/test.md create mode 100644 static/youwen.gpg diff --git a/README.md b/README.md index ada1d21..097bfe2 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,6 @@ bun install bun dev # for production: -bun build -bun start +bun run build +bun preview ``` diff --git a/bun.lockb b/bun.lockb index ffb85bf0e4270bfabed8deaf619530f9757549e8..3dfd6e3cc8771abf03a6a4dc90ad3562f88c517c 100755 GIT binary patch delta 23228 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 delta 22028 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 ImOSVG05HcZJpcdz diff --git a/package.json b/package.json index fd2cb94..43ec7e1 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,11 @@ "@fontsource/geist-sans": "^5.0.2", "bits-ui": "^0.21.2", "clsx": "^2.1.0", + "marked": "^12.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" } diff --git a/src/globals.d.ts b/src/globals.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte index 47f8556..eb3b3fe 100644 --- a/src/lib/components/Footer.svelte +++ b/src/lib/components/Footer.svelte @@ -1,18 +1,13 @@ -