import { useEffect, useRef, useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { Icons } from "@/components/svg/icons"; import { IconItem } from "@/types/editor"; import { Input } from "@/components/input"; import { useResults, useSingleSearch, } from "@/components/search/hooks/useSearch"; import { ListItem } from "@/components/editor-icons/comps/list/list-item"; import { Empty } from "@/components/empty"; import { ArrowLeftIcon } from "@heroicons/react/solid"; import { ArrowRightIcon } from "@heroicons/react/solid"; import { useClickAway } from "react-use"; import classNames from "classnames"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faTrash } from "@fortawesome/free-solid-svg-icons"; export const IconPicker = ({ icon, onSelect, children, }: { onSelect: (i?: string) => void; icon?: string; children?: React.ReactNode; }) => { const [open, setOpen] = useState(false); const svgRef = useRef(null); const container = useRef(null); const intl = useIntl(); const [viewBox, setViewBox] = useState("0 0 24 24"); const [search, setSearch] = useState(""); useSingleSearch(search); const { results, page, maxPage, totalItems, setPage } = useResults(21); const findIcon = Icons?.find((i: IconItem) => icon === i.name); const IconComponent = findIcon?.component as any; useEffect(() => { return setViewBox( svgRef?.current?.getAttribute("viewBox") ?? "0 0 200 200" ); }, [icon]); useClickAway(container, () => setOpen(false)); return (
setOpen(!open)} >
{results?.map((result: any, key: number) => ( { // if (icon?.isPremium && !user?.id) return setOpen(true); // onSelect(icon); onSelect(icon.name); }} /> ))} {results?.length === 0 && ( { // if (!user?.id) return login(); // send to api a request; }} button="Ask for a new Icon" /> )}
{results?.length > 0 && (

page, maxPage: () => maxPage, }} />

)}
); };