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 70.3 kB
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/vendor-echarts-DvA3mx-H.js","js/rolldown-runtime-_5RX-BWT.js","js/vendor-tables-DLiTxc7C.js","js/inbox-BzqlieBV.js","js/toast-CBtjS_PZ.js","js/modal-MTuCfURV.js","js/data-adapter-B-GF0xCf.js","js/calendar-CKzvt1aG.js","js/settings-3FvRkxWt.js"])))=>i.map(i=>d[i]);
import{t as e}from"./toast-CBtjS_PZ.js";import{n as t,r as o,t as r}from"./menus-BJGD7GPP.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  `}var s=(()=>{const e=new Map([["Home","index.html"]]);for(const t of n)for(const o of t.items){const t=o.href||o.children&&o.children[0].href;t&&!e.has(o.text)&&e.set(o.text,t);for(const r of o.children||[])e.has(r.text)||e.set(r.text,r.href)}return e})();function c(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&&e.length?e:["Home"]).map((e,t,o)=>{const{text:r,href:a}=function(e){const t=String(e),o=t.indexOf("|"),r=(-1===o?t:t.slice(0,o)).trim();return{text:r,href:-1===o?s.get(r):t.slice(o+1).trim()}}(e),n=t===o.length-1;return(t>0?'<span class="sep" aria-hidden="true">›</span>':"")+(!n&&a?`<a href="${i=a,String(i).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;")}">${r}</a>`:`<span${n?' class="current" aria-current="page"':""}>${r}</span>`);var i}).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 d="gentelella:nav-open",h="gentelella:sidebar-rail";function p(){return window.matchMedia("(min-width: 769px)").matches}var u=[{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}],m=[{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}],g=[{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)}}]})}}],f={},y=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 f)return;f[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)})},b=()=>{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()}},v="'Inter', -apple-system, BlinkMacSystemFont, sans-serif";function x(e){return{textStyle:{fontFamily:v,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:v},extraCssText:"box-shadow: 0 2px 8px rgba(30,38,51,0.08); border-radius: 6px;"}}}function w(e,t,o,r,a){const n=e.init(t);return n.setOption({textStyle:{fontFamily:v,color:o.textMuted},tooltip:{...x(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 k={"dashboard-network":function(e,t,o){const r=e.init(t);return r.setOption({...x(o),tooltip:{...x(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({...x(o),tooltip:{...x(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({...x(o),grid:{...x(o).grid,left:28},tooltip:{...x(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:v,color:o.textMuted},tooltip:{...x(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)=>w(e,t,o,[["iOS",30,"primary"],["Android",25,"azure"],["Desktop",20,"yellow"],["Tablet",15,"purple"],["Other",10,"red"]]),browsers:(e,t,o)=>w(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({...x(o),tooltip:{...x(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:{...x(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({...x(o),tooltip:{...x(o).tooltip,trigger:"axis",axisPointer:{type:"shadow"},valueFormatter:e=>e.toLocaleString()+" users"},grid:{...x(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({...x(o),tooltip:{...x(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:{...x(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:v,color:o.textMuted},tooltip:{...x(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:v,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:v},data:[{value:78}]}]}),r},scatter:function(e,t,o){const r=e.init(t);return r.setOption({...x(o),tooltip:{...x(o).tooltip,formatter:e=>`${e.value[2]}k MAU<br>${e.value[0]}h/wk · ${e.value[1]}% retention`},grid:{...x(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:v,color:o.textMuted},tooltip:{...x(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:v,color:o.textMuted},tooltip:{...x(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:v,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({...x(o),tooltip:{...x(o).tooltip,trigger:"axis",axisPointer:{type:"cross"}},grid:{...x(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:v,color:o.textMuted},tooltip:{...x(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:v},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:v,color:o.textMuted},tooltip:{...x(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:v},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:v,color:o.textMuted},tooltip:{...x(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:v},dayLabel:{color:o.textMuted,fontSize:10,fontFamily:v,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:v,color:o.textMuted},tooltip:{...x(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:v}},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:v,color:o.textMuted},tooltip:{...x(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 S(e){const t=String(e??"");return/[",\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}var L=null,M=null,C=null,E=[],$=[],A=0;function z(){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 T(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 _(){const e=M.value.trim().toLowerCase();$=e?E.map(t=>({it:t,s:T(e,t.keywords)})).filter(e=>e.s!==1/0).sort((e,t)=>e.s-t.s).map(e=>e.it):E.slice(),A=0,D()}function D(){if(!$.length)return void(C.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===A?" 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("");C.innerHTML=t;const o=C.querySelector(".cmdk-item.active");o&&o.scrollIntoView({block:"nearest"})}function O(e){$.length&&(A=(A+e+$.length)%$.length,D())}function P(e){const t=$[e];t&&(q(),"action"===t.kind?"function"==typeof t.action&&t.action():t.href&&(window.location.href=t.href))}function B(){L||(E=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:z},{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}(),$=E.slice(),A=0,(L=document.createElement("div")).className="cmdk-backdrop",L.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(L),document.body.classList.add("cmdk-open"),M=L.querySelector(".cmdk-input"),C=L.querySelector(".cmdk-list"),M.addEventListener("input",_),M.addEventListener("keydown",e=>{"ArrowDown"===e.key?(e.preventDefault(),O(1)):"ArrowUp"===e.key?(e.preventDefault(),O(-1)):"Enter"===e.key?(e.preventDefault(),P(A)):"Escape"===e.key&&(e.preventDefault(),q())}),C.addEventListener("click",e=>{const t=e.target.closest(".cmdk-item");t&&P(parseInt(t.dataset.i,10))}),L.addEventListener("click",e=>{e.target===L&&q()}),D(),M.focus())}function q(){L&&(L.remove(),L=null,M=null,C=null,document.body.classList.remove("cmdk-open"))}var j={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 I(e){return(e.getAttribute("aria-label")||e.textContent||"").trim().replace(/\s+/g," ")}var N={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"})}]})}(I(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>\n      <div class="form-group">\n        <label class="form-label">Role</label>\n        <select class="form-control"><option>Member</option><option>Admin</option><option>Owner</option></select>\n      </div>\n      <div class="form-group" style="margin-bottom:0">\n        <label class="form-label">Personal message (optional)</label>\n        <textarea class="form-control" rows="3" placeholder="Welcome to the team!"></textarea>\n      </div>\n    ',actions:[{label:"Cancel",variant:"ghost"},{label:"Send invite",variant:"primary",action:()=>e("Invite sent",{variant:"success"})}]})}};"admin"===document.body.dataset.shell&&(function(){const e=document.body;if(e.querySelector(".sidebar"))return;const t=e.dataset.page||"",o=e.dataset.breadcrumb?e.dataset.breadcrumb.split(">").map(e=>e.trim()).filter(Boolean):["Home"],{sidebar:r,topbar:a,footer:n}=function({activeKey:e="",breadcrumb:t=["Home"]}={}){return{sidebar:l(e),topbar:c(t),footer:'\n    <footer class="footer">\n      <span>Gentelella — free admin dashboard template by <a href="https://colorlib.com">Colorlib</a></span>\n      <span>v4.1.1 · <a href="https://github.com/ColorlibHQ/gentelella/blob/master/LICENSE.txt" target="_blank" rel="noopener">MIT</a></span>\n    </footer>\n  '}}({activeKey:t,breadcrumb:o}),i=document.createElement("template");i.innerHTML=r.trim(),e.insertBefore(i.content.firstElementChild,e.firstChild);const s=e.querySelector("main.main");i.innerHTML=a.trim(),s&&(e.insertBefore(i.content.firstElementChild,s),i.innerHTML=n.trim(),s.appendChild(i.content.firstElementChild))}(),function(){const e=[...document.querySelectorAll(".sidebar .nav-tree")];if(!e.length)return;const t=t=>{e.forEach(e=>{if(e===t)return;e.classList.remove("open");const o=e.querySelector(".nav-toggle");o&&o.setAttribute("aria-expanded","false")})},o=function(){try{const e=sessionStorage.getItem(d);if(null===e)return null;const t=parseInt(e,10);return Number.isNaN(t)?null:t}catch(e){return null}}();if(null!==o&&e[o]){t(e[o]),e[o].classList.add("open");const r=e[o].querySelector(".nav-toggle");r&&r.setAttribute("aria-expanded","true")}e.forEach((e,o)=>{const r=e.querySelector(".nav-toggle");r&&r.addEventListener("click",a=>{a.preventDefault();const n=!e.classList.contains("open");t(n?e:null),e.classList.toggle("open",n),r.setAttribute("aria-expanded",n?"true":"false"),function(e){try{null===e?sessionStorage.removeItem(d):sessionStorage.setItem(d,String(e))}catch(t){}}(n?o:null)})})}(),function(){const e=document.querySelector(".sidebar"),o=document.querySelector(".sidebar-toggle");if(!e||!o)return;let r=document.querySelector(".sidebar-backdrop");r||(r=document.createElement("div"),r.className="sidebar-backdrop",r.hidden=!0,document.body.appendChild(r));const a=()=>{e.classList.remove("open"),r.hidden=!0,o.setAttribute("aria-expanded","false"),document.body.classList.remove("sidebar-open")},n=e=>{document.body.classList.toggle("sidebar-rail",e),o.setAttribute("aria-pressed",e?"true":"false"),o.setAttribute("aria-label",e?"Expand sidebar":"Collapse sidebar");try{localStorage.setItem(h,e?"1":"0")}catch(t){}e&&document.querySelectorAll(".sidebar .nav-link").forEach(e=>{const t=e.querySelector(".nav-text")?.textContent.trim();t&&e.setAttribute("data-rail-label",t)})};let i="0";try{i=localStorage.getItem(h)||"0"}catch(l){}"1"===i&&p()&&n(!0),o.addEventListener("click",()=>{p()?n(!document.body.classList.contains("sidebar-rail")):e.classList.contains("open")?a():(e.classList.add("open"),r.hidden=!1,o.setAttribute("aria-expanded","true"),document.body.classList.add("sidebar-open"))}),r.addEventListener("click",a),document.addEventListener("keydown",t=>{"Escape"===t.key&&e.classList.contains("open")&&a()}),window.matchMedia("(min-width: 769px)").addEventListener("change",e=>{if(e.matches){a();let e="0";try{e=localStorage.getItem(h)||"0"}catch(t){}n("1"===e)}else document.body.classList.remove("sidebar-rail")}),document.querySelectorAll(".sidebar .nav-toggle").forEach(e=>{e.addEventListener("click",o=>{if(!document.body.classList.contains("sidebar-rail"))return;if(!p())return;o.preventDefault(),o.stopPropagation();const r=e.closest(".nav-tree");if(!r)return;const a=[...r.querySelectorAll(".nav-sublink")].map(e=>({label:e.textContent.trim(),action:()=>{window.location.href=e.getAttribute("href")}}));t(e,a)},!0)})}(),function(){const e=document.querySelector(".theme-toggle");if(!e)return;const t=t=>{document.documentElement.setAttribute("data-theme",t),e.setAttribute("aria-pressed","dark"===t?"true":"false")},o=document.documentElement.getAttribute("data-theme")||"light";e.setAttribute("aria-pressed","dark"===o?"true":"false"),e.addEventListener("click",()=>{const e="dark"===document.documentElement.getAttribute("data-theme")?"light":"dark";try{localStorage.setItem("theme",e)}catch(o){}t(e)}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{let o;try{o=localStorage.getItem("theme")}catch(r){}o||t(e.matches?"dark":"light")})}(),function(){const r=document.querySelector(".tb-notifications");r&&r.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const n=function(){const e=u.filter(e=>e.unread).length,t=document.createElement("div");return t.className="panel-content",t.innerHTML=`\n    <div class="panel-header">\n      <span class="panel-title">Notifications</span>\n      ${e?`<span class="panel-badge">${e} new</span>`:""}\n      <button type="button" class="panel-action" data-action="mark-all">Mark all read</button>\n    </div>\n    <div class="panel-list">\n      ${u.map((e,t)=>`\n        <button type="button" class="panel-row${e.unread?" unread":""}" data-i="${t}">\n          <span class="panel-icon panel-icon-${e.kind}" aria-hidden="true">\n            ${"alert"===e.kind?'<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M8 1l7 13H1L8 1z"/><path d="M8 6v4"/><circle cx="8" cy="12" r="0.5"/></svg>':"task"===e.kind?'<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M3 8l3 3 7-7"/></svg>':'<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6"/><path d="M8 5v3M8 11h.01"/></svg>'}\n          </span>\n          <span class="panel-body">\n            <span class="panel-from">${e.from}</span>\n            <span class="panel-text">${e.text}</span>\n          </span>\n          <span class="panel-time">${e.time}</span>\n        </button>\n      `).join("")}\n    </div>\n    <div class="panel-footer">\n      <a href="notifications.html" class="panel-link">View all notifications</a>\n    </div>\n  `,t}();n.addEventListener("click",t=>{if(t.target.closest('[data-action="mark-all"]'))return t.stopPropagation(),u.forEach(e=>{e.unread=!1}),n.querySelectorAll(".panel-row.unread").forEach(e=>e.classList.remove("unread")),n.querySelector(".panel-badge")?.remove(),r.querySelector(".dot")?.style.setProperty("display","none"),void e("All notifications marked read",{variant:"success"});const o=t.target.closest(".panel-row");if(o){t.stopPropagation();const e=parseInt(o.dataset.i,10);u[e].unread=!1,o.classList.remove("unread"),o.closest(".menu-popover")?.remove(),a({title:(i=u[e]).from,size:"sm",body:`\n      <div style="display:flex;gap:12px;align-items:flex-start;margin-bottom:14px">\n        <div style="width:36px;height:36px;border-radius:8px;background:var(--${"alert"===i.kind?"red":"task"===i.kind?"green":"blue"}-lt);color:var(--${"alert"===i.kind?"red":"task"===i.kind?"green":"blue"});display:flex;align-items:center;justify-content:center;flex-shrink:0">\n          ${"alert"===i.kind?'<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M8 1l7 13H1L8 1z"/><path d="M8 6v4"/></svg>':"task"===i.kind?'<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M3 8l3 3 7-7"/></svg>':'<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6"/><path d="M8 5v3M8 11h.01"/></svg>'}\n        </div>\n        <div style="flex:1;min-width:0">\n          <div style="font-size:13.5px;color:var(--text);line-height:1.5;margin-bottom:6px">${i.text}</div>\n          <div style="font-size:11.5px;color:var(--text-muted)">${i.time}</div>\n        </div>\n      </div>\n    `,actions:[{label:"Dismiss",variant:"ghost"},{label:"View all",variant:"outline",action:()=>{window.location.href="notifications.html"}}]})}var i}),o(r,n,{className:"panel-notifications",width:360})});const n=document.querySelector(".tb-messages");n&&n.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const r=function(){const e=m.filter(e=>e.unread).length,t=document.createElement("div");return t.className="panel-content",t.innerHTML=`\n    <div class="panel-header">\n      <span class="panel-title">Messages</span>\n      ${e?`<span class="panel-badge">${e} new</span>`:""}\n      <a href="inbox.html" class="panel-action">Open inbox</a>\n    </div>\n    <div class="panel-list">\n      ${m.map((e,t)=>`\n        <button type="button" class="panel-row${e.unread?" unread":""}" data-i="${t}">\n          <span class="panel-avatar" style="background:${e.color}">${e.initials}</span>\n          <span class="panel-body">\n            <span class="panel-from">${e.from}</span>\n            <span class="panel-text">${e.text}</span>\n          </span>\n          <span class="panel-time">${e.time}</span>\n        </button>\n      `).join("")}\n    </div>\n    <div class="panel-footer">\n      <a href="inbox.html" class="panel-link">View all messages</a>\n    </div>\n  `,t}();r.addEventListener("click",t=>{const o=t.target.closest(".panel-row");if(o){t.stopPropagation();const n=parseInt(o.dataset.i,10);m[n].unread=!1,o.classList.remove("unread"),o.closest(".menu-popover")?.remove(),a({title:(r=m[n]).from,size:"md",body:`\n      <div style="display:flex;gap:12px;align-items:center;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--border-color-light)">\n        <div style="width:38px;height:38px;border-radius:50%;background:${r.color};color:white;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px">${r.initials}</div>\n        <div style="flex:1">\n          <div style="font-size:13.5px;font-weight:600;color:var(--text)">${r.from}</div>\n          <div style="font-size:11.5px;color:var(--text-muted)">${r.time}</div>\n        </div>\n      </div>\n      <div style="font-size:13.5px;color:var(--text);line-height:1.6;margin-bottom:16px">${r.text}</div>\n      <textarea class="form-control" rows="3" placeholder="Type a reply…" style="margin-bottom:0"></textarea>\n    `,actions:[{label:"Cancel",variant:"ghost"},{label:"Open in inbox",variant:"outline",action:()=>{window.location.href="inbox.html"}},{label:"Send reply",variant:"primary",action:()=>e("Reply sent",{variant:"success"})}]})}var r}),o(n,r,{className:"panel-messages",width:360})});const i=document.querySelector(".tb-avatar");i&&i.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),t(i,g)});const l=document.querySelector(".sidebar-user .more-btn");l&&l.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),t(l,g)})}()),async function(){const e=document.querySelectorAll("[data-chart]");if(!e.length)return;e.forEach(e=>{e.children.length||e.classList.contains("skeleton")||e.classList.add("skeleton","chart-skeleton")});const[t,{LineChart:o,BarChart:r,PieChart:a,RadarChart:n,GaugeChart:i,ScatterChart:l,HeatmapChart:s,FunnelChart:c,CandlestickChart:d,TreemapChart:h,SankeyChart:p,CustomChart:u},{GridComponent:m,TooltipComponent:g,LegendComponent:f,VisualMapComponent:v,PolarComponent:x,CalendarComponent:w},{CanvasRenderer:S}]=await Promise.all([y(()=>import("./vendor-echarts-DvA3mx-H.js").then(e=>e.n),__vite__mapDeps([0,1])),y(()=>import("./vendor-echarts-DvA3mx-H.js").then(e=>e.i),__vite__mapDeps([0,1])),y(()=>import("./vendor-echarts-DvA3mx-H.js").then(e=>e.r),__vite__mapDeps([0,1])),y(()=>import("./vendor-echarts-DvA3mx-H.js").then(e=>e.t),__vite__mapDeps([0,1]))]);t.use([o,r,a,n,i,l,s,c,d,h,p,u,m,g,f,v,x,w,S]);const L=[];let M;(()=>{const o=b();e.forEach(e=>{const r=k[e.dataset.chart];r&&(e.classList.remove("skeleton","chart-skeleton"),L.push({el:e,factory:r,instance:r(t,e,o)}))})})(),window.addEventListener("resize",()=>{clearTimeout(M),M=setTimeout(()=>L.forEach(e=>e.instance.resize()),120)});const C=()=>{const e=b();L.forEach(o=>{o.instance.dispose(),o.instance=o.factory(t,o.el,e)})};new MutationObserver(e=>{e.some(e=>"data-theme"===e.attributeName)&&C()}).observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),document.documentElement.addEventListener("themechange",C)}(),async function(){const t=document.querySelectorAll("table[data-datatable]");if(!t.length)return;const{default:o}=await y(async()=>{const{default:e}=await import("./vendor-tables-DLiTxc7C.js").then(e=>e.t);return{default:e}},__vite__mapDeps([2,1]));t.forEach(t=>{const r=[];t.querySelectorAll("thead th").forEach((e,t)=>{"false"===e.dataset.orderable&&r.push({targets:t,orderable:!1})});const a=new o(t,{pageLength:parseInt(t.dataset.pageLength||"10",10),lengthChange:!1,order:[],columnDefs:r,language:{search:"",searchPlaceholder:"Search…",info:"Showing _START_–_END_ of _TOTAL_",infoEmpty:"No matching records",infoFiltered:"(of _MAX_ total)",zeroRecords:"No matches found",paginate:{previous:"←",next:"→"}}});(t.hasAttribute("data-selectable")||function(e){return!!e.querySelector('thead input[type="checkbox"]')}(t))&&function(e){const t=e.querySelector('thead input[type="checkbox"]'),o=()=>{if(!t)return;const o=e.querySelectorAll('tbody input[type="checkbox"]'),r=[...o].filter(e=>e.checked).length;t.checked=r>0&&r===o.length,t.indeterminate=r>0&&o.length>r,e.classList.toggle("has-selection",r>0);const a=e.closest(".card")?.querySelector(".bulk-selection-count");a&&(a.textContent=r?`${r} selected`:"")};t&&t.addEventListener("change",()=>{e.querySelectorAll('tbody input[type="checkbox"]').forEach(e=>{e.checked=t.checked}),o()}),e.addEventListener("change",e=>{e.target.closest('tbody input[type="checkbox"]')&&o()})}(t),t.hasAttribute("data-export")&&function(t,o){const r=(t.dataset.export||"export")+".csv";let a=t.closest(".card")?.querySelector("[data-export-btn]");if(!a){const e=t.closest(".card")?.querySelector(".card-header");if(!e)return;a=document.createElement("button"),a.type="button",a.className="btn btn-outline btn-sm",a.setAttribute("data-export-btn",""),a.textContent="Export CSV";let o=e.querySelector(".card-actions");o||(o=document.createElement("div"),o.className="card-actions",o.style.marginLeft="auto",e.appendChild(o)),o.appendChild(a)}a.addEventListener("click",()=>{const t=[],a=[];o.columns().every(function(){const e=this.header();e&&"false"===e.dataset.orderable&&!e.textContent.trim()?a.push(null):a.push(e?e.textContent.trim():"")}),t.push(a.filter(e=>null!==e).map(S).join(","));const n=o.rows({search:"applied",order:"applied"}).indexes();for(let e=0;n.length>e;e+=1){const r=o.row(n[e]).node();if(!r)continue;const i=[];[...r.cells].forEach((e,t)=>{null!==a[t]&&i.push(S(e.textContent.trim().replace(/\s+/g," ")))}),t.push(i.join(","))}!function(e,t){const o=new Blob([t],{type:"text/csv;charset=utf-8;"}),r=URL.createObjectURL(o),a=document.createElement("a");a.href=r,a.download=e,document.body.appendChild(a),a.click(),a.remove(),setTimeout(()=>URL.revokeObjectURL(r),0)}(r,t.join("\n")),e(`Exported ${r}`,{variant:"success"})})}(t,a);const n=t.closest(".dt-container")?.querySelector(".dt-search input");n&&!n.hasAttribute("aria-label")&&n.setAttribute("aria-label","Search table")})}(),function e(){if(e._wired)return;e._wired=!0,document.addEventListener("keydown",e=>{"k"!==e.key&&"K"!==e.key||!e.metaKey&&!e.ctrlKey||(e.preventDefault(),L?q():B())});const t=document.querySelector(".search-box input");if(t){const e=e=>{e.preventDefault(),t.blur(),B()};t.addEventListener("focus",e),t.addEventListener("click",e),t.setAttribute("readonly",""),t.setAttribute("aria-label","Open command palette")}}(),function e(){if(e._wired)return;e._wired=!0;const t=[".toggle",".todo-cb",".chart-tab",".card-opt-btn",".chip",".chip-close",".menu-item",".sidebar-toggle",".theme-toggle",".more-btn",".nav-link",".inbox-folder",".tb-notifications",".tb-messages",".tb-avatar",".modal-close"].join(", ");document.addEventListener("click",e=>{if(e.defaultPrevented)return;const o=e.target.closest("button, a.btn");if(!o)return;if(o.closest(".menu-popover, .toast-host, .calendar-grid, #inbox-list, #inbox-root, #fm-grid, .modal-backdrop, [data-rich-text]"))return;if(o.matches(t))return;if(!o.matches(".btn, .tb-btn"))return;if(o.hasAttribute("onclick"))return;if("submit"===o.type)return;const r=I(o);if(!r)return;const a=function(e){for(const[t,o]of Object.entries(j))if(o.test(e))return t;return null}(r);a&&(e.preventDefault(),N[a]?.(o))})}(),"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(()=>{})}),document.getElementById("inbox-root")&&y(()=>import("./inbox-BzqlieBV.js").then(e=>e.initInbox()),__vite__mapDeps([3,4,1,5,6])),document.querySelector(".calendar-grid")&&y(()=>import("./calendar-CKzvt1aG.js").then(e=>e.initCalendar()),__vite__mapDeps([7,4,1,5])),document.querySelector(".settings-content")&&y(()=>import("./settings-3FvRkxWt.js").then(e=>e.initSettings()),__vite__mapDeps([8,4,1,5])),document.querySelector("[data-date-range], [data-rich-text], [data-multi-select]")&&y(()=>import("./form-controls-v8wp39no.js").then(e=>e.initFormControls()),[]),document.addEventListener("click",e=>{const t=e.target.closest(".toggle");t&&t.classList.toggle("on")}),document.addEventListener("click",e=>{const t=e.target.closest(".todo-cb");if(!t)return;t.classList.toggle("done");const o=t.closest(".todo-row");o&&o.classList.toggle("done");const r=t.closest(".card");if(!r)return;const a=r.querySelector("[data-todo-counter]");if(!a)return;const n=r.querySelectorAll(".todo-row"),i=r.querySelectorAll(".todo-row.done");a.textContent=`${n.length-i.length} of ${n.length} remaining`}),document.addEventListener("click",e=>{const t=e.target.closest(".chart-tab");t&&(t.parentElement.querySelectorAll(".chart-tab").forEach(e=>e.classList.remove("active")),t.classList.add("active"))}),document.addEventListener("click",e=>{const t=e.target.closest(".btn-group[data-group] > .btn");t&&(t.parentElement.querySelectorAll(".btn").forEach(e=>{e.classList.remove("active"),e.setAttribute("aria-pressed","false")}),t.classList.add("active"),t.setAttribute("aria-pressed","true"))}),document.addEventListener("click",e=>{const o=e.target.closest(".card-opt-btn");o&&(e.defaultPrevented||(e.preventDefault(),t(o,r)))}),document.addEventListener("click",e=>{const t=e.target.closest(".chip-close");if(t){const e=t.closest(".chip");return void(e&&(e.style.transition="opacity 150ms, transform 150ms",e.style.opacity="0",e.style.transform="scale(0.85)",setTimeout(()=>e.remove(),160)))}const o=e.target.closest(".chip");o&&o.classList.toggle("active")}),document.addEventListener("submit",e=>{const t=e.target;if(!(t instanceof HTMLFormElement))return;e.preventDefault();const o=t.querySelector('button[type="submit"], input[type="submit"]'),r=(o?.textContent||o?.value||"Saved").trim();y(async()=>{const{showToast:e}=await import("./toast-CBtjS_PZ.js").then(e=>e.n);return{showToast:e}},__vite__mapDeps([4,1])).then(({showToast:e})=>e(`${r} ✓`,{variant:"success"})),"false"!==t.dataset.resetOnSubmit&&t.reset()});export{y as t};