<!DOCTYPE html>
<html lang="uz">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
    <meta name="description" content="TexnoVA - Inventory Management System">
    <meta name="_csrf" content="QSXokIxQMInMho1CNQUwTwzxWA8UK-OC62yHXbAGaWwDeXraJxOJ9blkVLrh4Lx3DSgEezWTdTdyTtGv0g21bYY-ClVmSk24">
    <meta name="_csrf_header" content="X-CSRF-TOKEN">

    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">

    <link rel="shortcut icon" type="image/x-icon" href="/lib/images/favicon.ico">

    <link rel="stylesheet" href="/lib/css/bootstrap.min.css">
    <link rel="stylesheet" href="/lib/css/bootstrap-datetimepicker.min.css">
    <link rel="stylesheet" href="/lib/css/animate.css">
    <link rel="stylesheet" href="/lib/plugins/select2/css/select2.min.css">
    <link rel="stylesheet" href="/lib/css/dataTables.bootstrap4.min.css">
    <link rel="stylesheet" href="/lib/plugins/fontawesome/css/all.min.css">
    <link rel="stylesheet" href="/lib/css/texnova.css">
    <link rel="stylesheet" href="/lib/css/materio.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3/dist/tabler-icons.min.css">
    <link rel="stylesheet" href="/lib/css/materio-datatables.css">
    <link rel="stylesheet" href="/lib/css/print.css">

    <style>
        /* ── Materio shell layout ─────────────────────────────────────────── */
        .mat-shell {
            display: grid;
            grid-template-columns: var(--mat-rail-w, 260px) 1fr;
            min-height: 100vh;
        }
        .mat-shell.rail-collapsed {
            grid-template-columns: var(--mat-rail-w-collapsed, 80px) 1fr;
        }
        .mat-main { min-width: 0; display: flex; flex-direction: column; }

        /* ── Sidebar adapts to mat-rail structure ─────────────────────────── */
        .mat-rail.sidebar {
            position: sticky;
            top: 0;
            height: 100vh;
            overflow: hidden;
            display: flex;
            flex-direction: column;
        }
        .mat-rail-nav.slimscroll { flex: 1; overflow-y: auto; }

        /* ── Mobile: sidebar slides off-canvas ───────────────────────────── */
        @media (max-width: 991px) {
            .mat-shell { grid-template-columns: 1fr; }
            .mat-rail.sidebar {
                position: fixed;
                left: -290px;
                top: 0;
                height: 100dvh;       /* dynamic viewport height for mobile browsers */
                z-index: 1055;
                width: min(280px, 85vw);  /* never wider than 85% of viewport */
                transition: left 0.28s cubic-bezier(0.4,0,0.2,1);
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
            }
            .mat-rail.sidebar.show { left: 0; box-shadow: 4px 0 24px rgba(0,0,0,0.35); }
            .mat-main.page-wrapper { margin-left: 0 !important; }
            /* Topbar stays at top on mobile */
            .mat-topbar { border-radius: 0 !important; margin: 0 !important; top: 0; }
            /* Larger tap targets on mobile */
            .mat-rail-link { min-height: 48px; }
            .mat-rail-sub-link { min-height: 40px; }
        }
        /* Extra small phones */
        @media (max-width: 480px) {
            .mat-rail.sidebar { width: 90vw; }
        }

        /* mat-rail-nav: native materio.css mat-rail-* classes handle all styling */
        .mat-rail-nav { padding: 8px 0 16px; }

        /* Active-store chip hover */
        .mat-topbar .dropdown > button:hover {
            background: color-mix(in srgb, var(--mat-primary,#ED5C01) 18%, var(--mat-primary-light,#FFEDDC)) !important;
            box-shadow: 0 0 0 3px rgba(237,92,1,.18);
        }
        /* Dark mode */
        [data-theme="dark"] .mat-topbar .dropdown > button {
            background: color-mix(in srgb, var(--mat-primary,#ED5C01) 15%, var(--mat-bg,#25293C)) !important;
            border-color: var(--mat-primary,#ED5C01) !important;
        }

        /* Sidebar background — force deep purple, beats any Bootstrap resets */
        .mat-rail, .mat-rail.sidebar, nav.mat-rail {
            background: var(--mat-nav-bg, #3D1233) !important;
            color: var(--mat-nav-text, #E8D7E2);
        }
        @media (max-width: 991px) {
            .mat-rail.sidebar {
                background: var(--mat-nav-bg, #3D1233) !important;
            }
        }

        /* ── Topbar ───────────────────────────────────────────────────────── */
        .mat-topbar {
            position: sticky; top: 0; z-index: 20;
            background: var(--mat-surface, #fff);
            height: var(--mat-topbar-h, 64px);
            display: flex; align-items: center; gap: 10px;
            padding: 0 20px;
            box-shadow: var(--mat-shadow-card, 0 2px 6px rgba(47,51,73,.12));
        }

        /* ── Dark mode: topbar becomes elevated surface ─────────────────── */
        [data-theme="dark"] .mat-topbar { background: var(--mat-bg-elevated, #2F3349); }
        [data-theme="dark"] .dropdown-menu { background: var(--mat-bg-elevated, #2F3349); border-color: var(--mat-border, #434968); }
        [data-theme="dark"] .dropdown-item { color: var(--mat-text, #E1E1E6); }
        [data-theme="dark"] .dropdown-item:hover { background: var(--mat-bg, #25293C); }

        /* ── Content area ─────────────────────────────────────────────────── */
        .mat-page.content { padding: 20px; flex: 1; }
    </style>
    
    <title>Chyba</title>
</head>
<body class="mat-app">

<div id="global-loader">
    <div class="whirly-loader"></div>
</div>

<div class="mat-shell" id="main-wrapper">

    <!-- ═══ LEFT RAIL (Sidebar) ════════════════════════════════ -->
    <nav class="mat-rail sidebar" id="sidebar">

        <!-- Logo -->
        <a href="/" class="mat-rail-logo" style="text-decoration:none;">
            <span class="mat-rail-logo-mark">TX</span>
            <span class="mat-rail-logo-name">
                <b>TexnoVA</b>
                <span>Admin · Boshqaruv paneli</span>
            </span>
        </a>

        <!-- ═══ SIDEBAR NAV (mat-rail structure) ═══════════════════ -->
        <div class="mat-rail-nav slimscroll" id="sidebar-nav">

            <!-- ── ASOSIY ─────────────────────────────────────── -->
            <div class="mat-rail-section"><span class="mat-rail-section-text">Asosiy</span></div>

            <a href="/" class="mat-rail-link is-active" id="nav-dashboard">
                <i class="ti ti-layout-dashboard"></i>
                <span class="mat-rail-link-label">Dashboard</span>
            </a>

            <a href="/catalog/product/price/calc" class="mat-rail-link">
                <i class="ti ti-calculator"></i>
                <span class="mat-rail-link-label">Kalkulator</span>
            </a>

            

            <!-- ── KATALOG ──────────────────────────────────────── -->
            

            <!-- Do'kon mahsulotlari -->
            
            

            <!-- Mahsulotlar (admin) -->
            
            

            <!-- ── SAVDO ────────────────────────────────────────── -->
            

            <!-- Buyurtmalar -->
            
            

            <!-- Savdolar -->
            
            

            <!-- Yetkazish -->
            
            

            <!-- ── MIJOZLAR (CRM) ──────────────────────────────── -->
            

            
            

            <!-- ── OMBORXONA ───────────────────────────────────── -->
            

            <!-- Inventarizatsiya -->
            
            

            <!-- Ko'chirish -->
            
            

            <!-- ── XARIDLAR VA MOLIYA ──────────────────────────── -->
            

            <!-- Xaridlar -->
            
            

            <!-- Narxlar -->
            
            

            <!-- Didox -->
            
            

            <!-- Xarajatlar -->
            
            

            <!-- Qaytarishlar -->
            
            

            <!-- ── HISOBOTLAR VA TAHLIL ────────────────────────── -->
            

            <!-- Savdo hisobotlari -->
            
            

            <!-- Tijorat takliflari -->
            
            

            <!-- ── BOSHQARUV ───────────────────────────────────── -->
            

            <!-- Admin panel -->
            
            

            <!-- Joylashuvlar -->
            
            

            <!-- Sozlamalar -->
            
            

        </div><!-- /.mat-rail-nav -->

        <!-- User footer -->
        <div class="mat-rail-footer">
            
        </div>

    </nav><!-- /.mat-rail -->

    <!-- ═══ RIGHT MAIN ════════════════════════════════════════ -->
    <div class="mat-main page-wrapper" id="page-wrapper">

        <!-- Topbar — order matches admin.html design exactly -->
        <header class="mat-topbar">

            <!-- 1. Hamburger / rail toggle (single button, handles both mobile + desktop) -->
            <button class="mat-topbar-toggle" id="toggle_btn" aria-label="Menu">
                <i class="ti ti-menu-2"></i>
            </button>

            <!-- 2. Breadcrumbs -->
            <div class="mat-crumbs d-none d-md-flex" id="mat-breadcrumb">
                <span class="cur">Boshqaruv paneli</span>
            </div>

            <!-- 3. Spacer -->
            <div class="mat-topbar-spacer"></div>

            <!-- 4. Writable search input — submits to product list -->
            <form action="/catalog/product/list/all" method="get"
                  class="mat-search-trigger d-none d-md-flex" style="padding:0;cursor:default;">
                <i class="ti ti-search" style="flex-shrink:0;color:var(--mat-muted);"></i>
                <input type="text" name="keyword" id="topbarSearchInput"
                       placeholder="Mahsulot izlash..."
                       style="flex:1;border:none;background:transparent;outline:none;
                              font:inherit;font-size:13px;color:var(--mat-text);min-width:0;padding:0 4px;">
                <span class="kbd">⌘K</span>
            </form>

            <!-- 5. Theme toggle (light / dark) -->
            <div class="mat-theme-toggle">
                <button onclick="setTheme('light')" id="themeLight" class="is-on" aria-label="Yorug' rejim">
                    <i class="ti ti-sun"></i>
                </button>
                <button onclick="setTheme('dark')" id="themeDark" aria-label="Qorong'u rejim">
                    <i class="ti ti-moon"></i>
                </button>
            </div>

            <!-- 6. Language switcher dropdown -->
            

            <!-- 7. Active store chip + selector dropdown -->
            <div class="dropdown">
                <!-- Highlighted store chip — always visible in topbar -->
                <button data-bs-toggle="dropdown" aria-label="Do'kon tanlash"
                        style="display:inline-flex;align-items:center;gap:7px;
                               padding:6px 11px 6px 9px;
                               background:var(--mat-primary-light,#FFEDDC);
                               border:1.5px solid var(--mat-primary,#ED5C01);
                               border-radius:999px;
                               color:var(--mat-primary,#ED5C01);
                               font:600 12px/1 'Inter',system-ui,sans-serif;
                               cursor:pointer;
                               transition:background .15s,box-shadow .15s;
                               max-width:200px;white-space:nowrap;">
                    <i class="ti ti-building-store" style="font-size:15px;flex-shrink:0;"></i>
                    <span style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px;">Do&#39;kon</span>
                    <i class="ti ti-chevron-down" style="font-size:11px;flex-shrink:0;opacity:.75;"></i>
                </button>

                <div class="dropdown-menu dropdown-menu-end p-2"
                     style="min-width:210px;border-radius:12px;box-shadow:var(--mat-shadow-lg);">
                    <div style="font-size:10px;font-weight:700;color:var(--mat-muted);
                                padding:4px 8px 8px;text-transform:uppercase;letter-spacing:.06em;">
                        <i class="ti ti-map-pin me-1"></i>Ishchi do'konni tanlang
                    </div>
                    
                </div>
            </div>

            <!-- Cart with item count badge -->
            <a href="/shopping/cart" class="mat-icon-btn position-relative" aria-label="Savat">
                <i class="ti ti-shopping-cart"></i>
                
            </a>

            <!-- 7. Notifications bell -->
            <div class="dropdown">
                <button class="mat-icon-btn" data-bs-toggle="dropdown" aria-label="Ogohlantirishlar">
                    <i class="ti ti-bell"></i>
                    <span class="dot" style="display:none"></span>
                </button>
                <div class="dropdown-menu dropdown-menu-end p-0"
                     style="min-width:320px;max-width:360px;border-radius:12px;overflow:hidden;box-shadow:var(--mat-shadow-lg);">
                    <div style="display:flex;justify-content:space-between;align-items:center;
                                padding:14px 18px 10px;border-bottom:1px solid var(--mat-divider);">
                        <span style="font-size:14px;font-weight:600;color:var(--mat-text);">
                            Ogohlantirishlar
                            
                        </span>
                        <a href="javascript:void(0)" onclick="markAllAlertsRead()"
                           style="font-size:12px;color:var(--mat-primary);">Hammasini o'qildi</a>
                    </div>
                    <div style="max-height:300px;overflow-y:auto;">
                        <p style="text-align:center;padding:28px 16px;font-size:13px;color:var(--mat-muted);margin:0;">
                            Ogohlantirishlar yo'q
                        </p>
                        
                    </div>
                    <div style="padding:10px 18px;border-top:1px solid var(--mat-divider);">
                        <a href="/cash/desk" style="font-size:12px;color:var(--mat-primary);">
                            <i class="ti ti-cash-register me-1"></i>Kassa paneliga o'tish
                        </a>
                    </div>
                </div>
            </div>

            <!-- 8. User (avatar + name + role) — dropdown for profile/logout -->
            <div class="dropdown">
                <div class="mat-topbar-user" data-bs-toggle="dropdown" role="button"
                     style="cursor:pointer;" aria-label="Profil menyusi">
                    
                    <div class="mat-topbar-user-info d-none d-lg-flex">
                        
                        <span></span>
                    </div>
                </div>
                <div class="dropdown-menu dropdown-menu-end p-2"
                     style="min-width:200px;border-radius:12px;box-shadow:var(--mat-shadow-lg);">
                    <div style="padding:8px 10px 10px;border-bottom:1px solid var(--mat-divider);margin-bottom:4px;">
                        
                        <div style="font-size:11px;color:var(--mat-text-3);margin-top:2px;"></div>
                    </div>
                    <a class="dropdown-item rounded-2 py-2" href="/user/profile" style="font-size:13px;">
                        <i class="ti ti-user me-2"></i>Mening profilim
                    </a>
                    <a class="dropdown-item rounded-2 py-2" href="/user/change-password" style="font-size:13px;">
                        <i class="ti ti-key me-2"></i>Parolni o'zgartirish
                    </a>
                    <hr class="dropdown-divider my-1">
                    
                </div>
            </div>

        </header><!-- /.mat-topbar -->

        <!-- Mobile search row -->
        <div class="d-flex d-md-none px-3 pt-3 pb-1">
            <form action="/catalog/product/list/all" method="get"
                  class="w-100 d-flex" style="gap:8px;">
                <input type="text" name="keyword"
                       class="form-control form-control-sm"
                       placeholder="Mahsulotni barcha do'konlardan izlash"
                       style="border-radius:8px;font-size:0.85rem;">
                <button type="submit" class="btn btn-sm btn-primary px-3"
                        style="border-radius:8px;flex-shrink:0;">
                    <i class="ti ti-search"></i>
                </button>
            </form>
        </div>

        <div class="container-fluid content mat-page">
            <div>
		<div class="row">
			<div class="col-3">
			</div>
			<div class="col-6">
				<h1>No static resource sitemap.xml.</h1>
				<p>
					<i>org.springframework.web.servlet.resource.NoResourceFoundException: No static resource sitemap.xml.
	at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:585)
	at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:52)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
	at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
	at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:125)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:235)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:229)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
	at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:319)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$4(HandlerMappingIntrospector.java:267)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
	at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:240)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Thread.java:840)
</i>
				</p>
			</div>
			<div class="col-3">
			</div>
		</div>
	</div>
        </div>
    </div><!-- /.mat-main -->
</div><!-- /.mat-shell -->

<!-- Mobile Overlay -->
<div id="sidebar-overlay" style="display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);z-index:1040;"></div>

<!-- Toast -->
<div>

    <!-- Toast anchor — fixed, top-end, above everything -->
    <div id="toastContainer"
         class="toast-container position-fixed top-0 end-0 p-3"
         style="z-index:9999; margin-top:60px;">
    </div>

    <script>
        window.showToast = function (message, type) {
            type = type || 'success';
            var bg   = type === 'success' ? 'bg-success'
                     : type === 'error'   ? 'bg-danger'
                     :                      'bg-info';
            var icon = type === 'success' ? 'fa-circle-check'
                     : type === 'error'   ? 'fa-circle-xmark'
                     :                      'fa-circle-info';

            var id = 'toast-' + Date.now();
            var html =
                '<div id="' + id + '" class="toast align-items-center text-white ' + bg + ' border-0 mb-2" ' +
                '     role="alert" aria-live="assertive" aria-atomic="true">' +
                '  <div class="d-flex">' +
                '    <div class="toast-body fw-semibold">' +
                '      <i class="fas ' + icon + ' me-2"></i>' + message +
                '    </div>' +
                '    <button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast"></button>' +
                '  </div>' +
                '</div>';

            var container = document.getElementById('toastContainer');
            container.insertAdjacentHTML('beforeend', html);
            var toastEl = document.getElementById(id);
            var toast   = new bootstrap.Toast(toastEl, { delay: 3500 });
            toast.show();
            toastEl.addEventListener('hidden.bs.toast', function () { toastEl.remove(); });
        };

        /** Update the cart badge in the header without a page reload. */
        window.updateCartBadge = function (count) {
            document.querySelectorAll('.cart-badge').forEach(function (el) {
                el.textContent = count;
                el.style.display = count > 0 ? '' : 'none';
            });
        };
    </script>
</div>

<!-- Only jQuery is loaded here — the inline $(document).ready block below
     needs it. Bootstrap and all other libs load once via scripts.html at
     end of body. Loading Bootstrap twice registered duplicate click handlers
     which made dropdowns open then immediately close again. -->
<script src="/lib/js/jquery-3.6.0.min.js"></script>

<script>
    /* ── Theme toggle ───────────────────────────────────────── */
    function setTheme(t) {
        document.documentElement.setAttribute('data-theme', t);
        localStorage.setItem('txTheme', t);
        document.getElementById('themeLight').classList.toggle('is-on', t === 'light');
        document.getElementById('themeDark').classList.toggle('is-on', t === 'dark');
    }
    (function () {
        var saved = localStorage.getItem('txTheme') || 'light';
        setTheme(saved);
    })();

    /* ── Desktop rail collapse ──────────────────────────────── */
    function toggleRail() {
        document.getElementById('main-wrapper').classList.toggle('rail-collapsed');
        document.getElementById('sidebar').classList.toggle('mat-rail-collapsed');
    }

    /* ── Sidebar submenu expand/collapse ───────────────────── */
    function toggleRailGroup(el) {
        el.classList.toggle('is-open');
        var sub = el.nextElementSibling;
        if (sub && sub.classList.contains('mat-rail-sub')) {
            sub.style.display = (sub.style.display === 'none' || sub.style.display === '') ? 'flex' : 'none';
        }
    }

    /* ── Notifications (CSRF-aware) ─────────────────────────── */
    var _csrf        = document.querySelector('meta[name="_csrf"]')?.content;
    var _csrfHeader  = document.querySelector('meta[name="_csrf_header"]')?.content;
    function markAlertRead(id) {
        fetch('/api/cash-alerts/' + id + '/read', {
            method: 'POST', headers: _csrfHeader ? {[_csrfHeader]: _csrf} : {}
        }).then(() => location.reload());
    }
    function markAllAlertsRead() {
        fetch('/api/cash-alerts/read-all', {
            method: 'POST', headers: _csrfHeader ? {[_csrfHeader]: _csrf} : {}
        }).then(() => location.reload());
    }

    $(document).ready(function () {
        /* Single toggle button — slides in on mobile, collapses rail on desktop */
        $('#toggle_btn').on('click', function (e) {
            e.preventDefault();
            if (window.innerWidth <= 991) {
                $('#sidebar').toggleClass('show');
                $('#sidebar-overlay').fadeToggle(200);
            } else {
                toggleRail();
            }
        });
        $('#sidebar-overlay').on('click', function () {
            $('#sidebar').removeClass('show');
            $(this).fadeOut(200);
        });
        /* Close sidebar after navigating to a real page (mobile only) */
        $('#sidebar-nav a.mat-rail-link, #sidebar-nav a.mat-rail-sub-link').on('click', function () {
            var href = $(this).attr('href');
            if (window.innerWidth <= 991 && href && href !== 'javascript:void(0);') {
                $('#sidebar').removeClass('show');
                $('#sidebar-overlay').fadeOut(200);
            }
        });
        /* Active link detection */
        var path = window.location.pathname;
        document.querySelectorAll('.mat-rail-link[href]').forEach(function (a) {
            if (a.getAttribute('href') !== 'javascript:void(0);' &&
                path !== '/' && a.getAttribute('href') !== '/' &&
                path.startsWith(a.getAttribute('href'))) {
                a.classList.add('is-active');
                document.getElementById('nav-dashboard')?.classList.remove('is-active');
            }
        });
        /* ⌘K / Ctrl+K → open search input */
        $(document).on('keydown', function (e) {
            if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
                e.preventDefault();
                $('#topbarSearchInput').val('');
                $('#topbarSearchForm').show().find('input').focus();
                $('#topbarSearchLabel').text('Mahsulotni qidiring...');
            }
            if (e.key === 'Escape') {
                $('#topbarSearchForm').hide();
                $('#topbarSearchLabel').text('Qidiruv yoki buyruq...');
            }
        });
    });
</script>

<!-- Your original scripts + error modal -->


<script>
    document.addEventListener('DOMContentLoaded', function () {
        // Select all submit buttons
        const submitButtons = document.querySelectorAll('button[type="submit"]');

        submitButtons.forEach(button => {
            button.addEventListener('click', function (event) {
                // Prevent default behavior to control submission
                event.preventDefault();

                // Only proceed if button is not already disabled
                if (!button.disabled) {
                    // Disable button to prevent further clicks
                    button.disabled = true;

                    // Find the parent form and submit it
                    const form = button.closest('form');
                    if (form) {
                        form.submit();
                    }
                }
            });
        });
    });
</script>

<script src="/lib/js/jquery-3.6.0.min.js"></script>

<script src="/lib/js/feather.min.js"></script>

<script src="/lib/js/jquery.slimscroll.min.js"></script>

<script src="/lib/js/jquery.dataTables.min.js"></script>
<script src="/lib/js/dataTables.bootstrap4.min.js"></script>

<script src="/lib/js/bootstrap.bundle.min.js"></script>

<script src="/lib/plugins/select2/js/select2.min.js"></script>
<script src="/lib/plugins/select2/js/custom-select.js"></script>

<script src="/lib/js/moment.min.js"></script>
<script src="/lib/js/bootstrap-datetimepicker.min.js"></script>

<script src="/lib/plugins/sweetalert/sweetalert2.all.min.js"></script>
<script src="/lib/plugins/sweetalert/sweetalerts.min.js"></script>

<script src="/lib/js/plugins.js"></script>
<script src="/lib/js/script.js"></script>
<script src="/lib/js/materio-table.js"></script>

<!-- Error Modal -->
<div class="modal fade" id="errorModal" tabindex="-1" aria-labelledby="errorModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content border-danger">
            <div class="modal-header bg-danger text-white">
                <h5 class="modal-title" id="errorModalLabel">Xatolik</h5>
                <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"
                        aria-label="Yopish"></button>
            </div>
            <div class="modal-body">
                <p></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="mat-btn mat-btn-outlined" data-bs-dismiss="modal">Yopish</button>
            </div>
        </div>
    </div>
</div>

<script>
    document.addEventListener('DOMContentLoaded', function () {
        /*<![CDATA[*/
        var errorMessage = "false";
        /*]]>*/
        if (errorMessage === 'true') {
            var modal = new bootstrap.Modal(document.getElementById('errorModal'));
            modal.show();
        }
    });
</script>



</body>
</html>