feat(web): sidebar maintainer attribution — mirror landing-page footer style

Add "Built and maintained by Shankar" to the sidebar bottom, with
"Shankar" linking to LinkedIn (same href + rel="me noopener" the
certctl.io landing-page footer uses).

Typography matches the landing page:
  • font-mono (same family as the existing "certctl" label row)
  • text-2xs muted (text-sidebar-text/70) for the prefix
  • slightly brighter for the linked name (text-sidebar-text/90)
  • underline-offset-2 + hover:underline for the link affordance

Lives directly above the existing certctl / logout footer row, so the
sidebar bottom now reads:

  Built and maintained by Shankar
  certctl                                [Logout]

Single-maintainer OSS standard (Cal.com, Plausible, Beekeeper Studio
all credit + link their maintainer the same way). Persistent slot for
operators using certctl to find the maintainer in one click —
complements the landing-page footer link instead of duplicating it.

Verification:
  • npx tsc --noEmit — exits 0
  • Layout.test.tsx — 7/7 green (no test regression from the new row)
This commit is contained in:
shankar0123
2026-05-14 16:17:48 +00:00
parent 9ce2d8ca8f
commit 868f1c25be
+22 -1
View File
@@ -283,7 +283,28 @@ export default function Layout() {
</button>
</div>
<div className="px-5 py-3 border-t border-white/10 flex items-center justify-between">
{/* Maintainer attribution row — mirrors the landing-page footer
(certctl.io: "Built and maintained by Shankar · certctl.io").
Same font-mono / muted-text typography; only "Shankar" carries
the LinkedIn link (the same href + rel="me noopener" pattern
the landing page uses). Single-maintainer OSS standard
(Cal.com, Plausible, Beekeeper Studio do the same). */}
<div className="px-5 pt-3 pb-1 border-t border-white/10">
<span className="text-2xs text-sidebar-text/70 font-mono">
Built and maintained by{' '}
<a
href="https://www.linkedin.com/in/shankar-k-a1b6853ba"
target="_blank"
rel="me noopener noreferrer"
className="text-sidebar-text/90 hover:text-white transition-colors underline-offset-2 hover:underline"
title="Shankar on LinkedIn — opens in a new tab"
>
Shankar
</a>
</span>
</div>
<div className="px-5 pt-1 pb-3 flex items-center justify-between">
<span className="text-2xs text-brand-300/60 font-mono">certctl</span>
{authRequired && (
<button