cursor-guard 4.1.0 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,106 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Cursor Guard Dashboard</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ </head>
9
+ <body>
10
+
11
+ <!-- ── Top Bar ──────────────────────────────────────────── -->
12
+ <header id="topbar">
13
+ <div class="topbar-left">
14
+ <svg class="logo-icon" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2">
15
+ <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
16
+ </svg>
17
+ <span class="logo-text" data-i18n="app.title">Cursor Guard</span>
18
+ <select id="project-select"></select>
19
+ <span id="strategy-badge" class="badge"></span>
20
+ </div>
21
+ <div class="topbar-right">
22
+ <span id="last-refresh" class="text-muted"></span>
23
+ <button id="refresh-btn" class="btn btn-ghost" title="Refresh">
24
+ <svg class="icon-spin" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.5">
25
+ <path d="M23 4v6h-6"/><path d="M1 20v-6h6"/>
26
+ <path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/>
27
+ </svg>
28
+ <span data-i18n="topbar.refresh">Refresh</span>
29
+ </button>
30
+ <button id="lang-toggle" class="btn btn-ghost">EN / 中</button>
31
+ </div>
32
+ </header>
33
+
34
+ <main id="content">
35
+
36
+ <!-- Loading -->
37
+ <div id="loading-state" class="state-panel">
38
+ <div class="spinner"></div>
39
+ <p data-i18n="state.loading">Loading…</p>
40
+ </div>
41
+
42
+ <!-- Global Error -->
43
+ <div id="error-state" class="state-panel hidden">
44
+ <div class="error-icon">⚠</div>
45
+ <p id="error-message"></p>
46
+ <button id="error-retry" class="btn" data-i18n="state.retry">Retry</button>
47
+ </div>
48
+
49
+ <!-- Screen 1: Overview ───────────────────────────────── -->
50
+ <section id="screen-overview" class="screen hidden">
51
+ <h2 class="section-title" data-i18n="overview.title">Overview</h2>
52
+ <div id="overview-grid" class="card-grid">
53
+ <div id="card-health" class="card card-health"></div>
54
+ <div id="card-git-backup" class="card"></div>
55
+ <div id="card-shadow-backup" class="card"></div>
56
+ <div id="card-watcher" class="card"></div>
57
+ <div id="card-alert" class="card"></div>
58
+ </div>
59
+ </section>
60
+
61
+ <!-- Screen 2: Backups & Recovery ─────────────────────── -->
62
+ <section id="screen-backups" class="screen hidden">
63
+ <h2 class="section-title" data-i18n="backups.title">Backups &amp; Recovery</h2>
64
+ <div id="backup-stats" class="stats-row"></div>
65
+ <div id="backup-filters" class="filter-bar"></div>
66
+ <div id="backup-table-wrap" class="table-wrap"></div>
67
+ </section>
68
+
69
+ <!-- Screen 3: Protection Scope ───────────────────────── -->
70
+ <section id="screen-protection" class="screen hidden">
71
+ <h2 class="section-title" data-i18n="protection.title">Protection Scope</h2>
72
+ <div id="protection-content"></div>
73
+ </section>
74
+
75
+ <!-- Screen 4: Diagnostics ────────────────────────────── -->
76
+ <section id="screen-diagnostics" class="screen hidden">
77
+ <h2 class="section-title" data-i18n="diagnostics.title">Diagnostics</h2>
78
+ <div id="diagnostics-summary"></div>
79
+ </section>
80
+
81
+ </main>
82
+
83
+ <!-- ── Drawer Overlay ───────────────────────────────────── -->
84
+ <div id="drawer-overlay" class="drawer-overlay"></div>
85
+
86
+ <!-- ── Restore Point Drawer ─────────────────────────────── -->
87
+ <aside id="restore-drawer" class="drawer">
88
+ <div class="drawer-header">
89
+ <h3 data-i18n="drawer.restorePoint">Restore Point Details</h3>
90
+ <button class="drawer-close" data-action="close-drawer">&times;</button>
91
+ </div>
92
+ <div id="restore-drawer-body" class="drawer-body"></div>
93
+ </aside>
94
+
95
+ <!-- ── Doctor Drawer ────────────────────────────────────── -->
96
+ <aside id="doctor-drawer" class="drawer">
97
+ <div class="drawer-header">
98
+ <h3 data-i18n="drawer.doctorTitle">Diagnostic Details</h3>
99
+ <button class="drawer-close" data-action="close-drawer">&times;</button>
100
+ </div>
101
+ <div id="doctor-drawer-body" class="drawer-body"></div>
102
+ </aside>
103
+
104
+ <script src="app.js"></script>
105
+ </body>
106
+ </html>