+ {/* Header */}
+
+
+
+ Expand Project: {projectName}
+
+
+ {featuresCreated > 0 && (
+
+
+ {featuresCreated} added
+
+ )}
+
+
+
+ {isComplete && (
+
+
+ Complete
+
+ )}
+
+
+
+
+
+ {/* Error banner */}
+ {error && (
+
+
+
{error}
+
+
+ )}
+
+ {/* Messages area */}
+
+ {messages.length === 0 && !isLoading && (
+
+
+
+ Starting Project Expansion
+
+
+ Connecting to Claude to help you add new features to your project...
+
+ {connectionStatus === 'error' && (
+
+ )}
+
+
+ )}
+
+ {messages.map((message) => (
+
+ ))}
+
+ {/* Typing indicator */}
+ {isLoading &&
}
+
+ {/* Scroll anchor */}
+
+
+
+ {/* Input area */}
+ {!isComplete && (
+
+ {/* Attachment previews */}
+ {pendingAttachments.length > 0 && (
+
+ {pendingAttachments.map((attachment) => (
+
+

+
+
+ {attachment.filename.length > 10
+ ? `${attachment.filename.substring(0, 7)}...`
+ : attachment.filename}
+
+
+ ))}
+
+ )}
+
+
+
+ {/* Help text */}
+
+ Press Enter to send. Drag & drop or click to attach images.
+
+
+ )}
+
+ {/* Completion footer */}
+ {isComplete && (
+
+
+
+
+
+ Added {featuresCreated} new feature{featuresCreated !== 1 ? 's' : ''}!
+
+
+
+
+
+ )}
+
+ )
+}
diff --git a/ui/src/components/ExpandProjectModal.tsx b/ui/src/components/ExpandProjectModal.tsx
new file mode 100644
index 0000000..af0d196
--- /dev/null
+++ b/ui/src/components/ExpandProjectModal.tsx
@@ -0,0 +1,41 @@
+/**
+ * Expand Project Modal
+ *
+ * Full-screen modal wrapper for the ExpandProjectChat component.
+ * Allows users to add multiple features to an existing project via AI.
+ */
+
+import { ExpandProjectChat } from './ExpandProjectChat'
+
+interface ExpandProjectModalProps {
+ isOpen: boolean
+ projectName: string
+ onClose: () => void
+ onFeaturesAdded: () => void // Called to refresh feature list
+}
+
+export function ExpandProjectModal({
+ isOpen,
+ projectName,
+ onClose,
+ onFeaturesAdded,
+}: ExpandProjectModalProps) {
+ if (!isOpen) return null
+
+ const handleComplete = (featuresAdded: number) => {
+ if (featuresAdded > 0) {
+ onFeaturesAdded()
+ }
+ onClose()
+ }
+
+ return (
+