Skip to content

Commit dc00356

Browse files
authored
feat: update the social media section on the Home page and refactor some code
1 parent badd690 commit dc00356

File tree

9 files changed

+294
-283
lines changed

9 files changed

+294
-283
lines changed

src/components/DefaultPage/DefaultPage.tsx

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
1-
import { ReactNode } from 'react';
21
import Starfield from '../../components/Starfield/Starfield';
3-
4-
export interface DefaultPageProps {
5-
className?: string;
6-
childrenClassName?: string;
7-
children?: ReactNode;
8-
HtmlTag?: keyof JSX.IntrinsicElements;
9-
starfield?: boolean;
10-
}
2+
import type { DefaultPageProps } from '../../types';
113

124
function DefaultPage({
135
className = 'flex',

src/components/Footer/Footer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import clsx from 'clsx';
2-
import Link from '../Link/Link';
32
import { BiMailSend, BiSolidFileArchive } from 'react-icons/bi';
3+
import Link from '../Link/Link';
44

55
function Footer() {
66
const firstColumnItems = [

src/components/Link/Link.tsx

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,6 @@
11
import clsx from 'clsx';
22
import React from 'react';
3-
4-
export interface LinkProps {
5-
to: string;
6-
leftIcon?: React.ReactElement;
7-
rightIcon?: React.ReactElement;
8-
size?: 'sm' | 'base' | 'lg' | 'xl';
9-
variant?: 'primary' | 'link' | 'icon-button';
10-
children?: React.ReactNode;
11-
external?: boolean;
12-
className?: string;
13-
};
3+
import type { LinkProps } from '../../types';
144

155
function Link({
166
to,

src/components/ProjectCard/ProjectCard.tsx

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
11
import clsx from 'clsx';
2-
import Link from '../../components/Link/Link';
32
import { AiFillGithub } from 'react-icons/ai';
43
import { FiExternalLink } from 'react-icons/fi';
5-
6-
export interface ProjectCardProps {
7-
name: string;
8-
description: string;
9-
githubRepoUrl?: string;
10-
deployedAppUrl?: string;
11-
technologiesUsed: Array<string>;
12-
thumbnail: string;
13-
}
4+
import Link from '../../components/Link/Link';
5+
import type { ProjectCardProps } from '../../types';
146

157
function ProjectCard({
168
name,

src/components/Starfield/Starfield.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@ import { useReducedMotion } from 'framer-motion';
33
import { useEffect, useState } from 'react';
44
import { useWindowSize } from 'react-use';
55
import { StarField } from 'starfield-react';
6-
7-
export interface StarfieldProps {
8-
speed?: number;
9-
className?: string;
10-
}
6+
import type { StarfieldProps } from '../../types';
117

128
function Starfield({ speed = 0.5, className = '' }: StarfieldProps) {
139
const { width, height } = useWindowSize();

src/components/TechnologyCard/TechnologyCard.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import clsx from 'clsx';
2-
import { type IconType } from 'react-icons';
3-
4-
export interface TechnologyCardProps {
5-
name: string;
6-
Icon?: IconType | undefined;
7-
}
2+
import type { TechnologyCardProps } from '../../types';
83

94
function TechnologyCard({ name, Icon = undefined }: TechnologyCardProps) {
105
return (
@@ -21,6 +16,6 @@ function TechnologyCard({ name, Icon = undefined }: TechnologyCardProps) {
2116
<span className='whitespace-nowrap'>{name}</span>
2217
</div>
2318
);
24-
};
19+
}
2520

26-
export default TechnologyCard;
21+
export default TechnologyCard;

src/constants/index.ts

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
import {
2+
SiHaskell as HaskellIcon,
3+
SiNestjs as NestJSIcon,
4+
SiLinux as LinuxIcon,
5+
SiJest as JestIcon,
6+
SiPostgresql as PostgreSQLIcon,
7+
SiFlask as FlaskIcon,
8+
SiAmazonaws as AWSIcon,
9+
SiRubyonrails as RubyOnRailsIcon,
10+
} from 'react-icons/si';
11+
import {
12+
TbBrandTypescript as TypeScriptIcon,
13+
TbBrandJavascript as JavascriptIcon,
14+
TbBrandPython as PythonIcon,
15+
TbBrandHtml5 as Html5Icon,
16+
TbBrandCss3 as Css3Icon,
17+
TbBrandReact as ReactIcon,
18+
TbBrandGit as GitIcon,
19+
TbBrandDocker as DockerIcon,
20+
TbBrandDjango as DjangoIcon,
21+
} from 'react-icons/tb';
22+
import {
23+
BiLogoJava as JavaIcon,
24+
BiLogoGoogleCloud as GoogleCloudIcon,
25+
} from 'react-icons/bi';
26+
import {
27+
AiFillGithub as GitHubIcon,
28+
AiFillLinkedin as LinkedInIcon,
29+
AiFillMediumSquare as MediumIcon,
30+
} from 'react-icons/ai';
31+
import { DiRuby as RubyIcon } from 'react-icons/di';
32+
import type { TechnologyCardProps, ProjectCardProps } from '../types';
33+
34+
export const PROFILE_PICTURE_URL =
35+
'https://avatars.githubusercontent.com/u/52019009';
36+
37+
export const PROGRAMMING_LANGUAGES: Array<TechnologyCardProps> = [
38+
{
39+
name: 'C',
40+
},
41+
{
42+
name: 'C++',
43+
},
44+
{
45+
name: 'JavaScript',
46+
Icon: JavascriptIcon,
47+
},
48+
{
49+
name: 'TypeScript',
50+
Icon: TypeScriptIcon,
51+
},
52+
{
53+
name: 'Python',
54+
Icon: PythonIcon,
55+
},
56+
{
57+
name: 'Java',
58+
Icon: JavaIcon,
59+
},
60+
{
61+
name: 'Haskell',
62+
Icon: HaskellIcon,
63+
},
64+
{
65+
name: 'Ruby',
66+
Icon: RubyIcon,
67+
},
68+
];
69+
70+
export const FRAMEWORKS_AND_TECHNOLOGIES: Array<TechnologyCardProps> = [
71+
{
72+
name: 'HTML5',
73+
Icon: Html5Icon,
74+
},
75+
{
76+
name: 'CSS3',
77+
Icon: Css3Icon,
78+
},
79+
{
80+
name: 'React',
81+
Icon: ReactIcon,
82+
},
83+
{
84+
name: 'Ruby on Rails',
85+
Icon: RubyOnRailsIcon,
86+
},
87+
{
88+
name: 'NestJS',
89+
Icon: NestJSIcon,
90+
},
91+
{
92+
name: 'TypeORM',
93+
},
94+
{
95+
name: 'Linux',
96+
Icon: LinuxIcon,
97+
},
98+
{
99+
name: 'Git',
100+
Icon: GitIcon,
101+
},
102+
{
103+
name: 'Docker',
104+
Icon: DockerIcon,
105+
},
106+
{
107+
name: 'Keycloak',
108+
},
109+
{
110+
name: 'Jest',
111+
Icon: JestIcon,
112+
},
113+
{
114+
name: 'PostgreSQL',
115+
Icon: PostgreSQLIcon,
116+
},
117+
{
118+
name: 'Flask',
119+
Icon: FlaskIcon,
120+
},
121+
{
122+
name: 'Django',
123+
Icon: DjangoIcon,
124+
},
125+
{
126+
name: 'AWS',
127+
Icon: AWSIcon,
128+
},
129+
{
130+
name: 'GCP',
131+
Icon: GoogleCloudIcon,
132+
},
133+
];
134+
135+
export const PROJECTS: Array<ProjectCardProps> = [
136+
{
137+
name: '2048',
138+
description:
139+
'My rendition of the classic single-player sliding tile puzzle game.',
140+
githubRepoUrl: 'https://github.com/mateuseap/2048/',
141+
deployedAppUrl: 'https://www.mateuseap.com/2048/',
142+
technologiesUsed: ['JavaScript'],
143+
thumbnail:
144+
'https://raw.githubusercontent.com/mateuseap/2048/28222bcbf6ca60b7ac9ba8536b79ad211439210e/logo.svg',
145+
},
146+
{
147+
name: 'Chess',
148+
description: 'The classic chess game.',
149+
githubRepoUrl: 'https://github.com/mateuseap/chess/',
150+
technologiesUsed: ['Python', 'Pygame'],
151+
thumbnail: 'https://i.imgur.com/dzr9Dlo.png',
152+
},
153+
{
154+
name: 'FestaLab Challenge',
155+
description:
156+
'A user management dashboard with registration, editing, deletion, listing, pagination, and search functionalities.',
157+
githubRepoUrl: 'https://github.com/mateuseap/festalab-challenge',
158+
technologiesUsed: ['Ruby on Rails', 'PostgreSQL', 'TailwindCSS', 'Docker'],
159+
thumbnail:
160+
'https://raw.githubusercontent.com/mateuseap/festalab-challenge/main/public/favicon.ico',
161+
},
162+
{
163+
name: 'Frog Ninja',
164+
description:
165+
'An engaging 2D platformer featuring a frog, packed with jumps, obstacles, and surprises.',
166+
deployedAppUrl: 'https://simmer.io/@Meap018/frog-ninja',
167+
technologiesUsed: ['C#', 'Unity Engine'],
168+
thumbnail: 'https://i.imgur.com/4tqICzf.png',
169+
},
170+
{
171+
name: 'Oncase Full Stack Challenge',
172+
description:
173+
' A simple web application for managing user data and presenting it through an interactive dashboard.',
174+
githubRepoUrl: 'https://github.com/mateuseap/oncase-challenge/',
175+
technologiesUsed: [
176+
'TypeScript',
177+
'React',
178+
'MUI',
179+
'Styled-Components',
180+
'ApexCharts',
181+
'React-Toastify',
182+
'Axios',
183+
'NestJS',
184+
'PostgreSQL',
185+
'TypeORM',
186+
'Swagger',
187+
'Jest',
188+
'Docker',
189+
],
190+
thumbnail:
191+
'https://raw.githubusercontent.com/mateuseap/Oncase-Challenge/main/front-end/public/logo-icon.png',
192+
},
193+
{
194+
name: 'Palavrinha',
195+
description:
196+
'A fun word-guessing game inspired by Wordle, designed for Portuguese speakers.',
197+
githubRepoUrl: 'https://github.com/mateuseap/palavrinha/',
198+
deployedAppUrl: 'https://www.mateuseap.com/palavrinha/',
199+
technologiesUsed: ['JavaScript', 'React'],
200+
thumbnail:
201+
'https://raw.githubusercontent.com/mateuseap/palavrinha/main/public/favicon.png',
202+
},
203+
];
204+
205+
export const SOCIAL_MEDIAS = [
206+
{
207+
url: 'https://www.linkedin.com/in/mateuseliasdeandradepereira/',
208+
Icon: LinkedInIcon,
209+
},
210+
{
211+
url: 'https://github.com/mateuseap',
212+
Icon: GitHubIcon,
213+
},
214+
{
215+
url: 'https://medium.com/@mateuselias',
216+
Icon: MediumIcon,
217+
},
218+
];

0 commit comments

Comments
 (0)