diff --git a/src/components/legal/LegalTextsTab.jsx b/src/components/legal/LegalTextsTab.jsx index 37fd129..c21cc63 100644 --- a/src/components/legal/LegalTextsTab.jsx +++ b/src/components/legal/LegalTextsTab.jsx @@ -1,5 +1,5 @@ import { useState } from 'react' -import { Badge, Button, Card } from '../ui' +import { Badge, Card } from '../ui' import { currentVersion, formatDate } from '../../lib/legal' import VersionForm from './VersionForm' import { FileLinks } from './legalUi' @@ -21,8 +21,8 @@ export default function LegalTextsTab({ documents, versions, fileNames, addVersi } return ( -
- {actionError &&
{actionError}
} +
+ {actionError &&
{actionError}
} {documents.map((doc) => { const own = versions.filter((v) => v.documentKey === doc.key).sort(byNewest) const current = currentVersion(own) @@ -33,9 +33,14 @@ export default function LegalTextsTab({ documents, versions, fileNames, addVersi key={doc.$id} className="legal-doc" title={doc.title} - actions={} + actions={} > -
setOpen(expanded ? null : doc.key)} role="button"> +
+ {expanded ? 'Verlauf ausblenden' : `Verlauf (${own.length})`} + {doc.liveUrl && ( - Live-Seite öffnen + Live-Seite öffnen )} {expanded && (
    {own.length === 0 &&
  1. Noch keine Versionen eingetragen.
  2. } {own.map((v) => ( -
  3. +
  4. {v.version} - {formatDate(v.validFrom)} – {v.status === 'current' ? 'heute' : formatDate(v.validTo)} + {formatDate(v.validFrom)} – {v.status === 'current' ? 'heute' : formatDate(v.validTo)} {v.status === 'current' && gültig} {v.status === 'draft' && Entwurf} {v.status === 'draft' && ( - + )}
    {v.changeNote &&
    {v.changeNote}
    } diff --git a/src/components/legal/legalUi.jsx b/src/components/legal/legalUi.jsx index e815b9d..e73cee3 100644 --- a/src/components/legal/legalUi.jsx +++ b/src/components/legal/legalUi.jsx @@ -11,9 +11,9 @@ export function FileLinks({ fileIds = [], fileNames = {} }) { {fileIds.map((id) => ( - {fileNames[id] || 'Datei'} + {fileNames[id] || 'Datei'} {' '} - (herunterladen) + (herunterladen) ))} diff --git a/src/pages/LegalPage.jsx b/src/pages/LegalPage.jsx index 2b5bcb0..baa1fb8 100644 --- a/src/pages/LegalPage.jsx +++ b/src/pages/LegalPage.jsx @@ -16,7 +16,7 @@ export default function LegalPage() { const active = tab === 'texte' ? texts : contracts let body - if (active.loading) body =
    Lädt …
    + if (active.loading) body =
    Lädt …
    else if (active.missingSetup) { body = ( - {active.error &&
    {active.error}
    } + {active.error &&
    {active.error}
    } {body}
) diff --git a/src/styles/global.css b/src/styles/global.css index 609bfda..25a86a0 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -601,20 +601,20 @@ a.list-row:hover .cell-title { color: var(--accent-ink); } } /* --- Rechtliches --- */ -.legal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(360px, 100%), 1fr)); gap: var(--sp-4); align-items: start; margin-top: var(--sp-4); } -.legal-grid > .legal-error { grid-column: 1 / -1; } -.legal-doc-summary { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; cursor: pointer; } -.legal-toggle { margin-left: auto; font-size: 13px; } -.legal-live { display: inline-block; margin-top: 8px; font-size: 13px; color: var(--accent); } -.legal-history { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 8px; } -.legal-version { border: 1px solid var(--border); border-radius: var(--r-sm); padding: 8px 10px; font-size: 14px; } -.legal-version-current { border-color: var(--ok); background: rgba(16, 185, 129, 0.08); } -.legal-version-draft { border-style: dashed; } -.legal-version-superseded { color: var(--text-muted); } -.legal-version-head { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; } -.legal-note { white-space: pre-wrap; margin: 4px 0; color: var(--text-muted); font-size: 13px; } -.legal-files { display: inline-flex; flex-wrap: wrap; gap: 4px 12px; font-size: 13px; } -.legal-files a { color: var(--accent); } +.legal-doc-summary { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: 100%; padding: 12px 0; text-align: left; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); } +.legal-toggle { margin-left: auto; font-size: 13px; color: var(--text-2); } +.legal-live { display: inline-block; margin-top: 8px; font-size: 13px; } +.legal-history { list-style: none; margin: 0; padding: 0; } +.legal-version { padding: 10px 0; border-bottom: 1px solid var(--line); } +.legal-version.is-superseded { color: var(--text-2); } +.legal-version-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; } +.legal-version-head .link { margin-left: auto; } +.legal-note { white-space: pre-wrap; margin: 4px 0; font-size: 13px; color: var(--text-2); overflow-wrap: anywhere; } +.legal-files { display: inline-flex; flex-wrap: wrap; gap: 4px 12px; font-size: 13px; overflow-wrap: anywhere; } +.legal-files .link { font-weight: 400; } +.legal-files .legal-dl { color: var(--text-2); } +.legal-msg { margin: 0 0 12px; } +.legal-doc h2.section .link { white-space: nowrap; } /* "Neue Version" bleibt am Handy eine Zeile */ .legal-error { background: var(--danger); color: #fff; padding: 8px 12px; border-radius: var(--r-sm); margin: 8px 0; } .legal-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); } .legal-contracts { margin-top: var(--sp-2); } @@ -628,7 +628,6 @@ a.list-row:hover .cell-title { color: var(--accent-ink); } .legal-detail td { background: var(--surface-2); cursor: default; } .legal-actions { margin-top: 8px; flex-wrap: wrap; } @media (max-width: 700px) { - .legal-grid { grid-template-columns: 1fr; } .legal-form-row { grid-template-columns: 1fr; } .legal-contracts { display: block; overflow-x: auto; } } @@ -1266,13 +1265,13 @@ div.row { display: flex; flex-wrap: wrap; margin: 0 -8px; } .page .page { margin: 0; padding: 0; max-width: none; } /* Links in Bestandsklassen, die bisher --accent als Farbe nutzten: feiner Unterstrich */ -.fin-link, .legal-files a { +.fin-link { text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; text-decoration-thickness: 1px; } -.fin-link:hover, .legal-files a:hover { text-decoration-color: currentColor; } +.fin-link:hover { text-decoration-color: currentColor; } /* Abschnitte (Card =
) als Spalten nebeneinander: der Abstand .page section + section gilt nur fuer untereinander stehende Abschnitte */ -.legal-grid > section + section, .fin-cols > section + section, +.fin-cols > section + section, .page div[style*="display: grid"] > section + section { margin-top: 0; } /* Altformulare mit (Kunde, Projekt zuweisen, Neuer Lead): Zeilenabstand wie frueher; neue Container bestimmen ihren Abstand selbst */