table is a grid of columns with an optional header row and a body that repeats one row per element in an array from your data. Repeating table rows is the only loop in the template language — there are no other loops or conditionals.
Columns
Columns are sized exactly likerow cells — relative by weight, or constant by width:
Repeating rows with forEach
The body’sforEach is a dotted path into data that must resolve to an array. Tipar renders the row template once per element, binding the current element to item:
item is only defined inside a table body. Referencing {{item.x}} anywhere else, or pointing forEach at something that isn’t an array, fails with 422.Cells
Every cell — header or body — has the same shape:Cell borders
In v1 a cell border is a bottom rule only — enough for the horizontal lines that make up most tables. Top, left, and right borders aren’t supported yet.
A common pattern: a darker, heavier rule under the header, and a light hairline under each body row.
Multi-page tables
You don’t manage pagination. When a table’s rows overflow the page, Tipar continues it on the next page automatically, re-drawing theheader row at the top. Combine that with a page-number footer for long reports — see the report example.
Next: Images
Embed logos and graphics as base64.