4 changed files with 153 additions and 152 deletions
@ -0,0 +1,142 @@
@@ -0,0 +1,142 @@
|
||||
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: ` |
||||
<div class="social-list flex"> |
||||
<span v-if="this.platforms.length" class="follow-label">Follow me: </span> |
||||
<user-social-icon |
||||
v-for="(item, index) in this.platforms" |
||||
v-if="item.platform && item.handle" |
||||
v-bind:key="index" |
||||
v-bind:platform="item.platform" |
||||
v-bind:username="item.handle" |
||||
/> |
||||
</div> |
||||
`,
|
||||
|
||||
}); |
||||
|
||||
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: ` |
||||
<a |
||||
v-bind:class="itemClass" |
||||
target="_blank" |
||||
:href="link" |
||||
> |
||||
<span class="platform-icon rounded-lg" :style="style" /> |
||||
<span v-bind:class="labelClass">Find @{{username}} on {{platform}}</span> |
||||
</a> |
||||
`,
|
||||
}); |
Loading…
Reference in new issue