Update layout to be a svelte monorepo with shadcn-svelte
Also: add the start of a.starrysky.fyi
diff --git a/packages/components/src/lib/ui/button/Button.svelte b/packages/components/src/lib/ui/button/Button.svelte
new file mode 100644
index 0000000..c65bd1d
--- /dev/null
+++ b/packages/components/src/lib/ui/button/Button.svelte
@@ -0,0 +1,33 @@
+<script lang="ts">
+ import type { VariantProps } from "class-variance-authority";
+ import type {
+ HTMLAnchorAttributes,
+ HTMLButtonAttributes
+ } from "svelte/elements";
+ import { cn } from "$lib/utils";
+ import { buttonVariants } from ".";
+
+ let className: string | undefined | null = undefined;
+ export { className as class };
+ export let href: HTMLAnchorAttributes["href"] = undefined;
+ export let type: HTMLButtonAttributes["type"] = undefined;
+ export let variant: VariantProps<typeof buttonVariants>["variant"] =
+ "default";
+ export let size: VariantProps<typeof buttonVariants>["size"] = "default";
+</script>
+
+<svelte:element
+ this={href ? "a" : "button"}
+ type={href ? undefined : type}
+ {href}
+ class={cn(buttonVariants({ variant, size, className }))}
+ {...$$restProps}
+ on:click
+ on:change
+ on:keydown
+ on:keyup
+ on:mouseenter
+ on:mouseleave
+>
+ <slot />
+</svelte:element>