treewide: init daisyui and tailwind-motion

mini rewrite

projects: color clickable links for slide2
This commit is contained in:
notohh 2025-01-30 20:28:51 -05:00
parent 7a7dc20504
commit c74a2a7733
Signed by: notohh
GPG key ID: BD47506D475EE86D
28 changed files with 567 additions and 311 deletions

13
.prettierrc.js Normal file
View 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

Binary file not shown.

224
flake.lock generated
View file

@ -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
}

View file

@ -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"
}
}

View file

@ -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
View file

@ -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 {};

View file

@ -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>

View 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>

View 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>

View 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

View file

@ -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>

View 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

View file

@ -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)];

View file

@ -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>

View file

@ -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 />

View file

@ -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>

View file

@ -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>

View 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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View file

@ -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"
}

View file

@ -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;

View file

@ -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
}
}

View file

@ -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: ['..'],
},
},
});