Diff -- /var/www/vhosts/3dshawn.com/repricer.3dshawn.com/TEMPLATES/repricer_preferences.html

O Operator
Diff

/var/www/vhosts/3dshawn.com/repricer.3dshawn.com/TEMPLATES/repricer_preferences.html

added on local at 2026-07-01 21:47:26

Added
+117
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to 7dbe641c5742
Restore this content →
Unified diff
Naive LCS-based line diff. Additions in emerald, deletions in rose. Both sides decompressed live from BLOB_STORE.
1<div class="page-head">
2 <div>
3 <span class="page-eyebrow"><span class="dot"></span> Notifications &amp; UI prefs</span>
4 <h1 class="page-title">Preferences</h1>
5 <p class="page-subtitle">Tune which alerts you receive and review the features included with your plan.</p>
6 </div>
7 </div>
8
9 [if:$has_saved_msg]
10 <div class="banner success mb-3">
11 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg>
12 <div class="text-sm fw-600">$saved_msg</div>
13 </div>
14 [/if]
15
16 <div class="dash-grid">
17 <div class="module">
18 <div class="module-head"><div class="left"><div class="module-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/></svg></div><div><div class="module-title">Notifications</div></div></div></div>
19 <div class="module-body">
20 <form method="post" action="/preferences.cgi" class="we-notif-form" style="display:flex;flex-direction:column;gap:14px">
21 <input type="hidden" name="action" value="save_notifications">
22
23 <div class="flex items-center justify-between">
24 <div><div class="text-sm fw-600">Sale notifications</div><div class="text-xs text-dim">Real-time email when an order completes</div></div>
25 <label class="we-tog-label" style="cursor:pointer">
26 <input type="checkbox" name="notif_sale_alerts" $notif_sale_alerts_checked style="display:none">
27 <span class="toggle $notif_sale_alerts_on"></span>
28 </label>
29 </div>
30
31 <div class="flex items-center justify-between">
32 <div><div class="text-sm fw-600">Platform health alerts</div><div class="text-xs text-dim">When a connected marketplace goes degraded or down</div></div>
33 <label class="we-tog-label" style="cursor:pointer">
34 <input type="checkbox" name="notif_platform_health" $notif_platform_health_checked style="display:none">
35 <span class="toggle $notif_platform_health_on"></span>
36 </label>
37 </div>
38
39 <div class="flex items-center justify-between">
40 <div><div class="text-sm fw-600">Comment &amp; review digest</div><div class="text-xs text-dim">Daily summary of new feedback</div></div>
41 <label class="we-tog-label" style="cursor:pointer">
42 <input type="checkbox" name="notif_review_digest" $notif_review_digest_checked style="display:none">
43 <span class="toggle $notif_review_digest_on"></span>
44 </label>
45 </div>
46
47 <div class="flex items-center justify-between">
48 <div><div class="text-sm fw-600">A/B test winners</div><div class="text-xs text-dim">Notify when an experiment reaches a stable winner</div></div>
49 <label class="we-tog-label" style="cursor:pointer">
50 <input type="checkbox" name="notif_ab_winners" $notif_ab_winners_checked style="display:none">
51 <span class="toggle $notif_ab_winners_on"></span>
52 </label>
53 </div>
54
55 <div class="flex items-center justify-between">
56 <div><div class="text-sm fw-600">Weekly performance summary</div><div class="text-xs text-dim">Mondays at 8am local time</div></div>
57 <label class="we-tog-label" style="cursor:pointer">
58 <input type="checkbox" name="notif_weekly_summary" $notif_weekly_summary_checked style="display:none">
59 <span class="toggle $notif_weekly_summary_on"></span>
60 </label>
61 </div>
62
63 <div class="flex items-center justify-between">
64 <div><div class="text-sm fw-600">Marketing &amp; product updates</div><div class="text-xs text-dim">Newsletter from RePricer</div></div>
65 <label class="we-tog-label" style="cursor:pointer">
66 <input type="checkbox" name="notif_marketing" $notif_marketing_checked style="display:none">
67 <span class="toggle $notif_marketing_on"></span>
68 </label>
69 </div>
70
71 <button type="submit" class="btn btn-primary mt-2" style="align-self:flex-start">Save preferences</button>
72 </form>
73 <script>
74 document.querySelectorAll('.we-notif-form .we-tog-label').forEach(function(lbl){
75 lbl.addEventListener('click', function(e){
76 var inp = lbl.querySelector('input[type=checkbox]');
77 var vis = lbl.querySelector('.toggle');
78 if (!inp || !vis) return;
79 e.preventDefault();
80 inp.checked = !inp.checked;
81 if (inp.checked) { vis.classList.add('on'); } else { vis.classList.remove('on'); }
82 });
83 });
84 </script>
85 </div>
86 </div>
87 </div>
88
89 [if:$is_owner]
90 <div class="mt-4">
91 <div class="banner info mb-3">
92 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/></svg>
93 <div class="text-xs">These are the features included in your current plan (<strong>$plan_label_for_features</strong>). Locked rows are gated behind a higher plan &mdash; upgrade to unlock them.</div>
94 </div>
95 <div class="module">
96 <div class="module-head"><div class="left"><div class="module-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1Z"/><line x1="4" y1="22" x2="4" y2="15"/></svg></div><div><div class="module-title">Your features</div><div class="module-sub">Set by the package you're on.</div></div></div></div>
97 <div class="module-body" style="display:flex;flex-direction:column;gap:10px">
98 [loop:@features]
99 [if:$loop1.included]
100 <div class="flex items-center justify-between" style="padding:14px;border-radius:10px;background:var(--col-surface-2);border:1px solid var(--col-border)">
101 <div class="flex items-center gap-3"><span class="module-icon" style="width:32px;height:32px"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">[$loop1.icon_svg]</svg></span><div><div class="text-sm fw-600" style="color:#fff">[$loop1.name]</div><div class="text-xs text-dim">[$loop1.blurb]</div></div></div>
102 <span class="adm-pill" style="background:rgba(74,222,128,0.15);color:#4ade80">Included</span>
103 </div>
104 [/if]
105 [if:$loop1.locked]
106 <div class="flex items-center justify-between" style="padding:14px;border-radius:10px;background:var(--col-surface-2);border:1px dashed var(--col-border);opacity:0.78">
107 <div class="flex items-center gap-3"><span class="module-icon" style="width:32px;height:32px;opacity:0.55"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">[$loop1.icon_svg]</svg></span><div><div class="text-sm fw-600" style="color:#fff">[$loop1.name] <span class="adm-pill" style="margin-left:6px;background:rgba(148,163,184,0.15);color:#94a3b8">Locked</span></div><div class="text-xs text-dim">[$loop1.blurb]</div></div></div>
108 <a href="/billing.cgi" class="btn btn-primary btn-sm">Upgrade to unlock</a>
109 </div>
110 [/if]
111 [/loop]
112 </div>
113 </div>
114 </div>
115 [/if]
116
117<div class="page-foot-spacer"></div>