From 2d7171eeb86dd9ec3886ccc6361791b3bd15ae49 Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Tue, 2 Apr 2024 19:50:50 -0700 Subject: [PATCH] feat: add initial site navigation and formatting --- README.md | 17 +- bun.lockb | Bin 127052 -> 132860 bytes components.json | 2 +- package.json | 6 + src/lib/app.css | 66 ++--- src/lib/assets/Name.svelte | 275 +++++++++++++++++++++ src/lib/components/Footer.svelte | 19 ++ src/lib/components/Navbar/Navbar.svelte | 63 +++++ src/lib/components/ui/button/button.svelte | 25 ++ src/lib/components/ui/button/index.ts | 50 ++++ src/routes/+layout.svelte | 13 +- src/routes/+page.svelte | 5 + src/routes/about/+page.svelte | 0 src/routes/blog/+page.svelte | 0 tailwind.config.js | 61 +++-- 15 files changed, 535 insertions(+), 67 deletions(-) create mode 100644 src/lib/assets/Name.svelte create mode 100644 src/lib/components/Footer.svelte create mode 100644 src/lib/components/Navbar/Navbar.svelte create mode 100644 src/lib/components/ui/button/button.svelte create mode 100644 src/lib/components/ui/button/index.ts create mode 100644 src/routes/about/+page.svelte create mode 100644 src/routes/blog/+page.svelte diff --git a/README.md b/README.md index 0a73c8e..d1979cd 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,18 @@ # coredump -My personal website and its associated blog. Written in SvelteKit with components from `shadcn`. +My personal website and its associated blog. Written in [SvelteKit](https://kit.svelte.dev) and [TailwindCSS](https://tailwindcss.com/). + +## Running locally + +Install [bun](https://bun.sh), clone and `cd` into the repository, then run: + +```bash +bun install + +# for development: +bun dev + +# for production: +bun build +bun start +``` diff --git a/bun.lockb b/bun.lockb index 9c15dabbd69aa39ce79e043e5c23cf9ad939ce5c..b5bcd4df09007dcfef9e60963f2e2c2407d6f3a8 100755 GIT binary patch delta 25230 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 delta 21626 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 + export let height = '192'; + export let width = 'auto'; + export let href: string; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ///// + yyyyyyy + yyyyyyy + o + uuuuuu + uuuuuu + wwwwwww + wwwww + wwwwwww + eeeeeeeeeeee + nnnn + nnnnnnnn + wwwwwww + wwwww + wwwwwwwuuuuuu + uuuuuu + <<<<<<< + ::::: + >>>>>>> + y:::::y + y:::::y + ::::::::::: + u::::u + u::::u + w:::::w + w:::::w + w:::::w + ee::::::::::::ee + n:::nn::::::::nn + w:::::w + w:::::w + w:::::w u::::u + u::::u + <:::::< + ::::: + >:::::> + y:::::y + y:::::y + :::::::::::::::ou::::u + u::::u + w:::::w + w:::::::w + w:::::w + e::::::eeeee:::::een::::::::::::::nn + w:::::w + w:::::::w + w:::::w + u::::u + u::::u + <:::::< + ::::: + >:::::> + y:::::y + y:::::y + :::::ooo + :::::ou::::u + u::::u + w:::::w + w:::::::::w + w:::::w + e::::::e + e:::::enn:::::::::::::::n + w:::::w + w:::::::::w + w:::::w + u::::u + u::::u + <:::::< + ::::: + >:::::> + y:::::y + y:::::y + :::: + ::::ou::::u + u::::u + w:::::w + w:::::w:::::w + w:::::w + e:::::::eeeee::::::e + n:::::nnnn:::::n + w:::::w + w:::::w:::::w + w:::::w + u::::u + u::::u + <:::::< + ::::: + >:::::> + y:::::y y:::::y + :::: + ::::ou::::u + u::::u + w:::::w w:::::w w:::::w w:::::w + e:::::::::::::::::e + n::::n + n::::n + w:::::w w:::::w w:::::w w:::::w + u::::u + u::::u + <:::::< + ::::: + >:::::> + y:::::y:::::y + :::: + ::::ou::::u + u::::u + w:::::w:::::w + w:::::w:::::w + e::::::eeeeeeeeeee + n::::n + n::::n + w:::::w:::::w + w:::::w:::::w + u::::u + u::::u + <:::::< + ::::: + >:::::> + y:::::::::y + :::: + ::::ou:::::uuuu:::::u + w:::::::::w + w:::::::::w + e:::::::e + n::::n + n::::n + w:::::::::w + w:::::::::w + u:::::uuuu:::::u + <:::::< + ::::: + >:::::> + y:::::::y + :::::ooo + :::::ou:::::::::::::::uu + w:::::::w + w:::::::w + e::::::::e + n::::n + n::::n + w:::::::w + w:::::::w + u:::::::::::::::uu + <:::::< + ::::: + >:::::> + y:::::y + ::::::::::::::: + u:::::::::::::::u + w:::::w + w:::::w + e::::::::eeeeeeee + n::::n + n::::n + w:::::w + w:::::w + u:::::::::::::::u + <:::::< + ::::: + >:::::> + y:::::y + ::::::::::: + uu::::::::uu:::u + w:::w + w:::w + ee:::::::::::::e + n::::n + n::::n + w:::w + w:::w + uu::::::::uu:::u + <:::::< + ::::: + >:::::> + y:::::y + o + uuuuuuuu + uuuu + www + www + eeeeeeeeeeeeee + nnnnnn + nnnnnn + www + www + uuuuuuuu + uuuu + <:::::< + ::::: + >:::::> + y:::::y + <<<<<<< + ::::: + >>>>>>> + y:::::y + ::::: + y:::::y + ///// + y:::::y + yyyyyyy + + + diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte new file mode 100644 index 0000000..99499ef --- /dev/null +++ b/src/lib/components/Footer.svelte @@ -0,0 +1,19 @@ + + +
+
+
+
+ +
+

