diff --git a/src/entities/experience/ui/ExperienceCard/ExperienceCard.test.tsx b/src/entities/experience/ui/ExperienceCard/ExperienceCard.test.tsx index 701998a..0d81cf5 100644 --- a/src/entities/experience/ui/ExperienceCard/ExperienceCard.test.tsx +++ b/src/entities/experience/ui/ExperienceCard/ExperienceCard.test.tsx @@ -64,10 +64,10 @@ describe('ExperienceCard', () => { expect(screen.getByRole('heading', { level: 3 })).toHaveTextContent('Senior Developer'); }); - it('period badge has brutal-border, bg-blue, text-cream, text-sm', () => { + it('period badge has brutal-border, bg-blue, text-cream, md size', () => { render(); const badge = screen.getByText('2021 – 2024'); - expect(badge).toHaveClass('brutal-border', 'bg-blue', 'text-cream', 'text-sm'); + expect(badge).toHaveClass('brutal-border', 'bg-blue', 'text-cream', 'px-4', 'py-2', 'text-sm'); }); it('description renders via RichText with rich-text class', () => { diff --git a/src/entities/experience/ui/ExperienceCard/ExperienceCard.tsx b/src/entities/experience/ui/ExperienceCard/ExperienceCard.tsx index 265fdc9..337c1bc 100644 --- a/src/entities/experience/ui/ExperienceCard/ExperienceCard.tsx +++ b/src/entities/experience/ui/ExperienceCard/ExperienceCard.tsx @@ -1,4 +1,4 @@ -import { Card, CardSidebar, CardTitle, RichText } from '$shared/ui'; +import { Badge, Card, CardSidebar, CardTitle, RichText } from '$shared/ui'; type Props = { /** @@ -10,7 +10,7 @@ type Props = { */ company: string; /** - * Employment period (e.g. "2021 – 2024") + * Employment period (e.g. "Jan 2021 – Dec 2024") */ period: string; /** @@ -38,17 +38,14 @@ export function ExperienceCard({ title, company, period, description, stack, cla - {period} + {period}

{company}

{stack.length > 0 && (
{stack.map((tech) => ( - + {tech} - + ))}
)} diff --git a/src/shared/ui/Badge/index.ts b/src/shared/ui/Badge/index.ts index 774798f..ed8eed9 100644 --- a/src/shared/ui/Badge/index.ts +++ b/src/shared/ui/Badge/index.ts @@ -1,2 +1,2 @@ -export type { BadgeVariant } from './ui/Badge'; +export type { BadgeSize, BadgeVariant } from './ui/Badge'; export { Badge } from './ui/Badge'; diff --git a/src/shared/ui/Badge/ui/Badge.test.tsx b/src/shared/ui/Badge/ui/Badge.test.tsx index aa1469b..8cb88bf 100644 --- a/src/shared/ui/Badge/ui/Badge.test.tsx +++ b/src/shared/ui/Badge/ui/Badge.test.tsx @@ -42,6 +42,23 @@ describe('Badge', () => { }); }); + describe('sizes', () => { + it('defaults to sm size', () => { + render(Tag); + expect(screen.getByText('Tag')).toHaveClass('px-3', 'py-1', 'text-xs'); + }); + + it('applies sm size classes', () => { + render(Tag); + expect(screen.getByText('Tag')).toHaveClass('px-3', 'py-1', 'text-xs'); + }); + + it('applies md size classes', () => { + render(Tag); + expect(screen.getByText('Tag')).toHaveClass('px-4', 'py-2', 'text-sm'); + }); + }); + describe('className passthrough', () => { it('merges custom className', () => { render(Tag); diff --git a/src/shared/ui/Badge/ui/Badge.tsx b/src/shared/ui/Badge/ui/Badge.tsx index f8dac9d..657cc3a 100644 --- a/src/shared/ui/Badge/ui/Badge.tsx +++ b/src/shared/ui/Badge/ui/Badge.tsx @@ -2,6 +2,7 @@ import type { ReactNode } from 'react'; import { cn } from '$shared/lib'; export type BadgeVariant = 'default' | 'primary' | 'secondary' | 'outline'; +export type BadgeSize = 'sm' | 'md'; interface Props { /** @@ -13,6 +14,11 @@ interface Props { * @default 'default' */ variant?: BadgeVariant; + /** + * Size preset + * @default 'sm' + */ + size?: BadgeSize; /** * Additional CSS classes */ @@ -26,12 +32,17 @@ const VARIANTS: Record = { outline: 'brutal-border bg-transparent text-blue', }; +const SIZES: Record = { + sm: 'px-3 py-1 text-xs', + md: 'px-4 py-2 text-sm', +}; + /** * Small label for categorization or status. */ -export function Badge({ children, variant = 'default', className }: Props) { +export function Badge({ children, variant = 'default', size = 'sm', className }: Props) { return ( - + {children} ); diff --git a/src/shared/ui/index.ts b/src/shared/ui/index.ts index 70b4117..c19f36e 100644 --- a/src/shared/ui/index.ts +++ b/src/shared/ui/index.ts @@ -1,4 +1,4 @@ -export type { BadgeVariant } from './Badge'; +export type { BadgeSize, BadgeVariant } from './Badge'; export { Badge } from './Badge'; export type { ButtonSize, ButtonVariant } from './Button'; export { Button } from './Button';