T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/lavocat.ca/private_html/src/pages/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/lavocat.ca/private_html/src/pages/_app.tsx
import '@/styles/globals.css';
import type { AppProps } from 'next/app';
import { SessionProvider, useSession } from 'next-auth/react';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { useRouter } from 'next/router';
import { useEffect } from 'react';
import ErrorBoundary from '@/components/ErrorBoundary';
import { ThemeProvider } from '@/context/ThemeContext';
import ThemeCustomizer from '@/components/ThemeCustomizer';
import Layout from '@/components/Layout';
import { ChakraProvider, defaultSystem } from '@chakra-ui/react';

import { Toaster } from 'react-hot-toast';
import { registerServiceWorker } from '@/utils/serviceWorker';
import Head from 'next/head';
import AuthenticatedWebSocketProvider from '@/components/AuthenticatedWebSocketProvider';
import { PublicNotificationProvider } from '@/context/PublicNotificationContext';
import { LanguageProvider } from '@/context/LanguageContext';
import CaseUpdateBanner from '@/components/CaseUpdateBanner';
import SmartEngagement from '@/components/SmartEngagement';
// import IncomingCallNotification from '@/components/IncomingCallNotification'; // Removed for now
// import SimpleVideoCall from '@/components/SimpleVideoCall'; // Removed for now


// Disable the default Next.js loading indicator
NProgress.configure({ showSpinner: false });

function SessionRefresh() {
  const { data: session, update } = useSession();

  useEffect(() => {
    // Refresh session on page load to ensure impersonation state is current
    if (session?.user) {
      console.log('🔄 App - Refreshing session on page load');
      update({ trigger: 'update' });
    }
  }, []); // Only run once on mount

  return null;
}

