@airmark/quiver 0.24.4 → 0.24.6
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.
- package/package.json +1 -1
- package/quills/usaf_memo/0.2.0/Quill.yaml +55 -55
- package/quills/usaf_memo/0.2.0/assets/Freedom250_USAF.png +0 -0
- package/quills/usaf_memo/0.2.0/assets/Freedom250_USSF.png +0 -0
- package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/frontmatter.typ +2 -0
- package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/src/primitives.typ +21 -7
- package/quills/usaf_memo/0.2.0/plate.typ +4 -1
- package/quills/usaf_memo/0.2.0/assets/freedom250.png +0 -0
package/package.json
CHANGED
|
@@ -107,6 +107,61 @@ main:
|
|
|
107
107
|
compact: true
|
|
108
108
|
description: Show the America 250 / Freedom 250 commemorative emblem in the letterhead, mirrored opposite the seal.
|
|
109
109
|
|
|
110
|
+
classification:
|
|
111
|
+
type: string
|
|
112
|
+
enum:
|
|
113
|
+
- ""
|
|
114
|
+
- UNCLASSIFIED
|
|
115
|
+
- CUI
|
|
116
|
+
- CONFIDENTIAL
|
|
117
|
+
- SECRET
|
|
118
|
+
- TOP SECRET
|
|
119
|
+
default: ""
|
|
120
|
+
ui:
|
|
121
|
+
group: Classification
|
|
122
|
+
compact: true
|
|
123
|
+
description: "Select the classification marking shown in the header and footer banner. Unclassified documents typically omit this banner entirely — leave blank unless the document is CUI or classified. Mark per DAFI 16-1404 (DoDM 5200.48 for CUI) and applicable DoD guidance."
|
|
124
|
+
|
|
125
|
+
dissemination:
|
|
126
|
+
type: string
|
|
127
|
+
default: ""
|
|
128
|
+
ui:
|
|
129
|
+
group: Classification
|
|
130
|
+
compact: true
|
|
131
|
+
description: "Banner dissemination suffix appended after double slash (e.g. 'NF' renders as CUI//NF in the header/footer). Leave blank for no suffix."
|
|
132
|
+
|
|
133
|
+
cui_controlled_by:
|
|
134
|
+
type: string
|
|
135
|
+
default: ""
|
|
136
|
+
ui:
|
|
137
|
+
group: Classification
|
|
138
|
+
compact: true
|
|
139
|
+
description: "Office or organization that designated this information as CUI (e.g., 'SAF/AA'). Required by DoDM 5200.48 when classification is CUI."
|
|
140
|
+
|
|
141
|
+
cui_category:
|
|
142
|
+
type: string
|
|
143
|
+
default: ""
|
|
144
|
+
ui:
|
|
145
|
+
group: Classification
|
|
146
|
+
compact: true
|
|
147
|
+
description: "CUI category from the DoD CUI Registry (e.g., 'Privacy/MED', 'CTI', 'PRVCY'). Leave blank to omit."
|
|
148
|
+
|
|
149
|
+
cui_limited_dissemination:
|
|
150
|
+
type: string
|
|
151
|
+
default: ""
|
|
152
|
+
ui:
|
|
153
|
+
group: Classification
|
|
154
|
+
compact: true
|
|
155
|
+
description: "Limited dissemination control shown in the indicator block (e.g., 'FEDONLY', 'NOFORN'). Independent from the banner suffix above."
|
|
156
|
+
|
|
157
|
+
cui_poc:
|
|
158
|
+
type: string
|
|
159
|
+
default: ""
|
|
160
|
+
ui:
|
|
161
|
+
group: Classification
|
|
162
|
+
compact: true
|
|
163
|
+
description: "Point of contact for CUI questions (e.g., 'Capt J. Smith, DSN 555-1234, john.smith@us.af.mil'). Required by DoDM 5200.48 when classification is CUI."
|
|
164
|
+
|
|
110
165
|
references:
|
|
111
166
|
type: array
|
|
112
167
|
items:
|
|
@@ -180,61 +235,6 @@ main:
|
|
|
180
235
|
compact: true
|
|
181
236
|
description: YYYY-MM-DD. Leave blank to use today's date.
|
|
182
237
|
|
|
183
|
-
classification:
|
|
184
|
-
type: string
|
|
185
|
-
enum:
|
|
186
|
-
- ""
|
|
187
|
-
- UNCLASSIFIED
|
|
188
|
-
- CUI
|
|
189
|
-
- CONFIDENTIAL
|
|
190
|
-
- SECRET
|
|
191
|
-
- TOP SECRET
|
|
192
|
-
default: ""
|
|
193
|
-
ui:
|
|
194
|
-
group: Classification
|
|
195
|
-
compact: true
|
|
196
|
-
description: "Select the classification marking shown in the header and footer banner. Unclassified documents typically omit this banner entirely — leave blank unless the document is CUI or classified. Mark per DAFI 16-1404 (DoDM 5200.48 for CUI) and applicable DoD guidance."
|
|
197
|
-
|
|
198
|
-
dissemination:
|
|
199
|
-
type: string
|
|
200
|
-
default: ""
|
|
201
|
-
ui:
|
|
202
|
-
group: Classification
|
|
203
|
-
compact: true
|
|
204
|
-
description: "Banner dissemination suffix appended after double slash (e.g. 'NF' renders as CUI//NF in the header/footer). Leave blank for no suffix."
|
|
205
|
-
|
|
206
|
-
cui_controlled_by:
|
|
207
|
-
type: string
|
|
208
|
-
default: ""
|
|
209
|
-
ui:
|
|
210
|
-
group: Classification
|
|
211
|
-
compact: true
|
|
212
|
-
description: "Office or organization that designated this information as CUI (e.g., 'SAF/AA'). Required by DoDM 5200.48 when classification is CUI."
|
|
213
|
-
|
|
214
|
-
cui_category:
|
|
215
|
-
type: string
|
|
216
|
-
default: ""
|
|
217
|
-
ui:
|
|
218
|
-
group: Classification
|
|
219
|
-
compact: true
|
|
220
|
-
description: "CUI category from the DoD CUI Registry (e.g., 'Privacy/MED', 'CTI', 'PRVCY'). Leave blank to omit."
|
|
221
|
-
|
|
222
|
-
cui_limited_dissemination:
|
|
223
|
-
type: string
|
|
224
|
-
default: ""
|
|
225
|
-
ui:
|
|
226
|
-
group: Classification
|
|
227
|
-
compact: true
|
|
228
|
-
description: "Limited dissemination control shown in the indicator block (e.g., 'FEDONLY', 'NOFORN'). Independent from the banner suffix above."
|
|
229
|
-
|
|
230
|
-
cui_poc:
|
|
231
|
-
type: string
|
|
232
|
-
default: ""
|
|
233
|
-
ui:
|
|
234
|
-
group: Classification
|
|
235
|
-
compact: true
|
|
236
|
-
description: "Point of contact for CUI questions (e.g., 'Capt J. Smith, DSN 555-1234, john.smith@us.af.mil'). Required by DoDM 5200.48 when classification is CUI."
|
|
237
|
-
|
|
238
238
|
card_kinds:
|
|
239
239
|
indorsement:
|
|
240
240
|
description: Chain of routing endorsements. Each endorsement block adds an official response or forwarding action to the original memo.
|
|
Binary file
|
|
Binary file
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
letterhead_seal: none,
|
|
21
21
|
letterhead_seal_subtitle: none, // optional line under seal (9pt bold caps); ignored if no seal
|
|
22
22
|
letterhead_emblem: none, // optional image placed opposite the seal (right side)
|
|
23
|
+
letterhead_emblem_height: 1in, // emblem fit-box height; reduce for shorter emblems
|
|
23
24
|
letterhead_font: DEFAULT_LETTERHEAD_FONTS,
|
|
24
25
|
body_font: DEFAULT_BODY_FONTS,
|
|
25
26
|
font_size: 12pt,
|
|
@@ -175,6 +176,7 @@
|
|
|
175
176
|
letterhead-seal: letterhead_seal,
|
|
176
177
|
letterhead-seal-subtitle: letterhead_seal_subtitle,
|
|
177
178
|
letterhead-emblem: letterhead_emblem,
|
|
179
|
+
letterhead-emblem-height: letterhead_emblem_height,
|
|
178
180
|
)
|
|
179
181
|
|
|
180
182
|
// AFH 33-337 "Date": "Place the date 1 inch from the right edge, 1.75 inches from the top"
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
letterhead-seal: none,
|
|
22
22
|
letterhead-seal-subtitle: none,
|
|
23
23
|
letterhead-emblem: none, // optional image placed opposite the seal (right side)
|
|
24
|
+
letterhead-emblem-height: 1in, // emblem fit-box height; reduce for shorter emblems
|
|
24
25
|
) = {
|
|
25
26
|
font = ensure-array(font)
|
|
26
27
|
title = ensure-string(title)
|
|
@@ -28,6 +29,16 @@
|
|
|
28
29
|
title = upper(title)
|
|
29
30
|
caption = upper(caption)
|
|
30
31
|
|
|
32
|
+
// Letterhead corner geometry. The seal (left) and emblem (right) share one
|
|
33
|
+
// reference band so the corners stay in parity: both bleed `corner-overhang`
|
|
34
|
+
// past the page margin and center on the same axis (`band-center`). The
|
|
35
|
+
// emblem may be shorter than the band but stays centered on that axis.
|
|
36
|
+
let corner-overhang = 0.5in
|
|
37
|
+
let corner-width = 2in
|
|
38
|
+
let band-height = 1in // seal height; also the emblem's reference band
|
|
39
|
+
let band-top = -band-height / 2 // puts the band center at dy 0
|
|
40
|
+
let band-center = band-top + band-height / 2
|
|
41
|
+
|
|
31
42
|
place(
|
|
32
43
|
dy: 0.625in - spacing.margin,
|
|
33
44
|
box(
|
|
@@ -51,7 +62,7 @@
|
|
|
51
62
|
if letterhead-seal != none {
|
|
52
63
|
let seal-body = if falsey(letterhead-seal-subtitle) {
|
|
53
64
|
block[
|
|
54
|
-
#fit-box(width:
|
|
65
|
+
#fit-box(width: corner-width, height: band-height)[#letterhead-seal]
|
|
55
66
|
]
|
|
56
67
|
} else {
|
|
57
68
|
// Isolate seal column from document `font_size`: stack `em` spacing and subtitle
|
|
@@ -63,26 +74,29 @@
|
|
|
63
74
|
// Spacing applies between positional stack children only, not one `[…]` body.
|
|
64
75
|
#stack(
|
|
65
76
|
spacing: 0.5em,
|
|
66
|
-
fit-box(width:
|
|
77
|
+
fit-box(width: corner-width, height: band-height)[#letterhead-seal],
|
|
67
78
|
box(upper(ensure-string(letterhead-seal-subtitle))),
|
|
68
79
|
)
|
|
69
80
|
]
|
|
70
81
|
}
|
|
71
82
|
place(
|
|
72
83
|
left + top,
|
|
73
|
-
dx: -
|
|
74
|
-
dy:
|
|
84
|
+
dx: -corner-overhang,
|
|
85
|
+
dy: band-top,
|
|
75
86
|
seal-body,
|
|
76
87
|
)
|
|
77
88
|
}
|
|
78
89
|
|
|
79
90
|
if letterhead-emblem != none {
|
|
91
|
+
// Mirror the seal: same overhang and width, centered on the seal's band
|
|
92
|
+
// axis. Placing the emblem's top at `band-center - height/2` keeps its
|
|
93
|
+
// center on `band-center` for any (possibly shorter) emblem height.
|
|
80
94
|
place(
|
|
81
95
|
right + top,
|
|
82
|
-
dx:
|
|
83
|
-
dy:
|
|
96
|
+
dx: corner-overhang,
|
|
97
|
+
dy: band-center - letterhead-emblem-height / 2,
|
|
84
98
|
block[
|
|
85
|
-
#fit-box(width:
|
|
99
|
+
#fit-box(width: corner-width, height: letterhead-emblem-height, alignment: right + horizon)[#letterhead-emblem]
|
|
86
100
|
],
|
|
87
101
|
)
|
|
88
102
|
}
|
|
@@ -17,7 +17,10 @@
|
|
|
17
17
|
|
|
18
18
|
// Optional Freedom 250 emblem, placed opposite the seal
|
|
19
19
|
..if data.at("freedom250", default: false) {
|
|
20
|
-
(
|
|
20
|
+
(
|
|
21
|
+
letterhead_emblem: image("assets/Freedom250_USAF.png"),
|
|
22
|
+
letterhead_emblem_height: 0.58in,
|
|
23
|
+
)
|
|
21
24
|
},
|
|
22
25
|
|
|
23
26
|
// Date
|
|
Binary file
|