social-floating-icons
Version:
A React component for floating social media icons with customizable configuration. Perfect for portfolios, websites, and React/Next.js projects. Features hover effects, animations, and JSON-based configuration.
83 lines (78 loc) • 2.47 kB
TypeScript
import React from 'react';
import { IconType } from 'react-icons';
/**
* Configuration for a single social media link
*/
interface SocialLink {
/** Display name of the social media platform */
name: string;
/** URL to the social media profile */
link: string;
/** React icon component name from react-icons */
icon: string;
/** Tailwind CSS color classes for styling */
color: string;
/** Whether to show this icon */
want: boolean;
/** Size of the icon (optional, default: 30) */
size?: number;
}
/**
* Configuration object containing all social media links
*/
interface SocialLinksConfig {
/** Array of social media links */
socialLinks: SocialLink[];
}
/**
* Props for the FloatingIcons component
*/
interface FloatingIconsProps {
/** Configuration object for social media links */
config?: SocialLinksConfig;
/** Position of the floating icons ('left' | 'right') */
position?: 'left' | 'right';
/** Custom CSS classes for styling */
className?: string;
/** Whether to show tooltips on hover */
showTooltips?: boolean;
/** Custom spacing between icons */
spacing?: number;
/** Animation duration in milliseconds */
animationDuration?: number;
/** Z-index for the floating container */
zIndex?: number;
}
/**
* Icon mapping for react-icons
*/
interface IconMapping {
[key: string]: IconType;
}
/**
* FloatingIcons component for displaying floating social media icons
*/
declare const FloatingIcons: React.FC<FloatingIconsProps>;
/**
* Default configuration for social media links
*/
declare const defaultConfig: SocialLinksConfig;
/**
* Load configuration from a JSON file
* @param configPath - Path to the configuration JSON file
* @returns Promise<SocialLinksConfig>
*/
declare const loadConfig: (configPath: string) => Promise<SocialLinksConfig>;
/**
* Validate configuration object
* @param config - Configuration object to validate
* @returns SocialLinksConfig
*/
declare const validateConfig: (config: any) => SocialLinksConfig;
/**
* Create a configuration object from individual parameters
* @param socialLinks - Array of social media links
* @returns SocialLinksConfig
*/
declare const createConfig: (socialLinks: any[]) => SocialLinksConfig;
export { FloatingIcons, FloatingIconsProps, IconMapping, SocialLink, SocialLinksConfig, createConfig, FloatingIcons as default, defaultConfig, loadConfig, validateConfig };