Ship the Runic Gateway emblem as the baked-in default favicon so an instance renders a tab icon with no BRAND_FAVICON set, and place a left-justified "Powered By" badge in the site footer. - brand.favicon now defaults to /assets/img/favicon.ico (was empty). BRAND_FAVICON still overrides per-instance. - Add favicon.ico + powered-by.svg under client/public/assets/img. - SiteFooter: badge pinned to the left of the centered content column (absolute on >=641px, stacked on mobile); info text stays centered. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XmHdsbnLzDMAVQkAoTQSBe
43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
import { Link } from 'react-router-dom'
|
|
import { useSite } from '../contexts/SiteContext.jsx'
|
|
|
|
export default function SiteFooter() {
|
|
const { contactEmail, siteTitle } = useSite()
|
|
return (
|
|
<footer
|
|
className="sans site-footer"
|
|
style={{
|
|
borderTop: '1px solid var(--line)',
|
|
padding: '28px 16px',
|
|
color: 'var(--muted)',
|
|
fontSize: '0.9rem',
|
|
background: 'rgba(9,13,18,0.6)',
|
|
}}
|
|
>
|
|
<div className="site-footer-inner">
|
|
<img
|
|
className="site-footer-badge"
|
|
src="/assets/img/powered-by.svg"
|
|
alt="Powered by Runic Gateway"
|
|
/>
|
|
<div className="site-footer-info">
|
|
<span>{siteTitle} is an independent private shard project.</span>
|
|
<span style={{ color: 'var(--dim)', fontSize: '0.84rem' }}>
|
|
<a href={`mailto:${contactEmail}`} style={{ color: 'var(--accent)', textDecoration: 'none' }}>
|
|
{contactEmail}
|
|
</a>
|
|
·
|
|
<Link to="/site/status" style={{ color: 'var(--accent)', textDecoration: 'none' }}>
|
|
Shard Status
|
|
</Link>
|
|
·
|
|
<Link to="/admin/login" style={{ color: '#5d6b7d', textDecoration: 'none' }}>
|
|
Admin
|
|
</Link>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
)
|
|
}
|