core/apps/webapp/app/components/integrations/integration-grid.tsx
Harshith Mullapudi 714399cf41
Feat: OAuth support for external apps (#22)
* Feat: OAuth support for external apps

* Fix: OAuth screen

---------

Co-authored-by: Manoj K <saimanoj58@gmail.com>
2025-07-19 16:44:15 +05:30

49 lines
1.2 KiB
TypeScript

import React, { useMemo } from "react";
import { Layout, LayoutGrid, Search } from "lucide-react";
import { IntegrationCard } from "./integration-card";
interface IntegrationGridProps {
integrations: Array<{
id: string;
name: string;
description?: string;
icon: string;
slug?: string;
spec: any;
}>;
activeAccountIds: Set<string>;
showDetail?: boolean;
}
export function IntegrationGrid({
integrations,
activeAccountIds,
}: IntegrationGridProps) {
const hasActiveAccount = (integrationDefinitionId: string) =>
activeAccountIds.has(integrationDefinitionId);
if (integrations.length === 0) {
return (
<div className="mt-20 flex flex-col items-center justify-center">
<LayoutGrid className="text-muted-foreground mb-2 h-10 w-10" />
<h3 className="text-lg">No integrations found</h3>
</div>
);
}
return (
<div className="grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5">
{integrations.map((integration) => {
const isConnected = hasActiveAccount(integration.id);
return (
<IntegrationCard
integration={integration}
isConnected={isConnected}
/>
);
})}
</div>
);
}