From 98bce1b0da675715b2e5482c0ad61ba21135f62f Mon Sep 17 00:00:00 2001
From: Server-Bibliothek <server-bibliothek@lokal>
Date: Di, 04 Aug 2026 07:00:04 +0200
Subject: [PATCH] Add a desktop client that knows what is installed locally

---
 desktop/frontend/src/global.css |  200 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 200 insertions(+), 0 deletions(-)

diff --git a/desktop/frontend/src/global.css b/desktop/frontend/src/global.css
new file mode 100644
index 0000000..5fafb71
--- /dev/null
+++ b/desktop/frontend/src/global.css
@@ -0,0 +1,200 @@
+html,
+body {
+  margin: 0;
+  min-height: 100%;
+  background: var(--md-sys-color-surface, #ffffff);
+  color: var(--md-sys-color-on-surface, #1a1a1a);
+  font-family: system-ui, -apple-system, 'Segoe UI', sans-serif;
+}
+
+.rahmen {
+  padding: 20px 24px 32px;
+  max-width: 1000px;
+  margin: 0 auto;
+}
+
+.kopf {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  gap: 16px;
+  margin-bottom: 16px;
+}
+
+.kopf h1 {
+  font-size: 1.3rem;
+  margin: 0;
+}
+
+.kopf-aktionen {
+  display: flex;
+  gap: 8px;
+  align-items: center;
+}
+
+.theme-select {
+  min-width: 140px;
+}
+
+.hinweis {
+  background: var(--md-sys-color-secondary-container, #e6e0ec);
+  color: var(--md-sys-color-on-secondary-container, #1d1b20);
+  padding: 12px 16px;
+  border-radius: 8px;
+  margin-bottom: 16px;
+}
+
+.warnung {
+  padding: 12px 16px;
+  margin-bottom: 16px;
+  border-radius: 8px;
+  border: 1px solid var(--md-sys-color-error, #b00020);
+  background: var(--md-sys-color-error-container, rgba(176, 0, 32, 0.12));
+  color: var(--md-sys-color-on-error-container, #410002);
+}
+
+/* Die Meldung, für die es den Client gibt — deutlicher als ein normaler Hinweis. */
+.update-hinweis {
+  padding: 12px 16px;
+  margin-bottom: 16px;
+  border-radius: 8px;
+  border-left: 4px solid var(--md-sys-color-primary, #ff8014);
+  background: var(--md-sys-color-surface-container-high, #eeeeee);
+  color: var(--md-sys-color-on-surface, #1a1a1a);
+}
+
+.suche {
+  display: block;
+  max-width: 400px;
+  margin-bottom: 12px;
+}
+
+dh-tab {
+  display: block;
+}
+
+[slot='tab-content'].hidden {
+  display: none;
+}
+
+.leer {
+  padding: 16px 4px;
+  opacity: 0.7;
+}
+
+.liste {
+  border: 1px solid var(--md-sys-color-outline-variant, #cac4d0);
+  border-radius: 8px;
+  overflow: hidden;
+}
+
+.liste > client-zeile {
+  display: block;
+  border-bottom: 1px solid var(--md-sys-color-outline-variant, #e7e0ec);
+}
+
+.liste > client-zeile:last-child {
+  border-bottom: none;
+}
+
+.zeile {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  gap: 16px;
+  padding: 8px 16px;
+}
+
+.zeile-info {
+  display: flex;
+  flex-direction: column;
+  min-width: 0;
+  flex: 1 1 auto;
+  overflow: hidden;
+}
+
+.zeile-info > * {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.zeile-name {
+  font-weight: 600;
+  display: flex;
+  align-items: center;
+  gap: 8px;
+}
+
+.zeile-meta {
+  font-size: 0.85em;
+  opacity: 0.7;
+}
+
+.zeile-hinweis {
+  font-size: 0.85em;
+  color: var(--md-sys-color-on-surface-variant, #49454f);
+  font-style: italic;
+}
+
+/* Feste Spalten, damit die Schaltflächen über alle Zeilen untereinander stehen. */
+.zeile-aktionen {
+  display: grid;
+  grid-template-columns: 48px 48px;
+  gap: 8px;
+  align-items: center;
+  justify-items: center;
+  flex-shrink: 0;
+}
+
+.marke {
+  flex-shrink: 0;
+  font-size: 0.72em;
+  font-weight: 500;
+  text-transform: uppercase;
+  letter-spacing: 0.04em;
+  padding: 2px 8px;
+  border-radius: 999px;
+}
+
+.intern-marke {
+  background: var(--md-sys-color-primary-container, #ffe4cc);
+  color: var(--md-sys-color-on-primary-container, #4a1e00);
+}
+
+.lizenz-marke {
+  background: var(--md-sys-color-tertiary-container, #ffd9a0);
+  color: var(--md-sys-color-on-tertiary-container, #2b1700);
+}
+
+.zustand-aktuell {
+  color: var(--md-sys-color-primary, #ff8014);
+}
+
+.zustand-veraltet,
+.zustand-fremd {
+  color: var(--md-sys-color-error, #b00020);
+  font-weight: 500;
+}
+
+.zustand-fehlt {
+  font-style: italic;
+}
+
+.feldhinweis {
+  display: block;
+  font-size: 0.8em;
+  opacity: 0.7;
+  margin-top: 4px;
+}
+
+dh-card {
+  display: block;
+}
+
+[slot='actions'] {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 8px;
+  align-items: center;
+}

--
Gitblit v1.9.3