migrate to svelte5 partially
This commit is contained in:
parent
82150df591
commit
38065f6d7d
15 changed files with 3881 additions and 5433 deletions
|
|
@ -3,7 +3,6 @@ import remarkGFM from 'remark-gfm';
|
||||||
import remarkEmoji from 'remark-emoji';
|
import remarkEmoji from 'remark-emoji';
|
||||||
import rehypeSlug from 'rehype-slug';
|
import rehypeSlug from 'rehype-slug';
|
||||||
import rehypeAutolinkHeadings from 'rehype-autolink-headings';
|
import rehypeAutolinkHeadings from 'rehype-autolink-headings';
|
||||||
import remarkFootnotes from 'remark-footnotes';
|
|
||||||
|
|
||||||
const config = defineConfig({
|
const config = defineConfig({
|
||||||
layout: {
|
layout: {
|
||||||
|
|
@ -15,7 +14,7 @@ const config = defineConfig({
|
||||||
dashes: 'oldschool',
|
dashes: 'oldschool',
|
||||||
},
|
},
|
||||||
|
|
||||||
remarkPlugins: [remarkGFM, remarkEmoji, remarkFootnotes],
|
remarkPlugins: [remarkGFM, remarkEmoji],
|
||||||
rehypePlugins: [rehypeSlug, [rehypeAutolinkHeadings, { behaviour: 'append' }]],
|
rehypePlugins: [rehypeSlug, [rehypeAutolinkHeadings, { behaviour: 'append' }]],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
63
package.json
63
package.json
|
|
@ -19,40 +19,41 @@
|
||||||
"format": "prettier --write --plugin-search-dir=. ."
|
"format": "prettier --write --plugin-search-dir=. ."
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@sveltejs/adapter-cloudflare": "^1.0.0",
|
"@iconify/svelte": "^4.1.0",
|
||||||
"@sveltejs/kit": "^1.0.1",
|
"@sveltejs/adapter-cloudflare": "^4.8.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.47.1",
|
"@sveltejs/kit": "^2.9.0",
|
||||||
"@typescript-eslint/parser": "^5.47.1",
|
"@typescript-eslint/eslint-plugin": "^8.17.0",
|
||||||
"autoprefixer": "^10.4.13",
|
"@typescript-eslint/parser": "^8.17.0",
|
||||||
"browserslist": "^4.21.4",
|
"autoprefixer": "^10.4.20",
|
||||||
"eslint": "^8.31.0",
|
"browserslist": "^4.24.2",
|
||||||
"eslint-config-prettier": "^8.3.0",
|
"eslint": "^9.16.0",
|
||||||
"eslint-plugin-svelte3": "^4.0.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"fontaine": "^0.4.1",
|
"fontaine": "^0.5.0",
|
||||||
"mdi-svelte": "^1.1.2",
|
"mdi-svelte": "^1.1.2",
|
||||||
"mdsvex": "^0.10.6",
|
"mdsvex": "^0.12.3",
|
||||||
"postcss": "^8.4.20",
|
"postcss": "^8.4.49",
|
||||||
"postcss-load-config": "^4.0.1",
|
"postcss-load-config": "^6.0.1",
|
||||||
"postcss-normalize": "^10.0.1",
|
"postcss-normalize": "^13.0.1",
|
||||||
"prettier": "^2.8.1",
|
"prettier": "^3.4.2",
|
||||||
"prettier-plugin-svelte": "^2.9.0",
|
"prettier-plugin-svelte": "^3.3.2",
|
||||||
"rehype-autolink-headings": "^6.1.1",
|
"rehype-autolink-headings": "^7.1.0",
|
||||||
"rehype-slug": "^5.1.0",
|
"rehype-slug": "^6.0.0",
|
||||||
"remark-emoji": "^3.0.2",
|
"remark-emoji": "^5.0.1",
|
||||||
"remark-footnotes": "2.0",
|
"remark-gfm": "^4.0.0",
|
||||||
"remark-gfm": "^3.0.1",
|
"svelte": "^5.8.1",
|
||||||
"svelte": "^3.55.0",
|
"svelte-check": "^4.1.1",
|
||||||
"svelte-check": "^3.0.1",
|
"svelte-preprocess": "^6.0.3",
|
||||||
"svelte-preprocess": "^5.0.0",
|
"tailwindcss": "^3.4.16",
|
||||||
"tslib": "^2.4.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^4.9.4",
|
"typescript": "^5.7.2",
|
||||||
"vite": "^4.0.3",
|
"vite": "^6.0.3",
|
||||||
"vite-imagetools": "^4.0.12"
|
"vite-imagetools": "^7.0.5"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fontsource/ubuntu-mono": "^4.5.11",
|
"@fontsource/ubuntu-mono": "^5.1.0",
|
||||||
"@mdi/js": "^7.1.96",
|
"@mdi/js": "^7.4.47",
|
||||||
"imagetools-core": "^3.2.3"
|
"@sveltejs/vite-plugin-svelte": "^5.0.1",
|
||||||
|
"imagetools-core": "^7.0.2"
|
||||||
},
|
},
|
||||||
"browserslist": "last 2 versions"
|
"browserslist": "last 2 versions"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
6174
pnpm-lock.yaml
generated
6174
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
6
postcss.config.js
Normal file
6
postcss.config.js
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
export default {
|
||||||
|
plugins: {
|
||||||
|
tailwindcss: {},
|
||||||
|
autoprefixer: {},
|
||||||
|
},
|
||||||
|
}
|
||||||
3
src/app.css
Normal file
3
src/app.css
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
|
@ -3,18 +3,19 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mdiCopyright } from '@mdi/js';
|
import Icon from '@iconify/svelte';
|
||||||
|
|
||||||
import Icon from 'mdi-svelte';
|
|
||||||
import Link from './Link.svelte';
|
import Link from './Link.svelte';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<footer>
|
<footer class="mt-16 p-8">
|
||||||
<!-- container class inherited from __layout-->
|
<!-- container class inherited from __layout-->
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p>Copyright <Icon path={mdiCopyright} size="1rem" /> {year} Alexander Daichendt</p>
|
<p class="flex items-center gap-1">
|
||||||
|
Copyright <Icon icon="material-symbols:copyright" class="inline-block" />
|
||||||
|
{year} Alexander Daichendt
|
||||||
|
</p>
|
||||||
|
|
||||||
<div class="footerLinks">
|
<div class="flex md:justify-between md:flex-row flex-col gap-1">
|
||||||
<Link href="/cat">Meeeeeow</Link>
|
<Link href="/cat">Meeeeeow</Link>
|
||||||
<Link href="/privacy">Privacy Policy</Link>
|
<Link href="/privacy">Privacy Policy</Link>
|
||||||
<Link href="/impressum">Impressum</Link>
|
<Link href="/impressum">Impressum</Link>
|
||||||
|
|
@ -26,18 +27,12 @@
|
||||||
<style>
|
<style>
|
||||||
footer {
|
footer {
|
||||||
background-color: var(--special-bg-color);
|
background-color: var(--special-bg-color);
|
||||||
padding: 2rem;
|
|
||||||
margin-top: 4rem;
|
|
||||||
}
|
}
|
||||||
@media screen and (max-width: 500px) {
|
@media screen and (max-width: 500px) {
|
||||||
.footerLinks {
|
.footerLinks {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.footerLinks {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
:global(footer div a) {
|
:global(footer div a) {
|
||||||
color: var(--text-soft-color) !important;
|
color: var(--text-soft-color) !important;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
export let alt: string;
|
export let alt: string;
|
||||||
|
|
||||||
/** `img` attribute */
|
/** `img` attribute */
|
||||||
export let loading: string = 'lazy';
|
export let loading: 'lazy' | 'eager' = 'lazy';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div tabindex="0">
|
<div tabindex="-1">
|
||||||
<table id="table">
|
<table id="table">
|
||||||
<slot />
|
<slot />
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
|
|
||||||
<label class="switch">
|
<label class="switch">
|
||||||
<input aria-label="Nightmode" type="checkbox" bind:checked on:change={toggleTheme} />
|
<input aria-label="Nightmode" type="checkbox" bind:checked on:change={toggleTheme} />
|
||||||
<span class="slider round" />
|
<span class="slider round"></span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
import Footer from '$lib/components/Footer.svelte';
|
import Footer from '$lib/components/Footer.svelte';
|
||||||
import Header from '$lib/components/Header.svelte';
|
import Header from '$lib/components/Header.svelte';
|
||||||
import '@fontsource/ubuntu-mono/400.css';
|
import '@fontsource/ubuntu-mono/400.css';
|
||||||
|
import '../app.css';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container upper">
|
<div class="container upper">
|
||||||
|
|
@ -15,9 +16,6 @@
|
||||||
<Footer />
|
<Footer />
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@import 'normalize.css';
|
|
||||||
@import 'sanitize.css';
|
|
||||||
|
|
||||||
.upper {
|
.upper {
|
||||||
min-height: calc(100vh - 4rem - 8px);
|
min-height: calc(100vh - 4rem - 8px);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import type { PageData } from './$types';
|
|
||||||
import Image from '$lib/components/CatImage.svelte';
|
|
||||||
import Link from '$lib/components/Link.svelte';
|
|
||||||
import SEO from '$components/SEO.svelte';
|
|
||||||
|
|
||||||
export let data: PageData;
|
|
||||||
|
|
||||||
$: cats = data.cats;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<SEO />
|
|
||||||
|
|
||||||
<section class="masonry">
|
|
||||||
{#each cats as cat}
|
|
||||||
<figure>
|
|
||||||
<Link
|
|
||||||
href={`https://cats.daichendt.one/${cat.images[cat.images.length - 1].href}`}
|
|
||||||
disableIcon
|
|
||||||
disablePrefetch
|
|
||||||
>
|
|
||||||
<Image
|
|
||||||
metadata={cat.images}
|
|
||||||
sizes="(max-width: 720px) 1px, (max-width: 1280px) 360px, 720px"
|
|
||||||
/>
|
|
||||||
</Link>
|
|
||||||
</figure>
|
|
||||||
{/each}
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.masonry {
|
|
||||||
column-count: 3;
|
|
||||||
column-gap: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Masonry on medium-sized screens */
|
|
||||||
@media only screen and (max-width: 800px) and (min-width: 500px) {
|
|
||||||
.masonry {
|
|
||||||
column-count: 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Masonry on small screens */
|
|
||||||
@media only screen and (max-width: 500px) and (min-width: 0px) {
|
|
||||||
.masonry {
|
|
||||||
column-count: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
figure {
|
|
||||||
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.4);
|
|
||||||
margin: 0;
|
|
||||||
background-color: #eee;
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0 0 1em;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
figure:hover {
|
|
||||||
filter: brightness(90%);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
import type { PageLoad } from './$types';
|
|
||||||
|
|
||||||
export const load: PageLoad = async ({ fetch }) => {
|
|
||||||
const response = await fetch('https://cats.daichendt.one/list');
|
|
||||||
const asJson = await response.json();
|
|
||||||
return {
|
|
||||||
cats: response.ok && asJson,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import adapter from '@sveltejs/adapter-cloudflare';
|
import adapter from '@sveltejs/adapter-cloudflare';
|
||||||
import preprocess from 'svelte-preprocess';
|
import { sveltePreprocess } from 'svelte-preprocess';
|
||||||
import autoprefixer from 'autoprefixer';
|
import autoprefixer from 'autoprefixer';
|
||||||
import cssNormalizer from 'postcss-normalize';
|
import cssNormalizer from 'postcss-normalize';
|
||||||
import { mdsvex } from 'mdsvex';
|
import { mdsvex } from 'mdsvex';
|
||||||
|
|
@ -12,7 +12,7 @@ const config = {
|
||||||
// Consult https://github.com/sveltejs/svelte-preprocess
|
// Consult https://github.com/sveltejs/svelte-preprocess
|
||||||
// for more information about preprocessors
|
// for more information about preprocessors
|
||||||
preprocess: [
|
preprocess: [
|
||||||
preprocess({ postcss: { plugins: [autoprefixer, cssNormalizer()] } }),
|
sveltePreprocess({ postcss: { plugins: [autoprefixer, cssNormalizer()] } }),
|
||||||
mdsvex(mdsvexconfig),
|
mdsvex(mdsvexconfig),
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
||||||
8
tailwind.config.js
Normal file
8
tailwind.config.js
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
/** @type {import('tailwindcss').Config} */
|
||||||
|
export default {
|
||||||
|
content: ['./src/**/*.{html,js,svelte,ts}'],
|
||||||
|
theme: {
|
||||||
|
extend: {},
|
||||||
|
},
|
||||||
|
plugins: [],
|
||||||
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue