Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | export type PaymentRecurringType = "once" | "monthly" | "quarterly" | "yearly";
export type ProductItemType = {
id: string;
title: string;
amount: string | null;
in_stock?: number | null;
hideInventory?: boolean;
hideSoldOut?: boolean;
inventory?: number | null;
display?: boolean;
description: string;
thumbnail?: string;
paymentType: PaymentRecurringType;
variantID?: string | number;
allowCustomPrice?: boolean;
featureList?: string;
signupFee?: string | null;
signupFeeCheckbox?: boolean;
initialInventory?: number | null;
numSold?: number;
seatingRowIDs?: number[]; // AC006: rows this ticket sells (assigned seating)
};
export type PendingActionType = "back" | "forward" | "reload";
export type donorModalType = "most_recent" | "top_donors";
// --- Assigned seating (PAY Builder 031) ---
// Field names mirror the BE contract exactly (EventSeatingRowView / TakenSeatView /
// EventSeatingConfigView / order.SeatSelection).
export type SeatingRow = {
id?: number; // present once persisted (read side)
rowLabel: string; // any format: "A", "1", "A1"
firstSeat: number;
lastSeat: number;
label?: string; // optional category, e.g. "VIP"
displayOrder?: number;
variantIDs?: number[]; // tickets that sell this row (read side)
};
export type TakenSeat = { rowLabel: string; seatNumber: number };
export type SeatingConfig = {
assignSeating: boolean;
rows: SeatingRow[];
takenSeats?: TakenSeat[];
};
export type SeatSelection = {
seatingRowID: number;
rowLabel: string;
seatNumber: number;
};
|