diff --git a/app/_lib/integration-index.ts b/app/_lib/integration-index.ts index 036d7f3d9..cee33913d 100644 --- a/app/_lib/integration-index.ts +++ b/app/_lib/integration-index.ts @@ -66,7 +66,15 @@ export function resolveIndexToolkits( } seen.add(link); } - resolved.push({ ...toolkit, hasPage }); + + // "Coming soon" means there is nothing to read yet, so derive it from + // whether a page exists rather than trusting the design-system flag. That + // flag is a hand-maintained constant in a published package, so it goes + // stale the moment a toolkit ships and keeps a live toolkit looking + // unavailable. Deriving it here also keeps the badge and the sort order + // (`use-toolkit-filters`) reading the same value, which they previously + // did not. + resolved.push({ ...toolkit, hasPage, isComingSoon: !hasPage }); } return resolved; diff --git a/app/en/resources/integrations/components/toolkits-client.tsx b/app/en/resources/integrations/components/toolkits-client.tsx index 5f5b8e756..44f98a288 100644 --- a/app/en/resources/integrations/components/toolkits-client.tsx +++ b/app/en/resources/integrations/components/toolkits-client.tsx @@ -182,12 +182,10 @@ export default function ToolkitsClient({ toolkits }: ToolkitsClientProps) { icon={IconComponent} iconUrl={iconUrl} isByoc={toolkit.isBYOC} - // Doc-less toolkits have no page; render them as - // non-clickable (coming-soon) cards instead of links to - // a 404. - isComingSoon={ - toolkit.isComingSoon || toolkit.hasPage === false - } + // Resolved in `resolveIndexToolkits` from whether a page + // exists, so doc-less toolkits still render as + // non-clickable cards instead of links to a 404. + isComingSoon={toolkit.isComingSoon} isPartner={toolkit.isPartner} isPro={toolkit.isPro} key={toolkit.id}