+
+
+
Gist
+
+ Save and manage code snippets with syntax highlighting.
+
+
+
+
+
+
+
+
+ setSearch(e.target.value)}
+ />
+
+ {selectedInView.length > 0 && (
+
+ )}
+
+
+ {filtered.length === 0 ? (
+
+ {gists.length === 0 ? (
+ <>
+
No gists yet
+
Click "New Gist" to create your first snippet.
+ >
+ ) : (
+ <>
+
No results
+
Try a different search term.
+ >
+ )}
+
+ ) : (
+
+
+
+
+ {filtered.length} snippet{filtered.length !== 1 ? "s" : ""}
+
+
+ {filtered.map((gist) => (
+
handleDelete([id])}
+ onCopy={handleCopy}
+ />
+ ))}
+
+ )}
+
+ {/* Create / Edit dialog */}
+
+
+ {/* Delete confirmation dialog */}
+
+
+ )
+}
+
+type GistCardProps = {
+ gist: Gist
+ selected: boolean
+ onSelect: (id: string) => void
+ onEdit: (gist: Gist) => void
+ onDelete: (id: string) => void
+ onCopy: (content: string) => void
+}
+
+function GistCard({ gist, selected, onSelect, onEdit, onDelete, onCopy }: GistCardProps) {
+ const [expanded, setExpanded] = useState(false)
+ const displayTitle = gist.title || "Untitled"
+
+ return (
+