Align UI with web_template TDS v1.2 standards

- Replace lt-chip priority badges with lt-badge lt-badge-p[1-4] across
  DashboardView, TemplatesView (matches web_template sticky table pattern)
- Add lt-theme-btn theme toggle to header-right; wire lt.theme.toggle()
- Replace ASCII art empty state with lt-empty-state component in dashboard
- Standardize tab wrapper lt-tabs → lt-tab-bar in Dashboard and TicketView
- Add missing lt-keys-help modal to layout_footer (fixes ? key doing nothing)
- Add lt-cmd-overlay command palette container + lt.cmdPalette.init() nav
- Add .lt-timeline-action CSS rule (used in TicketView, was undefined)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-28 13:06:40 -04:00
parent d7775e62ec
commit e721b33911
6 changed files with 100 additions and 18 deletions
+13 -12
View File
@@ -143,7 +143,7 @@ include __DIR__ . '/layout_header.php';
<!-- ═══════════════════════════════════════════════════════════
VIEW TABS (Table / Kanban) — dual-purpose: lt.tabs + dashboard.js set-view-mode
═══════════════════════════════════════════════════════════ -->
<div class="lt-tabs" role="tablist" aria-label="Ticket view mode">
<div class="lt-tab-bar" role="tablist" aria-label="Ticket view mode">
<button type="button" id="tableViewBtn"
class="lt-tab active"
role="tab" aria-selected="true" aria-controls="tab-table"
@@ -158,7 +158,7 @@ include __DIR__ . '/layout_header.php';
data-action="set-view-mode" data-mode="card">
&#x2295; Kanban
</button>
</div>
</div><!-- /.lt-tab-bar -->
<!-- ═══════════════════════════════════════════════════════════
LAYOUT WRAPPER: sidebar + main content
@@ -387,14 +387,15 @@ include __DIR__ . '/layout_header.php';
<tbody>
<?php if (empty($tickets)): ?>
<tr>
<td colspan="<?= $colCount ?>" class="lt-empty" style="text-align:center;padding:2rem">
<pre class="lt-text-muted lt-text-xs" style="display:inline-block;text-align:left">
╔══════════════════════════════════╗
║ ║
║ NO TICKETS FOUND ║
║ [ ] Empty queue — all clear ║
║ ║
╚══════════════════════════════════╝</pre>
<td colspan="<?= $colCount ?>" class="lt-empty">
<div class="lt-empty-state">
<div class="lt-empty-state-icon">&#x1F4ED;</div>
<div class="lt-empty-state-title">No Tickets Found</div>
<div class="lt-empty-state-body">No tickets match your current filters.</div>
<?php if (!empty($activeFilters) || !empty($_GET['search'])): ?>
<a href="?" class="lt-btn lt-btn-sm lt-btn-ghost">Clear Filters</a>
<?php endif ?>
</div>
</td>
</tr>
<?php else: ?>
@@ -422,8 +423,8 @@ include __DIR__ . '/layout_header.php';
class="ticket-link"><?= htmlspecialchars($row['ticket_id']) ?></a>
</td>
<td data-label="Priority">
<?php $chipClass = match($pNum) { 1 => 'lt-chip-critical', 2 => 'lt-chip-warn', 3 => 'lt-chip-info', default => 'lt-chip-ok' }; ?>
<span class="lt-chip <?= $chipClass ?>">P<?= $pNum ?></span>
<?php $badgeClass = match($pNum) { 1 => 'lt-badge-p1', 2 => 'lt-badge-p2', 3 => 'lt-badge-p3', default => 'lt-badge-p4' }; ?>
<span class="lt-badge <?= $badgeClass ?>">P<?= $pNum ?></span>
</td>
<td data-label="Title"><?= htmlspecialchars($row['title']) ?></td>
<td data-label="Category" class="lt-text-muted lt-text-xs"><?= htmlspecialchars($row['category']) ?></td>