diff --git a/apps/web/src/components/calendar/EventCard.tsx b/apps/web/src/components/calendar/EventCard.tsx
index 3f76631..86c7909 100644
--- a/apps/web/src/components/calendar/EventCard.tsx
+++ b/apps/web/src/components/calendar/EventCard.tsx
@@ -1,3 +1,4 @@
+import React from "react";
import type { Event } from "@mosaic/shared";
import { formatTime } from "@/lib/utils/date-format";
@@ -5,7 +6,9 @@ interface EventCardProps {
event: Event;
}
-export function EventCard({ event }: EventCardProps): React.JSX.Element {
+export const EventCard = React.memo(function EventCard({
+ event,
+}: EventCardProps): React.JSX.Element {
return (
@@ -23,4 +26,4 @@ export function EventCard({ event }: EventCardProps): React.JSX.Element {
{event.location &&
📍 {event.location}
}
);
-}
+});
diff --git a/apps/web/src/components/domains/DomainItem.tsx b/apps/web/src/components/domains/DomainItem.tsx
index eb5e274..580bddf 100644
--- a/apps/web/src/components/domains/DomainItem.tsx
+++ b/apps/web/src/components/domains/DomainItem.tsx
@@ -1,5 +1,6 @@
"use client";
+import React from "react";
import type { Domain } from "@mosaic/shared";
interface DomainItemProps {
@@ -8,7 +9,11 @@ interface DomainItemProps {
onDelete?: (domain: Domain) => void;
}
-export function DomainItem({ domain, onEdit, onDelete }: DomainItemProps): React.ReactElement {
+export const DomainItem = React.memo(function DomainItem({
+ domain,
+ onEdit,
+ onDelete,
+}: DomainItemProps): React.ReactElement {
return (
@@ -52,4 +57,4 @@ export function DomainItem({ domain, onEdit, onDelete }: DomainItemProps): React
);
-}
+});
diff --git a/apps/web/src/components/federation/ConnectionCard.tsx b/apps/web/src/components/federation/ConnectionCard.tsx
index a60ccc8..75cbb1e 100644
--- a/apps/web/src/components/federation/ConnectionCard.tsx
+++ b/apps/web/src/components/federation/ConnectionCard.tsx
@@ -3,6 +3,7 @@
* Displays a single federation connection with PDA-friendly design
*/
+import React from "react";
import { FederationConnectionStatus, type ConnectionDetails } from "@/lib/api/federation";
interface ConnectionCardProps {
@@ -50,7 +51,7 @@ function getStatusDisplay(status: FederationConnectionStatus): {
}
}
-export function ConnectionCard({
+export const ConnectionCard = React.memo(function ConnectionCard({
connection,
onAccept,
onReject,
@@ -149,4 +150,4 @@ export function ConnectionCard({
)}
);
-}
+});
diff --git a/apps/web/src/components/knowledge/EntryCard.tsx b/apps/web/src/components/knowledge/EntryCard.tsx
index 036b822..884a6d8 100644
--- a/apps/web/src/components/knowledge/EntryCard.tsx
+++ b/apps/web/src/components/knowledge/EntryCard.tsx
@@ -1,4 +1,5 @@
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
+import React from "react";
import type { KnowledgeEntryWithTags } from "@mosaic/shared";
import { EntryStatus } from "@mosaic/shared";
import Link from "next/link";
@@ -32,7 +33,9 @@ const visibilityIcons = {
PUBLIC: