Semi-experimental

pa-sheet and the form primitives shown here (pc-grid, pa-table--plain, the print colour modes, and the rotation / vertical-text utilities) are still stabilising. Class names, modifiers and markup shape may change in upcoming releases — pin an exact version if you build on them, and check the CHANGELOG before upgrading.

Printable paper documents — invoices, orders, quotes, receipts and payment reminders — built from a set of blocks instead of hand-rolled HTML. pa-sheet is the white, centred, A4-width page with a screen-only drop shadow and a built-in @media print layer. Line items reuse the ordinary pa-table; label/value metadata reuse pa-fields / pa-desc-table. The examples below use fictional data (Twin Peaks Ltd. & friends).

window.print() prints the entire document. Each sheet below also has its own button that prints just that one sheet in isolation via pureAdmin.printElement() — no page-level print CSS needed.
Test print colour modes — opens a print preview of the invoice below:
All three print on white paper (never a toner-heavy background). Switch to a dark theme (e.g. Cobalt2) to feel the difference: Ink on paper is pure black-and-white; Theme colours keeps the accent/brand colours (coloured title, logo) on white; Greyscale desaturates those to grey.
Twin Peaks Ltd.

INVOICE No. 2026-0184

Tax invoice
Supplier Twin Peaks Ltd.
251 Fir Avenue
Twin Peaks, 98065
Reg. No.12345678
VAT No.GB12345678
Emailbilling@twinpeaks.example
Bill to Great Northern Hotel Ltd.
1 Riverside Drive
Snoqualmie, 98065
Reg. No.23456789
VAT No.GB23456789
Reference No. 3048117265 Payment code 0558 Order No. 1000883204
Issue date Sep 9, 2026 Due date Sep 23, 2026 Payment method Bank transfer IBAN GB29 8210 4467 0093 1875 22
Description Qty Unit price Discount Amount
Application support Business portal maintenance & incident handling — August 2026 7 days 7,500.00 — 52,500.00
Application support Business portal maintenance & incident handling — September 2026 9 days 7,500.00 — 67,500.00
Scan to pay
Subtotal 120,000.00
Total due €120,000.00

Twin Peaks Ltd. is not a registered VAT payer.

Please note that if the due date shown on this invoice is not met, we will charge interest on late payment at the agreed or statutory rate, along with any contractual penalty where one has been agreed.

Issued by
Received by
Stamp
Supplier Twin Peaks Ltd.
251 Fir Avenue
Twin Peaks, 98065
Reg. No. 12345678 · VAT No. GB12345678
Bill to Double R Diner Ltd.
55 Main Street
Twin Peaks, 98065
Reg. No. 34567890 · VAT No. GB34567890

TAX INVOICE

Invoice No. 2026318
Issue date Sep 10, 2026 Tax point date Aug 12, 2026 Due date Oct 10, 2026 Reference No. 2026318
# Item Qty Unit Unit price (excl. VAT) Line total VAT rate
1Crema pomodoro4.000pcs58.40233.6012.00%
2Fusilli carbonara3.000pcs129.90389.7012.00%
3Fusilli pollo spinaci6.000pcs121.50729.0012.00%
4Gnocchi pollo gorgonzola9.000pcs112.301,010.7012.00%
Taxable base (12%)2,363.00VAT (12%)283.56
Total excl. VAT2,363.00Total VAT283.56
Total due €2,646.56
Blue Rose Telecom Ltd.

Payment Reminder

Customer service Blue Rose Telecom Ltd.
100 Bureau Plaza
Philadelphia, 19106
Tel: 800 000 000
Customer Twin Peaks Ltd.
251 Fir Avenue
Twin Peaks, 98065
Reg. No. 12345678
Contact address Dale Cooper
251 Fir Avenue
Twin Peaks, 98065

Philadelphia, Sep 11, 2026

Dear Sir or Madam, unfortunately we have not yet received your payment for services in the amount of €4,187.60 for billing group No. 38716204. We kindly ask you to settle it by Sep 18, 2026. Your payment reference is 9438716204.

Summary of your outstanding invoices
Invoice No. Due date Outstanding
3184029557 Sep 3, 2026 4,187.60
Total due €4,187.60

If the amount reaches us by the stated date, we will not need to restrict your services. If you have already sent the payment, thank you.

Black Lodge Leasing Ltd.
The owls are not what they seem

INVOICE — Tax document

Bill to Twin Peaks Ltd.
251 Fir Avenue
Twin Peaks, 98065
VAT No. GB12345678 · Reg. No. 12345678
Supplier Black Lodge Leasing Ltd.
5 Sycamore Circle
Glastonbury, 06033
VAT No. GB45678901 · Reg. No. 45678901
Reference account management Issue date Sep 15, 2026 Tax point date Sep 15, 2026
Services invoiced
Total excl. VAT 12,480.00
VAT (21%) on rental 2,620.80
Total incl. VAT €15,100.80
Payment method Direct debit Due date Sep 30, 2026
Twin Peaks Ltd.

