{emptyText[activeView]}
+{query || categoryFilter ? t.emptySearch : emptyText[activeView]}
) : ({trashDaysLeft === 0 diff --git a/gerbil-manager-web/src/pages/tickets.css b/gerbil-manager-web/src/pages/tickets.css index 8415840..b3de01b 100644 --- a/gerbil-manager-web/src/pages/tickets.css +++ b/gerbil-manager-web/src/pages/tickets.css @@ -311,6 +311,60 @@ word-break: break-word; } +/* Suche + Kategorie-Filter über der Ticket-Liste. */ +.tickets-search { + display: flex; + gap: 0.5rem; + margin: 0 0 1rem; + flex-wrap: wrap; +} +.tickets-search__input { + flex: 1 1 16rem; + min-width: 0; + padding: 0.5rem 0.75rem; + border: 1px solid var(--color-border, #d1d5db); + border-radius: 8px; + font-size: 0.95rem; +} +.tickets-search__category { + padding: 0.5rem 0.75rem; + border: 1px solid var(--color-border, #d1d5db); + border-radius: 8px; + font-size: 0.95rem; + background: var(--color-surface, #fff); +} + +/* Kategorie-Chip im Ticket-Kopf. */ +.ticket-card__category { + font-size: 0.75rem; + font-weight: 600; + padding: 0.1rem 0.5rem; + border-radius: 999px; + background: var(--color-accent-bg, #eef2ff); + color: var(--color-accent-text, #3730a3); +} + +/* „Hat das geholfen?"-Leiste auf gelösten Tickets. */ +.ticket-card__helpful { + display: flex; + align-items: center; + gap: 0.5rem; + flex-wrap: wrap; + margin: 0 0 0.85rem; + font-size: 0.9rem; +} +.ticket-card__helpful-q { + font-weight: 600; +} +.ticket-card__helpful-thanks { + color: var(--color-success-text, #166534); + font-weight: 600; +} +.btn--small { + padding: 0.25rem 0.6rem; + font-size: 0.85rem; +} + /* Papierkorb-Countdown: Hinweis, wann das Ticket endgültig gelöscht wird. */ .ticket-card__trash-notice { border-left: 3px solid var(--color-danger, #ef4444); diff --git a/gerbil-manager-web/src/strings/de.ts b/gerbil-manager-web/src/strings/de.ts index 75be3d8..4697558 100644 --- a/gerbil-manager-web/src/strings/de.ts +++ b/gerbil-manager-web/src/strings/de.ts @@ -1201,6 +1201,9 @@ export const de = { success: 'Danke! Dein Fehlerbericht wurde gesendet.', error: 'Fehlerbericht konnte nicht gesendet werden.', emptyMessage: 'Bitte beschreibe den Fehler.', + /** „Ähnliche bereits gelöste Tickets" im Melde-Fenster. */ + similarTitle: 'Schon mal gelöst? Vielleicht hilft eines davon:', + similarOpen: 'ansehen', /** Toast nach erfolgreichem "ID kopieren". */ idCopied: 'ID kopiert', idCopyFailed: 'ID konnte nicht kopiert werden.', @@ -1276,6 +1279,17 @@ export const de = { emptyOpen: 'Keine offenen Tickets.', emptyClosed: 'Noch keine geschlossenen Tickets.', emptyDeleted: 'Der Papierkorb ist leer.', + /** Suche + Kategorie-Filter. */ + searchPlaceholder: 'Tickets durchsuchen …', + categoryFilterLabel: 'Nach Kategorie filtern', + categoryAll: 'Alle Kategorien', + emptySearch: 'Keine Tickets passen zu Suche/Filter.', + /** Daumen-Rückmeldung auf gelösten Tickets. */ + helpfulQuestion: 'Hat dir das geholfen?', + helpfulYes: '👍 Ja', + helpfulNo: '👎 Nein', + helpfulThanks: 'Danke für die Rückmeldung!', + helpfulReopenNote: 'Schade — ich öffne das Ticket wieder. Bitte schreib kurz, was noch fehlt.', /** Changelog (fixNote) auf geschlossenen Tickets. */ changelogLabel: 'Was wurde geändert', /** Überschrift des Frage/Antwort-Verlaufs (frühere Runden). */