- sentry.client.ts: add stopSentryClient() that awaits Sentry.close() so the SDK tears down when a user logs out. Hub methods become no-ops until initSentryClient() is called again on next login. - root.tsx: call stopSentryClient() from the user-effect when user === null. - Add sentry-config to journal + planner Dockerfiles (was missing after #237 introduced the new workspace package, breaking the Dockerfile package check). - Footer: replace inner <nav> with <div> — nested nav landmarks broke the journal "nav bar shows on all pages" e2e test (two navigation roles on the page). - e2e auth: tick the required ToS checkbox in the shared registerUser helper so passkey registration tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { useTranslation } from "react-i18next";
|
|
|
|
export function Footer() {
|
|
const { t } = useTranslation("journal");
|
|
return (
|
|
<footer className="mt-16 border-t border-gray-200 bg-white">
|
|
<div className="mx-auto max-w-7xl px-4 py-6 text-sm text-gray-500">
|
|
<div className="flex flex-wrap items-center gap-x-6 gap-y-2">
|
|
<a href="/legal/imprint" className="hover:text-gray-700">
|
|
{t("footer.imprint")}
|
|
</a>
|
|
<a href="/legal/privacy" className="hover:text-gray-700">
|
|
{t("footer.privacy")}
|
|
</a>
|
|
<a href="/legal/terms" className="hover:text-gray-700">
|
|
{t("footer.terms")}
|
|
</a>
|
|
<a
|
|
href="https://github.com/trails-cool/trails"
|
|
className="hover:text-gray-700"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
{t("footer.source")}
|
|
</a>
|
|
<span className="ml-auto text-xs text-gray-400">
|
|
{t("footer.alpha")}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
);
|
|
}
|