+ © Youwen Wu 2024 | Built with SvelteKit and + shad-cn | + View the source +

+
+
diff --git a/src/lib/components/Navbar/Navbar.svelte b/src/lib/components/Navbar/Navbar.svelte new file mode 100644 index 0000000..ae93d64 --- /dev/null +++ b/src/lib/components/Navbar/Navbar.svelte @@ -0,0 +1,63 @@ + + + + + diff --git a/src/lib/components/ui/button/button.svelte b/src/lib/components/ui/button/button.svelte new file mode 100644 index 0000000..86827f3 --- /dev/null +++ b/src/lib/components/ui/button/button.svelte @@ -0,0 +1,25 @@ + + + + + diff --git a/src/lib/components/ui/button/index.ts b/src/lib/components/ui/button/index.ts new file mode 100644 index 0000000..96714df --- /dev/null +++ b/src/lib/components/ui/button/index.ts @@ -0,0 +1,50 @@ +import type { Button as ButtonPrimitive } from "bits-ui"; +import { type VariantProps, tv } from "tailwind-variants"; +import Root from "./button.svelte"; + +const buttonVariants = tv({ + base: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", + variants: { + variant: { + default: "bg-primary text-primary-foreground shadow hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", + outline: + "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", + secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, +}); + +type Variant = VariantProps["variant"]; +type Size = VariantProps["size"]; + +type Props = ButtonPrimitive.Props & { + variant?: Variant; + size?: Size; +}; + +type Events = ButtonPrimitive.Events; + +export { + Root, + type Props, + type Events, + // + Root as Button, + type Props as ButtonProps, + type Events as ButtonEvents, + buttonVariants, +}; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index db7ff84..7538471 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,5 +1,16 @@ - + + +
+ +
+ +