cv/template/cv.typ

137 lines
2.2 KiB
Typst

#let pill(fill, content) = {
block(
inset: 4pt,
fill: fill,
radius: 3pt,
text(black, [#content]),
)
}
#let education(degree, university, from, to, location) = {
grid(
align: horizon,
rows: (auto, auto),
columns: (auto, auto, auto),
grid.cell(
inset: (
bottom: 6pt,
),
colspan: 3,
stack(
dir: ltr,
spacing: 6pt,
text(13pt, [*#degree*]),
pill(luma(230), [#from - #to]),
pill(luma(200), location),
),
),
text(luma(90), [*#university*]),
)
v(4pt)
}
#let work(role, company, from, to, location, content) = {
grid(
align: horizon,
rows: (auto, auto),
columns: (auto, auto, auto),
grid.cell(
inset: (
bottom: 6pt,
),
colspan: 3,
stack(
dir: ltr,
spacing: 6pt,
text(13pt, [*#role*]),
pill(luma(230), [#from - #to]),
pill(luma(200), location),
),
),
text(luma(90), [*#company*]),
)
v(4pt)
content
}
#let cv(
short,
name,
positions,
email,
phone,
address,
links,
doc
) = {
set page(
paper: "a4",
margin: 12pt
)
set text(11pt, font: "Victor Mono")
show link: it => {
set text(red)
underline(it)
sym.space.nobreak
sym.arrow.tr
}
grid(
columns: (1fr, 3fr),
rows: (auto, auto),
gutter: 12pt,
grid.cell(
rowspan: 2,
block(
clip: true,
radius: 10pt,
image("../assets/profile.jpg"),
)
),
block(
radius: 10pt,
width: 100%,
fill: black,
inset: (
top: 16pt,
left: 18pt,
bottom: 16pt,
),
stack(
spacing: 12pt,
stack(
dir: ltr,
spacing: 10pt,
text(red, 22pt, [\$ dennis\@schöpf \~>]),
text(white, 22pt, [*lebenslauf*]),
),
text(
white,
11pt,
(email, phone, address).join(" ++ "),
),
text(
white,
10pt,
links.join(" ++ "),
),
),
),
block(
text(
black,
weight: "bold",
14pt,
positions.join(", ", last: " &\n"),
),
)
)
set align(left)
doc
}