From 28bfefeff471668ab61dbf7828e930ad15f11ff0 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sat, 17 Jan 2026 15:18:57 +0000 Subject: [PATCH] Edited Spark --- src/components/SnippetCard.tsx | 400 ++++++++++++++++----------------- 1 file changed, 200 insertions(+), 200 deletions(-) diff --git a/src/components/SnippetCard.tsx b/src/components/SnippetCard.tsx index d70875c..f86268e 100644 --- a/src/components/SnippetCard.tsx +++ b/src/components/SnippetCard.tsx @@ -1,200 +1,200 @@ -import { useState, useMemo } from 'react' -import { Button } from '@/components/ui/button' -import { Card } from '@/components/ui/card' -import { Badge } from '@/components/ui/badge' -import { Copy, Pencil, Trash, Check, ArrowsOut } from '@phosphor-icons/react' -import { Snippet, LANGUAGE_COLORS } from '@/lib/types' -import { cn } from '@/lib/utils' - -interface SnippetCardProps { - snippet: Snippet - onEdit: (snippet: Snippet) => void - onDelete: (id: string) => void - onCopy: (code: string) => void - onView: (snippet: Snippet) => void -} - -export function SnippetCard({ snippet, onEdit, onDelete, onCopy, onView }: SnippetCardProps) { - const [isCopied, setIsCopied] = useState(false) - const [hasRenderError, setHasRenderError] = useState(false) - - const safeSnippet = useMemo(() => { - try { - const title = snippet?.title || 'Untitled Snippet' - const description = snippet?.description || '' - const code = snippet?.code || '' - const language = snippet?.language || 'Other' - const isTruncated = code.length > 200 - - return { - title, - description, - code: isTruncated ? code.slice(0, 200) + '...' : code, - fullCode: code, - language, - isTruncated, - hasPreview: snippet?.hasPreview ?? false, - } - } catch { - setHasRenderError(true) - return { - title: 'Error Loading Snippet', - description: '', - code: '', - fullCode: '', - language: 'Other', - isTruncated: false, - hasPreview: false, - } - } - }, [snippet]) - - const handleCopy = (e: React.MouseEvent) => { - e.stopPropagation() - onCopy(safeSnippet.fullCode) - setIsCopied(true) - setTimeout(() => setIsCopied(false), 2000) - } - - const handleEdit = (e: React.MouseEvent) => { - e.stopPropagation() - onEdit(snippet) - } - - const handleDelete = (e: React.MouseEvent) => { - e.stopPropagation() - onDelete(snippet.id) - } - - if (hasRenderError) { - return ( - -
-

Error Loading Snippet

-
-

- This snippet could not be loaded properly. -

- -
- ) - } - - return ( - onView(snippet)} - > -
-
-
-

- {safeSnippet.title} -

- {safeSnippet.description && ( -

- {safeSnippet.description} -

- )} -
-
- -
- {safeSnippet.hasPreview && ( - - Preview - - )} - - {safeSnippet.language} - -
- -
e.stopPropagation()} - onKeyDown={(e) => { - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault() - } - }} - > - - {safeSnippet.code} - - {safeSnippet.isTruncated && ( - - )} -
- -
- - {new Date(snippet.createdAt).toLocaleDateString()} - -
- - - -
-
-
-
- ) -} +import { useState, useMemo } from 'react' +import { Card } from '@/components/ui/card' +import { Card } from '@/components/ui/card' +import { Badge } from '@/components/ui/badge' +import { cn } from '@/lib/utils' +interface SnippetCardProps { + onEdit: (snippet: Snippet) => + +} +export function Sn + const [hasRenderError, setHasRende + const safeSnippet = useMemo(() + const title = snippet?.tit + const code = snippet?.code || + + + description, + fullCode: code, + isTruncated, + + setHasRenderError(true) + t + code: '', + language: 'Other', + hasPreview: false, + } + + + setIsCopie + } + const handleEdit = + onEdit(snippet) + + e.stopPropaga + } + if (hasRenderError) { + < +

+ } + return ( + className={cn( + + +
+ + + + + + className="rel + + + e.prevent + }} + + + variant="ghost" + + aria-label="Delete snip + +
+ + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +