DJAKOUA KWANKAM BRAYAN STEVE commited on
Commit
10de57d
·
1 Parent(s): c49f2ba

feat: add app favicon and startup loading overlay animation

Browse files
cypher-chat-app/public/app.js CHANGED
@@ -60,6 +60,15 @@ document.addEventListener("DOMContentLoaded", () => {
60
  }
61
 
62
  setupEventListeners();
 
 
 
 
 
 
 
 
 
63
  });
64
 
65
  // Settings & Theme Initialization
 
60
  }
61
 
62
  setupEventListeners();
63
+
64
+ // Hide startup loader smoothly
65
+ const loader = document.getElementById("startupLoader");
66
+ if (loader) {
67
+ setTimeout(() => {
68
+ loader.classList.add("fade-out");
69
+ setTimeout(() => loader.remove(), 600);
70
+ }, 1500); // 1.5 seconds premium delay
71
+ }
72
  });
73
 
74
  // Settings & Theme Initialization
cypher-chat-app/public/index.html CHANGED
@@ -4,6 +4,7 @@
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
6
  <title>Cypher AI — Chat App</title>
 
7
  <link rel="stylesheet" href="style.css">
8
  <!-- Google Fonts -->
9
  <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700;800&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
@@ -11,6 +12,18 @@
11
  <script src="https://unpkg.com/lucide@latest"></script>
12
  </head>
13
  <body>
 
 
 
 
 
 
 
 
 
 
 
 
14
  <div class="app-container">
15
  <!-- Sidebar Panel -->
16
  <aside class="sidebar" id="sidebar">
 
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
6
  <title>Cypher AI — Chat App</title>
7
+ <link rel="icon" type="image/png" href="logo.png">
8
  <link rel="stylesheet" href="style.css">
9
  <!-- Google Fonts -->
10
  <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700;800&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
 
12
  <script src="https://unpkg.com/lucide@latest"></script>
13
  </head>
14
  <body>
15
+ <!-- Startup loading screen -->
16
+ <div class="startup-loader" id="startupLoader">
17
+ <div class="loader-content">
18
+ <img src="logo.png" alt="Cypher AI Logo" class="loader-logo">
19
+ <h2 class="loader-title">CYPHER AI</h2>
20
+ <div class="loader-bar-container">
21
+ <div class="loader-bar"></div>
22
+ </div>
23
+ <p class="loader-subtitle">Chargement des modules d'élite...</p>
24
+ </div>
25
+ </div>
26
+
27
  <div class="app-container">
28
  <!-- Sidebar Panel -->
29
  <aside class="sidebar" id="sidebar">
cypher-chat-app/public/style.css CHANGED
@@ -1285,3 +1285,93 @@ input:checked + .slider:before {
1285
  to { opacity: 0; transform: scale(0.95); }
1286
  }
1287
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1285
  to { opacity: 0; transform: scale(0.95); }
1286
  }
1287
 
1288
+ /* -----------------------------------------------------
1289
+ STARTUP LOADER OVERLAY
1290
+ ----------------------------------------------------- */
1291
+ .startup-loader {
1292
+ position: fixed;
1293
+ top: 0;
1294
+ left: 0;
1295
+ width: 100vw;
1296
+ height: 100vh;
1297
+ background-color: var(--bg-app);
1298
+ background-image: var(--bg-gradient);
1299
+ z-index: 99999;
1300
+ display: flex;
1301
+ align-items: center;
1302
+ justify-content: center;
1303
+ transition: opacity 0.6s ease, transform 0.6s ease;
1304
+ }
1305
+
1306
+ .startup-loader.fade-out {
1307
+ opacity: 0;
1308
+ pointer-events: none;
1309
+ transform: scale(1.05);
1310
+ }
1311
+
1312
+ .loader-content {
1313
+ display: flex;
1314
+ flex-direction: column;
1315
+ align-items: center;
1316
+ text-align: center;
1317
+ }
1318
+
1319
+ .loader-logo {
1320
+ width: 96px;
1321
+ height: 96px;
1322
+ border-radius: 16px;
1323
+ border: 2px solid var(--accent-cyan);
1324
+ box-shadow: 0 0 30px rgba(0, 229, 255, 0.35);
1325
+ margin-bottom: 20px;
1326
+ animation: pulseLogo 2s infinite ease-in-out;
1327
+ }
1328
+
1329
+ .loader-title {
1330
+ font-size: 24px;
1331
+ font-weight: 800;
1332
+ letter-spacing: 2px;
1333
+ background: linear-gradient(90deg, var(--accent-cyan), var(--accent-green));
1334
+ -webkit-background-clip: text;
1335
+ -webkit-text-fill-color: transparent;
1336
+ margin-bottom: 16px;
1337
+ }
1338
+
1339
+ .loader-bar-container {
1340
+ width: 200px;
1341
+ height: 4px;
1342
+ background: rgba(30, 34, 53, 0.5);
1343
+ border-radius: 2px;
1344
+ overflow: hidden;
1345
+ margin-bottom: 12px;
1346
+ border: 1px solid rgba(255,255,255,0.05);
1347
+ }
1348
+
1349
+ .loader-bar {
1350
+ width: 0%;
1351
+ height: 100%;
1352
+ background: linear-gradient(90deg, var(--accent-cyan), var(--accent-green));
1353
+ box-shadow: 0 0 10px var(--accent-cyan);
1354
+ animation: loadProgress 1.4s ease-out forwards;
1355
+ }
1356
+
1357
+ .loader-subtitle {
1358
+ font-size: 11px;
1359
+ color: var(--text-muted);
1360
+ font-weight: 600;
1361
+ text-transform: uppercase;
1362
+ letter-spacing: 1px;
1363
+ }
1364
+
1365
+ @keyframes pulseLogo {
1366
+ 0% { transform: scale(1); box-shadow: 0 0 20px rgba(0, 229, 255, 0.2); }
1367
+ 50% { transform: scale(1.04); box-shadow: 0 0 35px rgba(0, 229, 255, 0.45); }
1368
+ 100% { transform: scale(1); box-shadow: 0 0 20px rgba(0, 229, 255, 0.2); }
1369
+ }
1370
+
1371
+ @keyframes loadProgress {
1372
+ 0% { width: 0%; }
1373
+ 20% { width: 30%; }
1374
+ 60% { width: 75%; }
1375
+ 100% { width: 100%; }
1376
+ }
1377
+