UNPKG

gentelella

Version:

Gentelella v4 — free admin template. 60 pages, 20 chart variants, fully interactive inbox & kanban, live theme generator, component playground, PWA-ready. Vite 8, vanilla JS, no Bootstrap, no jQuery.

2 lines 69.6 kB
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/vendor-echarts-hUIyzMbB.js","js/rolldown-runtime-DEgBLETi.js","js/vendor-tables-Yd668bHn.js","js/inbox-Cn00kCck.js","js/toast-DgCSlJPv.js","js/modal-MTuCfURV.js","js/data-adapter-B-GF0xCf.js","js/calendar-reenTeUh.js","js/settings-7ogjg0JM.js"])))=>i.map(i=>d[i]); import{t as e}from"./toast-DgCSlJPv.js";import{n as t,r as o,t as r}from"./menus-BVcs0GJR.js";import{n as a}from"./modal-MTuCfURV.js";!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)}).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials="use-credentials"===e.crossOrigin?"include":"anonymous"===e.crossOrigin?"omit":"same-origin",t}(e);fetch(e.href,t)}}();var n=[{label:"General",items:[{text:"Dashboards",icon:"dashboard",children:[{key:"dashboard",href:"index.html",text:"Operations"},{key:"dashboard-2",href:"index2.html",text:"Analytics"},{key:"dashboard-3",href:"index3.html",text:"Sales"},{key:"dashboard-4",href:"index4.html",text:"System health"}]},{text:"Forms",icon:"forms",badge:{text:"Hot",cls:"badge-red"},children:[{key:"forms",href:"form.html",text:"General"},{key:"form-advanced",href:"form_advanced.html",text:"Advanced controls"},{key:"form-buttons",href:"form_buttons.html",text:"Buttons"},{key:"form-upload",href:"form_upload.html",text:"Upload"},{key:"form-validation",href:"form_validation.html",text:"Validation"},{key:"form-wizards",href:"form_wizards.html",text:"Wizard"}]},{text:"Tables",icon:"tables",children:[{key:"tables",href:"tables.html",text:"Static"},{key:"tables-dynamic",href:"tables_dynamic.html",text:"Dynamic"}]},{text:"Charts",icon:"charts",badge:{text:"New",cls:"badge-teal"},children:[{key:"charts",href:"chartjs.html",text:"Chart cards"},{key:"echarts",href:"echarts.html",text:"ECharts gallery"},{key:"other-charts",href:"other_charts.html",text:"SVG charts"}]},{key:"calendar",href:"calendar.html",text:"Calendar",icon:"calendar"},{key:"map",href:"map.html",text:"Map",icon:"map"}]},{label:"Apps",items:[{key:"chat",href:"chat.html",text:"Chat",icon:"chat",badge:{text:"3",cls:"badge-teal"}},{key:"inbox",href:"inbox.html",text:"Inbox",icon:"mail"},{key:"kanban",href:"kanban.html",text:"Kanban",icon:"kanban"},{key:"files",href:"file_manager.html",text:"Files",icon:"files"},{key:"notifications",href:"notifications.html",text:"Notifications",icon:"bell"}]},{label:"E-commerce",items:[{key:"storefront",href:"e_commerce.html",text:"Storefront",icon:"shop"},{key:"product",href:"product_detail.html",text:"Product",icon:"tag"},{text:"Orders",icon:"cart",children:[{key:"orders",href:"orders.html",text:"All orders"},{key:"order-detail",href:"order_detail.html",text:"Order detail"}]},{key:"invoice",href:"invoice.html",text:"Invoice",icon:"receipt"},{key:"pricing",href:"pricing_tables.html",text:"Pricing",icon:"price"}]},{label:"Projects",items:[{key:"projects",href:"projects.html",text:"All projects",icon:"projects"},{key:"project-detail",href:"project_detail.html",text:"Project detail",icon:"pages"}]},{label:"UI library",items:[{key:"ui",href:"general_elements.html",text:"Elements",icon:"ui"},{key:"widgets",href:"widgets.html",text:"Widgets",icon:"pages",badge:{text:"5",cls:"badge-blue"}},{key:"playground",href:"playground.html",text:"Playground",icon:"code",badge:{text:"New",cls:"badge-teal"}},{key:"theme",href:"theme.html",text:"Theme",icon:"paint",badge:{text:"New",cls:"badge-teal"}},{key:"typography",href:"typography.html",text:"Typography",icon:"type"},{key:"icons",href:"icons.html",text:"Icons",icon:"icons"},{key:"media",href:"media_gallery.html",text:"Media",icon:"media"}]},{label:"Admin",items:[{key:"users",href:"contacts.html",text:"Contacts",icon:"users"},{key:"user_management",href:"user_management.html",text:"User management",icon:"profile"},{key:"profile",href:"profile.html",text:"Your profile",icon:"profile"},{key:"settings",href:"settings.html",text:"Settings",icon:"settings"},{key:"faq",href:"faq.html",text:"Help center",icon:"help"}]},{label:"Layouts",items:[{key:"fixed-sidebar",href:"fixed_sidebar.html",text:"Fixed sidebar",icon:"layout"},{key:"fixed-footer",href:"fixed_footer.html",text:"Fixed footer",icon:"layout"},{key:"level2",href:"level2.html",text:"Nested page",icon:"pages"},{key:"plain",href:"plain_page.html",text:"Blank",icon:"pages"}]}],i={dashboard:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="4" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="10" width="7" height="11" rx="1.5"/></svg>',forms:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="4" y="4" width="16" height="16" rx="2"/><path d="M9 9h6M9 13h4"/></svg>',tables:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="5" width="18" height="14" rx="2"/><path d="M3 10h18M9 10v9M15 10v9"/></svg>',charts:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 19V5M8 19v-8M12 19V9M16 19v-5M20 19v-9"/></svg>',calendar:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 10h18M8 4v6M16 4v6"/></svg>',ui:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 6h16M4 12h16M4 18h10"/></svg>',pages:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="2" y="3" width="20" height="18" rx="2"/><path d="M2 8h20"/></svg>',media:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><path d="M21 15l-5-5L5 21"/></svg>',users:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="8" r="4"/><path d="M5 20c0-3.9 3.1-7 7-7s7 3.1 7 7"/></svg>',profile:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>',settings:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="3"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3M5.6 5.6l2.1 2.1M16.3 16.3l2.1 2.1M5.6 18.4l2.1-2.1M16.3 7.7l2.1-2.1"/></svg>',chat:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M21 11.5a8.38 8.38 0 01-.9 3.8 8.5 8.5 0 01-7.6 4.7 8.38 8.38 0 01-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 01-.9-3.8 8.5 8.5 0 014.7-7.6 8.38 8.38 0 013.8-.9h.5a8.48 8.48 0 018 8v.5z"/></svg>',bell:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M12 3a6 6 0 00-6 6c0 6-3 7-3 7h18s-3-1-3-7a6 6 0 00-6-6z"/><path d="M10.5 21a1.5 1.5 0 003 0"/></svg>',kanban:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="3" width="6" height="14" rx="1.5"/><rect x="11" y="3" width="6" height="9" rx="1.5"/><rect x="19" y="3" width="2" height="6" rx="0.5"/></svg>',files:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M3 7a2 2 0 012-2h4l2 2h7a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V7z"/></svg>',shop:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M3 9l1-5h16l1 5M3 9v10a2 2 0 002 2h14a2 2 0 002-2V9M3 9h18"/><path d="M9 13a3 3 0 006 0"/></svg>',tag:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M20 13l-7 7a2 2 0 01-2.83 0L3 12.83V4h8.83L20 12.17a2 2 0 010 2.83z"/><circle cx="7.5" cy="7.5" r="1.5"/></svg>',cart:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="9" cy="21" r="1.5"/><circle cx="20" cy="21" r="1.5"/><path d="M1 1h4l2.7 13.4a2 2 0 002 1.6h9.7a2 2 0 002-1.6L23 6H6"/></svg>',help:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="10"/><path d="M9.1 9a3 3 0 015.8 1c0 2-3 3-3 3"/><circle cx="12" cy="17" r="0.5" fill="currentColor"/></svg>',mail:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="2" y="4" width="20" height="16" rx="3"/><path d="M2 7l10 6 10-6"/></svg>',map:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6"/><line x1="8" y1="2" x2="8" y2="18"/><line x1="16" y1="6" x2="16" y2="22"/></svg>',receipt:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M5 21V3h14v18l-3-2-3 2-3-2-3 2-2-2z"/><path d="M9 8h6M9 12h6M9 16h4"/></svg>',price:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><line x1="12" y1="2" x2="12" y2="22"/><path d="M16 6H9.5a3.5 3.5 0 100 7h5a3.5 3.5 0 010 7H7"/></svg>',projects:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/></svg>',type:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><polyline points="4 7 4 4 20 4 20 7"/><line x1="9" y1="20" x2="15" y2="20"/><line x1="12" y1="4" x2="12" y2="20"/></svg>',icons:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="10"/><path d="M8 14s1.5 2 4 2 4-2 4-2M9 9h.01M15 9h.01"/></svg>',layout:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 9v12"/></svg>',code:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M16 18l6-6-6-6M8 6l-6 6 6 6"/></svg>',paint:'<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M19 11H5a2 2 0 00-2 2v2a2 2 0 002 2h2v3a1 1 0 001 1h3a1 1 0 001-1v-3h7a2 2 0 002-2v-2a2 2 0 00-2-2z"/><path d="M19 11V5a2 2 0 00-2-2h-2a2 2 0 00-2 2v6"/></svg>'};function l(e){return`\n <aside class="sidebar" aria-label="Primary navigation">\n <div class="sidebar-brand">\n <div class="brand-icon">G</div>\n <div class="brand-name">Gentelella <small>v4</small></div>\n </div>\n <nav class="sidebar-nav">${n.map(t=>`\n <div class="nav-group">\n <div class="nav-label">${t.label}</div>\n ${t.items.map(t=>function(e,t){if(e.children){const o=e.children.some(e=>e.key===t),r=e.children.map(e=>{const o=e.key===t;return`<a class="nav-sublink${o?" active":""}" href="${e.href}"${o?' aria-current="page"':""}>${e.text}${e.badge?`<span class="badge ${e.badge.cls}">${e.badge.text}</span>`:""}</a>`}).join(""),a=["nav-tree"];return o&&a.push("open","has-active"),`\n <div class="${a.join(" ")}">\n <button type="button" class="nav-link nav-toggle" aria-expanded="${o?"true":"false"}">\n ${i[e.icon]||""}\n <span class="nav-text">${e.text}</span>\n ${e.badge?`<span class="badge ${e.badge.cls}">${e.badge.text}</span>`:""}\n <svg class="nav-chev" width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M6 4l4 4-4 4"/></svg>\n </button>\n <div class="nav-sub"><div class="nav-sub-inner">${r}</div></div>\n </div>\n `}const o=e.key===t;return`\n <a class="nav-link${o?" active":""}" href="${e.href}"${o?' aria-current="page"':""}>\n ${i[e.icon]||""}\n <span class="nav-text">${e.text}</span>\n ${e.badge?`<span class="badge ${e.badge.cls}">${e.badge.text}</span>`:""}\n </a>\n `}(t,e)).join("")}\n </div>\n `).join("")}</nav>\n <div class="sidebar-footer">\n <div class="sidebar-user">\n <div class="avatar">A<span class="online"></span></div>\n <div class="sidebar-user-info">\n <div class="name">Aigars Silkalns</div>\n <div class="role">Admin</div>\n </div>\n <button class="more-btn" aria-label="More options">\n <svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor"><circle cx="8" cy="3" r="1.2"/><circle cx="8" cy="8" r="1.2"/><circle cx="8" cy="13" r="1.2"/></svg>\n </button>\n </div>\n </div>\n </aside>\n `}function s(e){return`\n <header class="topbar">\n <div class="topbar-left">\n <button class="sidebar-toggle" type="button" aria-label="Open menu" aria-controls="sidebar" aria-expanded="false">\n <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"/></svg>\n </button>\n <nav class="breadcrumb" aria-label="Breadcrumb">${(e||["Home"]).map((e,t,o)=>`${t>0?'<span class="sep" aria-hidden="true">›</span>':""}<span${t===o.length-1?' class="current" aria-current="page"':""}>${e}</span>`).join("")}</nav>\n </div>\n <div class="search-box">\n <svg class="s-icon" width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="7" cy="7" r="5"/><path d="M11 11l3.5 3.5"/></svg>\n <input type="text" placeholder="Search pages or run a command…" aria-label="Open command palette">\n <kbd>⌘K</kbd>\n </div>\n <div class="topbar-right">\n <a class="tb-btn tb-docs" href="https://gentelella.colorlib.com/docs/" target="_blank" rel="noopener" title="Documentation">\n <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M4 4h11a4 4 0 014 4v13H8a4 4 0 01-4-4V4z"/><path d="M4 17a4 4 0 014-4h11"/></svg>\n <span>Docs</span>\n </a>\n <button class="tb-btn theme-toggle" type="button" title="Toggle theme" aria-label="Toggle theme" aria-pressed="false">\n <svg class="theme-icon-light" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg>\n <svg class="theme-icon-dark" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>\n </button>\n <button class="tb-btn tb-notifications" type="button" title="Notifications" aria-label="Notifications" aria-haspopup="dialog" aria-expanded="false">\n <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M12 3a6 6 0 00-6 6c0 6-3 7-3 7h18s-3-1-3-7a6 6 0 00-6-6z"/><path d="M10.5 21a1.5 1.5 0 003 0"/></svg>\n <span class="dot"></span>\n </button>\n <button class="tb-btn tb-messages" type="button" title="Messages" aria-label="Messages" aria-haspopup="dialog" aria-expanded="false">\n <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="3"/><path d="M2 7l10 6 10-6"/></svg>\n </button>\n <button class="tb-avatar" type="button" aria-label="Account menu" aria-haspopup="menu" aria-expanded="false">A</button>\n </div>\n </header>\n `}var c="gentelella:nav-open",d="gentelella:sidebar-rail";function h(){return window.matchMedia("(min-width: 769px)").matches}var p=[{kind:"info",from:"Stripe",text:"Payment of $499.00 received",time:"2m",unread:!0},{kind:"task",from:"GitHub",text:"PR #248 ready for review",time:"14m",unread:!0},{kind:"alert",from:"Linear",text:"GEN-128 marked as urgent",time:"1h",unread:!0},{kind:"info",from:"Vercel",text:"Deployment succeeded in 28s",time:"3h",unread:!1},{kind:"info",from:"Notion",text:"You were mentioned in Q2 OKRs",time:"Yesterday",unread:!1}],u=[{from:"Sarah K.",text:"Can you take a look at the design?",initials:"SK",color:"var(--primary)",time:"4m",unread:!0},{from:"Michael R.",text:"Lunch tomorrow at noon?",initials:"MR",color:"var(--blue)",time:"32m",unread:!0},{from:"Emily W.",text:"Sprint retro notes posted",initials:"EW",color:"var(--purple)",time:"2h",unread:!1},{from:"Diego R.",text:"Customer feedback summary ready",initials:"DR",color:"var(--yellow)",time:"Mon",unread:!1}],m=[{label:"Profile",action:()=>{window.location.href="profile.html"}},{label:"Account settings",action:()=>{window.location.href="settings.html"}},{label:"Theme generator",action:()=>{window.location.href="theme.html"}},{label:"Keyboard shortcuts",action:function(){const e=(e,t)=>`<div style="display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border-color-light);font-size:13px"><span style="color:var(--text)">${t}</span><span>${e.split("+").map(e=>`<kbd style="font-family:var(--font);font-size:11px;background:var(--bg-surface-secondary);border:1px solid var(--border-color);border-radius:3px;padding:2px 6px;margin-left:3px">${e}</kbd>`).join("")}</span></div>`;a({title:"Keyboard shortcuts",size:"md",body:`\n <div style="display:grid;grid-template-columns:1fr 1fr;gap:0 24px">\n <div>\n <div style="font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-muted);margin:4px 0 6px">Global</div>\n ${e("⌘+K","Open command palette")}\n ${e("⌘+/","This help")}\n ${e("Esc","Close modal / palette")}\n <div style="font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-muted);margin:14px 0 6px">Navigation</div>\n ${e("G then D","Go to dashboard")}\n ${e("G then I","Go to inbox")}\n ${e("G then K","Go to kanban")}\n </div>\n <div>\n <div style="font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-muted);margin:4px 0 6px">Inbox</div>\n ${e("J","Next message")}\n ${e("K","Previous message")}\n ${e("R","Reply")}\n ${e("S","Star message")}\n ${e("#","Move to trash")}\n ${e("C","Compose new")}\n <div style="font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-muted);margin:14px 0 6px">Editor</div>\n ${e("⌘+B","Bold")}\n ${e("⌘+I","Italic")}\n ${e("⌘+K","Insert link")}\n </div>\n </div>\n `,actions:[{label:"Close",variant:"primary"}]})}},"-",{label:"Help & support",action:()=>{window.location.href="faq.html"}},{label:"Lock screen",action:()=>{window.location.href="lock_screen.html"}},{label:"Sign out",action:function(){a({title:"Sign out?",size:"sm",body:'<p style="font-size:13px;color:var(--text-secondary);line-height:1.6;margin:0">You\'ll need to sign back in to access your dashboard. Any unsaved changes will be lost.</p>',actions:[{label:"Cancel",variant:"ghost"},{label:"Sign out",variant:"primary",action:()=>{e("Signed out",{variant:"success"}),setTimeout(()=>{window.location.href="login.html"},600)}}]})}}],g={},f=function(e,t,o){let r=Promise.resolve();if(t&&t.length>0){const e=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),n=o?.nonce||o?.getAttribute("nonce");a=t.map(t=>{var o;if(o=t=function(e){return"/"+e}(t),(t=import.meta.resolve?import.meta.resolve(o):new URL(o,import.meta.url).href)in g)return;g[t]=!0;const r=t.endsWith(".css");for(let n=e.length-1;n>=0;n--){const o=e[n];if(o.href===t&&(!r||"stylesheet"===o.rel))return}const a=document.createElement("link");return a.rel=r?"stylesheet":"modulepreload",r||(a.as="script"),a.crossOrigin="",a.href=t,n&&a.setAttribute("nonce",n),document.head.appendChild(a),r?new Promise((e,o)=>{a.addEventListener("load",e),a.addEventListener("error",()=>o(new Error(`Unable to preload CSS for ${t}`)))}):void 0}),r=Promise.all(a.map(e=>Promise.resolve(e).then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e}))))}var a;function n(e){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(const e of t||[])"rejected"===e.status&&n(e.reason);return e().catch(n)})},y=()=>{const e=getComputedStyle(document.documentElement);return{primary:e.getPropertyValue("--primary").trim(),primaryDk:e.getPropertyValue("--primary-dk").trim(),azure:e.getPropertyValue("--azure").trim(),blue:e.getPropertyValue("--blue").trim(),yellow:e.getPropertyValue("--yellow").trim(),green:e.getPropertyValue("--green").trim(),red:e.getPropertyValue("--red").trim(),purple:e.getPropertyValue("--purple").trim(),text:e.getPropertyValue("--text").trim(),textMuted:e.getPropertyValue("--text-muted").trim(),borderLight:e.getPropertyValue("--border-color-light").trim(),bgSurface:e.getPropertyValue("--bg-surface").trim()}},b="'Inter', -apple-system, BlinkMacSystemFont, sans-serif";function v(e){return{textStyle:{fontFamily:b,fontSize:11,color:e.textMuted},grid:{left:36,right:12,top:16,bottom:28,containLabel:!1},tooltip:{backgroundColor:e.bgSurface,borderColor:e.borderLight,borderWidth:1,padding:[8,10],textStyle:{color:e.text,fontSize:12,fontFamily:b},extraCssText:"box-shadow: 0 2px 8px rgba(30,38,51,0.08); border-radius: 6px;"}}}function x(e,t,o,r,a){const n=e.init(t);return n.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,trigger:"item",formatter:"{b}: {d}%"},legend:{show:!1},series:[{type:"pie",radius:["62%","88%"],center:["50%","50%"],avoidLabelOverlap:!1,label:{show:!1},labelLine:{show:!1},data:r.map(([e,t,r])=>({name:e,value:t,itemStyle:{color:o[r]||r,borderColor:o.bgSurface,borderWidth:2}}))}]}),n}var w={"dashboard-network":function(e,t,o){const r=e.init(t);return r.setOption({...v(o),tooltip:{...v(o).tooltip,trigger:"axis",axisPointer:{type:"line",lineStyle:{color:o.borderLight}}},legend:{show:!1},xAxis:{type:"category",data:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],boundaryGap:!1,axisLine:{lineStyle:{color:o.borderLight}},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10}},yAxis:{type:"value",splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLabel:{color:o.textMuted,fontSize:10},axisLine:{show:!1},axisTick:{show:!1}},series:[{name:"Sessions",type:"line",smooth:!0,symbol:"circle",symbolSize:5,showSymbol:!1,data:[420,580,510,720,680,790,752],lineStyle:{color:o.primary,width:2},itemStyle:{color:o.primary,borderColor:o.bgSurface,borderWidth:2},areaStyle:{color:new e.graphic.LinearGradient(0,0,0,1,[{offset:0,color:o.primary+"33"},{offset:1,color:o.primary+"00"}])}},{name:"Page views",type:"line",smooth:!0,showSymbol:!1,data:[320,460,410,580,540,660,620],lineStyle:{color:o.azure,width:1.5,type:"dashed"},itemStyle:{color:o.azure}}]}),r},"revenue-line":function(e,t,o){const r=e.init(t);return r.setOption({...v(o),tooltip:{...v(o).tooltip,trigger:"axis",valueFormatter:e=>"$"+e.toLocaleString()},xAxis:{type:"category",data:["May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Jan","Feb","Mar","Apr"],boundaryGap:!1,axisLine:{lineStyle:{color:o.borderLight}},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10}},yAxis:{type:"value",splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLabel:{color:o.textMuted,fontSize:10,formatter:e=>"$"+e/1e3+"k"},axisLine:{show:!1},axisTick:{show:!1}},series:[{type:"line",smooth:!0,showSymbol:!1,data:[12400,14200,15600,17800,19200,21500,23100,24800,26200,27900,29400,30100],lineStyle:{color:o.primary,width:2},itemStyle:{color:o.primary},areaStyle:{color:new e.graphic.LinearGradient(0,0,0,1,[{offset:0,color:o.primary+"40"},{offset:1,color:o.primary+"00"}])}}]}),r},"sales-bar":function(e,t,o){const r=[o.primary,o.azure,o.yellow,o.green,o.purple,o.red],a=e.init(t);return a.setOption({...v(o),grid:{...v(o).grid,left:28},tooltip:{...v(o).tooltip,trigger:"axis",axisPointer:{type:"shadow"}},xAxis:{type:"category",data:["Web","Mobile","Email","Social","Direct","Partner"],axisLine:{lineStyle:{color:o.borderLight}},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10}},yAxis:{type:"value",splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLabel:{color:o.textMuted,fontSize:10},axisLine:{show:!1},axisTick:{show:!1}},series:[{type:"bar",data:[82,96,64,45,88,58].map((e,t)=>({value:e,itemStyle:{color:r[t],borderRadius:[4,4,0,0]}})),barWidth:"52%"}]}),a},"traffic-donut":function(e,t,o){const r=e.init(t);return r.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,trigger:"item",formatter:"{b}: {d}%"},legend:{show:!1},series:[{type:"pie",radius:["62%","88%"],center:["50%","50%"],avoidLabelOverlap:!1,label:{show:!1},labelLine:{show:!1},data:[{value:40,name:"Organic",itemStyle:{color:o.primary,borderColor:o.bgSurface,borderWidth:2}},{value:20,name:"Direct",itemStyle:{color:o.azure,borderColor:o.bgSurface,borderWidth:2}},{value:15,name:"Referral",itemStyle:{color:o.yellow,borderColor:o.bgSurface,borderWidth:2}},{value:12,name:"Social",itemStyle:{color:o.purple,borderColor:o.bgSurface,borderWidth:2}},{value:13,name:"Email",itemStyle:{color:o.green,borderColor:o.bgSurface,borderWidth:2}}]}]}),r},"device-usage":(e,t,o)=>x(e,t,o,[["iOS",30,"primary"],["Android",25,"azure"],["Desktop",20,"yellow"],["Tablet",15,"purple"],["Other",10,"red"]]),browsers:(e,t,o)=>x(e,t,o,[["Chrome",62,"primary"],["Safari",25,"azure"],["Firefox",13,"yellow"]]),"stacked-area":function(e,t,o){const r=[{name:"Pro",color:o.primary,data:[12,14,15,18,19,22,23,25,26,28,29,30]},{name:"Business",color:o.azure,data:[8,9,10,12,13,14,16,18,19,20,22,24]},{name:"Starter",color:o.yellow,data:[4,5,5,6,7,7,8,8,9,9,10,11]}],a=e.init(t);return a.setOption({...v(o),tooltip:{...v(o).tooltip,trigger:"axis"},legend:{data:r.map(e=>e.name),bottom:0,itemGap:16,textStyle:{color:o.textMuted,fontSize:11},icon:"circle",itemWidth:8,itemHeight:8},grid:{...v(o).grid,bottom:36},xAxis:{type:"category",data:["May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Jan","Feb","Mar","Apr"],boundaryGap:!1,axisLine:{lineStyle:{color:o.borderLight}},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10}},yAxis:{type:"value",splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLabel:{color:o.textMuted,fontSize:10,formatter:"{value}k"},axisLine:{show:!1},axisTick:{show:!1}},series:r.map(t=>({name:t.name,type:"line",stack:"total",smooth:!0,showSymbol:!1,lineStyle:{color:t.color,width:1.5},itemStyle:{color:t.color},areaStyle:{color:new e.graphic.LinearGradient(0,0,0,1,[{offset:0,color:t.color+"55"},{offset:1,color:t.color+"08"}])},data:t.data}))}),a},"horizontal-bar":function(e,t,o){const r=[["United States",4280,o.primary],["Germany",3140,o.azure],["United Kingdom",2680,o.purple],["Japan",1920,o.yellow],["Brazil",1430,o.green],["Australia",1180,o.cyan],["Canada",960,o.red]],a=e.init(t);return a.setOption({...v(o),tooltip:{...v(o).tooltip,trigger:"axis",axisPointer:{type:"shadow"},valueFormatter:e=>e.toLocaleString()+" users"},grid:{...v(o).grid,left:90,right:24},xAxis:{type:"value",splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10}},yAxis:{type:"category",data:r.map(e=>e[0]).reverse(),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o.text,fontSize:11.5}},series:[{type:"bar",barWidth:"52%",data:r.map(e=>({value:e[1],itemStyle:{color:e[2],borderRadius:[0,4,4,0]}})).reverse()}]}),a},"mixed-bar-line":function(e,t,o){const r=e.init(t);return r.setOption({...v(o),tooltip:{...v(o).tooltip,trigger:"axis"},legend:{data:["Orders","Avg order value"],bottom:0,itemGap:16,icon:"circle",itemWidth:8,itemHeight:8,textStyle:{color:o.textMuted,fontSize:11}},grid:{...v(o).grid,right:44,bottom:36},xAxis:{type:"category",data:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug"],axisLine:{lineStyle:{color:o.borderLight}},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10}},yAxis:[{type:"value",name:"Orders",nameTextStyle:{color:o.textMuted,fontSize:10},splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLabel:{color:o.textMuted,fontSize:10},axisLine:{show:!1},axisTick:{show:!1}},{type:"value",name:"AOV $",nameTextStyle:{color:o.textMuted,fontSize:10},splitLine:{show:!1},axisLabel:{color:o.textMuted,fontSize:10,formatter:"${value}"},axisLine:{show:!1},axisTick:{show:!1}}],series:[{name:"Orders",type:"bar",yAxisIndex:0,data:[240,312,285,360,420,395,460,510],barWidth:"40%",itemStyle:{color:o.azure,borderRadius:[4,4,0,0]}},{name:"Avg order value",type:"line",yAxisIndex:1,data:[82,88,86,92,95,94,99,104],smooth:!0,symbol:"circle",symbolSize:6,lineStyle:{color:o.primary,width:2},itemStyle:{color:o.primary,borderColor:o.bgSurface,borderWidth:2}}]}),r},radar:function(e,t,o){const r=e.init(t);return r.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,trigger:"item"},legend:{data:["v3","v4"],bottom:0,itemGap:16,icon:"circle",itemWidth:8,itemHeight:8,textStyle:{color:o.textMuted,fontSize:11}},radar:{indicator:[{name:"Performance",max:100},{name:"Bundle size",max:100},{name:"A11y",max:100},{name:"DX",max:100},{name:"Polish",max:100},{name:"Coverage",max:100}],center:["50%","46%"],radius:"64%",splitNumber:4,axisName:{color:o.textMuted,fontSize:11},splitLine:{lineStyle:{color:o.borderLight}},splitArea:{areaStyle:{color:["transparent"]}},axisLine:{lineStyle:{color:o.borderLight}}},series:[{type:"radar",symbol:"circle",symbolSize:5,data:[{name:"v3",value:[72,58,65,70,60,80],lineStyle:{color:o.azure,width:1.5,type:"dashed"},itemStyle:{color:o.azure},areaStyle:{color:o.azure+"22"}},{name:"v4",value:[94,90,86,92,89,95],lineStyle:{color:o.primary,width:2},itemStyle:{color:o.primary,borderColor:o.bgSurface,borderWidth:2},areaStyle:{color:o.primary+"33"}}]}]}),r},gauge:function(e,t,o){const r=e.init(t);return r.setOption({textStyle:{fontFamily:b,color:o.textMuted},series:[{type:"gauge",startAngle:210,endAngle:-30,min:0,max:100,progress:{show:!0,width:14,itemStyle:{color:o.primary}},axisLine:{lineStyle:{width:14,color:[[1,o.borderLight]]}},pointer:{show:!1},axisTick:{show:!1},splitLine:{show:!1},axisLabel:{show:!1},anchor:{show:!1},title:{show:!1},detail:{valueAnimation:!0,offsetCenter:[0,0],formatter:"{value}%",color:o.text,fontSize:28,fontWeight:700,fontFamily:b},data:[{value:78}]}]}),r},scatter:function(e,t,o){const r=e.init(t);return r.setOption({...v(o),tooltip:{...v(o).tooltip,formatter:e=>`${e.value[2]}k MAU<br>${e.value[0]}h/wk · ${e.value[1]}% retention`},grid:{...v(o).grid,left:40,right:24},xAxis:{type:"value",name:"Hours/week",nameTextStyle:{color:o.textMuted,fontSize:10},splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLabel:{color:o.textMuted,fontSize:10},axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",name:"Retention",nameTextStyle:{color:o.textMuted,fontSize:10},splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLabel:{color:o.textMuted,fontSize:10,formatter:"{value}%"},axisLine:{show:!1},axisTick:{show:!1}},series:[{type:"scatter",data:[[2.1,32,6],[3.4,41,12],[4.8,56,22],[6.1,64,32],[7.2,71,44],[8.6,78,58],[10.2,84,72],[11.5,89,88],[4.1,38,14],[5.8,51,28],[7.9,66,48],[9.1,74,60]],symbolSize:e=>3.4*Math.sqrt(e[2]),itemStyle:{color:new e.graphic.RadialGradient(.4,.3,1,[{offset:0,color:o.primary+"ff"},{offset:1,color:o.primary+"55"}]),borderColor:o.bgSurface,borderWidth:1}}]}),r},heatmap:function(e,t,o){const r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],a=["0","3","6","9","12","15","18","21"],n=[];for(let l=0;r.length>l;l+=1)for(let e=0;a.length>e;e+=1){const t=1-Math.abs(e-4)/6,o=1>l||l>5?.45:1,r=.55+.45*Math.random(),a=Math.max(0,Math.round(t*o*r*100));n.push([e,l,a])}const i=e.init(t);return i.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,formatter:e=>`${r[e.value[1]]} ${a[e.value[0]]}:00<br><strong>${e.value[2]}</strong> events`},grid:{left:50,right:18,top:12,bottom:30,containLabel:!1},xAxis:{type:"category",data:a,splitArea:{show:!0},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10,formatter:"{value}:00"}},yAxis:{type:"category",data:r,splitArea:{show:!0},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10}},visualMap:{min:0,max:100,show:!1,inRange:{color:[o.borderLight,o.primary]}},series:[{type:"heatmap",data:n,label:{show:!1},itemStyle:{borderColor:o.bgSurface,borderWidth:2},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(0,0,0,0.18)"}}}]}),i},funnel:function(e,t,o){const r=e.init(t);return r.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,trigger:"item",formatter:"{b}: {c}"},series:[{type:"funnel",left:24,right:24,top:12,bottom:12,width:"auto",min:0,max:100,gap:2,label:{show:!0,position:"inside",color:"#fff",fontSize:12,fontWeight:600,fontFamily:b,formatter:"{b}: {c}"},labelLine:{show:!1},itemStyle:{borderColor:o.bgSurface,borderWidth:1},data:[{value:100,name:"Visitors",itemStyle:{color:o.primary}},{value:62,name:"Sign-ups",itemStyle:{color:o.azure}},{value:38,name:"Activated",itemStyle:{color:o.purple}},{value:18,name:"Trial",itemStyle:{color:o.yellow}},{value:9,name:"Paid",itemStyle:{color:o.green}}]}]}),r},candlestick:function(e,t,o){const r=[[120,132,118,135],[132,128,125,138],[128,142,126,145],[142,140,135,148],[140,156,138,158],[156,162,152,168],[162,158,154,166],[158,172,156,175],[172,168,164,178],[168,184,166,188],[184,180,176,190],[180,196,178,200],[196,188,184,202],[188,204,186,208]],a=r.map((e,t)=>`D${t+1}`),n=e.init(t);return n.setOption({...v(o),tooltip:{...v(o).tooltip,trigger:"axis",axisPointer:{type:"cross"}},grid:{...v(o).grid,left:40,right:24},xAxis:{type:"category",data:a,axisLine:{lineStyle:{color:o.borderLight}},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10}},yAxis:{type:"value",scale:!0,splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLabel:{color:o.textMuted,fontSize:10,formatter:"${value}"},axisLine:{show:!1},axisTick:{show:!1}},series:[{type:"candlestick",data:r,itemStyle:{color:o.green,color0:o.red,borderColor:o.green,borderColor0:o.red}}]}),n},treemap:function(e,t,o){const r=e.init(t);return r.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,formatter:e=>`${e.name}: ${e.value.toLocaleString()}`},series:[{type:"treemap",roam:!1,nodeClick:!1,breadcrumb:{show:!1},label:{show:!0,color:"#fff",fontSize:11,fontWeight:600,fontFamily:b},itemStyle:{borderColor:o.bgSurface,borderWidth:2,gapWidth:2},levels:[{itemStyle:{borderColor:o.bgSurface,borderWidth:2,gapWidth:2}}],data:[{name:"SaaS · Pro",value:4280,itemStyle:{color:o.primary}},{name:"SaaS · Business",value:3140,itemStyle:{color:o.primaryDk}},{name:"SaaS · Starter",value:1180,itemStyle:{color:o.azure}},{name:"Marketplace",value:2680,itemStyle:{color:o.purple}},{name:"Services",value:1920,itemStyle:{color:o.yellow}},{name:"Add-ons",value:1430,itemStyle:{color:o.green}},{name:"Training",value:960,itemStyle:{color:o.cyan}},{name:"Misc",value:540,itemStyle:{color:o.red}}]}]}),r},sankey:function(e,t,o){const r=e.init(t);return r.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,trigger:"item"},series:[{type:"sankey",left:12,right:100,top:12,bottom:12,nodeWidth:14,nodeGap:12,data:[{name:"Search",itemStyle:{color:o.primary}},{name:"Direct",itemStyle:{color:o.azure}},{name:"Social",itemStyle:{color:o.purple}},{name:"Sign-up",itemStyle:{color:o.yellow}},{name:"Trial",itemStyle:{color:o.green}},{name:"Paid",itemStyle:{color:o.primaryDk}},{name:"Churned",itemStyle:{color:o.red}}],links:[{source:"Search",target:"Sign-up",value:4200},{source:"Direct",target:"Sign-up",value:1800},{source:"Social",target:"Sign-up",value:1100},{source:"Sign-up",target:"Trial",value:4400},{source:"Sign-up",target:"Churned",value:2700},{source:"Trial",target:"Paid",value:1850},{source:"Trial",target:"Churned",value:2550}],label:{color:o.text,fontSize:11,fontFamily:b},lineStyle:{color:"gradient",curveness:.5,opacity:.55},emphasis:{focus:"adjacency",lineStyle:{opacity:.9}}}]}),r},"calendar-heatmap":function(e,t,o){const r=new Date,a=new Date(r);a.setMonth(a.getMonth()-11),a.setDate(1);const n=[];for(let l=new Date(a);r>=l;l.setDate(l.getDate()+1)){const e=l.getDay(),t=Math.max(0,Math.round((1>e||e>5?.4:1)*(100*Math.random())));n.push([l.toISOString().slice(0,10),t])}const i=e.init(t);return i.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,formatter:e=>`${e.value[0]}: ${e.value[1]} contributions`},visualMap:{min:0,max:100,show:!1,inRange:{color:[o.borderLight,o.primary,o.primaryDk]}},calendar:{top:30,left:24,right:24,bottom:12,cellSize:["auto",14],range:[a.toISOString().slice(0,7),r.toISOString().slice(0,10)],itemStyle:{color:o.bgSurfaceSecondary||o.borderLight,borderColor:o.bgSurface,borderWidth:2},splitLine:{show:!1},yearLabel:{show:!1},monthLabel:{color:o.textMuted,fontSize:10,fontFamily:b},dayLabel:{color:o.textMuted,fontSize:10,fontFamily:b,firstDay:1}},series:{type:"heatmap",coordinateSystem:"calendar",data:n}}),i},gantt:function(e,t,o){const r=new Date,a=e=>{const t=new Date(r);return t.setDate(t.getDate()+e),t.getTime()},n=[[0,a(-12),a(-2),"Discovery & research",o.azure],[1,a(-8),a(8),"Design system v4",o.primary],[2,a(-3),a(14),"Build inbox",o.purple],[3,a(2),a(10),"Build kanban",o.yellow],[4,a(7),a(20),"Charts gallery",o.green],[5,a(14),a(28),"Theme generator",o.red],[6,a(20),a(35),"PWA + screenshots",o.cyan]],i=n.map(e=>e[3]),l=e.init(t);return l.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,formatter:e=>{const[,t,o,r]=e.value,a=e=>new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric"});return`<strong>${r}</strong><br>${a(t)} → ${a(o)}`}},grid:{left:132,right:24,top:12,bottom:28,containLabel:!1},xAxis:{type:"time",splitLine:{lineStyle:{color:o.borderLight,type:[4,3]}},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:10}},yAxis:{type:"category",data:i,inverse:!0,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o.text,fontSize:11.5,fontFamily:b}},series:[{type:"custom",renderItem:(e,t)=>{const o=t.value(0),r=t.coord([t.value(1),o]),a=t.coord([t.value(2),o]),n=.55*t.size([0,1])[1];return{type:"rect",shape:{x:r[0],y:r[1]-n/2,width:a[0]-r[0],height:n,r:4},style:{fill:t.value(4)}}},encode:{x:[1,2],y:0,tooltip:[3,1,2]},data:n}]}),l},"polar-bar":function(e,t,o){const r=[o.primary,o.azure,o.purple,o.yellow,o.green,o.red],a=e.init(t);return a.setOption({textStyle:{fontFamily:b,color:o.textMuted},tooltip:{...v(o).tooltip,formatter:"{b}: {c}"},polar:{radius:["28%","78%"],center:["50%","52%"]},radiusAxis:{max:100,axisLine:{show:!1},axisTick:{show:!1},splitLine:{show:!1},axisLabel:{show:!1}},angleAxis:{type:"category",data:["Jan","Feb","Mar","Apr","May","Jun"],axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o.textMuted,fontSize:11},startAngle:90},series:[{type:"bar",data:[78,64,92,56,71,85].map((e,t)=>({value:e,itemStyle:{color:r[t%r.length],borderRadius:[4,4,0,0]}})),coordinateSystem:"polar",barCategoryGap:"20%"}]}),a}};function k(e){const t=String(e??"");return/[",\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}var S=null,L=null,M=null,C=[],$=[],E=0;function A(){const e="dark"===document.documentElement.getAttribute("data-theme")?"light":"dark";try{localStorage.setItem("theme",e)}catch(o){}document.documentElement.setAttribute("data-theme",e);const t=document.querySelector(".theme-toggle");t&&t.setAttribute("aria-pressed","dark"===e?"true":"false")}function z(e,t){if(!e)return 0;const o=t,r=e;let a=0,n=0,i=0,l=-2;for(;r.length>n&&o.length>a;)o[a]===r[n]?(0!==a&&" "!==o[a-1]&&"-"!==o[a-1]&&"_"!==o[a-1]||(i-=6),l===a-1&&(i-=4),l=a,n+=1):i+=1,a+=1;return r.length>n?1/0:(i+=.1*(o.length-r.length),i)}function T(){const e=L.value.trim().toLowerCase();$=e?C.map(t=>({it:t,s:z(e,t.keywords)})).filter(e=>e.s!==1/0).sort((e,t)=>e.s-t.s).map(e=>e.it):C.slice(),E=0,_()}function _(){if(!$.length)return void(M.innerHTML='<div class="cmdk-empty">No results</div>');const e=new Set,t=$.map((t,o)=>{const r="action"===t.kind?"Actions":t.section;let a="";return e.has(r)||(e.add(r),a=`<div class="cmdk-section">${r}</div>`),`${a}<button type="button" class="cmdk-item${o===E?" active":""}" data-i="${o}">\n <span class="cmdk-item-icon" aria-hidden="true">${"action"===t.kind?'<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M8 1v14M1 8h14"/></svg>':'<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 4h12M2 8h12M2 12h8"/></svg>'}</span>\n <span class="cmdk-item-label">${n=t.label,String(n).replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[e]))}</span>\n <span class="cmdk-item-kbd" aria-hidden="true">↵</span>\n </button>`;var n}).join("");M.innerHTML=t;const o=M.querySelector(".cmdk-item.active");o&&o.scrollIntoView({block:"nearest"})}function D(e){$.length&&(E=(E+e+$.length)%$.length,_())}function O(e){const t=$[e];t&&(B(),"action"===t.kind?"function"==typeof t.action&&t.action():t.href&&(window.location.href=t.href))}function P(){S||(C=function(){const t=[];return n.forEach(e=>{e.items.forEach(o=>{t.push({kind:"page",label:o.text,section:e.label,href:o.href,keywords:`${o.text} ${e.label} ${o.key}`.toLowerCase()})})}),[{label:"Toggle theme",keywords:"theme dark light mode toggle",action:A},{label:"Open profile",keywords:"profile account user me",action:()=>{window.location.href="profile.html"}},{label:"Open settings",keywords:"settings preferences config",action:()=>{window.location.href="settings.html"}},{label:"Theme generator",keywords:"theme color customize brand",action:()=>{window.location.href="theme.html"}},{label:"Help & support",keywords:"help faq support docs",action:()=>{window.location.href="faq.html"}},{label:"Sign out",keywords:"sign out logout exit",action:()=>a({title:"Sign out?",size:"sm",body:'<p style="font-size:13px;color:var(--text-secondary);line-height:1.6;margin:0">You\'ll need to sign back in to access your dashboard.</p>',actions:[{label:"Cancel",variant:"ghost"},{label:"Sign out",variant:"primary",action:()=>{e("Signed out",{variant:"success"}),setTimeout(()=>{window.location.href="login.html"},600)}}]})}].forEach(e=>t.push({kind:"action",...e})),t}(),$=C.slice(),E=0,(S=document.createElement("div")).className="cmdk-backdrop",S.innerHTML='\n <div class="cmdk-dialog" role="dialog" aria-modal="true" aria-label="Command palette">\n <div class="cmdk-input-wrap">\n <svg class="cmdk-search-icon" width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="7" cy="7" r="5"/><path d="M11 11l3.5 3.5"/></svg>\n <input class="cmdk-input" type="text" placeholder="Search pages or run a command…" autocomplete="off" spellcheck="false" aria-label="Search">\n <kbd class="cmdk-esc">esc</kbd>\n </div>\n <div class="cmdk-list" role="listbox"></div>\n <div class="cmdk-footer">\n <span><kbd>↑</kbd><kbd>↓</kbd> navigate</span>\n <span><kbd>↵</kbd> select</span>\n <span><kbd>esc</kbd> close</span>\n </div>\n </div>\n ',document.body.appendChild(S),document.body.classList.add("cmdk-open"),L=S.querySelector(".cmdk-input"),M=S.querySelector(".cmdk-list"),L.addEventListener("input",T),L.addEventListener("keydown",e=>{"ArrowDown"===e.key?(e.preventDefault(),D(1)):"ArrowUp"===e.key?(e.preventDefault(),D(-1)):"Enter"===e.key?(e.preventDefault(),O(E)):"Escape"===e.key&&(e.preventDefault(),B())}),M.addEventListener("click",e=>{const t=e.target.closest(".cmdk-item");t&&O(parseInt(t.dataset.i,10))}),S.addEventListener("click",e=>{e.target===S&&B()}),_(),L.focus())}function B(){S&&(S.remove(),S=null,L=null,M=null,document.body.classList.remove("cmdk-open"))}var q={print:/^print$/i,export:/^(export|download)( pdf| csv)?$/i,refresh:/^refresh$/i,share:/^share$/i,compose:/^(compose|new chat|new message|new email)$/i,newDeal:/^(new deal|new project|new event|new task|\+ ?new)$/i,add:/^(\+ ?invite|\+ ?invite user|\+ ?invite member|invite|add (member|user|customer|contact))$/i};function j(e){return(e.getAttribute("aria-label")||e.textContent||"").trim().replace(/\s+/g," ")}var I={print:function(){window.print()},export:t=>function(){const t=document.querySelector("table[data-export]");if(t){const e=t.closest(".card")?.querySelector("[data-export-btn]");if(e)return void e.click()}const o=(new Date).toISOString().slice(0,19).replace(/:/g,"-"),r=`${document.title.replace(/\s+\|.*$/,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"export"}-${o}.json`,a=JSON.stringify({page:document.title,url:location.href,exportedAt:(new Date).toISOString(),note:"Replace this stub with your real data exporter — the same download flow works."},null,2),n=new Blob([a],{type:"application/json"}),i=URL.createObjectURL(n),l=document.createElement("a");l.href=i,l.download=r,document.body.appendChild(l),l.click(),l.remove(),setTimeout(()=>URL.revokeObjectURL(i),0),e(`Exported ${r}`,{variant:"success"})}(),refresh:t=>function(t){const o=t.closest(".card");o&&(o.classList.add("is-refreshing"),setTimeout(()=>o.classList.remove("is-refreshing"),700)),document.documentElement.dispatchEvent(new CustomEvent("themechange")),e("Refreshed",{variant:"success"})}(t),share:()=>async function(){try{navigator.share?await navigator.share({title:document.title,url:location.href}):(await navigator.clipboard.writeText(location.href),e("Link copied to clipboard",{variant:"success"}))}catch(t){}}(),compose:()=>{a({title:"New message",size:"lg",body:'\n <div class="form-group">\n <label class="form-label">To</label>\n <input class="form-control" type="email" placeholder="name@example.com">\n </div>\n <div class="form-group">\n <label class="form-label">Subject</label>\n <input class="form-control" placeholder="Subject">\n </div>\n <div class="form-group" style="margin-bottom:0">\n <label class="form-label">Message</label>\n <textarea class="form-control" rows="6" placeholder="Write your message…"></textarea>\n </div>\n ',actions:[{label:"Discard",variant:"ghost"},{label:"Save draft",variant:"outline",action:()=>e("Draft saved",{variant:"success"})},{label:"Send",variant:"primary",action:()=>e("Message sent",{variant:"success"})}]})},newDeal:t=>function(t){const o=/event/i.test(t),r=/task/i.test(t),n=/deal/i.test(t),i=/project/i.test(t),l=o?"New event":r?"New task":n?"New deal":i?"New project":"Create new";a({title:l,body:`\n <div class="form-group">\n <label class="form-label">${o?"Event title":r?"Task":n?"Deal name":"Title"}</label>\n <input class="form-control" placeholder="${o?"Q2 design review":"Untitled"}" autofocus>\n </div>\n ${n?'\n <div class="form-row">\n <div class="form-group"><label class="form-label">Value (USD)</label><input class="form-control" type="number" placeholder="25000"></div>\n <div class="form-group"><label class="form-label">Stage</label>\n <select class="form-control"><option>Lead</option><option>Qualified</option><option>Proposal</option><option>Negotiation</option><option>Closed won</option></select>\n </div>\n </div>\n ':""}\n ${o?'\n <div class="form-row">\n <div class="form-group"><label class="form-label">Start</label><input class="form-control" type="datetime-local"></div>\n <div class="form-group"><label class="form-label">End</label><input class="form-control" type="datetime-local"></div>\n </div>\n ':""}\n ${i?'\n <div class="form-group">\n <label class="form-label">Description</label>\n <textarea class="form-control" rows="3" placeholder="What problem are we solving?"></textarea>\n </div>\n ':""}\n <div class="form-group" style="margin-bottom:0">\n <label class="form-label">${o?"Notes":"Description"}</label>\n <textarea class="form-control" rows="3" placeholder="Optional…"></textarea>\n </div>\n `,size:"md",actions:[{label:"Cancel",variant:"ghost"},{label:"Create",variant:"primary",action:()=>e(`${l} saved`,{variant:"success"})}]})}(j(t)),add:()=>{a({title:"Invite member",body:'\n <div class="form-group">\n <label class="form-label">Email address</label>\n <input class="form-control" type="email" placeholder="colleague@example.com" autofocus>\n </div>