mirror of
https://github.com/linsa-io/linsa.git
synced 2026-03-31 22:23:28 +02:00
51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
import * as React from "react"
|
|
import type { Editor } from "@tiptap/react"
|
|
import type { VariantProps } from "class-variance-authority"
|
|
import type { toggleVariants } from "@/components/ui/toggle"
|
|
import { ImageIcon } from "@radix-ui/react-icons"
|
|
import { ToolbarButton } from "../toolbar-button"
|
|
import {
|
|
Dialog,
|
|
DialogContent,
|
|
DialogHeader,
|
|
DialogDescription,
|
|
DialogTitle,
|
|
DialogTrigger,
|
|
} from "@/components/ui/dialog"
|
|
import { ImageEditBlock } from "./image-edit-block"
|
|
|
|
interface ImageEditDialogProps extends VariantProps<typeof toggleVariants> {
|
|
editor: Editor
|
|
}
|
|
|
|
const ImageEditDialog = ({ editor, size, variant }: ImageEditDialogProps) => {
|
|
const [open, setOpen] = React.useState(false)
|
|
|
|
return (
|
|
<Dialog open={open} onOpenChange={setOpen}>
|
|
<DialogTrigger asChild>
|
|
<ToolbarButton
|
|
isActive={editor.isActive("image")}
|
|
tooltip="Image"
|
|
aria-label="Image"
|
|
size={size}
|
|
variant={variant}
|
|
>
|
|
<ImageIcon className="size-5" />
|
|
</ToolbarButton>
|
|
</DialogTrigger>
|
|
<DialogContent className="sm:max-w-lg">
|
|
<DialogHeader>
|
|
<DialogTitle>Select image</DialogTitle>
|
|
<DialogDescription className="sr-only">
|
|
Upload an image from your computer
|
|
</DialogDescription>
|
|
</DialogHeader>
|
|
<ImageEditBlock editor={editor} close={() => setOpen(false)} />
|
|
</DialogContent>
|
|
</Dialog>
|
|
)
|
|
}
|
|
|
|
export { ImageEditDialog }
|