This commit is contained in:
Amruth Pillai
2026-04-05 09:03:49 +02:00
parent b3224ce59b
commit 11373763fd
9 changed files with 58 additions and 46 deletions
@@ -45,12 +45,13 @@ export function AwardsItem({ className, ...item }: AwardsItemProps) {
<div className={cn("awards-item", className)}>
{/* Header */}
<div className="section-item-header awards-item-header">
<div className="flex flex-wrap items-start justify-between gap-x-2">
{headerFields.map((field, index) => (
<div key={field.key} className={cn(index === 0 && "basis-full")}>
{field.content}
</div>
))}
<div className="flex items-start justify-between gap-x-2">
<div className="flex min-w-0 flex-1 flex-col items-start">
{headerFields.get("title")?.content}
{headerFields.get("awarder")?.content}
</div>
<div className="flex min-w-0 shrink-0 flex-col items-end text-end">{headerFields.get("date")?.content}</div>
</div>
</div>
@@ -45,12 +45,13 @@ export function CertificationsItem({ className, ...item }: CertificationsItemPro
<div className={cn("certifications-item", className)}>
{/* Header */}
<div className="section-item-header certifications-item-header">
<div className="flex flex-wrap items-start justify-between gap-x-2">
{headerFields.map((field, index) => (
<div key={field.key} className={cn(index === 0 && "basis-full")}>
{field.content}
</div>
))}
<div className="flex items-start justify-between gap-x-2">
<div className="flex min-w-0 flex-1 flex-col items-start">
{headerFields.get("title")?.content}
{headerFields.get("issuer")?.content}
</div>
<div className="flex min-w-0 shrink-0 flex-col items-end text-end">{headerFields.get("date")?.content}</div>
</div>
</div>
@@ -52,12 +52,16 @@ export function EducationItem({ className, ...item }: EducationItemProps) {
<div className={cn("education-item", className)}>
{/* Header */}
<div className="section-item-header education-item-header mb-2">
<div className="flex flex-wrap items-start justify-between gap-x-2">
{headerFields.map((field, index) => (
<div key={field.key} className={cn(index === 0 && "basis-full")}>
{field.content}
</div>
))}
<div className="flex items-start justify-between gap-x-2">
<div className="flex min-w-0 flex-1 flex-col items-start">
{headerFields.get("school")?.content}
{headerFields.get("area")?.content}
</div>
<div className="flex min-w-0 shrink-0 flex-col items-end text-end">
{headerFields.get("degreeAndGrade")?.content}
{headerFields.get("locationAndPeriod")?.content}
</div>
</div>
</div>
@@ -46,17 +46,20 @@ export function ExperienceItem({ className, ...item }: ExperienceItemProps) {
content: <span className="section-item-metadata experience-item-period">{item.period}</span>,
},
);
return (
<div className={cn("experience-item", className)}>
{/* Header */}
<div className="section-item-header experience-item-header">
<div className="flex flex-wrap items-start justify-between gap-x-2">
{headerFields.map((field, index) => (
<div key={field.key} className={cn(index === 0 && "basis-full")}>
{field.content}
</div>
))}
<div className="flex items-start justify-between gap-x-2">
<div className="flex min-w-0 flex-1 flex-col items-start">
{headerFields.get("company")?.content}
{headerFields.get("position")?.content}
</div>
<div className="flex min-w-0 shrink-0 flex-col items-end text-end">
{headerFields.get("location")?.content}
{headerFields.get("period")?.content}
</div>
</div>
</div>
@@ -65,7 +68,7 @@ export function ExperienceItem({ className, ...item }: ExperienceItemProps) {
<div className="experience-item-roles mt-0 flex flex-col gap-y-1">
{item.roles.map((role) => (
<div key={role.id} className="experience-item-role">
<div className="flex flex-wrap items-start justify-between gap-x-2">
<div className="grid grid-cols-2 items-start justify-between gap-x-2">
<div className="section-item-metadata experience-item-role-position">{role.position}</div>
<div className="section-item-metadata experience-item-role-period">{role.period}</div>
</div>
@@ -45,12 +45,13 @@ export function PublicationsItem({ className, ...item }: PublicationsItemProps)
<div className={cn("publications-item", className)}>
{/* Header */}
<div className="section-item-header publications-item-header">
<div className="flex flex-wrap items-start justify-between gap-x-2">
{headerFields.map((field, index) => (
<div key={field.key} className={cn(index === 0 && "basis-full")}>
{field.content}
</div>
))}
<div className="flex items-start justify-between gap-x-2">
<div className="flex min-w-0 flex-1 flex-col items-start">
{headerFields.get("title")?.content}
{headerFields.get("publisher")?.content}
</div>
<div className="flex min-w-0 shrink-0 flex-col items-end text-end">{headerFields.get("date")?.content}</div>
</div>
</div>
@@ -40,12 +40,12 @@ export function ReferencesItem({ className, ...item }: ReferencesItemProps) {
<div className={cn("references-item", className)}>
{/* Header */}
<div className="section-item-header references-item-header">
<div className="flex flex-wrap items-start justify-between gap-x-2">
{headerFields.map((field, index) => (
<div key={field.key} className={cn(index === 0 && "basis-full")}>
{field.content}
</div>
))}
<div className="flex items-start justify-between gap-x-2">
<div className="flex min-w-0 flex-1 flex-col items-start">{headerFields.get("name")?.content}</div>
<div className="flex min-w-0 shrink-0 flex-col items-end text-end">
{headerFields.get("position")?.content}
</div>
</div>
</div>
@@ -45,12 +45,13 @@ export function VolunteerItem({ className, ...item }: VolunteerItemProps) {
<div className={cn("volunteer-item", className)}>
{/* Header */}
<div className="section-item-header volunteer-item-header">
<div className="flex flex-wrap items-start justify-between gap-x-2">
{headerFields.map((field, index) => (
<div key={field.key} className={cn(index === 0 && "basis-full")}>
{field.content}
</div>
))}
<div className="flex items-start justify-between gap-x-2">
<div className="flex min-w-0 flex-1 flex-col items-start">
{headerFields.get("organization")?.content}
{headerFields.get("location")?.content}
</div>
<div className="flex min-w-0 shrink-0 flex-col items-end text-end">{headerFields.get("period")?.content}</div>
</div>
</div>
@@ -10,7 +10,7 @@ type LinkedTitleProps = {
export function LinkedTitle({ title, website, showLinkInTitle, className }: LinkedTitleProps) {
if (showLinkInTitle && website?.url) {
return (
<a href={website.url} target="_blank" rel="noopener" className={cn("inline-block", className)}>
<a href={website.url} target="_blank" rel="noopener" className={cn("inline", className)}>
<strong>{title}</strong>
</a>
);
+2 -1
View File
@@ -19,5 +19,6 @@ export function filterFieldValues<TKey extends string, TField extends KeyedField
values: KeyValueMap<TKey>,
...fields: TField[]
) {
return fields.filter((field) => Boolean(values[field.key]?.trim()));
const filteredFields = fields.filter((field) => Boolean(values[field.key]?.trim()));
return new Map(filteredFields.map((field) => [field.key, field] as const));
}