@if(isset($live_session)) {{-- window.Echo (Reverb client) — sadece canlı ders sayfasında yükleniyor, normal /panel hiç Vite kullanmıyor, bu satır ona dokunmuyor. --}} @vite(['resources/js/app.js']) @endif @yield('title', t('site-title')) {{-- Bootstrap CSS --}} {{-- Fancybox (lightbox) --}} {{-- --}} {{-- Sayfa yükleme overlay: SVG render bitene kadar tam ekran gösterilir --}} @if(isset($live_session)) @endif {{-- Sayfa yükleme overlay --}}
Haritanız hesaplanıyor...
@php $loaderRequestedMain = preg_replace('/_transit$/', '', trim((string) request()->input('main_chart', ''))); if (!is_string($loaderRequestedMain)) { $loaderRequestedMain = ''; } @endphp {{-- Logout form'u sayfanın başında garantili olarak oluşturuluyor --}} @auth
@csrf
@endauth
@php $defaultKey = array_key_exists('natal', $charts) ? 'natal' : array_key_first($charts); $requestedMainRaw = trim((string) request()->input('main_chart', '')); $requestedMainKey = preg_replace('/_transit$/', '', $requestedMainRaw); if (!is_string($requestedMainKey)) { $requestedMainKey = ''; } $previewTarget = request()->input('preview_target'); $isPreviewFocused = !empty($previewTarget) && in_array( $previewTarget, ['natal', 'solar_return', 'secondary_progression_361', 'secondary_progression_naibod'], true ); // Sol ve Sağ anahtarları duruma göre belirle if ((isset($is_relationship_view) && $is_relationship_view) || (isset($is_dual_view) && $is_dual_view)) { // İLİŞKİ / ÇOKLU MODU // Bu modda sol/sağ paneller boş başlar; kullanıcı ilişkiye ait haritaları elle yerleştirir. $leftKeys = []; $rightKeys = []; // ✅ Uranyen ilişki: modalda "Uranyen" seçildiyse (rel_chart_layout) // ana harita 90° dial olarak açılır. if (request()->input('rel_chart_layout') === 'uranian' && array_key_exists('uranian_synastry', $charts)) { $defaultKey = 'uranian_synastry'; } else { $defaultKey = array_key_exists('synastry', $charts) ? 'synastry' : array_key_first($charts); } } else { // NORMAL MOD (Eski Hali) $leftKeys = ['solar_arc', 'solar_return']; $rightKeys = ['draconic', 'secondary_progression_naibod']; $defaultKey = array_key_exists('natal', $charts) ? 'natal' : array_key_first($charts); // URL ile açıkça istenen harita mevcutsa ilk render'da onu göster. if ($requestedMainKey !== '' && isset($charts[$requestedMainKey])) { $defaultKey = $requestedMainKey; } elseif (!empty($panelLayoutState) && is_array($panelLayoutState)) { $savedMain = trim((string) ($panelLayoutState['main'] ?? '')); if ($savedMain !== '' && isset($charts[$savedMain])) { $defaultKey = $savedMain; } } // Kayıtlı panel düzeni varsa, ilk render'ı da bu düzenden başlat. // Böylece loader sonrası "secondary -> heliocentric" geçişi yaşanmaz. if (!empty($panelLayoutState) && is_array($panelLayoutState)) { $normalizeKeys = function ($keys, $fallback, $preserveUnknown = false, $fillWithFallback = true) use ($charts) { $picked = []; if (is_array($keys)) { foreach ($keys as $k) { if (!is_string($k)) { continue; } $k = trim($k); if ($k === '' || in_array($k, $picked, true)) { continue; } if (!isset($charts[$k]) && !$preserveUnknown) { continue; } $picked[] = $k; if (count($picked) >= 2) { break; } } } if ($fillWithFallback) { foreach ($fallback as $k) { if (!isset($charts[$k]) || in_array($k, $picked, true)) { continue; } $picked[] = $k; if (count($picked) >= 2) { break; } } } return $picked; }; $hasSavedLeftSlots = array_key_exists('left', $panelLayoutState); $hasSavedRightSlots = array_key_exists('right', $panelLayoutState); $leftKeys = $normalizeKeys( $hasSavedLeftSlots ? ($panelLayoutState['left'] ?? []) : null, $leftKeys, true, !$hasSavedLeftSlots ); $rightKeys = $normalizeKeys( $hasSavedRightSlots ? ($panelLayoutState['right'] ?? []) : null, $rightKeys, true, !$hasSavedRightSlots ); } } // Preview'da ortadaki harita, seçilen master'a göre gelmeli. if ($isPreviewFocused) { $defaultKey = $previewTarget; if (in_array($previewTarget, ['secondary_progression_361', 'secondary_progression_naibod'], true)) { $rightKeys = ['draconic', 'natal']; } } if (in_array((string) $defaultKey, ['secondary_progression_361', 'secondary_progression_naibod'], true)) { $rightKeys = ['draconic', 'natal']; } // Kişi sekmeleri için değişkenler (toolbar'da kullanılır) $showPersonTabs = (!empty($is_relationship_view) || !empty($is_dual_view)) && !empty($charts[$defaultKey]['visual']['statsB'] ?? null); $personATitle = $relationshipA['title'] ?? ($dualA['title'] ?? t('person_a', 'Persona A')); $personBTitle = $relationshipB['title'] ?? ($dualB['title'] ?? t('person_b', 'Persona B')); $personAColor = $relationshipA['color'] ?? ($dualA['color'] ?? '#e91e63'); $personBColor = $relationshipB['color'] ?? ($dualB['color'] ?? '#1e88e5'); // Toolbar kaydet butonu koşulları $toolbarSaveIsSingle = request()->filled('birth_place_id'); $toolbarSaveIsRel = request()->filled('rel_date') && request()->filled('rel_time') && request()->filled('rel_lat') && request()->filled('rel_lon') && request()->filled('a_place_id') && request()->filled('b_place_id') && !request()->boolean('rel_saved'); $toolbarSaveIsDual = request()->boolean('dual_preview') && request()->filled('rel_date') && request()->filled('rel_lat') && request()->filled('dual_a_place_id') && request()->filled('dual_b_place_id') && !request()->boolean('dual_saved'); $showToolbarSave = $toolbarSaveIsSingle || $toolbarSaveIsRel || $toolbarSaveIsDual; $toolbarSaveLabel = $toolbarSaveIsRel ? t('save-relationship') : ($toolbarSaveIsDual ? t('save-dual-chart') : t('save-map')); $layoutAyanamsa = null; $layoutSiderealDasha = null; $layoutHarmonic = null; if (!empty($panelLayoutState) && is_array($panelLayoutState)) { $layoutAyanamsa = isset($panelLayoutState['ayanamsa']) ? (int) $panelLayoutState['ayanamsa'] : null; $layoutSiderealDasha = isset($panelLayoutState['sidereal_dasha']) ? (int) $panelLayoutState['sidereal_dasha'] : null; $layoutHarmonic = isset($panelLayoutState['harmonic']) ? (int) $panelLayoutState['harmonic'] : null; } $siderealAyanamsaValue = request()->filled('ayanamsa') ? (int) request('ayanamsa') : ($layoutAyanamsa ?? 0); $siderealDashaValue = request()->filled('sidereal_dasha') ? (int) request('sidereal_dasha') : ($layoutSiderealDasha ?? 1); $harmonicFactorValue = request()->filled('harmonic') ? (int) request('harmonic') : ($layoutHarmonic ?? 9); @endphp
{{-- Formu başlatıyoruz --}}
{{-- GİZLİ INPUTLAR (Mevcut yapın korundu) --}} @php $logoRedirectUrl = auth()->check() ? route('panel') : route('login'); @endphp {{-- TOOLBAR --}}
{{-- 1. LOGO --}} {{-- MOBİL: Sağa iten boşluk (hamburger + avatar sağda) --}} {{-- 2. BUTONLAR (MASAÜSTÜ - MOBİLDE GİZLİ) --}}
{{-- Yeni Harita Dropdown --}}
{{-- Ev Sistemi --}} {{--
--}} @if (empty($is_relationship_view) && empty($is_dual_view)) {{-- Haritalar (Offcanvas Drawer) - Abone olmayanlarda kredi bitince devre dışı --}} @php $canAccessMaps = $canAccessMapsDrawer ?? true; $isEnLocale = str_starts_with(strtolower(app()->getLocale()), 'en'); $isEsLocale = str_starts_with(strtolower(app()->getLocale()), 'es'); @endphp @endif {{-- ✅ ÇOKLU HARİTA: "Değiştir" (harita seç / iç-dış katman değiştir) butonu sadece 2-3 kişilik ilişki/çoklu haritada anlamlı — A/B kartları ve iç/dış katman değiştirme sadece 2 kişiyi bilir. 4 kişilik haritada (relationshipD dolu) bu buton kaldırılır. --}} @if (!empty($is_relationship_view) && empty($relationshipD))
@endif {{-- Haritalarım (panel içinde modal) --}} {{-- Transit --}} {{-- Yıldızlar --}} {{-- Rapor --}} @php $reportTooltip = ($isSubscriber ?? false) ? t('unlimited_reports_subscribed', 'Informes ilimitados (suscrito)') : ((($reportCreditsRemaining ?? 0) > 0) ? t('reports_remaining_count', 'Informes restantes: :count', ['count' => $reportCreditsRemaining]) : (($hasDailyFreeReport ?? false) ? t('today_one_free_report', 'Hoy 1 informe gratuito') : t('report_limit_exceeded', 'Límite de informes agotado'))); @endphp {{-- Yorum Al --}} @if (!($isSubscriber ?? false)) {{-- Abone Ol (yorum al butonunun yanında, sadece abone değilse) --}} {{ t('subscribe') }} @endif {{-- Paket Al --}} {{-- Paket Al --}} @if (empty($is_relationship_view) && empty($is_dual_view)) {{-- Timery (Soru Sor) --}} @endif {{-- Yıllık --}} {{-- --}} @php $rectificationLabel = t('rectification', 'Rectification'); $electionalLabel = t('electional_astrology', 'Astrología Eleccional'); @endphp {{-- Kaydet butonu (önizleme modunda) – harita seçin yanında --}}
{{-- 4. MOBİL: Hızlı Aksiyonlar --}}
{{-- ✅ Mobilde de masaüstündeki gibi 3 seçenek sunulur: Yeni Harita / Çoklu Harita / İlişki Haritası (önceden buton doğrudan newChartModal açıyor, ilişki/çoklu seçilemiyordu). --}}
{{-- 4. AVATAR (sadece masaüstü) --}}
{{-- MOBİL: Soldan açılan menü – scroll yok, ızgara + kompakt profil --}}
{{-- Harita İşlemleri: 2x4 ızgara, scroll yok --}}
{{ t('map-operations') }}
@if (empty($is_relationship_view) && empty($is_dual_view)) @php $canAccessMapsSidebar = $canAccessMapsDrawer ?? true; $isEnLocaleSidebar = str_starts_with(strtolower(app()->getLocale()), 'en'); $isEsLocaleSidebar = str_starts_with(strtolower(app()->getLocale()), 'es'); @endphp
@endif @if (!empty($is_relationship_view) && empty($relationshipD))
@endif
@if (empty($is_relationship_view) && empty($is_dual_view))
@endif
{{-- Yan sekmede panel açık - buradan mı devam et? --}} {{-- Rapor Hakkı Bitti Modal --}} {{-- Yorum Al Modal --}} {{-- Natal Yorum Raporu Sonuç Modalı --}} {{-- Panel toast bildirimi (sağ üst) --}}
{{-- Rapor hazırlanma bildirim banner'ı --}}
{{-- Loading durumu --}}
{{ t('report-is-being-prepared') }}
{{ t('continue-using-the-panel') }}
0%
{{-- Hazır durumu --}}
{{ t('report-is-ready') }}
{{ t('click-to-view') }}
{{-- SOL: Haritalar --}}
{{-- SOL küçükler --}}
@php $getChartIcon = function($chartKey) { $ck = strtolower((string)$chartKey); if (str_contains($ck, 'solar_return')) return 'fa-solid fa-sun'; if (str_contains($ck, 'lunar_return') || str_contains($ck, 'moon')) return 'fa-solid fa-moon'; if (str_contains($ck, 'solar_arc')) return 'fa-solid fa-bolt'; if (str_contains($ck, 'progression') || str_contains($ck, 'naibod')) return 'fa-solid fa-hourglass-half'; if (str_contains($ck, 'synastry')) return 'fa-solid fa-heart'; if (str_contains($ck, 'composite')) return 'fa-solid fa-circle-nodes'; if (str_contains($ck, 'davison')) return 'fa-solid fa-link'; if (str_contains($ck, 'transit')) return 'fa-solid fa-arrows-rotate'; if (str_contains($ck, 'horary')) return 'fa-solid fa-question'; if (str_contains($ck, 'draconic')) return 'fa-solid fa-dragon'; if (str_contains($ck, 'natal')) return 'fa-solid fa-compass'; if (str_contains($ck, 'harmonic')) return 'fa-solid fa-wave-square'; if (str_contains($ck, 'profection')) return 'fa-solid fa-rotate'; return 'fa-solid fa-star'; }; @endphp
@if ($isPreviewFocused) @endif @foreach ($leftKeys as $k) @php $leftHasChart = isset($charts[$k]); $leftTitle = $leftHasChart ? ($charts[$k]['title'] ?? $k) : ucwords(str_replace('_', ' ', (string) $k)); @endphp
{{ $leftTitle }}
{{ t('drag') }}
{{ t('click-to-view', 'Görüntülemek için tıklayın') }}
@endforeach
{{-- ORTA büyük --}}
{{-- ✅ ÜST BİLGİ (Konum / Tarih / Saat / TZ / LatLon) --}}
@if (!empty($is_relationship_view)) {{-- İLİŞKİ: A sol üst köşe, B sağ üst köşe (normal mod gibi kompakt) --}} @php $dotColorA = $relationshipA['color'] ?? '#e91e63'; $dotColorB = $relationshipB['color'] ?? '#1e88e5'; $dotColorC = $relationshipC['color'] ?? '#16a34a'; $dotColorD = $relationshipD['color'] ?? '#f59e0b'; @endphp {{-- Kişi A: Sol üst köşe — tıklanınca alt istatistikler Kişi A'ya geçer --}}
{{ $relationshipA['title'] ?? 'Persona A' }}
{{ !empty($relationshipA['date'] ?? null) ? \Carbon\Carbon::parse($relationshipA['date'])->format('d-m-Y') : '-' }}
{{ $relationshipA['time'] ?? '-' }}
{{ $relationshipA['cityName'] ?? '' }}
{{ $houseSystems[$relationshipA['house_system'] ?? ($houseSystem ?? 'P')] ?? 'Placidus' }}
{{ t('details', 'detalles') }}
{{-- Kişi B: Sağ üst köşe — tıklanınca alt istatistikler Kişi B'ye geçer --}}
{{ $relationshipB['title'] ?? 'Persona B' }}
{{ !empty($relationshipB['date'] ?? null) ? \Carbon\Carbon::parse($relationshipB['date'])->format('d-m-Y') : '-' }}
{{ $relationshipB['time'] ?? '-' }}
{{ $relationshipB['cityName'] ?? '' }}
{{ $houseSystems[$relationshipB['house_system'] ?? ($houseSystem ?? 'P')] ?? 'Placidus' }}
{{ t('details', 'detalles') }}
{{-- ✅ ÇOKLU HARİTA: Kişi C — Sol alt köşe (sadece 3-4 kişilik haritada dolu) --}} @if (!empty($relationshipC))
{{ $relationshipC['title'] ?? 'Persona C' }}
{{ !empty($relationshipC['date'] ?? null) ? \Carbon\Carbon::parse($relationshipC['date'])->format('d-m-Y') : '-' }}
{{ $relationshipC['time'] ?? '-' }}
{{ $relationshipC['cityName'] ?? '' }}
{{ $houseSystems[$relationshipC['house_system'] ?? ($houseSystem ?? 'P')] ?? 'Placidus' }}
{{ t('details', 'detalles') }}
@endif {{-- ✅ ÇOKLU HARİTA: Kişi D — Sağ alt köşe (sadece 4 kişilik haritada dolu) --}} @if (!empty($relationshipD))
{{ $relationshipD['title'] ?? 'Persona D' }}
{{ !empty($relationshipD['date'] ?? null) ? \Carbon\Carbon::parse($relationshipD['date'])->format('d-m-Y') : '-' }}
{{ $relationshipD['time'] ?? '-' }}
{{ $relationshipD['cityName'] ?? '' }}
{{ $houseSystems[$relationshipD['house_system'] ?? ($houseSystem ?? 'P')] ?? 'Placidus' }}
{{ t('details', 'detalles') }}
@endif @elseif (!empty($is_dual_view)) {{-- ÇOKLU: A sol üst köşe, B sağ üst köşe --}} @php $dotColorA = $dualA['color'] ?? '#e91e63'; $dotColorB = $dualB['color'] ?? '#1e88e5'; @endphp {{-- Kişi A: Sol --}}
{{ $dualA['title'] ?? 'Persona A' }}
{{ !empty($dualA['date'] ?? null) ? \Carbon\Carbon::parse($dualA['date'])->format('d-m-Y') : '-' }}
{{ $dualA['time'] ?? '-' }}
{{ $dualA['cityName'] ?? '' }}
{{ t('details', 'detalles') }}
{{-- Kişi B: Sağ --}}
{{ $dualB['title'] ?? 'Persona B' }}
{{ !empty($dualB['date'] ?? null) ? \Carbon\Carbon::parse($dualB['date'])->format('d-m-Y') : '-' }}
{{ $dualB['time'] ?? '-' }}
{{ $dualB['cityName'] ?? '' }}
{{ t('details', 'detalles') }}
@else {{-- TEKİL HARİTA: Sol üst köşe dikey bilgi kartı --}} @php $dotColor = match ($chartGender ?? null) { 'male' => '#3b82f6', 'female' => '#ec4899', default => '#479483', }; $isDefaultTimery = in_array($defaultKey ?? '', ['horary', 'horary_transit'], true); $defaultTimeryRaw = null; if ($isDefaultTimery) { $defaultTimeryRaw = $charts['horary']['raw'] ?? null; if (!is_array($defaultTimeryRaw)) { $defaultTimeryRaw = null; } } $isDefaultSidereal = in_array($defaultKey ?? '', ['sidereal', 'sidereal_transit'], true); $defaultSiderealAyanamsaName = null; $defaultSiderealAyanamsaFormatted = null; $defaultSiderealDChartLabel = null; $defaultSiderealDChartName = null; if ($isDefaultSidereal) { $defaultSiderealRaw = $charts['sidereal']['raw'] ?? null; if (is_array($defaultSiderealRaw)) { $defaultSiderealAyanamsaName = $defaultSiderealRaw['ayanamsa']['name'] ?? null; $defaultSiderealAyanamsaFormatted = $defaultSiderealRaw['ayanamsa']['formatted'] ?? null; $defaultSiderealDChartLabel = $defaultSiderealRaw['d_chart']['label'] ?? null; $defaultSiderealDChartName = $defaultSiderealRaw['d_chart']['name'] ?? null; } } $defaultTimeryDate = null; $defaultTimeryTime = null; $defaultTimeryDateTime = isset($defaultTimeryRaw['horary_datetime']) ? trim((string) $defaultTimeryRaw['horary_datetime']) : ''; if ($defaultTimeryDateTime !== '' && preg_match('/^(\d{2}\.\d{2}\.\d{4})\s+(\d{2}:\d{2})/', $defaultTimeryDateTime, $dateMatches)) { $defaultTimeryDate = $dateMatches[1]; $defaultTimeryTime = $dateMatches[2]; } $defaultTimeryLocation = isset($defaultTimeryRaw['horary_location']) ? trim((string) $defaultTimeryRaw['horary_location']) : ''; $defaultTimeryQuestion = isset($defaultTimeryRaw['horary_question']) ? preg_replace('/\s+/u', ' ', trim((string) $defaultTimeryRaw['horary_question'])) : ''; @endphp
{{ $ownerName ?? t('person', 'Persona') }}
{{ !empty($date) ? \Carbon\Carbon::parse($date)->format('d-m-Y') : '-' }}
{{ !empty($is_time_unknown) ? t('unknown', 'Desconocido') : ($time ?? '-') }}
{{ $cityName ?? '' }}
@php $defaultChartHouseLabel = $charts[$defaultKey]['visual']['house_system_label'] ?? null; $houseName = $defaultChartHouseLabel ?? (isset($houseSystems[$houseSystem ?? 'P']) ? $houseSystems[$houseSystem ?? 'P'] : $houseSystem ?? 'Placidus'); @endphp {{ $houseName }}
{{ t('horary-question', 'Pregunta Timeria') }}
{{ $defaultTimeryQuestion !== '' ? $defaultTimeryQuestion : '-' }}
{{ $defaultTimeryDate ?: '-' }}
{{ $defaultTimeryTime ?: '-' }}
{{ $defaultTimeryLocation !== '' ? $defaultTimeryLocation : '-' }}
Ayanamsha : {{ $defaultSiderealAyanamsaName ?: '-' }}
Dasha : @if ($defaultSiderealDChartLabel) {{ $defaultSiderealDChartLabel }}{{ $defaultSiderealDChartName ? ' (' . $defaultSiderealDChartName . ')' : '' }} @else - @endif
{{ t('degree', 'Degree') }} : {{ $defaultSiderealAyanamsaFormatted ?: '-' }}
@php $progressionKeys = [ 'profection', 'profection_transit', 'solar_arc', 'solar_arc_single', 'solar_arc_transit', 'solar_arc_single_transit', 'solar_return', 'solar_return_transit', 'secondary_progression_361', 'secondary_progression_361_transit', 'secondary_progression_naibod', 'secondary_progression_naibod_transit', ]; $isDefaultProgression = in_array($defaultKey ?? '', $progressionKeys, true); $defChart = $charts[$defaultKey ?? ''] ?? ($charts['profection'] ?? []); $defProfCarbon = !empty($target_date) ? \Carbon\Carbon::parse($target_date) : \Carbon\Carbon::now(); $defaultTargetDateStr = $defProfCarbon->format('d M Y'); $pLabel1 = t('progression-date', 'Progression Date') . ' :'; $pVal1 = $defChart['progression_target_date'] ?? $defChart['profection_target_date'] ?? $defaultTargetDateStr; $pIcon1 = 'fa-regular fa-calendar-days'; $pLabel2 = t('progression-key', 'Progression Key') . ' :'; $pVal2 = $defChart['progression_key'] ?? $defChart['profection_key'] ?? '30° per 1 year'; $pIcon2 = 'fa-solid fa-key'; $pLabel3 = t('progression-arc', 'Progression Arc') . ' :'; $pVal3 = $defChart['progression_arc'] ?? $defChart['profection_arc_formatted'] ?? '-'; $pIcon3 = 'fa-solid fa-arrows-spin'; if (str_contains($defaultKey ?? '', 'solar_return')) { $pLabel1 = t('return-date', 'Return Date') . ' :'; $pLabel2 = t('return-year', 'Return Year') . ' :'; $pVal2 = (string) ($defChart['sr_year'] ?? ($sr_year ?? $defProfCarbon->year)); $pIcon2 = 'fa-solid fa-sun'; $pLabel3 = t('return-age', 'Return Age') . ' :'; $pIcon3 = 'fa-solid fa-user-clock'; } if ($pVal3 === '-' && in_array($defaultKey ?? '', ['profection', 'profection_transit'], true) && !empty($date) && !empty($target_date)) { try { $bUtc = \Carbon\Carbon::parse($date . ' ' . ($time ?? '12:00:00'))->utc(); $tUtc = \Carbon\Carbon::parse($target_date . ' ' . ($target_time ?? $time ?? '12:00:00'))->utc(); $dDiff = $bUtc->floatDiffInDays($tUtc); $pArc = ($dDiff / 365.242199) * 30; $pOff = fmod($pArc, 360); if ($pOff < 0) $pOff += 360; $pDeg = (int) floor($pOff); $pMin = (int) floor(($pOff - $pDeg) * 60); $pVal3 = sprintf("%d°%02d'", $pDeg, $pMin); } catch (\Throwable $e) { $pVal3 = '-'; } } @endphp
{{ $pLabel1 }} [{{ $pVal1 ?: '-' }}]
{{ $pLabel2 }} {{ $pVal2 }}
{{ $pLabel3 }} {{ $pVal3 ?: '-' }}
@php $isDefaultTransit = in_array($defaultKey ?? '', ['natal_transit'], true); $defTransitDate = $target_date ?? date('Y-m-d'); try { $defTransitDateFormatted = \Carbon\Carbon::parse($defTransitDate)->format('d-m-Y'); } catch (\Throwable $e) { $defTransitDateFormatted = $defTransitDate; } $defTransitTimeFormatted = substr($target_time ?? date('H:i'), 0, 5); $defTransitCity = request('transit_city', request('target_city', '')) ?: ($transit_city ?? $cityName ?? ''); @endphp
{{ t('transit', 'Transit') }}
{{ $defTransitDateFormatted }}
{{ $defTransitTimeFormatted }}
{{ $defTransitCity }}
@endif
{{ $charts[$defaultKey]['title'] ?? t('natal-chart', 'Natal Chart') }}
@if (isset($charts[$defaultKey])) @if (!empty($charts[$defaultKey]['visual'])) {!! app(\App\Services\ChartVisualizerService::class)->renderSvgForChartKey($defaultKey, is_array($charts[$defaultKey]['raw'] ?? null) ? $charts[$defaultKey]['raw'] : [], $charts[$defaultKey]['visual'] ?? []) !!} @elseif (!empty($charts[$defaultKey]['svg'])) {!! $charts[$defaultKey]['svg'] !!} @endif @endif
{{-- Local Space Leaflet harita konteynırı (varsayılan gizli) --}}
{{-- Paylaş Butonu (Sağ Alt Köşe) --}}
{{-- SAĞ küçükler --}}
@if ($isPreviewFocused) @endif @foreach ($rightKeys as $k) @php $rightHasChart = isset($charts[$k]); $rightTitle = $rightHasChart ? ($charts[$k]['title'] ?? $k) : ucwords(str_replace('_', ' ', (string) $k)); @endphp
{{ $rightTitle }}
{{ t('drag') }}
{{ t('click-to-view', 'Görüntülemek için tıklayın') }}
@endforeach
@php $showPersonTabs = (!empty($is_relationship_view) || !empty($is_dual_view)) && !empty($charts[$defaultKey]['visual']['statsB'] ?? null); $personATitle = $relationshipA['title'] ?? (null ?? (isset($dualA['title']) ? $dualA['title'] : t('person-a', 'Persona A'))); $personBTitle = $relationshipB['title'] ?? (null ?? (isset($dualB['title']) ? $dualB['title'] : t('person-b', 'Persona B'))); $personAColor = $relationshipA['color'] ?? (null ?? (isset($dualA['color']) ? $dualA['color'] : '#e91e63')); $personBColor = $relationshipB['color'] ?? (null ?? (isset($dualB['color']) ? $dualB['color'] : '#1e88e5')); $statsA = $charts[$defaultKey]['visual']['statsA'] ?? null; $statsB = $charts[$defaultKey]['visual']['statsB'] ?? null; // ✅ ÇOKLU HARİTA: 3. ve 4. kişi (sadece varsa dolu). $statsC = $charts[$defaultKey]['visual']['statsC'] ?? null; $statsD = $charts[$defaultKey]['visual']['statsD'] ?? null; @endphp {{-- Mobil Harita Seç --}}
@php $isSubscriber = $isSubscriber ?? false; $shouldBlurContent = $isPreviewFocused ? true : !($canViewContentClear ?? true); $panelTimeGate = $isPreviewFocused ? false : !$isSubscriber; $initialBlurForTimeGate = false; // AI Chat, harita/rapor içeriğinden ayrı bir kapıya sahip: abone olsa bile // Token'ı bitmiş/hiç olmayan kullanıcıya "abone ol" değil "Token satın al" gösterilir. $aiChatNeedsTokens = $isSubscriber && (($chatWordsRemaining ?? 0) <= 0); $aiChatShouldBlur = $isPreviewFocused ? true : (!$isSubscriber || $aiChatNeedsTokens); @endphp
@if ($shouldBlurContent || $panelTimeGate) @endif {{-- MOBİL: Aşağı açılır toggle butonu (sadece
{{-- /person-detail-section --}}
{{-- SAĞ: TAB'lı Panel --}}
{{-- MOBİL: 3'lü Burç Kutucukları (Güneş - Yükselen - Ay) --}} @php $mbDefVisual = $charts[$defaultKey]['visual'] ?? []; $mbPlanetTable = $mbDefVisual['planetTable'] ?? []; $mbHouseTable = $mbDefVisual['houseTable'] ?? []; $mbSunSign = '-'; $mbMoonSign = '-'; $mbAscSign = '-'; foreach ($mbPlanetTable as $pRow) { $pKey = strtolower($pRow['key'] ?? ''); $pName = strtolower($pRow['name'] ?? ''); if ($pKey === 'sun' || $pName === 'güneş' || $pName === 'gunes' || $pName === 'sun' || $pName === 'sol') { $mbSunSign = $pRow['sign_name'] ?? '-'; } if ($pKey === 'moon' || $pName === 'ay' || $pName === 'moon' || $pName === 'luna') { $mbMoonSign = $pRow['sign_name'] ?? '-'; } } if (!empty($mbHouseTable)) { foreach ($mbHouseTable as $hRow) { $hName = (string) ($hRow['name'] ?? ''); if (str_starts_with($hName, '1.') || $hName === '1. Ev' || $hName === 'ASC' || ($hRow['house_no'] ?? 0) === 1) { $mbAscSign = $hRow['sign_name'] ?? '-'; break; } } if ($mbAscSign === '-' && isset($mbHouseTable[0]['sign_name'])) { $mbAscSign = $mbHouseTable[0]['sign_name']; } } if ($mbSunSign === '-' && !empty($charts['natal']['visual']['planetTable'])) { foreach ($charts['natal']['visual']['planetTable'] as $pRow) { $pKey = strtolower($pRow['key'] ?? ''); $pName = strtolower($pRow['name'] ?? ''); if ($pKey === 'sun' || $pName === 'güneş' || $pName === 'gunes' || $pName === 'sun' || $pName === 'sol') { $mbSunSign = $pRow['sign_name'] ?? '-'; } if ($pKey === 'moon' || $pName === 'ay' || $pName === 'moon' || $pName === 'luna') { $mbMoonSign = $pRow['sign_name'] ?? '-'; } } } if ($mbAscSign === '-' && !empty($charts['natal']['visual']['houseTable'][0]['sign_name'])) { $mbAscSign = $charts['natal']['visual']['houseTable'][0]['sign_name']; } @endphp
{{ t('sun-sign-label', 'Burcunuz') }} {{ $mbSunSign }}
{{ t('ascendant-sign-label', 'Yükseleniniz') }} {{ $mbAscSign }}
{{ t('moon-sign-label', 'Ay Burcunuz') }} {{ $mbMoonSign }}
{{-- MOBİL: Aşağı açılır toggle butonu (sadece
{{-- /.panel-page-main --}} {{-- Panel Telif / Copyright --}} @include('frontend.panel.partials.chart-save') {{-- Gizli person-tab UL: JS syncPersonDetailPanes() için state tutucu --}} @if ($showPersonTabs) @endif {{-- ANA LAYOUT --}} {{-- Modal burada da kullanılacaksa include edebilirsin --}} @include('frontend.panel.partials.fixed-stars-modal') @include('frontend.panel.partials.new-chart-modal') @include('frontend.panel.partials.my-charts-modal') @include('frontend.panel.partials.relationship-modal') @include('frontend.panel.partials.dual-chart-modal') @include('frontend.panel.partials.horary-modal') @include('frontend.panel.partials.transit-modal') @include('frontend.panel.partials.rectification-modal') @include('frontend.panel.partials.electional-modal') @if (!empty($is_relationship_view)) @include('frontend.panel.partials.relationship-chart-picker-modal') @endif {{-- Haritalar Offcanvas (Sağdan Açılır Panel) --}} @include('frontend.panel.partials.all-chart-modal') {{-- Mobil İnteraktif Onboarding Rehberi --}} @include('frontend.panel.partials.mobile-tutorial') @if (empty($is_relationship_view) && empty($is_dual_view)) {{-- Harita Kombinasyonları (bi-wheel) modal --}} @include('frontend.panel.partials.chart-combo-modal') @endif {{-- Social giriş: eksik profil bilgilerini tamamlama popup'ı --}} @auth @if(auth()->user()->provider) @include('frontend.panel.partials.complete-social-profile-modal') @endif @endauth {{-- Bootstrap JS --}} @if (!empty($is_relationship_view)) @endif @if(isset($live_session)) @include('frontend.panel.partials.live-session-controls') @endif {{-- Mobil sidebar: tetikleyici butonlar ve modal/offcanvas tıklanınca kapat --}} {{-- Bootstrap Tooltip Initialize --}} {{-- Yan sekme algılama: panel birden fazla sekmede açılırsa "buradan mı devam?" sorusu --}} @auth @php $u = auth()->user(); $needsEmailVerify = $u && method_exists($u, 'hasVerifiedEmail') ? !$u->hasVerifiedEmail() : empty($u?->email_verified_at); @endphp @if ($needsEmailVerify)
{{ t('email-verify-title') }}
{{ t('email-verify-body') }}
@endif @endauth