Files
NebulaBrowser/ui/pages/chrome.html
T
Andrew Zambazos a8786b4c1c Add NebulaController, tab manager, and CEF clients
Introduce core application structure and browser management: add NebulaController and run entry (src/app/*) to centralize window, tab and CEF lifecycle logic; implement TabManager and NebulaTab (src/browser/*) for tab creation, navigation and state tracking; add URL utilities (NormalizeNavigationInput, JsonEscape) and CEF browser client glue (src/cef/browser_client.cpp/.h) to forward chrome commands and content events. Update app/main.cpp to delegate startup to nebula::app::RunNebula. Add UI assets (chrome.html, chrome.css, chrome.js, lucide, menu-popup updates) and remove obsolete nebot.html. Update CMakeLists to include new sources, add ${CMAKE_SOURCE_DIR}/src to includes and link dwmapi on Windows. Overall this refactors startup and splits responsibilities for cleaner tab and browser lifecycle handling.
2026-05-14 10:18:51 +12:00

75 lines
3.0 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nebula Chrome</title>
<link rel="stylesheet" href="../css/chrome.css">
</head>
<body>
<div class="nebula-chrome" data-drag-region>
<div class="title-row" data-drag-region>
<div class="brand" data-drag-region>
<img src="../assets/images/branding/Nebula-Icon.svg" alt="" class="brand-icon">
<span>Nebula</span>
</div>
<div class="tabs" role="tablist" aria-label="Nebula tabs">
<button id="active-tab" class="tab active" type="button" role="tab" aria-selected="true">
<span id="tab-favicon" class="tab-favicon"></span>
<span id="tab-title" class="tab-title">New Tab</span>
<span id="tab-loading" class="tab-loading" hidden></span>
</button>
<button class="tab-add" type="button" data-command="new-tab" title="New tab" aria-label="New tab">
<i data-lucide="plus"></i>
</button>
</div>
<div class="window-controls" aria-label="Window controls">
<button type="button" data-command="minimize" aria-label="Minimize">
<i data-lucide="minus"></i>
</button>
<button type="button" data-command="maximize" aria-label="Maximize">
<i data-lucide="square"></i>
</button>
<button type="button" data-command="close" class="close" aria-label="Close">
<i data-lucide="x"></i>
</button>
</div>
</div>
<div class="toolbar">
<button id="back-button" class="icon-button" type="button" data-command="back" aria-label="Back" disabled>
<i data-lucide="chevron-left"></i>
</button>
<button id="forward-button" class="icon-button" type="button" data-command="forward" aria-label="Forward" disabled>
<i data-lucide="chevron-right"></i>
</button>
<button id="reload-button" class="icon-button" type="button" data-command="reload" aria-label="Reload">
<i data-lucide="rotate-cw"></i>
</button>
<button class="icon-button" type="button" data-command="home" aria-label="Home">
<i data-lucide="home"></i>
</button>
<form id="address-form" class="address-shell" autocomplete="off">
<div id="progress-bar" class="progress-bar"></div>
<label class="sr-only" for="address-input">Search or enter address</label>
<input id="address-input" type="text" spellcheck="false" placeholder="Search or enter address">
</form>
<button class="icon-button" type="button" data-command="settings" aria-label="Settings">
<i data-lucide="settings"></i>
</button>
<button class="icon-button menu-button" type="button" data-command="menu-popup" aria-label="Open menu" title="Open menu">
<i data-lucide="menu"></i>
</button>
</div>
</div>
<script src="../js/lucide.min.js"></script>
<script>lucide.createIcons();</script>
<script src="../js/chrome.js"></script>
</body>
</html>