Editor
deso-ui/editorFreeBlock
A rich text editor for creating posts with support for images, video, emojis, and markdown.
Install it
npx shadcn@latest add https://ui.deso.com/r/editor.jsonSource
1'use client';23import React, { useState } from 'react';4import { Textarea } from '../ui/textarea';5import { Button } from '../ui/button';6import { cn } from '@/lib/utils/deso';7import { Profile } from '@/lib/schemas/deso';8import { EditorUpload, UploadedFile, UploadType } from './editor-upload';9import { PostImage } from './post-image';10import {11 Image,12 Video,13 Mic,14 Lock,15 LucideGlobe,16 LucideLock,17 Smile,18} from 'lucide-react';19import { Input } from '../ui/input';20import { Label } from '../ui/label';21import { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';22import {23 Select,24 SelectContent,25 SelectItem,26 SelectTrigger,27 SelectValue,28} from '../ui/select';29import { EditorEmojiPicker } from './editor-emoji-picker';30import { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';31import { UserInfo } from './user-info';32import { ProfilePicture } from './profile-picture';33import { EditorMarkdown } from './editor-markdown';3435const EditorVisibility = ({36 isExclusive,37 onVisibilityChange,38}: {39 isExclusive: boolean;40 onVisibilityChange: (value: string) => void;41}) => (42 <Select43 defaultValue={isExclusive ? 'exclusive' : 'public'}44 onValueChange={onVisibilityChange}45 >46 <SelectTrigger>47 <SelectValue />48 </SelectTrigger>49 <SelectContent className="border border-border">50 <SelectItem value="public">51 <LucideGlobe className="w-4 h-4" /> Post to Everyone52 </SelectItem>53 <SelectItem value="exclusive">54 <LucideLock className="w-4 h-4" /> Post to Subscribers55 </SelectItem>56 </SelectContent>57 </Select>58);5960const EditorActions = ({61 showImageUpload,62 showVideoUpload,63 showAudioUpload,64 showExclusiveContent,65 showEmojiPicker,66 onUploadClick,67 onExclusiveClick,68 onEmojiClick,69}: {70 showImageUpload: boolean;71 showVideoUpload: boolean;72 showAudioUpload: boolean;73 showExclusiveContent: boolean;74 showEmojiPicker: boolean;75 onUploadClick: (type: UploadType) => void;76 onExclusiveClick: () => void;77 onEmojiClick: (emoji: string) => void;78}) => {79 const [isEmojiPickerOpen, setEmojiPickerOpen] = useState(false);8081 const handleEmojiSelect = (emoji: string) => {82 onEmojiClick(emoji);83 setEmojiPickerOpen(false);84 };8586 const uploadButton = (87 handleClick: () => void,88 tooltipText: string,89 icon: React.ReactNode90 ) => (91 <Tooltip>92 <TooltipTrigger asChild>93 <Button94 size="icon"95 onClick={handleClick}96// … truncated
What it pulls in
Other registry items
Files it writes
More from deso-ui
All 47 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Action Menuaction-menu | deso-ui | Blocks | Free | no deps | |
| Confirmation Dialogconfirmation-dialog | deso-ui | Blocks | Free | no deps | |
| Copy Buttoncopy-button | deso-ui | Blocks | Free | no deps | |
| Editor Emoji Pickereditor-emoji-picker | deso-ui | Blocks | Free | no deps | |
| Editor Markdowneditor-markdown | deso-ui | Blocks | Free | no deps | |
| Editor Uploadeditor-upload | deso-ui | Blocks | Free | no deps | |
| Feed Listfeed-list | deso-ui | Blocks | Free | no deps | |
| Follow Buttonfollow-button | deso-ui | Blocks | Free | no deps |
