UNPKG

@violetprotocol/nudge-components

Version:

Components for Nudge's websites and applications.

49 lines (48 loc) 2.58 kB
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime"; import { IconButton } from "@material-tailwind/react"; import { useMemo } from "react"; import { SocialIconVariant } from "./types"; import { DiscordIcon } from "./socialIcons/Discord"; import { TelegramIcon } from "./socialIcons/Telegram"; import { XIcon } from "./socialIcons/X"; import { LinkLargeIcon } from "./socialIcons/LinkLarge"; import { DiscordLargeIcon } from "./socialIcons/DiscordLarge"; import { TelegramLargeIcon } from "./socialIcons/TelegramLarge"; import { FarcasterLargeIcon } from "./socialIcons/FarcasterLarge"; import { XLargeIcon } from "./socialIcons/XLarge"; import { YoutubeIcon } from "./socialIcons/Youtube"; import { ShopifyIcon } from "./socialIcons/Shopify"; import { MailIcon } from "./socialIcons/Mail"; export const DEFAULT_ICON_COLOR = "#C4C5D5"; export const DEFAULT_LARGE_ICON_COLOR = "white"; export const SocialIcon = ({ variant, iconColor, className, ...props }) => { const social = useMemo(() => { switch (variant) { case SocialIconVariant.DISCORD: return _jsx(DiscordIcon, { color: iconColor }); case SocialIconVariant.TELEGRAM: return _jsx(TelegramIcon, { color: iconColor }); case SocialIconVariant.X: return _jsx(XIcon, { color: iconColor }); case SocialIconVariant.DISCORD_LG: return _jsx(DiscordLargeIcon, { color: iconColor }); case SocialIconVariant.TELEGRAM_LG: return _jsx(TelegramLargeIcon, { color: iconColor }); case SocialIconVariant.FARCASTER_LG: return _jsx(FarcasterLargeIcon, { color: iconColor }); case SocialIconVariant.X_LG: return _jsx(XLargeIcon, { color: iconColor }); case SocialIconVariant.LINK_LG: return _jsx(LinkLargeIcon, { color: iconColor }); case SocialIconVariant.YOUTUBE: return _jsx(YoutubeIcon, { color: iconColor }); case SocialIconVariant.SHOPIFY: return _jsx(ShopifyIcon, { color: iconColor }); case SocialIconVariant.MAIL: return _jsx(MailIcon, { color: iconColor }); default: return null; } }, [variant, iconColor]); return (_jsx(_Fragment, { children: Object.values(SocialIconVariant).includes(variant) ? (_jsx(IconButton, { className: `rounded-full bg-whiteSmoke bg-opacity-8 ${className ? className : ""}`, ...props, children: social })) : null })); };