changelog-ticker.php

main 48 lines · 3.4 KB Raw
Alex Alex Commit Initial commit 01/10/2026 09:20
1<?php
2$znxClogH = static fn($v): string => htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8');
3?>
4
5<style>
6.znx-clog{--clog-surface:var(--box-inner-bg,var(--box-bg,var(--nz-panel,var(--wc-bg-2,var(--z-panel-2,var(--s-panel,var(--primary,rgb(30,33,40))))))));--clog-surface-2:color-mix(in srgb,var(--clog-surface) 82%,#000);--clog-text:var(--font-color,var(--text,var(--nz-text,var(--wc-text,var(--z-text,var(--s-text,rgb(155,162,177)))))));--clog-muted:color-mix(in srgb,var(--clog-text) 58%,transparent);--clog-border:var(--border,var(--box-inner-border,var(--box-border,var(--nz-border-soft,var(--wc-line,var(--z-border,var(--s-border2,rgb(19,20,23))))))));--clog-accent:var(--accent,var(--link,var(--nz-accent,#d1a233)));--clog-radius:6px;margin:0 0 18px;color:var(--clog-text)}
7.znx-clog *{box-sizing:border-box}
8.znx-clog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border:1px solid var(--clog-border);border-radius:var(--clog-radius) var(--clog-radius) 0 0;background:var(--clog-surface);font-weight:800;color:var(--clog-accent)}
9.znx-clog__head a{color:var(--clog-accent);font-weight:700;font-size:12.5px}
10.znx-clog__body{border:1px solid var(--clog-border);border-top:0;border-radius:0 0 var(--clog-radius) var(--clog-radius);background:var(--clog-surface-2);overflow:hidden}
11.znx-clog__empty{padding:16px;text-align:center;color:var(--clog-muted)}
12.znx-clog-row{border-top:1px solid var(--clog-border)}
13.znx-clog-row:first-child{border-top:0}
14.znx-clog-row__summary{display:flex;align-items:baseline;gap:10px;padding:9px 14px;cursor:pointer;list-style:none}
15.znx-clog-row__summary::-webkit-details-marker{display:none}
16.znx-clog-row__summary:hover{background:color-mix(in srgb,var(--clog-accent) 8%,transparent)}
17.znx-clog-row__time{flex:0 0 auto;font-size:12px;color:var(--clog-muted);white-space:nowrap}
18.znx-clog-row__preview{flex:1 1 auto;min-width:0;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
19.znx-clog-row[open] .znx-clog-row__preview{display:none}
20.znx-clog-row__toggle{flex:0 0 auto;margin-left:auto;width:16px;height:16px;border-radius:4px;border:1px solid var(--clog-accent);color:var(--clog-accent);font-size:12px;line-height:14px;text-align:center;font-weight:800}
21.znx-clog-row__toggle::before{content:"+"}
22.znx-clog-row[open] .znx-clog-row__toggle::before{content:"\2212"}
23.znx-clog-row__full{padding:0 14px 12px;color:var(--clog-text);font-size:13px;line-height:1.5}
24</style>
25
26<div class="znx-clog">
27 <div class="znx-clog__head">
28 <span><?= $znxClogH(t('news.changelog_ticker')) ?></span>
29 <a href="changelog.php"><?= $znxClogH(t('news.changelog_full')) ?></a>
30 </div>
31 <div class="znx-clog__body">
32 <?php if (!empty($changelogs) && $changelogs !== false): ?>
33 <?php for ($i = 0; $i < count($changelogs) && $i < 5; $i++): ?>
34 <details class="znx-clog-row">
35 <summary class="znx-clog-row__summary">
36 <span class="znx-clog-row__time"><?= $znxClogH(getClock($changelogs[$i]['time'] ?? 0, true, true)) ?></span>
37 <span class="znx-clog-row__preview"><?= $changelogs[$i]['text'] ?? '' ?></span>
38 <span class="znx-clog-row__toggle" aria-hidden="true"></span>
39 </summary>
40 <div class="znx-clog-row__full"><?= $changelogs[$i]['text'] ?? '' ?></div>
41 </details>
42 <?php endfor; ?>
43 <?php else: ?>
44 <div class="znx-clog__empty"><?= $znxClogH(t('news.no_changelogs')) ?></div>
45 <?php endif; ?>
46 </div>
47</div>
48
Top