diff --git a/.npmrc b/.npmrc index b6f27f1..3f0f34a 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,2 @@ engine-strict=true +@jsr:registry=https://npm.jsr.io diff --git a/bun.lockb b/bun.lockb index e149802..ac191c8 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index 85509c6..43f6519 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ }, "type": "module", "dependencies": { + "@std/toml": "npm:@jsr/std__toml", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0" }, diff --git a/src/app.css b/src/app.css deleted file mode 100644 index bd6213e..0000000 --- a/src/app.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; \ No newline at end of file diff --git a/src/app.html b/src/app.html index 77a5ff5..065ece0 100644 --- a/src/app.html +++ b/src/app.html @@ -2,7 +2,7 @@ - + %sveltekit.head% diff --git a/src/components/navButton.svelte b/src/components/navButton.svelte new file mode 100644 index 0000000..0dd4573 --- /dev/null +++ b/src/components/navButton.svelte @@ -0,0 +1,30 @@ + + +
+ + {name} +
{name}
+
+
diff --git a/src/components/window.svelte b/src/components/window.svelte new file mode 100644 index 0000000..6c507bf --- /dev/null +++ b/src/components/window.svelte @@ -0,0 +1,32 @@ + + +
+
+

+ {title} +

+ {#if iconUri !== ''} + {iconUri} + {/if} +
+
+ +
+
diff --git a/src/lib/convertDate.ts b/src/lib/convertDate.ts index 436c58a..c0ad526 100644 --- a/src/lib/convertDate.ts +++ b/src/lib/convertDate.ts @@ -16,7 +16,7 @@ const months = [ const convertDate = (published: string) => { const date = published.substring(0, 10); const [year, month, day] = date.split('-'); - return `${day}-${months[parseInt(month) - 1]}-${year}`; + return `${day} ${months[parseInt(month) - 1]} ${year}`; }; export default convertDate; \ No newline at end of file diff --git a/src/lib/getTitle.ts b/src/lib/getTitle.ts new file mode 100644 index 0000000..76a8a14 --- /dev/null +++ b/src/lib/getTitle.ts @@ -0,0 +1,11 @@ +const getTitle = (path: string) => { + let sl = path.split('/') + sl = sl.splice(1) + if (sl.length > 1) { + sl[0] = sl[0][0] + } + const newPath = sl.join('/') + return '[gazesystems /' + newPath + ']$' +} + +export default getTitle; \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 3b28e37..c76e335 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,5 +1,83 @@ - - \ No newline at end of file + + + {title} + + + + + + + +
+
+ +
+ + diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts index 3fc88e5..120040b 100644 --- a/src/routes/+layout.ts +++ b/src/routes/+layout.ts @@ -1,2 +1,9 @@ +import { dev } from '$app/environment'; + +export const csr = dev; export const ssr = true; -export const prerender = true; \ No newline at end of file +export const prerender = true; + +export async function load({ url }) { + return { route: url.pathname } +} \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 78a2414..cba51eb 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1 +1,63 @@ -posts \ No newline at end of file + + +
+ +
+

hi there wavey

+

+ i'm dusk! and this is my personal spot where i plan to put everything that i do on (if i don't forget to...) +

+

not much else to say, hopefully will add more text here one day :>

+

website very much in progress still !!!

+
+
+
+ +
+ +

development

+ +

socials

+ +
+
+
+ + diff --git a/src/routes/about/+page.md b/src/routes/about/+page.md new file mode 100644 index 0000000..53d9be9 --- /dev/null +++ b/src/routes/about/+page.md @@ -0,0 +1,9 @@ ++++ +title = "about me" +date = "2024-08-14" +layout = "blogpost" ++++ + +idk im too lazy to write about myself, bother me if you really want me to + +

(i will do this later)

\ No newline at end of file diff --git a/src/routes/entries/+page.svelte b/src/routes/entries/+page.svelte new file mode 100644 index 0000000..f5b71f8 --- /dev/null +++ b/src/routes/entries/+page.svelte @@ -0,0 +1,36 @@ + + +
+ {#each posts as post, index} + {@const x = index % 2 === 0 ? 'lg:ml-16' : 'lg:ml-36'} + {@const y = index % 2 === 0 ? 'lg:mt-6' : 'lg:mt-10'} + + {/each} +
diff --git a/src/routes/entries/+page.ts b/src/routes/entries/+page.ts new file mode 100644 index 0000000..2776267 --- /dev/null +++ b/src/routes/entries/+page.ts @@ -0,0 +1,34 @@ +import convertDate from "$lib/convertDate"; + +export interface PostData { + path: string, + published: string, + metadata: Record, +} + +export async function load({ params }) { + const allPostFiles: Record = import.meta.glob('./*/+page.md', {eager: true}); + let allPosts: PostData[] = Object.entries(allPostFiles).map(([path, post]) => { + const postPath = path.slice(2, -8); + return { + metadata: post.metadata, + path: postPath, + published: convertDate(post.metadata.date) + }; + }); + allPosts = allPosts.map((post) => { + if (!("excerpt" in post.metadata)) { + post.metadata.excerpt = "" + } + return post; + }); + allPosts = allPosts.toSorted((post, opost) => { + const date = new Date(post.metadata.date); + const odate = new Date(opost.metadata.date); + return odate.getTime() - date.getTime() + }); + if (!allPosts.length) { + return { status: 404 }; + } + return { posts: allPosts }; +} \ No newline at end of file diff --git a/src/routes/entries/_layout.svelte b/src/routes/entries/_layout.svelte new file mode 100644 index 0000000..4e5d77e --- /dev/null +++ b/src/routes/entries/_layout.svelte @@ -0,0 +1,15 @@ + + +
+ +
+ +
+
+
\ No newline at end of file diff --git a/src/routes/entries/hello-world/+page.md b/src/routes/entries/hello-world/+page.md new file mode 100644 index 0000000..444670a --- /dev/null +++ b/src/routes/entries/hello-world/+page.md @@ -0,0 +1,8 @@ ++++ +title = "hello universe" +date = "2024-08-08" +layout = "blogpost" +excerpt = "meow" ++++ + +hello everyone :3 \ No newline at end of file diff --git a/src/routes/entries/test/+page.md b/src/routes/entries/test/+page.md new file mode 100644 index 0000000..95fe0c3 --- /dev/null +++ b/src/routes/entries/test/+page.md @@ -0,0 +1,17 @@ ++++ +title = "test" +date = "2024-08-13" +layout = "blogpost" +excerpt = "this is a test document. it is used for testing stuff." ++++ + + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed iaculis ligula sed odio fermentum, ac aliquet diam sagittis. Phasellus vel elementum arcu. Fusce id ante lacus. Nullam malesuada, enim nec maximus mollis, tortor metus dapibus mi, id tincidunt massa massa sed velit. Curabitur cursus, lorem rutrum laoreet posuere, tellus eros faucibus odio, non ullamcorper magna lectus non justo. Fusce pulvinar sagittis nisl et pretium. Proin quis pellentesque risus. + +Pellentesque massa purus, ornare aliquam velit et, hendrerit lacinia felis. Fusce nec felis maximus, egestas lorem et, vehicula libero. Donec gravida sodales porta. Nunc ac urna vestibulum, finibus erat vitae, euismod nisi. Morbi auctor pretium diam ut pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vivamus pulvinar orci vitae dolor sodales placerat. Integer tristique condimentum massa, non euismod nisi sodales eu. + +Integer consectetur ligula quis mauris porta sodales. Morbi tincidunt elementum tortor ut auctor. Vestibulum vehicula sit amet augue sed bibendum. Cras sit amet elit ac tortor malesuada condimentum. Nunc ac mi sed lectus mollis tristique sit amet eu nunc. Nunc dapibus dignissim dolor. Nam sed quam ex. Cras vel pharetra lectus, a interdum ante. Sed condimentum efficitur auctor. Vestibulum dignissim erat in rutrum sodales. Mauris ultrices nibh eget luctus lobortis. + +Etiam sollicitudin suscipit odio, sed malesuada ipsum luctus id. Phasellus commodo, turpis non ornare viverra, arcu tortor tincidunt orci, at pellentesque justo est ut dui. Aliquam erat volutpat. Nulla gravida risus eget nunc commodo hendrerit. Aenean faucibus dui blandit ipsum gravida, non elementum orci fermentum. Morbi consequat elementum nulla, a dictum eros imperdiet sit amet. Sed ac vulputate ante, nec lobortis erat. Aliquam sodales nisi magna, ut molestie orci varius tincidunt. Suspendisse tempor orci quis erat accumsan, nec eleifend tellus interdum. Phasellus nec massa mi. Donec mattis mi imperdiet nisl varius, id vehicula felis tempor. Aliquam in tincidunt erat. Proin nec ornare enim, id lacinia urna. Morbi dolor lorem, porttitor quis orci ac, facilisis fringilla neque. Nulla tempor, dui sit amet lacinia faucibus, felis erat posuere nisi, ac condimentum lorem ex vel elit. + +Pellentesque vitae massa quis purus sodales consectetur. Aliquam ex leo, efficitur vitae nulla sed, pretium luctus ante. Proin et lacus dictum, bibendum leo at, rhoncus sem. Suspendisse non tellus odio. In pulvinar quam sed arcu ornare volutpat. Cras commodo a enim id accumsan. Etiam nec augue ullamcorper, consequat tellus varius, lacinia urna. Aenean rutrum a lorem quis dapibus. Curabitur vitae ipsum faucibus risus elementum condimentum. Proin pretium vulputate leo commodo molestie. Proin ultricies ac nibh vel molestie. Vestibulum vitae lorem lobortis, ultrices odio bibendum, lacinia risus. \ No newline at end of file diff --git a/src/routes/posts/+page.svelte b/src/routes/posts/+page.svelte deleted file mode 100644 index 6c75d27..0000000 --- a/src/routes/posts/+page.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - -
- {#each posts as post} - - {/each} -
\ No newline at end of file diff --git a/src/routes/posts/+page.ts b/src/routes/posts/+page.ts deleted file mode 100644 index f026e35..0000000 --- a/src/routes/posts/+page.ts +++ /dev/null @@ -1,20 +0,0 @@ -import convertDate from "$lib/convertDate"; - -export interface PostData { - path: string, - published: string, - metadata: Record, -} - -export async function load({ params }) { - const allPostFiles: Record = import.meta.glob('./*/+page.md', {eager: true}); - const allPosts: PostData[] = Object.entries(allPostFiles).map(([path, post]) => { - const postPath = path.slice(2, -8); - return { metadata: post.metadata, path: postPath, published: convertDate(post.metadata.date) }; - }); - if (!allPosts.length) { - return { status: 404 }; - } - //console.log(allPosts); - return { posts: allPosts }; -} \ No newline at end of file diff --git a/src/routes/posts/_layout.svelte b/src/routes/posts/_layout.svelte deleted file mode 100644 index 481e9dc..0000000 --- a/src/routes/posts/_layout.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -
-

{ title }

-
    on: { date }
-
    by: { author }
- -
\ No newline at end of file diff --git a/src/routes/posts/hello-world/+page.md b/src/routes/posts/hello-world/+page.md deleted file mode 100644 index 750787b..0000000 --- a/src/routes/posts/hello-world/+page.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Hello World -author: Jeff -date: 2022-05-27 -layout: blogpost -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/src/styles/app.css b/src/styles/app.css new file mode 100644 index 0000000..7e64d7b --- /dev/null +++ b/src/styles/app.css @@ -0,0 +1,136 @@ +@import './prism-synthwave84.css'; + +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + @apply font-sans-serif bg-ralsei-black text-ralsei-white; + @apply prose-code:font-monospace prose-headings:font-monospace; + cursor: url('/icons/gaze_closed.png'), default; + } + + .prose h1::before { + content: '> '; + } + + .prose h2::before { + content: '>> '; + } + + .prose h3::before { + content: '>>> '; + } + + .prose h4::before { + content: '>>>> '; + } + + .prose a:hover { + @apply animate-pulse-fast; + } + + h1,h2,h3,h4,h5,h6 { + text-shadow: 0 0 3px theme(colors.ralsei.black), 0 0 6px theme(colors.ralsei.pink.neon), 0 0 10px #fff3; + } + + li,p { + text-shadow: 0 0 1px theme(colors.ralsei.black), 0 0 5px theme(colors.ralsei.white); + } + + li::marker { + text-shadow: 0 0 4px theme(colors.ralsei.pink.regular), 0 0 6px #fff9; + } + + code { + text-shadow: 0 0 4px theme(colors.ralsei.pink.regular); + } + + a { + text-shadow: 0 0 2px theme(colors.ralsei.black), 0 0 5px theme(colors.ralsei.green.light); + cursor: url('/icons/gaze.png'), pointer; + } + + @font-face { + font-family: 'Comic Shanns'; + font-display: swap; + src: url('/fonts/ComicMono-Condensed.woff2') format('woff2'); + } + + @font-face { + font-family: 'Comic Sans'; + font-style: normal; + font-display: swap; + src: url('/fonts/comic.woff2') format('woff2'); + } + + @font-face { + font-family: 'Comic Sans'; + font-style: normal; + font-weight: bold; + font-display: swap; + src: url('/fonts/comicbd.woff2') format('woff2'); + } + + @font-face { + font-family: 'Comic Sans'; + font-style: italic; + font-display: swap; + src: url('/fonts/comici.woff2') format('woff2'); + } +} + +@layer utilities { + .border-groove { + border-style: groove; + } + + .border-ridge { + border-style: ridge; + } + + .app-grid-background-anim { + animation: 4s linear app-grid-move-first-layer infinite; + } + + .app-grid-background-second-layer-anim { + animation: 12s linear app-grid-move-second-layer infinite; + } + + @keyframes app-grid-move-first-layer { + 0% { + background-position: 0px 0px; + } + 100% { + background-position: 126px 84px; + } + } + + @keyframes app-grid-move-second-layer { + 0% { + background-position: 96px 120px; + } + 100% { + background-position: 0px 0px; + } + } +} + +a.app-selected-route { + text-shadow: 0 0 2px theme(colors.ralsei.black), 0 0 5px theme(colors.ralsei.pink.regular); +} + +.app-grid-background { + background-image: + linear-gradient(theme(colors.ralsei.green.light / 0.4), transparent 2px), + linear-gradient(to right, theme(colors.ralsei.green.light / 0.4), transparent 2px); + background-size: 100% 42px, 42px 100%; +} + +.app-grid-background-second-layer { + background-image: + linear-gradient(theme(colors.ralsei.pink.neon / 0.4), transparent 1px), + linear-gradient(to right, theme(colors.ralsei.pink.neon / 0.4), transparent 1px); + background-size: 100% 24px, 24px 100%; +} \ No newline at end of file diff --git a/src/styles/prism-synthwave84.css b/src/styles/prism-synthwave84.css new file mode 100644 index 0000000..02250fd --- /dev/null +++ b/src/styles/prism-synthwave84.css @@ -0,0 +1,140 @@ +/* + * Synthwave '84 Theme originally by Robb Owen [@Robb0wen] for Visual Studio Code + * Demo: https://marc.dev/demo/prism-synthwave84 + * + * Ported for PrismJS by Marc Backes [@themarcba] + */ + +code[class*="language-"], +pre[class*="language-"] { + color: theme(colors.ralsei.pink.neon); + text-shadow: 0 0 2px theme(colors.ralsei.black), 0 0 5px #ff3eb733, 0 0 10px #fff3; + @apply bg-ralsei-green-dark; + @apply font-monospace; + font-size: 1rem; + line-height: 1.4rem; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +/* :not(pre) > code[class*="language-"], +pre[class*="language-"] { + background-color: transparent !important; + background-image: linear-gradient(to bottom, #2a2139 75%, #34294f); +} */ + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #8e8e8e; +} + +.token.punctuation { + color: #ccc; +} + +.token.tag, +.token.attr-name, +.token.namespace, +.token.number, +.token.unit, +.token.hexcode, +.token.deleted { + color: #e2777a; +} + +.token.property, +.token.selector { + color: #72f1b8; + text-shadow: 0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475; +} + +.token.function-name { + color: #6196cc; +} + +.token.boolean, +.token.selector .token.id, +.token.function { + color: #fdfdfd; + text-shadow: 0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975; +} + +.token.class-name { + color: #fff5f6; + text-shadow: 0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75; +} + +.token.constant, +.token.symbol { + color: #f92aad; + text-shadow: 0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3; +} + +.token.important, +.token.atrule, +.token.keyword, +.token.selector .token.class, +.token.builtin { + color: #f4eee4; + text-shadow: 0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575; +} + +.token.string, +.token.char, +.token.attr-value, +.token.regex, +.token.variable { + color: #f87c32; +} + +.token.operator, +.token.entity, +.token.url { + color: #67cdcc; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.token.inserted { + color: green; +} diff --git a/static/favicon.png b/static/favicon.png deleted file mode 100644 index 825b9e6..0000000 Binary files a/static/favicon.png and /dev/null differ diff --git a/static/fonts/ComicMono-Condensed.woff2 b/static/fonts/ComicMono-Condensed.woff2 new file mode 100644 index 0000000..6117ef3 Binary files /dev/null and b/static/fonts/ComicMono-Condensed.woff2 differ diff --git a/static/fonts/comic.woff2 b/static/fonts/comic.woff2 new file mode 100644 index 0000000..fd99518 Binary files /dev/null and b/static/fonts/comic.woff2 differ diff --git a/static/fonts/comicbd.woff2 b/static/fonts/comicbd.woff2 new file mode 100644 index 0000000..3d7b1bf Binary files /dev/null and b/static/fonts/comicbd.woff2 differ diff --git a/static/fonts/comici.woff2 b/static/fonts/comici.woff2 new file mode 100644 index 0000000..bde7261 Binary files /dev/null and b/static/fonts/comici.woff2 differ diff --git a/static/icons/about.png b/static/icons/about.png new file mode 100644 index 0000000..5f4b33e Binary files /dev/null and b/static/icons/about.png differ diff --git a/static/icons/contact.png b/static/icons/contact.png new file mode 100644 index 0000000..03f681d Binary files /dev/null and b/static/icons/contact.png differ diff --git a/static/icons/entries.png b/static/icons/entries.png new file mode 100644 index 0000000..6f8560f Binary files /dev/null and b/static/icons/entries.png differ diff --git a/static/icons/entry.png b/static/icons/entry.png new file mode 100644 index 0000000..535e090 Binary files /dev/null and b/static/icons/entry.png differ diff --git a/static/icons/gaze.png b/static/icons/gaze.png new file mode 100644 index 0000000..9e305ff Binary files /dev/null and b/static/icons/gaze.png differ diff --git a/static/icons/gaze_closed.png b/static/icons/gaze_closed.png new file mode 100644 index 0000000..0ee783c Binary files /dev/null and b/static/icons/gaze_closed.png differ diff --git a/static/icons/gaze_site.png b/static/icons/gaze_site.png new file mode 100644 index 0000000..380d5b2 Binary files /dev/null and b/static/icons/gaze_site.png differ diff --git a/static/icons/home.png b/static/icons/home.png new file mode 100644 index 0000000..ba373b9 Binary files /dev/null and b/static/icons/home.png differ diff --git a/static/icons/question.png b/static/icons/question.png new file mode 100644 index 0000000..67006ba Binary files /dev/null and b/static/icons/question.png differ diff --git a/static/icons/warning.png b/static/icons/warning.png new file mode 100644 index 0000000..5095881 Binary files /dev/null and b/static/icons/warning.png differ diff --git a/static/wavey.gif b/static/wavey.gif new file mode 100644 index 0000000..1262c0e Binary files /dev/null and b/static/wavey.gif differ diff --git a/svelte.config.js b/svelte.config.js index a54df21..b31f193 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,10 +1,12 @@ -import adapter from "@sveltejs/adapter-static"; +import adapter from "svelte-adapter-bun"; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; import { mdsvex } from 'mdsvex' import rehypeAutolinkHeadings from 'rehype-autolink-headings' import rehypeSlug from 'rehype-slug' +import * as toml from "@std/toml"; + /** @type {import('@sveltejs/kit').Config} */ const config = { extensions: ['.svelte', '.md', '.svx'], @@ -13,19 +15,44 @@ const config = { vitePreprocess(), mdsvex({ extensions: ['.md', '.svx'], + frontmatter: { + type: "toml", + marker: "+", + parse(frontmatter, messages) { + try { + return toml.parse(frontmatter); + } catch (e) { + messages.push( + "Parsing error on line " + + e.line + + ", column " + + e.column + + ": " + + e.message + ); + } + }, + }, rehypePlugins: [ rehypeSlug, rehypeAutolinkHeadings, ], - smartypants: { dashes: 'oldschool' }, + smartypants: { + dashes: 'oldschool', + quotes: true, + ellipses: true, + backticks: false, + }, layout: { - _: './src/routes/+layout.svelte', - blogpost: './src/routes/posts/_layout.svelte', + blogpost: './src/routes/entries/_layout.svelte', }, }), ], kit: { + prerender: { + handleHttpError: 'warn', + }, adapter: adapter({ precompress: true, }), diff --git a/tailwind.config.js b/tailwind.config.js index 02b24d6..096b782 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,8 +1,55 @@ +const colors = require('tailwindcss/colors') + /** @type {import('tailwindcss').Config} */ export default { content: ['./src/**/*.{html,js,svelte,ts,md}'], theme: { - extend: {}, + extend: { + typography: ({ theme }) => ({ + ralsei: { + css: { + '--tw-prose-body': theme('colors.ralsei.white'), + '--tw-prose-headings': theme('colors.ralsei.pink.neon'), + '--tw-prose-lead': theme('colors.ralsei.white'), + '--tw-prose-links': theme('colors.ralsei.green.light'), + '--tw-prose-bold': theme('colors.ralsei.white'), + '--tw-prose-counters': theme('colors.ralsei.pink.regular'), + '--tw-prose-bullets': theme('colors.ralsei.pink.regular'), + '--tw-prose-hr': theme('colors.ralsei.white'), + '--tw-prose-quotes': theme('colors.ralsei.white'), + '--tw-prose-quote-borders': theme('colors.ralsei.white'), + '--tw-prose-captions': theme('colors.ralsei.white'), + '--tw-prose-code': theme('colors.ralsei.pink.regular'), + '--tw-prose-pre-code': theme('colors.ralsei.white'), + '--tw-prose-pre-bg': theme('colors.ralsei.green.dark'), + '--tw-prose-th-borders': theme('colors.ralsei.white'), + '--tw-prose-td-borders': theme('colors.ralsei.white'), + }, + }, + }), + animation: { + 'bounce-slow' : 'bounce 3s infinite', + 'pulse-fast' : 'pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite', + }, + colors: { + ralsei: { + pink: { + regular: '#fe96e0', + neon: '#ff3eb7', + }, + white: '#fff9fe', + black: '#000801', + green: { + light: '#4dcc8e', + dark: '#162d26', + } + } + } + }, + fontFamily: { + 'sans-serif': ['"Comic Sans", sans-serif'], + monospace: ['"Comic Shanns", monospace'], + } }, plugins: [ require('@tailwindcss/typography')