From 5893830eec5d8ff05de198489cf5e8d5ae076f21 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Sun, 8 Dec 2024 20:17:17 +0300 Subject: [PATCH] add Skills section --- app/page.tsx | 2 ++ components/skills.tsx | 22 ++++++++++++++++++---- components/ui/badge.tsx | 31 +++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 components/ui/badge.tsx diff --git a/app/page.tsx b/app/page.tsx index 64863ec..d635855 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,5 +1,6 @@ import { About } from '@/components/about'; import { Person } from '@/components/person'; +import { Skills } from '@/components/skills'; import { Work } from '@/components/work'; export default function HomePage() { @@ -8,6 +9,7 @@ export default function HomePage() { + ); } diff --git a/components/skills.tsx b/components/skills.tsx index dfbeae7..5590b41 100644 --- a/components/skills.tsx +++ b/components/skills.tsx @@ -1,13 +1,27 @@ -import { useTranslations } from 'next-intl'; +import { Badge } from './ui/badge'; -export function About() { - const t = useTranslations('Skills'); +const skills = [ + 'React', + 'Next.js', + 'Typescript', + 'GraphQL', + 'ESLint', + 'Tailwind', + 'MobX', + 'Node.js', + 'Docker', + 'MongoDB', + 'Redis', + 'JWT', +]; + +export function Skills() { return (

Skills

- {DATA.skills.map((skill, id) => ( + {skills.map((skill) => ( {skill} ))}
diff --git a/components/ui/badge.tsx b/components/ui/badge.tsx new file mode 100644 index 0000000..9acb01d --- /dev/null +++ b/components/ui/badge.tsx @@ -0,0 +1,31 @@ +import { cn } from '@/lib/utils'; +import { cva, type VariantProps } from 'class-variance-authority'; +import * as React from 'react'; + +const badgeVariants = cva( + 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', + { + defaultVariants: { + variant: 'default', + }, + variants: { + variant: { + default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80', + destructive: + 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80', + outline: 'text-foreground', + secondary: + 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80', + }, + }, + }, +); + +export type BadgeProps = React.HTMLAttributes & + VariantProps & {}; + +function Badge({ className, variant, ...props }: BadgeProps) { + return
; +} + +export { Badge, badgeVariants };