This commit is contained in:
Maze Winther
2025-07-17 17:14:29 +02:00
parent fe5b208a18
commit bb9befc626
+2 -27
View File
@@ -245,7 +245,6 @@ export default function ProjectsPage() {
isSelectionMode={isSelectionMode} isSelectionMode={isSelectionMode}
isSelected={selectedProjects.has(project.id)} isSelected={selectedProjects.has(project.id)}
onSelect={handleSelectProject} onSelect={handleSelectProject}
searchQuery={searchQuery}
/> />
))} ))}
</div> </div>
@@ -266,7 +265,6 @@ interface ProjectCardProps {
isSelectionMode?: boolean; isSelectionMode?: boolean;
isSelected?: boolean; isSelected?: boolean;
onSelect?: (projectId: string, checked: boolean) => void; onSelect?: (projectId: string, checked: boolean) => void;
searchQuery?: string;
} }
function ProjectCard({ function ProjectCard({
@@ -274,7 +272,6 @@ function ProjectCard({
isSelectionMode = false, isSelectionMode = false,
isSelected = false, isSelected = false,
onSelect, onSelect,
searchQuery,
}: ProjectCardProps) { }: ProjectCardProps) {
const [isDropdownOpen, setIsDropdownOpen] = useState(false); const [isDropdownOpen, setIsDropdownOpen] = useState(false);
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false); const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
@@ -363,7 +360,7 @@ function ProjectCard({
<CardContent className="px-0 pt-5 flex flex-col gap-1"> <CardContent className="px-0 pt-5 flex flex-col gap-1">
<div className="flex items-start justify-between"> <div className="flex items-start justify-between">
<h3 className="font-medium text-sm leading-snug group-hover:text-foreground/90 transition-colors line-clamp-2"> <h3 className="font-medium text-sm leading-snug group-hover:text-foreground/90 transition-colors line-clamp-2">
<Highlight text={project.name} query={searchQuery} /> {project.name}
</h3> </h3>
{!isSelectionMode && ( {!isSelectionMode && (
<DropdownMenu <DropdownMenu
@@ -470,7 +467,7 @@ function ProjectCard({
<CardContent className="px-0 pt-5 flex flex-col gap-1"> <CardContent className="px-0 pt-5 flex flex-col gap-1">
<div className="flex items-start justify-between"> <div className="flex items-start justify-between">
<h3 className="font-medium text-sm leading-snug group-hover:text-foreground/90 transition-colors line-clamp-2"> <h3 className="font-medium text-sm leading-snug group-hover:text-foreground/90 transition-colors line-clamp-2">
<Highlight text={project.name} query={searchQuery} /> {project.name}
</h3> </h3>
<DropdownMenu <DropdownMenu
open={isDropdownOpen} open={isDropdownOpen}
@@ -558,28 +555,6 @@ function ProjectCard({
); );
} }
function Highlight({ text, query }: { text: string; query?: string }) {
if (!query || query.trim() === "") {
return <span>{text}</span>;
}
const escapedQuery = query.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const parts = text.split(new RegExp(`(${escapedQuery})`, "gi"));
return (
<span>
{parts.map((part, i) =>
part.toLowerCase() === query.toLowerCase() ? (
<mark key={i} className="bg-yellow-200 text-black">
{part}
</mark>
) : (
part
)
)}
</span>
);
}
function CreateButton({ onClick }: { onClick?: () => void }) { function CreateButton({ onClick }: { onClick?: () => void }) {
return ( return (
<Button className="flex" onClick={onClick}> <Button className="flex" onClick={onClick}>