treewide: init daisyui and tailwind-motion
mini rewrite projects: color clickable links for slide2
13
.prettierrc.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
const config = {
|
||||
printWidth: 80,
|
||||
tabWidth: 2,
|
||||
useTabs: true,
|
||||
semi: true,
|
||||
singleQuote: true,
|
||||
trailingComma: 'es5',
|
||||
bracketSpacing: true,
|
||||
jsxBracketSameLine: false,
|
||||
arrowParens: 'always',
|
||||
};
|
||||
|
||||
export default config;
|
BIN
bun.lockb
224
flake.lock
generated
|
@ -1,114 +1,114 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": ["pre-commit-hooks", "nixpkgs"]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1737717945,
|
||||
"narHash": "sha256-ET91TMkab3PmOZnqiJQYOtSGvSTvGeHoegAv4zcTefM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ecd26a469ac56357fd333946a99086e992452b6a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1730768919,
|
||||
"narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737465171,
|
||||
"narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"pre-commit-hooks": "pre-commit-hooks",
|
||||
"systems": "systems"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": ["pre-commit-hooks", "nixpkgs"]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1737717945,
|
||||
"narHash": "sha256-ET91TMkab3PmOZnqiJQYOtSGvSTvGeHoegAv4zcTefM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ecd26a469ac56357fd333946a99086e992452b6a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1730768919,
|
||||
"narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737465171,
|
||||
"narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"pre-commit-hooks": "pre-commit-hooks",
|
||||
"systems": "systems"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
|
|
50
package.json
|
@ -1,26 +1,28 @@
|
|||
{
|
||||
"name": "notohh.dev",
|
||||
"private": true,
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite dev",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview",
|
||||
"prepare": "svelte-kit sync || echo ''",
|
||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
||||
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sveltejs/adapter-auto": "^4.0.0",
|
||||
"@sveltejs/kit": "^2.16.0",
|
||||
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
||||
"@tailwindcss/vite": "^4.0.0",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"svelte": "^5.0.0",
|
||||
"svelte-check": "^4.0.0",
|
||||
"tailwindcss": "^4.0.0",
|
||||
"typescript": "^5.0.0",
|
||||
"vite": "^6.0.0"
|
||||
}
|
||||
"name": "notohh.dev",
|
||||
"private": true,
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite dev",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview",
|
||||
"prepare": "svelte-kit sync || echo ''",
|
||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
||||
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sveltejs/adapter-auto": "^4.0.0",
|
||||
"@sveltejs/kit": "^2.16.1",
|
||||
"@sveltejs/vite-plugin-svelte": "^5.0.3",
|
||||
"@tailwindcss/vite": "^4.0.1",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"daisyui": "^5.0.0-beta.6",
|
||||
"svelte": "^5.19.6",
|
||||
"svelte-check": "^4.1.4",
|
||||
"tailwindcss": "^4.0.1",
|
||||
"tailwindcss-motion": "^1.0.1",
|
||||
"typescript": "^5.7.3",
|
||||
"vite": "^6.0.11"
|
||||
}
|
||||
}
|
||||
|
|
49
src/app.css
|
@ -1,14 +1,47 @@
|
|||
@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
|
||||
@import "tailwindcss";
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
|
||||
@import 'tailwindcss';
|
||||
@plugin "tailwindcss-motion";
|
||||
@plugin "daisyui";
|
||||
|
||||
@plugin "daisyui/theme" {
|
||||
name: 'night';
|
||||
default: true;
|
||||
prefersdark: true;
|
||||
color-scheme: 'dark';
|
||||
--color-base-100: oklch(20.768% 0.039 265.754);
|
||||
--color-base-200: oklch(19.314% 0.037 265.754);
|
||||
--color-base-300: oklch(17.86% 0.034 265.754);
|
||||
--color-base-content: oklch(84.153% 0.007 265.754);
|
||||
--color-primary: oklch(75.351% 0.138 232.661);
|
||||
--color-primary-content: oklch(15.07% 0.027 232.661);
|
||||
--color-secondary: oklch(68.011% 0.158 276.934);
|
||||
--color-secondary-content: oklch(13.602% 0.031 276.934);
|
||||
--color-accent: oklch(72.36% 0.176 350.048);
|
||||
--color-accent-content: oklch(14.472% 0.035 350.048);
|
||||
--color-neutral: oklch(27.949% 0.036 260.03);
|
||||
--color-neutral-content: oklch(85.589% 0.007 260.03);
|
||||
--color-info: oklch(68.455% 0.148 237.251);
|
||||
--color-info-content: oklch(0% 0 0);
|
||||
--color-success: oklch(78.452% 0.132 181.911);
|
||||
--color-success-content: oklch(15.69% 0.026 181.911);
|
||||
--color-warning: oklch(83.242% 0.139 82.95);
|
||||
--color-warning-content: oklch(16.648% 0.027 82.95);
|
||||
--color-error: oklch(71.785% 0.17 13.118);
|
||||
--color-error-content: oklch(14.357% 0.034 13.118);
|
||||
--radius-selector: 1rem;
|
||||
--radius-field: 0.5rem;
|
||||
--radius-box: 1rem;
|
||||
--size-selector: 0.25rem;
|
||||
--size-field: 0.25rem;
|
||||
--border: 1px;
|
||||
--depth: 0;
|
||||
--noise: 0;
|
||||
}
|
||||
|
||||
@theme {
|
||||
--font-display: "Inter", "sans-serif";
|
||||
--color-floral-white: #fffcf2;
|
||||
--color-timber-wolf: #ccc5b9;
|
||||
--color-eerie-black: #252422;
|
||||
--color-accent-dark: #1e1d1b;
|
||||
--font-display: 'Inter', 'sans-serif';
|
||||
}
|
||||
|
||||
.color-transition {
|
||||
transition: color 0.1s ease-in-out;
|
||||
transition: color 0.1s ease-in-out;
|
||||
}
|
||||
|
|
14
src/app.d.ts
vendored
|
@ -1,13 +1,13 @@
|
|||
// See https://svelte.dev/docs/kit/types#app.d.ts
|
||||
// for information about these interface
|
||||
declare global {
|
||||
namespace App {
|
||||
// interface Error {}
|
||||
// interface Locals {}
|
||||
// interface PageData {}
|
||||
// interface PageState {}
|
||||
// interface Platform {}
|
||||
}
|
||||
namespace App {
|
||||
// interface Error {}
|
||||
// interface Locals {}
|
||||
// interface PageData {}
|
||||
// interface PageState {}
|
||||
// interface Platform {}
|
||||
}
|
||||
}
|
||||
|
||||
export {};
|
||||
|
|
35
src/app.html
|
@ -1,29 +1,12 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link
|
||||
rel="apple-touch-icon"
|
||||
sizes="180x180"
|
||||
href="%sveltekit.assets%/static/apple-touch-icon.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="32x32"
|
||||
href="%sveltekit.assets%/static/favicon-32x32.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="16x16"
|
||||
href="%sveltekit.assets%/static/favicon-16x16.png"
|
||||
/>
|
||||
<link rel="manifest" href="%sveltekit.assets%/static/site.webmanifest" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
%sveltekit.head%
|
||||
</head>
|
||||
<body data-sveltekit-preload-data="hover">
|
||||
<div style="display: contents">%sveltekit.body%</div>
|
||||
</body>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%sveltekit.assets%/icon.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
%sveltekit.head%
|
||||
</head>
|
||||
<body data-sveltekit-preload-data="hover">
|
||||
<div style="display: contents">%sveltekit.body%</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
16
src/lib/components/Footer.svelte
Normal file
|
@ -0,0 +1,16 @@
|
|||
<footer
|
||||
class="font-display footer sm:footer-horizontal footer-center text-base-content p-4 bg-base-100 text-lg"
|
||||
>
|
||||
<aside>
|
||||
<p>
|
||||
site
|
||||
<a aria-label="source code" href="https://git.flake.sh/notohh/notohh.dev">
|
||||
<span
|
||||
class="inline-block color-transition hover:text-accent hover:motion-preset-seesaw-lg"
|
||||
>
|
||||
source
|
||||
</span>
|
||||
</a>
|
||||
</p>
|
||||
</aside>
|
||||
</footer>
|
39
src/lib/components/Navbar.svelte
Normal file
|
@ -0,0 +1,39 @@
|
|||
<div class="navbar bg-base-100 shadow-sm">
|
||||
<div class="navbar-start">
|
||||
<div class="dropdown">
|
||||
<div tabindex="0" role="button" class="btn btn-ghost lg:hidden">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="h-5 w-5"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M4 6h16M4 12h8m-8 6h16"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
<ul
|
||||
tabindex="-1"
|
||||
class="menu menu-sm dropdown-content bg-base-100 rounded-box z-1 mt-3 w-52 p-2 shadow"
|
||||
>
|
||||
<li><a href="/about">about</a></li>
|
||||
<li><a href="/projects">projects</a></li>
|
||||
<li><a href="https://status.flake.sh/">status</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<a href="/" class="btn btn-ghost text-xl">notohh.dev</a>
|
||||
</div>
|
||||
<div class="navbar-center hidden lg:flex">
|
||||
<ul class="menu menu-horizontal px-1">
|
||||
<li><a href="/about">about</a></li>
|
||||
<li><a href="/projects">projects</a></li>
|
||||
<li><a href="https://status.flake.sh/">status</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="navbar-end"></div>
|
||||
</div>
|
1
src/lib/components/discord.svelte
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discord</title><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -1,13 +1,13 @@
|
|||
<script lang="ts">
|
||||
export let className: string = "";
|
||||
export let className: string = "";
|
||||
</script>
|
||||
|
||||
<svg
|
||||
class={className}
|
||||
role="img"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
><title>Forgejo</title><path
|
||||
d="M16.7773 0c1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.1175a7.0759 7.0759 0 0 1 4.148-1.4205l.1176-.001 1.3385.0002c.4973-.8827 1.4434-1.4788 2.5288-1.4788 1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.319c.8827.4973 1.4788 1.4434 1.4788 2.5287 0 1.602-1.2986 2.9005-2.9005 2.9005-1.6018 0-2.9004-1.2986-2.9004-2.9005 0-1.0853.596-2.0314 1.4788-2.5287l-.0002-9.9831c0-3.887 3.1195-7.0453 6.9915-7.108l.1176-.001h1.3385C14.7458.5962 15.692 0 16.7773 0ZM7.2227 19.9052c-.6596 0-1.1943.5347-1.1943 1.1943s.5347 1.1943 1.1943 1.1943 1.1944-.5347 1.1944-1.1943-.5348-1.1943-1.1944-1.1943Zm9.5546-10.4644c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Zm0-7.7346c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Z"
|
||||
/></svg
|
||||
>
|
||||
class={className}
|
||||
role="img"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
><title>Forgejo</title><path
|
||||
d="M16.7773 0c1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.1175a7.0759 7.0759 0 0 1 4.148-1.4205l.1176-.001 1.3385.0002c.4973-.8827 1.4434-1.4788 2.5288-1.4788 1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.319c.8827.4973 1.4788 1.4434 1.4788 2.5287 0 1.602-1.2986 2.9005-2.9005 2.9005-1.6018 0-2.9004-1.2986-2.9004-2.9005 0-1.0853.596-2.0314 1.4788-2.5287l-.0002-9.9831c0-3.887 3.1195-7.0453 6.9915-7.108l.1176-.001h1.3385C14.7458.5962 15.692 0 16.7773 0ZM7.2227 19.9052c-.6596 0-1.1943.5347-1.1943 1.1943s.5347 1.1943 1.1943 1.1943 1.1944-.5347 1.1944-1.1943-.5348-1.1943-1.1944-1.1943Zm9.5546-10.4644c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Zm0-7.7346c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Z"
|
||||
/>
|
||||
</svg>
|
||||
|
|
1
src/lib/components/x.svelte
Normal file
|
@ -0,0 +1 @@
|
|||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>X</title><path d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"/></svg>
|
After Width: | Height: | Size: 252 B |
|
@ -1,8 +1,8 @@
|
|||
import error from "$lib/images/error.png";
|
||||
import error1 from "$lib/images/error1.avif";
|
||||
import error2 from "$lib/images/error2.avif";
|
||||
import error3 from "$lib/images/error3.avif";
|
||||
import error4 from "$lib/images/error4.avif";
|
||||
import error from '$lib/images/error.png';
|
||||
import error1 from '$lib/images/error1.avif';
|
||||
import error2 from '$lib/images/error2.avif';
|
||||
import error3 from '$lib/images/error3.avif';
|
||||
import error4 from '$lib/images/error4.avif';
|
||||
|
||||
const images = [error, error1, error2, error3, error4];
|
||||
const randomImage = images[Math.floor(Math.random() * 5)];
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
<script lang="ts">
|
||||
import { page } from "$app/state";
|
||||
import { randomImage } from "$lib/scripts/randomimage";
|
||||
import { page } from '$app/state';
|
||||
import { randomImage } from '$lib/scripts/randomimage';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>{page.status}: {page.error?.message}</title>
|
||||
</svelte:head>
|
||||
|
||||
<div
|
||||
class="font-display flex flex-col items-center justify-center h-screen bg-eerie-black text-floral-white"
|
||||
class="bg-base-300 font-display flex flex-col items-center justify-center h-screen"
|
||||
>
|
||||
<img class="mb-4" src={randomImage} alt="" />
|
||||
<h1 class="text-4xl font-bold">{page.status}: {page.error?.message}</h1>
|
||||
<img class="mb-4" src={randomImage} alt="" />
|
||||
<h1 class="text-4xl font-bold">{page.status}: {page.error?.message}</h1>
|
||||
</div>
|
||||
|
|
|
@ -1,18 +1,13 @@
|
|||
<script>
|
||||
import "../app.css";
|
||||
import Footer from '$lib/components/Footer.svelte';
|
||||
import Navbar from '$lib/components/Navbar.svelte';
|
||||
import '../app.css';
|
||||
</script>
|
||||
|
||||
<div
|
||||
class="font-display flex items-center h-10 justify-center bg-accent-dark text-floral-white"
|
||||
>
|
||||
<nav class="space-x-4 text-xl">
|
||||
<a href="/" class="hover:text-timber-wolf color-transition">home</a>
|
||||
<a href="/about" class="hover:text-timber-wolf color-transition">about</a>
|
||||
<a
|
||||
href="https://status.flake.sh/status/kumo"
|
||||
class="hover:text-timber-wolf color-transition">status</a
|
||||
>
|
||||
</nav>
|
||||
<div class="flex flex-col min-h-screen">
|
||||
<Navbar />
|
||||
<main class="flex-grow">
|
||||
<slot />
|
||||
</main>
|
||||
<Footer />
|
||||
</div>
|
||||
|
||||
<slot />
|
||||
|
|
|
@ -1,40 +1,56 @@
|
|||
<script lang="ts">
|
||||
import Pfp from "$lib/images/pfp.jpg";
|
||||
import Forgejo from "$lib/components/forgejo.svelte";
|
||||
import Bluesky from "$lib/components/bluesky.svelte";
|
||||
import Lastfm from "$lib/components/lastfm.svelte";
|
||||
import Twitch from "$lib/components/twitch.svelte";
|
||||
import Pfp from '$lib/images/pfp.jpg';
|
||||
import Forgejo from '$lib/components/forgejo.svelte';
|
||||
import Bluesky from '$lib/components/bluesky.svelte';
|
||||
import Lastfm from '$lib/components/lastfm.svelte';
|
||||
import Twitch from '$lib/components/twitch.svelte';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>notohh.dev</title>
|
||||
</svelte:head>
|
||||
|
||||
<div
|
||||
class="font-display flex flex-col items-center justify-center h-screen bg-eerie-black"
|
||||
class="bg-base-300 font-display flex flex-col items-center justify-center h-screen text-base-content"
|
||||
>
|
||||
<img
|
||||
src={Pfp}
|
||||
alt=""
|
||||
class="rounded-full w-32 h-32 mb-4 hover:animate-spin"
|
||||
/>
|
||||
<h1 class="text-4xl font-bold text-center text-floral-white">notohh</h1>
|
||||
<div class="flex space-x-4 mt-4">
|
||||
<a href="https://www.last.fm/user/notoh" aria-label="Lastfm">
|
||||
<Lastfm
|
||||
className="w-8 h-8 fill-current text-floral-white hover:text-red-500 color-transition"
|
||||
/>
|
||||
</a>
|
||||
<a href="https://git.flake.sh/notohh" aria-label="Forgejo">
|
||||
<Forgejo
|
||||
className="w-8 h-8 fill-current text-floral-white hover:text-orange-500 color-transition"
|
||||
/>
|
||||
</a>
|
||||
<a href="https://bsky.app/profile/flake.sh" aria-label="Bluesky">
|
||||
<Bluesky
|
||||
className="w-8 h-8 fill-current text-floral-white hover:text-blue-500 color-transition"
|
||||
/>
|
||||
</a>
|
||||
<a href="https://www.twitch.tv/notohh" aria-label="Twitch">
|
||||
<Twitch
|
||||
className="w-8 h-8 fill-current text-floral-white hover:text-purple-500 color-transition"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
<img
|
||||
src={Pfp}
|
||||
alt=""
|
||||
class="rounded-full w-32 h-32 mb-4 motion-preset-blur-down-lg motion-delay-100"
|
||||
/>
|
||||
<h1
|
||||
class="text-4xl font-bold text-center motion-preset-blur-down-lg motion-delay-200"
|
||||
>
|
||||
notohh
|
||||
</h1>
|
||||
<div class="flex space-x-4 mt-4">
|
||||
<a href="https://www.last.fm/user/notoh" aria-label="Lastfm">
|
||||
<span class="inline-block motion-preset-expand motion-delay-400">
|
||||
<Lastfm
|
||||
className="w-8 h-8 fill-current color-transition hover:text-accent hover:motion-preset-pulse"
|
||||
/>
|
||||
</span>
|
||||
</a>
|
||||
<a href="https://git.flake.sh/notohh" aria-label="Forgejo">
|
||||
<span class="inline-block motion-preset-expand motion-delay-400">
|
||||
<Forgejo
|
||||
className="w-8 h-8 fill-current color-transition hover:text-accent hover:motion-preset-pulse"
|
||||
/>
|
||||
</span>
|
||||
</a>
|
||||
<a href="https://bsky.app/profile/flake.sh" aria-label="Bluesky">
|
||||
<span class="inline-block motion-preset-expand motion-delay-400">
|
||||
<Bluesky
|
||||
className="w-8 h-8 fill-current color-transition hover:text-accent hover:motion-preset-pulse"
|
||||
/>
|
||||
</span>
|
||||
</a>
|
||||
<a href="https://www.twitch.tv/notohh" aria-label="Twitch">
|
||||
<span class="inline-block motion-preset-expand motion-delay-400">
|
||||
<Twitch
|
||||
className="w-8 h-8 fill-current color-transition hover:text-accent hover:motion-preset-pulse"
|
||||
/>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,12 +1,20 @@
|
|||
<div
|
||||
class="font-display flex flex-col items-center justify-center h-screen bg-eerie-black text-floral-white"
|
||||
>
|
||||
<h1 class="text-5xl mb-5">about me</h1>
|
||||
<ul class="text-xl">
|
||||
<li>23 y/o</li>
|
||||
<li>interested in linux, devops, etc</li>
|
||||
<li>metalhead</li>
|
||||
<li>i use nixos btw</li>
|
||||
<li>professional retard</li>
|
||||
</ul>
|
||||
<svelte:head>
|
||||
<title>about</title>
|
||||
</svelte:head>
|
||||
|
||||
<div class="bg-base-300 min-h-screen flex flex-col items-center justify-center">
|
||||
<h1 class="text-4xl motion-preset-slide-down mb-10">about me</h1>
|
||||
<ul class="list-inside list-disc text-2xl">
|
||||
<li class="motion-preset-blur-right-lg motion-delay-200">23 y/o</li>
|
||||
<li class="motion-preset-blur-right-lg motion-delay-400">
|
||||
interested in linux, devops, etc
|
||||
</li>
|
||||
<li class="motion-preset-blur-right-lg motion-delay-600">metalhead</li>
|
||||
<li class="motion-preset-blur-right-lg motion-delay-800">
|
||||
professional retard
|
||||
</li>
|
||||
<li class="motion-preset-blur-right-lg motion-delay-1000">
|
||||
i use nixos btw
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
161
src/routes/projects/+page.svelte
Normal file
|
@ -0,0 +1,161 @@
|
|||
<svelte:head>
|
||||
<title>projects</title>
|
||||
</svelte:head>
|
||||
<div class="bg-base-300 min-h-screen flex items-center justify-center">
|
||||
<div class="w-1/2 text-center">
|
||||
<div
|
||||
class="absolute left-5 right-5 top-1/2 flex flex-grow -translate-y-1/2 transform justify-between"
|
||||
>
|
||||
<a href="#slide1" class="btn btn-circle bg-accent-content">❮</a>
|
||||
<a href="#slide2" class="btn btn-circle bg-accent-content">❯</a>
|
||||
</div>
|
||||
|
||||
<div class="collapse border border-base-content motion-preset-expand">
|
||||
<div class="collapse-title font-semibold flex-col">projects</div>
|
||||
<input type="radio" name="accordion" checked={true} />
|
||||
<div class="collapse-content text-sm">
|
||||
<div class="carousel w-full">
|
||||
<div id="slide1" class="carousel-item relative w-full flex-col">
|
||||
<img src="https://i.imgur.com/s2zvbRt.png" alt="" class="w-full" />
|
||||
<h1
|
||||
class="flex justify-center text-center font-display sm:text-4xl mt-5"
|
||||
>
|
||||
snowflake
|
||||
</h1>
|
||||
<h2 class="flex font-display sm:text-lg mt-5">
|
||||
snowflake is my multi-config nixos repo. its the heart of my
|
||||
servers, my desktop, my laptop, my everything
|
||||
</h2>
|
||||
<div class="flex justify-start text-left text-balance sm:text-lg">
|
||||
<ul
|
||||
class="flex flex-col list-disc list-inside mt-5 justify-start"
|
||||
>
|
||||
<li>
|
||||
multi-config repo, with configs for servers, laptop, and
|
||||
desktop
|
||||
</li>
|
||||
<li>
|
||||
multi-system <a
|
||||
href="https://github.com/nix-community/home-manager"
|
||||
>
|
||||
<span
|
||||
class="inline-block font-bold text-accent hover:motion-preset-oscillate-sm"
|
||||
>
|
||||
home-manager
|
||||
</span>
|
||||
setup
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
secrets provisioning with <a
|
||||
href="https://github.com/Mic92/sops-nix"
|
||||
>
|
||||
<span
|
||||
class="inline-block font-bold text-accent hover:motion-preset-oscillate-sm"
|
||||
>
|
||||
sops-nix
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
multiple fully declarative self hosted services (and some
|
||||
containerized ones, with a docker backend)
|
||||
</li>
|
||||
<li>
|
||||
wayland config for <a
|
||||
href="https://github.com/hyprwm/Hyprland"
|
||||
>
|
||||
<span
|
||||
class="inline-block font-bold text-accent hover:motion-preset-oscillate-sm"
|
||||
>
|
||||
hyprland
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>custom packages not found in nixpkgs</li>
|
||||
<li>
|
||||
linted & styled with
|
||||
<a href="https://github.com/kamadorueda/alejandra">
|
||||
<span
|
||||
class="inline-block font-bold text-accent hover:motion-preset-oscillate-sm"
|
||||
>alejandra,</span
|
||||
></a
|
||||
>
|
||||
<a href="https://github.com/astro/deadnix">
|
||||
<span
|
||||
class="inline-block font-bold text-accent hover:motion-preset-oscillate-sm"
|
||||
>deadnix,</span
|
||||
>
|
||||
</a>
|
||||
<a href="https://github.com/oppiliappan/statix">
|
||||
<span
|
||||
class="inline-block font-bold text-accent hover:motion-preset-oscillate-sm"
|
||||
>statix</span
|
||||
>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="slide2" class="carousel-item relative w-full flex-col">
|
||||
<div id="slide2" class="carousel-item relative w-full flex-col">
|
||||
<img
|
||||
src="https://i.imgur.com/KOoUpRv.png"
|
||||
alt=""
|
||||
class="w-full"
|
||||
/>
|
||||
<h1
|
||||
class="flex justify-center text-center font-display sm:text-4xl mt-5"
|
||||
>
|
||||
notohh.dev
|
||||
</h1>
|
||||
<h2
|
||||
class="flex justify-center text-center font-display sm:text-lg mt-5"
|
||||
>
|
||||
this website :)
|
||||
</h2>
|
||||
<div class="flex justify-start text-left text-balance sm:text-lg">
|
||||
<ul
|
||||
class="flex flex-col list-disc list-inside mt-5 justify-start"
|
||||
>
|
||||
<li>
|
||||
built with
|
||||
<a class="font-bold underline" href="https://svelte.dev">
|
||||
<span
|
||||
class="inline-block font-bold text-accent hover:motion-preset-oscillate-sm"
|
||||
>
|
||||
sveltekit,
|
||||
</span>
|
||||
</a>
|
||||
<a
|
||||
class="font-bold underline"
|
||||
href="https://tailwindcss.com/"
|
||||
>
|
||||
<span
|
||||
class="inline-block font-bold text-accent hover:motion-preset-oscillate-sm"
|
||||
>tailwind,
|
||||
</span>
|
||||
</a>
|
||||
and
|
||||
<a
|
||||
class="font-bold underline"
|
||||
href="https://v5.daisyui.com/"
|
||||
>
|
||||
<span
|
||||
class="inline-block font-bold text-accent hover:motion-preset-oscillate-sm"
|
||||
>daisyui</span
|
||||
>
|
||||
</a>
|
||||
components / theme
|
||||
</li>
|
||||
<li>just for fun / learning</li>
|
||||
<li>forsen</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 245 KiB |
Before Width: | Height: | Size: 935 B |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
@ -1,19 +0,0 @@
|
|||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
}
|
|
@ -1,18 +1,18 @@
|
|||
import adapter from "@sveltejs/adapter-auto";
|
||||
import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
|
||||
import adapter from '@sveltejs/adapter-auto';
|
||||
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
||||
|
||||
/** @type {import('@sveltejs/kit').Config} */
|
||||
const config = {
|
||||
// Consult https://svelte.dev/docs/kit/integrations
|
||||
// for more information about preprocessors
|
||||
preprocess: vitePreprocess(),
|
||||
// Consult https://svelte.dev/docs/kit/integrations
|
||||
// for more information about preprocessors
|
||||
preprocess: vitePreprocess(),
|
||||
|
||||
kit: {
|
||||
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
|
||||
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
|
||||
// See https://svelte.dev/docs/kit/adapters for more information about adapters.
|
||||
adapter: adapter(),
|
||||
},
|
||||
kit: {
|
||||
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
|
||||
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
|
||||
// See https://svelte.dev/docs/kit/adapters for more information about adapters.
|
||||
adapter: adapter(),
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
{
|
||||
"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://svelte.dev/docs/kit/configuration#alias
|
||||
// except $lib which is handled by https://svelte.dev/docs/kit/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
|
||||
"extends": "./.svelte-kit/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"allowJs": true,
|
||||
"checkJs": true,
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"sourceMap": true,
|
||||
"strict": true,
|
||||
"moduleResolution": "bundler",
|
||||
"alwaysStrict": true,
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": true,
|
||||
"strictPropertyInitialization": true,
|
||||
"strictBindCallApply": true,
|
||||
"strictFunctionTypes": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import { sveltekit } from "@sveltejs/kit/vite";
|
||||
import { defineConfig } from "vite";
|
||||
import tailwindcss from "@tailwindcss/vite";
|
||||
import { sveltekit } from '@sveltejs/kit/vite';
|
||||
import { defineConfig } from 'vite';
|
||||
import tailwindcss from '@tailwindcss/vite';
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [sveltekit(), tailwindcss()],
|
||||
server: {
|
||||
fs: {
|
||||
allow: [".."],
|
||||
},
|
||||
},
|
||||
plugins: [sveltekit(), tailwindcss()],
|
||||
server: {
|
||||
fs: {
|
||||
allow: ['..'],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|