Diff -- /var/www/vhosts/3dshawn.com/repricer.3dshawn.com/TEMPLATES/repricer_preferences.html
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
to 7dbe641c5742
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 & 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 & 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 & 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 — 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> |