PURCHASE ORDER

No. PO-2026-0453
Order from Horne's Department Store Ltd.
1 Great Northern Way
Snoqualmie, 98065
Reg. No. 56789012
Bill to Twin Peaks Ltd.
251 Fir Avenue
Twin Peaks, 98065
Reg. No. 12345678
Ship to Twin Peaks Ltd. — Warehouse B
12 Sparkwood Avenue
Twin Peaks, 98065
Attn: Goods inwards
Order date Sep 12, 2026 Requested delivery Sep 26, 2026 Payment terms Net 30 Buyer Dale Cooper
Item code Description Qty Unit Unit price Amount
TP-COF-001Damn fine coffee (1 kg)40bag18.00720.00
TP-PIE-002Cherry pie (whole)25ea12.50312.50
TP-DON-003Assorted donuts (dozen)30box9.00270.00
TP-LOG-004Douglas fir log (decorative)5ea45.00225.00
Subtotal 1,527.50
Shipping 40.00
Order total €1,567.50

Please confirm receipt of this order and the expected dispatch date. Deliver during business hours (8:00–16:00). Quote the order number on all documents and packages.

Ordered by
Authorized by
Twin Peaks Ltd.

DELIVERY NOTE

No. DN-2026-0088
From Twin Peaks Ltd.
251 Fir Avenue
Twin Peaks, 98065
Deliver to Great Northern Hotel Ltd.
1 Riverside Drive
Snoqualmie, 98065
Attn: Goods inwards
Invoice to Great Northern Hotel Ltd.
1 Riverside Drive
Snoqualmie, 98065
Order ref. PO-2026-0453 Dispatch date Sep 14, 2026 Carrier Blue Pine Logistics Tracking BPL-7742-0091-CZ
# Item code Description Ordered Delivered Back-order Unit Unit price Discount Line total
1TP-COF-001Damn fine coffee (1 kg)40400bag18.00—720.00
2TP-PIE-002Cherry pie (whole)25250ea12.50—312.50
3TP-DON-003Assorted donuts (dozen)30246box9.00—216.00
4TP-LOG-004Douglas fir log (decorative)550ea45.00—225.00
5TP-TEA-005Fine herbal tea (100 bags)12120box22.00—264.00
Total delivered value €1,737.50

Item 3 is partially delivered — 6 units on back-order, expected within 5 business days. Please check goods on receipt and report discrepancies within 48 hours.

Dispatched by
Received by (name & signature)
Built entirely from generic pc-grid + pa-table--plain + utilities — no CN23-specific classes.
From De
Name
Business
Street
Postcode
City
Country
To A
Name
Business
Street
Postcode
City
Country
CUSTOMS DECLARATION
No. of item (barcode, if any)
May be opened officially
DÉCLARATION EN DOUANE
Peut être ouvert d'office
CN 23
Important!
See instructions on the back
Sender's Customs reference (if any)
Importer's reference (tax code/VAT No.) (optional)
Importer's telephone/fax/e-mail (if known)
Detailed Description of Contents (1)
Description détaillée du contenu
Quantity (2) Net Weight (3) Value (5) For commercial items only
Pour les envois commerciaux seulement
HS Tariff Number (7) Country of Origin of Goods (8)
Total Gross Weight (4) Total Value (6) Postal Charges/Fees (9)
Category of Item (10) Catégorie de l'envoi
Office of Origin and Date of Posting
Bureau d'origine Date de dépôt
Comments (11): (e.g.: goods subject to quarantine, sanitary/phytosanitary inspection or other restrictions)
I certify that the particulars given in this customs declaration are correct and that this item does not contain any dangerous article or articles prohibited by legislation or by postal or customs regulations
No(s). of licence(s)
No(s). of certificate(s)
No. of invoice
Date and Sender's Signature (15)
Same pa-sheet regions as the LTR invoice — only dir="rtl" added; everything mirrors via logical properties.
متجر الأصالة

فاتورة ضريبية مبسطة

Simplified Tax Invoice · رقم الفاتورة INV-2026-0453
البائع · Seller مؤسسة متجر الأصالة للتجارة
طريق الملك فهد، حي العليا
الرياض ١٢٢١١، المملكة العربية السعودية
الرقم الضريبي300123456700003
السجل التجاري1010112233
العميل · Customer شركة الشمال الكبرى
شارع النيل، حي الشاطئ
جدة ٢٣٤٤٢
الرقم الضريبي311223344500002
تاريخ الإصدار ٢٤ سبتمبر ٢٠٢٦ · 14:32 تاريخ التوريد ٢٤ سبتمبر ٢٠٢٦ طريقة الدفع مدى · بطاقة
الوصف · Description الكمية سعر الوحدة المبلغ (ر.س)
تمر العجوة الفاخر Premium Ajwa dates — علبة ١ كجم ٢ 85.00 170.00
قهوة عربية مطحونة Ground Arabic coffee — كيس ٥٠٠ جم ٣ 45.00 135.00
زعفران فاخر Premium saffron — علبة ٥ جم ١ 120.00 120.00
امسح للتحقق · Scan to verify
المجموع الفرعي 425.00
ضريبة القيمة المضافة (١٥٪) 63.75
الإجمالي المستحق 488.75 ر.س

