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.

851 lines (742 loc) 58 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>UI Elements | Gentelella 2026 v4</title> <link rel="icon" href="../images/favicon.svg" type="image/svg+xml"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link rel="manifest" href="/site.webmanifest"> <meta name="theme-color" content="#1ABB9C" media="(prefers-color-scheme: light)"> <meta name="theme-color" content="#1a2332" media="(prefers-color-scheme: dark)"> <meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <link rel="apple-touch-icon" href="/images/apple-touch-icon.svg"> <meta name="description" content="UI Elements — UI Elements. Free admin template by Colorlib. 60 pages, 20 chart variants, dark mode, PWA-ready."> <meta property="og:type" content="website"> <meta property="og:title" content="UI Elements"> <meta property="og:description" content="UI Elements — UI Elements. Free admin template by Colorlib. 60 pages, 20 chart variants, dark mode, PWA-ready."> <meta property="og:image" content="/images/android-chrome-512x512.svg"> <meta property="og:site_name" content="Gentelella v4"> <meta name="twitter:card" content="summary_large_image"> <script>(function(){try{var t=localStorage.getItem('theme');var d=window.matchMedia('(prefers-color-scheme: dark)').matches;var theme=t||(d?'dark':'light');document.documentElement.setAttribute('data-theme',theme);}catch(e){}})();</script> <script type="module" crossorigin src="/js/general_elements-CQrCln7s.js"></script> <link rel="modulepreload" crossorigin href="/js/rolldown-runtime-DEgBLETi.js"> <link rel="modulepreload" crossorigin href="/js/toast-DgCSlJPv.js"> <link rel="modulepreload" crossorigin href="/js/menus-BVcs0GJR.js"> <link rel="modulepreload" crossorigin href="/js/modal-MTuCfURV.js"> <link rel="modulepreload" crossorigin href="/js/main-v4-BFwmMcfm.js"> <link rel="stylesheet" crossorigin href="/assets/main-v4-DDS6x4g-.css"> </head> <body data-shell="admin" data-page="ui" data-breadcrumb="Home > UI Elements"> <a class="skip-link" href="#main-content">Skip to main content</a> <aside class="sidebar" aria-label="Primary navigation"> <div class="sidebar-brand"> <div class="brand-icon">G</div> <div class="brand-name">Gentelella <small>v4</small></div> </div> <nav class="sidebar-nav"> <div class="nav-group"> <div class="nav-label">General</div> <div class="nav-tree"> <button type="button" class="nav-link nav-toggle" aria-expanded="false"> <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> <span class="nav-text">Dashboards</span> <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> </button> <div class="nav-sub"><div class="nav-sub-inner"><a class="nav-sublink" href="index.html">Operations</a><a class="nav-sublink" href="index2.html">Analytics</a><a class="nav-sublink" href="index3.html">Sales</a><a class="nav-sublink" href="index4.html">System health</a></div></div> </div> <div class="nav-tree"> <button type="button" class="nav-link nav-toggle" aria-expanded="false"> <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> <span class="nav-text">Forms</span> <span class="badge badge-red">Hot</span> <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> </button> <div class="nav-sub"><div class="nav-sub-inner"><a class="nav-sublink" href="form.html">General</a><a class="nav-sublink" href="form_advanced.html">Advanced controls</a><a class="nav-sublink" href="form_buttons.html">Buttons</a><a class="nav-sublink" href="form_upload.html">Upload</a><a class="nav-sublink" href="form_validation.html">Validation</a><a class="nav-sublink" href="form_wizards.html">Wizard</a></div></div> </div> <div class="nav-tree"> <button type="button" class="nav-link nav-toggle" aria-expanded="false"> <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> <span class="nav-text">Tables</span> <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> </button> <div class="nav-sub"><div class="nav-sub-inner"><a class="nav-sublink" href="tables.html">Static</a><a class="nav-sublink" href="tables_dynamic.html">Dynamic</a></div></div> </div> <div class="nav-tree"> <button type="button" class="nav-link nav-toggle" aria-expanded="false"> <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> <span class="nav-text">Charts</span> <span class="badge badge-teal">New</span> <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> </button> <div class="nav-sub"><div class="nav-sub-inner"><a class="nav-sublink" href="chartjs.html">Chart cards</a><a class="nav-sublink" href="echarts.html">ECharts gallery</a><a class="nav-sublink" href="other_charts.html">SVG charts</a></div></div> </div> <a class="nav-link" href="calendar.html"> <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> <span class="nav-text">Calendar</span> </a> <a class="nav-link" href="map.html"> <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> <span class="nav-text">Map</span> </a> </div> <div class="nav-group"> <div class="nav-label">Apps</div> <a class="nav-link" href="chat.html"> <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> <span class="nav-text">Chat</span> <span class="badge badge-teal">3</span> </a> <a class="nav-link" href="inbox.html"> <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> <span class="nav-text">Inbox</span> </a> <a class="nav-link" href="kanban.html"> <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> <span class="nav-text">Kanban</span> </a> <a class="nav-link" href="file_manager.html"> <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> <span class="nav-text">Files</span> </a> <a class="nav-link" href="notifications.html"> <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> <span class="nav-text">Notifications</span> </a> </div> <div class="nav-group"> <div class="nav-label">E-commerce</div> <a class="nav-link" href="e_commerce.html"> <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> <span class="nav-text">Storefront</span> </a> <a class="nav-link" href="product_detail.html"> <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> <span class="nav-text">Product</span> </a> <div class="nav-tree"> <button type="button" class="nav-link nav-toggle" aria-expanded="false"> <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> <span class="nav-text">Orders</span> <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> </button> <div class="nav-sub"><div class="nav-sub-inner"><a class="nav-sublink" href="orders.html">All orders</a><a class="nav-sublink" href="order_detail.html">Order detail</a></div></div> </div> <a class="nav-link" href="invoice.html"> <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> <span class="nav-text">Invoice</span> </a> <a class="nav-link" href="pricing_tables.html"> <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> <span class="nav-text">Pricing</span> </a> </div> <div class="nav-group"> <div class="nav-label">Projects</div> <a class="nav-link" href="projects.html"> <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> <span class="nav-text">All projects</span> </a> <a class="nav-link" href="project_detail.html"> <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> <span class="nav-text">Project detail</span> </a> </div> <div class="nav-group"> <div class="nav-label">UI library</div> <a class="nav-link active" href="general_elements.html" aria-current="page"> <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> <span class="nav-text">Elements</span> </a> <a class="nav-link" href="widgets.html"> <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> <span class="nav-text">Widgets</span> <span class="badge badge-blue">5</span> </a> <a class="nav-link" href="playground.html"> <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> <span class="nav-text">Playground</span> <span class="badge badge-teal">New</span> </a> <a class="nav-link" href="theme.html"> <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> <span class="nav-text">Theme</span> <span class="badge badge-teal">New</span> </a> <a class="nav-link" href="typography.html"> <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> <span class="nav-text">Typography</span> </a> <a class="nav-link" href="icons.html"> <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> <span class="nav-text">Icons</span> </a> <a class="nav-link" href="media_gallery.html"> <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> <span class="nav-text">Media</span> </a> </div> <div class="nav-group"> <div class="nav-label">Admin</div> <a class="nav-link" href="contacts.html"> <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> <span class="nav-text">Contacts</span> </a> <a class="nav-link" href="user_management.html"> <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> <span class="nav-text">User management</span> </a> <a class="nav-link" href="profile.html"> <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> <span class="nav-text">Your profile</span> </a> <a class="nav-link" href="settings.html"> <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> <span class="nav-text">Settings</span> </a> <a class="nav-link" href="faq.html"> <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> <span class="nav-text">Help center</span> </a> </div> <div class="nav-group"> <div class="nav-label">Layouts</div> <a class="nav-link" href="fixed_sidebar.html"> <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> <span class="nav-text">Fixed sidebar</span> </a> <a class="nav-link" href="fixed_footer.html"> <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> <span class="nav-text">Fixed footer</span> </a> <a class="nav-link" href="level2.html"> <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> <span class="nav-text">Nested page</span> </a> <a class="nav-link" href="plain_page.html"> <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> <span class="nav-text">Blank</span> </a> </div> </nav> <div class="sidebar-footer"> <div class="sidebar-user"> <div class="avatar">A<span class="online"></span></div> <div class="sidebar-user-info"> <div class="name">Aigars Silkalns</div> <div class="role">Admin</div> </div> <button class="more-btn" aria-label="More options"> <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> </button> </div> </div> </aside> <header class="topbar"> <div class="topbar-left"> <button class="sidebar-toggle" type="button" aria-label="Open menu" aria-controls="sidebar" aria-expanded="false"> <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> </button> <nav class="breadcrumb" aria-label="Breadcrumb"><span class="current" aria-current="page">Home</span></nav> </div> <div class="search-box"> <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> <input type="text" placeholder="Search pages or run a command…" aria-label="Open command palette"> <kbd>⌘K</kbd> </div> <div class="topbar-right"> <a class="tb-btn tb-docs" href="https://gentelella.colorlib.com/docs/" target="_blank" rel="noopener" title="Documentation"> <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> <span>Docs</span> </a> <button class="tb-btn theme-toggle" type="button" title="Toggle theme" aria-label="Toggle theme" aria-pressed="false"> <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> <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> </button> <button class="tb-btn tb-notifications" type="button" title="Notifications" aria-label="Notifications" aria-haspopup="dialog" aria-expanded="false"> <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> <span class="dot"></span> </button> <button class="tb-btn tb-messages" type="button" title="Messages" aria-label="Messages" aria-haspopup="dialog" aria-expanded="false"> <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> </button> <button class="tb-avatar" type="button" aria-label="Account menu" aria-haspopup="menu" aria-expanded="false">A</button> </div> </header> <main id="main-content" tabindex="-1" class="main"> <div class="page-wrapper"> <div class="page-header"> <div class="page-header-row"> <div> <div class="page-pretitle">Components</div> <h1 class="page-title">UI Elements</h1> </div> <div class="page-actions"> <a href="#buttons" class="btn btn-outline btn-sm">Jump to ↓</a> </div> </div> </div> <!-- ── BUTTONS ── --> <div class="row col-1" id="buttons"> <div class="card"> <div class="card-header"><div class="card-title">Buttons</div><div class="card-subtitle">Variants, sizes, states, groups, dropdowns</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:18px"> <div> <div class="divider-label">Variants</div> <div style="display:flex;flex-wrap:wrap;gap:6px"> <button class="btn btn-primary">Primary</button> <button class="btn btn-outline">Outline</button> <button class="btn btn-success">Success</button> <button class="btn btn-warning">Warning</button> <button class="btn btn-danger">Danger</button> <button class="btn btn-ghost">Ghost</button> </div> </div> <div> <div class="divider-label">Sizes</div> <div style="display:flex;flex-wrap:wrap;gap:6px;align-items:center"> <button class="btn btn-primary btn-sm">Small</button> <button class="btn btn-primary">Default</button> <button class="btn btn-primary btn-lg">Large</button> </div> </div> <div> <div class="divider-label">With icon · Icon only · Loading</div> <div style="display:flex;flex-wrap:wrap;gap:6px;align-items:center"> <button class="btn btn-primary"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 8h8M8 4v8"/></svg> Create</button> <button class="btn btn-outline"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M14 11v3H2v-3"/><path d="M11 6L8 3 5 6"/><line x1="8" y1="3" x2="8" y2="11"/></svg> Upload</button> <button class="btn btn-outline btn-icon" data-tooltip="Edit" aria-label="Edit"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M11 2l3 3-9 9H2v-3l9-9z"/></svg></button> <button class="btn btn-outline btn-icon" data-tooltip="Refresh" aria-label="Refresh"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M14 2v4h-4M2 14v-4h4"/><path d="M14 6a6 6 0 00-10-2M2 10a6 6 0 0010 2"/></svg></button> <button class="btn btn-outline btn-icon" data-tooltip="Delete" aria-label="Delete"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M3 4h10M6 4V2h4v2M5 4l1 9h4l1-9"/></svg></button> <button class="btn btn-primary" id="loading-btn"><span class="btn-spinner" hidden></span><span>Save</span></button> <button class="btn btn-outline" disabled>Disabled</button> </div> </div> <div> <div class="divider-label">Button group · Dropdown</div> <div style="display:flex;flex-wrap:wrap;gap:14px;align-items:center"> <div class="btn-group" role="group" data-group="period" aria-label="Time period"> <button class="btn btn-outline active" aria-pressed="true">Day</button> <button class="btn btn-outline" aria-pressed="false">Week</button> <button class="btn btn-outline" aria-pressed="false">Month</button> <button class="btn btn-outline" aria-pressed="false">Year</button> </div> <button class="btn btn-outline" id="dropdown-btn">Actions <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 6l4 4 4-4"/></svg></button> </div> </div> </div> </div> </div> <!-- ── AVATARS · STATUS · CHIPS ── --> <div class="row col-2"> <div class="card"> <div class="card-header"><div class="card-title">Avatars</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:16px"> <div> <div class="divider-label">Sizes</div> <div style="display:flex;align-items:center;gap:10px"> <span class="avatar avatar-xs">A</span> <span class="avatar avatar-sm">SK</span> <span class="avatar avatar-md">MR</span> <span class="avatar avatar-lg">EW</span> <span class="avatar avatar-xl" style="background:linear-gradient(135deg,var(--azure),#1d6fa5)">DR</span> <span class="avatar avatar-xxl" style="background:linear-gradient(135deg,var(--purple),#8a2da0)">YT</span> </div> </div> <div> <div class="divider-label">With status</div> <div style="display:flex;align-items:center;gap:14px"> <span class="avatar avatar-lg">SK<span class="avatar-status"></span></span> <span class="avatar avatar-lg" style="background:linear-gradient(135deg,var(--azure),#1d6fa5)">MR<span class="avatar-status away"></span></span> <span class="avatar avatar-lg" style="background:linear-gradient(135deg,var(--purple),#8a2da0)">EW<span class="avatar-status busy"></span></span> <span class="avatar avatar-lg" style="background:linear-gradient(135deg,var(--yellow),#c97f00)">DR<span class="avatar-status offline"></span></span> </div> </div> <div> <div class="divider-label">Stack</div> <div class="avatar-stack"> <span class="avatar avatar-md" style="background:linear-gradient(135deg,var(--primary),var(--primary-dk))">A</span> <span class="avatar avatar-md" style="background:linear-gradient(135deg,var(--azure),#1d6fa5)">SK</span> <span class="avatar avatar-md" style="background:linear-gradient(135deg,var(--purple),#8a2da0)">MR</span> <span class="avatar avatar-md" style="background:linear-gradient(135deg,var(--yellow),#c97f00)">EW</span> <span class="avatar avatar-md more">+5</span> </div> </div> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Status & chips</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:14px"> <div style="display:flex;flex-wrap:wrap;gap:14px"> <span class="status status-green">Paid</span> <span class="status status-blue">Processing</span> <span class="status status-yellow">Pending</span> <span class="status status-red">Failed</span> </div> <div style="display:flex;flex-wrap:wrap;gap:6px"> <span class="chip">Default</span> <span class="chip chip-primary">Primary</span> <span class="chip chip-blue">Info</span> <span class="chip chip-green">Success</span> <span class="chip chip-yellow">Warning</span> <span class="chip chip-red">Error</span> <span class="chip chip-purple">Premium</span> </div> <div style="display:flex;flex-wrap:wrap;gap:6px"> <span class="chip chip-primary active">React<button type="button" class="chip-close" aria-label="Remove">×</button></span> <span class="chip chip-blue active">TypeScript<button type="button" class="chip-close" aria-label="Remove">×</button></span> <span class="chip chip-purple active">Tailwind<button type="button" class="chip-close" aria-label="Remove">×</button></span> </div> </div> </div> </div> <!-- ── ALERTS ── --> <div class="row col-1"> <div class="card"> <div class="card-header"><div class="card-title">Alerts</div></div> <div class="card-body"> <div class="alert alert-info"><svg class="alert-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6"/><path d="M8 5v.01M8 7v4"/></svg><div class="alert-body"><strong>Heads up.</strong> This is an informational alert with extra context.</div></div> <div class="alert alert-success"><svg class="alert-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6"/><path d="M5 8l2 2 4-4"/></svg><div class="alert-body"><strong>Saved.</strong> Your changes have been applied.</div></div> <div class="alert alert-warning"><svg class="alert-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M8 2L1 14h14L8 2z"/><path d="M8 6v3M8 11v.01"/></svg><div class="alert-body"><strong>Careful.</strong> This action will affect 28 users.</div></div> <div class="alert alert-error"><svg class="alert-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6"/><path d="M8 4v5M8 11v.01"/></svg><div class="alert-body"><strong>Couldn't save.</strong> The server returned a 503 — please retry in a moment.</div></div> </div> </div> </div> <!-- ── SPINNERS · SKELETONS ── --> <div class="row col-2"> <div class="card"> <div class="card-header"><div class="card-title">Spinners & loaders</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:18px"> <div> <div class="divider-label">Circular</div> <div style="display:flex;align-items:center;gap:18px"> <span class="spinner spinner-sm"></span> <span class="spinner"></span> <span class="spinner spinner-lg"></span> <span class="spinner spinner-azure"></span> <span class="spinner spinner-yellow"></span> <span class="spinner spinner-red"></span> </div> </div> <div> <div class="divider-label">Dots</div> <span class="spinner-dots"><span></span><span></span><span></span></span> </div> <div> <div class="divider-label">Indeterminate progress</div> <div class="loading-bar"></div> </div> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Skeleton loading</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:16px"> <div style="display:flex;gap:12px;align-items:flex-start"> <span class="skeleton skeleton-circle" style="width:40px;height:40px;flex-shrink:0"></span> <div style="flex:1"> <span class="skeleton skeleton-text-lg" style="width:50%"></span> <span class="skeleton skeleton-text" style="width:80%"></span> <span class="skeleton skeleton-text" style="width:65%"></span> </div> </div> <span class="skeleton skeleton-rect" style="width:100%;height:120px"></span> <div> <span class="skeleton skeleton-text-lg" style="width:35%"></span> <span class="skeleton skeleton-text" style="width:90%"></span> <span class="skeleton skeleton-text" style="width:75%"></span> </div> </div> </div> </div> <!-- ── TABS ── --> <div class="row col-1"> <div class="card"> <div class="card-header"><div class="card-title">Tabs</div><div class="card-subtitle">Pill, underlined, segmented</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:18px"> <div> <div class="divider-label">Pill</div> <div class="tabs-pill" role="tablist"> <button class="tab active" role="tab">Overview</button> <button class="tab" role="tab">Activity</button> <button class="tab" role="tab">Settings</button> <button class="tab" role="tab">Billing</button> </div> </div> <div> <div class="divider-label">Underlined</div> <div class="tabs-underline" role="tablist"> <button class="tab active" role="tab">Profile</button> <button class="tab" role="tab">Notifications</button> <button class="tab" role="tab">Integrations</button> <button class="tab" role="tab">Team</button> <button class="tab" role="tab">Danger zone</button> </div> </div> <div> <div class="divider-label">Segmented (chart-tab)</div> <div class="chart-tabs"> <button class="chart-tab active">7 days</button> <button class="chart-tab">30 days</button> <button class="chart-tab">90 days</button> </div> </div> </div> </div> </div> <!-- ── PAGINATION · BREADCRUMBS ── --> <div class="row col-2"> <div class="card"> <div class="card-header"><div class="card-title">Pagination</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:14px"> <div class="pagination" id="demo-pagination"> <button class="page-btn" data-page="prev" disabled aria-label="Previous"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M10 4l-4 4 4 4"/></svg></button> <button class="page-btn active" data-page="1">1</button> <button class="page-btn" data-page="2">2</button> <button class="page-btn" data-page="3">3</button> <span class="page-ellipsis">…</span> <button class="page-btn" data-page="12">12</button> <button class="page-btn" data-page="next" aria-label="Next"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M6 4l4 4-4 4"/></svg></button> </div> <div style="font-size:12px;color:var(--text-muted)">Showing 1–10 of 124 results</div> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Breadcrumbs</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:14px"> <nav class="breadcrumbs" aria-label="Path"> <a href="#">Home</a> <span class="sep">/</span> <a href="#">Projects</a> <span class="sep">/</span> <a href="#">Q2 Marketing</a> <span class="sep">/</span> <span class="current">Tasks</span> </nav> <nav class="breadcrumbs" aria-label="Path"> <a href="#">Workspace</a> <span class="sep">›</span> <a href="#">Settings</a> <span class="sep">›</span> <span class="current">Billing</span> </nav> </div> </div> </div> <!-- ── STEPPER ── --> <div class="row col-1"> <div class="card"> <div class="card-header"><div class="card-title">Stepper</div><div class="card-subtitle">Horizontal step indicator</div></div> <div class="card-body" style="padding:24px 16px"> <div class="stepper"> <div class="step done"><div class="num"><span>1</span></div><div class="label">Account</div></div> <div class="line done"></div> <div class="step done"><div class="num"><span>2</span></div><div class="label">Workspace</div></div> <div class="line done"></div> <div class="step active"><div class="num"><span>3</span></div><div class="label">Team</div></div> <div class="line"></div> <div class="step"><div class="num"><span>4</span></div><div class="label">Integrations</div></div> <div class="line"></div> <div class="step"><div class="num"><span>5</span></div><div class="label">Done</div></div> </div> </div> </div> </div> <!-- ── TOOLTIPS · TRIGGERS ── --> <div class="row col-2"> <div class="card"> <div class="card-header"><div class="card-title">Tooltips</div><div class="card-subtitle">Hover or focus to reveal</div></div> <div class="card-body" style="display:flex;flex-wrap:wrap;gap:10px;align-items:center"> <button class="btn btn-outline" data-tooltip="Refresh the data">Top</button> <button class="btn btn-outline" data-tooltip="Open in a new tab" data-tooltip-pos="bottom">Bottom</button> <button class="btn btn-outline btn-icon" data-tooltip="Settings" aria-label="Settings"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="2"/><path d="M8 1v2M8 13v2M1 8h2M13 8h2"/></svg></button> <span class="status status-green" data-tooltip="Last checked 2 minutes ago" tabindex="0">Live</span> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Interactive triggers</div></div> <div class="card-body" style="display:flex;flex-wrap:wrap;gap:8px;align-items:center"> <button class="btn btn-primary" id="open-modal-demo">Open modal</button> <button class="btn btn-outline" id="show-toast-demo">Show toast</button> <button class="btn btn-outline" id="show-toast-success">Success toast</button> <button class="btn btn-outline" id="show-toast-error">Error toast</button> <button class="btn btn-outline" id="open-dropdown-demo">Dropdown menu <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 6l4 4 4-4"/></svg></button> </div> </div> </div> <!-- ── TOGGLES · PROGRESS ── --> <div class="row col-2"> <div class="card"> <div class="card-header"><div class="card-title">Toggles</div></div> <div class="card-body" style="padding:6px 16px"> <div class="toggle-row"><div><div class="label">Enabled</div></div><div class="toggle on"></div></div> <div class="toggle-row"><div><div class="label">Disabled</div></div><div class="toggle"></div></div> <div class="toggle-row"><div><div class="label">With description</div><div class="desc">Smaller helper text below the label.</div></div><div class="toggle on"></div></div> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Progress</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:14px"> <div> <div style="display:flex;justify-content:space-between;font-size:12px;color:var(--text-muted);margin-bottom:4px"><span>Storage</span><span class="cell-strong">68%</span></div> <div class="progress-thin"><div class="bar" style="width:68%;background:var(--primary)"></div></div> </div> <div> <div style="display:flex;justify-content:space-between;font-size:12px;color:var(--text-muted);margin-bottom:4px"><span>Bandwidth</span><span class="cell-strong">42%</span></div> <div class="progress-thin"><div class="bar" style="width:42%;background:var(--azure)"></div></div> </div> <div> <div style="display:flex;justify-content:space-between;font-size:12px;color:var(--text-muted);margin-bottom:4px"><span>Quota</span><span class="cell-strong">91%</span></div> <div class="progress-thin"><div class="bar" style="width:91%;background:var(--red)"></div></div> </div> </div> </div> </div> <!-- ── LIST GROUP · RATING · EMPTY ── --> <div class="row col-3"> <div class="card"> <div class="card-header"><div class="card-title">List group</div></div> <div class="card-body" style="padding:12px"> <div class="list-group"> <button type="button" class="list-group-item active">Inbox <span class="meta">14</span></button> <button type="button" class="list-group-item">Starred <span class="meta">2</span></button> <button type="button" class="list-group-item">Snoozed <span class="meta">8</span></button> <button type="button" class="list-group-item">Sent <span class="meta">—</span></button> <button type="button" class="list-group-item">Trash <span class="meta">3</span></button> </div> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Rating</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;padding:24px"> <div class="rating-stars" id="rating-demo" data-value="3" role="radiogroup" aria-label="Rate this"> <button type="button" data-i="1" aria-label="1 star"><svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 1l2 5 5 .5-4 3.5 1 5-4-2.5-4 2.5 1-5-4-3.5 5-.5z"/></svg></button> <button type="button" data-i="2" aria-label="2 stars"><svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 1l2 5 5 .5-4 3.5 1 5-4-2.5-4 2.5 1-5-4-3.5 5-.5z"/></svg></button> <button type="button" data-i="3" aria-label="3 stars"><svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 1l2 5 5 .5-4 3.5 1 5-4-2.5-4 2.5 1-5-4-3.5 5-.5z"/></svg></button> <button type="button" data-i="4" aria-label="4 stars"><svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 1l2 5 5 .5-4 3.5 1 5-4-2.5-4 2.5 1-5-4-3.5 5-.5z"/></svg></button> <button type="button" data-i="5" aria-label="5 stars"><svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 1l2 5 5 .5-4 3.5 1 5-4-2.5-4 2.5 1-5-4-3.5 5-.5z"/></svg></button> </div> <div style="font-size:12px;color:var(--text-muted)" id="rating-label">3 of 5 stars</div> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Empty state</div></div> <div class="card-body" style="padding:0"> <div class="empty-state"> <div class="empty-state-icon"> <svg 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> </div> <div class="empty-state-title">No items yet</div> <div class="empty-state-desc">Create your first project to get started.</div> <button class="btn btn-primary btn-sm">+ Create project</button> </div> </div> </div> </div> <!-- ── CODE · KBD · BLOCKQUOTE ── --> <div class="row col-2"> <div class="card"> <div class="card-header"><div class="card-title">Code & keyboard</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:14px"> <div style="font-size:13px;color:var(--text-secondary);line-height:1.6"> Run <code>npm install</code> to install dependencies, then <code>npm run dev</code> to start the local server. </div> <pre><code>function greet(name) { return `Hello, ${name}!`; } greet('Gentelella'); // → "Hello, Gentelella!"</code></pre> <div style="display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;color:var(--text-secondary)"> Quick actions: <kbd>⌘</kbd> + <kbd>K</kbd> to search, <kbd>?</kbd> for shortcuts, <kbd>Esc</kbd> to close. </div> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Blockquote & dividers</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:18px"> <blockquote> The best way to predict the future is to invent it. Real artists ship. <footer>— <cite>Alan Kay</cite>, computer scientist</footer> </blockquote> <hr class="divider-plain"> <div class="divider-label">Or continue with</div> <hr class="divider-dashed"> </div> </div> </div> <!-- ── New section: Banners ── --> <div class="row col-1"> <div class="card"> <div class="card-header"><div class="card-title">Banners</div><div class="card-subtitle">Colored callouts with optional actions</div></div> <div class="card-body" style="display:flex;flex-direction:column;gap:10px"> <div class="banner"> <svg class="banner-icon" width="18" height="18" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M8 1l7 13H1L8 1z"/><path d="M8 6v4"/></svg> <div class="banner-body"><strong>New release available.</strong> v4.0.0-beta.2 ships fixes for inbox, settings persistence, and 16 chart variants.</div> <div class="banner-actions"> <button class="btn btn-outline btn-sm">Dismiss</button> <button class="btn btn-primary btn-sm">View notes</button> </div> </div> <div class="banner banner-warning"> <svg class="banner-icon" width="18" height="18" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M8 1l7 13H1L8 1z"/><path d="M8 6v4M8 12h.01"/></svg> <div class="banner-body"><strong>API quota at 87%.</strong> You'll hit the monthly limit by Friday at the current rate.</div> </div> <div class="banner banner-danger"> <svg class="banner-icon" width="18" height="18" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6"/><path d="M5 5l6 6M11 5l-6 6"/></svg> <div class="banner-body"><strong>Payment failed.</strong> Your subscription renewal couldn't be processed. Update your payment method to avoid service interruption.</div> <div class="banner-actions"><button class="btn btn-outline btn-sm">Update payment</button></div> </div> <div class="banner banner-info"> <svg class="banner-icon" width="18" height="18" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="8" cy="8" r="6"/><path d="M8 5v.01M8 7v4"/></svg> <div class="banner-body"><strong>Maintenance window</strong> scheduled for Friday April 30, 02:00–04:00 UTC. Some features may be temporarily unavailable.</div> </div> </div> </div> </div> <!-- ── New section: Accordion + Drawer + Popover ── --> <div class="row col-3"> <div class="card"> <div class="card-header"><div class="card-title">Accordion</div><div class="card-subtitle">Native &lt;details&gt; with token styling</div></div> <div class="card-body"> <div class="accordion"> <details class="accordion-item" open> <summary class="accordion-summary"> What's included <svg class="chev" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 6l4 4 4-4"/></svg> </summary> <div class="accordion-content">55+ pages, 16 chart variants, fully interactive inbox, kanban, calendar, and settings — all token-driven.</div> </details> <details class="accordion-item"> <summary class="accordion-summary"> How do I customize the colors? <svg class="chev" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 6l4 4 4-4"/></svg> </summary> <div class="accordion-content">Every color is a CSS custom property in <code>_tokens.scss</code>. Change <code>--primary</code> and the entire UI restyles.</div> </details> <details class="accordion-item"> <summary class="accordion-summary"> Is it really free? <svg class="chev" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 6l4 4 4-4"/></svg> </summary> <div class="accordion-content">MIT licensed since 2014. Use it for client work, side projects, your own SaaS — no attribution required.</div> </details> </div> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Drawer</div><div class="card-subtitle">Slide-in side panel</div></div> <div class="card-body"> <p style="font-size:12.5px;color:var(--text-secondary);line-height:1.55;margin-bottom:14px">Off-canvas panel for filters, settings, or secondary navigation. Click outside or press Escape to close.</p> <div style="display:flex;gap:8px;flex-wrap:wrap"> <button class="btn btn-primary btn-sm" id="open-drawer-right">Open right</button> <button class="btn btn-outline btn-sm" id="open-drawer-left">Open left</button> </div> </div> </div> <div class="card"> <div class="card-header"><div class="card-title">Popovers</div><div class="card-subtitle">Hover or focus for rich content</div></div> <div class="card-body" style="display:flex;flex-wrap:wrap;gap:24px;align-items:center"> <span class="popover-trigger" tabindex="0">