fleet-memory/hindsight-docs/src/components/SupportedGrids.tsx
Nicolò Boschi 80b1badf74
feat(docs): Integrations Hub + unified page hero (#620)
* fix(security): address all Dependabot vulnerability alerts

Python (uv.lock, pyproject.toml):
- authlib 1.6.6 → 1.6.9 (JWS header injection, OIDC hash binding, Bleichenbacher padding oracle)
- pyasn1 0.6.2 → 0.6.3 (unbounded recursion DoS)
- pyjwt 2.10.1 → 2.12.1 (unknown crit header extensions - also in integration-tests and crewai)
- orjson 3.11.4 → 3.11.7 (deeply nested JSON recursion DoS)
- tornado 6.5.2 → 6.5.5 (multipart DoS, incomplete cookie validation)

npm (package.json, package-lock.json):
- next ^16.1.6 → ^16.1.7 (HTTP smuggling, CSRF bypass, cache DoS, null origin bypass)
- fast-xml-parser override updated to >=5.5.6 (numeric entity expansion bypass)
- undici override added >=7.24.0 (WebSocket overflow, smuggling, CRLF injection, DoS)
- flatted override added >=3.4.0 (unbounded recursion DoS)
- svgo override added >=3.3.3 (DOCTYPE entity expansion DoS)
- dompurify override added >=3.3.2 (XSS vulnerability)

* feat(docs): add Integrations Hub and unified page hero

- Add /integrations page with search, type filter, and card grid
- Integrations defined in a single JSON file (src/data/integrations.json)
  supporting official and community entries with icon, author, and link
- Scrolling integrations banner moved from global navbar to /integrations only
- Remove IntegrationsGrid component; replace all usages with link to hub
- Add PageHero component with full-bleed gradient background, shared across
  Cookbook, FAQ, Best Practices, Changelog, and Blog index pages
- Remove FAQ from top navbar (already in Resources dropdown)
- Move integration changelogs table to bottom of changelog page
2026-03-19 20:29:55 +01:00

44 lines
1.6 KiB
TypeScript

import React from 'react';
import type {IconType} from 'react-icons';
import {IconGrid} from './IconGrid';
import {SiPython, SiGo, SiOpenai, SiAnthropic, SiGooglegemini, SiOllama} from 'react-icons/si';
import {LuTerminal, LuPlug, LuZap, LuBrainCog, LuSparkles, LuGlobe} from 'react-icons/lu';
const OpenAICompatibleIcon: IconType = ({size = 28, ...props}) => (
<span style={{position: 'relative', display: 'inline-flex'}}>
<SiOpenai size={size} {...props} />
<span style={{
position: 'absolute', bottom: -3, right: -6,
fontSize: Math.round((size as number) * 0.5), fontWeight: 900, lineHeight: 1,
color: 'currentColor',
}}>+</span>
</span>
);
export function ClientsGrid() {
return (
<IconGrid items={[
{ label: 'Python', icon: SiPython, href: '/sdks/python' },
{ label: 'TypeScript', imgSrc: '/img/icons/typescript.png', href: '/sdks/nodejs' },
{ label: 'Go', icon: SiGo, href: '/sdks/go' },
{ label: 'CLI', icon: LuTerminal, href: '/sdks/cli' },
{ label: 'HTTP', icon: LuGlobe, href: '/developer/api/quickstart' },
]} />
);
}
export function LLMProvidersGrid() {
return (
<IconGrid items={[
{ label: 'OpenAI', icon: SiOpenai },
{ label: 'Anthropic', icon: SiAnthropic },
{ label: 'Google Gemini', icon: SiGooglegemini },
{ label: 'Groq', icon: LuZap },
{ label: 'Ollama', icon: SiOllama },
{ label: 'LM Studio', icon: LuBrainCog },
{ label: 'MiniMax', icon: LuSparkles },
{ label: 'OpenAI Compatible', icon: OpenAICompatibleIcon },
]} />
);
}