astro-tractstack 2.0.0-rc.14 → 2.0.0-rc.15
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/package.json
CHANGED
|
@@ -160,12 +160,13 @@ const authStatus = {
|
|
|
160
160
|
|
|
161
161
|
{/* Edit Icon */}
|
|
162
162
|
{
|
|
163
|
-
isEditable
|
|
163
|
+
isEditable &&
|
|
164
|
+
(authStatus.isAdmin || authStatus.userRole === 'editor') ? (
|
|
164
165
|
<a
|
|
165
166
|
data-astro-reload
|
|
166
167
|
href={!isContext ? `/${slug}/edit` : `/context/${slug}/edit`}
|
|
167
168
|
class="text-myblue/80 hover:text-myblue hover:rotate-6"
|
|
168
|
-
title={!isContext ? 'Edit this story' : 'Edit this
|
|
169
|
+
title={!isContext ? 'Edit this story' : 'Edit this page'}
|
|
169
170
|
>
|
|
170
171
|
<svg
|
|
171
172
|
class="h-6 w-6"
|
|
@@ -238,7 +238,7 @@ export default function StoryKeepDashboard_Analytics({
|
|
|
238
238
|
)}
|
|
239
239
|
|
|
240
240
|
{/* Stats Cards Grid */}
|
|
241
|
-
<div className="mb-6 grid grid-cols-
|
|
241
|
+
<div className="mb-6 grid grid-cols-3 gap-4">
|
|
242
242
|
{stats.map((item) => {
|
|
243
243
|
const period = item.period;
|
|
244
244
|
let firstTimeValue = 0,
|
|
@@ -261,11 +261,11 @@ export default function StoryKeepDashboard_Analytics({
|
|
|
261
261
|
return (
|
|
262
262
|
<div
|
|
263
263
|
key={item.period}
|
|
264
|
-
className="rounded-lg border border-gray-100 bg-white px-
|
|
264
|
+
className="rounded-lg border border-gray-100 bg-white px-2 py-2.5 shadow-sm transition-colors hover:border-cyan-100 md:px-4 md:py-3"
|
|
265
265
|
>
|
|
266
266
|
<dt className="text-sm font-bold text-gray-800">{item.name}</dt>
|
|
267
267
|
|
|
268
|
-
<dd className="mt-2">
|
|
268
|
+
<dd className="mt-1 md:mt-2">
|
|
269
269
|
<div className="flex items-end justify-between">
|
|
270
270
|
<div className="flex-1">
|
|
271
271
|
<div className="text-sm text-gray-600">Events</div>
|
|
@@ -276,10 +276,11 @@ export default function StoryKeepDashboard_Analytics({
|
|
|
276
276
|
</div>
|
|
277
277
|
</dd>
|
|
278
278
|
|
|
279
|
-
<hr className="my-
|
|
279
|
+
<hr className="my-1.5 border-gray-100 md:my-3.5" />
|
|
280
280
|
|
|
281
281
|
<dd>
|
|
282
|
-
|
|
282
|
+
{/* Desktop: side-by-side layout */}
|
|
283
|
+
<div className="hidden items-end justify-between md:flex">
|
|
283
284
|
<div className="flex-1">
|
|
284
285
|
<div className="text-sm text-gray-600">
|
|
285
286
|
Anonymous Visitors
|
|
@@ -299,13 +300,35 @@ export default function StoryKeepDashboard_Analytics({
|
|
|
299
300
|
</div>
|
|
300
301
|
</div>
|
|
301
302
|
</div>
|
|
303
|
+
|
|
304
|
+
{/* Mobile: stacked layout */}
|
|
305
|
+
<div className="md:hidden">
|
|
306
|
+
<div className="mb-1.5">
|
|
307
|
+
<div className="text-sm text-gray-600">
|
|
308
|
+
Anonymous Visitors
|
|
309
|
+
</div>
|
|
310
|
+
<div className="text-2xl font-bold tracking-tight text-cyan-700">
|
|
311
|
+
{firstTimeValue === 0
|
|
312
|
+
? '-'
|
|
313
|
+
: formatNumber(firstTimeValue)}
|
|
314
|
+
</div>
|
|
315
|
+
</div>
|
|
316
|
+
<div>
|
|
317
|
+
<div className="text-sm text-gray-600">Known Leads</div>
|
|
318
|
+
<div className="text-2xl font-bold tracking-tight text-cyan-700">
|
|
319
|
+
{returningValue === 0
|
|
320
|
+
? '-'
|
|
321
|
+
: formatNumber(returningValue)}
|
|
322
|
+
</div>
|
|
323
|
+
</div>
|
|
324
|
+
</div>
|
|
302
325
|
</dd>
|
|
303
326
|
</div>
|
|
304
327
|
);
|
|
305
328
|
})}
|
|
306
329
|
|
|
307
330
|
{/* Total Leads Card */}
|
|
308
|
-
<div className="rounded-lg border border-gray-100 bg-white px-4 py-3 shadow-sm transition-colors hover:border-cyan-100
|
|
331
|
+
<div className="col-span-3 rounded-lg border border-gray-100 bg-white px-4 py-3 shadow-sm transition-colors hover:border-cyan-100">
|
|
309
332
|
<div className="flex items-center justify-between">
|
|
310
333
|
<dt className="text-sm font-bold text-gray-800">Total Leads</dt>
|
|
311
334
|
<div className="flex items-center gap-2">
|
|
@@ -34,5 +34,42 @@ const mainStylesUrl = isDev
|
|
|
34
34
|
<div class="max-w-5xl p-3.5 md:p-8">
|
|
35
35
|
<RegistrationForm client:load isInitMode={true} />
|
|
36
36
|
</div>
|
|
37
|
+
|
|
38
|
+
<script>
|
|
39
|
+
// Ensure clean slate for fresh installation
|
|
40
|
+
(function initCleanSlate() {
|
|
41
|
+
try {
|
|
42
|
+
// Clear admin/editor auth cookies
|
|
43
|
+
document.cookie =
|
|
44
|
+
'admin_auth=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax';
|
|
45
|
+
document.cookie =
|
|
46
|
+
'editor_auth=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax';
|
|
47
|
+
|
|
48
|
+
// Clear all TractStack localStorage items
|
|
49
|
+
const tractStackKeys = [];
|
|
50
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
51
|
+
const key = localStorage.key(i);
|
|
52
|
+
if (key && key.startsWith('tractstack_')) {
|
|
53
|
+
tractStackKeys.push(key);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
tractStackKeys.forEach((key) => localStorage.removeItem(key));
|
|
57
|
+
|
|
58
|
+
// Clear session-related items
|
|
59
|
+
localStorage.removeItem('tractstack_session_id');
|
|
60
|
+
localStorage.removeItem('tractstack_fingerprint');
|
|
61
|
+
localStorage.removeItem('tractstack_visit');
|
|
62
|
+
localStorage.removeItem('tractstack_entered_tracked');
|
|
63
|
+
|
|
64
|
+
// Clear session cookie
|
|
65
|
+
document.cookie =
|
|
66
|
+
'tractstack_session_id=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax';
|
|
67
|
+
|
|
68
|
+
console.log('TractStack: Clean slate initialization complete');
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.warn('TractStack: Error during clean slate init:', error);
|
|
71
|
+
}
|
|
72
|
+
})();
|
|
73
|
+
</script>
|
|
37
74
|
</body>
|
|
38
75
|
</html>
|