@tonguetoquill/collection 0.2.3 → 0.2.5-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +39 -39
  3. package/index.d.ts +2 -2
  4. package/index.js +8 -8
  5. package/package.json +41 -41
  6. package/quills/af4141/0.1.0/Quill.yaml +88 -88
  7. package/quills/af4141/0.1.0/design/TASK.md +19 -19
  8. package/quills/af4141/0.1.0/example.md +35 -35
  9. package/quills/af4141/0.1.0/packages/typst-af4141/FIELDS.json +3169 -3169
  10. package/quills/af4141/0.1.0/packages/typst-af4141/form.typ +538 -538
  11. package/quills/af4141/0.1.0/packages/typst-af4141/lib.typ +227 -227
  12. package/quills/af4141/0.1.0/packages/typst-af4141/typst.toml +7 -7
  13. package/quills/af4141/0.1.0/plate.typ +48 -48
  14. package/quills/classic_resume/0.1.0/Quill.yaml +118 -118
  15. package/quills/classic_resume/0.1.0/example.md +232 -232
  16. package/quills/classic_resume/0.1.0/packages/ttq-classic-resume/LICENSE +21 -21
  17. package/quills/classic_resume/0.1.0/packages/ttq-classic-resume/README.md +38 -38
  18. package/quills/classic_resume/0.1.0/packages/ttq-classic-resume/src/components.typ +184 -184
  19. package/quills/classic_resume/0.1.0/packages/ttq-classic-resume/src/layout.typ +42 -42
  20. package/quills/classic_resume/0.1.0/packages/ttq-classic-resume/src/lib.typ +5 -5
  21. package/quills/classic_resume/0.1.0/packages/ttq-classic-resume/typst.toml +26 -26
  22. package/quills/classic_resume/0.1.0/plate.typ +44 -44
  23. package/quills/cmu_letter/0.1.0/.quillignore +30 -30
  24. package/quills/cmu_letter/0.1.0/Quill.yaml +64 -64
  25. package/quills/cmu_letter/0.1.0/assets/cmu-wordmark.svg +174 -174
  26. package/quills/cmu_letter/0.1.0/example.md +30 -30
  27. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/LICENSE +21 -21
  28. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/fonts/README.txt +100 -100
  29. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/src/backmatter.typ +13 -13
  30. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/src/config.typ +39 -39
  31. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/src/frontmatter.typ +72 -72
  32. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/src/lib.typ +47 -47
  33. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/src/mainmatter.typ +42 -42
  34. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/src/primitives.typ +70 -70
  35. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/src/utils.typ +85 -85
  36. package/quills/cmu_letter/0.1.0/packages/tonguetoquill-cmu-letter/typst.toml +17 -17
  37. package/quills/cmu_letter/0.1.0/plate.typ +19 -19
  38. package/quills/daf4392/0.1.0/Quill.yaml +110 -0
  39. package/quills/daf4392/0.1.0/assets/arimo-v35-latin-700.ttf +0 -0
  40. package/quills/daf4392/0.1.0/assets/arimo-v35-latin-700italic.ttf +0 -0
  41. package/quills/daf4392/0.1.0/assets/arimo-v35-latin-italic.ttf +0 -0
  42. package/quills/daf4392/0.1.0/assets/arimo-v35-latin-regular.ttf +0 -0
  43. package/quills/daf4392/0.1.0/assets/page1.png +0 -0
  44. package/quills/daf4392/0.1.0/example.md +33 -0
  45. package/quills/daf4392/0.1.0/packages/daf4392page2_pkg/FIELDS.json +9 -0
  46. package/quills/daf4392/0.1.0/packages/daf4392page2_pkg/form.typ +14 -0
  47. package/quills/daf4392/0.1.0/packages/daf4392page2_pkg/lib.typ +227 -0
  48. package/quills/daf4392/0.1.0/packages/daf4392page2_pkg/out/debug.typ +4 -0
  49. package/quills/daf4392/0.1.0/packages/daf4392page2_pkg/out/example.typ +4 -0
  50. package/quills/daf4392/0.1.0/packages/daf4392page2_pkg/page1.png +0 -0
  51. package/quills/daf4392/0.1.0/packages/daf4392page2_pkg/typst.toml +7 -0
  52. package/quills/daf4392/0.1.0/plate.typ +60 -0
  53. package/quills/taro/0.1.0/Quill.yaml +29 -29
  54. package/quills/taro/0.1.0/example.md +26 -26
  55. package/quills/taro/0.1.0/plate.typ +31 -31
  56. package/quills/usaf_memo/0.1.0/.quillignore +30 -30
  57. package/quills/usaf_memo/0.1.0/Quill.yaml +209 -209
  58. package/quills/usaf_memo/0.1.0/example.md +54 -54
  59. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/LICENSE +21 -21
  60. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/fonts/Cinzel/LICENSE +93 -93
  61. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/fonts/CopperplateCC/LICENSE.md +79 -79
  62. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/fonts/NimbusRomanNo9L/GNU General Public License.txt +339 -339
  63. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/src/backmatter.typ +28 -28
  64. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/src/body.typ +332 -332
  65. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/src/config.typ +63 -63
  66. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/src/frontmatter.typ +114 -114
  67. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/src/indorsement.typ +118 -118
  68. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/src/lib.typ +55 -55
  69. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/src/mainmatter.typ +32 -32
  70. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/src/primitives.typ +272 -272
  71. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/src/utils.typ +377 -377
  72. package/quills/usaf_memo/0.1.0/packages/tonguetoquill-usaf-memo/typst.toml +16 -16
  73. package/quills/usaf_memo/0.1.0/plate.typ +74 -74
  74. package/quills/usaf_memo/0.2.0/.quillignore +30 -30
  75. package/quills/usaf_memo/0.2.0/Quill.yaml +219 -219
  76. package/quills/usaf_memo/0.2.0/example.md +55 -55
  77. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/.gitignore +6 -6
  78. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/LICENSE +21 -21
  79. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/fonts/Cinzel/LICENSE +93 -93
  80. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/fonts/CopperplateCC/LICENSE.md +79 -79
  81. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/fonts/NimbusRomanNo9L/GNU General Public License.txt +339 -339
  82. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/backmatter.typ +28 -28
  83. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/body.typ +333 -333
  84. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/config.typ +64 -64
  85. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/frontmatter.typ +114 -114
  86. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/indorsement.typ +118 -118
  87. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/lib.typ +55 -55
  88. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/mainmatter.typ +32 -32
  89. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/primitives.typ +293 -293
  90. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/utils.typ +374 -374
  91. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/typst.toml +27 -27
  92. package/quills/usaf_memo/0.2.0/plate.typ +75 -75
  93. package/templates/af4141.md +88 -88
  94. package/templates/cmu_letter_template.md +37 -37
  95. package/templates/daf4392.md +33 -0
  96. package/templates/loc.md +78 -78
  97. package/templates/pass_request.md +43 -43
  98. package/templates/rebuttal.md +55 -55
  99. package/templates/taro.md +26 -26
  100. package/templates/templates.json +55 -49
  101. package/templates/usaf_template.md +23 -23
  102. package/templates/ussf_template.md +29 -29
