diff --git a/apps/web/src/components/projects/add-project-panel.tsx b/apps/web/src/components/projects/add-project-panel.tsx new file mode 100644 index 0000000..6a3efa8 --- /dev/null +++ b/apps/web/src/components/projects/add-project-panel.tsx @@ -0,0 +1,69 @@ +import { X } from "lucide-react"; +import { useEffect, useRef } from "react"; +import { createPortal } from "react-dom"; + +import { ProviderChips } from "./provider-chips"; +import type { GitProviderAccountOption } from "./provider-chips"; +import { RepositorySelector } from "./repository-selector"; + +export const AddProjectPanel = ({ + accounts, + existingSourceUrls, + onClose, + onProjectCreated, +}: { + readonly accounts: readonly GitProviderAccountOption[] | undefined; + readonly existingSourceUrls: readonly string[]; + readonly onClose: () => void; + readonly onProjectCreated: (projectId: string) => void; +}) => { + const dialogRef = useRef(null); + + useEffect(() => { + const dialog = dialogRef.current; + dialog?.showModal(); + + return () => dialog?.close(); + }, []); + + return createPortal( + { + event.preventDefault(); + onClose(); + }} + ref={dialogRef} + > +
+
+

+ Add project +

+ +
+ +
+ + + +
+
+
, + document.body + ); +}; diff --git a/apps/web/src/components/projects/context-editor.tsx b/apps/web/src/components/projects/context-editor.tsx index 839e9c0..95a9a04 100644 --- a/apps/web/src/components/projects/context-editor.tsx +++ b/apps/web/src/components/projects/context-editor.tsx @@ -16,6 +16,7 @@ export const ContextEditor = ({ const updateInstructions = useMutation(api.projects.updateInstructions); const [draft, setDraft] = useState(); const [saving, setSaving] = useState(false); + const textareaId = `context-textarea-${projectId}`; const currentDraft = draft ?? instructions ?? ""; const dirty = draft !== undefined && draft !== (instructions ?? ""); @@ -40,13 +41,13 @@ export const ContextEditor = ({