import React, { useState, useCallback } from "react"; import { HStack, IconButton, Text, VStack, Button, Modal, useToast, Pressable } from "native-base"; import { Image } from "../../core/images"; import Clipboard from "@react-native-clipboard/clipboard"; // Import SVG icons import FacebookIcon from "../../assets/svg/facebook.svg"; import XIcon from "../../assets/svg/x.svg"; import LinkedInIcon from "../../assets/svg/linkedin.svg"; import InstagramIcon from "../../assets/svg/instagram.svg"; import ArrowDownIcon from "../../assets/svg/arrow-down.svg"; // Import shared configuration import { SOCIALS as SHARED_SOCIALS } from "./config"; // Map shared config to React component format const SOCIALS = SHARED_SOCIALS.map(social => ({ ...social, icon: social.id === "facebook" ? FacebookIcon : social.id === "x" ? XIcon : social.id === "linkedin" ? LinkedInIcon : social.id === "instagram" ? InstagramIcon : FacebookIcon })); export interface SocialShareBarProps { message: string; url: string; className?: string; } export const SocialShareBar: React.FC = ({ message, url }) => { const [showInstagramModal, setShowInstagramModal] = useState(false); const toast = useToast(); const copyToClipboard = useCallback((text: string) => { try { Clipboard.setString(text); console.log("Message copied to clipboard!"); } catch (err) { console.error("Failed to copy to clipboard:", err); } }, []); const handleSocialClick = useCallback( (social: (typeof SOCIALS)[0]) => { if (social.name === "Instagram") { setShowInstagramModal(true); } else { void window.open(social.getUrl(message, url), "_blank", "noopener,noreferrer"); } }, [message, url] ); const handleMoreClick = useCallback(() => { setShowInstagramModal(true); }, []); const handleInstagramShare = () => { try { copyToClipboard(message); toast.show({ title: "Copied!", description: "Message copied to clipboard.", duration: 2000 }); setShowInstagramModal(false); } catch (err) { toast.show({ title: "Error", description: "Failed to copy message. Please try again.", duration: 3000 }); } }; return ( <> {/* Facebook, X, LinkedIn buttons - standalone icons without background */} {SOCIALS.slice(0, 3).map(social => ( handleSocialClick(social)} _pressed={{ opacity: 0.7 }} _icon={{ as: () => }} accessibilityLabel={`Share on ${social.name}`} /> ))} {/* More button - styled according to Figma specs */} More {/* Instagram Modal */} setShowInstagramModal(false)}> Share on Instagram Your message has been copied to clipboard. You can now paste it on Instagram! {SOCIALS.find(s => s.name === "Instagram")?.note} ); }; export default SocialShareBar;