diff --git a/main.typ b/main.typ new file mode 100644 index 0000000..ce5d443 --- /dev/null +++ b/main.typ @@ -0,0 +1,47 @@ +#import "./components/experience.typ": experience_section +#import "./components/personal-projects.typ": personal_projects_section +#import "./components/skills.typ": skills_section +#import "./components/header.typ": header +#import "./utilities/content-to-string.typ": content_to_string + +#let cv(include_links: true, language: "") = { + if language == "" { + panic("No language option specified.") + } + + let data = toml("data/info.toml") + + set document( + author: data.name, + title: content_to_string([CV #data.name (#language)]), + ) + set text(font: "Inter", lang: language, size: 12pt) + + // The links color and styling has to be done this way because the `show` + // keyword only applies to the scope of the block it is in. Meaning it won't + // apply globally when put inside the `if` block. + let links = if include_links { + (color: rgb("#000080"), style: underline) + } else { + (color: black, style: (body) => body) + } + + show link: set text(links.color) + show link: links.style + + header(data, language, include_links) + + // Portion out the main body using a grid. + grid( + columns: (60%, 40%), + gutter: 1.5em, + // Place the Experience and Personal Projects sections vertically in the + // left column of the grid. + { + experience_section(data, language) + personal_projects_section(data, language) + }, + // And the Skills section in the right column. + skills_section(data, language), + ) +}