agentacta 1.3.4 → 1.5.0
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.
- package/README.md +100 -101
- package/db.js +1 -0
- package/index.js +90 -3
- package/package.json +1 -1
- package/public/app.js +773 -55
- package/public/index.html +17 -5
- package/public/style.css +519 -3
package/public/index.html
CHANGED
|
@@ -21,7 +21,13 @@
|
|
|
21
21
|
<nav class="sidebar">
|
|
22
22
|
<div class="sidebar-header">
|
|
23
23
|
<h1>Agent<span>Acta</span></h1>
|
|
24
|
+
<button class="theme-toggle" id="theme-toggle" title="Toggle theme" aria-label="Toggle theme"><svg class="theme-icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg><svg class="theme-icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg></button>
|
|
24
25
|
</div>
|
|
26
|
+
<button class="cmdk-trigger" id="cmdkBtn" aria-label="Search" title="Search (⌘K)">
|
|
27
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
|
|
28
|
+
<span>Search</span>
|
|
29
|
+
<kbd>⌘K</kbd>
|
|
30
|
+
</button>
|
|
25
31
|
<div class="nav-section">
|
|
26
32
|
<div class="nav-item" data-view="sessions">
|
|
27
33
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>
|
|
@@ -31,21 +37,27 @@
|
|
|
31
37
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>
|
|
32
38
|
<span>Timeline</span>
|
|
33
39
|
</div>
|
|
34
|
-
<div class="nav-item active" data-view="
|
|
35
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><
|
|
36
|
-
<span>
|
|
40
|
+
<div class="nav-item active" data-view="overview">
|
|
41
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12h7V3H3z"/><path d="M14 21h7v-7h-7z"/><path d="M14 10h7V3h-7z"/><path d="M3 21h7v-5H3z"/></svg>
|
|
42
|
+
<span>Overview</span>
|
|
37
43
|
</div>
|
|
38
44
|
<div class="nav-item" data-view="files">
|
|
39
45
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
|
|
40
46
|
<span>Files</span>
|
|
41
47
|
</div>
|
|
42
48
|
<div class="nav-item" data-view="stats">
|
|
43
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="
|
|
44
|
-
<span>
|
|
49
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.325 4.317a1.724 1.724 0 0 1 3.35 0 1.724 1.724 0 0 0 2.573 1.066 1.724 1.724 0 0 1 2.28 2.28 1.724 1.724 0 0 0 1.065 2.573 1.724 1.724 0 0 1 0 3.35 1.724 1.724 0 0 0-1.066 2.573 1.724 1.724 0 0 1-2.28 2.28 1.724 1.724 0 0 0-2.573 1.065 1.724 1.724 0 0 1-3.35 0 1.724 1.724 0 0 0-2.573-1.066 1.724 1.724 0 0 1-2.28-2.28 1.724 1.724 0 0 0-1.065-2.573 1.724 1.724 0 0 1 0-3.35 1.724 1.724 0 0 0 1.066-2.573 1.724 1.724 0 0 1 2.28-2.28 1.724 1.724 0 0 0 2.572-1.065z"/><circle cx="12" cy="12" r="3"/></svg>
|
|
50
|
+
<span>Settings</span>
|
|
45
51
|
</div>
|
|
52
|
+
|
|
46
53
|
</div>
|
|
47
54
|
</nav>
|
|
48
55
|
<main class="main" id="content"></main>
|
|
56
|
+
<div class="mobile-toolbar">
|
|
57
|
+
<button class="mobile-search-btn" id="mobile-search-btn" title="Search" aria-label="Search"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg></button>
|
|
58
|
+
<button class="theme-toggle-mobile" id="theme-toggle-mobile" title="Toggle theme" aria-label="Toggle theme"><svg class="theme-icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg><svg class="theme-icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg></button>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
49
61
|
</div>
|
|
50
62
|
<script src="/app.js"></script>
|
|
51
63
|
<script>
|
package/public/style.css
CHANGED
|
@@ -71,6 +71,69 @@
|
|
|
71
71
|
|
|
72
72
|
/* Layout */
|
|
73
73
|
--sidebar-width: 240px;
|
|
74
|
+
--input-scheme: dark;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
[data-theme="light"] {
|
|
78
|
+
--bg-base: #f5f7fb;
|
|
79
|
+
--bg-surface: #ffffff;
|
|
80
|
+
--bg-elevated: #f8fafc;
|
|
81
|
+
--bg-hover: #eef2f7;
|
|
82
|
+
--bg-active: #e8edf6;
|
|
83
|
+
|
|
84
|
+
--border-subtle: rgba(15, 23, 42, 0.06);
|
|
85
|
+
--border-default: rgba(15, 23, 42, 0.1);
|
|
86
|
+
--border-hover: rgba(15, 23, 42, 0.16);
|
|
87
|
+
--border-focus: rgba(36, 89, 214, 0.45);
|
|
88
|
+
|
|
89
|
+
--text-primary: #111827;
|
|
90
|
+
--text-secondary: #5b6678;
|
|
91
|
+
--text-tertiary: #8793a7;
|
|
92
|
+
--text-inverse: #ffffff;
|
|
93
|
+
|
|
94
|
+
--accent: #2459d6;
|
|
95
|
+
--accent-soft: rgba(36, 89, 214, 0.12);
|
|
96
|
+
--accent-medium: rgba(36, 89, 214, 0.2);
|
|
97
|
+
|
|
98
|
+
--green: #158f69;
|
|
99
|
+
--green-soft: rgba(21, 143, 105, 0.12);
|
|
100
|
+
|
|
101
|
+
--purple: #7d62eb;
|
|
102
|
+
--purple-soft: rgba(125, 98, 235, 0.12);
|
|
103
|
+
|
|
104
|
+
--amber: #b7791f;
|
|
105
|
+
--amber-soft: rgba(183, 121, 31, 0.12);
|
|
106
|
+
|
|
107
|
+
--red: #c24141;
|
|
108
|
+
--red-soft: rgba(194, 65, 65, 0.12);
|
|
109
|
+
|
|
110
|
+
--teal: #0f9f9a;
|
|
111
|
+
--teal-soft: rgba(15, 159, 154, 0.12);
|
|
112
|
+
|
|
113
|
+
--shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
|
|
114
|
+
--input-scheme: light;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
[data-theme="oled"] {
|
|
118
|
+
--bg-base: #000000;
|
|
119
|
+
--bg-surface: #050505;
|
|
120
|
+
--bg-elevated: #0a0a0a;
|
|
121
|
+
--bg-hover: #111111;
|
|
122
|
+
--bg-active: #151515;
|
|
123
|
+
|
|
124
|
+
--border-subtle: rgba(255, 255, 255, 0.08);
|
|
125
|
+
--border-default: rgba(255, 255, 255, 0.12);
|
|
126
|
+
--border-hover: rgba(255, 255, 255, 0.18);
|
|
127
|
+
--border-focus: rgba(99, 144, 240, 0.58);
|
|
128
|
+
|
|
129
|
+
--text-primary: #f2f5f9;
|
|
130
|
+
--text-secondary: #9aa3b2;
|
|
131
|
+
--text-tertiary: #6f7785;
|
|
132
|
+
--text-inverse: #000000;
|
|
133
|
+
|
|
134
|
+
--accent-soft: rgba(99, 144, 240, 0.14);
|
|
135
|
+
--accent-medium: rgba(99, 144, 240, 0.22);
|
|
136
|
+
--input-scheme: dark;
|
|
74
137
|
}
|
|
75
138
|
|
|
76
139
|
/* ---- Reset ---- */
|
|
@@ -101,6 +164,12 @@ body {
|
|
|
101
164
|
font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
|
|
102
165
|
}
|
|
103
166
|
|
|
167
|
+
html.cmdk-open,
|
|
168
|
+
body.cmdk-open {
|
|
169
|
+
overflow: hidden;
|
|
170
|
+
overscroll-behavior: none;
|
|
171
|
+
}
|
|
172
|
+
|
|
104
173
|
/* ---- Layout ---- */
|
|
105
174
|
.app {
|
|
106
175
|
display: flex;
|
|
@@ -125,6 +194,10 @@ body {
|
|
|
125
194
|
|
|
126
195
|
.sidebar-header {
|
|
127
196
|
padding: var(--space-xl) var(--space-xl) var(--space-lg);
|
|
197
|
+
display: flex;
|
|
198
|
+
align-items: center;
|
|
199
|
+
justify-content: space-between;
|
|
200
|
+
gap: var(--space-sm);
|
|
128
201
|
}
|
|
129
202
|
|
|
130
203
|
.sidebar h1 {
|
|
@@ -141,6 +214,71 @@ body {
|
|
|
141
214
|
background-clip: text;
|
|
142
215
|
}
|
|
143
216
|
|
|
217
|
+
.theme-toggle {
|
|
218
|
+
width: 30px;
|
|
219
|
+
height: 30px;
|
|
220
|
+
border-radius: var(--radius-md);
|
|
221
|
+
border: 1px solid var(--border-default);
|
|
222
|
+
background: var(--bg-elevated);
|
|
223
|
+
color: var(--text-secondary);
|
|
224
|
+
display: inline-flex;
|
|
225
|
+
align-items: center;
|
|
226
|
+
justify-content: center;
|
|
227
|
+
cursor: pointer;
|
|
228
|
+
padding: 0;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.theme-toggle:hover {
|
|
232
|
+
background: var(--bg-hover);
|
|
233
|
+
color: var(--text-primary);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.theme-toggle svg,
|
|
237
|
+
.theme-toggle-mobile svg {
|
|
238
|
+
width: 16px;
|
|
239
|
+
height: 16px;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.theme-icon-moon { display: none; }
|
|
243
|
+
[data-theme="light"] .theme-icon-sun { display: none; }
|
|
244
|
+
[data-theme="light"] .theme-icon-moon { display: block; }
|
|
245
|
+
|
|
246
|
+
.mobile-toolbar {
|
|
247
|
+
display: none;
|
|
248
|
+
position: absolute;
|
|
249
|
+
top: calc(var(--space-xl) + env(safe-area-inset-top, 0px));
|
|
250
|
+
right: var(--space-lg);
|
|
251
|
+
z-index: 10;
|
|
252
|
+
gap: 8px;
|
|
253
|
+
align-items: center;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.mobile-search-btn,
|
|
257
|
+
.theme-toggle-mobile {
|
|
258
|
+
width: 32px;
|
|
259
|
+
height: 32px;
|
|
260
|
+
border-radius: var(--radius-md);
|
|
261
|
+
border: 1px solid var(--border-default);
|
|
262
|
+
background: var(--bg-surface);
|
|
263
|
+
color: var(--text-secondary);
|
|
264
|
+
display: inline-flex;
|
|
265
|
+
align-items: center;
|
|
266
|
+
justify-content: center;
|
|
267
|
+
cursor: pointer;
|
|
268
|
+
padding: 0;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.mobile-search-btn:hover,
|
|
272
|
+
.theme-toggle-mobile:hover {
|
|
273
|
+
background: var(--bg-hover);
|
|
274
|
+
color: var(--text-primary);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.theme-toggle-mobile svg {
|
|
278
|
+
width: 16px;
|
|
279
|
+
height: 16px;
|
|
280
|
+
}
|
|
281
|
+
|
|
144
282
|
.nav-section {
|
|
145
283
|
display: flex;
|
|
146
284
|
flex-direction: column;
|
|
@@ -203,7 +341,7 @@ body {
|
|
|
203
341
|
flex: 1;
|
|
204
342
|
margin-left: var(--sidebar-width);
|
|
205
343
|
padding: var(--space-2xl) var(--space-3xl);
|
|
206
|
-
max-width:
|
|
344
|
+
max-width: none;
|
|
207
345
|
min-height: 100vh;
|
|
208
346
|
}
|
|
209
347
|
|
|
@@ -226,6 +364,44 @@ body {
|
|
|
226
364
|
margin-top: var(--space-2xl);
|
|
227
365
|
}
|
|
228
366
|
|
|
367
|
+
.overview-subtitle {
|
|
368
|
+
margin-top: calc(var(--space-xl) * -1 + 6px);
|
|
369
|
+
margin-bottom: var(--space-xl);
|
|
370
|
+
color: var(--text-secondary);
|
|
371
|
+
font-size: 13px;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
.overview-meta-grid {
|
|
375
|
+
display: grid;
|
|
376
|
+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
377
|
+
gap: var(--space-md);
|
|
378
|
+
margin-bottom: var(--space-sm);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.settings-page .section-label {
|
|
382
|
+
margin-top: var(--space-xl);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.settings-maintenance {
|
|
386
|
+
display: flex;
|
|
387
|
+
gap: 12px;
|
|
388
|
+
align-items: center;
|
|
389
|
+
flex-wrap: wrap;
|
|
390
|
+
margin-bottom: 6px;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.settings-maintenance-status {
|
|
394
|
+
color: var(--text-tertiary);
|
|
395
|
+
font-size: 12px;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.settings-help {
|
|
399
|
+
color: var(--text-tertiary);
|
|
400
|
+
font-size: 12px;
|
|
401
|
+
line-height: 1.5;
|
|
402
|
+
margin: 0 0 var(--space-lg);
|
|
403
|
+
}
|
|
404
|
+
|
|
229
405
|
/* ---- Search Bar ---- */
|
|
230
406
|
.search-bar {
|
|
231
407
|
position: relative;
|
|
@@ -655,6 +831,40 @@ mark {
|
|
|
655
831
|
font-weight: 500;
|
|
656
832
|
}
|
|
657
833
|
|
|
834
|
+
/* ---- Skeletons ---- */
|
|
835
|
+
.skeleton-card,
|
|
836
|
+
.skeleton-row {
|
|
837
|
+
border-color: var(--border-subtle);
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
.skeleton-line {
|
|
841
|
+
position: relative;
|
|
842
|
+
border-radius: var(--radius-sm);
|
|
843
|
+
background: var(--bg-elevated);
|
|
844
|
+
border: 1px solid var(--border-subtle);
|
|
845
|
+
overflow: hidden;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
.skeleton-line::after {
|
|
849
|
+
content: '';
|
|
850
|
+
position: absolute;
|
|
851
|
+
inset: 0;
|
|
852
|
+
transform: translateX(-100%);
|
|
853
|
+
background: linear-gradient(90deg, transparent, var(--bg-hover), transparent);
|
|
854
|
+
animation: skeletonShimmer 1.4s ease-in-out infinite;
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
@keyframes skeletonShimmer {
|
|
858
|
+
100% { transform: translateX(100%); }
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
.loading-more {
|
|
862
|
+
text-align: center;
|
|
863
|
+
color: var(--text-tertiary);
|
|
864
|
+
font-size: 12px;
|
|
865
|
+
padding: var(--space-md) 0;
|
|
866
|
+
}
|
|
867
|
+
|
|
658
868
|
@keyframes pulse {
|
|
659
869
|
0%, 100% { opacity: 0.4; }
|
|
660
870
|
50% { opacity: 1; }
|
|
@@ -683,7 +893,7 @@ mark {
|
|
|
683
893
|
outline: none;
|
|
684
894
|
margin-bottom: var(--space-lg);
|
|
685
895
|
transition: all var(--duration-normal) var(--ease-out);
|
|
686
|
-
color-scheme:
|
|
896
|
+
color-scheme: var(--input-scheme);
|
|
687
897
|
}
|
|
688
898
|
|
|
689
899
|
.date-input:hover {
|
|
@@ -749,6 +959,28 @@ mark {
|
|
|
749
959
|
border-color: rgba(52, 211, 153, 0.3);
|
|
750
960
|
}
|
|
751
961
|
|
|
962
|
+
.jump-to-start-btn.jumping {
|
|
963
|
+
position: relative;
|
|
964
|
+
color: #b8f7dd;
|
|
965
|
+
background: rgba(52, 211, 153, 0.22);
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
.jump-to-start-btn.jumping::after {
|
|
969
|
+
content: '';
|
|
970
|
+
width: 6px;
|
|
971
|
+
height: 6px;
|
|
972
|
+
border-radius: 999px;
|
|
973
|
+
background: currentColor;
|
|
974
|
+
margin-left: 6px;
|
|
975
|
+
display: inline-block;
|
|
976
|
+
animation: jumpPulse 1s ease-in-out infinite;
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
@keyframes jumpPulse {
|
|
980
|
+
0%, 100% { opacity: 0.35; transform: scale(0.9); }
|
|
981
|
+
50% { opacity: 1; transform: scale(1.2); }
|
|
982
|
+
}
|
|
983
|
+
|
|
752
984
|
/* ---- Session ID ---- */
|
|
753
985
|
.session-id-row {
|
|
754
986
|
display: flex;
|
|
@@ -1067,6 +1299,22 @@ mark {
|
|
|
1067
1299
|
font-family: var(--font-mono);
|
|
1068
1300
|
}
|
|
1069
1301
|
|
|
1302
|
+
.settings-select {
|
|
1303
|
+
width: 100%;
|
|
1304
|
+
background: var(--bg-elevated);
|
|
1305
|
+
border: 1px solid var(--border-default);
|
|
1306
|
+
border-radius: var(--radius-md);
|
|
1307
|
+
color: var(--text-primary);
|
|
1308
|
+
padding: 8px 10px;
|
|
1309
|
+
font-size: 13px;
|
|
1310
|
+
font-family: var(--font-sans);
|
|
1311
|
+
outline: none;
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
.settings-select:focus {
|
|
1315
|
+
border-color: var(--border-focus);
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1070
1318
|
/* ---- Highlight animation for jumped-to events ---- */
|
|
1071
1319
|
@keyframes highlightFade {
|
|
1072
1320
|
0% { background: var(--accent-medium); }
|
|
@@ -1097,7 +1345,60 @@ mark {
|
|
|
1097
1345
|
|
|
1098
1346
|
.new-events-indicator:hover {
|
|
1099
1347
|
background: #4a7ae8;
|
|
1100
|
-
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
.jump-indicator {
|
|
1351
|
+
position: fixed;
|
|
1352
|
+
top: 20px;
|
|
1353
|
+
left: 50%;
|
|
1354
|
+
transform: translateX(-50%) translateY(-10px);
|
|
1355
|
+
background: color-mix(in oklab, var(--accent) 88%, #000);
|
|
1356
|
+
color: #fff;
|
|
1357
|
+
padding: 8px 14px;
|
|
1358
|
+
border-radius: 999px;
|
|
1359
|
+
font-size: 12px;
|
|
1360
|
+
font-weight: 600;
|
|
1361
|
+
z-index: 110;
|
|
1362
|
+
opacity: 0;
|
|
1363
|
+
pointer-events: none;
|
|
1364
|
+
transition: opacity 0.2s var(--ease-out), transform 0.2s var(--ease-out);
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
.jump-indicator.show {
|
|
1368
|
+
opacity: 1;
|
|
1369
|
+
transform: translateX(-50%) translateY(0);
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
.return-jump-btn {
|
|
1373
|
+
position: fixed;
|
|
1374
|
+
right: 16px;
|
|
1375
|
+
bottom: calc(92px + env(safe-area-inset-bottom, 0px));
|
|
1376
|
+
border: 1px solid var(--border-default);
|
|
1377
|
+
background: var(--bg-surface);
|
|
1378
|
+
color: var(--text-primary);
|
|
1379
|
+
width: 34px;
|
|
1380
|
+
height: 34px;
|
|
1381
|
+
display: inline-flex;
|
|
1382
|
+
align-items: center;
|
|
1383
|
+
justify-content: center;
|
|
1384
|
+
padding: 0;
|
|
1385
|
+
border-radius: 999px;
|
|
1386
|
+
z-index: 110;
|
|
1387
|
+
opacity: 0;
|
|
1388
|
+
transform: translateY(8px);
|
|
1389
|
+
pointer-events: none;
|
|
1390
|
+
transition: opacity 0.2s var(--ease-out), transform 0.2s var(--ease-out);
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
.return-jump-btn.show {
|
|
1394
|
+
opacity: 1;
|
|
1395
|
+
transform: translateY(0);
|
|
1396
|
+
pointer-events: auto;
|
|
1397
|
+
}
|
|
1398
|
+
|
|
1399
|
+
.return-jump-btn:hover {
|
|
1400
|
+
background: var(--bg-hover);
|
|
1401
|
+
border-color: var(--border-hover);
|
|
1101
1402
|
}
|
|
1102
1403
|
|
|
1103
1404
|
@keyframes slideDown {
|
|
@@ -1230,6 +1531,10 @@ mark {
|
|
|
1230
1531
|
|
|
1231
1532
|
.sidebar-header { display: none; }
|
|
1232
1533
|
|
|
1534
|
+
.mobile-toolbar {
|
|
1535
|
+
display: flex;
|
|
1536
|
+
}
|
|
1537
|
+
|
|
1233
1538
|
.nav-section {
|
|
1234
1539
|
display: flex;
|
|
1235
1540
|
flex-direction: row;
|
|
@@ -1282,6 +1587,24 @@ mark {
|
|
|
1282
1587
|
|
|
1283
1588
|
.stat-card .value { font-size: 22px; }
|
|
1284
1589
|
|
|
1590
|
+
.overview-subtitle {
|
|
1591
|
+
font-size: 12px;
|
|
1592
|
+
margin-bottom: var(--space-lg);
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
.overview-meta-grid {
|
|
1596
|
+
grid-template-columns: 1fr;
|
|
1597
|
+
gap: var(--space-sm);
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
.settings-page .section-label {
|
|
1601
|
+
margin-top: var(--space-lg);
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
.settings-help {
|
|
1605
|
+
margin-bottom: var(--space-md);
|
|
1606
|
+
}
|
|
1607
|
+
|
|
1285
1608
|
.search-stats {
|
|
1286
1609
|
grid-template-columns: repeat(2, 1fr);
|
|
1287
1610
|
}
|
|
@@ -1395,3 +1718,196 @@ mark {
|
|
|
1395
1718
|
background: var(--bg-active);
|
|
1396
1719
|
border-color: var(--border-hover);
|
|
1397
1720
|
}
|
|
1721
|
+
|
|
1722
|
+
/* ---- Cmd+K Trigger ---- */
|
|
1723
|
+
.cmdk-trigger {
|
|
1724
|
+
margin: 0 var(--space-md) var(--space-sm);
|
|
1725
|
+
display: flex;
|
|
1726
|
+
align-items: center;
|
|
1727
|
+
gap: var(--space-sm);
|
|
1728
|
+
border: 1px solid var(--border-subtle);
|
|
1729
|
+
background: var(--bg-elevated);
|
|
1730
|
+
color: var(--text-secondary);
|
|
1731
|
+
border-radius: var(--radius-md);
|
|
1732
|
+
font-size: 12px;
|
|
1733
|
+
padding: 8px 10px;
|
|
1734
|
+
cursor: pointer;
|
|
1735
|
+
transition: all var(--duration-normal) var(--ease-out);
|
|
1736
|
+
font-family: var(--font-sans);
|
|
1737
|
+
}
|
|
1738
|
+
.cmdk-trigger:hover { color: var(--text-primary); border-color: var(--border-hover); background: var(--bg-hover); }
|
|
1739
|
+
.cmdk-trigger svg { flex-shrink: 0; opacity: 0.5; }
|
|
1740
|
+
.cmdk-trigger span { flex: 1; text-align: left; }
|
|
1741
|
+
.cmdk-trigger kbd {
|
|
1742
|
+
border: 1px solid var(--border-default);
|
|
1743
|
+
border-bottom-width: 2px;
|
|
1744
|
+
border-radius: 5px;
|
|
1745
|
+
padding: 1px 5px;
|
|
1746
|
+
font-size: 10px;
|
|
1747
|
+
font-family: var(--font-sans);
|
|
1748
|
+
color: var(--text-tertiary);
|
|
1749
|
+
background: var(--bg-base);
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
/* ---- Cmd+K Overlay ---- */
|
|
1753
|
+
.cmdk-overlay {
|
|
1754
|
+
position: fixed;
|
|
1755
|
+
top: 0;
|
|
1756
|
+
right: 0;
|
|
1757
|
+
bottom: 0;
|
|
1758
|
+
left: 0;
|
|
1759
|
+
width: 100%;
|
|
1760
|
+
height: 100%;
|
|
1761
|
+
min-height: 100%;
|
|
1762
|
+
background: rgba(10, 14, 26, 0.28);
|
|
1763
|
+
backdrop-filter: blur(14px) saturate(1.08);
|
|
1764
|
+
-webkit-backdrop-filter: blur(14px) saturate(1.08);
|
|
1765
|
+
z-index: 999;
|
|
1766
|
+
display: flex;
|
|
1767
|
+
justify-content: center;
|
|
1768
|
+
align-items: flex-start;
|
|
1769
|
+
padding-top: 12vh;
|
|
1770
|
+
overflow: hidden;
|
|
1771
|
+
animation: cmdk-fade-in 0.16s var(--ease-out);
|
|
1772
|
+
}
|
|
1773
|
+
@keyframes cmdk-fade-in { from { opacity: 0; } }
|
|
1774
|
+
|
|
1775
|
+
.cmdk-dialog {
|
|
1776
|
+
width: min(580px, calc(100vw - 40px));
|
|
1777
|
+
max-height: calc(100vh - 16vh - 24px);
|
|
1778
|
+
background: color-mix(in oklab, var(--bg-surface) 96%, transparent);
|
|
1779
|
+
border: 1px solid color-mix(in oklab, var(--border-default) 86%, transparent);
|
|
1780
|
+
border-radius: 14px;
|
|
1781
|
+
box-shadow: 0 20px 52px rgba(0, 0, 0, 0.22);
|
|
1782
|
+
overflow: hidden;
|
|
1783
|
+
display: flex;
|
|
1784
|
+
flex-direction: column;
|
|
1785
|
+
animation: cmdk-slide-in 0.16s var(--ease-out);
|
|
1786
|
+
}
|
|
1787
|
+
@keyframes cmdk-slide-in { from { opacity: 0; transform: translateY(-8px) scale(0.98); } }
|
|
1788
|
+
|
|
1789
|
+
.cmdk-input-wrap {
|
|
1790
|
+
display: flex;
|
|
1791
|
+
align-items: center;
|
|
1792
|
+
gap: var(--space-sm);
|
|
1793
|
+
padding: 12px 13px;
|
|
1794
|
+
border-bottom: 1px solid var(--border-subtle);
|
|
1795
|
+
background: color-mix(in oklab, var(--bg-elevated) 50%, transparent);
|
|
1796
|
+
}
|
|
1797
|
+
.cmdk-input-wrap svg { flex-shrink: 0; color: var(--text-tertiary); }
|
|
1798
|
+
.cmdk-input-wrap input {
|
|
1799
|
+
flex: 1;
|
|
1800
|
+
min-width: 0;
|
|
1801
|
+
background: transparent;
|
|
1802
|
+
border: 0;
|
|
1803
|
+
outline: none;
|
|
1804
|
+
color: var(--text-primary);
|
|
1805
|
+
font-size: 16px;
|
|
1806
|
+
font-family: var(--font-sans);
|
|
1807
|
+
}
|
|
1808
|
+
.cmdk-input-wrap input::placeholder { color: var(--text-tertiary); }
|
|
1809
|
+
.cmdk-input-wrap kbd {
|
|
1810
|
+
border: 1px solid var(--border-default);
|
|
1811
|
+
border-bottom-width: 2px;
|
|
1812
|
+
border-radius: 5px;
|
|
1813
|
+
padding: 1px 5px;
|
|
1814
|
+
font-size: 10px;
|
|
1815
|
+
font-family: var(--font-sans);
|
|
1816
|
+
color: var(--text-tertiary);
|
|
1817
|
+
}
|
|
1818
|
+
|
|
1819
|
+
.cmdk-list {
|
|
1820
|
+
flex: 1;
|
|
1821
|
+
min-height: 0;
|
|
1822
|
+
overflow-y: auto;
|
|
1823
|
+
padding: 6px;
|
|
1824
|
+
-webkit-overflow-scrolling: touch;
|
|
1825
|
+
}
|
|
1826
|
+
.cmdk-group-label {
|
|
1827
|
+
font-size: 10px;
|
|
1828
|
+
letter-spacing: 0.8px;
|
|
1829
|
+
text-transform: uppercase;
|
|
1830
|
+
color: var(--text-tertiary);
|
|
1831
|
+
font-weight: 600;
|
|
1832
|
+
padding: 8px 9px 3px;
|
|
1833
|
+
}
|
|
1834
|
+
.cmdk-item {
|
|
1835
|
+
width: 100%;
|
|
1836
|
+
text-align: left;
|
|
1837
|
+
border: none;
|
|
1838
|
+
background: transparent;
|
|
1839
|
+
color: inherit;
|
|
1840
|
+
border-radius: 10px;
|
|
1841
|
+
padding: 7px 9px;
|
|
1842
|
+
cursor: pointer;
|
|
1843
|
+
display: flex;
|
|
1844
|
+
align-items: center;
|
|
1845
|
+
gap: var(--space-md);
|
|
1846
|
+
font-family: var(--font-sans);
|
|
1847
|
+
transition: background var(--duration-fast);
|
|
1848
|
+
touch-action: manipulation;
|
|
1849
|
+
}
|
|
1850
|
+
.cmdk-item.active { background: color-mix(in oklab, var(--accent-soft) 56%, var(--bg-hover)); }
|
|
1851
|
+
.cmdk-item:hover { background: color-mix(in oklab, var(--accent-soft) 36%, var(--bg-hover)); }
|
|
1852
|
+
.cmdk-item-icon {
|
|
1853
|
+
width: 18px;
|
|
1854
|
+
height: 18px;
|
|
1855
|
+
flex-shrink: 0;
|
|
1856
|
+
color: var(--text-tertiary);
|
|
1857
|
+
}
|
|
1858
|
+
.cmdk-item-body { flex: 1; min-width: 0; }
|
|
1859
|
+
.cmdk-item-title {
|
|
1860
|
+
font-size: 13px;
|
|
1861
|
+
color: var(--text-primary);
|
|
1862
|
+
font-weight: 500;
|
|
1863
|
+
white-space: nowrap;
|
|
1864
|
+
overflow: hidden;
|
|
1865
|
+
text-overflow: ellipsis;
|
|
1866
|
+
}
|
|
1867
|
+
.cmdk-item-sub {
|
|
1868
|
+
font-size: 11px;
|
|
1869
|
+
color: var(--text-tertiary);
|
|
1870
|
+
white-space: nowrap;
|
|
1871
|
+
overflow: hidden;
|
|
1872
|
+
text-overflow: ellipsis;
|
|
1873
|
+
margin-top: 1px;
|
|
1874
|
+
}
|
|
1875
|
+
.cmdk-item-meta {
|
|
1876
|
+
font-size: 11px;
|
|
1877
|
+
color: var(--text-tertiary);
|
|
1878
|
+
flex-shrink: 0;
|
|
1879
|
+
white-space: nowrap;
|
|
1880
|
+
}
|
|
1881
|
+
.cmdk-empty {
|
|
1882
|
+
padding: 28px 14px;
|
|
1883
|
+
text-align: center;
|
|
1884
|
+
color: var(--text-tertiary);
|
|
1885
|
+
font-size: 13px;
|
|
1886
|
+
}
|
|
1887
|
+
.cmdk-empty h4 { color: var(--text-secondary); font-size: 14px; margin-bottom: 4px; }
|
|
1888
|
+
.cmdk-loading { padding: 24px 14px; text-align: center; color: var(--text-tertiary); font-size: 13px; }
|
|
1889
|
+
|
|
1890
|
+
@media (max-width: 768px) {
|
|
1891
|
+
.cmdk-trigger { display: none; }
|
|
1892
|
+
|
|
1893
|
+
.cmdk-overlay {
|
|
1894
|
+
align-items: center;
|
|
1895
|
+
top: 0;
|
|
1896
|
+
right: 0;
|
|
1897
|
+
bottom: 0;
|
|
1898
|
+
left: 0;
|
|
1899
|
+
height: auto;
|
|
1900
|
+
min-height: 0;
|
|
1901
|
+
padding: calc(env(safe-area-inset-top, 0px) + 12px) 12px calc(env(safe-area-inset-bottom, 0px) + 12px);
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1904
|
+
.cmdk-dialog {
|
|
1905
|
+
width: min(520px, calc(100vw - 44px));
|
|
1906
|
+
max-height: min(72vh, calc(100vh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 52px));
|
|
1907
|
+
border-radius: var(--radius-md);
|
|
1908
|
+
}
|
|
1909
|
+
|
|
1910
|
+
.cmdk-input-wrap kbd { display: none; }
|
|
1911
|
+
.cmdk-item-sub { display: none; }
|
|
1912
|
+
.cmdk-item-meta { font-size: 10px; }
|
|
1913
|
+
}
|