diff --git a/app/page.tsx b/app/page.tsx
index d635855..fe27269 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,4 +1,5 @@
import { About } from '@/components/about';
+import { Contacts } from '@/components/contacts';
import { Person } from '@/components/person';
import { Skills } from '@/components/skills';
import { Work } from '@/components/work';
@@ -10,6 +11,7 @@ export default function HomePage() {
+
);
}
diff --git a/components/contacts.tsx b/components/contacts.tsx
new file mode 100644
index 0000000..be5ff58
--- /dev/null
+++ b/components/contacts.tsx
@@ -0,0 +1,57 @@
+import { icons } from './icons';
+import { useTranslations } from 'next-intl';
+import Image, { type StaticImageData } from 'next/image';
+
+type ContactType = {
+ readonly href: string;
+ readonly image: StaticImageData;
+ readonly title: string;
+};
+
+const contacts: ContactType[] = [
+ {
+ href: 'https://t.me/vchikalkin',
+ image: icons.Telegram,
+ title: 'Telegram',
+ },
+ {
+ href: 'https://github.com/vchikalkin',
+ image: icons.Github,
+ title: 'GitHub',
+ },
+ {
+ href: 'mailto:i@vchikalkin.ru',
+ image: icons.Email,
+ title: 'Email',
+ },
+];
+
+export function Contacts() {
+ const t = useTranslations('Contact');
+
+ return (
+
+ );
+}
+
+function Contact({ href, image, title }: ContactType) {
+ return (
+
+ );
+}
diff --git a/components/icons/index.ts b/components/icons/index.ts
new file mode 100644
index 0000000..94c1008
--- /dev/null
+++ b/components/icons/index.ts
@@ -0,0 +1,9 @@
+import Email from '../../public/icons/email.png';
+import Github from '../../public/icons/github.png';
+import Telegram from '../../public/icons/telegram.png';
+
+export const icons = {
+ Email,
+ Github,
+ Telegram,
+};
diff --git a/messages/ru.json b/messages/ru.json
index 1a10a0f..a776af3 100644
--- a/messages/ru.json
+++ b/messages/ru.json
@@ -21,5 +21,8 @@
},
"Skills": {
"title": "Скиллы"
+ },
+ "Contact": {
+ "title": "Связаться со мной"
}
}
diff --git a/package.json b/package.json
index fd72dbb..47e70c4 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,7 @@
"next-intl": "^3.26.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
+ "sharp": "^0.33.5",
"tailwind-merge": "^2.5.5",
"tailwindcss-animate": "^1.0.7"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cc71a5c..56f0414 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -29,6 +29,9 @@ importers:
react-dom:
specifier: ^19.0.0
version: 19.0.0(react@19.0.0)
+ sharp:
+ specifier: ^0.33.5
+ version: 0.33.5
tailwind-merge:
specifier: ^2.5.5
version: 2.5.5
@@ -5331,13 +5334,11 @@ snapshots:
dependencies:
color-name: 1.1.4
simple-swizzle: 0.2.2
- optional: true
color@4.2.3:
dependencies:
color-convert: 2.0.1
color-string: 1.9.1
- optional: true
commander@4.1.1: {}
@@ -5439,8 +5440,7 @@ snapshots:
has-property-descriptors: 1.0.2
object-keys: 1.1.1
- detect-libc@2.0.3:
- optional: true
+ detect-libc@2.0.3: {}
didyoumean@1.2.2: {}
@@ -6474,8 +6474,7 @@ snapshots:
is-arrayish@0.2.1: {}
- is-arrayish@0.3.2:
- optional: true
+ is-arrayish@0.3.2: {}
is-async-function@2.0.0:
dependencies:
@@ -7241,7 +7240,6 @@ snapshots:
'@img/sharp-wasm32': 0.33.5
'@img/sharp-win32-ia32': 0.33.5
'@img/sharp-win32-x64': 0.33.5
- optional: true
shebang-command@2.0.0:
dependencies:
@@ -7261,7 +7259,6 @@ snapshots:
simple-swizzle@0.2.2:
dependencies:
is-arrayish: 0.3.2
- optional: true
slash@3.0.0: {}
diff --git a/public/file.svg b/public/file.svg
deleted file mode 100644
index 004145c..0000000
--- a/public/file.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/globe.svg b/public/globe.svg
deleted file mode 100644
index 567f17b..0000000
--- a/public/globe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/icons/email.png b/public/icons/email.png
new file mode 100644
index 0000000..fd83a8d
Binary files /dev/null and b/public/icons/email.png differ
diff --git a/public/icons/github.png b/public/icons/github.png
new file mode 100644
index 0000000..0c2ee50
Binary files /dev/null and b/public/icons/github.png differ
diff --git a/public/icons/telegram.png b/public/icons/telegram.png
new file mode 100644
index 0000000..99ff0f4
Binary files /dev/null and b/public/icons/telegram.png differ
diff --git a/public/next.svg b/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/window.svg b/public/window.svg
deleted file mode 100644
index b2b2a44..0000000
--- a/public/window.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file