Update socials imports so unused ones could be tree shook

This commit is contained in:
Konrad Szwarc 2023-01-13 23:24:33 +01:00
parent f7589b6ca7
commit edfb3ed8d0
5 changed files with 207 additions and 55 deletions

View file

@ -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('#')],
},
],
};

View file

@ -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;

View file

@ -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('#')],
},
],
};

View file

@ -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('#')],
},
],
};

View file

@ -2,42 +2,199 @@ import type { Social } from '../types/common';
type SocialWithoutUrl = Omit<Social, 'url'>;
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<string, SocialWithoutUrl>;
const getSocial = (name: keyof typeof socials, url: string, overrides?: Partial<SocialWithoutUrl>): Social => ({
export const facebook = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Facebook',
icon: 'fa6-brands:facebook-f',
url,
...socials[name],
...overrides,
...override,
});
export default getSocial;
export const linkedin = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'LinkedIn',
icon: 'fa6-brands:linkedin-in',
url,
...override,
});
export const twitter = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Twitter',
icon: 'fa6-brands:twitter',
url,
...override,
});
export const pinterest = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Pinterest',
icon: 'fa6-brands:pinterest',
url,
...override,
});
// CODE
export const github = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'GitHub',
icon: 'fa6-brands:github',
url,
...override,
});
export const codepen = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'CodePen',
icon: 'fa6-brands:codepen',
url,
...override,
});
export const stackblitz = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'StackBlitz',
icon: 'simple-icons:stackblitz',
url,
...override,
});
export const codesandbox = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'CodeSandbox',
icon: 'simple-icons:codesandbox',
url,
...override,
});
// BLOG
export const dev = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Dev',
icon: 'fa6-brands:dev',
url,
...override,
});
export const medium = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Medium',
icon: 'fa6-brands:medium',
url,
...override,
});
// FORUM / CHAT
export const reddit = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Reddit',
icon: 'fa6-brands:reddit',
url,
...override,
});
export const quora = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Quora',
icon: 'fa6-brands:quora',
url,
...override,
});
export const stackoverflow = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Stack Overflow',
icon: 'fa6-brands:stack-overflow',
url,
...override,
});
// DESIGN
export const instagram = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Instagram',
icon: 'fa6-brands:instagram',
url,
...override,
});
export const behance = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Behance',
icon: 'fa6-brands:behance',
url,
...override,
});
export const dribbble = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Dribbble',
icon: 'fa6-brands:dribbble',
url,
...override,
});
export const figma = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Figma',
icon: 'fa6-brands:figma',
url,
...override,
});
// MUSIC
export const spotify = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Spotify',
icon: 'fa6-brands:spotify',
url,
...override,
});
export const soundcloud = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'SoundCloud',
icon: 'fa6-brands:soundcloud',
url,
...override,
});
// VIDEO
export const youtube = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'YouTube',
icon: 'fa6-brands:youtube',
url,
...override,
});
export const twitch = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Twitch',
icon: 'fa6-brands:twitch',
url,
...override,
});
export const vimeo = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Vimeo',
icon: 'fa6-brands:vimeo',
url,
...override,
});
// PROJECT TYPE
export const website = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Website',
icon: 'fa6-solid:globe',
url,
...override,
});
export const demo = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'App demo',
icon: 'fa6-solid:desktop',
url,
...override,
});
export const mockups = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Mockups',
icon: 'fa6-solid:image',
url,
...override,
});
export const repository = (url: string, override?: Partial<SocialWithoutUrl>): Social => ({
name: 'Repository',
icon: 'fa6-solid:code-branch',
url,
...override,
});