Gankit12's picture
Res2
fc91a5e
Raw
History Blame Contribute Delete
2.68 kB
/**
* Footer - Application footer with links and branding.
*
* Responsive layout: stacks vertically on mobile,
* side-by-side on desktop.
*/
import { useMemo } from "react";
import { Link } from "react-router-dom";
import { useTranslation } from "react-i18next";
import PropTypes from "prop-types";
import { ROUTES, APP_NAME } from "@utils/constants";
function Footer({ className = "" }) {
const { t } = useTranslation();
const year = new Date().getFullYear();
const FOOTER_LINKS = useMemo(() => [
{ label: t("nav.diseaseDetection"), path: ROUTES.DISEASE_DETECTION },
{ label: t("nav.weather"), path: ROUTES.WEATHER },
{ label: t("nav.apmcPrice"), path: ROUTES.APMC },
], [t]);
return (
<footer
className={`border-t border-neutral-200 bg-white ${className}`}
role="contentinfo"
>
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-8">
<div className="flex flex-col md:flex-row md:items-center md:justify-between gap-6">
{/* Branding */}
<div>
<Link
to={ROUTES.HOME}
className="inline-flex items-center gap-2 focus:outline-none focus:ring-2 focus:ring-primary-500 rounded-lg"
>
<span className="inline-flex items-center justify-center h-7 w-7 rounded-lg bg-primary-600 text-white font-display font-bold text-xs">
FH
</span>
<span className="text-base font-display font-bold text-primary-700">
{APP_NAME}
</span>
</Link>
<p className="mt-2 text-sm text-neutral-500 max-w-xs">
{t("home.tagline")}
</p>
</div>
{/* Links */}
<nav aria-label="Footer navigation">
<ul className="flex flex-wrap gap-x-6 gap-y-2">
{FOOTER_LINKS.map((link) => (
<li key={link.path}>
<Link
to={link.path}
className="text-sm text-neutral-600 hover:text-primary-700 transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500 rounded"
>
{link.label}
</Link>
</li>
))}
</ul>
</nav>
</div>
{/* Copyright */}
<div className="mt-6 border-t border-neutral-100 pt-4">
<p className="text-xs text-neutral-400 text-center md:text-left">
{year} {t("footer.copyright")} {t("footer.madeWith")}
</p>
</div>
</div>
</footer>
);
}
Footer.propTypes = {
className: PropTypes.string,
};
export default Footer;