Spaces:
Paused
Paused
UI: Add native inline back buttons to subviews (Lernen, Scan, IServ) instead of floating pill
Browse files- index.html +1 -1
- src/app.js +0 -23
- src/views/iserv/iserv-view.js +11 -3
- src/views/learn/learn-view.js +6 -1
- src/views/scan/scan-view.js +7 -3
index.html
CHANGED
|
@@ -51,7 +51,7 @@
|
|
| 51 |
</head>
|
| 52 |
<body class="dark-theme in-chat-view">
|
| 53 |
|
| 54 |
-
<div id="live-version-badge" style="position: fixed; top: 50px; left: 50%; transform: translateX(-50%); font-size: 10px; color: var(--text-secondary); opacity: 0.6; z-index: 99999; pointer-events: none; font-weight: 500; font-family: monospace; letter-spacing: 1px; background: rgba(0,0,0,0.2); padding: 2px 8px; border-radius: 10px; border: 1px solid rgba(255,255,255,0.05);">BUILD 1.2.
|
| 55 |
|
| 56 |
<!-- SVG Filters for Liquid Glass Refraction -->
|
| 57 |
<svg width="0" height="0" style="position: absolute; pointer-events: none;">
|
|
|
|
| 51 |
</head>
|
| 52 |
<body class="dark-theme in-chat-view">
|
| 53 |
|
| 54 |
+
<div id="live-version-badge" style="position: fixed; top: 50px; left: 50%; transform: translateX(-50%); font-size: 10px; color: var(--text-secondary); opacity: 0.6; z-index: 99999; pointer-events: none; font-weight: 500; font-family: monospace; letter-spacing: 1px; background: rgba(0,0,0,0.2); padding: 2px 8px; border-radius: 10px; border: 1px solid rgba(255,255,255,0.05);">BUILD 1.2.3</div>
|
| 55 |
|
| 56 |
<!-- SVG Filters for Liquid Glass Refraction -->
|
| 57 |
<svg width="0" height="0" style="position: absolute; pointer-events: none;">
|
src/app.js
CHANGED
|
@@ -465,29 +465,6 @@ const initApp = async () => {
|
|
| 465 |
}
|
| 466 |
}
|
| 467 |
|
| 468 |
-
// Add back button for sub-views
|
| 469 |
-
if (isSubView) {
|
| 470 |
-
const backBtn = document.createElement('button');
|
| 471 |
-
backBtn.innerHTML = '<svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none"><polyline points="15 18 9 12 15 6"></polyline></svg> Zurück zum Hub';
|
| 472 |
-
backBtn.style.position = 'fixed';
|
| 473 |
-
backBtn.style.top = 'env(safe-area-inset-top, 20px)';
|
| 474 |
-
backBtn.style.left = '20px';
|
| 475 |
-
backBtn.style.zIndex = '999999';
|
| 476 |
-
backBtn.style.display = 'flex';
|
| 477 |
-
backBtn.style.alignItems = 'center';
|
| 478 |
-
backBtn.style.gap = '4px';
|
| 479 |
-
backBtn.style.padding = '8px 16px';
|
| 480 |
-
backBtn.style.background = 'rgba(0,0,0,0.5)';
|
| 481 |
-
backBtn.style.color = '#fff';
|
| 482 |
-
backBtn.style.border = '1px solid rgba(255,255,255,0.2)';
|
| 483 |
-
backBtn.style.borderRadius = '20px';
|
| 484 |
-
backBtn.style.backdropFilter = 'blur(10px)';
|
| 485 |
-
backBtn.style.fontWeight = '600';
|
| 486 |
-
backBtn.style.boxShadow = '0 4px 12px rgba(0,0,0,0.5)';
|
| 487 |
-
backBtn.onclick = () => window.openView('Hub');
|
| 488 |
-
routerView.appendChild(backBtn);
|
| 489 |
-
}
|
| 490 |
-
|
| 491 |
routerView.classList.remove('view-exit-anim');
|
| 492 |
routerView.classList.add('view-enter-anim');
|
| 493 |
};
|
|
|
|
| 465 |
}
|
| 466 |
}
|
| 467 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 468 |
routerView.classList.remove('view-exit-anim');
|
| 469 |
routerView.classList.add('view-enter-anim');
|
| 470 |
};
|
src/views/iserv/iserv-view.js
CHANGED
|
@@ -175,7 +175,10 @@ export class IServView {
|
|
| 175 |
renderLogin() {
|
| 176 |
this.container.innerHTML = `
|
| 177 |
<div class="iserv-container">
|
| 178 |
-
<div class="iserv-header">
|
|
|
|
|
|
|
|
|
|
| 179 |
<h1>IServ Anbindung</h1>
|
| 180 |
</div>
|
| 181 |
<div class="iserv-login-card">
|
|
@@ -305,8 +308,13 @@ export class IServView {
|
|
| 305 |
this.container.innerHTML = `
|
| 306 |
<div class="iserv-container">
|
| 307 |
${!this.isLoading ? `
|
| 308 |
-
<div class="iserv-header">
|
| 309 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 310 |
<button class="icon-btn" id="iserv-logout-btn" title="Abmelden" style="width: 40px; height: 40px; background: rgba(255,255,255,0.05); color: var(--text-primary); border-radius: 12px; cursor: pointer; display: flex; align-items: center; justify-content: center;">
|
| 311 |
${getIconSvg('log-out')}
|
| 312 |
</button>
|
|
|
|
| 175 |
renderLogin() {
|
| 176 |
this.container.innerHTML = `
|
| 177 |
<div class="iserv-container">
|
| 178 |
+
<div class="iserv-header" style="display: flex; align-items: center; gap: 12px;">
|
| 179 |
+
<button onclick="window.openView('Hub')" class="icon-btn" style="background: transparent; padding: 0; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; color: var(--text-secondary);">
|
| 180 |
+
<svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg>
|
| 181 |
+
</button>
|
| 182 |
<h1>IServ Anbindung</h1>
|
| 183 |
</div>
|
| 184 |
<div class="iserv-login-card">
|
|
|
|
| 308 |
this.container.innerHTML = `
|
| 309 |
<div class="iserv-container">
|
| 310 |
${!this.isLoading ? `
|
| 311 |
+
<div class="iserv-header" style="display: flex; justify-content: space-between; align-items: center;">
|
| 312 |
+
<div style="display: flex; align-items: center; gap: 12px;">
|
| 313 |
+
<button onclick="window.openView('Hub')" class="icon-btn" style="background: transparent; padding: 0; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; color: var(--text-secondary);">
|
| 314 |
+
<svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg>
|
| 315 |
+
</button>
|
| 316 |
+
<h1 style="margin: 0;">Deine Aufgaben</h1>
|
| 317 |
+
</div>
|
| 318 |
<button class="icon-btn" id="iserv-logout-btn" title="Abmelden" style="width: 40px; height: 40px; background: rgba(255,255,255,0.05); color: var(--text-primary); border-radius: 12px; cursor: pointer; display: flex; align-items: center; justify-content: center;">
|
| 319 |
${getIconSvg('log-out')}
|
| 320 |
</button>
|
src/views/learn/learn-view.js
CHANGED
|
@@ -77,7 +77,12 @@ export class LearnView {
|
|
| 77 |
this.container.innerHTML = `
|
| 78 |
<div class="learn-view">
|
| 79 |
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px;">
|
| 80 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
<button id="add-deck-btn" class="icon-btn gpu-accelerated" style="background: rgba(255,255,255,0.05); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255,255,255,0.05); border-radius: 50%; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center;">
|
| 82 |
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14M5 12h14"/></svg>
|
| 83 |
</button>
|
|
|
|
| 77 |
this.container.innerHTML = `
|
| 78 |
<div class="learn-view">
|
| 79 |
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px;">
|
| 80 |
+
<div style="display: flex; align-items: center; gap: 12px;">
|
| 81 |
+
<button onclick="window.openView('Hub')" class="icon-btn" style="background: transparent; padding: 0; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; color: var(--text-secondary);">
|
| 82 |
+
<svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg>
|
| 83 |
+
</button>
|
| 84 |
+
<h2 style="margin: 0; font-size: 28px; color: var(--text-primary);">Lernen</h2>
|
| 85 |
+
</div>
|
| 86 |
<button id="add-deck-btn" class="icon-btn gpu-accelerated" style="background: rgba(255,255,255,0.05); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255,255,255,0.05); border-radius: 50%; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center;">
|
| 87 |
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14M5 12h14"/></svg>
|
| 88 |
</button>
|
src/views/scan/scan-view.js
CHANGED
|
@@ -36,9 +36,13 @@ export class ScanView {
|
|
| 36 |
<div style="padding: 24px; max-width: 800px; margin: 0 auto; display: flex; flex-direction: column; gap: 24px; height: 100%; box-sizing: border-box; position: relative;">
|
| 37 |
|
| 38 |
<!-- Header -->
|
| 39 |
-
<div style="position: relative;
|
| 40 |
-
|
| 41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
<p style="color: var(--text-secondary); font-size: 14px;">Mache ein Foto deines leeren Arbeitsblattes. Die KI löst die Aufgaben und füllt es in Handschrift für dich aus.</p>
|
| 43 |
</div>
|
| 44 |
|
|
|
|
| 36 |
<div style="padding: 24px; max-width: 800px; margin: 0 auto; display: flex; flex-direction: column; gap: 24px; height: 100%; box-sizing: border-box; position: relative;">
|
| 37 |
|
| 38 |
<!-- Header -->
|
| 39 |
+
<div style="position: relative; margin-bottom: 16px;">
|
| 40 |
+
<div style="display: flex; align-items: center; gap: 12px; margin-bottom: 8px;">
|
| 41 |
+
<button onclick="window.openView('Hub')" class="icon-btn" style="background: transparent; padding: 0; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; color: var(--text-secondary);">
|
| 42 |
+
<svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg>
|
| 43 |
+
</button>
|
| 44 |
+
<h2 style="font-size: 24px; font-weight: 600; margin: 0;">Arbeitsblatt Scan</h2>
|
| 45 |
+
</div>
|
| 46 |
<p style="color: var(--text-secondary); font-size: 14px;">Mache ein Foto deines leeren Arbeitsblattes. Die KI löst die Aufgaben und füllt es in Handschrift für dich aus.</p>
|
| 47 |
</div>
|
| 48 |
|