Skip to content

Commit deb0def

Browse files
committed
feat(docs): surface external-service homepage links from block metadata
- Extract `BlockMeta.url` in generate-docs and project it into integrations.json - Render an outbound 'Visit' link on generated integration doc pages via BlockInfoCard - Add a 'Visit' CTA and SoftwareApplication `sameAs` entity link on integration landing pages - Regenerate docs (icons sync, per-page BlockInfoCard props)
1 parent 1205730 commit deb0def

240 files changed

Lines changed: 4099 additions & 481 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/docs/components/icons.tsx

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3704,44 +3704,23 @@ export function QdrantIcon(props: SVGProps<SVGSVGElement>) {
37043704

37053705
export function QuartrIcon(props: SVGProps<SVGSVGElement>) {
37063706
return (
3707-
<svg {...props} viewBox='0 0 151 40' fill='none' xmlns='http://www.w3.org/2000/svg'>
3708-
<path
3709-
d='M11.5483 29.9995C11.5483 35.5222 19.8031 39.9995 26.1809 39.9995C29.574 39.9995 32.6254 38.7323 34.7384 36.7144L26.1809 29.9995H11.5483Z'
3710-
fill='currentColor'
3711-
/>
3712-
<path
3713-
d='M0 29.9996C0 35.5222 5.17047 39.9995 11.5483 39.9995V19.9998C5.17047 19.9998 0 24.4768 0 29.9996Z'
3714-
fill='currentColor'
3715-
/>
3716-
<path
3717-
d='M26.1808 9.99989V27.5075H37.7292V10.0249C37.7173 4.46985 32.552 -0.0135841 26.1808 2.98331e-05H11.4362V0.00114226C5.11012 0.0536532 0 4.50986 0 9.99989V19.9998H11.5483V9.99989H26.1808'
3718-
fill='currentColor'
3719-
/>
3720-
<path d='M28.1898 29.3275L40.7827 38.9295V29.3275H28.1898Z' fill='currentColor' />
3721-
<path
3722-
d='M88.7938 25.1089H88.7527C87.927 29.0309 85.4089 30.806 82.0238 30.806C77.0289 30.806 75.2949 27.5033 75.2949 23.3752V11.0324H78.8865V22.4671C78.8865 25.1089 80.0423 27.5033 83.5102 27.5033C86.8123 27.5033 88.7938 25.6872 88.7938 22.4671V11.0324H92.3854V30.3106H88.7938V25.1089Z'
3723-
fill='currentColor'
3724-
/>
3725-
<path
3726-
d='M107.351 23.1277V22.2193H101.613C99.1774 22.2193 97.8563 23.1277 97.8563 24.82C97.8563 26.3063 98.8062 27.7095 101.613 27.7095C105.163 27.7095 107.351 25.7697 107.351 23.1277ZM107.351 25.3982H107.31C106.443 28.948 103.842 30.7235 100.499 30.7235C96.7419 30.7235 94.3067 28.907 94.3067 25.2742C94.3067 21.8892 96.4529 19.371 101.118 19.371H107.351V18.3389C107.351 15.3254 106.196 13.6742 103.14 13.6742C100.375 13.6742 98.8473 14.9538 98.3108 18.1324L94.8843 17.6371C95.5447 13.1375 98.1869 10.6193 103.264 10.6193C108.631 10.6193 110.943 13.3438 110.943 18.2976V30.3106H107.351V25.3982'
3727-
fill='currentColor'
3728-
/>
3729-
<path
3730-
d='M112.909 30.3106V11.0324H116.5V16.9767H116.583C117.367 12.477 119.184 11.0324 122.28 11.0324H123.477V14.995H121.743C118.111 14.995 116.5 16.3988 116.5 20.1141V30.3106H112.909'
3731-
fill='currentColor'
3732-
/>
3733-
<path
3734-
d='M128.24 14.1166L125.391 15.0444V11.0205H128.24V5.69549H131.832V11.0205H137.982V15.0146L131.832 14.1166V24.0654C131.832 26.2122 132.657 27.3266 134.804 27.3266C135.836 27.3266 136.703 27.1203 137.735 26.8313L138.189 30.1339C136.868 30.5465 135.836 30.7944 134.06 30.7944C130.015 30.7944 128.24 28.1524 128.24 24.5609V14.1166'
3735-
fill='currentColor'
3736-
/>
3737-
<path
3738-
d='M140.129 30.3106V11.0324H143.72V16.9767H143.803C144.587 12.477 146.403 11.0324 149.499 11.0324H150.697V14.995H148.963C145.33 14.995 143.72 16.3988 143.72 20.1141V30.3106H140.129'
3739-
fill='currentColor'
3740-
/>
3741-
<path
3742-
d='M70.4206 19.1212C70.4206 14.0209 66.7718 10.045 61.8913 10.045C57.0108 10.045 53.0603 14.0209 53.0603 19.1212C53.0603 24.5028 56.9397 27.7175 61.8913 27.7175C66.8429 27.7175 70.4206 24.5028 70.4206 19.1212V19.1212ZM49.7827 19.1615C49.7827 11.9726 55.2655 6.67151 61.8913 6.67151C68.553 6.67151 73.6979 11.9726 73.6979 19.1615C73.6979 23.4184 71.6333 26.3923 68.9972 28.6411L72.0609 34.2237V34.304H68.4629L66.3614 30.2878C65.1145 30.7696 63.423 31.051 61.8913 31.051C55.1227 31.051 49.7827 26.3098 49.7827 19.1615'
3743-
fill='currentColor'
3744-
/>
3707+
<svg {...props} viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'>
3708+
<rect width='32' height='32' rx='6' fill='white' />
3709+
<g transform='translate(6 6.19) scale(0.16624)'>
3710+
<path
3711+
d='M34.0674 88.4993C34.0674 104.791 58.4191 117.999 77.2336 117.999C87.2434 117.999 96.2453 114.261 102.478 108.308L77.2336 88.4993H34.0674Z'
3712+
fill='black'
3713+
/>
3714+
<path
3715+
d='M0 88.4993C0 104.791 15.253 117.999 34.0677 117.999V58.9997C15.253 58.9997 0 72.2071 0 88.4993Z'
3716+
fill='black'
3717+
/>
3718+
<path
3719+
d='M77.2339 29.4999V81.1477H111.302V29.5736C111.267 13.1861 96.0292 -0.0400894 77.2339 7.20269e-05H33.737V0.00335371C15.075 0.158262 0 13.3042 0 29.4999V58.9997H34.0677V29.4999H77.2339'
3720+
fill='black'
3721+
/>
3722+
<path d='M83.1602 86.5171L120.31 114.843V86.5171H83.1602Z' fill='black' />
3723+
</g>
37453724
</svg>
37463725
)
37473726
}

apps/docs/components/ui/block-info-card.tsx

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,64 @@ interface BlockInfoCardProps {
77
type: string
88
color: string
99
icon?: React.ComponentType<{ className?: string }>
10+
/** Display name of the external service, used as the outbound link label. */
11+
name?: string
12+
/** Canonical homepage of the external service; rendered as an outbound link. */
13+
href?: string
14+
}
15+
16+
/** Strips the protocol and `www.` so the link reads as a bare domain. */
17+
function formatHostname(href: string): string {
18+
try {
19+
return new URL(href).hostname.replace(/^www\./, '')
20+
} catch {
21+
return href
22+
}
1023
}
1124

1225
export function BlockInfoCard({
1326
type,
1427
color,
1528
icon: IconComponent,
29+
name,
30+
href,
1631
}: BlockInfoCardProps): React.ReactNode {
1732
const ResolvedIcon = IconComponent || blockTypeToIconMap[type] || null
1833

1934
return (
20-
<div
21-
className='mb-6 flex items-center justify-center overflow-hidden rounded-lg p-8'
22-
style={{ background: color }}
23-
>
24-
{ResolvedIcon ? (
25-
<ResolvedIcon className='size-10 text-white' />
26-
) : (
27-
<div className='font-mono text-white text-xl opacity-70'>{type.substring(0, 2)}</div>
35+
<div className='mb-6'>
36+
<div
37+
className='flex items-center justify-center overflow-hidden rounded-lg p-8'
38+
style={{ background: color }}
39+
>
40+
{ResolvedIcon ? (
41+
<ResolvedIcon className='size-10 text-white' />
42+
) : (
43+
<div className='font-mono text-white text-xl opacity-70'>{type.substring(0, 2)}</div>
44+
)}
45+
</div>
46+
{href && (
47+
<a
48+
href={href}
49+
target='_blank'
50+
rel='noopener noreferrer'
51+
className='mt-3 inline-flex items-center gap-1.5 text-[var(--text-muted)] text-sm transition-colors hover:text-[var(--text-body)]'
52+
>
53+
{name ? `Visit ${name}` : formatHostname(href)}
54+
<svg
55+
aria-hidden='true'
56+
className='size-3 shrink-0'
57+
viewBox='0 0 24 24'
58+
fill='none'
59+
stroke='currentColor'
60+
strokeWidth={2}
61+
strokeLinecap='round'
62+
strokeLinejoin='round'
63+
>
64+
<path d='M7 17 17 7' />
65+
<path d='M7 7h10v10' />
66+
</svg>
67+
</a>
2868
)}
2969
</div>
3070
)

apps/docs/content/docs/en/integrations/agentmail.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ description: Manage email inboxes, threads, and messages with AgentMail
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
77

8-
<BlockInfoCard
8+
<BlockInfoCard
99
type="agentmail"
1010
color="#000000"
11+
name="AgentMail"
12+
href="https://agentmail.to"
1113
/>
1214

1315
{/* MANUAL-CONTENT-START:intro */}

apps/docs/content/docs/en/integrations/agentphone.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ description: Provision numbers, send SMS and iMessage, and place voice calls wit
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
77

8-
<BlockInfoCard
8+
<BlockInfoCard
99
type="agentphone"
1010
color="linear-gradient(135deg, #1a1a1a 0%, #0a2a14 100%)"
11+
name="AgentPhone"
12+
href="https://agentphone.ai"
1113
/>
1214

1315
{/* MANUAL-CONTENT-START:intro */}

apps/docs/content/docs/en/integrations/agiloft.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ description: Manage records in Agiloft CLM
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
77

8-
<BlockInfoCard
8+
<BlockInfoCard
99
type="agiloft"
1010
color="#001028"
11+
name="Agiloft"
12+
href="https://www.agiloft.com"
1113
/>
1214

1315
{/* MANUAL-CONTENT-START:intro */}

apps/docs/content/docs/en/integrations/ahrefs.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ description: SEO analysis with Ahrefs
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
77

8-
<BlockInfoCard
8+
<BlockInfoCard
99
type="ahrefs"
1010
color="#FFFFFF"
11+
name="Ahrefs"
12+
href="https://ahrefs.com"
1113
/>
1214

1315
{/* MANUAL-CONTENT-START:intro */}

apps/docs/content/docs/en/integrations/airtable.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ description: Read, create, and update Airtable
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
77

8-
<BlockInfoCard
8+
<BlockInfoCard
99
type="airtable"
1010
color="#FFFFFF"
11+
name="Airtable"
12+
href="https://www.airtable.com"
1113
/>
1214

1315
{/* MANUAL-CONTENT-START:intro */}

apps/docs/content/docs/en/integrations/airweave.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ description: Search your synced data collections
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
77

8-
<BlockInfoCard
8+
<BlockInfoCard
99
type="airweave"
1010
color="#6366F1"
11+
name="Airweave"
12+
href="https://airweave.ai"
1113
/>
1214

1315
{/* MANUAL-CONTENT-START:intro */}

apps/docs/content/docs/en/integrations/algolia.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ description: Search and manage Algolia indices
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
77

8-
<BlockInfoCard
8+
<BlockInfoCard
99
type="algolia"
1010
color="#003DFF"
11+
name="Algolia"
12+
href="https://www.algolia.com"
1113
/>
1214

1315
{/* MANUAL-CONTENT-START:intro */}

apps/docs/content/docs/en/integrations/amplitude.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ description: Track events and query analytics from Amplitude
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
77

8-
<BlockInfoCard
8+
<BlockInfoCard
99
type="amplitude"
1010
color="#1B1F3B"
11+
name="Amplitude"
12+
href="https://amplitude.com"
1113
/>
1214

1315
{/* MANUAL-CONTENT-START:intro */}

0 commit comments

Comments
 (0)