From f208d4e4b8f0b9f02aa7e70d30d97bceee6e97cf Mon Sep 17 00:00:00 2001 From: -Puter <22245429+puterhimself@users.noreply.github.com> Date: Fri, 31 Jul 2026 20:52:43 +0530 Subject: [PATCH] projects layout --- .../components/projects/add-project-panel.tsx | 69 +++++ .../components/projects/context-editor.tsx | 5 +- .../components/projects/empty-projects.tsx | 15 - .../src/components/projects/project-card.tsx | 103 +++++-- .../src/components/projects/projects-grid.tsx | 65 +++++ .../components/projects/projects-header.tsx | 51 ++++ .../components/projects/provider-chips.tsx | 153 ++++++++++ .../components/projects/provider-section.tsx | 23 +- .../projects/repository-section.tsx | 15 - .../projects/repository-selector.tsx | 273 +++++++++++++++--- .../components/workspace/project-header.tsx | 30 +- .../workspace/project-settings-panel.tsx | 92 ------ apps/web/src/hooks/use-filtered-projects.ts | 25 ++ apps/web/src/hooks/use-projects-page-state.ts | 22 ++ apps/web/src/hooks/use-repository-picker.ts | 64 ++++ apps/web/src/routes/app/projects/page.tsx | 128 ++++---- packages/backend/convex/gitProvisioning.ts | 35 +++ 17 files changed, 880 insertions(+), 288 deletions(-) create mode 100644 apps/web/src/components/projects/add-project-panel.tsx delete mode 100644 apps/web/src/components/projects/empty-projects.tsx create mode 100644 apps/web/src/components/projects/projects-grid.tsx create mode 100644 apps/web/src/components/projects/projects-header.tsx create mode 100644 apps/web/src/components/projects/provider-chips.tsx delete mode 100644 apps/web/src/components/projects/repository-section.tsx delete mode 100644 apps/web/src/components/workspace/project-settings-panel.tsx create mode 100644 apps/web/src/hooks/use-filtered-projects.ts create mode 100644 apps/web/src/hooks/use-projects-page-state.ts create mode 100644 apps/web/src/hooks/use-repository-picker.ts 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 = ({