Images and content updates

This commit is contained in:
Greg Kilmer
2026-08-06 17:29:26 -04:00
parent 40b2cc8c5d
commit a2a34bfd66
30 changed files with 1287 additions and 791 deletions
+7 -2
View File
@@ -36,6 +36,8 @@ const schema = z.object({
name: z.string().min(1).max(120),
email: z.string().email().max(200),
orderType: orderTypeEnum.default('cards'),
// Filament color for printed items. Optional (only for deckBoxes/both).
color: z.string().max(120).optional().or(z.literal('')),
quantity: z.string().min(1).max(200),
details: z.string().min(10).max(20000),
notes: z.string().max(5000).optional().or(z.literal('')),
@@ -131,7 +133,7 @@ export const POST: APIRoute = async ({ request }) => {
if (!parsed.success) {
return json({ error: 'Please complete all fields correctly, including the policy acknowledgment.', issues: parsed.error.issues }, 400);
}
const { name, email, orderType, quantity, details, notes, turnstileToken } = parsed.data;
const { name, email, orderType, color, quantity, details, notes, turnstileToken } = parsed.data;
// Rate limit.
const ip = clientIp(request);
@@ -147,7 +149,7 @@ export const POST: APIRoute = async ({ request }) => {
// Deliver.
try {
const delivered = await deliver({ name, email, orderType, quantity, details, notes: notes ?? '' });
const delivered = await deliver({ name, email, orderType, color: color ?? '', quantity, details, notes: notes ?? '' });
if (!delivered) {
return json({ error: 'Order delivery is not configured yet. Please email me directly.' }, 503);
}
@@ -163,6 +165,7 @@ interface OrderMessage {
name: string;
email: string;
orderType: string;
color: string;
quantity: string;
details: string;
notes: string;
@@ -180,6 +183,7 @@ async function deliver(msg: OrderMessage): Promise<boolean> {
`Name: ${msg.name}`,
`Email: ${msg.email}`,
`Order type: ${typeLabel}`,
`Color: ${msg.color || '(not specified)'}`,
`Approx quantity: ${msg.quantity}`,
``,
`Details:`,
@@ -226,6 +230,7 @@ async function deliver(msg: OrderMessage): Promise<boolean> {
name: msg.name,
email: msg.email,
orderType: typeLabel,
color: msg.color || undefined,
quantity: msg.quantity,
details: msg.details,
notes: msg.notes,