diff --git a/src/data/sections/experience.ts b/src/data/sections/experience.ts index 9e5f224..6c49b18 100644 --- a/src/data/sections/experience.ts +++ b/src/data/sections/experience.ts @@ -1,6 +1,6 @@ import type { ExperienceSection } from '@/types/experience-section'; -import getSocial from '../socials'; +import { facebook, github, instagram, linkedin, twitter, website } from '../socials'; const experienceData: ExperienceSection = { config: { @@ -53,7 +53,7 @@ const experienceData: ExperienceSection = { url: 'https://firebase.google.com/', }, ], - socials: [getSocial('facebook', '#'), getSocial('linkedin', '#')], + socials: [facebook('#'), linkedin('#')], }, { role: 'React.js developer', @@ -92,7 +92,7 @@ const experienceData: ExperienceSection = { url: 'https://eslint.org/', }, ], - socials: [getSocial('website', '#'), getSocial('instagram', '#')], + socials: [website('#'), instagram('#')], }, { role: 'Junior front-end developer', @@ -125,7 +125,7 @@ const experienceData: ExperienceSection = { url: 'https://pnpm.io/', }, ], - socials: [getSocial('twitter', '#'), getSocial('github', '#')], + socials: [twitter('#'), github('#')], }, ], }; diff --git a/src/data/sections/main.ts b/src/data/sections/main.ts index 391ae1a..b563ad3 100644 --- a/src/data/sections/main.ts +++ b/src/data/sections/main.ts @@ -1,6 +1,6 @@ import type { MainSection } from '@/types/main-section'; -import getSocial from '../socials'; +import { facebook, github, linkedin, twitter } from '../socials'; const mainData: MainSection = { config: { @@ -23,12 +23,7 @@ const mainData: MainSection = { label: 'Download CV', url: '#', }, - socials: [ - getSocial('facebook', '#'), - getSocial('github', '#'), - getSocial('linkedin', '#'), - getSocial('twitter', '#'), - ], + socials: [facebook('#'), github('#'), linkedin('#'), twitter('#')], }; export default mainData; diff --git a/src/data/sections/portfolio.ts b/src/data/sections/portfolio.ts index 0e45cfd..c63f667 100644 --- a/src/data/sections/portfolio.ts +++ b/src/data/sections/portfolio.ts @@ -1,6 +1,6 @@ import type { PortfolioSection } from '@/types/portfolio-section'; -import getSocial from '../socials'; +import { demo, github, mockups, website } from '../socials'; const portfolioData: PortfolioSection = { config: { @@ -54,7 +54,7 @@ const portfolioData: PortfolioSection = { url: 'https://prettier.io/', }, ], - socials: [getSocial('mockups', '#'), getSocial('demo', '#')], + socials: [mockups('#'), demo('#')], }, { name: 'TruQuest', @@ -95,7 +95,7 @@ const portfolioData: PortfolioSection = { url: 'https://www.postgresql.org/', }, ], - socials: [getSocial('mockups', '#'), getSocial('demo', '#')], + socials: [mockups('#'), demo('#')], }, { name: 'Software Chasers', @@ -142,7 +142,7 @@ const portfolioData: PortfolioSection = { url: 'https://pnpm.io/', }, ], - socials: [getSocial('website', '#'), getSocial('github', '#')], + socials: [website('#'), github('#')], }, { name: 'Disco Ninjas', @@ -177,7 +177,7 @@ const portfolioData: PortfolioSection = { url: 'https://firebase.google.com/', }, ], - socials: [getSocial('mockups', '#')], + socials: [mockups('#'), github('#')], }, ], }; diff --git a/src/data/sections/testimonials.ts b/src/data/sections/testimonials.ts index f81e515..bedbd5c 100644 --- a/src/data/sections/testimonials.ts +++ b/src/data/sections/testimonials.ts @@ -1,6 +1,6 @@ import type { TestimonialsSection } from '@/types/testimonials-section'; -import getSocial from '../socials'; +import { github, linkedin, website } from '../socials'; const testimonialsData: TestimonialsSection = { config: { @@ -14,7 +14,7 @@ const testimonialsData: TestimonialsSection = { relation: 'We work together as front-end developers at Google', content: 'In nec mattis sem. Morbi purus lorem, euismod ac varius at, aliquet vitae augue. Pellentesque ut facilisis felis. In sed dui blandit, aliquet odio eu, elementum leo. In facilisis dapibus tortor ac volutpat. Cras cursus nec odio maximus elementum.', - socials: [getSocial('github', '#'), getSocial('linkedin', '#')], + socials: [github('#'), linkedin('#')], }, { image: import('@/assets/testimonials/testimonial-2.jpeg'), @@ -22,7 +22,7 @@ const testimonialsData: TestimonialsSection = { relation: 'My project manager at GitLab', content: 'Praesent nec congue elit. Vestibulum lobortis congue ipsum, a gravida mi tempus ac. Mauris aliquet purus nibh, vel varius turpis tempus non. Nullam eget ultricies orci. Quisque nulla ante, auctor eget varius ac, imperdiet nec magna.', - socials: [getSocial('linkedin', '#')], + socials: [linkedin('#')], }, { image: import('@/assets/testimonials/testimonial-3.jpeg'), @@ -30,7 +30,7 @@ const testimonialsData: TestimonialsSection = { relation: 'My customer for sidewing.com website', content: 'Mauris tincidunt at purus vehicula porta. Mauris eget mollis turpis. Sed iaculis rutrum pharetra. Vivamus risus quam, suscipit et semper ut, aliquet ut tellus. Donec quis auctor nunc.', - socials: [getSocial('github', '#'), getSocial('website', '#')], + socials: [github('#'), website('#')], }, ], }; diff --git a/src/data/socials.ts b/src/data/socials.ts index 74417f1..a0383a5 100644 --- a/src/data/socials.ts +++ b/src/data/socials.ts @@ -2,42 +2,199 @@ import type { Social } from '../types/common'; type SocialWithoutUrl = Omit; -const socials = { - facebook: { name: 'Facebook', icon: 'fa6-brands:facebook-f' }, - github: { name: 'GitHub', icon: 'fa6-brands:github' }, - linkedin: { name: 'LinkedIn', icon: 'fa6-brands:linkedin-in' }, - twitter: { name: 'Twitter', icon: 'fa6-brands:twitter' }, - instagram: { name: 'Instagram', icon: 'fa6-brands:instagram' }, - youtube: { name: 'YouTube', icon: 'fa6-brands:youtube' }, - twitch: { name: 'Twitch', icon: 'fa6-brands:twitch' }, - discord: { name: 'Discord', icon: 'fa6-brands:discord' }, - stackoverflow: { name: 'Stack Overflow', icon: 'fa6-brands:stack-overflow' }, - codepen: { name: 'CodePen', icon: 'fa6-brands:codepen' }, - dev: { name: 'Dev', icon: 'fa6-brands:dev' }, - behance: { name: 'Behance', icon: 'fa6-brands:behance' }, - dribbble: { name: 'Dribbble', icon: 'fa6-brands:dribbble' }, - medium: { name: 'Medium', icon: 'fa6-brands:medium' }, - reddit: { name: 'Reddit', icon: 'fa6-brands:reddit' }, - quora: { name: 'Quora', icon: 'fa6-brands:quora' }, - spotify: { name: 'Spotify', icon: 'fa6-brands:spotify' }, - soundcloud: { name: 'SoundCloud', icon: 'fa6-brands:soundcloud' }, - lastfm: { name: 'Last.fm', icon: 'fa6-brands:lastfm' }, - vimeo: { name: 'Vimeo', icon: 'fa6-brands:vimeo' }, - pinterest: { name: 'Pinterest', icon: 'fa6-brands:pinterest' }, - tumblr: { name: 'Tumblr', icon: 'fa6-brands:tumblr' }, - flickr: { name: 'Flickr', icon: 'fa6-brands:flickr' }, - figma: { name: 'Figma', icon: 'fa6-brands:figma' }, +// GENERAL - website: { name: 'Website', icon: 'fa6-solid:globe' }, - demo: { name: 'App demo', icon: 'fa6-solid:desktop' }, - mockups: { name: 'Mockups', icon: 'fa6-solid:image' }, - repository: { name: 'Repository', icon: 'fa6-solid:code-branch' }, -} satisfies Record; - -const getSocial = (name: keyof typeof socials, url: string, overrides?: Partial): Social => ({ +export const facebook = (url: string, override?: Partial): Social => ({ + name: 'Facebook', + icon: 'fa6-brands:facebook-f', url, - ...socials[name], - ...overrides, + ...override, }); -export default getSocial; +export const linkedin = (url: string, override?: Partial): Social => ({ + name: 'LinkedIn', + icon: 'fa6-brands:linkedin-in', + url, + ...override, +}); + +export const twitter = (url: string, override?: Partial): Social => ({ + name: 'Twitter', + icon: 'fa6-brands:twitter', + url, + ...override, +}); + +export const pinterest = (url: string, override?: Partial): Social => ({ + name: 'Pinterest', + icon: 'fa6-brands:pinterest', + url, + ...override, +}); + +// CODE + +export const github = (url: string, override?: Partial): Social => ({ + name: 'GitHub', + icon: 'fa6-brands:github', + url, + ...override, +}); + +export const codepen = (url: string, override?: Partial): Social => ({ + name: 'CodePen', + icon: 'fa6-brands:codepen', + url, + ...override, +}); + +export const stackblitz = (url: string, override?: Partial): Social => ({ + name: 'StackBlitz', + icon: 'simple-icons:stackblitz', + url, + ...override, +}); + +export const codesandbox = (url: string, override?: Partial): Social => ({ + name: 'CodeSandbox', + icon: 'simple-icons:codesandbox', + url, + ...override, +}); + +// BLOG + +export const dev = (url: string, override?: Partial): Social => ({ + name: 'Dev', + icon: 'fa6-brands:dev', + url, + ...override, +}); + +export const medium = (url: string, override?: Partial): Social => ({ + name: 'Medium', + icon: 'fa6-brands:medium', + url, + ...override, +}); + +// FORUM / CHAT + +export const reddit = (url: string, override?: Partial): Social => ({ + name: 'Reddit', + icon: 'fa6-brands:reddit', + url, + ...override, +}); + +export const quora = (url: string, override?: Partial): Social => ({ + name: 'Quora', + icon: 'fa6-brands:quora', + url, + ...override, +}); + +export const stackoverflow = (url: string, override?: Partial): Social => ({ + name: 'Stack Overflow', + icon: 'fa6-brands:stack-overflow', + url, + ...override, +}); + +// DESIGN + +export const instagram = (url: string, override?: Partial): Social => ({ + name: 'Instagram', + icon: 'fa6-brands:instagram', + url, + ...override, +}); +export const behance = (url: string, override?: Partial): Social => ({ + name: 'Behance', + icon: 'fa6-brands:behance', + url, + ...override, +}); + +export const dribbble = (url: string, override?: Partial): Social => ({ + name: 'Dribbble', + icon: 'fa6-brands:dribbble', + url, + ...override, +}); + +export const figma = (url: string, override?: Partial): Social => ({ + name: 'Figma', + icon: 'fa6-brands:figma', + url, + ...override, +}); + +// MUSIC + +export const spotify = (url: string, override?: Partial): Social => ({ + name: 'Spotify', + icon: 'fa6-brands:spotify', + url, + ...override, +}); + +export const soundcloud = (url: string, override?: Partial): Social => ({ + name: 'SoundCloud', + icon: 'fa6-brands:soundcloud', + url, + ...override, +}); + +// VIDEO + +export const youtube = (url: string, override?: Partial): Social => ({ + name: 'YouTube', + icon: 'fa6-brands:youtube', + url, + ...override, +}); + +export const twitch = (url: string, override?: Partial): Social => ({ + name: 'Twitch', + icon: 'fa6-brands:twitch', + url, + ...override, +}); + +export const vimeo = (url: string, override?: Partial): Social => ({ + name: 'Vimeo', + icon: 'fa6-brands:vimeo', + url, + ...override, +}); + +// PROJECT TYPE + +export const website = (url: string, override?: Partial): Social => ({ + name: 'Website', + icon: 'fa6-solid:globe', + url, + ...override, +}); + +export const demo = (url: string, override?: Partial): Social => ({ + name: 'App demo', + icon: 'fa6-solid:desktop', + url, + ...override, +}); + +export const mockups = (url: string, override?: Partial): Social => ({ + name: 'Mockups', + icon: 'fa6-solid:image', + url, + ...override, +}); + +export const repository = (url: string, override?: Partial): Social => ({ + name: 'Repository', + icon: 'fa6-solid:code-branch', + url, + ...override, +});