Initial commit: Animexe Laravel platform

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 00:01:48 +03:00
co-authored by Claude Opus 4.8
commit a63515cfc6
366 changed files with 74773 additions and 0 deletions
@@ -0,0 +1,82 @@
@extends('frontend.layouts.app')
@section('title', 'Bildirimler — Animexe')
@push('styles')
<style>
.notif-wrap{max-width:700px;margin:0 auto;padding:80px 20px 60px}
.notif-hero{margin-bottom:28px}
.notif-hero h1{font-size:1.5rem;font-weight:800;color:var(--text);display:flex;align-items:center;gap:10px}
.notif-hero p{color:var(--text3);font-size:.88rem;margin-top:4px}
.notif-card{
background:var(--surface);border:1px solid var(--border);border-radius:12px;
padding:16px 18px;margin-bottom:10px;display:flex;align-items:flex-start;gap:14px;
transition:border-color .15s,background .15s;
}
.notif-card:hover{border-color:rgba(0,245,255,.25);background:rgba(0,245,255,.02)}
.notif-card.unread{border-left:3px solid var(--accent2);background:rgba(0,245,255,.03)}
.notif-icon{
width:40px;height:40px;border-radius:50%;background:rgba(0,245,255,.1);border:1px solid rgba(0,245,255,.2);
display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1.1rem;color:var(--accent2);
}
.notif-body{flex:1;min-width:0}
.notif-title{font-size:.88rem;font-weight:600;color:var(--text);margin-bottom:3px}
.notif-sub{font-size:.78rem;color:var(--text2);line-height:1.5}
.notif-time{font-size:.68rem;color:var(--text3);margin-top:5px}
.notif-empty{text-align:center;padding:60px 20px;color:var(--text3)}
.notif-empty i{font-size:2.5rem;display:block;margin-bottom:12px;opacity:.3}
</style>
@endpush
@section('content')
<div class="notif-wrap">
<div class="notif-hero">
<h1><i class="bi bi-bell-fill" style="color:var(--accent2)"></i> Bildirimler</h1>
<p>Takip ettiğin animelerin yeni bölüm bildirimleri burada görünür.</p>
</div>
@if($notifications->isEmpty())
<div class="notif-empty">
<i class="bi bi-bell-slash"></i>
<div>Henüz bildiriminiz yok.</div>
<div style="font-size:.8rem;margin-top:6px">Anime sayfalarından animeleri takip edin, yeni bölüm eklenince bilgilendirilirsiniz.</div>
</div>
@else
@foreach($notifications as $n)
@php
$d = $n->data;
$isEp = $n->type === 'episode';
$isAdmin = $n->type === 'admin';
$url = $isEp && isset($d['anime_slug'])
? route('watch', [$d['anime_slug'], $d['season_number'] ?? 1, $d['episode_number'] ?? 1])
: ($isAdmin && !empty($d['url']) ? $d['url'] : '#');
@endphp
<a href="{{ $url }}" style="text-decoration:none;display:block">
<div class="notif-card {{ !$n->is_read ? 'unread' : '' }}">
<div class="notif-icon" style="{{ $isAdmin ? 'background:rgba(255,45,125,.1);border-color:rgba(255,45,125,.25);color:var(--accent)' : '' }}">
<i class="bi {{ $isAdmin ? ($d['icon'] ?? 'bi-megaphone-fill') : ($isEp ? 'bi-play-circle-fill' : 'bi-bell-fill') }}"></i>
</div>
<div class="notif-body">
@if($isEp)
<div class="notif-title">{{ $d['anime_title'] ?? 'Anime' }} Yeni Bölüm!</div>
<div class="notif-sub">
Sezon {{ $d['season_number'] ?? 1 }}, {{ $d['episode_number'] ?? 1 }}. Bölüm eklendi
@if(!empty($d['episode_title'])) <em>{{ $d['episode_title'] }}</em>@endif
</div>
@else
<div class="notif-title">{{ $d['title'] ?? 'Bildirim' }}</div>
@if(!empty($d['body']))<div class="notif-sub">{{ $d['body'] }}</div>@endif
@endif
<div class="notif-time">{{ $n->created_at ? \Carbon\Carbon::parse($n->created_at)->diffForHumans() : '' }}</div>
</div>
@if(!$n->is_read)
<div style="width:8px;height:8px;border-radius:50%;background:var(--accent2);flex-shrink:0;margin-top:4px"></div>
@endif
</div>
</a>
@endforeach
<div class="mt-4">{{ $notifications->links() }}</div>
@endif
</div>
@endsection