feat: Update index page UI and fix file permissions

- Add Arctic Lights background with radial gradient to index.vue
- Make multiple app files executable (changed modes from 644 to 755)
- Update dependencies in package-lock.json (browserslist, postcss-selector-parser, etc.) for latest versions and potential bug fixes
This commit is contained in:
2025-12-03 21:56:48 +03:30
parent 844ebda5bd
commit 5cbd1f8761
24 changed files with 1559 additions and 1519 deletions

0
README.md Normal file → Executable file
View File

1
app/app.vue Normal file → Executable file
View File

@@ -19,5 +19,6 @@ useSeoMeta({
</script>
<template>
<Analytics />
<NuxtPage />
</template>

0
app/components/IndexHero.vue Normal file → Executable file
View File

0
app/components/MagnetCard.vue Normal file → Executable file
View File

0
app/components/SearchBar.vue Normal file → Executable file
View File

0
app/components/TorrentUpload.vue Normal file → Executable file
View File

0
app/components/alert/Error.vue Normal file → Executable file
View File

0
app/lib/api.ts Normal file → Executable file
View File

80
app/pages/index.vue Normal file → Executable file
View File

@@ -46,41 +46,57 @@ async function handleTorrentUpload(file: File) {
</script>
<template>
<div class="flex flex-col min-h-screen bg-base-300">
<div class="grow flex items-start justify-center pt-40 px-4">
<div class="w-full max-w-2xl">
<IndexHero />
<div v-if="!maxedMagnet && !loading" class="space-y-6">
<SearchBar @submit="handleMagnetSubmit" />
<div class="divider divider-neutral">OR</div>
<TorrentUpload @submit="handleTorrentUpload" />
</div>
<div class="min-h-screen w-full relative bg-black">
<!-- Arctic Lights Background with Top Glow -->
<div
class="absolute inset-0 z-0"
style="
background: radial-gradient(
ellipse 80% 60% at 50% 0%,
rgba(34, 197, 94, 0.35),
transparent 70%
),
#000000;
"
/>
<div
v-if="loading"
v-motion-fade
class="flex justify-center items-center p-8"
>
<span class="loading loading-infinity loading-xl" />
</div>
<!-- Main Content -->
<div class="relative z-10 flex flex-col min-h-screen">
<div class="grow flex items-start justify-center pt-40 px-4">
<div class="w-full max-w-2xl">
<IndexHero />
<div v-if="!maxedMagnet && !loading" class="space-y-6">
<SearchBar @submit="handleMagnetSubmit" />
<div class="divider divider-neutral">OR</div>
<TorrentUpload @submit="handleTorrentUpload" />
</div>
<!-- Error message display -->
<AlertError v-if="error && !loading" :message="error" />
<MagnetCard
v-if="maxedMagnet && !loading && !error"
v-motion-fade
:name="maxedMagnet.name || 'Unknown Torrent'"
:total-trackers="maxedMagnet.totalTrackers"
:magnet-url="maxedMagnet.maxedMagnet"
/>
<div v-if="maxedMagnet" class="flex justify-center pt-5">
<button
class="btn btn-primary text-accent"
@click="maxedMagnet = null"
<div
v-if="loading"
v-motion-fade
class="flex justify-center items-center p-8"
>
Max Another Torrent
</button>
<span class="loading loading-infinity loading-xl" />
</div>
<!-- Error message display -->
<AlertError v-if="error && !loading" :message="error" />
<MagnetCard
v-if="maxedMagnet && !loading && !error"
v-motion-fade
:name="maxedMagnet.name || 'Unknown Torrent'"
:total-trackers="maxedMagnet.totalTrackers"
:magnet-url="maxedMagnet.maxedMagnet"
/>
<div v-if="maxedMagnet" class="flex justify-center pt-5">
<button
class="btn btn-primary text-accent"
@click="maxedMagnet = null"
>
Max Another Torrent
</button>
</div>
</div>
</div>
</div>

0
app/tailwind.css Normal file → Executable file
View File

0
eslint.config.mjs Normal file → Executable file
View File

0
nuxt.config.ts Normal file → Executable file
View File

14
package.json Normal file → Executable file
View File

@@ -12,16 +12,16 @@
"dependencies": {
"@formkit/auto-animate": "^0.9.0",
"@nuxt/eslint": "1.10.0",
"@tailwindcss/vite": "^4.1.16",
"@tailwindcss/vite": "^4.1.17",
"@types/parse-torrent": "^5.8.8",
"@vercel/analytics": "^1.5.0",
"@vercel/analytics": "^1.6.1",
"@vueuse/motion": "^3.0.3",
"daisyui": "^5.3.10",
"eslint": "^9.38.0",
"nuxt": "^4.2.0",
"daisyui": "^5.5.8",
"eslint": "^9.39.1",
"nuxt": "^4.2.1",
"parse-torrent": "^11.0.19",
"tailwindcss": "^4.1.16",
"vue": "^3.5.22",
"tailwindcss": "^4.1.17",
"vue": "^3.5.25",
"vue-router": "^4.6.3"
},
"devDependencies": {

2979
pnpm-lock.yaml generated Normal file → Executable file

File diff suppressed because it is too large Load Diff

4
pnpm-workspace.yaml Executable file
View File

@@ -0,0 +1,4 @@
onlyBuiltDependencies:
- '@parcel/watcher'
- esbuild
- unrs-resolver

0
public/favicon.ico Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

0
public/robots.txt Normal file → Executable file
View File

0
server/api/magnet.ts Normal file → Executable file
View File

0
server/api/torrent.ts Normal file → Executable file
View File

0
server/utils/magnetParser.ts Normal file → Executable file
View File

0
server/utils/torrentParser.ts Normal file → Executable file
View File

0
server/utils/trackerHelper.ts Normal file → Executable file
View File

0
shared/types/magnet.ts Normal file → Executable file
View File

0
tsconfig.json Normal file → Executable file
View File