Files
wehub-resource-sync 979fb22d7c
CI / test (20, macos-latest) (push) Has been cancelled
CI / test (20, ubuntu-latest) (push) Has been cancelled
CI / test (22, macos-latest) (push) Has been cancelled
CI / test (22, ubuntu-latest) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:01:18 +08:00

124 lines
3.8 KiB
TypeScript

import Image from "next/image";
import styles from "./FeaturedIn.module.css";
interface Feature {
name: string;
sub: string;
href: string;
logo: string;
logoAlt: string;
// When the source has its own brand-mark image (e.g. Trendshift's
// badge endpoint that bakes the repo's star count into the image),
// render it full-width instead of the logo-left text-right layout.
badge?: boolean;
}
const ITEMS: Feature[] = [
{
name: "AlphaSignal",
sub: "180K technical subscribers",
href: "https://alphasignalai.substack.com/p/how-agentmemory-works-and-how-to",
logo: "https://avatars.githubusercontent.com/u/64016073?s=200&v=4",
logoAlt: "AlphaSignal logo",
},
{
name: "Agentic AI Foundation",
sub: "Linux Foundation backed",
href: "https://aaif.io/",
logo: "/featured/aaif-logo.png",
logoAlt: "Agentic AI Foundation logo",
badge: true,
},
{
name: "Trendshift",
sub: "Position #19 · NEW 2026",
href: "https://trendshift.io/repositories/25123",
logo: "https://trendshift.io/api/badge/repositories/25123",
logoAlt: "Trendshift badge for agentmemory",
badge: true,
},
{
name: "Product Hunt",
sub: "Live upvote count",
href: "https://www.producthunt.com/products/agent-memory-dev?embed=true&utm_source=badge-featured&utm_medium=badge&utm_campaign=badge-agentmemory",
logo: "https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1144164&theme=neutral",
logoAlt: "Featured on Product Hunt — live upvote count",
badge: true,
},
];
interface FeaturedInProps {
// When true, render the bar without the outer `<section>` chrome
// (no border, no own padding) so it can be inlined inside the
// hero below the CTA stack.
compact?: boolean;
}
export function FeaturedIn({ compact = false }: FeaturedInProps = {}) {
const wrapClass = compact ? `${styles.wrap} ${styles.wrapCompact}` : styles.wrap;
return (
<section
className={wrapClass}
aria-labelledby="featured-in-title"
>
<div className={styles.inner}>
<div id="featured-in-title" className={styles.eyebrow}>
AS FEATURED IN
</div>
<div className={styles.row}>
{ITEMS.map((it) =>
it.badge ? (
<a
key={it.name}
className={`${styles.cell} ${styles.cellBadge}`}
href={it.href}
target="_blank"
rel="noopener"
aria-label={`${it.name}${it.sub}`}
>
<Image
src={it.logo}
alt={it.logoAlt}
width={250}
height={55}
unoptimized
className={
it.logo.startsWith("/featured/aaif")
? `${styles.badgeImg} ${styles.invertLogo}`
: styles.badgeImg
}
/>
<span className={styles.sub}>{it.sub}</span>
</a>
) : (
<a
key={it.name}
className={styles.cell}
href={it.href}
target="_blank"
rel="noopener"
>
<Image
src={it.logo}
alt={it.logoAlt}
width={56}
height={56}
unoptimized
className={styles.logo}
/>
<div className={styles.meta}>
<span className={styles.name}>{it.name}</span>
<span className={styles.sub}>{it.sub}</span>
</div>
<span className={styles.arrow} aria-hidden>
</span>
</a>
),
)}
</div>
</div>
</section>
);
}