Proje dosyaları eklendi
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
@props(['title', 'description' => null])
|
||||
<main class="container tp-auth-page py-4 py-md-5">
|
||||
<div class="row g-0 justify-content-center"><div class="col-12 col-md-8 col-lg-5 tp-auth-column">
|
||||
<div class="card border-0 shadow-sm tp-auth-card"><div class="card-body p-3 p-sm-4 p-md-5">
|
||||
<div class="d-flex justify-content-center mb-4"><x-brand-logo :href="route('home')" height="76px" class="tp-brand-logo-auth" /></div>
|
||||
<h1 class="h3">{{ $title }}</h1>
|
||||
@if($description)<p class="text-body-secondary">{{ $description }}</p>@endif
|
||||
@if($errors->any())<div class="alert alert-danger"><ul class="mb-0">@foreach($errors->all() as $error)<li>{{ $error }}</li>@endforeach</ul></div>@endif
|
||||
{{ $slot }}
|
||||
</div></div>
|
||||
</div></div>
|
||||
</main>
|
||||
@@ -0,0 +1,4 @@
|
||||
<span class="tp-brand-logo {{ $class }}" style="--tp-logo-height: {{ $height }}">
|
||||
<img class="tp-brand-logo-light" src="{{ asset('images/branding/TrafficPumper-logo-koyu.png') }}" width="2172" height="724" alt="TrafficPumper" decoding="async" fetchpriority="high">
|
||||
<img class="tp-brand-logo-dark" src="{{ asset('images/branding/TrafficPumper-logo-acik.png') }}" width="2172" height="724" alt="TrafficPumper" decoding="async" fetchpriority="high">
|
||||
</span>
|
||||
@@ -0,0 +1,7 @@
|
||||
@props(['href' => null, 'height' => '44px', 'class' => ''])
|
||||
@php($content = view('components.brand-logo-images', compact('height', 'class')))
|
||||
@if($href)
|
||||
<a href="{{ $href }}" class="tp-brand-logo-link" aria-label="TrafficPumper">{!! $content !!}</a>
|
||||
@else
|
||||
{!! $content !!}
|
||||
@endif
|
||||
@@ -0,0 +1 @@
|
||||
<div class="tp-customer-shell"><x-customer-sidebar /><main {{ $attributes->class(['tp-customer-main']) }}>{{ $slot }}</main></div>
|
||||
@@ -0,0 +1,6 @@
|
||||
<button class="btn btn-outline-secondary d-lg-none tp-sidebar-toggle" type="button" data-bs-toggle="offcanvas" data-bs-target="#customerSidebar" aria-label="{{__('customer.open_menu')}}">☰</button><aside class="offcanvas-lg offcanvas-start tp-customer-sidebar" tabindex="-1" id="customerSidebar"><div class="offcanvas-header tp-sidebar-closebar"><button type="button" class="btn-close btn-close-white d-lg-none" data-bs-dismiss="offcanvas"></button></div><div class="offcanvas-body"><nav class="tp-side-nav">
|
||||
<a class="tp-side-link {{request()->routeIs('dashboard')?'active':''}}" href="{{route('dashboard')}}"><span>⌂</span>{{__('customer.dashboard')}}</a>
|
||||
<div class="tp-nav-section"><button data-bs-toggle="collapse" data-bs-target="#rankTracking">{{__('customer.rank_tracking')}} <span>⌄</span></button><div class="collapse show" id="rankTracking"><a href="{{route('dashboard')}}">{{__('customer.overview')}}</a><a class="{{request()->routeIs('projects.*')?'active':''}}" href="{{route('projects.index')}}">{{__('customer.projects')}}</a><a class="{{request()->routeIs('keywords.*')?'active':''}}" href="{{route('keywords.index')}}">{{__('customer.keywords')}}</a><a class="{{request()->routeIs('rankings.*')?'active':''}}" href="{{route('rankings.index')}}">{{__('customer.ranking_history')}}</a><a class="{{request()->routeIs('serp-checks.*')?'active':''}}" href="{{route('serp-checks.index')}}">{{__('customer.serp_checks')}}</a></div></div>
|
||||
<div class="tp-nav-section"><button data-bs-toggle="collapse" data-bs-target="#reports">{{__('customer.reports')}} <span>⌄</span></button><div class="collapse {{request()->routeIs('reports.*','competitors.*')?'show':''}}" id="reports"><a class="{{request()->routeIs('reports.visibility')?'active':''}}" href="{{route('reports.visibility')}}">{{__('customer.visibility')}}</a><a class="{{request()->routeIs('reports.winners')?'active':''}}" href="{{route('reports.winners')}}">{{__('customer.winners')}}</a><a class="{{request()->routeIs('reports.losers')?'active':''}}" href="{{route('reports.losers')}}">{{__('customer.losers')}}</a><a class="{{request()->routeIs('reports.competitors','competitors.*')?'active':''}}" href="{{route('reports.competitors')}}">{{__('customer.competitors')}}</a></div></div>
|
||||
<div class="tp-nav-section"><button data-bs-toggle="collapse" data-bs-target="#account">{{__('customer.my_account')}} <span>⌄</span></button><div class="collapse {{request()->routeIs('profile.*','settings.*')?'show':''}}" id="account"><a class="{{request()->routeIs('profile.*')?'active':''}}" href="{{route('profile.show')}}">{{__('customer.profile')}}</a><a class="{{request()->routeIs('settings.*')?'active':''}}" href="{{route('settings.show')}}">{{__('customer.settings')}}</a></div></div>
|
||||
</nav></div></aside>
|
||||
@@ -0,0 +1,2 @@
|
||||
@props(['title','description'])
|
||||
<div class="tp-empty-state"><div aria-hidden="true">⌁</div><h3>{{ $title }}</h3><p>{{ $description }}</p></div>
|
||||
@@ -0,0 +1,22 @@
|
||||
@props(['title' => 'TrafficPumper'])
|
||||
@php($navigation = app(\App\Support\PortalNavigationContext::class)->resolve(request()))
|
||||
<!doctype html>
|
||||
<html lang="{{ app()->getLocale() }}" data-bs-theme="light">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="color-scheme" content="light dark">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
@if($navigation['kind'] === 'web')<meta name="trafficpumper-account-theme" content="{{ $navigation['user']->setting?->theme ?? 'system' }}"><meta name="trafficpumper-reduced-motion" content="{{ $navigation['user']->setting?->reduced_motion ? 'true' : 'false' }}">@endif
|
||||
<title>{{ $title }}</title>
|
||||
<script>{!! file_get_contents(resource_path('js/theme-manager.js')) !!}</script>
|
||||
@livewireStyles
|
||||
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
||||
</head>
|
||||
<body>
|
||||
<x-public-topbar :context="$navigation" />
|
||||
@if (session('status'))<div class="container pt-3"><div class="alert alert-success">{{ session('status') }}</div></div>@endif
|
||||
{{ $slot }}
|
||||
@livewireScripts
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,16 @@
|
||||
@php($activeLocale = app()->getLocale())
|
||||
<div class="dropdown tp-locale-picker">
|
||||
<button class="btn btn-sm btn-outline-secondary dropdown-toggle d-inline-flex align-items-center gap-1" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="{{ __('ui.language') }}">
|
||||
<span aria-hidden="true">🌐</span><span>{{ strtoupper($activeLocale) }}</span>
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end shadow-sm">
|
||||
@foreach(['tr' => 'Türkçe', 'en' => 'English'] as $code => $label)
|
||||
<li><form method="POST" action="{{ route('locale.update') }}">@csrf
|
||||
<input type="hidden" name="return_to" value="{{ request()->getRequestUri() }}">
|
||||
<button name="locale" value="{{ $code }}" type="submit" class="dropdown-item d-flex align-items-center gap-2" @if($activeLocale === $code) aria-current="true" @endif>
|
||||
<span class="text-center" style="width:1rem" aria-hidden="true">{{ $activeLocale === $code ? '✓' : '' }}</span><span>{{ $label }}</span>
|
||||
</button>
|
||||
</form></li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@@ -0,0 +1,3 @@
|
||||
@props(['label','value'=>null,'icon'=>'◎','description'=>null])
|
||||
@php($statusDescription=$description??(is_string($value)&&mb_strlen($value)>12?$value:null))
|
||||
<article class="tp-metric-card"><div class="tp-metric-icon" aria-hidden="true">{{ $icon }}</div><div class="tp-metric-content"><p class="tp-metric-label">{{ $label }}</p><strong class="tp-metric-value">{{ $statusDescription?'—':($value??'—') }}</strong>@if($statusDescription)<small class="tp-metric-description">{{ $statusDescription }}</small>@endif</div></article>
|
||||
@@ -0,0 +1,16 @@
|
||||
@props(['context'])
|
||||
@php($authenticated = $context['kind'] !== 'guest')
|
||||
@php($menuId = $authenticated ? 'tp-auth-mobile-menu' : 'tp-public-mobile-menu')
|
||||
<nav class="navbar tp-topbar border-bottom bg-body-tertiary"><div class="container-fluid py-2 gap-2"><div class="tp-public-topbar d-flex align-items-center w-100 gap-2">
|
||||
<x-brand-logo :href="$authenticated ? $context['panel_url'] : route('home')" height="44px" />
|
||||
<div class="tp-public-desktop-actions d-none d-lg-flex align-items-center gap-2 ms-auto"><a class="btn btn-link text-decoration-none" href="{{route('earn')}}">{{__('earn.navigation')}}</a>
|
||||
@if($authenticated)<a class="btn btn-link text-decoration-none" href="{{$context['panel_url']}}">{{$context['panel_label']}}</a><form method="POST" action="{{$context['logout_route']}}">@csrf<button class="btn btn-outline-secondary" type="submit">{{__('ui.sign_out')}}</button></form>
|
||||
@else<a class="btn btn-link text-decoration-none" href="{{route('earn.login')}}">{{__('earn_portal.login_title')}}</a><a class="btn btn-link text-decoration-none" href="{{route('login')}}">{{__('ui.sign_in')}}</a><a class="btn btn-primary" href="{{route('register')}}">{{__('ui.register')}}</a>@endif
|
||||
<x-locale-picker /><x-theme-picker /></div>
|
||||
<button class="navbar-toggler tp-public-menu-toggle d-lg-none ms-auto" type="button" data-bs-toggle="offcanvas" data-bs-target="#{{$menuId}}" aria-controls="{{$menuId}}" aria-expanded="false" aria-label="{{__('navigation.open_menu')}}"><span class="navbar-toggler-icon" aria-hidden="true"></span></button>
|
||||
</div></div></nav>
|
||||
<div class="offcanvas offcanvas-end tp-public-mobile-menu" tabindex="-1" id="{{$menuId}}" aria-labelledby="{{$menuId}}-label"><div class="offcanvas-header"><h2 class="offcanvas-title h5" id="{{$menuId}}-label">{{__('navigation.menu')}}</h2><button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="{{__('navigation.close_menu')}}"></button></div><div class="offcanvas-body d-flex flex-column gap-3">
|
||||
<a class="btn btn-link" href="{{route('earn')}}">{{__('earn.navigation')}}</a>
|
||||
@if($authenticated)<a class="btn btn-primary" href="{{$context['panel_url']}}">{{$context['panel_label']}}</a><form method="POST" action="{{$context['logout_route']}}">@csrf<button class="btn btn-outline-secondary w-100" type="submit">{{__('ui.sign_out')}}</button></form>
|
||||
@else<a class="btn btn-outline-primary" href="{{route('earn.login')}}">{{__('earn_portal.login_title')}}</a><a class="btn btn-outline-primary" href="{{route('login')}}">{{__('ui.sign_in')}}</a><a class="btn btn-primary" href="{{route('register')}}">{{__('ui.register')}}</a>@endif
|
||||
<div class="tp-public-mobile-preferences d-flex align-items-center gap-2 pt-2 border-top" aria-label="{{__('ui.preferences')}}"><x-locale-picker /><x-theme-picker /></div></div></div>
|
||||
@@ -0,0 +1,2 @@
|
||||
@props(['change'=>null])
|
||||
@if(is_null($change))<span class="badge text-bg-info">{{ __('customer.new') }}</span>@elseif($change>0)<span class="tp-rank-up" aria-label="{{ __('customer.improved_by',['count'=>$change]) }}">↑ {{ $change }}</span>@elseif($change<0)<span class="tp-rank-down" aria-label="{{ __('customer.declined_by',['count'=>abs($change)]) }}">↓ {{ abs($change) }}</span>@else<span class="text-body-secondary">— {{ __('customer.unchanged') }}</span>@endif
|
||||
@@ -0,0 +1,10 @@
|
||||
<div class="dropdown tp-theme-picker">
|
||||
<button class="btn btn-outline-secondary dropdown-toggle d-flex align-items-center gap-2" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="{{ __('ui.theme') }}">
|
||||
<span data-theme-current-icon aria-hidden="true">◐</span><span data-theme-current-label>{{ __('ui.system') }}</span>
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end shadow-sm">
|
||||
@foreach(['light' => ['☀', __('ui.light')], 'dark' => ['☾', __('ui.dark')], 'system' => ['◐', __('ui.system')]] as $value => [$icon, $label])
|
||||
<li><button class="dropdown-item d-flex align-items-center gap-2" type="button" data-theme-value="{{ $value }}" data-theme-label="{{ $label }}" data-theme-icon="{{ $icon }}"><span aria-hidden="true">{{ $icon }}</span><span>{{ $label }}</span><span class="ms-auto" data-theme-check hidden aria-hidden="true">✓</span></button></li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
Reference in New Issue
Block a user