76 lines
2.5 KiB
TypeScript
76 lines
2.5 KiB
TypeScript
import { H5SectionHeading } from "@/components/home/h5-cards";
|
|
import type { AdvertiseInfo, AdvitiseData } from "@/lib/api/types";
|
|
|
|
import { adHref, pickFriendAds } from "./ads/pick";
|
|
|
|
/** PC 友情链接:对接 advitise.friendList,无数据不渲染 */
|
|
export function FriendLinks({
|
|
items,
|
|
advitise,
|
|
}: {
|
|
items?: AdvertiseInfo[] | null;
|
|
advitise?: AdvitiseData | null;
|
|
}) {
|
|
const apiList = pickFriendAds(items, advitise);
|
|
if (!apiList.length) return null;
|
|
|
|
// 不用 design-unscaled:嵌套 zoom 会在 Chrome 把热区错位叠到上方分页上
|
|
return (
|
|
<section data-component="friend-links" id="links" className="border-t border-white/10 pt-1">
|
|
<h2 className="text-2xl leading-8 font-semibold text-white/90">友情链接</h2>
|
|
<div className="mt-[18px] flex flex-wrap gap-3">
|
|
{apiList.map((item, index) => {
|
|
const href = adHref(item.link, "#links");
|
|
const external = Boolean(item.link?.trim());
|
|
return (
|
|
<a
|
|
key={item.id || `${item.title}-${index}`}
|
|
href={href}
|
|
target={external ? "_blank" : undefined}
|
|
rel={external ? "sponsored nofollow noopener noreferrer" : undefined}
|
|
className="inline-flex min-w-[146px] items-center justify-center rounded-md bg-white/5 px-2 py-[9px] text-base leading-[22px] text-white/55"
|
|
>
|
|
{item.title}
|
|
</a>
|
|
);
|
|
})}
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|
|
|
|
/** H5 友情链接:对接 advitise.friendList,无数据不渲染 */
|
|
export function H5FriendLinks({
|
|
items,
|
|
advitise,
|
|
}: {
|
|
items?: AdvertiseInfo[] | null;
|
|
advitise?: AdvitiseData | null;
|
|
}) {
|
|
const apiList = pickFriendAds(items, advitise);
|
|
if (!apiList.length) return null;
|
|
|
|
return (
|
|
<section id="h5-links" className="flex flex-col gap-3">
|
|
<H5SectionHeading title="友情链接" more={false} />
|
|
<div className="flex flex-wrap gap-[18px]">
|
|
{apiList.map((item, index) => {
|
|
const href = adHref(item.link, "#h5-links");
|
|
const external = Boolean(item.link?.trim());
|
|
return (
|
|
<a
|
|
key={item.id || `${item.title}-${index}`}
|
|
href={href}
|
|
target={external ? "_blank" : undefined}
|
|
rel={external ? "sponsored nofollow noopener noreferrer" : undefined}
|
|
className="rounded-md border border-white/5 bg-white/10 px-3 py-[9px] text-xs leading-[18px] text-white/90"
|
|
>
|
|
{item.title}
|
|
</a>
|
|
);
|
|
})}
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|