#let input(k, default: "") = sys.inputs.at(k, default: default) #let items = json(bytes(input("items", default: "[]"))) #let logo = input("logo") #set page(paper: "a4", margin: 20mm) #set text(font: "Noto Sans", size: 10pt, fill: rgb("1a1917")) #grid(columns: (1fr, auto), align: (left, right), if logo != "" { image(logo, width: 36mm) } else { text(size: 15pt, weight: 700)[#input("sender")] }, [#text(size: 18pt, weight: 700)[Delivery note] \ #text(fill: luma(110))[#input("no")]]) #v(8mm) #grid(columns: (1fr, 1fr, 1fr), gutter: 8mm, [#text(size: 8pt, fill: luma(110))[SHIP TO] \ #input("ship_to")], [#text(size: 8pt, fill: luma(110))[ORDER] \ #input("order") \ #text(size: 8pt, fill: luma(110))[DATE] \ #input("date")], [#text(size: 8pt, fill: luma(110))[CARRIER] \ #input("carrier")]) #v(8mm) #table(columns: (auto, 1fr, auto, auto, auto), align: (left, left, right, right, center), inset: 7pt, stroke: (x, y) => if y == 0 { (bottom: 0.8pt) } else { (bottom: 0.3pt + luma(200)) }, [*SKU*], [*Article*], [*Ordered*], [*Shipped*], [*Check*], ..items.map(i => (raw(i.sku), i.name, i.ordered, if i.shipped != i.ordered { text(fill: rgb("b8341c"))[#i.shipped] } else { i.shipped }, sym.square)).flatten()) #v(5mm) #if input("note") != "" [#text(size: 9.5pt)[*Note:* #input("note")]] #v(1fr) #grid(columns: (1fr, 1fr), gutter: 20mm, [#line(length: 100%, stroke: 0.5pt) #text(size: 8.5pt, fill: luma(110))[Packed by, date]], [#line(length: 100%, stroke: 0.5pt) #text(size: 8.5pt, fill: luma(110))[Received in good order: name, date, signature]])