@@ -4,7 +4,12 @@ import { appConfig } from "@/config";
44
55import axios from "axios" ;
66import { toast } from "@pheralb/toast" ;
7- import { CloudDownloadIcon , DownloadIcon , LoaderIcon } from "lucide-react" ;
7+ import {
8+ CloudDownloadIcon ,
9+ EllipsisIcon ,
10+ LoaderIcon ,
11+ XIcon ,
12+ } from "lucide-react" ;
813import {
914 DropdownMenu ,
1015 DropdownMenuContent ,
@@ -18,6 +23,7 @@ import { React } from "@/ui/icons/react";
1823
1924import { clipboard } from "@/utils" ;
2025import { downloadFile , tsxToSvg } from "@/utils/svgExport" ;
26+ import { Tooltip , TooltipContent , TooltipTrigger } from "@/ui/tooltip" ;
2127
2228interface DownloadSVGProps {
2329 itemName : string ;
@@ -30,6 +36,7 @@ const SvgExportOptions = ({
3036 iconSize,
3137 ItemIcon,
3238} : DownloadSVGProps ) => {
39+ const [ isOpen , setOpen ] = useState < boolean > ( false ) ;
3340 const [ isLoading , setLoading ] = useState < boolean > ( false ) ;
3441
3542 const handleDownloadAsSvg = async ( ) => {
@@ -125,21 +132,30 @@ const SvgExportOptions = ({
125132 } ;
126133
127134 return (
128- < DropdownMenu >
129- < DropdownMenuTrigger
130- title = "Export options"
131- disabled = { isLoading }
132- className = { buttonVariants ( {
133- variant : "ghost" ,
134- size : "icon" ,
135- } ) }
136- >
137- { isLoading ? (
138- < LoaderIcon size = { iconSize } className = "animate-spin" />
139- ) : (
140- < DownloadIcon size = { iconSize } />
141- ) }
142- </ DropdownMenuTrigger >
135+ < DropdownMenu open = { isOpen } onOpenChange = { setOpen } >
136+ < Tooltip >
137+ < TooltipTrigger asChild >
138+ < DropdownMenuTrigger
139+ title = "More options"
140+ disabled = { isLoading }
141+ className = { buttonVariants ( {
142+ variant : "ghost" ,
143+ size : "icon" ,
144+ } ) }
145+ >
146+ { isLoading ? (
147+ < LoaderIcon size = { iconSize } className = "animate-spin" />
148+ ) : isOpen ? (
149+ < XIcon size = { iconSize } />
150+ ) : (
151+ < EllipsisIcon size = { iconSize } />
152+ ) }
153+ </ DropdownMenuTrigger >
154+ </ TooltipTrigger >
155+ < TooltipContent side = "bottom" sideOffset = { 4 } >
156+ < p > More options</ p >
157+ </ TooltipContent >
158+ </ Tooltip >
143159 < DropdownMenuContent sideOffset = { 3 } >
144160 < DropdownMenuItem onClick = { handleCopyReactComponent } >
145161 < React width = { 16 } height = { 16 } />
0 commit comments