tacilytics 0.0.0-stage → 2.0.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.
- package/.env.example +23 -0
- package/LICENSE +21 -0
- package/README.md +253 -2
- package/cli.js +173 -0
- package/day-salt.js +55 -0
- package/package.json +56 -4
- package/public/app.js +788 -0
- package/public/assets/DISCLAIMER-simple-icons.md +51 -0
- package/public/assets/LICENSE-lucide.txt +43 -0
- package/public/assets/LICENSE-simple-icons.md +30 -0
- package/public/assets/cosmic-bg.webp +0 -0
- package/public/assets/flags/LICENSE-flag-icons.txt +21 -0
- package/public/assets/flags/ad.svg +150 -0
- package/public/assets/flags/ae.svg +6 -0
- package/public/assets/flags/af.svg +81 -0
- package/public/assets/flags/ag.svg +14 -0
- package/public/assets/flags/ai.svg +29 -0
- package/public/assets/flags/al.svg +5 -0
- package/public/assets/flags/am.svg +5 -0
- package/public/assets/flags/ao.svg +13 -0
- package/public/assets/flags/aq.svg +5 -0
- package/public/assets/flags/ar.svg +32 -0
- package/public/assets/flags/arab.svg +109 -0
- package/public/assets/flags/as.svg +72 -0
- package/public/assets/flags/asean.svg +13 -0
- package/public/assets/flags/at.svg +4 -0
- package/public/assets/flags/au.svg +8 -0
- package/public/assets/flags/aw.svg +186 -0
- package/public/assets/flags/ax.svg +18 -0
- package/public/assets/flags/az.svg +8 -0
- package/public/assets/flags/ba.svg +12 -0
- package/public/assets/flags/bb.svg +6 -0
- package/public/assets/flags/bd.svg +4 -0
- package/public/assets/flags/be.svg +7 -0
- package/public/assets/flags/bf.svg +7 -0
- package/public/assets/flags/bg.svg +5 -0
- package/public/assets/flags/bh.svg +4 -0
- package/public/assets/flags/bi.svg +15 -0
- package/public/assets/flags/bj.svg +14 -0
- package/public/assets/flags/bl.svg +5 -0
- package/public/assets/flags/bm.svg +97 -0
- package/public/assets/flags/bn.svg +36 -0
- package/public/assets/flags/bo.svg +673 -0
- package/public/assets/flags/bq.svg +5 -0
- package/public/assets/flags/br.svg +45 -0
- package/public/assets/flags/bs.svg +13 -0
- package/public/assets/flags/bt.svg +89 -0
- package/public/assets/flags/bv.svg +13 -0
- package/public/assets/flags/bw.svg +7 -0
- package/public/assets/flags/by.svg +18 -0
- package/public/assets/flags/bz.svg +145 -0
- package/public/assets/flags/ca.svg +4 -0
- package/public/assets/flags/cc.svg +19 -0
- package/public/assets/flags/cd.svg +5 -0
- package/public/assets/flags/cefta.svg +13 -0
- package/public/assets/flags/cf.svg +15 -0
- package/public/assets/flags/cg.svg +12 -0
- package/public/assets/flags/ch.svg +9 -0
- package/public/assets/flags/ci.svg +7 -0
- package/public/assets/flags/ck.svg +9 -0
- package/public/assets/flags/cl.svg +13 -0
- package/public/assets/flags/cm.svg +15 -0
- package/public/assets/flags/cn.svg +11 -0
- package/public/assets/flags/co.svg +7 -0
- package/public/assets/flags/cp.svg +7 -0
- package/public/assets/flags/cr.svg +7 -0
- package/public/assets/flags/cu.svg +13 -0
- package/public/assets/flags/cv.svg +13 -0
- package/public/assets/flags/cw.svg +14 -0
- package/public/assets/flags/cx.svg +15 -0
- package/public/assets/flags/cy.svg +6 -0
- package/public/assets/flags/cz.svg +5 -0
- package/public/assets/flags/de.svg +5 -0
- package/public/assets/flags/dg.svg +130 -0
- package/public/assets/flags/dj.svg +13 -0
- package/public/assets/flags/dk.svg +5 -0
- package/public/assets/flags/dm.svg +152 -0
- package/public/assets/flags/do.svg +121 -0
- package/public/assets/flags/dz.svg +5 -0
- package/public/assets/flags/eac.svg +48 -0
- package/public/assets/flags/ec.svg +138 -0
- package/public/assets/flags/ee.svg +5 -0
- package/public/assets/flags/eg.svg +38 -0
- package/public/assets/flags/eh.svg +16 -0
- package/public/assets/flags/er.svg +8 -0
- package/public/assets/flags/es-ct.svg +4 -0
- package/public/assets/flags/es-ga.svg +187 -0
- package/public/assets/flags/es-pv.svg +5 -0
- package/public/assets/flags/es.svg +544 -0
- package/public/assets/flags/et.svg +14 -0
- package/public/assets/flags/eu.svg +28 -0
- package/public/assets/flags/fi.svg +5 -0
- package/public/assets/flags/fj.svg +120 -0
- package/public/assets/flags/fk.svg +90 -0
- package/public/assets/flags/fm.svg +11 -0
- package/public/assets/flags/fo.svg +12 -0
- package/public/assets/flags/fr.svg +5 -0
- package/public/assets/flags/ga.svg +7 -0
- package/public/assets/flags/gb-eng.svg +5 -0
- package/public/assets/flags/gb-nir.svg +132 -0
- package/public/assets/flags/gb-sct.svg +4 -0
- package/public/assets/flags/gb-wls.svg +9 -0
- package/public/assets/flags/gb.svg +7 -0
- package/public/assets/flags/gd.svg +27 -0
- package/public/assets/flags/ge.svg +6 -0
- package/public/assets/flags/gf.svg +5 -0
- package/public/assets/flags/gg.svg +9 -0
- package/public/assets/flags/gh.svg +6 -0
- package/public/assets/flags/gi.svg +32 -0
- package/public/assets/flags/gl.svg +4 -0
- package/public/assets/flags/gm.svg +14 -0
- package/public/assets/flags/gn.svg +7 -0
- package/public/assets/flags/gp.svg +5 -0
- package/public/assets/flags/gq.svg +23 -0
- package/public/assets/flags/gr.svg +16 -0
- package/public/assets/flags/gs.svg +133 -0
- package/public/assets/flags/gt.svg +204 -0
- package/public/assets/flags/gu.svg +19 -0
- package/public/assets/flags/gw.svg +13 -0
- package/public/assets/flags/gy.svg +9 -0
- package/public/assets/flags/hk.svg +8 -0
- package/public/assets/flags/hm.svg +8 -0
- package/public/assets/flags/hn.svg +18 -0
- package/public/assets/flags/hr.svg +58 -0
- package/public/assets/flags/ht.svg +116 -0
- package/public/assets/flags/hu.svg +7 -0
- package/public/assets/flags/ic.svg +7 -0
- package/public/assets/flags/id.svg +4 -0
- package/public/assets/flags/ie.svg +7 -0
- package/public/assets/flags/il.svg +14 -0
- package/public/assets/flags/im.svg +36 -0
- package/public/assets/flags/in.svg +25 -0
- package/public/assets/flags/io.svg +130 -0
- package/public/assets/flags/iq.svg +10 -0
- package/public/assets/flags/ir.svg +219 -0
- package/public/assets/flags/is.svg +12 -0
- package/public/assets/flags/it.svg +7 -0
- package/public/assets/flags/je.svg +62 -0
- package/public/assets/flags/jm.svg +8 -0
- package/public/assets/flags/jo.svg +16 -0
- package/public/assets/flags/jp.svg +11 -0
- package/public/assets/flags/ke.svg +23 -0
- package/public/assets/flags/kg.svg +4 -0
- package/public/assets/flags/kh.svg +61 -0
- package/public/assets/flags/ki.svg +36 -0
- package/public/assets/flags/km.svg +16 -0
- package/public/assets/flags/kn.svg +14 -0
- package/public/assets/flags/kp.svg +15 -0
- package/public/assets/flags/kr.svg +24 -0
- package/public/assets/flags/kw.svg +13 -0
- package/public/assets/flags/ky.svg +103 -0
- package/public/assets/flags/kz.svg +36 -0
- package/public/assets/flags/la.svg +12 -0
- package/public/assets/flags/lb.svg +15 -0
- package/public/assets/flags/lc.svg +8 -0
- package/public/assets/flags/li.svg +43 -0
- package/public/assets/flags/lk.svg +22 -0
- package/public/assets/flags/lr.svg +14 -0
- package/public/assets/flags/ls.svg +8 -0
- package/public/assets/flags/lt.svg +7 -0
- package/public/assets/flags/lu.svg +5 -0
- package/public/assets/flags/lv.svg +6 -0
- package/public/assets/flags/ly.svg +13 -0
- package/public/assets/flags/ma.svg +4 -0
- package/public/assets/flags/mc.svg +6 -0
- package/public/assets/flags/md.svg +70 -0
- package/public/assets/flags/me.svg +116 -0
- package/public/assets/flags/mf.svg +5 -0
- package/public/assets/flags/mg.svg +7 -0
- package/public/assets/flags/mh.svg +7 -0
- package/public/assets/flags/mk.svg +5 -0
- package/public/assets/flags/ml.svg +7 -0
- package/public/assets/flags/mm.svg +12 -0
- package/public/assets/flags/mn.svg +14 -0
- package/public/assets/flags/mo.svg +9 -0
- package/public/assets/flags/mp.svg +86 -0
- package/public/assets/flags/mq.svg +5 -0
- package/public/assets/flags/mr.svg +6 -0
- package/public/assets/flags/ms.svg +29 -0
- package/public/assets/flags/mt.svg +58 -0
- package/public/assets/flags/mu.svg +8 -0
- package/public/assets/flags/mv.svg +6 -0
- package/public/assets/flags/mw.svg +10 -0
- package/public/assets/flags/mx.svg +382 -0
- package/public/assets/flags/my.svg +26 -0
- package/public/assets/flags/mz.svg +21 -0
- package/public/assets/flags/na.svg +16 -0
- package/public/assets/flags/nc.svg +13 -0
- package/public/assets/flags/ne.svg +6 -0
- package/public/assets/flags/nf.svg +9 -0
- package/public/assets/flags/ng.svg +6 -0
- package/public/assets/flags/ni.svg +129 -0
- package/public/assets/flags/nl.svg +5 -0
- package/public/assets/flags/no.svg +7 -0
- package/public/assets/flags/np.svg +13 -0
- package/public/assets/flags/nr.svg +12 -0
- package/public/assets/flags/nu.svg +10 -0
- package/public/assets/flags/nz.svg +36 -0
- package/public/assets/flags/om.svg +115 -0
- package/public/assets/flags/pa.svg +14 -0
- package/public/assets/flags/pc.svg +33 -0
- package/public/assets/flags/pe.svg +4 -0
- package/public/assets/flags/pf.svg +19 -0
- package/public/assets/flags/pg.svg +9 -0
- package/public/assets/flags/ph.svg +6 -0
- package/public/assets/flags/pk.svg +15 -0
- package/public/assets/flags/pl.svg +6 -0
- package/public/assets/flags/pm.svg +5 -0
- package/public/assets/flags/pn.svg +53 -0
- package/public/assets/flags/pr.svg +13 -0
- package/public/assets/flags/ps.svg +6 -0
- package/public/assets/flags/pt.svg +57 -0
- package/public/assets/flags/pw.svg +11 -0
- package/public/assets/flags/py.svg +157 -0
- package/public/assets/flags/qa.svg +4 -0
- package/public/assets/flags/re.svg +5 -0
- package/public/assets/flags/ro.svg +7 -0
- package/public/assets/flags/rs.svg +292 -0
- package/public/assets/flags/ru.svg +5 -0
- package/public/assets/flags/rw.svg +13 -0
- package/public/assets/flags/sa.svg +25 -0
- package/public/assets/flags/sb.svg +13 -0
- package/public/assets/flags/sc.svg +7 -0
- package/public/assets/flags/sd.svg +13 -0
- package/public/assets/flags/se.svg +4 -0
- package/public/assets/flags/sg.svg +13 -0
- package/public/assets/flags/sh-ac.svg +689 -0
- package/public/assets/flags/sh-hl.svg +164 -0
- package/public/assets/flags/sh-ta.svg +76 -0
- package/public/assets/flags/sh.svg +7 -0
- package/public/assets/flags/si.svg +18 -0
- package/public/assets/flags/sj.svg +7 -0
- package/public/assets/flags/sk.svg +9 -0
- package/public/assets/flags/sl.svg +7 -0
- package/public/assets/flags/sm.svg +75 -0
- package/public/assets/flags/sn.svg +8 -0
- package/public/assets/flags/so.svg +11 -0
- package/public/assets/flags/sr.svg +6 -0
- package/public/assets/flags/ss.svg +8 -0
- package/public/assets/flags/st.svg +16 -0
- package/public/assets/flags/sv.svg +593 -0
- package/public/assets/flags/sx.svg +56 -0
- package/public/assets/flags/sy.svg +6 -0
- package/public/assets/flags/sz.svg +34 -0
- package/public/assets/flags/tc.svg +50 -0
- package/public/assets/flags/td.svg +7 -0
- package/public/assets/flags/tf.svg +15 -0
- package/public/assets/flags/tg.svg +14 -0
- package/public/assets/flags/th.svg +7 -0
- package/public/assets/flags/tj.svg +22 -0
- package/public/assets/flags/tk.svg +5 -0
- package/public/assets/flags/tl.svg +13 -0
- package/public/assets/flags/tm.svg +204 -0
- package/public/assets/flags/tn.svg +4 -0
- package/public/assets/flags/to.svg +10 -0
- package/public/assets/flags/tr.svg +8 -0
- package/public/assets/flags/tt.svg +5 -0
- package/public/assets/flags/tv.svg +9 -0
- package/public/assets/flags/tw.svg +34 -0
- package/public/assets/flags/tz.svg +13 -0
- package/public/assets/flags/ua.svg +6 -0
- package/public/assets/flags/ug.svg +30 -0
- package/public/assets/flags/um.svg +9 -0
- package/public/assets/flags/un.svg +16 -0
- package/public/assets/flags/us.svg +9 -0
- package/public/assets/flags/uy.svg +28 -0
- package/public/assets/flags/uz.svg +30 -0
- package/public/assets/flags/va.svg +190 -0
- package/public/assets/flags/vc.svg +8 -0
- package/public/assets/flags/ve.svg +26 -0
- package/public/assets/flags/vg.svg +59 -0
- package/public/assets/flags/vi.svg +28 -0
- package/public/assets/flags/vn.svg +11 -0
- package/public/assets/flags/vu.svg +21 -0
- package/public/assets/flags/wf.svg +5 -0
- package/public/assets/flags/ws.svg +7 -0
- package/public/assets/flags/xk.svg +5 -0
- package/public/assets/flags/xx.svg +4 -0
- package/public/assets/flags/ye.svg +7 -0
- package/public/assets/flags/yt.svg +5 -0
- package/public/assets/flags/za.svg +17 -0
- package/public/assets/flags/zm.svg +27 -0
- package/public/assets/flags/zw.svg +21 -0
- package/public/assets/fonts/Inter-OFL.txt +93 -0
- package/public/assets/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/public/assets/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/public/assets/icons.svg +200 -0
- package/public/assets/nyx-logo-256.png +0 -0
- package/public/assets/tacilytics-mark.svg +16 -0
- package/public/index.html +239 -0
- package/public/style.css +411 -0
- package/public/tacilytics.js +184 -0
- package/sdk/flutter/CHANGELOG.md +6 -0
- package/sdk/flutter/LICENSE +21 -0
- package/sdk/flutter/README.md +41 -0
- package/sdk/flutter/dart_test.yaml +3 -0
- package/sdk/flutter/lib/nyx_analytics.dart +13 -0
- package/sdk/flutter/lib/src/beacon.dart +87 -0
- package/sdk/flutter/lib/src/client.dart +177 -0
- package/sdk/flutter/lib/tacilytics.dart +13 -0
- package/sdk/flutter/pubspec.lock +221 -0
- package/sdk/flutter/pubspec.yaml +18 -0
- package/sdk/flutter/test/alias_test.dart +13 -0
- package/sdk/flutter/test/beacon_test.dart +46 -0
- package/sdk/flutter/test/e2e_test.dart +18 -0
- package/server.js +893 -0
- package/tz-country.js +32 -0
|
@@ -0,0 +1,239 @@
|
|
|
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">
|
|
6
|
+
<title>Tacilytics</title>
|
|
7
|
+
<meta name="robots" content="noindex">
|
|
8
|
+
<link rel="icon" href="/assets/tacilytics-mark.svg" type="image/svg+xml">
|
|
9
|
+
<meta name="theme-color" content="#071114">
|
|
10
|
+
<link rel="preload" href="/assets/fonts/inter-latin-wght-normal.woff2" as="font" type="font/woff2" crossorigin>
|
|
11
|
+
<link rel="stylesheet" href="/style.css?v=2.3.0">
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
|
|
15
|
+
<!-- Login -->
|
|
16
|
+
<div id="login" class="modal-overlay">
|
|
17
|
+
<div class="modal">
|
|
18
|
+
<img class="logo" src="/assets/tacilytics-mark.svg" alt="">
|
|
19
|
+
<h2>Tacilytics</h2>
|
|
20
|
+
<p>Cookieless analytics. Sign in with your passphrase.</p>
|
|
21
|
+
<div id="loginErr" class="err"></div>
|
|
22
|
+
<input id="pw" type="password" placeholder="Passphrase" autocomplete="current-password">
|
|
23
|
+
<button class="btn" id="loginBtn">Sign in</button>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<!-- App -->
|
|
28
|
+
<div id="app" class="container hide">
|
|
29
|
+
<header>
|
|
30
|
+
<div class="brand">
|
|
31
|
+
<img class="logo" src="/assets/tacilytics-mark.svg" alt="">
|
|
32
|
+
<div>
|
|
33
|
+
<h1>Tacilytics</h1>
|
|
34
|
+
<div class="subtitle">Cookieless analytics · we count, we don't tell</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="header-right">
|
|
38
|
+
<div class="realtime" id="realtimeBtn" title="View live visitors" style="cursor:pointer"><span class="dot"></span><span id="realtime">0</span> online now</div>
|
|
39
|
+
<select id="siteSelect"></select>
|
|
40
|
+
<button class="btn ghost" id="addSiteBtn"><svg class="ico ui" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-plus"></use></svg>Add site</button>
|
|
41
|
+
<button class="btn ghost danger" id="logoutBtn">Sign out</button>
|
|
42
|
+
</div>
|
|
43
|
+
</header>
|
|
44
|
+
|
|
45
|
+
<div class="toolbar">
|
|
46
|
+
<div class="periods" id="periods">
|
|
47
|
+
<button data-p="today">Today</button>
|
|
48
|
+
<button data-p="7d" class="active">7 days</button>
|
|
49
|
+
<button data-p="30d">30 days</button>
|
|
50
|
+
<button data-p="90d">90 days</button>
|
|
51
|
+
<button data-p="12mo">12 mo</button>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="toolbar-right">
|
|
54
|
+
<div class="range" id="range">
|
|
55
|
+
<input type="date" id="fromDate" title="From"><span class="arrow"><svg class="ico ui" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-arrow"></use></svg></span><input type="date" id="toDate" title="To">
|
|
56
|
+
<button class="btn ghost" id="applyRange">Apply</button>
|
|
57
|
+
</div>
|
|
58
|
+
<button class="btn ghost" id="exportBtn"><svg class="ico ui" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-download"></use></svg>CSV</button>
|
|
59
|
+
<button class="btn ghost" id="shareBtn" title="Create a public read-only link"><svg class="ico ui" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-share"></use></svg>Share</button>
|
|
60
|
+
<button class="btn ghost" id="snippetBtn"><svg class="ico ui" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-code"></use></svg>Embed code</button>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<!-- active segmentation filters -->
|
|
65
|
+
<div id="filters" class="filters hide"></div>
|
|
66
|
+
|
|
67
|
+
<div id="dash">
|
|
68
|
+
<div class="stats">
|
|
69
|
+
<div class="card stat"><div class="label">Unique visitors</div><div class="value grad-text" id="s-visitors">—</div><span class="trend" id="t-visitors"></span><span class="yoy hide" id="y-visitors"></span></div>
|
|
70
|
+
<div class="card stat"><div class="label">Pageviews</div><div class="value" id="s-pageviews">—</div><span class="trend" id="t-pageviews"></span><span class="yoy hide" id="y-pageviews"></span></div>
|
|
71
|
+
<div class="card stat"><div class="label">Bounce rate</div><div class="value" id="s-bounce">—</div></div>
|
|
72
|
+
<div class="card stat"><div class="label">Views / visitor</div><div class="value" id="s-vpv">—</div></div>
|
|
73
|
+
<div class="card stat"><div class="label">Avg. visit time</div><div class="value" id="s-dur">—</div></div>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<!-- commerce (Purchase events) -->
|
|
77
|
+
<div class="commerce hide" id="commerce">
|
|
78
|
+
<div class="card stat"><div class="label">Revenue</div><div class="value grad-text" id="c-revenue">—</div><span class="trend" id="tc-revenue"></span></div>
|
|
79
|
+
<div class="card stat"><div class="label">Orders</div><div class="value" id="c-orders">—</div><span class="trend" id="tc-orders"></span></div>
|
|
80
|
+
<div class="card stat"><div class="label">Avg. order value</div><div class="value" id="c-aov">—</div></div>
|
|
81
|
+
<div class="card stat"><div class="label">Conversion rate</div><div class="value" id="c-cr">—</div></div>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<div class="card chart-card">
|
|
85
|
+
<div class="chart-head">
|
|
86
|
+
<strong id="chartTitle">Visitors</strong>
|
|
87
|
+
<div class="legend">
|
|
88
|
+
<button type="button" class="leg" id="leg-visitors" data-key="visitors" aria-pressed="true"><span class="swatch" style="background:var(--chart-visitors)"></span>Visitors</button>
|
|
89
|
+
<button type="button" class="leg" id="leg-pageviews" data-key="pageviews" aria-pressed="true"><span class="swatch" style="background:var(--chart-pageviews)"></span>Pageviews</button>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
<svg id="chart" viewBox="0 0 800 220" preserveAspectRatio="none"></svg>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<div class="panels">
|
|
96
|
+
<div class="card panel">
|
|
97
|
+
<h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-pages"></use></svg> Pages
|
|
98
|
+
<span class="tabs" id="pageTabs">
|
|
99
|
+
<button data-t="pages" class="active">Top</button>
|
|
100
|
+
<button data-t="entryPages">Entry</button>
|
|
101
|
+
<button data-t="exitPages">Exit</button>
|
|
102
|
+
</span>
|
|
103
|
+
</h3>
|
|
104
|
+
<div class="bars" id="p-pages"></div>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="card panel">
|
|
107
|
+
<h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-sources"></use></svg> Sources
|
|
108
|
+
<span class="tabs" id="srcTabs">
|
|
109
|
+
<button data-t="sources" class="active">Source</button>
|
|
110
|
+
<button data-t="mediums">Medium</button>
|
|
111
|
+
<button data-t="campaigns">Campaign</button>
|
|
112
|
+
</span>
|
|
113
|
+
</h3>
|
|
114
|
+
<div class="bars" id="p-sources"></div>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="card panel"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-globe"></use></svg> Locations</h3><div class="bars" id="p-countries"></div></div>
|
|
117
|
+
<div class="card panel"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-browser"></use></svg> Browsers</h3><div class="bars" id="p-browsers"></div></div>
|
|
118
|
+
<div class="card panel"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-os"></use></svg> OS</h3><div class="bars" id="p-os"></div></div>
|
|
119
|
+
<div class="card panel"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-device"></use></svg> Devices</h3><div class="bars" id="p-devices"></div></div>
|
|
120
|
+
<div class="card panel hide" id="w-platforms"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-platform"></use></svg> Platforms
|
|
121
|
+
<span class="tabs" id="pfTabs"><button data-t="platforms" class="active">Platform</button><button data-t="appVersions">App version</button></span>
|
|
122
|
+
</h3><div class="bars" id="p-platforms"></div></div>
|
|
123
|
+
<div class="card panel"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-goal"></use></svg> Goals & conversions</h3><div class="bars" id="p-goals"></div></div>
|
|
124
|
+
<div class="card panel"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-lang"></use></svg> Languages</h3><div class="bars" id="p-languages"></div></div>
|
|
125
|
+
</div>
|
|
126
|
+
|
|
127
|
+
<!-- shop insights: revenue by source, site search, broken pages, scroll depth (13.10.2026) -->
|
|
128
|
+
<div class="panels" id="insights" style="margin-top:16px">
|
|
129
|
+
<div class="card panel hide" id="w-revsrc"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-revenue"></use></svg> Revenue by source <span class="muted hint">first source of the buying visit</span></h3><div class="bars" id="p-revsrc"></div></div>
|
|
130
|
+
<div class="card panel hide" id="w-revpf"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-platform"></use></svg> Revenue by platform <span class="muted hint">web vs. apps</span></h3><div class="bars" id="p-revpf"></div></div>
|
|
131
|
+
<div class="card panel hide" id="w-search"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-search"></use></svg> Site search
|
|
132
|
+
<span class="tabs" id="searchTabs"><button data-t="top" class="active">Top</button><button data-t="zeroResults">No results</button></span>
|
|
133
|
+
</h3><p class="muted hint" id="searchMeta"></p><div class="bars" id="p-search"></div></div>
|
|
134
|
+
<div class="card panel hide" id="w-404"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-404"></use></svg> Broken pages (404)</h3><div class="bars" id="p-404"></div></div>
|
|
135
|
+
<div class="card panel hide" id="w-scroll"><h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-scroll"></use></svg> Scroll depth <span class="muted hint">avg · share reaching 75 %</span></h3><div class="bars" id="p-scroll"></div></div>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<!-- visitor journeys (sankey) -->
|
|
139
|
+
<div class="card panel" style="margin-top:16px">
|
|
140
|
+
<h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-journey"></use></svg> Visitor journeys <span class="muted" id="journeyMeta" style="font-size:.75rem;font-weight:400"></span></h3>
|
|
141
|
+
<div id="journeyWrap" style="overflow-x:auto"><svg id="journey" width="100%" height="340"></svg></div>
|
|
142
|
+
</div>
|
|
143
|
+
|
|
144
|
+
<!-- funnels -->
|
|
145
|
+
<div class="card panel" style="margin-top:16px">
|
|
146
|
+
<h3><svg class="ico h" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-funnel"></use></svg> Funnels
|
|
147
|
+
<span class="tabs"><button id="addFunnelBtn">+ New funnel</button></span>
|
|
148
|
+
</h3>
|
|
149
|
+
<div id="funnels" class="funnels"></div>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
152
|
+
<!-- custom-event properties (shown when drilled into a single goal) -->
|
|
153
|
+
<div id="propsWrap" class="panels hide" style="margin-top:16px"></div>
|
|
154
|
+
<p class="footer-note">Tacilytics · open source · <a href="https://github.com/Open-Cosmic-Software/tacilytics" target="_blank" rel="noopener">GitHub</a></p>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
<!-- Add site modal -->
|
|
159
|
+
<div id="addModal" class="modal-overlay hide">
|
|
160
|
+
<div class="modal">
|
|
161
|
+
<span class="logo em"><svg class="ico big" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-site"></use></svg></span>
|
|
162
|
+
<h2>Add a site</h2>
|
|
163
|
+
<p>Enter the domain you want to track.</p>
|
|
164
|
+
<div id="addErr" class="err"></div>
|
|
165
|
+
<input id="newDomain" type="text" placeholder="example.com" autocomplete="off">
|
|
166
|
+
<button class="btn" id="createSiteBtn">Create</button>
|
|
167
|
+
<button class="btn ghost" id="cancelAdd" style="margin-top:10px">Cancel</button>
|
|
168
|
+
</div>
|
|
169
|
+
</div>
|
|
170
|
+
|
|
171
|
+
<!-- Snippet modal: website + apps (13.10.2026) -->
|
|
172
|
+
<div id="snippetModal" class="modal-overlay hide">
|
|
173
|
+
<div class="modal modal-wide">
|
|
174
|
+
<span class="logo em"><svg class="ico big" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-code"></use></svg></span>
|
|
175
|
+
<h2>Add tracking</h2>
|
|
176
|
+
<p style="margin-bottom:12px">for <strong id="snipDomain"></strong>. Same dashboard for website and apps.</p>
|
|
177
|
+
<div class="tabs snip-tabs" id="snipTabs">
|
|
178
|
+
<button data-t="web" class="active"><svg class="ico ui" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-web"></use></svg>Website</button>
|
|
179
|
+
<button data-t="flutter"><svg class="ico brand" style="color:#02569B" aria-hidden="true"><use href="/assets/icons.svg?v=1#b-flutter"></use></svg>Flutter app</button>
|
|
180
|
+
<button data-t="other"><svg class="ico ui" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-mobile"></use></svg>Other apps</button>
|
|
181
|
+
</div>
|
|
182
|
+
<p class="muted snip-step" id="snipStep1"></p>
|
|
183
|
+
<div class="snippet" id="snippetCode"></div>
|
|
184
|
+
<p class="muted snip-step" id="snipStep2"></p>
|
|
185
|
+
<div class="snippet hide" id="snippetCode2"></div>
|
|
186
|
+
<p class="muted snip-hint" id="snipHint"></p>
|
|
187
|
+
<button class="btn" id="copySnippet">Copy</button>
|
|
188
|
+
<button class="btn ghost hide" id="copySnippet2" style="margin-top:10px">Copy step 2</button>
|
|
189
|
+
<button class="btn ghost" id="closeSnippet" style="margin-top:10px">Close</button>
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
<!-- Share modal -->
|
|
194
|
+
<div id="shareModal" class="modal-overlay hide">
|
|
195
|
+
<div class="modal">
|
|
196
|
+
<span class="logo em"><svg class="ico big" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-share"></use></svg></span>
|
|
197
|
+
<h2>Share dashboard</h2>
|
|
198
|
+
<p>Anyone with this link can view stats for <strong id="shareDomain"></strong> — read-only, no login.</p>
|
|
199
|
+
<div class="snippet" id="shareUrl" style="word-break:break-all"></div>
|
|
200
|
+
<button class="btn" id="copyShare">Copy link</button>
|
|
201
|
+
<button class="btn ghost danger" id="revokeShare" style="margin-top:10px">Revoke this link</button>
|
|
202
|
+
<button class="btn ghost" id="closeShare" style="margin-top:10px">Close</button>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
<!-- Funnel builder modal -->
|
|
207
|
+
<div id="funnelModal" class="modal-overlay hide">
|
|
208
|
+
<div class="modal">
|
|
209
|
+
<span class="logo em"><svg class="ico big" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-funnel"></use></svg></span>
|
|
210
|
+
<h2>New funnel</h2>
|
|
211
|
+
<p>2–8 ordered steps. A visitor advances only after completing the previous step.</p>
|
|
212
|
+
<div id="funnelErr" class="err"></div>
|
|
213
|
+
<input id="funnelName" type="text" placeholder="Funnel name, e.g. Signup flow" autocomplete="off">
|
|
214
|
+
<div id="funnelSteps"></div>
|
|
215
|
+
<button class="btn ghost" id="addStepBtn" style="margin-top:6px">+ Add step</button>
|
|
216
|
+
<button class="btn" id="createFunnelBtn" style="margin-top:10px">Create</button>
|
|
217
|
+
<button class="btn ghost" id="cancelFunnel" style="margin-top:10px">Cancel</button>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
|
|
221
|
+
<!-- Live visitors modal -->
|
|
222
|
+
<div id="liveModal" class="modal-overlay hide">
|
|
223
|
+
<div class="modal live">
|
|
224
|
+
<div class="live-head">
|
|
225
|
+
<h2>Live</h2>
|
|
226
|
+
<span class="realtime"><span class="dot"></span><span id="live-online">0</span> online</span>
|
|
227
|
+
</div>
|
|
228
|
+
<p class="live-sub">Visitors over the last 30 minutes · updates every few seconds</p>
|
|
229
|
+
<svg id="live-spark" viewBox="0 0 600 70" preserveAspectRatio="none"></svg>
|
|
230
|
+
<div class="feed-label">Recent activity</div>
|
|
231
|
+
<div class="feed" id="live-feed"></div>
|
|
232
|
+
<button class="btn ghost" id="closeLive" style="margin-top:14px">Close</button>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
|
|
236
|
+
<div class="tip" id="tip"></div>
|
|
237
|
+
<script src="/app.js?v=2.2.0"></script>
|
|
238
|
+
</body>
|
|
239
|
+
</html>
|