جميع المبالغ بالريال السعودي وشاملة ضريبة القيمة المضافة بنسبة ١٥٪.

شكراً لتسوقكم لدى متجر الأصالة — Thank you for shopping with us.

البائع
المستلم

CSS Classes Reference

Block & modifiers
  • pa-sheet - A4-width white page, centred, screen shadow, built-in print layer
  • pa-sheet--framed - Hairline outer border
  • pa-sheet--compact / --spacious - Tighter / looser padding + region rhythm
  • pa-sheet--fluid - Fill the container instead of clamping to A4 width
  • pa-sheet--fill - Full A4-height page; the last region (footer) sinks to the page bottom even when content is short. Prints on exactly one page.
  • pa-sheet--landscape - A4 landscape (297×210mm) for wide, many-column tables. Best printed on its own via pureAdmin.printElement(), which gives it a landscape page automatically; a whole-page window.print() keeps one orientation, so it stays portrait there.
  • pa-sheet--print-color - Print the accent/brand colours (title, logo, status) on white paper. Default is pure ink-on-paper.
  • pa-sheet--print-grayscale - Like --print-color, desaturated to grey. No mode floods the background.
Regions
  • pa-sheet__masthead (--ruled) - Top band; __brand, __logo, __doctitle, __docmeta
  • pa-sheet__parties (--cols-3) - Party grid; __party (--boxed / --strong), __party-label, __party-name, __party-body
  • pa-sheet__meta (--boxed) - Right-aligned label/value grid; __meta-label, __meta-value
  • pa-sheet__title - Generic titled-section heading
  • pa-sheet__totals (--start) - End-aligned summary column; __total-row (--grand), __total-label, __total-value
  • pa-sheet__notes - Prose block (terms, reminder copy)
  • pa-sheet__barcode - Barcode slot (inject inline SVG, e.g. Code128 via JsBarcode)
  • pa-sheet__qr / __qr-label - QR slot with a caption below the code
  • pa-sheet__footer - __signatures → __sign; __legal; __pageno
Compose with existing blocks
  • Line items → pa-table-container > pa-table (any modifier) — the wrapper scrolls a wide table on mobile; the sheet strips its frame
  • Two-line item cell → pa-table__item-title + pa-table__item-desc inside a <td> (name + italic spec/description)
  • Metadata / party pairs → pa-fields, pa-desc-table
  • Tax-breakdown box → pa-table or pa-desc-table
  • Chapter-style terms → pa-document (numbered clauses)
Runtime tokens (CSS variables)
  • --pa-sheet-width - Page width (default 210mm)
  • --pa-sheet-height - Page height for --fill on screen (default 297mm)
  • --pa-sheet-padding - Inner page margin on screen
  • --pa-sheet-gap - Vertical rhythm between regions
  • --pa-sheet-rule-color - Masthead/total rule colour
  • --pa-sheet-totals-width - Width of the totals column (default 42rem)
  • --pa-sheet-sign-height - Blank height of a signature slot (default 6rem)
  • --pa-sheet-qr-size - QR code square size (default 12rem)

Barcodes & QR codes: the framework ships only the placement slots (pa-sheet__barcode / pa-sheet__qr) — generate the code itself as inline SVG (JsBarcode, a QR library, or a server-rendered image). Use SVG, not <canvas>: a canvas prints blank via printElement() and blurs at print DPI. This demo uses JsBarcode + qrcode-generator (both SVG).

Printing (JavaScript)
  • window.print() - Prints the whole document (use with your own @media print to hide app chrome)
  • pureAdmin.printElement(target, { title }) - Prints a single element in isolation. target = element, CSS selector, or event. Clones it into a hidden iframe with the page's styles + theme mode.
  • pureAdmin.printSheet(this, { title }) - From a button inside a sheet; climbs to the enclosing .pa-sheet
  • data-print-omit / .pa-print-hide - Mark elements (e.g. the print button itself) to strip from the printout

The sheet ships its own @media print rules and a default @page { size: A4 }. The page margin is intentionally not set — the browser's own margin (the Margins setting the user picks in the print dialog) governs it; to pin a fixed margin, declare @page { margin: 15mm } after the framework. pureAdmin.printElement() (in src/js/sheet-print.js) is the reliable way to print one sheet without a page-level print stylesheet — the browser has no native single-element print.

Type / for commands, : to search a category, or just start typing

Settings

Press Ctrl+K to preview the palette.
Body text size. All elements scale proportionally.

John Doe

Administrator
  • Dashboard
  • Forms
  • Tables
  • Data Grid