Files
website/client/src/components/SiteFooter.jsx
Claude 352ae4f256 feat(brand): default favicon emblem + Powered By footer badge
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
2026-07-18 16:40:09 -05:00

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>
&nbsp;·&nbsp;
<Link to="/site/status" style={{ color: 'var(--accent)', textDecoration: 'none' }}>
Shard Status
</Link>
&nbsp;·&nbsp;
<Link to="/admin/login" style={{ color: '#5d6b7d', textDecoration: 'none' }}>
Admin
</Link>
</span>
</div>
</div>
</footer>
)
}