- {/* Top bar: filters + add button */}
+ {/* Top bar: search + filters + add buttons */}
-
-
- {PROJECT_STATES.map((state) => {
- const count = counts[state] || 0
- if (count === 0) return null
- const cfg = stateConfig[state]
- return (
-
- )
- })}
+
+
+
+ setSearchQuery(e.target.value)}
+ className="pl-8 h-8 text-sm"
+ />
+
+
+
+ {PROJECT_STATES.map((state) => {
+ const count = counts[state] || 0
+ if (count === 0) return null
+ const cfg = stateConfig[state]
+ return (
+
+ )
+ })}
+
-
-
+ {/* Search results count */}
+ {searchQuery.trim() && (
+
+ Showing {filtered.length} of {projectStates.length} projects matching "{searchQuery}"
+
+ )}
+
{/* Bulk actions bar */}
{selectedIds.size > 0 && (
@@ -316,7 +359,12 @@ export function ProjectStatesTable({ competitionId, roundId }: ProjectStatesTabl
/>
-
{ps.project?.title || 'Unknown'}
+
+ {ps.project?.title || 'Unknown'}
+
{ps.project?.teamName}
@@ -341,6 +389,13 @@ export function ProjectStatesTable({ competitionId, roundId }: ProjectStatesTabl
+
+
+
+ View Project
+
+
+
{PROJECT_STATES.filter((s) => s !== ps.state).map((state) => {
const sCfg = stateConfig[state]
return (
@@ -368,8 +423,25 @@ export function ProjectStatesTable({ competitionId, roundId }: ProjectStatesTabl
)
})}
+
+ {filtered.length === 0 && searchQuery.trim() && (
+
+ No projects match "{searchQuery}"
+
+ )}