@smitch/fluid
Version:
A lightweight, Tailwind-powered React/Next.js UI component library.
64 lines • 3.33 kB
JavaScript
"use client";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import { jsx as _jsx } from "react/jsx-runtime";
import { useMemo } from "react";
import { twMerge } from "tailwind-merge";
import dynamic from "next/dynamic";
var XButton = dynamic(function () { return import("./buttons/XButton"); }, { ssr: false });
var FacebookButton = dynamic(function () { return import("./buttons/FacebookButton"); }, { ssr: false });
var LinkedInButton = dynamic(function () { return import("./buttons/LinkedinButton"); }, { ssr: false });
var SlackButton = dynamic(function () { return import("./buttons/SlackButton"); }, { ssr: false });
var WhatsAppButton = dynamic(function () { return import("./buttons/WhatsappButton"); }, { ssr: false });
var RedditButton = dynamic(function () { return import("./buttons/RedditButton"); }, { ssr: false });
var PinterestButton = dynamic(function () { return import("./buttons/PinterestButton"); }, { ssr: false });
var TelegramButton = dynamic(function () { return import("./buttons/TelegramButton"); }, { ssr: false });
var EmailButton = dynamic(function () { return import("./buttons/EmailButton"); }, { ssr: false });
var BlueskyButton = dynamic(function () { return import("./buttons/BlueskyButton"); }, { ssr: false });
var buttonComponents = {
X: XButton,
Facebook: FacebookButton,
LinkedIn: LinkedInButton,
Slack: SlackButton,
WhatsApp: WhatsAppButton,
Reddit: RedditButton,
Pinterest: PinterestButton,
Telegram: TelegramButton,
Email: EmailButton,
Bluesky: BlueskyButton,
};
var gapSpacing = {
none: "gap-0",
sm: "gap-1",
md: "gap-2",
lg: "gap-3",
xl: "gap-4",
};
var layouts = {
horizontal: "flex-row",
vertical: "flex-col",
};
var SocialShare = function (_a) {
var text = _a.text, buttons = _a.buttons, _b = _a.btnShape, btnShape = _b === void 0 ? "rounded" : _b, _c = _a.size, size = _c === void 0 ? "md" : _c, _d = _a.gap, gap = _d === void 0 ? "none" : _d, _e = _a.layout, layout = _e === void 0 ? "horizontal" : _e, _f = _a.grayscale, grayscale = _f === void 0 ? false : _f, _g = _a.className, className = _g === void 0 ? "" : _g, style = _a.style;
var gapClasses = useMemo(function () { return gapSpacing[gap]; }, [gap]);
var layoutClasses = useMemo(function () { return layouts[layout]; }, [layout]);
return (_jsx("div", { className: twMerge("social-share w-fit flex flex-wrap items-center ".concat(layoutClasses, " ").concat(gapClasses, " ").concat(grayscale ? "grayscale" : ""), className), style: style, children: buttons.map(function (btn) {
var BtnComponent = buttonComponents[btn];
if (!BtnComponent)
return null;
var needsText = !["Facebook", "LinkedIn"].includes(btn);
var props = needsText ? { text: text } : {};
return _jsx(BtnComponent, __assign({ btnShape: btnShape, size: size }, props), btn);
}) }));
};
export default SocialShare;
//# sourceMappingURL=SocialShare.js.map