@violetprotocol/nudge-components
Version:
Components for Nudge's websites and applications.
49 lines (48 loc) • 2.58 kB
JavaScript
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 }));
};