const SOCIAL_PLATFORMS_URLS = { default: { name: "default", urlPrefix: "", imgPos: [0,0], // [row,col] }, facebook: { name: "Facebook", urlPrefix: "http://www.facebook.com/", imgPos: [0,1], }, twitter: { name: "Twitter", urlPrefix: "http://www.twitter.com/", imgPos: [0,2], }, instagram: { name: "Instagram", urlPrefix: "http://www.instagram.com/", imgPos: [0,3], }, instagram: { name: "Snapchat", urlPrefix: "http://www.snapchat.com/", imgPos: [0,4], }, tiktok: { name: "TikTok", urlPrefix: "http://www.tiktok.com/", imgPos: [0,5], }, soundcloud: { name: "Soundcloud", urlPrefix: "http://www.soundcloud.com/", imgPos: [0,6], }, basecamp: { name: "Base Camp", urlPrefix: "http://www.basecamp.com/", imgPos: [0,7], }, patreon: { name: "Patreon", urlPrefix: "http://www.patreon.com/", imgPos: [0,1], }, youtube: { name: "YouTube", urlPrefix: "http://www.youtube.com/", imgPos: [0,9 ], }, spotify: { name: "Spotify", urlPrefix: "http://www.spotify.com/", imgPos: [0,10], }, twitch: { name: "Twitch", urlPrefix: "http://www.twitch.com/", imgPos: [0,11], }, paypal: { name: "Paypal", urlPrefix: "http://www.paypal.com/", imgPos: [0,12], }, github: { name: "Github", urlPrefix: "http://www.github.com/", imgPos: [0,13], }, linkedin: { name: "LinkedIn", urlPrefix: "http://www.linkedin.com/", imgPos: [0,14], }, discord: { name: "Discord", urlPrefix: "http://www.discord.com/", imgPos: [0,15], }, mastadon: { name: "Mastadon", urlPrefix: "http://www.mastadon.com/", imgPos: [0,16], }, }; Vue.component('social-list', { props: ['platforms'], template: `
`, }); Vue.component('user-social-icon', { props: ['platform', 'username'], data: function() { const platformInfo = SOCIAL_PLATFORMS_URLS[this.platform.toLowerCase()] || SOCIAL_PLATFORMS_URLS["default"]; const imgRow = platformInfo.imgPos && platformInfo.imgPos[0] || 0; const imgCol = platformInfo.imgPos && platformInfo.imgPos[1] || 0; const useDefault = platformInfo.name === "default"; return { name: platformInfo.name, link: platformInfo.name !== "default" ? `${platformInfo.urlPrefix}/${this.username}` : '#', style: `--imgRow: -${imgRow}; --imgCol: -${imgCol};`, itemClass: { "user-social-item": true, "flex": true, "rounded": useDefault, "use-default": useDefault, }, labelClass: { "platform-label": true, "visually-hidden": !useDefault, "text-indigo-800": true, }, }; }, template: ` Find @{{username}} on {{platform}} `, });