function App({ Component, pageProps: { session, ...pageProps } }: AppProps) {
  const router = useRouter();

  useEffect(() => {
    registerServiceWorker();
  }, []);

  useEffect(() => {
    const handleStart = () => NProgress.start();
    const handleStop = () => NProgress.done();
    router.events.on('routeChangeStart', handleStart);
    router.events.on('routeChangeComplete', handleStop);
    router.events.on('routeChangeError', handleStop);
    return () => {
      router.events.off('routeChangeStart', handleStart);
      router.events.off('routeChangeComplete', handleStop);
      router.events.off('routeChangeError', handleStop);
    };
  }, [router]);

  return (
    <ErrorBoundary>
      <ChakraProvider value={defaultSystem}>
        <SessionProvider session={session}>
          <SessionRefresh />
          <ThemeProvider>
            <LanguageProvider>
              <PublicNotificationProvider>
                <AuthenticatedWebSocketProvider>
                <Head>
                  <meta charSet="utf-8" />
                  <meta name="viewport" content="width=device-width, initial-scale=1" />
                  <link rel="icon" href="/favicon.ico" />
                  {/* Ensure CSS is loaded */}
                  <style jsx global>{`
                    /* Fallback styles in case Tailwind doesn't load */
                    .bg-blue-600 { background-color: #2563eb !important; }
                    .text-white { color: #ffffff !important; }
                    .px-8 { padding-left: 2rem !important; padding-right: 2rem !important; }
                    .py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
                    .rounded-xl { border-radius: 0.75rem !important; }
                    .hover\\:bg-blue-700:hover { background-color: #1d4ed8 !important; }
                    .transition-all { transition-property: all !important; }
                    .transform { transform: translateZ(0) !important; }
                    .hover\\:scale-105:hover { transform: scale(1.05) !important; }
                    .border-2 { border-width: 2px !important; }
                    .border-blue-600 { border-color: #2563eb !important; }
                    .text-blue-600 { color: #2563eb !important; }
                    .hover\\:bg-blue-50:hover { background-color: #eff6ff !important; }
                    .min-h-screen { min-height: 100vh !important; }
                    .bg-gradient-to-br { background-image: linear-gradient(to bottom right, var(--tw-gradient-stops)) !important; }
                    .from-slate-50 { --tw-gradient-from: #f8fafc !important; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgba(248, 250, 252, 0)) !important; }
                    .via-white { --tw-gradient-stops: var(--tw-gradient-from), #ffffff, var(--tw-gradient-to, rgba(255, 255, 255, 0)) !important; }
                    .to-blue-50 { --tw-gradient-to: #eff6ff !important; }
                    .bg-white { background-color: #ffffff !important; }
                    .backdrop-blur-md { backdrop-filter: blur(12px) !important; }
                    .border-b { border-bottom-width: 1px !important; }
                    .border-slate-200 { border-color: #e2e8f0 !important; }
                    .sticky { position: sticky !important; }
                    .top-0 { top: 0px !important; }
                    .z-50 { z-index: 50 !important; }
                    .max-w-7xl { max-width: 80rem !important; }
                    .mx-auto { margin-left: auto !important; margin-right: auto !important; }
                    .px-4 { padding-left: 1rem !important; padding-right: 1rem !important; }
                    .sm\\:px-6 { @media (min-width: 640px) { padding-left: 1.5rem !important; padding-right: 1.5rem !important; } }
                    .lg\\:px-8 { @media (min-width: 1024px) { padding-left: 2rem !important; padding-right: 2rem !important; } }
                    .flex { display: flex !important; }
                    .justify-between { justify-content: space-between !important; }
                    .items-center { align-items: center !important; }
                    .py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
                    .h-8 { height: 2rem !important; }
                    .w-8 { width: 2rem !important; }
                    .text-blue-600 { color: #2563eb !important; }
                    .mr-3 { margin-right: 0.75rem !important; }
                    .text-2xl { font-size: 1.5rem !important; line-height: 2rem !important; }
                    .font-bold { font-weight: 700 !important; }
                    .text-slate-900 { color: #0f172a !important; }
                    .hidden { display: none !important; }
                    .md\\:flex { @media (min-width: 768px) { display: flex !important; } }
                    .space-x-8 > * + * { margin-left: 2rem !important; }
                    .text-slate-600 { color: #475569 !important; }
                    .hover\\:text-blue-600:hover { color: #2563eb !important; }
                    .transition-colors { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke !important; }
                    .space-x-4 > * + * { margin-left: 1rem !important; }
                    .text-sm { font-size: 0.875rem !important; line-height: 1.25rem !important; }
                    .relative { position: relative !important; }
                    .overflow-hidden { overflow: hidden !important; }
                    .absolute { position: absolute !important; }
                    .inset-0 { top: 0px !important; right: 0px !important; bottom: 0px !important; left: 0px !important; }
                    .bg-gradient-to-r { background-image: linear-gradient(to right, var(--tw-gradient-stops)) !important; }
                    .from-blue-600 { --tw-gradient-from: #2563eb !important; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgba(37, 99, 235, 0)) !important; }
                    .to-purple-600 { --tw-gradient-to: #9333ea !important; }
                    .text-center { text-align: center !important; }
                    .text-5xl { font-size: 3rem !important; line-height: 1 !important; }
                    .lg\\:text-7xl { @media (min-width: 1024px) { font-size: 4.5rem !important; line-height: 1 !important; } }
                    .mb-6 { margin-bottom: 1.5rem !important; }
                    .text-xl { font-size: 1.25rem !important; line-height: 1.75rem !important; }
                    .lg\\:text-2xl { @media (min-width: 1024px) { font-size: 1.5rem !important; line-height: 2rem !important; } }
                    .text-slate-600 { color: #475569 !important; }
                    .mb-8 { margin-bottom: 2rem !important; }
                    .max-w-3xl { max-width: 48rem !important; }
                    .text-lg { font-size: 1.125rem !important; line-height: 1.75rem !important; }
                    .text-slate-500 { color: #64748b !important; }
                    .mb-12 { margin-bottom: 3rem !important; }
                    .max-w-2xl { max-width: 42rem !important; }
                    .flex-col { flex-direction: column !important; }
                    .sm\\:flex-row { @media (min-width: 640px) { flex-direction: row !important; } }
                    .gap-4 { gap: 1rem !important; }
                    .justify-center { justify-content: center !important; }
                    .border-2 { border-width: 2px !important; }
                    .border-blue-600 { border-color: #2563eb !important; }
                    .text-blue-600 { color: #2563eb !important; }
                    .hover\\:bg-blue-50:hover { background-color: #eff6ff !important; }
                    .py-20 { padding-top: 5rem !important; padding-bottom: 5rem !important; }
                    .grid { display: grid !important; }
                    .md\\:grid-cols-3 { @media (min-width: 768px) { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } }
                    .gap-8 { gap: 2rem !important; }
                    .bg-gradient-to-br { background-image: linear-gradient(to bottom right, var(--tw-gradient-stops)) !important; }
                    .from-blue-50 { --tw-gradient-from: #eff6ff !important; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgba(239, 246, 255, 0)) !important; }
                    .to-purple-50 { --tw-gradient-to: #faf5ff !important; }
                    .p-8 { padding: 2rem !important; }
                    .rounded-2xl { border-radius: 1rem !important; }
                    .border { border-width: 1px !important; }
                    .border-blue-100 { border-color: #dbeafe !important; }
                    .h-12 { height: 3rem !important; }
                    .w-12 { width: 3rem !important; }
                    .mb-6 { margin-bottom: 1.5rem !important; }
                    .text-xl { font-size: 1.25rem !important; line-height: 1.75rem !important; }
                    .font-semibold { font-weight: 600 !important; }
                    .text-slate-900 { color: #0f172a !important; }
                    .mb-4 { margin-bottom: 1rem !important; }
                    .text-slate-600 { color: #475569 !important; }
                    .bg-slate-50 { background-color: #f8fafc !important; }
                    .bg-white { background-color: #ffffff !important; }
                    .p-8 { padding: 2rem !important; }
                    .rounded-2xl { border-radius: 1rem !important; }
                    .shadow-lg { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important; }
                    .text-2xl { font-size: 1.5rem !important; line-height: 2rem !important; }
                    .font-bold { font-weight: 700 !important; }
                    .text-slate-900 { color: #0f172a !important; }
                    .mb-4 { margin-bottom: 1rem !important; }
                    .text-slate-600 { color: #475569 !important; }
                    .mb-6 { margin-bottom: 1.5rem !important; }
                    .space-y-3 { margin-top: 0.75rem !important; }
                    .space-y-3 > * + * { margin-top: 0.75rem !important; }
                    .flex { display: flex !important; }
                    .items-start { align-items: flex-start !important; }
                    .h-5 { height: 1.25rem !important; }
                    .w-5 { width: 1.25rem !important; }
                    .text-green-500 { color: #10b981 !important; }
                    .mt-0\\.5 { margin-top: 0.125rem !important; }
                    .mr-3 { margin-right: 0.75rem !important; }
                    .flex-shrink-0 { flex-shrink: 0 !important; }
                    .text-slate-600 { color: #475569 !important; }
                    .bg-gradient-to-r { background-image: linear-gradient(to right, var(--tw-gradient-stops)) !important; }
                    .from-blue-600 { --tw-gradient-from: #2563eb !important; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgba(37, 99, 235, 0)) !important; }
                    .to-purple-600 { --tw-gradient-to: #9333ea !important; }
                    .text-white { color: #ffffff !important; }
                    .py-20 { padding-top: 5rem !important; padding-bottom: 5rem !important; }
                    .text-4xl { font-size: 2.25rem !important; line-height: 2.5rem !important; }
                    .font-bold { font-weight: 700 !important; }
                    .text-white { color: #ffffff !important; }
                    .mb-4 { margin-bottom: 1rem !important; }
                    .md\\:grid-cols-4 { @media (min-width: 768px) { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } }
                    .text-4xl { font-size: 2.25rem !important; line-height: 2.5rem !important; }
                    .font-bold { font-weight: 700 !important; }
                    .text-white { color: #ffffff !important; }
                    .mb-2 { margin-bottom: 0.5rem !important; }
                    .text-blue-100 { color: #dbeafe !important; }
                    .bg-slate-900 { background-color: #0f172a !important; }
                    .text-white { color: #ffffff !important; }
                    .py-16 { padding-top: 4rem !important; padding-bottom: 4rem !important; }
                    .md\\:grid-cols-4 { @media (min-width: 768px) { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } }
                    .gap-8 { gap: 2rem !important; }
                    .text-2xl { font-size: 1.5rem !important; line-height: 2rem !important; }
                    .font-bold { font-weight: 700 !important; }
                    .text-slate-300 { color: #cbd5e1 !important; }
                    .mb-4 { margin-bottom: 1rem !important; }
                    .space-y-2 { margin-top: 0.5rem !important; }
                    .space-y-2 > * + * { margin-top: 0.5rem !important; }
                    .text-slate-300 { color: #cbd5e1 !important; }
                    .hover\\:text-white:hover { color: #ffffff !important; }
                    .transition-colors { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke !important; }
                    .border-t { border-top-width: 1px !important; }
                    .border-slate-700 { border-color: #334155 !important; }
                    .mt-12 { margin-top: 3rem !important; }
                    .pt-8 { padding-top: 2rem !important; }
                    .text-center { text-align: center !important; }
                    .text-slate-400 { color: #94a3b8 !important; }
                  `}</style>
                </Head>
                <CaseUpdateBanner />
                <ThemeCustomizer />
                <Component {...pageProps} />
                <SmartEngagement />
                {/* Video call removed for now */}
                {/* Video call removed for now */}
        
                <Toaster />
        
              </AuthenticatedWebSocketProvider>
            </PublicNotificationProvider>
            </LanguageProvider>
          </ThemeProvider>
        </SessionProvider>
      </ChakraProvider>
    </ErrorBoundary>
  );
}

export default App; 

CasperSecurity Mini