diff options
| author | Armand Philippot <git@armandphilippot.com> | 2023-12-20 12:40:48 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2023-12-20 16:45:15 +0100 |
| commit | 5a572163c5a5174c1620c578f550dd7ddc841df4 (patch) | |
| tree | 48f0b3c6088d6e5258c8454fe47d5db8adadbab7 /src/components/atoms/links/social-link | |
| parent | 67ac79f8ba2ea900ec0ac67e56387889ee887a48 (diff) | |
build: improve bundle size
* add `sideEffects` in package.json to activate tree shaking for
barrel files
* use dynamic imports on social links and icons
* resize social media images
* resize large project image (demo apcom)
* resize website logo
Diffstat (limited to 'src/components/atoms/links/social-link')
| -rw-r--r-- | src/components/atoms/links/social-link/social-link.tsx | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/components/atoms/links/social-link/social-link.tsx b/src/components/atoms/links/social-link/social-link.tsx index 1da1e7d..89ecee3 100644 --- a/src/components/atoms/links/social-link/social-link.tsx +++ b/src/components/atoms/links/social-link/social-link.tsx @@ -1,10 +1,28 @@ -import type { AnchorHTMLAttributes, FC } from 'react'; -import GithubIcon from '../../../../assets/images/social-media/github.svg'; -import GitlabIcon from '../../../../assets/images/social-media/gitlab.svg'; -import LinkedInIcon from '../../../../assets/images/social-media/linkedin.svg'; -import TwitterIcon from '../../../../assets/images/social-media/twitter.svg'; +import dynamic from 'next/dynamic'; +import type { + AnchorHTMLAttributes, + ComponentType, + FC, + SVGAttributes, +} from 'react'; import styles from './social-link.module.scss'; +const GithubIcon: ComponentType<SVGAttributes<SVGElement>> = dynamic( + async () => import('../../../../assets/images/social-media/github.svg') +); + +const GitlabIcon: ComponentType<SVGAttributes<SVGElement>> = dynamic( + async () => import('../../../../assets/images/social-media/gitlab.svg') +); + +const LinkedInIcon: ComponentType<SVGAttributes<SVGElement>> = dynamic( + async () => import('../../../../assets/images/social-media/linkedin.svg') +); + +const TwitterIcon: ComponentType<SVGAttributes<SVGElement>> = dynamic( + async () => import('../../../../assets/images/social-media/twitter.svg') +); + export type SocialWebsite = 'Github' | 'Gitlab' | 'LinkedIn' | 'Twitter'; export type SocialLinkProps = Omit< |