@@ -1,70 +1,70 @@
1
- // primitives.typ: Reusable rendering primitives for CMU letterhead sections
2
- //
3
- // This module implements the visual rendering functions for all sections
4
- // of a CMU letterhead letter following the official guidelines.
5
-
6
- #import "config.typ": *
7
- #import "utils.typ": *
8
-
9
- // =============================================================================
10
- // HEADER RENDERING
11
- // =============================================================================
12
- // Guidelines section 4: Header Composition
13
- // - Wordmark (Top-Left)
14
- // - Sender's Address Block (Immediately below wordmark)
15
-
16
- #let render-header(
17
- wordmark,
18
- department: none,
19
- address: none,
20
- url: none,
21
- ) = {
22
- // CMU Wordmark
23
- // Guidelines 4.1: Width approx 2.25" to 2.5"
24
- if wordmark != none {
25
- let wordmark_content = box(width: 2.5in)[
26
- #set image(width: 100%)
27
- #wordmark
28
- ]
29
-
30
- // Hyperlink wordmark to URL if provided
31
- if url != none {
32
- link("https://" + url)[#wordmark_content]
33
- } else {
34
- wordmark_content
35
- }
36
- linebreak()
37
- }
38
-
39
-
40
- // Sender's Address Block
41
- // Guidelines 4.2: Flush Left
42
-
43
- // Department Name: Bold and darker
44
- if department != none {
45
- text(weight: "bold", fill: black)[#department]
46
- linebreak()
47
- }
48
-
49
- set text(fill: CMU_IRON_GRAY)
50
-
51
- // University Name: Regular
52
- [Carnegie Mellon University]
53
- linebreak()
54
-
55
- // Address Lines: Regular
56
- if address != none {
57
- let address_lines = if type(address) == "string" {
58
- (address,)
59
- } else {
60
- address
61
- }
62
-
63
- for line in address_lines {
64
- [#line]
65
- linebreak()
66
- }
67
- }
68
-
69
- // URL is now hyperlinked to wordmark, not displayed as text
70
- }
1
+ // primitives.typ: Reusable rendering primitives for CMU letterhead sections
2
+ //
3
+ // This module implements the visual rendering functions for all sections
4
+ // of a CMU letterhead letter following the official guidelines.
5
+
6
+ #import "config.typ": *
7
+ #import "utils.typ": *
8
+
9
+ // =============================================================================
10
+ // HEADER RENDERING
11
+ // =============================================================================
12
+ // Guidelines section 4: Header Composition
13
+ // - Wordmark (Top-Left)
14
+ // - Sender's Address Block (Immediately below wordmark)
15
+
16
+ #let render-header(
17
+ wordmark,
18
+ department: none,
19
+ address: none,
20
+ url: none,
21
+ ) = {
22
+ // CMU Wordmark
23
+ // Guidelines 4.1: Width approx 2.25" to 2.5"
24
+ if wordmark != none {
25
+ let wordmark_content = box(width: 2.5in)[
26
+ #set image(width: 100%)
27
+ #wordmark
28
+ ]
29
+
30
+ // Hyperlink wordmark to URL if provided
31
+ if url != none {
32
+ link("https://" + url)[#wordmark_content]
33
+ } else {
34
+ wordmark_content
35
+ }
36
+ linebreak()
37
+ }
38
+
39
+
40
+ // Sender's Address Block
41
+ // Guidelines 4.2: Flush Left
42
+
43
+ // Department Name: Bold and darker
44
+ if department != none {
45
+ text(weight: "bold", fill: black)[#department]
46
+ linebreak()
47
+ }
48
+
49
+ set text(fill: CMU_IRON_GRAY)
50
+
51
+ // University Name: Regular
52
+ [Carnegie Mellon University]
53
+ linebreak()
54
+
55
+ // Address Lines: Regular
56
+ if address != none {
57
+ let address_lines = if type(address) == "string" {
58
+ (address,)
59
+ } else {
60
+ address
61
+ }
62
+
63
+ for line in address_lines {
64
+ [#line]
65
+ linebreak()
66
+ }
67
+ }
68
+
69
+ // URL is now hyperlinked to wordmark, not displayed as text
70
+ }
@@ -1,85 +1,85 @@
1
- // utils.typ: Utility functions for CMU letterhead template
2
- //
3
- // This module provides core utility functions used by the main letterhead template.
4
-
5
- #import "config.typ": *
6
-
7
- // =============================================================================
8
- // SPACING UTILITIES
9
- // =============================================================================
10
-
11
- /// Creates vertical spacing equivalent to multiple blank lines.
12
- ///
13
- /// - count (int): Number of blank lines to create
14
- /// - weak (bool): Whether spacing can be compressed at page breaks
15
- /// -> content
16
- #let blank-lines(count, weak: true) = {
17
- for i in range(0, count) {
18
- v(1.4em)
19
- }
20
- }
21
-
22
- /// Creates vertical spacing equivalent to one blank line.
23
- /// -> content
24
- #let blank-line(weak: true) = blank-lines(1, weak: weak)
25
-
26
- // =============================================================================
27
- // GENERAL UTILITIES
28
- // =============================================================================
29
-
30
- /// Checks if a value is "falsey" (none, false, empty array, or empty string).
31
- ///
32
- /// - value (any): The value to check
33
- /// -> bool
34
- #let falsey(value) = {
35
- value == none or value == false or (type(value) == array and value.len() == 0) or (type(value) == str and value == "")
36
- }
37
-
38
- /// Ensures the input is a string. If an array, joins elements with separator.
39
- ///
40
- /// - value: Any value to normalize to string form
41
- /// - separator: String to use when joining array elements (default: "\n")
42
- /// -> str
43
- #let ensure-string(value, separator: "\n") = {
44
- if value == none {
45
- ""
46
- } else if type(value) == array {
47
- value.join(separator)
48
- } else {
49
- str(value)
50
- }
51
- }
52
-
53
- /// Scales content to fit within a specified box while maintaining aspect ratio.
54
- ///
55
- /// - width (length): Maximum width for the content
56
- /// - height (length): Maximum height for the content
57
- /// - alignment (alignment): Content alignment within the box
58
- /// - body (content): Content to scale and fit
59
- /// -> content
60
- #let fit-box(width: 2in, height: 1in, alignment: left + horizon, body) = context {
61
- let s = measure(body)
62
- let f = calc.min(width / s.width, height / s.height) * 100%
63
- box(width: width, height: height, clip: true)[
64
- #align(alignment)[
65
- #scale(f, reflow: true)[#body]
66
- ]
67
- ]
68
- }
69
-
70
- // =============================================================================
71
- // DATE FORMATTING
72
- // =============================================================================
73
-
74
- /// Formats a date in CMU civilian format: "Month Day, Year"
75
- /// Guidelines section 3.2: Date format is "Month Day, Year" (e.g., November 29, 2025)
76
- ///
77
- /// - date (str|datetime): Date to format
78
- /// -> str
79
- #let display-date(date) = {
80
- if type(date) == str {
81
- date
82
- } else {
83
- date.display("[month repr:long] [day padding:none], [year]")
84
- }
85
- }
1
+ // utils.typ: Utility functions for CMU letterhead template
2
+ //
3
+ // This module provides core utility functions used by the main letterhead template.
4
+
5
+ #import "config.typ": *
6
+
7
+ // =============================================================================
8
+ // SPACING UTILITIES
9
+ // =============================================================================
10
+
11
+ /// Creates vertical spacing equivalent to multiple blank lines.
12
+ ///
13
+ /// - count (int): Number of blank lines to create
14
+ /// - weak (bool): Whether spacing can be compressed at page breaks
15
+ /// -> content
16
+ #let blank-lines(count, weak: true) = {
17
+ for i in range(0, count) {
18
+ v(1.4em)
19
+ }
20
+ }
21
+
22
+ /// Creates vertical spacing equivalent to one blank line.
23
+ /// -> content
24
+ #let blank-line(weak: true) = blank-lines(1, weak: weak)
25
+
26
+ // =============================================================================
27
+ // GENERAL UTILITIES
28
+ // =============================================================================
29
+
30
+ /// Checks if a value is "falsey" (none, false, empty array, or empty string).
31
+ ///
32
+ /// - value (any): The value to check
33
+ /// -> bool
34
+ #let falsey(value) = {
35
+ value == none or value == false or (type(value) == array and value.len() == 0) or (type(value) == str and value == "")
36
+ }
37
+
38
+ /// Ensures the input is a string. If an array, joins elements with separator.
39
+ ///
40
+ /// - value: Any value to normalize to string form
41
+ /// - separator: String to use when joining array elements (default: "\n")
42
+ /// -> str
43
+ #let ensure-string(value, separator: "\n") = {
44
+ if value == none {
45
+ ""
46
+ } else if type(value) == array {
47
+ value.join(separator)
48
+ } else {
49
+ str(value)
50
+ }
51
+ }
52
+
53
+ /// Scales content to fit within a specified box while maintaining aspect ratio.
54
+ ///
55
+ /// - width (length): Maximum width for the content
56
+ /// - height (length): Maximum height for the content
57
+ /// - alignment (alignment): Content alignment within the box
58
+ /// - body (content): Content to scale and fit
59
+ /// -> content
60
+ #let fit-box(width: 2in, height: 1in, alignment: left + horizon, body) = context {
61
+ let s = measure(body)
62
+ let f = calc.min(width / s.width, height / s.height) * 100%
63
+ box(width: width, height: height, clip: true)[
64
+ #align(alignment)[
65
+ #scale(f, reflow: true)[#body]
66
+ ]
67
+ ]
68
+ }
69
+
70
+ // =============================================================================
71
+ // DATE FORMATTING
72
+ // =============================================================================
73
+
74
+ /// Formats a date in CMU civilian format: "Month Day, Year"
75
+ /// Guidelines section 3.2: Date format is "Month Day, Year" (e.g., November 29, 2025)
76
+ ///
77
+ /// - date (str|datetime): Date to format
78
+ /// -> str
79
+ #let display-date(date) = {
80
+ if type(date) == str {
81
+ date
82
+ } else {
83
+ date.display("[month repr:long] [day padding:none], [year]")
84
+ }
85
+ }
@@ -1,17 +1,17 @@
1
- [package]
2
- name = "tonguetoquill-cmu-letter"
3
- version = "0.1.0"
4
- compiler = "0.14.0"
5
- entrypoint = "src/lib.typ"
6
- repository = "https://github.com/nibsbin/tonguetoquill-cmu-letter"
7
- authors = ["Nibs"]
8
- license = "MIT"
9
- description = "Typeset letters that comply with Carnegie Mellon University letterhead standards."
10
- keywords = ["CMU", "Carnegie Mellon", "letterhead", "letter", "university", "official", "correspondence", "formatting"]
11
- categories = ["office", "report"]
12
- disciplines = ["business", "engineering", "education"]
13
-
14
- [template]
15
- path = "template"
16
- entrypoint = "cmu-template.typ"
17
- thumbnail = "template/assets/thumbnail.png"
1
+ [package]
2
+ name = "tonguetoquill-cmu-letter"
3
+ version = "0.1.0"
4
+ compiler = "0.14.0"
5
+ entrypoint = "src/lib.typ"
6
+ repository = "https://github.com/nibsbin/tonguetoquill-cmu-letter"
7
+ authors = ["Nibs"]
8
+ license = "MIT"
9
+ description = "Typeset letters that comply with Carnegie Mellon University letterhead standards."
10
+ keywords = ["CMU", "Carnegie Mellon", "letterhead", "letter", "university", "official", "correspondence", "formatting"]
11
+ categories = ["office", "report"]
12
+ disciplines = ["business", "engineering", "education"]
13
+
14
+ [template]
15
+ path = "template"
16
+ entrypoint = "cmu-template.typ"
17
+ thumbnail = "template/assets/thumbnail.png"
@@ -1,19 +1,19 @@
1
- #import "@local/quillmark-helper:0.1.0": data, eval-markup, parse-date
2
- #import "@local/tonguetoquill-cmu-letter:0.1.0": backmatter, frontmatter, mainmatter
3
-
4
- #show: frontmatter.with(
5
- wordmark: image("assets/cmu-wordmark.svg"),
6
- department: data.department,
7
- address: data.address,
8
- url: data.url,
9
- date: if "date" in data { parse-date(data.date) } else { datetime.today() },
10
- recipient: data.recipient,
11
- )
12
-
13
- #show: mainmatter
14
-
15
- #eval-markup(data.BODY)
16
-
17
- #backmatter(
18
- signature_block: data.signature_block,
19
- )
1
+ #import "@local/quillmark-helper:0.1.0": data, eval-markup, parse-date
2
+ #import "@local/tonguetoquill-cmu-letter:0.1.0": backmatter, frontmatter, mainmatter
3
+
4
+ #show: frontmatter.with(
5
+ wordmark: image("assets/cmu-wordmark.svg"),
6
+ department: data.department,
7
+ address: data.address,
8
+ url: data.url,
9
+ date: if "date" in data { parse-date(data.date) } else { datetime.today() },
10
+ recipient: data.recipient,
11
+ )
12
+
13
+ #show: mainmatter
14
+
15
+ #eval-markup(data.BODY)
16
+
17
+ #backmatter(
18
+ signature_block: data.signature_block,
19
+ )
@@ -0,0 +1,110 @@
1
+ Quill:
2
+ name: daf4392
3
+ version: 0.1.0
4
+ backend: typst
5
+ plate_file: plate.typ
6
+ ui:
7
+ hide_body: true
8
+ example_file: example.md
9
+ description: "DAF Form 4392 - Pre-Departure Safety Briefing (Page 2)"
10
+
11
+ fields:
12
+ transportation_mode:
13
+ title: Mode of Transportation
14
+ type: string
15
+ required: true
16
+ description: "Matches the check box. Valid options: pmv, airplane, bus, train, motorcycle, other."
17
+
18
+ departure_date:
19
+ title: Departure Date
20
+ type: string
21
+ required: true
22
+ description: "Date of initial departure."
23
+
24
+ final_destination:
25
+ title: Final Destination
26
+ type: string
27
+ required: true
28
+ description: "Final travel destination."
29
+
30
+ notes:
31
+ title: Notes
32
+ type: string
33
+ description: "Additional notes or remarks for the travel."
34
+
35
+ organization:
36
+ title: Organization
37
+ type: string
38
+ required: true
39
+ description: "Unit / Organization conducting the brief."
40
+
41
+ briefed_date:
42
+ title: Date Briefed
43
+ type: string
44
+ required: true
45
+ description: "Date the brief took place."
46
+
47
+ briefee_name:
48
+ title: Individual Receiving Brief (Name)
49
+ type: string
50
+ required: true
51
+ description: "Name (Last, First) of the individual receiving the brief."
52
+
53
+ briefee_grade:
54
+ title: Individual Receiving Brief (Grade)
55
+ type: string
56
+ description: "Grade of the individual receiving the brief."
57
+
58
+ briefer_name:
59
+ title: Briefer / Reviewer Name
60
+ type: string
61
+ required: true
62
+ description: "Name (Last, First) of the briefer."
63
+
64
+ briefer_grade:
65
+ title: Briefer / Reviewer Grade
66
+ type: string
67
+ description: "Grade of the briefer."
68
+
69
+ emergency_contact:
70
+ title: Emergency Contact
71
+ type: string
72
+ description: "Name and phone number of the emergency contact person at the bottom of the form."
73
+
74
+ cards:
75
+ itinerary:
76
+ title: Proposed Travel Itinerary
77
+ description: "Each card represents one row in the travel itinerary table. Up to 5 rows are supported."
78
+ ui:
79
+ hide_body: true
80
+ fields:
81
+ date:
82
+ title: Date
83
+ type: string
84
+ ui:
85
+ group: Itinerary Entry
86
+ description: "Date for the itinerary row."
87
+ departure_point:
88
+ title: Departure Point
89
+ type: string
90
+ ui:
91
+ group: Itinerary Entry
92
+ description: "Point of departure."
93
+ arrival_point:
94
+ title: Arrival Point
95
+ type: string
96
+ ui:
97
+ group: Itinerary Entry
98
+ description: "Point of arrival."
99
+ rest_length:
100
+ title: Length of Rest Period
101
+ type: string
102
+ ui:
103
+ group: Itinerary Entry
104
+ description: "Duration of rest period."
105
+ mileage:
106
+ title: Approximate Mileage
107
+ type: string
108
+ ui:
109
+ group: Itinerary Entry
110
+ description: "Approximate mileage for this leg."
@@ -0,0 +1,33 @@
1
+ ---
2
+ QUILL: daf4392
3
+
4
+ transportation_mode: "other"
5
+ departure_date: "XX Mar 26"
6
+ final_destination: "123 Sesame St, Fake City, MS"
7
+ notes: "Visiting Donald Duck over 3 day weekend."
8
+ organization: "333 TRS"
9
+ briefed_date: "XX Mar 26"
10
+ briefee_name: "Doe, Jane"
11
+ briefee_grade: "O-1"
12
+ briefer_name: ""
13
+ briefer_grade: ""
14
+ emergency_contact: "John Doe: 999-999-9999"
15
+ ---
16
+
17
+ ---
18
+ CARD: itinerary
19
+ date: "XX Mar"
20
+ departure_point: "Biloxi, MS"
21
+ arrival_point: "Fake City, MS"
22
+ rest_length: "2 days"
23
+ mileage: "250"
24
+ ---
25
+
26
+ ---
27
+ CARD: itinerary
28
+ date: "XX Mar"
29
+ departure_point: "Fake City, MS"
30
+ arrival_point: "Biloxi, MS"
31
+ rest_length: "0"
32
+ mileage: "0"
33
+ ---
@@ -0,0 +1,9 @@
1
+ {
2
+ "pages": [
3
+ {
4
+ "width": 612.0,
5
+ "height": 792.0
6
+ }
7
+ ],
8
+ "fields": []
9
+ }
@@ -0,0 +1,14 @@
1
+ // form.typ (generated � do not edit)
2
+ #import "lib.typ": render-form
3
+
4
+ #let form(
5
+ debug: false,
6
+
7
+ ) = render-form(
8
+ schema: json("FIELDS.json"),
9
+ backgrounds: ("page1.png",),
10
+ values: (
11
+ ,
12
+ ),
13
+ debug: debug,
14
+ )