feat: manage waitlist and remove group members

- Add group-waitlist module (list/promote/remove entries)
- Remove attendee with optional atomic promotion from waitlist
- Block removal when attendee has payments (attendee_has_payments)
- Waitlist detail modal matching members UI; optimistic add-to-waitlist
- Responsive tweaks for the members/waitlist tabs
This commit is contained in:
Jose Selesan
2026-09-22 17:04:41 -03:00
parent 785d54df7e
commit fc30927b8b
19 changed files with 1417 additions and 103 deletions

View File

@@ -50,4 +50,21 @@ export const CreateGroupWaitlistEntrySchema = z.object({
email: z.string().trim().email('Email inválido').optional().or(z.literal('')),
notes: z.string().trim().optional(),
});
export type CreateGroupWaitlistEntry = z.output<typeof CreateGroupWaitlistEntrySchema>;
export type CreateGroupWaitlistEntry = z.output<typeof CreateGroupWaitlistEntrySchema>;
export const GroupWaitlistQuerySchema = z.object({
page: pageSchema,
pageSize: pageSizeSchema,
});
export type GroupWaitlistQuery = z.output<typeof GroupWaitlistQuerySchema>;
export const GroupWaitlistListSchema = z.object({
data: z.array(GroupWaitlistEntryDtoSchema),
pagination: paginationSchema,
});
export type GroupWaitlistList = z.output<typeof GroupWaitlistListSchema>;
export const RemoveGroupWaitlistEntryResultSchema = z.object({
deleted: z.boolean(),
});
export type RemoveGroupWaitlistEntryResult = z.output<typeof RemoveGroupWaitlistEntryResultSchema>;