diff --git a/src/entities/experience/ui/ExperienceCard/ExperienceCard.test.tsx b/src/entities/experience/ui/ExperienceCard/ExperienceCard.test.tsx
index 0d81cf5..8b5158d 100644
--- a/src/entities/experience/ui/ExperienceCard/ExperienceCard.test.tsx
+++ b/src/entities/experience/ui/ExperienceCard/ExperienceCard.test.tsx
@@ -64,10 +64,11 @@ describe('ExperienceCard', () => {
expect(screen.getByRole('heading', { level: 3 })).toHaveTextContent('Senior Developer');
});
- it('period badge has brutal-border, bg-blue, text-cream, md size', () => {
+ it('period has left border accent styling', () => {
render();
- const badge = screen.getByText('2021 – 2024');
- expect(badge).toHaveClass('brutal-border', 'bg-blue', 'text-cream', 'px-4', 'py-2', 'text-sm');
+ const period = screen.getByText('2021 – 2024');
+ expect(period.tagName).toBe('P');
+ expect(period).toHaveClass('brutal-border-left', 'text-sm');
});
it('description renders via RichText with rich-text class', () => {
@@ -83,12 +84,13 @@ describe('ExperienceCard', () => {
});
describe('stack tags', () => {
- it('renders stack tags in the sidebar', () => {
+ it('renders stack tags in the sidebar as xs outline badges', () => {
render();
const react = screen.getByText('React');
const ts = screen.getByText('TypeScript');
expect(react.closest('.brutal-border-sidebar')).toBeInTheDocument();
expect(ts.closest('.brutal-border-sidebar')).toBeInTheDocument();
+ expect(react).toHaveClass('brutal-border', 'bg-transparent', 'px-2');
});
it('renders nothing extra when stack is empty', () => {
diff --git a/src/entities/experience/ui/ExperienceCard/ExperienceCard.tsx b/src/entities/experience/ui/ExperienceCard/ExperienceCard.tsx
index 337c1bc..d5f3d71 100644
--- a/src/entities/experience/ui/ExperienceCard/ExperienceCard.tsx
+++ b/src/entities/experience/ui/ExperienceCard/ExperienceCard.tsx
@@ -29,7 +29,7 @@ type Props = {
/**
* Work experience card with sidebar layout.
- * Sidebar: period badge, company, stack tags.
+ * Sidebar: period, company, stack tags.
* Main: job title and rich-text description.
*/
export function ExperienceCard({ title, company, period, description, stack, className }: Props) {
@@ -38,12 +38,12 @@ export function ExperienceCard({ title, company, period, description, stack, cla
- {period}
+ {period}
{company}
{stack.length > 0 && (
{stack.map((tech) => (
-
+
{tech}
))}
diff --git a/src/shared/styles/theme.css b/src/shared/styles/theme.css
index d2e3f1c..c8b4cfc 100644
--- a/src/shared/styles/theme.css
+++ b/src/shared/styles/theme.css
@@ -80,7 +80,7 @@
/* === GRID === */
--grid-gap: var(--space-3);
- --section-content-width: 56rem;
+ --section-content-width: 72rem;
/* === ANIMATION === */
--ease-default: ease;
diff --git a/src/shared/ui/Badge/ui/Badge.test.tsx b/src/shared/ui/Badge/ui/Badge.test.tsx
index 8cb88bf..6830574 100644
--- a/src/shared/ui/Badge/ui/Badge.test.tsx
+++ b/src/shared/ui/Badge/ui/Badge.test.tsx
@@ -48,6 +48,11 @@ describe('Badge', () => {
expect(screen.getByText('Tag')).toHaveClass('px-3', 'py-1', 'text-xs');
});
+ it('applies xs size classes', () => {
+ render(Tag);
+ expect(screen.getByText('Tag')).toHaveClass('px-2', 'py-0.5');
+ });
+
it('applies sm size classes', () => {
render(Tag);
expect(screen.getByText('Tag')).toHaveClass('px-3', 'py-1', 'text-xs');
diff --git a/src/shared/ui/Badge/ui/Badge.tsx b/src/shared/ui/Badge/ui/Badge.tsx
index 657cc3a..9150fd5 100644
--- a/src/shared/ui/Badge/ui/Badge.tsx
+++ b/src/shared/ui/Badge/ui/Badge.tsx
@@ -2,7 +2,7 @@ import type { ReactNode } from 'react';
import { cn } from '$shared/lib';
export type BadgeVariant = 'default' | 'primary' | 'secondary' | 'outline';
-export type BadgeSize = 'sm' | 'md';
+export type BadgeSize = 'xs' | 'sm' | 'md';
interface Props {
/**
@@ -33,6 +33,7 @@ const VARIANTS: Record = {
};
const SIZES: Record = {
+ xs: 'px-2 py-0.5 text-[10px]',
sm: 'px-3 py-1 text-xs',
md: 'px-4 py-2 text-sm',
};
diff --git a/src/shared/ui/Card/ui/Card.test.tsx b/src/shared/ui/Card/ui/Card.test.tsx
index fa5c56d..ccb4a3a 100644
--- a/src/shared/ui/Card/ui/Card.test.tsx
+++ b/src/shared/ui/Card/ui/Card.test.tsx
@@ -100,7 +100,7 @@ describe('CardSidebar', () => {
it('sidebar column has fixed width on md', () => {
render(Sidebar}>Main);
const sidebar = screen.getByText('Sidebar').parentElement;
- expect(sidebar).toHaveClass('md:w-52');
+ expect(sidebar).toHaveClass('md:w-64');
});
it('main column fills remaining space', () => {
diff --git a/src/shared/ui/Card/ui/Card.tsx b/src/shared/ui/Card/ui/Card.tsx
index e9ab93c..8a823ed 100644
--- a/src/shared/ui/Card/ui/Card.tsx
+++ b/src/shared/ui/Card/ui/Card.tsx
@@ -109,7 +109,7 @@ interface CardSidebarProps {
export function CardSidebar({ sidebar, children, className }: CardSidebarProps) {
return (
-
{sidebar}
+
{sidebar}
{children}
);