import { forwardRef } from 'react';

import { Link, useParams, type LinkProps } from 'react-router-dom';

import { withLangPrefix } from '@/hooks/useAppNavigate';

/**
 * 语言前缀感知的 <Link>，屏蔽 CSR / SSG 两种渲染模式的路由差异（配套 useAppNavigate）。
 *
 * 用法与 react-router 的 <Link> 一致，但 to 只传**不含语言前缀的逻辑路径**（如 'home'、'/privacy'）：
 * - SSG 模式：自动补当前语言前缀 → /<lang>/home。
 * - CSR 模式：原样 → /home。
 *
 * 仅用于内部路由。外链请直接用 <a href>。to 目前仅支持字符串形式。
 */
export const AppLink = forwardRef<HTMLAnchorElement, LinkProps & { to: string }>(
    ({ to, ...rest }, ref) => {
        const { lang } = useParams();
        return <Link ref={ref} to={withLangPrefix(to, lang)} {...rest} />;
    }
);

AppLink.displayName = 'AppLink';
