feat(web): add Privacy Policy and Terms of Service pages

- Create /chinh-sach-bao-mat (Privacy Policy) with 10 sections
- Create /dieu-khoan-su-dung (Terms of Service) with 11 sections
- Add legal link group to footer (vi + en i18n)
- Add legalLinks prop to Footer for bottom-bar display
- Wire links into public layout

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Ho Ngoc Hai
2026-04-24 00:50:55 +07:00
parent bafc3ddc2f
commit 579856795a
9 changed files with 588 additions and 8 deletions

View File

@@ -34,6 +34,8 @@ export interface FooterProps {
};
/** Social links. */
socials?: { platform: 'facebook' | 'instagram' | 'youtube'; href: string }[];
/** Optional legal links shown in the bottom bar (privacy policy, ToS, etc.). */
legalLinks?: { label: string; href: string }[];
/** Custom link renderer for framework-specific Link. */
renderLink: (props: {
href: string;
@@ -63,6 +65,7 @@ export function Footer({
copyright,
contact,
socials,
legalLinks,
renderLink,
}: FooterProps) {
return (
@@ -156,13 +159,27 @@ export function Footer({
{/* Bottom bar */}
<div className="border-t border-border">
<div className="mx-auto flex max-w-7xl items-center justify-between px-4 py-4">
<div className="mx-auto flex max-w-7xl flex-wrap items-center justify-between gap-2 px-4 py-4">
<p className="text-xs text-muted-foreground">{copyright}</p>
<div className="flex items-center gap-1">
<Building2 className="h-3 w-3 text-muted-foreground" />
<span className="text-xs text-muted-foreground">
S&agrave;n giao dịch bất đng sản
</span>
<div className="flex flex-wrap items-center gap-4">
{legalLinks && legalLinks.length > 0 && (
<nav aria-label="Legal links" className="flex items-center gap-3">
{legalLinks.map((link) =>
renderLink({
href: link.href,
className:
'text-xs text-muted-foreground transition-colors hover:text-primary',
children: link.label,
}),
)}
</nav>
)}
<div className="flex items-center gap-1">
<Building2 className="h-3 w-3 text-muted-foreground" />
<span className="text-xs text-muted-foreground">
S&agrave;n giao dịch bất đng sản
</span>
</div>
</div>
</div>
</div>