"use client"; import { StoredContent } from "@/server/db/schema"; import { Plus, MoreHorizontal, ArrowUpRight, Edit3, Trash2, } from "lucide-react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "./ui/dropdown-menu"; import { useState, useEffect, useRef } from "react"; export default function Sidebar() { const websties: StoredContent[] = [ { id: 1, content: "", title: "Visual Studio Code", url: "https://code.visualstudio.com", description: "", image: "https://code.visualstudio.com/favicon.ico", baseUrl: "https://code.visualstudio.com", savedAt: new Date(), }, { id: 1, content: "", title: "yxshv/vscode: An unofficial remake of vscode's landing page", url: "https://github.com/yxshv/vscode", description: "", image: "https://github.com/favicon.ico", baseUrl: "https://github.com", savedAt: new Date(), }, ]; return ( ); } export const ListItem: React.FC<{ item: StoredContent }> = ({ item }) => { const [isEditing, setIsEditing] = useState(false); const editInputRef = useRef(null); useEffect(() => { if (isEditing) { setTimeout(() => { editInputRef.current?.focus(); }, 500); } }, [isEditing]); return (
isEditing && e.preventDefault()} className="flex w-[90%] items-center gap-2 focus:outline-none" > {isEditing ? ( ) : ( <> {item.title )} {isEditing ? ( setIsEditing(false)} onKeyDown={(e) => e.key === "Escape" && setIsEditing(false)} /> ) : ( {item.title ?? "Untitled website"} )} window.open(item.url)}> Open { setIsEditing(true); }} > Edit Delete
); };