Files
starr-philproperties/apps/api/templates/certificate.typ
T

66 lines
2.8 KiB
Typst

// ─── Inputs ────────────────────────────────────────────────────────────────────
#let recipient = sys.inputs.at("name", default: "First Name, Last Name")
#let course = sys.inputs.at("course", default: "Course Title")
#let date_str = sys.inputs.at("date", default: "MM/DD/YY")
#let length_str = sys.inputs.at("length", default: "2 hours")
#let cert_no = sys.inputs.at("cert_no", default: "000000-000000-00000")
#let ref_no = sys.inputs.at("ref_no", default: "000X")
#let instructors = sys.inputs.at("instructors", default: "")
// ─── Page ──────────────────────────────────────────────────────────────────────
#set page(
paper: "a4",
flipped: true,
margin: (left: 38pt, right: 38pt, top: 28pt, bottom: 38pt),
)
#set text(font: "Arimo", size: 11pt, fill: black)
#set par(justify: false, leading: 1.2em)
// ─── Header: logo (left) + certificate numbers (right) ────────────────────────
#grid(
columns: (1fr, auto),
align: (left + top, right + top),
image("philpro-logo.png", width: 180pt),
[
#set text(size: 13pt)
Certificate No: #cert_no \
Reference Number: #ref_no
],
)
#v(18pt)
// ─── CERTIFICATE OF COMPLETION label ──────────────────────────────────────────
#text(size: 12pt, fill: rgb("#555555"))[CERTIFICATE OF COMPLETION]
#v(5pt)
// ─── Course title ─────────────────────────────────────────────────────────────
#block[
#set par(leading: 0.65em)
#text(size: 25pt, weight: "bold")[#course]
]
#v(12pt)
// ─── Instructors (only when provided) ────────────────────────────────────────
#if instructors != "" [
#text(size: 13pt, fill: rgb("#555555"))[Instructors]
#linebreak()
#text(size: 15pt, weight: "bold")[#instructors]
]
#v(1fr)
// ─── Bottom: recipient, date, duration, issuer ────────────────────────────────
#text(size: 15pt, weight: "bold")[#recipient]
#linebreak()
#text(size: 12pt)[*Date Issued:* #date_str]
#linebreak()
#if length_str != "" and length_str != "0 mins" [
#text(size: 12pt)[*Duration:* #length_str]
#linebreak()
]
#text(size: 12pt)[*Issued by:* Philproperties]