← Back to Files
_Layout.cshtml
@{
Layout = null;
}
@inject KaiChat.Models.KaiChatConfig KaiChatConfig
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover, interactive-widget=resizes-content" />
<title>@ViewData["Title"] - KaiChat</title>
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
</head>
<body>
<div class="app-container">
<aside class="sidebar" id="sidebar">
<div class="sidebar-header">
<h2>KaiChat</h2>
<button class="btn-icon sidebar-close" onclick="toggleSidebar()" title="Close menu">×</button>
</div>
<div class="sidebar-section">
<button class="btn btn-primary btn-new-chat" onclick="newChat()">+ New Chat</button>
</div>
<div class="sidebar-section sidebar-conversations" id="conversationList">
</div>
<nav class="sidebar-footer" aria-label="Utilities">
<a href="/Files" class="sidebar-link">Files</a>
<a href="/Memory" class="sidebar-link">Memory</a>
<a href="/Timer" class="sidebar-link">Timer</a>
<a href="/Testing" class="sidebar-link">Testing</a>
<a href="/Tool-Logs" class="sidebar-link">Tool Logs</a>
<a href="/Settings" class="sidebar-link">Settings</a>
</nav>
</aside>
<main class="main-content">
<nav class="top-bar">
<button class="btn-icon" onclick="toggleSidebar()" title="Menu">☰</button>
<label class="sr-only" for="personaSwitcher">Persona</label>
<select id="personaSwitcher" class="top-bar-persona-select" title="Current persona" onchange="onPersonaSwitcherChange(this.value)">
<option value="Kai">Kai</option>
</select>
<span class="top-bar-title" id="conversationTitle">Kai</span>
<span class="top-bar-test-badge" id="testModeBadge" style="display:none">TEST</span>
<div class="top-bar-right">
<div class="compaction-bar-container" id="compactionBarContainer" style="display:none">
<div class="compaction-bar"><div class="compaction-bar-fill" id="compactionBarFill"></div></div>
<span class="compaction-label" id="compactionLabel"></span>
</div>
<span class="top-bar-tokens" id="tokenDisplay"></span>
</div>
</nav>
@RenderBody()
<div class="status-bar" id="statusBar" data-state="offline">
<span class="status-dot" id="statusDot"></span>
<span class="status-text" id="statusText">Offline</span>
<span class="status-detail" id="statusDetail"></span>
<button type="button" class="status-notify-btn" id="notificationEnableBtn" onclick="enableKaiNotifications()" hidden>Enable notifications</button>
</div>
</main>
</div>
<input type="hidden" id="currentConversationId" value="" />
<script>
window.__kaiChatVersion = '@KaiChatConfig.AppVersion';
</script>
<script src="~/js/signalr.min.js" asp-append-version="true"></script>
<script src="~/js/chat.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>