diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..8fdd954 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/drizzle.config.ts b/drizzle.config.ts index 95b303c..6367408 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -14,10 +14,10 @@ export default defineConfig({ dialect: 'postgresql', casing: 'snake_case', dbCredentials: { - url: process.env.DATABASE_URL! + url: process.env.DATABASE_URL ?? '', }, migrations: { table: 'migrations', - schema: 'public' - } + schema: 'public', + }, }); diff --git a/package.json b/package.json index 5be675a..d5ca415 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,9 @@ "devDependencies": { "@biomejs/biome": "^1.9.4", "@chromatic-com/storybook": "^3.2.3", + "@dicebear/collection": "^9.2.2", + "@dicebear/converter": "^9.2.2", + "@dicebear/core": "^9.2.2", "@faker-js/faker": "^9.3.0", "@playwright/test": "^1.45.3", "@storybook/addon-essentials": "^8.4.7", @@ -35,6 +38,8 @@ "@sveltejs/enhanced-img": "^0.4.4", "@sveltejs/kit": "^2.9.0", "@sveltejs/vite-plugin-svelte": "^5.0.3", + "@tanstack/svelte-query": "^5.62.9", + "@tanstack/svelte-query-devtools": "^5.62.9", "@types/cookie": "^1.0.0", "@types/node": "^22.10.2", "@types/pg": "^8.11.10", @@ -48,7 +53,6 @@ "storybook": "^8.4.7", "svelte": "^5.16.0", "svelte-check": "^4.0.0", - "svelte-headless-table": "^0.18.3", "svelte-meta-tags": "^4.0.4", "svelte-preprocess": "^6.0.3", "svelte-sequential-preprocessor": "^2.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4f2e27..13227e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,6 +123,15 @@ importers: '@chromatic-com/storybook': specifier: ^3.2.3 version: 3.2.3(react@18.3.1)(storybook@8.4.7) + '@dicebear/collection': + specifier: ^9.2.2 + version: 9.2.2(@dicebear/core@9.2.2) + '@dicebear/converter': + specifier: ^9.2.2 + version: 9.2.2 + '@dicebear/core': + specifier: ^9.2.2 + version: 9.2.2 '@faker-js/faker': specifier: ^9.3.0 version: 9.3.0 @@ -162,6 +171,12 @@ importers: '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 version: 5.0.3(svelte@5.16.0)(vite@6.0.6(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)) + '@tanstack/svelte-query': + specifier: ^5.62.9 + version: 5.62.9(svelte@5.16.0) + '@tanstack/svelte-query-devtools': + specifier: ^5.62.9 + version: 5.62.9(@tanstack/svelte-query@5.62.9(svelte@5.16.0))(svelte@5.16.0) '@types/cookie': specifier: ^1.0.0 version: 1.0.0 @@ -201,9 +216,6 @@ importers: svelte-check: specifier: ^4.0.0 version: 4.1.1(picomatch@4.0.2)(svelte@5.16.0)(typescript@5.7.2) - svelte-headless-table: - specifier: ^0.18.3 - version: 0.18.3(svelte@5.16.0) svelte-meta-tags: specifier: ^4.0.4 version: 4.0.4(svelte@5.16.0)(typescript@5.7.2) @@ -342,6 +354,200 @@ packages: peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@dicebear/adventurer-neutral@9.2.2': + resolution: {integrity: sha512-XVAjhUWjav6luTZ7txz8zVJU/H0DiUy4uU1Z7IO5MDO6kWvum+If1+0OUgEWYZwM+RDI7rt2CgVP910DyZGd1w==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/adventurer@9.2.2': + resolution: {integrity: sha512-WjBXCP9EXbUul2zC3BS2/R3/4diw1uh/lU4jTEnujK1mhqwIwanFboIMzQsasNNL/xf+m3OHN7MUNJfHZ1fLZA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/avataaars-neutral@9.2.2': + resolution: {integrity: sha512-pRj16P27dFDBI3LtdiHUDwIXIGndHAbZf5AxaMkn6/+0X93mVQ/btVJDXyW0G96WCsyC88wKAWr6/KJotPxU6Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/avataaars@9.2.2': + resolution: {integrity: sha512-WqJPQEt0OhBybTpI0TqU1uD1pSk9M2+VPIwvBye/dXo46b+0jHGpftmxjQwk6tX8z0+mRko8pwV5n+cWht1/+w==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/big-ears-neutral@9.2.2': + resolution: {integrity: sha512-IPHt8fi3dv9cyfBJBZ4s8T+PhFCrQvOCf91iRHBT3iOLNPdyZpI5GNLmGiV0XMAvIDP5NvA5+f6wdoBLhYhbDA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/big-ears@9.2.2': + resolution: {integrity: sha512-hz4UXdPq4qqZpu0YVvlqM4RDFhk5i0WgPcuwj/MOLlgTjuj63uHUhCQSk6ZiW1DQOs12qpwUBMGWVHxBRBas9g==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/big-smile@9.2.2': + resolution: {integrity: sha512-D4td0GL8or1nTNnXvZqkEXlzyqzGPWs3znOnm1HIohtFTeIwXm72Ob2lNDsaQJSJvXmVlwaQQ0CCTvyCl8Stjw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/bottts-neutral@9.2.2': + resolution: {integrity: sha512-lSgpqmSJtlnyxVuUgNdBwyzuA0O9xa5zRJtz7x2KyWbicXir5iYdX0MVMCkp1EDvlcxm9rGJsclktugOyakTlw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/bottts@9.2.2': + resolution: {integrity: sha512-wugFkzw8JNWV1nftq/Wp/vmQsLAXDxrMtRK3AoMODuUpSVoP3EHRUfKS043xggOsQFvoj0HZ7kadmhn0AMLf5A==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/collection@9.2.2': + resolution: {integrity: sha512-vZAmXhPWCK3sf8Fj9/QflFC6XOLroJOT5K1HdnzHaPboEvffUQideGCrrEamnJtlH0iF0ZDXh8gqmwy2fu+yHA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/converter@9.2.2': + resolution: {integrity: sha512-704MOowKUOGI88tOJIYFSkd2HXbkNtPdjMrPTx7j+7gAqImCBZ298KVUk0TCo36VCUfN0EtgngUuBZUxyPTadQ==} + engines: {node: '>=18.0.0'} + + '@dicebear/core@9.2.2': + resolution: {integrity: sha512-ROhgHG249dPtcXgBHcqPEsDeAPRPRD/9d+tZCjLYyueO+cXDlIA8dUlxpwIVcOuZFvCyW6RJtqo8BhNAi16pIQ==} + engines: {node: '>=18.0.0'} + + '@dicebear/croodles-neutral@9.2.2': + resolution: {integrity: sha512-/4mNirxoQ+z1kHXnpDRbJ1JV1ZgXogeTeNp0MaFYxocCgHfJ7ckNM23EE1I7akoo9pqPxrKlaeNzGAjKHdS9vA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/croodles@9.2.2': + resolution: {integrity: sha512-OzvAXQWsOgMwL3Sl+lBxCubqSOWoBJpC78c4TKnNTS21rR63TtXUyVdLLzgKVN4YHRnvMgtPf8F/W9YAgIDK4w==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/dylan@9.2.2': + resolution: {integrity: sha512-s7e3XliC1YXP+Wykj+j5kwdOWFRXFzYHYk/PB4oZ1F3sJandXiG0HS4chaNu4EoP0yZgKyFMUVTGZx+o6tMaYg==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/fun-emoji@9.2.2': + resolution: {integrity: sha512-M+rYTpB3lfwz18f+/i+ggNwNWUoEj58SJqXJ1wr7Jh/4E5uL+NmJg9JGwYNaVtGbCFrKAjSaILNUWGQSFgMfog==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/glass@9.2.2': + resolution: {integrity: sha512-imCMxcg+XScHYtQq2MUv1lCzhQSCUglMlPSezKEpXhTxgbgUpmGlSGVkOfmX5EEc7SQowKkF1W/1gNk6CXvBaQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/icons@9.2.2': + resolution: {integrity: sha512-Tqq2OVCdS7J02DNw58xwlgLGl40sWEckbqXT3qRvIF63FfVq+wQZBGuhuiyAURcSgvsc3h2oQeYFi9iXh7HTOA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/identicon@9.2.2': + resolution: {integrity: sha512-POVKFulIrcuZf3rdAgxYaSm2XUg/TJg3tg9zq9150reEGPpzWR7ijyJ03dzAADPzS3DExfdYVT9+z3JKwwJnTQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/initials@9.2.2': + resolution: {integrity: sha512-/xNnsEmsstWjmF77htAOuwOMhFlP6eBVXgcgFlTl/CCH/Oc6H7t0vwX1he8KLQBBzjGpvJcvIAn4Wh9rE4D5/A==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/lorelei-neutral@9.2.2': + resolution: {integrity: sha512-Eys9Os6nt2Xll7Mvu66CfRR2YggTopWcmFcRZ9pPdohS96kT0MsLI2iTcfZXQ51K8hvT3IbwoGc86W8n0cDxAQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/lorelei@9.2.2': + resolution: {integrity: sha512-koXqVr/vcWUPo00VP5H6Czsit+uF1tmwd2NK7Q/e34/9Sd1f4QLLxHjjBNm/iNjCI1+UNTOvZ2Qqu0N5eo7Flw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/micah@9.2.2': + resolution: {integrity: sha512-NCajcJV5yw8uMKiACp694w1T/UyYme2CUEzyTzWHgWnQ+drAuCcH8gpAoLWd67viNdQB/MTpNlaelUgTjmI4AQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/miniavs@9.2.2': + resolution: {integrity: sha512-vvkWXttdw+KHF3j+9qcUFzK+P0nbNnImGjvN48wwkPIh2h08WWFq0MnoOls4IHwUJC4GXBjWtiyVoCxz6hhtOA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/notionists-neutral@9.2.2': + resolution: {integrity: sha512-AhOzk+lz6kB4uxGun8AJhV+W1nttnMlxmxd+5KbQ/txCIziYIaeD3il44wsAGegEpGFvAZyMYtR/jjfHcem3TA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/notionists@9.2.2': + resolution: {integrity: sha512-Z9orRaHoj7Y9Ap4wEu8XOrFACsG1KbbBQUPV1R50uh6AHwsyNrm4cS84ICoGLvxgLNHHOae3YCjd8aMu2z19zg==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/open-peeps@9.2.2': + resolution: {integrity: sha512-6PeQDHYyjvKrGSl/gP+RE5dSYAQGKpcGnM65HorgyTIugZK7STo0W4hvEycedupZ3MCCEH8x/XyiChKM2sHXog==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/personas@9.2.2': + resolution: {integrity: sha512-705+ObNLC0w1fcgE/Utav+8bqO+Esu53TXegpX5j7trGEoIMf2bThqJGHuhknZ3+T2az3Wr89cGyOGlI0KLzLA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/pixel-art-neutral@9.2.2': + resolution: {integrity: sha512-CdUY77H6Aj7dKLW3hdkv7tu0XQJArUjaWoXihQxlhl3oVYplWaoyu9omYy5pl8HTqs8YgVTGljjMXYoFuK0JUw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/pixel-art@9.2.2': + resolution: {integrity: sha512-BvbFdrpzQl04+Y9UsWP63YGug+ENGC7GMG88qbEFWxb/IqRavGa4H3D0T4Zl2PSLiw7f2Ctv98bsCQZ1PtCznQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/rings@9.2.2': + resolution: {integrity: sha512-eD1J1k364Arny+UlvGrk12HP/XGG6WxPSm4BarFqdJGSV45XOZlwqoi7FlcMr9r9yvE/nGL8OizbwMYusEEdjw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/shapes@9.2.2': + resolution: {integrity: sha512-e741NNWBa7fg0BjomxXa0fFPME2XCIR0FA+VHdq9AD2taTGHEPsg5x1QJhCRdK6ww85yeu3V3ucpZXdSrHVw5Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + + '@dicebear/thumbs@9.2.2': + resolution: {integrity: sha512-FkPLDNu7n5kThLSk7lR/0cz/NkUqgGdZGfLZv6fLkGNGtv6W+e2vZaO7HCXVwIgJ+II+kImN41zVIZ6Jlll7pQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@dicebear/core': ^9.0.0 + '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} @@ -1349,6 +1555,9 @@ packages: resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==} engines: {node: '>=10'} + '@photostructure/tz-lookup@11.0.0': + resolution: {integrity: sha512-QMV5/dWtY/MdVPXZs/EApqzyhnqDq1keYEqpS+Xj2uidyaqw2Nk/fWcsszdruIXjdqp1VoWNzsgrO6bUHU1mFw==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1365,6 +1574,82 @@ packages: resolution: {integrity: sha512-B4iV6QxW//Fn17+qF1EMZRmoThIUJlCtcO85yoRDJnMyHeAthjz4ig9OTkfGGXKtQhcdPX0me75gU5K9J897+w==} engines: {node: '>=18.16.0'} + '@resvg/resvg-js-android-arm-eabi@2.6.2': + resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@resvg/resvg-js-android-arm64@2.6.2': + resolution: {integrity: sha512-VcOKezEhm2VqzXpcIJoITuvUS/fcjIw5NA/w3tjzWyzmvoCdd+QXIqy3FBGulWdClvp4g+IfUemigrkLThSjAQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@resvg/resvg-js-darwin-arm64@2.6.2': + resolution: {integrity: sha512-nmok2LnAd6nLUKI16aEB9ydMC6Lidiiq2m1nEBDR1LaaP7FGs4AJ90qDraxX+CWlVuRlvNjyYJTNv8qFjtL9+A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@resvg/resvg-js-darwin-x64@2.6.2': + resolution: {integrity: sha512-GInyZLjgWDfsVT6+SHxQVRwNzV0AuA1uqGsOAW+0th56J7Nh6bHHKXHBWzUrihxMetcFDmQMAX1tZ1fZDYSRsw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2': + resolution: {integrity: sha512-YIV3u/R9zJbpqTTNwTZM5/ocWetDKGsro0SWp70eGEM9eV2MerWyBRZnQIgzU3YBnSBQ1RcxRZvY/UxwESfZIw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@resvg/resvg-js-linux-arm64-gnu@2.6.2': + resolution: {integrity: sha512-zc2BlJSim7YR4FZDQ8OUoJg5holYzdiYMeobb9pJuGDidGL9KZUv7SbiD4E8oZogtYY42UZEap7dqkkYuA91pg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@resvg/resvg-js-linux-arm64-musl@2.6.2': + resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@resvg/resvg-js-linux-x64-gnu@2.6.2': + resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@resvg/resvg-js-linux-x64-musl@2.6.2': + resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@resvg/resvg-js-win32-arm64-msvc@2.6.2': + resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@resvg/resvg-js-win32-ia32-msvc@2.6.2': + resolution: {integrity: sha512-har4aPAlvjnLcil40AC77YDIk6loMawuJwFINEM7n0pZviwMkMvjb2W5ZirsNOZY4aDbo5tLx0wNMREp5Brk+w==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@resvg/resvg-js-win32-x64-msvc@2.6.2': + resolution: {integrity: sha512-ZXtYhtUr5SSaBrUDq7DiyjOFJqBVL/dOBN7N/qmi/pO0IgiWW/f/ue3nbvu9joWE5aAKDoIzy/CxsY0suwGosQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@resvg/resvg-js@2.6.2': + resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==} + engines: {node: '>= 10'} + '@rollup/plugin-commonjs@28.0.2': resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} engines: {node: '>=16.0.0 || 14 >= 14.17'} @@ -1761,6 +2046,23 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' + '@tanstack/query-core@5.62.9': + resolution: {integrity: sha512-lwePd8hNYhyQ4nM/iRQ+Wz2cDtspGeZZHFZmCzHJ7mfKXt+9S301fULiY2IR2byJYY6Z03T427E5PoVfMexHjw==} + + '@tanstack/query-devtools@5.62.9': + resolution: {integrity: sha512-b1NZzDLVf6laJsB1Cfm3ieuYzM+WqoO8qpm9v+3Etwd+Ph4zkhUMiT+wcWj5AhEPsXiRodKYiiW048VDNdBxNg==} + + '@tanstack/svelte-query-devtools@5.62.9': + resolution: {integrity: sha512-baESJCUDBIJIRiwfodW/j0BU8c5uADk37A0UfadOU8cWFt9M67zawKltJmut7AoEXbwLWYqTO+3HU2XKCyJEWw==} + peerDependencies: + '@tanstack/svelte-query': ^5.62.9 + svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 + + '@tanstack/svelte-query@5.62.9': + resolution: {integrity: sha512-2M/CpePioU4IRw1OOdA+/KwA+0swJAb3c0uipFOoWkuT11uC4tTe8UD/lYRQpJYFFn5hML7KYRxVOW0HH60XiA==} + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -1800,6 +2102,9 @@ packages: '@types/jsonwebtoken@9.0.7': resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==} + '@types/luxon@3.4.2': + resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==} + '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} @@ -2027,6 +2332,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + batch-cluster@13.0.0: + resolution: {integrity: sha512-EreW0Vi8TwovhYUHBXXRA5tthuU2ynGsZFlboyMJHCCUXYa2AjgwnE3ubBOJs2xJLcuXFJbi6c/8pH5+FVj8Og==} + engines: {node: '>=14'} + before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} @@ -2695,6 +3004,17 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + exiftool-vendored.exe@13.0.0: + resolution: {integrity: sha512-4zAMuFGgxZkOoyQIzZMHv1HlvgyJK3AkNqjAgm8A8V0UmOZO7yv3pH49cDV1OduzFJqgs6yQ6eG4OGydhKtxlg==} + os: [win32] + + exiftool-vendored.pl@13.0.1: + resolution: {integrity: sha512-+BRRzjselpWudKR0ltAW5SUt9T82D+gzQN8DdOQUgnSVWWp7oLCeTGBRptbQz+436Ihn/mPzmo/xnf0cv/Qw1A==} + os: ['!win32'] + + exiftool-vendored@28.8.0: + resolution: {integrity: sha512-R7tirJLr9fWuH9JS/KFFLB+O7jNGKuPXGxREc6YybYangEudGb+X8ERsYXk9AifMiAWh/2agNfbgkbcQcF+MxA==} + expect-type@1.1.0: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} @@ -2898,6 +3218,10 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + help-me@5.0.0: resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} @@ -3188,6 +3512,10 @@ packages: peerDependencies: svelte: ^3 || ^4 || ^5.0.0-next.42 + luxon@3.5.0: + resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} + engines: {node: '>=12'} + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -4018,16 +4346,6 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 typescript: '>=5.0.0' - svelte-headless-table@0.18.3: - resolution: {integrity: sha512-1zVnqXW0dvn6ZceYa94k+ziK+w5Dj9nlWYTQGXBv2JhM0resj9w7CWpclZK1TJwAALfEeH4InPBPO87L5fr+nQ==} - peerDependencies: - svelte: ^4.0.0 - - svelte-keyed@2.0.0: - resolution: {integrity: sha512-7TeEn+QbJC2OJrHiuM0T8vMBkms3DNpTE+Ir+NtnVBnBMA78aL4f1ft9t0Hn/pBbD/TnIXi4YfjFRAgtN+DZ5g==} - peerDependencies: - svelte: ^4.0.0 - svelte-meta-tags@4.0.4: resolution: {integrity: sha512-i0vgxGreM3lXTTxLSuPQLE1n56KAFACHWIXRj7fJCTpd/5D16O97Ha/OXDZS4Lsk+D347VEK4LeMoacsftbeKw==} peerDependencies: @@ -4112,11 +4430,6 @@ packages: typescript: optional: true - svelte-render@2.0.1: - resolution: {integrity: sha512-RpB0SurwXm4xhjvHHtjeqMmvd645FURb79GFOotScOSqnKK5vpqBgoBPGC0pp+E/eZgDSQ9rRAdn/+N4ys1mXQ==} - peerDependencies: - svelte: ^4.0.0 - svelte-sequential-preprocessor@2.0.2: resolution: {integrity: sha512-DIFm0kSNscVxtBmKkBiygAHB5otoqN1aVmJ3t57jZhJfCB7Np/lUSoTtSrvPFjmlBbMeOsb1VQ06cut1+rBYOg==} engines: {node: '>=16'} @@ -4126,11 +4439,6 @@ packages: peerDependencies: svelte: ^3.0.0 || ^4.0.0 || ^5.0.0-next.1 - svelte-subscribe@2.0.1: - resolution: {integrity: sha512-eKXIjLxB4C7eQWPqKEdxcGfNXm2g/qJ67zmEZK/GigCZMfrTR3m7DPY93R6MX+5uoqM1FRYxl8LZ1oy4URWi2A==} - peerDependencies: - svelte: ^4.0.0 - svelte-toolbelt@0.4.6: resolution: {integrity: sha512-k8OUvXBUifHZcAlWeY/HLg/4J0v5m2iOfOhn8fDmjt4AP8ZluaDh9eBFus9lFiLX6O5l6vKqI1dKL5wy7090NQ==} engines: {node: '>=18', pnpm: '>=8.7.0'} @@ -4239,6 +4547,13 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4656,6 +4971,171 @@ snapshots: - '@chromatic-com/playwright' - react + '@dicebear/adventurer-neutral@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/adventurer@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/avataaars-neutral@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/avataaars@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/big-ears-neutral@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/big-ears@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/big-smile@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/bottts-neutral@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/bottts@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/collection@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/adventurer': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/adventurer-neutral': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/avataaars': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/avataaars-neutral': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/big-ears': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/big-ears-neutral': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/big-smile': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/bottts': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/bottts-neutral': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/core': 9.2.2 + '@dicebear/croodles': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/croodles-neutral': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/dylan': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/fun-emoji': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/glass': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/icons': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/identicon': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/initials': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/lorelei': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/lorelei-neutral': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/micah': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/miniavs': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/notionists': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/notionists-neutral': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/open-peeps': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/personas': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/pixel-art': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/pixel-art-neutral': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/rings': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/shapes': 9.2.2(@dicebear/core@9.2.2) + '@dicebear/thumbs': 9.2.2(@dicebear/core@9.2.2) + + '@dicebear/converter@9.2.2': + dependencies: + '@resvg/resvg-js': 2.6.2 + exiftool-vendored: 28.8.0 + sharp: 0.33.5 + tmp-promise: 3.0.3 + + '@dicebear/core@9.2.2': + dependencies: + '@types/json-schema': 7.0.15 + + '@dicebear/croodles-neutral@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/croodles@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/dylan@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/fun-emoji@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/glass@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/icons@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/identicon@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/initials@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/lorelei-neutral@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/lorelei@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/micah@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/miniavs@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/notionists-neutral@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/notionists@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/open-peeps@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/personas@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/pixel-art-neutral@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/pixel-art@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/rings@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/shapes@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + + '@dicebear/thumbs@9.2.2(@dicebear/core@9.2.2)': + dependencies: + '@dicebear/core': 9.2.2 + '@drizzle-team/brocli@0.10.2': {} '@emnapi/runtime@1.3.1': @@ -5505,6 +5985,8 @@ snapshots: '@phc/format@1.0.0': {} + '@photostructure/tz-lookup@11.0.0': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -5517,6 +5999,57 @@ snapshots: '@poppinss/macroable@1.0.3': optional: true + '@resvg/resvg-js-android-arm-eabi@2.6.2': + optional: true + + '@resvg/resvg-js-android-arm64@2.6.2': + optional: true + + '@resvg/resvg-js-darwin-arm64@2.6.2': + optional: true + + '@resvg/resvg-js-darwin-x64@2.6.2': + optional: true + + '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2': + optional: true + + '@resvg/resvg-js-linux-arm64-gnu@2.6.2': + optional: true + + '@resvg/resvg-js-linux-arm64-musl@2.6.2': + optional: true + + '@resvg/resvg-js-linux-x64-gnu@2.6.2': + optional: true + + '@resvg/resvg-js-linux-x64-musl@2.6.2': + optional: true + + '@resvg/resvg-js-win32-arm64-msvc@2.6.2': + optional: true + + '@resvg/resvg-js-win32-ia32-msvc@2.6.2': + optional: true + + '@resvg/resvg-js-win32-x64-msvc@2.6.2': + optional: true + + '@resvg/resvg-js@2.6.2': + optionalDependencies: + '@resvg/resvg-js-android-arm-eabi': 2.6.2 + '@resvg/resvg-js-android-arm64': 2.6.2 + '@resvg/resvg-js-darwin-arm64': 2.6.2 + '@resvg/resvg-js-darwin-x64': 2.6.2 + '@resvg/resvg-js-linux-arm-gnueabihf': 2.6.2 + '@resvg/resvg-js-linux-arm64-gnu': 2.6.2 + '@resvg/resvg-js-linux-arm64-musl': 2.6.2 + '@resvg/resvg-js-linux-x64-gnu': 2.6.2 + '@resvg/resvg-js-linux-x64-musl': 2.6.2 + '@resvg/resvg-js-win32-arm64-msvc': 2.6.2 + '@resvg/resvg-js-win32-ia32-msvc': 2.6.2 + '@resvg/resvg-js-win32-x64-msvc': 2.6.2 + '@rollup/plugin-commonjs@28.0.2(rollup@4.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.29.1) @@ -5993,6 +6526,22 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.17 + '@tanstack/query-core@5.62.9': {} + + '@tanstack/query-devtools@5.62.9': {} + + '@tanstack/svelte-query-devtools@5.62.9(@tanstack/svelte-query@5.62.9(svelte@5.16.0))(svelte@5.16.0)': + dependencies: + '@tanstack/query-devtools': 5.62.9 + '@tanstack/svelte-query': 5.62.9(svelte@5.16.0) + esm-env: 1.2.1 + svelte: 5.16.0 + + '@tanstack/svelte-query@5.62.9(svelte@5.16.0)': + dependencies: + '@tanstack/query-core': 5.62.9 + svelte: 5.16.0 + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.26.2 @@ -6032,13 +6581,14 @@ snapshots: '@types/estree@1.0.6': {} - '@types/json-schema@7.0.15': - optional: true + '@types/json-schema@7.0.15': {} '@types/jsonwebtoken@9.0.7': dependencies: '@types/node': 22.10.2 + '@types/luxon@3.4.2': {} + '@types/mdx@2.0.13': {} '@types/node@22.10.2': @@ -6287,6 +6837,8 @@ snapshots: balanced-match@1.0.2: {} + batch-cluster@13.0.0: {} + before-after-hook@2.2.3: {} better-opn@3.0.2: @@ -6922,6 +7474,23 @@ snapshots: eventemitter3@5.0.1: {} + exiftool-vendored.exe@13.0.0: + optional: true + + exiftool-vendored.pl@13.0.1: + optional: true + + exiftool-vendored@28.8.0: + dependencies: + '@photostructure/tz-lookup': 11.0.0 + '@types/luxon': 3.4.2 + batch-cluster: 13.0.0 + he: 1.2.0 + luxon: 3.5.0 + optionalDependencies: + exiftool-vendored.exe: 13.0.0 + exiftool-vendored.pl: 13.0.1 + expect-type@1.1.0: {} express-rate-limit@7.5.0(express@4.21.2): @@ -7147,6 +7716,8 @@ snapshots: dependencies: function-bind: 1.1.2 + he@1.2.0: {} + help-me@5.0.0: {} hono-pino@0.7.0(hono@4.6.14)(pino@9.6.0): @@ -7419,6 +7990,8 @@ snapshots: dependencies: svelte: 5.16.0 + luxon@3.5.0: {} + lz-string@1.5.0: {} magic-string@0.30.17: @@ -8270,17 +8843,6 @@ snapshots: transitivePeerDependencies: - picomatch - svelte-headless-table@0.18.3(svelte@5.16.0): - dependencies: - svelte: 5.16.0 - svelte-keyed: 2.0.0(svelte@5.16.0) - svelte-render: 2.0.1(svelte@5.16.0) - svelte-subscribe: 2.0.1(svelte@5.16.0) - - svelte-keyed@2.0.0(svelte@5.16.0): - dependencies: - svelte: 5.16.0 - svelte-meta-tags@4.0.4(svelte@5.16.0)(typescript@5.7.2): dependencies: schema-dts: 1.1.2(typescript@5.7.2) @@ -8313,11 +8875,6 @@ snapshots: postcss-load-config: 4.0.2(postcss@8.4.49) typescript: 5.7.2 - svelte-render@2.0.1(svelte@5.16.0): - dependencies: - svelte: 5.16.0 - svelte-subscribe: 2.0.1(svelte@5.16.0) - svelte-sequential-preprocessor@2.0.2: dependencies: svelte: 4.2.19 @@ -8327,10 +8884,6 @@ snapshots: dependencies: svelte: 5.16.0 - svelte-subscribe@2.0.1(svelte@5.16.0): - dependencies: - svelte: 5.16.0 - svelte-toolbelt@0.4.6(svelte@5.16.0): dependencies: clsx: 2.1.1 @@ -8502,6 +9055,12 @@ snapshots: tinyspy@3.0.2: {} + tmp-promise@3.0.3: + dependencies: + tmp: 0.2.3 + + tmp@0.2.3: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 diff --git a/project.inlang/project_id b/project.inlang/project_id new file mode 100644 index 0000000..0027e25 --- /dev/null +++ b/project.inlang/project_id @@ -0,0 +1 @@ +eb7d81211e6faa5e843476a33150228f5db02e3c62748d6eff4e45b709691d18 \ No newline at end of file diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 1d99618..a5e522c 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -4,5 +4,7 @@ import { sequence } from '@sveltejs/kit/hooks'; import { startServer } from '$lib/server/api'; const handleParaglide: Handle = i18n.handle(); + startServer(); + export const handle: Handle = sequence(handleParaglide); diff --git a/src/lib/components/ui/card/card-content.svelte b/src/lib/components/ui/card/card-content.svelte new file mode 100644 index 0000000..1f52856 --- /dev/null +++ b/src/lib/components/ui/card/card-content.svelte @@ -0,0 +1,16 @@ + + +
+ {@render children?.()} +
diff --git a/src/lib/components/ui/card/card-footer.svelte b/src/lib/components/ui/card/card-footer.svelte new file mode 100644 index 0000000..6894149 --- /dev/null +++ b/src/lib/components/ui/card/card-footer.svelte @@ -0,0 +1,16 @@ + + +