diff --git a/.prettierrc b/.prettierrc index a77fdde..d8bcc7b 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { - "useTabs": true, + "useTabs": false, + "tabWidth": 4, "singleQuote": true, "trailingComma": "none", "printWidth": 100, diff --git a/package.json b/package.json index a163ba9..f37eedc 100644 --- a/package.json +++ b/package.json @@ -26,5 +26,10 @@ "typescript": "5.8.3", "vite": "6.3.5" }, - "type": "module" + "type": "module", + "dependencies": { + "@tailwindcss/vite": "^4.1.6", + "svelte-toasts": "^1.1.2", + "tailwindcss": "^4.1.6" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b972264..cfc69cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,22 +7,32 @@ settings: importers: .: + dependencies: + '@tailwindcss/vite': + specifier: ^4.1.6 + version: 4.1.6(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) + svelte-toasts: + specifier: ^1.1.2 + version: 1.1.2 + tailwindcss: + specifier: ^4.1.6 + version: 4.1.6 devDependencies: '@rollup/plugin-json': specifier: ^6.0.0 version: 6.1.0(rollup@4.40.2) '@sveltejs/adapter-auto': specifier: 6.0.0 - version: 6.0.0(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5)) + version: 6.0.0(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))) '@sveltejs/adapter-node': specifier: 5.2.12 - version: 5.2.12(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5)) + version: 5.2.12(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))) '@sveltejs/kit': specifier: 2.20.8 - version: 2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5) + version: 2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.0 - version: 5.0.3(svelte@5.28.2)(vite@6.3.5) + version: 5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) prettier: specifier: 3.5.3 version: 3.5.3 @@ -43,7 +53,7 @@ importers: version: 5.8.3 vite: specifier: 6.3.5 - version: 6.3.5 + version: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) packages: @@ -201,6 +211,10 @@ packages: cpu: [x64] os: [win32] + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -397,6 +411,96 @@ packages: svelte: ^5.0.0 vite: ^6.0.0 + '@tailwindcss/node@4.1.6': + resolution: {integrity: sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==} + + '@tailwindcss/oxide-android-arm64@4.1.6': + resolution: {integrity: sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.6': + resolution: {integrity: sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.6': + resolution: {integrity: sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.6': + resolution: {integrity: sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + resolution: {integrity: sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + resolution: {integrity: sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + resolution: {integrity: sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + resolution: {integrity: sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + resolution: {integrity: sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + resolution: {integrity: sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + resolution: {integrity: sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + resolution: {integrity: sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.6': + resolution: {integrity: sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.6': + resolution: {integrity: sha512-zjtqjDeY1w3g2beYQtrMAf51n5G7o+UwmyOjtsDMP7t6XyoRMOidcoKP32ps7AkNOHIXEOK0bhIC05dj8oJp4w==} + peerDependencies: + vite: ^5.2.0 || ^6 + '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -423,6 +527,10 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -447,9 +555,17 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + devalue@5.1.1: resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + esbuild@0.25.4: resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} engines: {node: '>=18'} @@ -480,6 +596,9 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -500,16 +619,97 @@ packages: is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} + locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -592,10 +792,24 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 typescript: '>=5.0.0' + svelte-toasts@1.1.2: + resolution: {integrity: sha512-m+yL4eEKXyJoyjTYaH1j1GFwF0Pi8YDqnVfwWPDmwi4712iZesv+TNCmToSNlav3R5Vkmc8ZBRkT8DOcu3sywQ==} + svelte@5.28.2: resolution: {integrity: sha512-FbWBxgWOpQfhKvoGJv/TFwzqb4EhJbwCD17dB0tEpQiw1XyUEKZJtgm4nA4xq3LLsMo7hu5UY/BOFmroAxKTMg==} engines: {node: '>=18'} + tailwindcss@4.1.6: + resolution: {integrity: sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + tinyglobby@0.2.13: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} @@ -660,6 +874,10 @@ packages: vite: optional: true + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + zimmerframe@1.1.2: resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} @@ -745,6 +963,10 @@ snapshots: '@esbuild/win32-x64@0.25.4': optional: true + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -864,22 +1086,22 @@ snapshots: dependencies: acorn: 8.14.1 - '@sveltejs/adapter-auto@6.0.0(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5))': + '@sveltejs/adapter-auto@6.0.0(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))': dependencies: - '@sveltejs/kit': 2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5) + '@sveltejs/kit': 2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) import-meta-resolve: 4.1.0 - '@sveltejs/adapter-node@5.2.12(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5))': + '@sveltejs/adapter-node@5.2.12(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))': dependencies: '@rollup/plugin-commonjs': 28.0.3(rollup@4.40.2) '@rollup/plugin-json': 6.1.0(rollup@4.40.2) '@rollup/plugin-node-resolve': 16.0.1(rollup@4.40.2) - '@sveltejs/kit': 2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5) + '@sveltejs/kit': 2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) rollup: 4.40.2 - '@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5)': + '@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.5) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -892,30 +1114,101 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.28.2 - vite: 6.3.5 + vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5)': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.5) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) debug: 4.4.0 svelte: 5.28.2 - vite: 6.3.5 + vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5)': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5))(svelte@5.28.2)(vite@6.3.5) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.28.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.28.2 - vite: 6.3.5 - vitefu: 1.0.6(vite@6.3.5) + vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) + vitefu: 1.0.6(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) transitivePeerDependencies: - supports-color + '@tailwindcss/node@4.1.6': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.29.2 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.6 + + '@tailwindcss/oxide-android-arm64@4.1.6': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.6': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.6': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + optional: true + + '@tailwindcss/oxide@4.1.6': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-x64': 4.1.6 + '@tailwindcss/oxide-freebsd-x64': 4.1.6 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.6 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.6 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-x64-musl': 4.1.6 + '@tailwindcss/oxide-wasm32-wasi': 4.1.6 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.6 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.6 + + '@tailwindcss/vite@4.1.6(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@tailwindcss/node': 4.1.6 + '@tailwindcss/oxide': 4.1.6 + tailwindcss: 4.1.6 + vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) + '@types/cookie@0.6.0': {} '@types/estree@1.0.7': {} @@ -932,6 +1225,8 @@ snapshots: dependencies: readdirp: 4.1.2 + chownr@3.0.0: {} + clsx@2.1.1: {} commondir@1.0.1: {} @@ -944,8 +1239,15 @@ snapshots: deepmerge@4.3.1: {} + detect-libc@2.0.4: {} + devalue@5.1.1: {} + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + esbuild@0.25.4: optionalDependencies: '@esbuild/aix-ppc64': 0.25.4 @@ -991,6 +1293,8 @@ snapshots: function-bind@1.1.2: {} + graceful-fs@4.2.11: {} + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -1011,14 +1315,69 @@ snapshots: dependencies: '@types/estree': 1.0.7 + jiti@2.4.2: {} + kleur@4.1.5: {} + lightningcss-darwin-arm64@1.29.2: + optional: true + + lightningcss-darwin-x64@1.29.2: + optional: true + + lightningcss-freebsd-x64@1.29.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + + lightningcss-linux-arm64-musl@1.29.2: + optional: true + + lightningcss-linux-x64-gnu@1.29.2: + optional: true + + lightningcss-linux-x64-musl@1.29.2: + optional: true + + lightningcss-win32-arm64-msvc@1.29.2: + optional: true + + lightningcss-win32-x64-msvc@1.29.2: + optional: true + + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 + locate-character@3.0.0: {} magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + minipass@7.1.2: {} + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp@3.0.1: {} + mri@1.2.0: {} mrmime@2.0.1: {} @@ -1108,6 +1467,8 @@ snapshots: transitivePeerDependencies: - picomatch + svelte-toasts@1.1.2: {} + svelte@5.28.2: dependencies: '@ampproject/remapping': 2.3.0 @@ -1125,6 +1486,19 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 + tailwindcss@4.1.6: {} + + tapable@2.2.1: {} + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) @@ -1136,7 +1510,7 @@ snapshots: typescript@5.8.3: {} - vite@6.3.5: + vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2): dependencies: esbuild: 0.25.4 fdir: 6.4.4(picomatch@4.0.2) @@ -1146,9 +1520,13 @@ snapshots: tinyglobby: 0.2.13 optionalDependencies: fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 - vitefu@1.0.6(vite@6.3.5): + vitefu@1.0.6(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)): optionalDependencies: - vite: 6.3.5 + vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) + + yallist@5.0.0: {} zimmerframe@1.1.2: {} diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..4a5c8e5 --- /dev/null +++ b/src/app.css @@ -0,0 +1 @@ +@import "tailwindcss" \ No newline at end of file diff --git a/src/app.html b/src/app.html index 5c281b4..8a81f56 100644 --- a/src/app.html +++ b/src/app.html @@ -1,133 +1,31 @@ - + - - - + + + - - - - - %sveltekit.head% + + + + + %sveltekit.head% - + - hr { - border: .12em solid var(--accent); - border-radius: 5em; - width: 100%; - } - - *::-webkit-scrollbar, - *::-webkit-scrollbar-thumb { - width: 26px; - border-radius: 13px; - background-clip: padding-box; - border: 10px solid transparent; - color: var(--fg); - } - *::-webkit-scrollbar-thumb:hover{ - color: var(--link); - } - - *::-webkit-scrollbar-thumb { - box-shadow: inset 0 0 0 10px; - } - - @media (max-width:600px) { - .not-required { - display: none; - } - } - - a { - text-decoration: none; - position: relative; - color: var(--link); - white-space: nowrap; - } - - a:after { - content: ''; - position: absolute; - bottom: 0; - left: 0; - width: 0%; - border-bottom: 2px solid var(--fg); - transition: 0.4s; - } - - a:hover:after { - width: 100%; - color: var(--glow); - } - - a:hover { - color: var(--glow); - } - - a:active { - color: var(--header); - } - - .container { - max-width: 90%; - margin: auto; - } - - .cards { - display: flex; - flex-wrap: wrap; - flex-direction: row; - gap: 3em 3em; - padding: 2em 0em 2em 0em; - transition: all 0.2s; - } - - @keyframes animationName { - 0% { opacity:0; } - 50% { opacity:1; } - 100% { opacity:0; } - } - @-o-keyframes animationName{ - 0% { opacity:0; } - 50% { opacity:1; } - 100% { opacity:0; } - } - @-moz-keyframes animationName{ - 0% { opacity:0; } - 50% { opacity:1; } - 100% { opacity:0; } - } - @-webkit-keyframes animationName{ - 0% { opacity:0; } - 50% { opacity:1; } - 100% { opacity:0; } - } - .elementToFadeInAndOut { - -webkit-animation: animationName 1.5s infinite; - -moz-animation: animationName 1.5s infinite; - -o-animation: animationName 1.5s infinite; - animation: animationName 1.5s infinite; - } - - - -
%sveltekit.body%
- + +
%sveltekit.body%
+ diff --git a/src/lib/components/Cards/Card.svelte b/src/lib/components/Cards/Card.svelte index 52633d0..4f6fe79 100644 --- a/src/lib/components/Cards/Card.svelte +++ b/src/lib/components/Cards/Card.svelte @@ -1,69 +1,31 @@ - - - - -
-
- +
+
+
+

{headerLeft}

+ + {#if headerRight} +

{@html headerRight}

+ {/if} +
+
+
+ +
+ {#if footer} +
+
+ {@html footer} +
+ {/if}
-
-
- -
-
- -
\ No newline at end of file +
diff --git a/src/lib/components/Cards/SlidingCard.svelte b/src/lib/components/Cards/SlidingCard.svelte deleted file mode 100644 index bbd315d..0000000 --- a/src/lib/components/Cards/SlidingCard.svelte +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - -
-
- -
-
- - -
-
- -
-
- -
-
- -
- -
\ No newline at end of file diff --git a/src/lib/components/FlexGallery.svelte b/src/lib/components/FlexGallery.svelte new file mode 100644 index 0000000..f9c5d65 --- /dev/null +++ b/src/lib/components/FlexGallery.svelte @@ -0,0 +1,7 @@ + + + +
+ +
\ No newline at end of file diff --git a/src/lib/components/Modal.svelte b/src/lib/components/Modal.svelte deleted file mode 100644 index 6325c42..0000000 --- a/src/lib/components/Modal.svelte +++ /dev/null @@ -1,82 +0,0 @@ - - - - (showModal = false)} - on:click|self={() => dialog.close()} -> - -
- -
- -
-
- -
- - diff --git a/src/lib/components/Section.svelte b/src/lib/components/Section.svelte new file mode 100644 index 0000000..2789f22 --- /dev/null +++ b/src/lib/components/Section.svelte @@ -0,0 +1,26 @@ + + +
+ + + +
+ +
+ {label} +
+
+
+ +
+
+
\ No newline at end of file diff --git a/src/lib/components/SkillProgress.svelte b/src/lib/components/SkillProgress.svelte new file mode 100644 index 0000000..a989a38 --- /dev/null +++ b/src/lib/components/SkillProgress.svelte @@ -0,0 +1,16 @@ + + +
+
+ Competency Level + {value}% +
+
+
+
+
\ No newline at end of file diff --git a/src/lib/components/ThemeSwitcher.svelte b/src/lib/components/ThemeSwitcher.svelte deleted file mode 100644 index 67c6428..0000000 --- a/src/lib/components/ThemeSwitcher.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - -
- -
\ No newline at end of file diff --git a/src/lib/components/Timeline.svelte b/src/lib/components/Timeline.svelte new file mode 100644 index 0000000..8202f81 --- /dev/null +++ b/src/lib/components/Timeline.svelte @@ -0,0 +1,41 @@ + + +
+
+ {#each timelineData as entry, i} +
+ {#if openStates[i]} +
+ {:else} +
+ {/if} +

{entry.duration}

+ + {#if openStates[i]} +

{@html entry.description}

+ {/if} +
+ {/each} +
+
\ No newline at end of file diff --git a/src/lib/components/Toasts/CloseIcon.svelte b/src/lib/components/Toasts/CloseIcon.svelte deleted file mode 100644 index 6423df4..0000000 --- a/src/lib/components/Toasts/CloseIcon.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/src/lib/components/Toasts/ErrorIcon.svelte b/src/lib/components/Toasts/ErrorIcon.svelte deleted file mode 100644 index 60b814a..0000000 --- a/src/lib/components/Toasts/ErrorIcon.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/src/lib/components/Toasts/InfoIcon.svelte b/src/lib/components/Toasts/InfoIcon.svelte deleted file mode 100644 index 4f4908d..0000000 --- a/src/lib/components/Toasts/InfoIcon.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/src/lib/components/Toasts/SuccessIcon.svelte b/src/lib/components/Toasts/SuccessIcon.svelte deleted file mode 100644 index 4998608..0000000 --- a/src/lib/components/Toasts/SuccessIcon.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/src/lib/components/Toasts/Toast.svelte b/src/lib/components/Toasts/Toast.svelte deleted file mode 100644 index 553204e..0000000 --- a/src/lib/components/Toasts/Toast.svelte +++ /dev/null @@ -1,67 +0,0 @@ - - - - - diff --git a/src/lib/components/Toasts/Toasts.svelte b/src/lib/components/Toasts/Toasts.svelte deleted file mode 100644 index 5a0bc71..0000000 --- a/src/lib/components/Toasts/Toasts.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - -{#if $toasts} -
- {#each $toasts as toast (toast.id)} - dismissToast(toast.id)} /> - {/each} -
-{/if} - - diff --git a/src/lib/components/timeline/Timeline.svelte b/src/lib/components/timeline/Timeline.svelte deleted file mode 100644 index d4e5151..0000000 --- a/src/lib/components/timeline/Timeline.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/src/lib/components/timeline/TimelineConnector.svelte b/src/lib/components/timeline/TimelineConnector.svelte deleted file mode 100644 index 45af2ba..0000000 --- a/src/lib/components/timeline/TimelineConnector.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/src/lib/components/timeline/TimelineContent.svelte b/src/lib/components/timeline/TimelineContent.svelte deleted file mode 100644 index 914fd4a..0000000 --- a/src/lib/components/timeline/TimelineContent.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - -
- -
- - diff --git a/src/lib/components/timeline/TimelineDot.svelte b/src/lib/components/timeline/TimelineDot.svelte deleted file mode 100644 index e2a9366..0000000 --- a/src/lib/components/timeline/TimelineDot.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - diff --git a/src/lib/components/timeline/TimelineItem.svelte b/src/lib/components/timeline/TimelineItem.svelte deleted file mode 100644 index f6781bc..0000000 --- a/src/lib/components/timeline/TimelineItem.svelte +++ /dev/null @@ -1,58 +0,0 @@ - - -
  • - {#if !$$slots['opposite-content']} -
    - {:else} - - {/if} - -
  • - - diff --git a/src/lib/components/timeline/TimelineOppositeContent.svelte b/src/lib/components/timeline/TimelineOppositeContent.svelte deleted file mode 100644 index 055ddb0..0000000 --- a/src/lib/components/timeline/TimelineOppositeContent.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - -
    - -
    - - diff --git a/src/lib/components/timeline/TimelineSeparator.svelte b/src/lib/components/timeline/TimelineSeparator.svelte deleted file mode 100644 index 7b82f6d..0000000 --- a/src/lib/components/timeline/TimelineSeparator.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
    - -
    - - diff --git a/src/lib/index.ts b/src/lib/index.ts index 5c02902..1cb91ce 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,41 +1,9 @@ // place files you want to import through the `$lib` alias in this folder. -import Timeline from '$lib/components/timeline/Timeline.svelte'; -import TimelineItem from '$lib/components/timeline/TimelineItem.svelte'; -import TimelineSeparator from '$lib/components/timeline/TimelineSeparator.svelte'; -import TimelineDot from '$lib/components/timeline/TimelineDot.svelte'; -import TimelineConnector from '$lib/components/timeline/TimelineConnector.svelte'; -import TimelineContent from '$lib/components/timeline/TimelineContent.svelte'; -import TimelineOppositeContent from '$lib/components/timeline/TimelineOppositeContent.svelte'; - -import Toasts from '$lib/components/Toasts/Toasts.svelte'; -import Toast from '$lib/components/Toasts/Toast.svelte'; -import CloseIcon from '$lib/components/Toasts/CloseIcon.svelte'; -import InfoIcon from '$lib/components/Toasts/InfoIcon.svelte'; -import SuccessIcon from '$lib/components/Toasts/SuccessIcon.svelte'; -import ErrorIcon from '$lib/components/Toasts/ErrorIcon.svelte'; - import Card from '$lib/components/Cards/Card.svelte'; -import SlidingCard from '$lib/components/Cards/SlidingCard.svelte'; -import Modal from '$lib/components/Modal.svelte'; +import FlexGallery from './components/FlexGallery.svelte'; +import Loading from './components/Loading.svelte'; +import Section from './components/Section.svelte'; +import SkillProgress from './components/SkillProgress.svelte'; +import Timeline from './components/Timeline.svelte'; - -export { - Timeline, - TimelineItem, - TimelineSeparator, - TimelineDot, - TimelineConnector, - TimelineContent, - TimelineOppositeContent, - - Toasts, - Toast, - CloseIcon, - InfoIcon, - SuccessIcon, - ErrorIcon, - - Card, - SlidingCard, - Modal -}; +export { Card, FlexGallery, Loading, Section, SkillProgress, Timeline }; diff --git a/src/lib/stores.ts b/src/lib/stores.ts index 41f1da4..c0888fb 100644 --- a/src/lib/stores.ts +++ b/src/lib/stores.ts @@ -1,38 +1,7 @@ -import { ToastType, type Toast } from "$lib/toast"; -import { writable, type Writable } from "svelte/store"; +import { writable } from "svelte/store"; import type { GitRepo } from "./types"; import { fetchRepos } from "./api/git"; - -//////////////////////////////////////// -// Toast Stores -//////////////////////////////////////// -export const toasts: Writable = writable([]); - -export const addToast = (toast: Toast) => { - // Create a unique ID so we can easily find/remove it - // if it is dismissible/has a timeout. - toast.id = Math.floor(Math.random() * 10000); - - // Setup some sensible defaults for a toast. - const defaults = { - id: toast.id, - type: ToastType.Info, - dismissible: true, - timeout: 3000, - }; - - // Push the toast to the top of the list of toasts - toasts.update((all) => [{ ...defaults, ...toast }, ...all]); - - // If toast is dismissible, dismiss it after "timeout" amount of time. - if (toast.timeout) setTimeout(() => dismissToast(toast.id), toast.timeout); -}; - -export const dismissToast = (id: number) => { - toasts.update((all) => all.filter((t) => t.id !== id)); -}; - //////////////////////////////////////// // Git Repo Stores //////////////////////////////////////// diff --git a/src/lib/toast.ts b/src/lib/toast.ts deleted file mode 100644 index abbfccc..0000000 --- a/src/lib/toast.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * @enum Used to refer to the type of toast being displayed - */ -export enum ToastType { - Info = "info", - Success = "success", - Error = "error" -} - -/** - * @class Toast Notification - */ -export class Toast { - constructor(text: String, type: ToastType, dismissable: boolean, timeout: number ) { - this.text = text; - this.type = type; - this.dismissable = dismissable; - this.timeout = timeout; - } - - id: number = 0; - text: String; - type: ToastType; - dismissable: Boolean; - timeout: number; -} \ No newline at end of file diff --git a/src/lib/types.ts b/src/lib/types.ts index 348acd3..92a7c3c 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -3,7 +3,7 @@ export type TimelinePosition = 'right' | 'left' | 'alternate'; export type ParentPosition = 'right' | 'left'; export type TimelineConfig = { - rootPosition: TimelinePosition; + rootPosition: TimelinePosition; }; export interface GitRepo { @@ -19,4 +19,4 @@ export interface GitRepo { login: string; avatar_url: string; }; -} \ No newline at end of file +} diff --git a/src/main.svelte b/src/main.svelte index bba7010..ee4569a 100644 --- a/src/main.svelte +++ b/src/main.svelte @@ -1,107 +1,66 @@ {#await getJson('/json/me.json')} {:then info} -
    -
    -

    {info.name}

    -

    {info.job_title}

    -
    -
    -
    - {info.name}'s Profile Photo -

    {@html info.about}

    -
    +
    + {toasts.add({ + title: 'Welcome', + duration: 5000, + type: 'success', + placement: 'bottom-center', + showProgress: true + })}
    -
    -

    Skills

    -
    -
    - -
    -
    + +
    + +
    + Avatar +

    {@html info.about}

    +
    +
    +
    -
    -

    Experience

    -
    - - -
    + +
    + + {#each info.skills as skill} + + {skill.about} -
    {addToast(new Toast("Click on a skill to open a prompt", ToastType.Info, true, 8_000))}
    -
    {addToast(new Toast("Welcome!", ToastType.Success, true, 7_000))}
    + +
    + {/each} +
    +
    + +
    + +
    {:catch} -
    -
    -

    Unable to load portfolio overview data

    -
    +
    + {toasts.add({ + title: 'Error', + description: 'There was an error loading static site data', + duration: 0, + placement: 'bottom-center', + showProgress: true + })}
    -
    {addToast(new Toast("Unable to load me.json", ToastType.Error, true, 3000))}
    {/await} - - \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index ba62dbb..1c17e2e 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,60 +1,23 @@ - +
    + -
    - - +
    + + + + +
    - - \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index c60d686..3194ecf 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -2,4 +2,6 @@ import Main from '../main.svelte'; -
    \ No newline at end of file +
    +
    +
    \ No newline at end of file diff --git a/src/routes/contact/+page.svelte b/src/routes/contact/+page.svelte index d639840..ea74d78 100644 --- a/src/routes/contact/+page.svelte +++ b/src/routes/contact/+page.svelte @@ -1,149 +1,95 @@ - -
    -

    Contact

    -
    -
    -
    + + + +