diff --git a/bun.lockb b/bun.lockb index 5b04024..43bbccc 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index c951871..f532e1f 100644 --- a/package.json +++ b/package.json @@ -12,23 +12,32 @@ "format": "prettier --write ." }, "devDependencies": { - "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "@types/eslint": "^8.56.7", - "eslint": "^9.0.0", + "@sveltejs/adapter-auto": "^3.2.2", + "@sveltejs/adapter-static": "^3.0.2", + "@sveltejs/kit": "^2.5.20", + "@sveltejs/vite-plugin-svelte": "^3.1.1", + "@types/eslint": "^8.56.11", + "autoprefixer": "^10.4.20", + "eslint": "^9.8.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.36.0", - "globals": "^15.0.0", - "prettier": "^3.1.1", - "prettier-plugin-svelte": "^3.1.2", - "svelte": "^4.2.7", + "eslint-plugin-svelte": "^2.43.0", + "globals": "^15.9.0", + "mdsvex": "^0.11.2", + "postcss": "^8.4.41", + "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.6", + "svelte": "^4.2.18", "svelte-adapter-bun": "^0.5.2", - "svelte-check": "^3.6.0", - "tslib": "^2.4.1", - "typescript": "^5.0.0", - "typescript-eslint": "^8.0.0-alpha.20", - "vite": "^5.0.3" + "svelte-check": "^3.8.5", + "tailwindcss": "^3.4.8", + "tslib": "^2.6.3", + "typescript": "^5.5.4", + "typescript-eslint": "^8.0.1", + "vite": "^5.4.0" }, - "type": "module" + "type": "module", + "dependencies": { + "rehype-autolink-headings": "^7.1.0", + "rehype-slug": "^6.0.0" + } } diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/app.postcss b/src/app.postcss new file mode 100644 index 0000000..bd6213e --- /dev/null +++ b/src/app.postcss @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/src/lib/convertDate.ts b/src/lib/convertDate.ts new file mode 100644 index 0000000..436c58a --- /dev/null +++ b/src/lib/convertDate.ts @@ -0,0 +1,22 @@ +const months = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec' +]; + +const convertDate = (published: string) => { + const date = published.substring(0, 10); + const [year, month, day] = date.split('-'); + return `${day}-${months[parseInt(month) - 1]}-${year}`; +}; + +export default convertDate; \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..9430dc7 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts new file mode 100644 index 0000000..3fc88e5 --- /dev/null +++ b/src/routes/+layout.ts @@ -0,0 +1,2 @@ +export const ssr = true; +export const prerender = true; \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5982b0a..78a2414 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,2 +1 @@ -

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

+posts \ No newline at end of file diff --git a/src/routes/posts/+page.svelte b/src/routes/posts/+page.svelte new file mode 100644 index 0000000..79be7ba --- /dev/null +++ b/src/routes/posts/+page.svelte @@ -0,0 +1,17 @@ + + +
+ {#each data.posts as post} +
+ +

{post.title}

+

{post.excerpt}

+
+
+ +
+
+ {/each} +
\ No newline at end of file diff --git a/src/routes/posts/+page.ts b/src/routes/posts/+page.ts new file mode 100644 index 0000000..679a1e2 --- /dev/null +++ b/src/routes/posts/+page.ts @@ -0,0 +1,13 @@ +import convertDate from "$lib/convertDate"; + +export async function load({ params }) { + const allPostFiles: Record = import.meta.glob('./*/+page.md', {eager: true}); + const allPosts: any[] = Object.entries(allPostFiles).map(([path, post]) => { + const postPath = path.slice(2, -8); + return { ...post.metadata, path: postPath, published: convertDate(post.metadata.date) }; + }); + if (!allPosts.length) { + return { status: 404 }; + } + return { posts: allPosts }; +} \ No newline at end of file diff --git a/src/routes/posts/hello-world/+page.md b/src/routes/posts/hello-world/+page.md new file mode 100644 index 0000000..80ed3b8 --- /dev/null +++ b/src/routes/posts/hello-world/+page.md @@ -0,0 +1,17 @@ +--- +title: Hello World +author: Jeff +date: 2022-05-27 +layout: blog +excerpt: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi eget massa sit amet arcu varius lacinia nec quis lacus. +--- + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi eget massa sit amet arcu varius lacinia nec quis lacus. Proin auctor lectus a volutpat porta. Nullam eget ipsum convallis, elementum orci sodales, blandit velit. In imperdiet, ligula sed ultricies pharetra, metus mi consequat dui, vitae luctus dolor ligula eu nunc. Fusce consequat mauris ac egestas iaculis. Quisque pharetra et ante maximus convallis. Nulla sollicitudin velit molestie mauris dignissim, at hendrerit diam fringilla. Donec mollis eget ex non iaculis. In a vehicula nisl. Donec dapibus orci in enim posuere, non rhoncus risus ultrices. Pellentesque elementum metus ipsum, ut scelerisque mauris ultrices vel. + +Aliquam ullamcorper est vehicula, suscipit nulla pellentesque, convallis odio. Praesent eget elit eget magna fringilla pharetra tempor quis magna. Proin et est vestibulum neque rhoncus mattis non vel lacus. Proin vulputate risus vel dignissim vestibulum. Quisque id sollicitudin neque, sed sagittis urna. Vestibulum vehicula metus sed eros venenatis, sit amet facilisis nunc porta. Nam pharetra luctus sapien, ut venenatis nibh tincidunt mollis. Phasellus efficitur, felis vitae mattis cursus, sapien diam vulputate dui, sit amet pulvinar ante ipsum non urna. + +Fusce est nulla, efficitur vitae turpis eget, pretium rutrum turpis. Fusce at lectus eros. Phasellus convallis condimentum dolor ac rutrum. Integer commodo augue et dui efficitur tincidunt. Nam scelerisque egestas quam, vitae ultrices turpis tincidunt rhoncus. Duis rutrum placerat erat. Ut ac tincidunt elit. In laoreet dictum mauris nec posuere. Curabitur tempus, dolor malesuada ultrices feugiat, ipsum eros faucibus tellus, eu ultricies nunc est sed dolor. Suspendisse nisi eros, vehicula vitae iaculis sit amet, aliquet sit amet leo. Sed euismod urna at eros posuere laoreet. Curabitur in sodales lorem. Nulla rutrum aliquam felis ac tempor. + +Ut pretium vitae elit ac facilisis. Aliquam nisi tortor, feugiat at lacus sed, condimentum egestas urna. Vestibulum hendrerit augue non urna volutpat, et fermentum tortor pellentesque. Aenean eget pharetra leo. Vestibulum ut laoreet dui. Phasellus nec nunc imperdiet, mollis urna eget, interdum lacus. Nulla ac neque pulvinar ex vestibulum venenatis at sed mi. Aliquam faucibus risus eget dolor porttitor interdum. Phasellus rutrum augue ex, vel tempus velit sollicitudin vitae. Pellentesque libero sapien, ullamcorper nec elementum nec, pharetra sed nisl. Nullam egestas arcu et ex vulputate, pretium vestibulum odio convallis. Nam auctor risus nec fermentum ultricies. + +Donec porttitor quis ipsum ut imperdiet. Fusce ac pretium felis, sit amet pharetra orci. Donec vitae quam ac tellus pellentesque fringilla. Curabitur placerat quam a leo imperdiet tincidunt. Nunc porta pulvinar orci sit amet varius. Suspendisse dapibus ipsum nec magna ultricies gravida. Maecenas varius justo ac sem rhoncus lobortis. Integer eget cursus diam. Vestibulum sollicitudin enim at metus scelerisque blandit. In sit amet pulvinar nunc. Sed sit amet rutrum ex, efficitur imperdiet nunc. \ No newline at end of file diff --git a/svelte.config.js b/svelte.config.js index 5d8bc58..e0a20fb 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,17 +1,31 @@ -import adapter from "svelte-adapter-bun"; +import adapter from "@sveltejs/adapter-static"; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; +import { mdsvex } from 'mdsvex' +import rehypeAutolinkHeadings from 'rehype-autolink-headings' +import rehypeSlug from 'rehype-slug' + /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors - // for more information about preprocessors - preprocess: vitePreprocess(), + extensions: ['.svelte', '.md', '.svx'], + + preprocess: [ + vitePreprocess(), + mdsvex({ + extensions: ['.md', '.svx'], + rehypePlugins: [ + rehypeSlug, + rehypeAutolinkHeadings, + ], + smartypants: { dashes: 'oldschool' }, + layout: './src/routes/+layout.svelte', + }), + ], kit: { - // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. - // If your environment is not supported, or you settled on a specific environment, switch out the adapter. - // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: adapter() + adapter: adapter({ + precompress: true, + }), } }; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..13207cc --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,9 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{html,js,svelte,ts}'], + theme: { + extend: {}, + }, + plugins: [], +} +