File: /home/u756937133/domains/swingersnest.com/public_html/resources/views/layouts/dashboard.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}" class="scroll-smooth">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
@php
$siteSettings = \App\Models\SiteSetting::getSettings();
$siteTitle = $siteSettings->site_title ?? config('app.name', 'swingers nest');
$siteDescription = $siteSettings->site_description ?? config('app.meta_description', 'swingers nest');
$siteKeywords = $siteSettings->site_keywords ?? '';
@endphp
<title>@yield('title', $siteTitle)</title>
<meta name="description" content="@yield('meta_description', $siteDescription)">
@if($siteKeywords)
<meta name="keywords" content="{{ $siteKeywords }}">
@endif
<meta name="csrf-token" content="{{ csrf_token() }}">
{{-- Resource Hints for Performance --}}
<link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
<link rel="dns-prefetch" href="https://rsms.me">
<link rel="dns-prefetch" href="https://ui-avatars.com">
{{-- Favicon & Icon --}}
<link rel="icon" type="image/svg+xml" href="{{ asset('assets/logonew.png') }}">
<!-- @if($siteSettings->site_favicon)
<link rel="icon" type="image/x-icon" href="{{ asset($siteSettings->site_favicon) }}">
@else
<link rel="icon" type="image/svg+xml" href="{{ asset('logonew.png') }}">
@endif -->
@if($siteSettings->site_icon)
<link rel="apple-touch-icon" href="{{ asset($siteSettings->site_icon) }}">
@elseif($siteSettings->site_favicon)
<link rel="apple-touch-icon" href="{{ asset($siteSettings->site_favicon) }}">
@else
<link rel="apple-touch-icon" href="{{ asset('favicon.svg') }}">
@endif
{{-- Open Graph Meta Tags --}}
@if($siteSettings->og_title || $siteSettings->og_description)
<meta property="og:type" content="{{ $siteSettings->og_type ?? 'website' }}">
<meta property="og:title" content="{{ $siteSettings->og_title ?? $siteTitle }}">
<meta property="og:description" content="{{ $siteSettings->og_description ?? $siteDescription }}">
@if($siteSettings->og_image)
<meta property="og:image" content="{{ url(asset($siteSettings->og_image)) }}">
@endif
@if($siteSettings->og_site_name)
<meta property="og:site_name" content="{{ $siteSettings->og_site_name }}">
@endif
@if($siteSettings->og_url)
<meta property="og:url" content="{{ $siteSettings->og_url }}">
@endif
@endif
{{-- Twitter Card Meta Tags --}}
@if($siteSettings->twitter_title || $siteSettings->twitter_description)
<meta name="twitter:card" content="{{ $siteSettings->twitter_card_type ?? 'summary_large_image' }}">
<meta name="twitter:title" content="{{ $siteSettings->twitter_title ?? $siteTitle }}">
<meta name="twitter:description" content="{{ $siteSettings->twitter_description ?? $siteDescription }}">
@if($siteSettings->twitter_image)
<meta name="twitter:image" content="{{ url(asset($siteSettings->twitter_image)) }}">
@elseif($siteSettings->og_image)
<meta name="twitter:image" content="{{ url(asset($siteSettings->og_image)) }}">
@endif
@endif
{{-- Header Scripts (GSC, Analytics, etc.) --}}
@if($siteSettings->header_scripts)
{!! $siteSettings->header_scripts !!}
@endif
{{-- Custom CSS --}}
@if($siteSettings->custom_css)
<style>
{!! $siteSettings->custom_css !!}
</style>
@endif
<!-- Remix Icons CDN with preload -->
<link
rel="preload"
href="https://cdn.jsdelivr.net/npm/remixicon@4.7.0/fonts/remixicon.css"
as="style"
onload="this.onload=null;this.rel='stylesheet'"
>
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/remixicon@4.7.0/fonts/remixicon.css"></noscript>
<!-- Google Fonts: Combined and optimized with font-display: swap -->
<link
rel="preload"
href="https://fonts.googleapis.com/css2?family=Arimo:wght@400;500;600;700&family=Leckerli+One&family=Grand+Hotel&display=swap"
as="style"
onload="this.onload=null;this.rel='stylesheet'"
>
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Arimo:wght@400;500;600;700&family=Leckerli+One&family=Grand+Hotel&display=swap"></noscript>
<!-- <link rel="stylesheet" href="{{ asset('public/style.css') }}"> -->
@if(request()->routeIs('home') || request()->is('/'))
<!-- <script src="https://cdn.tailwindcss.com"></script> -->
<!-- //Hasseb don't use CDN , run NPM run dev its auto enable all tailwind classes -->
@endif
<style>
/* Ensure user dropdown hover works */
.group:hover #user-dropdown-menu,
#user-dropdown-menu:hover {
opacity: 1 !important;
visibility: visible !important;
}
</style>
<script>
// Initialize theme immediately to prevent flash of wrong theme
// Default to 'dark' mode for new visitors - dark mode is the default theme
(function() {
const storedTheme = localStorage.getItem('theme');
const theme = storedTheme || 'dark'; // Default to dark mode
if (theme === 'dark') {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
})();
// Global auth flag
window.isAuthenticated = @json(auth()->check());
</script>
<!-- Inter font - optimized with preload -->
<link
rel="preload"
href="https://rsms.me/inter/inter.css"
as="style"
onload="this.onload=null;this.rel='stylesheet'"
>
<noscript><link rel="stylesheet" href="https://rsms.me/inter/inter.css"></noscript>
@vite(['resources/css/app.css', 'resources/js/app.js'])
@stack('head')
</head>
<body class="bg-gray-50 dark:bg-black">
<!-- Header -->
@include('partials.header')
<div class="flex flex-col md:flex-row gap-4 p-2 sm:p-4 bg-gray-50 dark:bg-black min-h-screen pt-16 sm:pt-20">
<!-- Sidebar -->
@include('components.sidebar.profile-sidebar')
<!-- Main Content -->
<main class="flex-1 w-full min-w-0">
@yield('content')
</main>
</div>
@include('partials.footer')
@stack('scripts')
<!-- Global Settings Toggle Script -->
<script>
document.addEventListener('DOMContentLoaded', function() {
const settingsToggleBtn = document.getElementById('settings-toggle-btn');
if (settingsToggleBtn) {
// Remove any existing listeners
const newBtn = settingsToggleBtn.cloneNode(true);
settingsToggleBtn.parentNode.replaceChild(newBtn, settingsToggleBtn);
newBtn.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
// Check if we're on the profile page (index or edit)
const isProfilePage = window.location.pathname.includes('/account/profile');
const isEditPage = window.location.pathname.includes('/account/profile/edit');
if (isProfilePage && !isEditPage) {
// If on profile index page, toggle sidebar
const sidebar = document.getElementById('settings-sidebar');
if (sidebar) {
const isOpen = sidebar.style.width !== '0px' && sidebar.style.width !== '0';
if (isOpen) {
// Close sidebar
sidebar.style.width = '0';
sidebar.style.minWidth = '0';
sidebar.style.overflow = 'hidden';
} else {
// Open sidebar
sidebar.style.width = '320px'; // w-80 = 320px
sidebar.style.minWidth = '320px';
sidebar.style.overflow = 'auto';
}
} else {
// Fallback: use global function if available
if (typeof window.toggleSettingsSidebar === 'function') {
window.toggleSettingsSidebar();
}
}
// Don't navigate, just toggle sidebar
return;
} else {
// If on edit page or not on profile page, navigate to profile page and open sidebar
window.location.href = '{{ route("account.profile") }}?settings=true';
}
});
}
});
</script>
</body>
</html>