CookieConsent 组件
Cookie 同意横幅组件,用于获取用户对使用 Cookie 的同意。
功能概述
- 同意管理: 接受或拒绝 Cookie
- 二次确认: 拒绝时需要二次确认
- 本地存储: 使用 localStorage 保存用户选择
- 页面刷新: 接受后自动刷新页面以启用分析
导出内容
CookieConsentBanner
主组件,显示 Cookie 同意横幅。
getCookieConsent
工具函数,获取当前 Cookie 同意状态。
type CookieConsent = "accepted" | "rejected" | null;
function getCookieConsent(): CookieConsent;
本地存储键
const COOKIE_CONSENT_KEY = "cookie-consent";
用户流程
- 首次访问: 显示横幅
- 点击接受: 保存 "accepted",刷新页面
- 点击拒绝: 显示二次确认
- 确认拒绝: 保存 "rejected"
- 取消拒绝: 返回初始状态
依赖
next-intl- 国际化@/components/ui/button- 按钮组件lucide-react- Cookie 图标
使用示例
import { CookieConsentBanner, getCookieConsent } from "@/components/layout/cookie-consent";
// 显示横幅
<CookieConsentBanner />
// 获取同意状态
const consent = getCookieConsent();
if (consent === "accepted") {
// 启用分析
}
翻译键
{
"cookies": {
"message": "我们使用 Cookie 来改善您的体验。",
"confirmMessage": "确定要拒绝吗?部分功能可能无法正常使用。",
"accept": "接受",
"reject": "拒绝",
"confirmReject": "确认拒绝",
"nevermind": "算了"
}
}
样式说明
- 固定在底部 (
fixed bottom-0) - 高 z-index (
z-50) - 毛玻璃背景效果
- 全宽显示