diff --git a/web/src/components/form/Social.astro b/web/src/components/form/Social.astro new file mode 100644 index 0000000..aac541a --- /dev/null +++ b/web/src/components/form/Social.astro @@ -0,0 +1,125 @@ +--- + +import Icon from '@components/form/FontAwesome.svelte'; +import { site, title as defaultTitle, description as defaultDescription } from '@utils/config'; + +interface Props { + url?: string; + title?: string; + description?: string; +} + +const url = Astro.props.url || site; +const title = Astro.props.title || defaultTitle; +const description = Astro.props.description || defaultDescription; + +const encodedUrl = encodeURIComponent(url); +const encodedTitle = encodeURIComponent(title); +const encodedDescription = encodeURIComponent(description); + +const socialMedias = { + mastodon: { + url: `https://mastodon.social/share?text=${encodeURIComponent(`${title} ${description}`)}&url=${encodedUrl}`, + title: 'Mastodon', + icon: 'mastodon', + color: '#6364FF', + }, + twitter: { + url: `https://twitter.com/intent/tweet?text=${encodeURIComponent(`${title} ${description}`)}&url=${url}`, + title: 'Twitter', + icon: 'twitter', + color: '#444343' + }, + reddit: { + url: `https://reddit.com/submit?url=${encodedUrl}&title=${encodedTitle}`, + title: 'Reddit', + icon: 'reddit', + color: '#FF4500', + }, + linkedIn: { + url: `https://www.linkedin.com/shareArticle?mini=true&url=${encodedUrl}&title=${encodedTitle}&summary=${encodedDescription}`, + title: 'LinkedIn', + icon: 'linkedin', + color: '#0A66C2' + }, + pinterest: { + url: `https://pinterest.com/pin/create/button/?url=${encodedUrl}&description=${encodedTitle}`, + title: 'Pinterest', + icon: 'pinterest', + color: '#BD081C', + }, + telegram: { + url: `https://t.me/share/url?url=${encodedUrl}&text=${encodeURIComponent(`${title} ${description}`)}`, + title: 'Telegram', + icon: 'telegram', + color: '#26A5E4', + }, + whatsapp: { + url: `https://wa.me/?text=${encodedTitle} ${encodedUrl}`, + title: 'WhatsApp', + icon: 'whatsapp', + color: '#25D366', + }, + signal: { + url: `https://signal.me/#p/+${encodedUrl}`, + title: 'Signal', + icon: 'signal', + color: '#3A76F0', + }, + pocket: { + url: `https://getpocket.com/save?url=${encodedUrl}&title=${encodedTitle}`, + title: 'Pocket', + icon: 'pocket', + color: '#EF3F56', + }, +}; + +--- + +
+ + +