refactor: remove react-markdown dependency and enhance document editing logic

- Removed the react-markdown dependency from package.json and pnpm-lock.yaml.
- Introduced a constant for editable document types in RowActions component to streamline edit functionality.
- Updated RowActions to conditionally render edit options based on document type, improving user experience.
This commit is contained in:
DESKTOP-RTLN3BA\$punk 2026-01-06 03:09:49 -08:00
parent 74f6811b48
commit 929bc026e6
4 changed files with 38 additions and 32 deletions

View file

@ -25,6 +25,9 @@ import {
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import type { Document } from "./types";
// Only FILE and NOTE document types can be edited
const EDITABLE_DOCUMENT_TYPES = ["FILE", "NOTE"] as const;
export function RowActions({
document,
deleteDocument,
@ -41,6 +44,10 @@ export function RowActions({
const [isDeleting, setIsDeleting] = useState(false);
const router = useRouter();
const isEditable = EDITABLE_DOCUMENT_TYPES.includes(
document.document_type as (typeof EDITABLE_DOCUMENT_TYPES)[number]
);
const handleDelete = async () => {
setIsDeleting(true);
try {
@ -65,28 +72,30 @@ export function RowActions({
<div className="flex items-center justify-end gap-1">
{/* Desktop Actions */}
<div className="hidden md:flex items-center gap-1">
<Tooltip>
<TooltipTrigger asChild>
<motion.div
whileHover={{ scale: 1.1 }}
whileTap={{ scale: 0.95 }}
transition={{ type: "spring", stiffness: 400, damping: 17 }}
>
<Button
variant="ghost"
size="icon"
className="h-8 w-8 text-muted-foreground hover:text-foreground hover:bg-muted/80"
onClick={handleEdit}
{isEditable && (
<Tooltip>
<TooltipTrigger asChild>
<motion.div
whileHover={{ scale: 1.1 }}
whileTap={{ scale: 0.95 }}
transition={{ type: "spring", stiffness: 400, damping: 17 }}
>
<Pencil className="h-4 w-4" />
<span className="sr-only">Edit Document</span>
</Button>
</motion.div>
</TooltipTrigger>
<TooltipContent side="top">
<p>Edit Document</p>
</TooltipContent>
</Tooltip>
<Button
variant="ghost"
size="icon"
className="h-8 w-8 text-muted-foreground hover:text-foreground hover:bg-muted/80"
onClick={handleEdit}
>
<Pencil className="h-4 w-4" />
<span className="sr-only">Edit Document</span>
</Button>
</motion.div>
</TooltipTrigger>
<TooltipContent side="top">
<p>Edit Document</p>
</TooltipContent>
</Tooltip>
)}
<Tooltip>
<TooltipTrigger asChild>
@ -146,10 +155,12 @@ export function RowActions({
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" className="w-40">
<DropdownMenuItem onClick={handleEdit}>
<Pencil className="mr-2 h-4 w-4" />
<span>Edit</span>
</DropdownMenuItem>
{isEditable && (
<DropdownMenuItem onClick={handleEdit}>
<Pencil className="mr-2 h-4 w-4" />
<span>Edit</span>
</DropdownMenuItem>
)}
<DropdownMenuItem onClick={() => setIsMetadataOpen(true)}>
<FileText className="mr-2 h-4 w-4" />
<span>Metadata</span>

View file

@ -1,6 +1,5 @@
import Image from "next/image";
import type { Components } from "react-markdown";
import { Streamdown } from "streamdown";
import { type StreamdownProps, Streamdown } from "streamdown";
import { cn } from "@/lib/utils";
interface MarkdownViewerProps {
@ -9,7 +8,7 @@ interface MarkdownViewerProps {
}
export function MarkdownViewer({ content, className }: MarkdownViewerProps) {
const components: Components = {
const components: StreamdownProps["components"] = {
// Define custom components for markdown elements
p: ({ children, ...props }) => (
<p className="my-2" {...props}>

View file

@ -89,7 +89,6 @@
"react-dropzone": "^14.3.8",
"react-hook-form": "^7.61.1",
"react-json-view-lite": "^2.4.1",
"react-markdown": "^10.1.0",
"react-syntax-highlighter": "^15.6.1",
"react-wrap-balancer": "^1.1.1",
"rehype-raw": "^7.0.0",

View file

@ -212,9 +212,6 @@ importers:
react-json-view-lite:
specifier: ^2.4.1
version: 2.5.0(react@19.2.3)
react-markdown:
specifier: ^10.1.0
version: 10.1.0(@types/react@19.2.7)(react@19.2.3)
react-syntax-highlighter:
specifier: ^15.6.1
version: 15.6.6(react@19.2.3)