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 ( +
+
+

{t('title')}

+
+ {contacts.map((contact) => ( + + ))} +
+
+
+ ); +} + +function Contact({ href, image, title }: ContactType) { + return ( +
+ +
+ {title} +

{title}

+
+
+
+ ); +} 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