cv/layout.typ

133 lines
2.6 KiB
Plaintext

#let icon(name, shift: 0.25em) = {
box(
baseline: shift,
height: 1.25em,
image("icons/" + name + ".svg", alt: name)
)
h(0.35em)
}
#let cv(
name: "",
tagline: "",
links: (),
paper: "a4",
accent: rgb("#870c66"),
heading_font: "Inter",
body_font: "Inter",
mono_font: "BerkeleyMono",
doc,
) = {
set text(size: 9pt, font: body_font, weight: "medium")
set page(paper, margin: (x: 0.8cm, y: 0.8cm))
set par(justify: true)
show raw: it => text(size: 1.2em, font: mono_font, baseline: -0.05em)[#it]
show heading.where(level: 1): it => text(
size: 1.6em,
font: heading_font,
tracking: 0.1pt,
weight: "semibold",
block[
#{it.body}
]
)
show heading.where(level: 2): it => text(
fill: accent,
font: heading_font,
tracking: 0.1pt,
weight: "bold",
size: 1.35em,
[
#{it.body}
#v(-0.85em)
#line(length: 100%, stroke: 1pt + accent)
#v(0.2em)
]
)
show heading.where(level: 3): it => text(
size: 1.2em,
weight: "semibold",
block[#it]
)
[= #name]
text(
font: body_font,
fill: accent,
size: 1.2em,
weight: "semibold",
block[#{tagline}]
)
v(-0.5em)
links.map(l => {
link(l.link)[
#set text(weight: "medium")
#icon(l.icon)
#if "text" in l.keys() { l.text } else { l.link }
]
h(1em)
}).join()
doc
}
#let divider(accent: rgb("#870c66")) = {
line(length: 100%, stroke: (paint: accent, thickness: 1pt, dash: "dotted"))
}
#let event(
accent: rgb("#870c66"), company_newline: false,
title, company, period, location
) = [
#text(1.2em)[
#text(weight: "semibold")[#title]
#h(1fr)
#if not company_newline {
text(fill: accent, weight: "bold", size: 0.8em, baseline: -0.125em)[_#[#company]_]
} else {
text(fill: accent, weight: "bold", size: 0.8em)[\
_#[#company]_]
}
]\
#text(1em)[
#if period != [] {
icon("calendar", shift: 0.18em)
[_#[#period]_]
}
#h(1fr)
#if location != [] {
icon("location")
location
}
]
]
#let article(
accent: rgb("#870c66"),
title: "", date: "", url: ""
) = [
#par(justify: false)[
#text(weight: "semibold")[
#text(size: 1.2em)["#title"]
]\
#text(size: 0.85em, style: "italic", weight: "bold", tracking: -0.025em, fill: accent)[
#icon("link", shift: 0.25em)
#h(-0.25em)
#link("https://" + url)[#url]
]
#v(-0.85em)
#text(size: 0.85em, style: "italic", weight: "semibold", tracking: -0.025em)[
#icon("calendar", shift: 0.15em)
#h(0.1em)
#date
]
]
]