mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
cleanup
This commit is contained in:
@@ -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}>
|
||||||
|
|||||||
Reference in New Issue
Block a user