Blocks
Integration Hub
A hub-and-spoke diagram that draws paths to partner logos, then sends dots along the lines.
A ready-made integrations block. The center hub pops in, paths draw out to six logos, then a dot travels each line. GSAP-driven (MotionPathPlugin).
One hub for every integration
Connect Notion, Zoom, Stripe, and the rest of your stack without leaving your product.
Installation
pnpm dlx shadcn@latest add @tween-ui/integration-hubUsage
app/page.tsx
import IntegrationHub from '@/components/tweenui/integration/integration-hub';
export default function Page() {
return <IntegrationHub />;
}Pass your own logos:
app/page.tsx
import IntegrationHub from '@/components/tweenui/integration/integration-hub';
export default function Page() {
return (
<IntegrationHub
left={[
{ src: '/logos/slack.svg', alt: 'Slack' },
{ src: '/logos/github.svg', alt: 'GitHub' },
{ src: '/logos/figma.svg', alt: 'Figma' },
]}
right={[
{ src: '/logos/linear.svg', alt: 'Linear' },
{ src: '/logos/notion.svg', srcDark: '/logos/notion-dark.svg', alt: 'Notion' },
{ src: '/logos/zoom.svg', alt: 'Zoom' },
]}
/>
);
}Props
| Prop | Type | Default | Description |
|---|---|---|---|
title | ReactNode | sample heading | Section heading. |
description | string | sample line | Supporting line under the heading. |
left | { src, srcDark?, alt }[] | Telegram, Google, Notion | Three logos on the left. |
right | { src, srcDark?, alt }[] | Reddit, Stripe, Zoom | Three logos on the right. |
Extends native <section> attributes (className, style, …).
Accessibility
Each logo keeps its alt text. Paths and traveling dots are decorative
(aria-hidden). Under prefers-reduced-motion: reduce the hub and logos land
in place with no path draw or looping dots.