1
0

integrations.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { Check, X } from "lucide-react";
  2. interface AgentIntegrationsProps {
  3. integrations: {
  4. brain?: string;
  5. virtuals?: string;
  6. eacc?: string;
  7. uos?: string;
  8. };
  9. }
  10. const INTEGRATION_INFO = [
  11. { key: "brain", name: "Amica Brain" },
  12. { key: "virtuals", name: "Virtuals" },
  13. { key: "eacc", name: "EACC Marketplace" },
  14. { key: "uos", name: "UOS" },
  15. ] as const;
  16. export function Integrations({ integrations }: AgentIntegrationsProps) {
  17. return (
  18. <div className="bg-white p-6 rounded-lg border border-gray-200 shadow-sm">
  19. <h2 className="text-2xl font-orbitron mb-6 text-gray-800">Integrations</h2>
  20. <div className="grid grid-cols-2 gap-4">
  21. {INTEGRATION_INFO.map(({ key, name }) => {
  22. const isActive = !!integrations[key];
  23. return (
  24. <div
  25. key={key}
  26. className={`p-4 rounded-lg border ${
  27. isActive ? "border-green-500 bg-green-50" : "border-gray-300 bg-gray-50"
  28. }`}
  29. >
  30. <div className="flex items-center justify-between">
  31. <span className="font-roboto-mono text-sm">{name}</span>
  32. {isActive ? (
  33. <Check className="text-green-500" size={20} />
  34. ) : (
  35. <X className="text-gray-400" size={20} />
  36. )}
  37. </div>
  38. </div>
  39. );
  40. })}
  41. </div>
  42. </div>
  43. );
  44. }