accept-tos.typ (1797B)
1 // Form to render ToS acceptance form. 2 3 #let form(data) = { 4 set page( 5 paper: "a4", 6 margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2.5cm), 7 footer: context [ 8 #grid( 9 columns: (1fr, 1fr), 10 align: (left, right), 11 text(size: 8pt)[ 12 ], 13 text(size: 8pt)[ 14 Page #here().page() of #counter(page).final().first() 15 ] 16 ) 17 ] 18 ) 19 20 set text(font: "Liberation Sans", size: 10pt) 21 set par(justify: false, leading: 0.65em) 22 23 // Helper function to get value or empty string 24 let get(key, default: "") = { 25 data.at(key, default: default) 26 } 27 28 // Helper function for checkbox 29 let checkbox(checked) = { 30 box( 31 width: 3mm, 32 height: 3mm, 33 stroke: 0.5pt + black, 34 inset: 0.3mm, 35 if checked == true or checked == "true" { 36 place(center + horizon, text(size: 8pt, sym.checkmark)) 37 } 38 ) 39 } 40 41 // Header 42 align(center, text(size: 11pt, weight: "bold")[CONFIDENTIAL]) 43 44 v(0.5em) 45 46 grid( 47 columns: (50%, 50%), 48 gutter: 1em, 49 image("taler-logo.svg", width: 80%), 50 align(right)[ 51 #table( 52 columns: (1fr, 1fr), 53 stroke: 0.5pt + black, 54 inset: 5pt, 55 align: (left, left), 56 [AMLA File No.], 57 [#get("FILE_NUMBER")] 58 ) 59 ] 60 ) 61 62 v(1em) 63 64 // Section 1: Acceptance data 65 text(size: 11pt, weight: "bold")[Accepted terms of service:] 66 67 v(0.5em) 68 69 block(breakable: false)[ 70 #v(0.5em) 71 #table( 72 columns: (35%, 65%), 73 stroke: 0.5pt + black, 74 inset: 5pt, 75 [Version:], [#get("ACCEPTED_TERMS_OF_SERVICE")], 76 [Downloaded:], [#checkbox(get("DOWNLOADED_TERMS_OF_SERVICE"))], 77 ) 78 #v(0.5em) 79 ] 80 } 81 82 // Example usage: 83 #form(( 84 "ACCEPTED_TERMS_OF_SERVICE": "v1", 85 "DOWNLOADED_TERMS_OF_SERVICE": true, 86 ))