+
onSearchChange(e.target.value)}
+ className='w-full p-2 mb-4 border rounded-lg'
+ />
+
+ {items.map((item) => (
+ onSelectItem(item.uuid)}
+ />
+ ))}
+
+ {items.length === 0 && (
+
+
+ No evaluations or templates found
+
+
+ )}
+
+ )
+}
diff --git a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/dashboard/connect/_components/ConnectEvaluationModal/index.tsx b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/dashboard/connect/_components/ConnectEvaluationModal/index.tsx
new file mode 100644
index 000000000..578290f68
--- /dev/null
+++ b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/dashboard/connect/_components/ConnectEvaluationModal/index.tsx
@@ -0,0 +1,177 @@
+'use client'
+
+import { useCallback, useMemo, useState } from 'react'
+import { xorBy } from 'lodash-es'
+
+import {
+ EvaluationDto,
+ EvaluationTemplateCategory,
+} from '@latitude-data/core/browser'
+import {
+ Button,
+ CloseTrigger,
+ Icon,
+ Modal,
+ TableWithHeader,
+ Text,
+} from '@latitude-data/web-ui'
+import { connectEvaluationsAction } from '$/actions/evaluations/connect'
+import useLatitudeAction from '$/hooks/useLatitudeAction'
+import { useNavigate } from '$/hooks/useNavigate'
+import { ROUTES } from '$/services/routes'
+import useEvaluations from '$/stores/evaluations'
+import useEvaluationTemplates from '$/stores/evaluationTemplates'
+import Link from 'next/link'
+
+import EvaluationEditor from './Editor'
+import EvaluationList from './List'
+
+type SelectableItem = {
+ uuid: string
+ name: string
+ description: string
+ type: 'evaluation' | 'template'
+ data: EvaluationDto | EvaluationTemplateCategory
+}
+
+export default function ConnectionEvaluationModal({
+ projectId,
+ commitUuid,
+ documentUuid,
+}: {
+ projectId: string
+ commitUuid: string
+ documentUuid: string
+}) {
+ const [selectedItem, setSelectedItem] = useState