From a37c39734da10e69d34a0bd9c840dce8945e0320 Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Tue, 2 Apr 2024 17:35:26 -0700 Subject: [PATCH] initial commit --- .eslintignore | 13 +++++++ .eslintrc.cjs | 31 +++++++++++++++ .gitignore | 10 +++++ .npmrc | 1 + .prettierignore | 4 ++ .prettierrc | 8 ++++ README.md | 3 ++ bun.lockb | Bin 0 -> 127052 bytes components.json | 14 +++++++ package.json | 46 ++++++++++++++++++++++ playwright.config.ts | 12 ++++++ postcss.config.js | 6 +++ src/app.d.ts | 13 +++++++ src/app.html | 12 ++++++ src/lib/app.css | 78 ++++++++++++++++++++++++++++++++++++++ src/lib/index.ts | 1 + src/lib/utils.ts | 62 ++++++++++++++++++++++++++++++ src/routes/+layout.svelte | 5 +++ src/routes/+page.svelte | 2 + static/favicon.png | Bin 0 -> 1571 bytes svelte.config.js | 18 +++++++++ tailwind.config.js | 64 +++++++++++++++++++++++++++++++ tests/test.ts | 6 +++ tsconfig.json | 19 ++++++++++ vite.config.ts | 6 +++ 25 files changed, 434 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 components.json create mode 100644 package.json create mode 100644 playwright.config.ts create mode 100644 postcss.config.js create mode 100644 src/app.d.ts create mode 100644 src/app.html create mode 100644 src/lib/app.css create mode 100644 src/lib/index.ts create mode 100644 src/lib/utils.ts create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+page.svelte create mode 100644 static/favicon.png create mode 100644 svelte.config.js create mode 100644 tailwind.config.js create mode 100644 tests/test.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..0b75758 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,31 @@ +/** @type { import("eslint").Linter.Config } */ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6635cf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..cc41cea --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..9573023 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..0a73c8e --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# coredump + +My personal website and its associated blog. Written in SvelteKit with components from `shadcn`. diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..9c15dabbd69aa39ce79e043e5c23cf9ad939ce5c GIT binary patch literal 127052 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%0D}yPR>h7Reu4{7@&h(JX5y@CA=?0wLe5{u ziK)pqX0{Sk4BEh#JAgy~kO!nidhyhEKMZmc{5lA*(MLkak|%exS=*=@0Hz`uu$D+? zs||#>AAbQRHwfvW##BoKR85hMGw*vRoT5>~-(A6<(lO;3rNe)mdO&_c + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/lib/app.css b/src/lib/app.css new file mode 100644 index 0000000..6ff7062 --- /dev/null +++ b/src/lib/app.css @@ -0,0 +1,78 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + + --primary: 222.2 47.4% 11.2%; + --primary-foreground: 210 40% 98%; + + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 210 40% 98%; + + --ring: 222.2 84% 4.9%; + + --radius: 0.5rem; + } + + .dark { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 11.2%; + + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + + --ring: hsl(212.7,26.8%,83.9); + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..8871245 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,62 @@ +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; +import { cubicOut } from "svelte/easing"; +import type { TransitionConfig } from "svelte/transition"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +type FlyAndScaleParams = { + y?: number; + x?: number; + start?: number; + duration?: number; +}; + +export const flyAndScale = ( + node: Element, + params: FlyAndScaleParams = { y: -8, x: 0, start: 0.95, duration: 150 } +): TransitionConfig => { + const style = getComputedStyle(node); + const transform = style.transform === "none" ? "" : style.transform; + + const scaleConversion = ( + valueA: number, + scaleA: [number, number], + scaleB: [number, number] + ) => { + const [minA, maxA] = scaleA; + const [minB, maxB] = scaleB; + + const percentage = (valueA - minA) / (maxA - minA); + const valueB = percentage * (maxB - minB) + minB; + + return valueB; + }; + + const styleToString = ( + style: Record + ): string => { + return Object.keys(style).reduce((str, key) => { + if (style[key] === undefined) return str; + return str + `${key}:${style[key]};`; + }, ""); + }; + + return { + duration: params.duration ?? 200, + delay: 0, + css: (t) => { + const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]); + const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]); + const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]); + + return styleToString({ + transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`, + opacity: t + }); + }, + easing: cubicOut + }; +}; \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..db7ff84 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,5 @@ + + + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..5982b0a --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,2 @@ +

Welcome to SvelteKit

+

Visit kit.svelte.dev to read the documentation

diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH)", + input: "hsl(var(--input) / )", + ring: "hsl(var(--ring) / )", + background: "hsl(var(--background) / )", + foreground: "hsl(var(--foreground) / )", + primary: { + DEFAULT: "hsl(var(--primary) / )", + foreground: "hsl(var(--primary-foreground) / )" + }, + secondary: { + DEFAULT: "hsl(var(--secondary) / )", + foreground: "hsl(var(--secondary-foreground) / )" + }, + destructive: { + DEFAULT: "hsl(var(--destructive) / )", + foreground: "hsl(var(--destructive-foreground) / )" + }, + muted: { + DEFAULT: "hsl(var(--muted) / )", + foreground: "hsl(var(--muted-foreground) / )" + }, + accent: { + DEFAULT: "hsl(var(--accent) / )", + foreground: "hsl(var(--accent-foreground) / )" + }, + popover: { + DEFAULT: "hsl(var(--popover) / )", + foreground: "hsl(var(--popover-foreground) / )" + }, + card: { + DEFAULT: "hsl(var(--card) / )", + foreground: "hsl(var(--card-foreground) / )" + } + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)" + }, + fontFamily: { + sans: [...fontFamily.sans] + } + } + }, +}; + +export default config; diff --git a/tests/test.ts b/tests/test.ts new file mode 100644 index 0000000..5816be4 --- /dev/null +++ b/tests/test.ts @@ -0,0 +1,6 @@ +import { expect, test } from '@playwright/test'; + +test('index page has expected h1', async ({ page }) => { + await page.goto('/'); + await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible(); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..fc93cbd --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // except $lib which is handled by https://kit.svelte.dev/docs/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..bbf8c7d --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,6 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit()] +});