// === Trending Marquee + Categories + Featured Entry + Recent Entries ===
const TRENDING = [
{ cn: "显眼包", py: "xiǎnyǎn bāo", en: "the show-off" },
{ cn: "citywalk", py: "city · walk", en: "leisurely city wander" },
{ cn: "班味", py: "bān wèi", en: "office-stink" },
{ cn: "搭子", py: "dāzi", en: "activity buddy" },
{ cn: "哈基米", py: "hā jī mǐ", en: "hachimitsu / honey" },
{ cn: "鸡娃", py: "jī wá", en: "tiger-parented kid" },
{ cn: "摆烂", py: "bǎi làn", en: "let it rot" },
{ cn: "内卷", py: "nèi juǎn", en: "involution / rat race" },
{ cn: "躺平", py: "tǎng píng", en: "lying flat" },
{ cn: "emo了", py: "emo le", en: "I'm in my feels" },
{ cn: "上岸", py: "shàng àn", en: "landed it" },
{ cn: "老六", py: "lǎo liù", en: "sneaky teammate" },
];
const TrendingMarquee = () => {
return (
本周热词
Trending this week
{[...TRENDING, ...TRENDING].map((t, i) => (
))}
);
};
const CATEGORIES = [
{ kind: "internet", name: "Gen-Z & Internet Slang", cn: "网络流行语", count: "1,840 entries", ex: "yyds · 绝绝子 · 666" },
{ kind: "gaming", name: "Gaming & Esports Lingo", cn: "游戏术语", count: "612 entries", ex: "老六 · gg · 上分" },
{ kind: "work", name: "Workplace & 内卷 Culture", cn: "职场用语", count: "487 entries", ex: "内卷 · 躺平 · 班味" },
{ kind: "love", name: "Dating & Romance Slang", cn: "恋爱用语", count: "394 entries", ex: "搭子 · CP · 上头" },
{ kind: "pop", name: "Pop Culture & Memes", cn: "流行文化", count: "1,205 entries", ex: "退退退 · 哈基米" },
{ kind: "region", name: "Regional & Dialect", cn: "方言俚语", count: "728 entries", ex: "靓仔 · 巴适 · 阿拉" },
];
const Categories = () => (
02
Six worlds of slang.
六个语境 · 一本词典
From the trenches of Black Myth: Wukong streams to the group chats of Shanghai office workers —
every dialect of contemporary Mandarin, cataloged.
{CATEGORIES.map((c, i) => (
))}
);
// Scroll-triggered fill heading
const ScrollFillHead = ({ children, variant = "cinnabar" }) => {
const ref = React.useRef(null);
React.useEffect(() => {
const el = ref.current;
if (!el) return;
const target = el.querySelector("h1,h2,h3") || el;
target.classList.add(variant === "ink" ? "fill-head-ink" : "fill-head");
const obs = new IntersectionObserver((entries) => {
entries.forEach((e) => {
if (e.isIntersecting) {
target.classList.add("in");
obs.disconnect();
}
});
}, { threshold: 0.3 });
obs.observe(target);
return () => obs.disconnect();
}, [variant]);
return
{children}
;
};
const FeaturedEntry = () => (
03
每
每日一词 / Daily entry · May 24, 2026
xiǎn yǎn bāo
The show-off. The attention magnet. The friend who walks into a room and accidentally becomes the room.
LITERAL · "eye-catching bag"
#genz
#compliment
#social-media
);
const RECENT = [
{ cn: "搭子", py: "dāzi", en: "activity buddy", cat: "Gen-Z", diff: 1, stamp: "搭" },
{ cn: "班味", py: "bān wèi", en: "office-stink — the look of someone fried by work", cat: "Workplace", diff: 2, stamp: "班" },
{ cn: "city不city", py: "city bù city", en: "is it city-vibes or not?", cat: "Pop Culture", diff: 1, stamp: "城" },
{ cn: "鸡娃", py: "jī wá", en: "tiger-parented kid", cat: "Workplace", diff: 2, stamp: "鸡" },
{ cn: "哈基米", py: "hā jī mǐ", en: "honey — cute interjection from a meme song", cat: "Memes", diff: 1, stamp: "蜜" },
{ cn: "老六", py: "lǎo liù", en: "sneaky / annoying teammate", cat: "Gaming", diff: 2, stamp: "六" },
{ cn: "上头", py: "shàng tóu", en: "hooked / obsessed", cat: "Gen-Z", diff: 1, stamp: "上" },
{ cn: "退退退", py: "tuì tuì tuì", en: "begone! — from viral auntie video", cat: "Memes", diff: 2, stamp: "退" },
];
const RecentEntries = () => (
Recently added
Fresh from the feed.
8,420 total
{RECENT.map((e, i) => (
{e.stamp}
{e.cat}
{[0,1,2].map((d) => )}
))}
);
Object.assign(window, { TrendingMarquee, Categories, FeaturedEntry, RecentEntries, ScrollFillHead });