"use client"

import { AlertTriangle } from "lucide-react"
import { useTranslations } from "next-intl"

import { EmptyState } from "@/shared/components/ui/empty-state"

/**
 * 通用错误边界展示组件（P1-4 审计修复）。
 *
 * 统一 error.tsx 的渲染逻辑，避免 30+ error.tsx 重复同样的代码。
 * 各模块 error.tsx 只需调用 `<ErrorState error={error} reset={reset} namespace="xxx" />`。
 *
 * 翻译键查找规则：在传入 namespace 下查找 error.title / error.description / error.retry。
 */
export function ErrorState({
  error,
  reset,
  namespace,
}: {
  error: Error & { digest?: string }
  reset: () => void
  namespace: string
}) {
  const t = useTranslations(namespace)

  return (
    <EmptyState
      icon={AlertTriangle}
      title={t("error.title")}
      description={error.message || t("error.description")}
      action={{ label: t("error.retry"), onClick: reset }}
    />
  )
}
