Diff -- /var/www/vhosts/3dshawn.com/ptmatrix.3dshawn.com/TEMPLATES/tf_kb_browse.html
Diff
/var/www/vhosts/3dshawn.com/ptmatrix.3dshawn.com/TEMPLATES/tf_kb_browse.html
added on local at 2026-07-01 12:35:00
Added
+122
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to 831f912ec7b7
to 831f912ec7b7
Unified diff
Naive LCS-based line diff. Additions in emerald, deletions in rose. Both sides decompressed live from BLOB_STORE.| 1 | <style> | |
| 2 | .kbb-wrap { display: grid; grid-template-columns: 240px 1fr; gap: 28px; max-width: 1200px; margin: 0 auto; } | |
| 3 | @media (max-width: 760px) { | |
| 4 | .kbb-wrap { grid-template-columns: 1fr; } | |
| 5 | .kbb-rail { order: 2; } | |
| 6 | } | |
| 7 | .kbb-rail h4 { | |
| 8 | font-size: 11px; letter-spacing: 1px; text-transform: uppercase; | |
| 9 | color: var(--col-text-dim); margin: 0 0 10px; | |
| 10 | } | |
| 11 | .kbb-rail a { | |
| 12 | display: block; padding: 8px 12px; color: var(--col-text); text-decoration: none; | |
| 13 | border-radius: 8px; font-size: 13px; margin-bottom: 2px; | |
| 14 | } | |
| 15 | .kbb-rail a:hover { background: var(--col-bg-2); } | |
| 16 | .kbb-rail a.active { background: var(--col-bg-2); border: 1px solid var(--col-border); font-weight: 600; } | |
| 17 | .kbb-rail a .n { float: right; color: var(--col-text-dim); font-size: 11px; } | |
| 18 | .kbb-rail .all-link { margin-top: 12px; border-top: 1px solid var(--col-border); padding-top: 12px; } | |
| 19 | ||
| 20 | .kbb-search { margin-bottom: 24px; position: relative; max-width: 540px; } | |
| 21 | .kbb-search input { | |
| 22 | width: 100%; padding: 12px 14px 12px 42px; border-radius: 10px; | |
| 23 | border: 1px solid var(--col-border); background: var(--col-bg-2); | |
| 24 | color: var(--col-text); font-size: 14px; | |
| 25 | } | |
| 26 | .kbb-search svg { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); opacity: .6; } | |
| 27 | ||
| 28 | .kbb-crumb { font-size: 12px; color: var(--col-text-dim); margin-bottom: 8px; } | |
| 29 | .kbb-crumb a { color: var(--col-text-dim); text-decoration: none; } | |
| 30 | .kbb-crumb a:hover { color: var(--col-text); } | |
| 31 | ||
| 32 | .kbb-title { font-size: 26px; margin: 0 0 24px; } | |
| 33 | ||
| 34 | .kbb-list { list-style: none; padding: 0; margin: 0; } | |
| 35 | .kbb-list li { | |
| 36 | border-bottom: 1px solid var(--col-border); padding: 14px 0; | |
| 37 | } | |
| 38 | .kbb-list a { color: var(--col-text); text-decoration: none; font-weight: 600; font-size: 15px; } | |
| 39 | .kbb-list a:hover { color: var(--col-brand-1); } | |
| 40 | .kbb-list .meta { font-size: 12px; color: var(--col-text-dim); margin-top: 4px; } | |
| 41 | ||
| 42 | .kbb-article { background: var(--col-bg-2); border: 1px solid var(--col-border); border-radius: 12px; padding: 28px 32px; } | |
| 43 | .kbb-article h3 { font-size: 17px; margin: 22px 0 8px; } | |
| 44 | .kbb-article p { line-height: 1.7; margin: 0 0 14px; color: var(--col-text); } | |
| 45 | .kbb-article ul { line-height: 1.7; padding-left: 22px; margin: 0 0 14px; } | |
| 46 | .kbb-article code { background: var(--col-bg-3); padding: 2px 6px; border-radius: 4px; font-size: 13px; } | |
| 47 | .kbb-article a { color: var(--col-brand-1); } | |
| 48 | .kbb-article .article-meta { | |
| 49 | font-size: 12px; color: var(--col-text-dim); margin-top: 24px; | |
| 50 | padding-top: 16px; border-top: 1px solid var(--col-border); | |
| 51 | } | |
| 52 | ||
| 53 | .kbb-empty { | |
| 54 | padding: 40px; text-align: center; background: var(--col-bg-2); | |
| 55 | border: 1px dashed var(--col-border); border-radius: 12px; | |
| 56 | color: var(--col-text-dim); | |
| 57 | } | |
| 58 | ||
| 59 | .kbb-footer-cta { | |
| 60 | margin-top: 36px; padding: 22px; text-align: center; | |
| 61 | background: var(--col-bg-2); border: 1px solid var(--col-border); border-radius: 12px; | |
| 62 | } | |
| 63 | .kbb-footer-cta h3 { margin: 0 0 6px; font-size: 16px; } | |
| 64 | .kbb-footer-cta p { margin: 0 0 14px; color: var(--col-text-dim); font-size: 13px; } | |
| 65 | </style> | |
| 66 | ||
| 67 | <div class="kbb-wrap"> | |
| 68 | <aside class="kbb-rail"> | |
| 69 | <h4>Categories</h4> | |
| 70 | [loop:@cats] | |
| 71 | <a href="/kb.cgi?cat=$loop1.slug"[if:$loop1.active] class="active"[/if]>$loop1.label<span class="n">$loop1.count</span></a> | |
| 72 | [/loop] | |
| 73 | <div class="all-link"><a href="/help.cgi">← Back to Help center</a></div> | |
| 74 | </aside> | |
| 75 | ||
| 76 | <div class="kbb-main"> | |
| 77 | <form class="kbb-search" action="/kb.cgi" method="get"> | |
| 78 | <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><line x1="20" y1="20" x2="16.65" y2="16.65"/></svg> | |
| 79 | <input type="text" name="q" placeholder="Search articles…" value="$query" autocomplete="off"> | |
| 80 | </form> | |
| 81 | ||
| 82 | [if:$has_article] | |
| 83 | <div class="kbb-crumb"> | |
| 84 | <a href="/help.cgi">Help</a> › | |
| 85 | [if:$article.category_slug]<a href="/kb.cgi?cat=$article.category_slug">$article.category_label</a> ›[/if] | |
| 86 | $article.title | |
| 87 | </div> | |
| 88 | <article class="kbb-article"> | |
| 89 | <h1 class="kbb-title">$article.title</h1> | |
| 90 | $article.body_html | |
| 91 | <div class="article-meta">$article.view_count views · last updated $article.updated_at</div> | |
| 92 | </article> | |
| 93 | [/if] | |
| 94 | ||
| 95 | [if:!$has_article] | |
| 96 | <div class="kbb-crumb"> | |
| 97 | <a href="/help.cgi">Help</a> › $crumb_label | |
| 98 | </div> | |
| 99 | <h1 class="kbb-title">$page_title</h1> | |
| 100 | ||
| 101 | [if:$has_results] | |
| 102 | <ul class="kbb-list"> | |
| 103 | [loop:@list_rows] | |
| 104 | <li> | |
| 105 | <a href="/kb.cgi?article=$loop1.id">$loop1.title</a> | |
| 106 | <div class="meta">$loop1.view_count views[if:$loop1.category_label] · in $loop1.category_label[/if]</div> | |
| 107 | </li> | |
| 108 | [/loop] | |
| 109 | </ul> | |
| 110 | [/if] | |
| 111 | [if:!$has_results] | |
| 112 | <div class="kbb-empty">No articles here yet. Try a different category, or contact our support team for help.</div> | |
| 113 | [/if] | |
| 114 | [/if] | |
| 115 | ||
| 116 | <div class="kbb-footer-cta"> | |
| 117 | <h3>Couldn’t find what you needed?</h3> | |
| 118 | <p>Open a support ticket and our team will reply with context, not canned responses.</p> | |
| 119 | <a href="/support.cgi" class="btn btn-primary">Contact support</a> | |
| 120 | </div> | |
| 121 | </div> | |
| 122 | </div> |