Monorepo for Aesthetic.Computer aesthetic.computer
at main 178 lines 4.5 kB view raw
1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="Content-Security-Policy" content="{{CSP}}"> 7 <style> 8 * { margin: 0; padding: 0; box-sizing: border-box; } 9 10 body { 11 background: #181318; 12 color: #fff; 13 font-family: 'Berkeley Mono', 'Courier New', monospace; 14 overflow: hidden; 15 height: 100vh; 16 } 17 body[data-theme="light"] { 18 background: #fcf7c5; 19 color: #281e5a; 20 } 21 22 #canvas { 23 position: absolute; 24 top: 44px; 25 left: 0; 26 width: 100%; 27 height: calc(100% - 44px - 36px); 28 cursor: default; 29 } 30 31 /* Header */ 32 .header { 33 position: fixed; 34 top: 0; 35 left: 0; 36 right: 0; 37 height: 44px; 38 display: flex; 39 align-items: center; 40 justify-content: space-between; 41 padding: 0 16px; 42 background: rgba(24, 19, 24, 0.95); 43 border-bottom: 1px solid rgba(255, 255, 255, 0.1); 44 z-index: 100; 45 } 46 body[data-theme="light"] .header { 47 background: rgba(252, 247, 197, 0.95); 48 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 49 } 50 51 .header-left { 52 display: flex; 53 align-items: center; 54 gap: 12px; 55 font-size: 13px; 56 } 57 58 .status-dot { 59 width: 6px; 60 height: 6px; 61 border-radius: 50%; 62 background: #ff69b4; 63 } 64 .status-dot.online { background: #0f0; } 65 body[data-theme="light"] .status-dot { background: #387adf; } 66 body[data-theme="light"] .status-dot.online { background: #006400; } 67 68 .header-center { 69 display: flex; 70 gap: 16px; 71 font-size: 11px; 72 color: #666; 73 } 74 body[data-theme="light"] .header-center { color: #806060; } 75 76 .header-right { 77 display: flex; 78 gap: 8px; 79 } 80 81 .btn { 82 background: rgba(255, 255, 255, 0.1); 83 border: 1px solid rgba(255, 255, 255, 0.2); 84 color: #fff; 85 padding: 5px 10px; 86 border-radius: 4px; 87 font-size: 11px; 88 cursor: pointer; 89 font-family: inherit; 90 } 91 body[data-theme="light"] .btn { 92 background: rgba(0, 0, 0, 0.08); 93 border: 1px solid rgba(0, 0, 0, 0.15); 94 color: #281e5a; 95 } 96 .btn:hover { 97 background: rgba(255, 255, 255, 0.18); 98 border-color: #ff69b4; 99 } 100 body[data-theme="light"] .btn:hover { 101 background: rgba(0, 0, 0, 0.12); 102 border-color: #006400; 103 } 104 105 /* Status bar */ 106 .status-bar { 107 position: fixed; 108 bottom: 0; 109 left: 0; 110 right: 0; 111 height: 36px; 112 display: flex; 113 align-items: center; 114 justify-content: space-between; 115 padding: 0 16px; 116 background: rgba(24, 19, 24, 0.95); 117 border-top: 1px solid rgba(255, 255, 255, 0.1); 118 z-index: 100; 119 font-size: 11px; 120 color: #666; 121 } 122 body[data-theme="light"] .status-bar { 123 background: rgba(252, 247, 197, 0.95); 124 border-top: 1px solid rgba(0, 0, 0, 0.1); 125 color: #806060; 126 } 127 128 .tooltip { 129 position: fixed; 130 padding: 8px 12px; 131 background: rgba(0, 0, 0, 0.9); 132 color: #fff; 133 border-radius: 6px; 134 font-size: 11px; 135 pointer-events: none; 136 z-index: 1000; 137 white-space: pre; 138 font-family: inherit; 139 display: none; 140 border: 1px solid rgba(255, 255, 255, 0.2); 141 } 142 body[data-theme="light"] .tooltip { 143 background: rgba(252, 247, 197, 0.95); 144 color: #281e5a; 145 border: 1px solid rgba(0, 0, 0, 0.2); 146 } 147 </style> 148</head> 149<body data-theme="dark"> 150 <div class="header"> 151 <div class="header-left"> 152 <div class="status-dot" id="status-dot"></div> 153 <span>Aesthetic.Computer</span> 154 <span id="process-count">0 processes</span> 155 </div> 156 <div class="header-center"> 157 <span id="uptime"></span> 158 <span id="cpu-info"></span> 159 <span id="mem-info"></span> 160 </div> 161 <div class="header-right"> 162 <button class="btn" onclick="window.ProcessTree2D?.resetView()">Reset</button> 163 <button class="btn" onclick="window.ProcessTree2D?.toggleTheme()">🌓</button> 164 </div> 165 </div> 166 167 <canvas id="canvas"></canvas> 168 169 <div class="status-bar"> 170 <span id="hover-info">Hover over a process for details</span> 171 <span id="zoom-info">Scroll to zoom • Click+Drag to pan</span> 172 </div> 173 174 <div class="tooltip" id="tooltip"></div> 175 176 <script src="process-tree-2d.js"></script> 177</body> 178</html>