New desktop
Some checks failed
Deploy / deploy-staging (push) Failing after 6s
Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-06-06 03:20:50 +02:00
parent 756b4e119b
commit 888981c782
127 changed files with 31275 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
<?php
declare(strict_types=1);
$payloadJson = json_encode($desktopPayload, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT);
$activeSkin = $desktopPayload['meta']['active_skin'];
$wallpaper = $desktopPayload['desktop']['wallpaper'];
?><!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= htmlspecialchars($desktopPayload['meta']['title'], ENT_QUOTES) ?></title>
<link rel="stylesheet" href="/assets/desktop/desktop.css">
</head>
<body data-skin="<?= htmlspecialchars($activeSkin, ENT_QUOTES) ?>" style="--wallpaper: <?= htmlspecialchars($wallpaper, ENT_QUOTES) ?>;">
<div class="desktop-shell">
<aside class="desktop-sidebar">
<div>
<p class="eyebrow">Kusche.Berlin</p>
<h1>Desktop UI</h1>
<p class="lede"><?= htmlspecialchars($desktopPayload['desktop']['greeting'], ENT_QUOTES) ?></p>
</div>
<section class="panel">
<h2>Skins</h2>
<div class="skin-switcher">
<?php foreach ($desktopPayload['meta']['available_skins'] as $skin): ?>
<a class="skin-chip<?= $skin === $activeSkin ? ' is-active' : '' ?>" href="/?skin=<?= urlencode($skin) ?>">
<?= htmlspecialchars(ucfirst($skin), ENT_QUOTES) ?>
</a>
<?php endforeach; ?>
</div>
</section>
<section class="panel">
<h2>V1 Scope</h2>
<ul class="fact-list">
<li>Desktop-Shell auf Root</li>
<li>Fenster-Manager vorbereitet</li>
<li>App-Registry zentral konfiguriert</li>
<li>Public Home und persoenliche Workspaces vorgesehen</li>
</ul>
</section>
<section class="panel">
<h2>Keycloak</h2>
<p>Desktop-Login bleibt Keycloak-basiert, bekommt aber ein eigenes Theme.</p>
<a class="text-link" href="/../docs/keycloak-theme-handoff.md">Theme-Handoff ansehen</a>
</section>
</aside>
<main class="desktop-stage">
<div class="desktop-icons" id="desktop-icons"></div>
<div class="widget-zone">
<?php foreach ($desktopPayload['widgets'] as $widget): ?>
<article class="widget-card">
<h3><?= htmlspecialchars($widget['title'], ENT_QUOTES) ?></h3>
<p><?= htmlspecialchars($widget['content'], ENT_QUOTES) ?></p>
</article>
<?php endforeach; ?>
</div>
<div class="window-layer" id="window-layer"></div>
<footer class="taskbar">
<button class="start-button" id="start-button" type="button">Menu</button>
<div class="taskbar-apps" id="taskbar-apps"></div>
<div class="tray">
<?php foreach ($desktopPayload['tray'] as $trayItem): ?>
<span class="tray-pill"><?= htmlspecialchars($trayItem['label'], ENT_QUOTES) ?></span>
<?php endforeach; ?>
<time id="clock"></time>
</div>
</footer>
</main>
</div>
<script id="desktop-payload" type="application/json"><?= $payloadJson ?></script>
<script src="/assets/desktop/desktop.js"></script>
</body>
</html>