2026-04-23 20:52:43 +03:00
|
|
|
import { cn } from '$shared/lib';
|
2026-04-19 08:37:21 +03:00
|
|
|
|
2026-05-23 13:06:56 +03:00
|
|
|
export interface Props {
|
2026-04-19 08:37:21 +03:00
|
|
|
/**
|
|
|
|
|
* Project year
|
|
|
|
|
*/
|
2026-04-23 20:52:43 +03:00
|
|
|
year: string;
|
2026-04-19 08:37:21 +03:00
|
|
|
/**
|
|
|
|
|
* Developer role on the project
|
|
|
|
|
*/
|
2026-04-23 20:52:43 +03:00
|
|
|
role: string;
|
2026-04-19 08:37:21 +03:00
|
|
|
/**
|
|
|
|
|
* Technology stack list
|
|
|
|
|
*/
|
2026-04-23 20:52:43 +03:00
|
|
|
stack: string[];
|
2026-04-19 08:37:21 +03:00
|
|
|
/**
|
|
|
|
|
* Additional CSS classes
|
|
|
|
|
*/
|
2026-04-23 20:52:43 +03:00
|
|
|
className?: string;
|
2026-05-23 13:06:56 +03:00
|
|
|
}
|
2026-04-19 08:37:21 +03:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sidebar metadata display for a project: year, role, and stack.
|
|
|
|
|
*/
|
|
|
|
|
export function ProjectMetadata({ year, role, stack, className }: Props) {
|
|
|
|
|
return (
|
|
|
|
|
<div className={cn('space-y-6', className)}>
|
|
|
|
|
<div>
|
|
|
|
|
<p className="text-xs uppercase tracking-wider opacity-60">YEAR</p>
|
|
|
|
|
<p className="text-base font-bold">{year}</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="brutal-border-top pt-6">
|
|
|
|
|
<p className="text-xs uppercase tracking-wider opacity-60">ROLE</p>
|
|
|
|
|
<p className="text-base font-bold">{role}</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="brutal-border-top pt-6">
|
|
|
|
|
<p className="text-xs uppercase tracking-wider opacity-60">STACK</p>
|
|
|
|
|
{stack.map((tech) => (
|
2026-04-23 20:52:43 +03:00
|
|
|
<p key={tech} className="text-sm">
|
|
|
|
|
{tech}
|
|
|
|
|
</p>
|
2026-04-19 08:37:21 +03:00
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2026-04-23 20:52:43 +03:00
|
|
|
);
|
2026-04-19 08:37:21 +03:00
|
|
|
}
|