Skip to content

Commit

Permalink
finely-crafted-cv:0.2.0 (#1533)
Browse files Browse the repository at this point in the history
  • Loading branch information
swaits authored Jan 12, 2025
1 parent e6be223 commit 00c79d8
Show file tree
Hide file tree
Showing 20 changed files with 904 additions and 0 deletions.
21 changes: 21 additions & 0 deletions packages/preview/finely-crafted-cv/0.2.0/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2024 Stephen Waits <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
118 changes: 118 additions & 0 deletions packages/preview/finely-crafted-cv/0.2.0/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# Finely Crafted CV Template

This Typst template provides a clean and professional format for creating a
curriculum vitae (CV) or résumé. It comes with functions and styles to help you
easily generate a well-structured document, complete with sections for
education, experience, skills, and more.

## Features

- **Modern Design:** Aesthetic and professional layout designed for readability.
- **Responsive Header & Footer:** Includes contact information dynamically.

## Usage

To use this template, import it with the version number and utilize the `resume` or `cv` function:

```typst
#import "@preview/finely-crafted-cv:0.2.0": *
#show: resume.with(
name: "Amira Patel",
tagline: "Innovative marine biologist with 15+ years of experience in ocean conservation and research.",
keywords: "marine biology, conservation, research, education, patents",
email: "[email protected]",
phone: "+1-305-555-7890",
linkedin-username: "amirapatel",
thumbnail: image("assets/my-qr-code.svg"),
)
= Introduction
#lorem(100)
= Experience
#company-heading("Some Company", start: "March 2018", end: "Present", icon: image("icons/earth.svg"))[
#job-heading("Some Job", location: "Some Location")[
- Here is an achievement
- Here's another one.
]
// companies can have multiple jobs
#job-heading("First Job", location: "Some Location")[
- Here is an achievement
- Here's another one.
]
]
// for companies which have less detail, you can use the `comment` instead of a
// body of tasks, as follows:
#company-heading("Another Company", start: "July 2005", end: "August 2009", icon: image("icons/microscope.svg"))[
#job-heading("Another Job", location: "Another Location",
comment: [Contributed to 7 published studies. #footnote[Visit https://amirapatel.org/publications for full list of publications.]]
)[]
]
= Education
// school-heading is an alias for company-heading, accepts the same parameters as company-heading
#school-heading("University of California, San Diego", start: "Fall 2001", end: "Spring 2005", icon: image("icons/graduation-cap.svg"))[
// degree-heading is an alias for job-heading, accepts the same parameters as job-heading
#degree-heading("Ph.D. in Marine Biology")[]
]
```

## Functions and Parameters

### `resume` or `cv`

This is the main function to create a CV document.

- **Parameters:**
- `name`: (String) Your full name. Default is "YOUR NAME HERE".
- `tagline`: (String) A brief description of your professional identity or mission.
- `paper`: (String) The paper size, default is "us-letter".
- `heading-font`: (Font) Font for headings, customizable.
- `body-font`: (Font) Font for body text, customizable.
- `body-size`: (Size) Font size for body text.
- `email`: (String) Your email address.
- `phone`: (String) Your phone number.
- `linkedin-username`: (String) Your LinkedIn username.
- `keywords`: (String) Keywords for searchability.
- `thumbnail`: (Image) Thumbnail or QR code image, optional.
- `body`: (Block) The main content of your CV.

### `company-heading`

Used to create a heading for a company or organization.

- **Parameters:**
- `name`: (String) Name of the company.
- `start`: (String) Start date.
- `end`: (String) End date, optional.
- `icon`: (Image) Icon image associated with the company, optional.
- `body`: (Block) Content related to the company role or tasks.

### `job-heading`

Defines a job title within a company heading.

- **Parameters:**
- `title`: (String) Job title.
- `location`: (String) Location of the job, optional.
- `start`: (String) Start date, optional.
- `end`: (String) End date, optional.
- `comment`: (String) Additional comments or notes, optional.
- `body`: (Block) Tasks or responsibilities.

### `school-heading`

Alias for `company-heading`, used for educational institutions.

### `degree-heading`

Alias for `job-heading`, used for academic degrees or certifications.

## License

This template is released under the MIT License.
1 change: 1 addition & 0 deletions packages/preview/finely-crafted-cv/0.2.0/lib.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#import "src/resume.typ": cv, resume, company-heading, job-heading, school-heading, degree-heading
61 changes: 61 additions & 0 deletions packages/preview/finely-crafted-cv/0.2.0/src/constants.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Constants
#let SIZE_HUGE = 1.5em
#let SIZE_LARGE = 1.1em
#let SIZE_NORMAL = 1em
#let SIZE_SMALL = 0.9em
#let SIZE_TINY = 0.7em

#let BODY_FONT = "Source Serif Pro"
#let BODY_SIZE = 11pt
#let BODY_WEIGHT = "light"
#let HEADING_FONT = "Source Sans Pro"

#let PAGE_MARGIN = 0.5in

#let HEADER_SIZE = SIZE_SMALL
#let HEADER_ICON_HEIGHT = SIZE_NORMAL
#let HEADER_ICON_SPACING = 0.25em

#let FOOTER_SIZE = SIZE_TINY
#let FOOTER_TEXT_WEIGHT = "thin"

#let HEADLINE_NAME_SIZE = SIZE_HUGE
#let HEADLINE_NAME_WEIGHT = "bold"
#let HEADLINE_HRULE_STROKE = 1pt + black

#let TAGLINE_SIZE = SIZE_NORMAL
#let TAGLINE_STYLE = "italic"
#let TAGLINE_WEIGHT = "regular"

#let SECTION_HEADING_SIZE = 0.8em // TODO: this seems wrong, should be SIZE_NORMAL (etc)
#let SECTION_HEADING_WEIGHT = "semibold"
#let SECTION_HEADING_HRULE_STROKE = 0.75pt + navy.lighten(10%)
#let SECTION_HEADING_SPACE_ABOVE = 1em
#let SECTION_HEADING_SPACE_BELOW = 0.5em
#let SECTION_HEADING_BLOCK_FILL = luma(100%) //gradient.linear(blue.lighten(99%), luma(100%))
#let SECTION_HEADING_BLOCK_RADIUS = 2pt
#let SECTION_HEADING_BLOCK_OUTSET = 0.2em

#let COMPANY_ICON_SIZE = SIZE_NORMAL
#let COMPANY_ICON_SPACING = 0.25em
#let COMPANY_NAME_SIZE = SIZE_LARGE
#let COMPANY_NAME_WEIGHT = "semibold"
#let COMPANY_DATE_SIZE = COMPANY_NAME_SIZE
#let COMPANY_DATE_WEIGHT = "semibold"
#let COMPANY_BLOCK_BELOW = 1.3em

#let JOB_NAME_SIZE = SIZE_NORMAL
#let JOB_NAME_STYLE = "normal"
#let JOB_NAME_WEIGHT = "medium"
#let JOB_LOCATION_SIZE = SIZE_SMALL
#let JOB_LOCATION_STYLE = JOB_NAME_STYLE
#let JOB_LOCATION_WEIGHT = "light"
#let JOB_BLOCK_ABOVE = 0.6em
#let JOB_BLOCK_BELOW = 1em
#let EMPTY_JOB_NUDGE = -0.75em

#let TABLE_HEADER_COLOR = blue.lighten(70%)
#let TABLE_ZEBRA_COLOR_0 = green.lighten(85%)
#let TABLE_ZEBRA_COLOR_1 = green.lighten(95%)

#let HRULE_HEIGHT = 0.5em
25 changes: 25 additions & 0 deletions packages/preview/finely-crafted-cv/0.2.0/src/helpers.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#import "constants.typ":*

#let icon_and_contact(icon, content) = {
grid(
columns: 2,
align: center+horizon,
gutter: COMPANY_ICON_SPACING,

box(
height: HEADER_ICON_HEIGHT,
width: auto,
image(icon)
),
content
)
}

#let hrule(stroke: 1pt + black) = {
block(
above: HRULE_HEIGHT,
below: 0em,
breakable: false,
line(length: 100%, stroke: stroke)
)
}
20 changes: 20 additions & 0 deletions packages/preview/finely-crafted-cv/0.2.0/src/icons/email.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 00c79d8

Please sign in to comment.