mirror of
https://github.com/linsa-io/linsa.git
synced 2026-04-18 14:39:55 +02:00
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import type { Editor } from '@tiptap/react'
|
|
import { useState } from 'react'
|
|
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'
|
|
import type { VariantProps } from 'class-variance-authority'
|
|
import type { toggleVariants } from '@/components/ui/toggle'
|
|
|
|
interface ImageEditDialogProps extends VariantProps<typeof toggleVariants> {
|
|
editor: Editor
|
|
}
|
|
|
|
const ImageEditDialog = ({ editor, size, variant }: ImageEditDialogProps) => {
|
|
const [open, setOpen] = 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 }
|