feat: Add anonymous comment to banner

This commit is contained in:
gpt-engineer-app[bot]
2025-10-24 14:36:26 +00:00
parent 5beac21d51
commit 0c2b2dbbff

View File

@ -16,6 +16,7 @@ const petitionSchema = z.object({
const anonymousSchema = z.object({ const anonymousSchema = z.object({
email: z.string().trim().email("Invalid email address").max(255, "Email must be less than 255 characters"), email: z.string().trim().email("Invalid email address").max(255, "Email must be less than 255 characters"),
comment: z.string().trim().max(1000, "Comment must be less than 1000 characters").optional(),
}); });
interface PetitionFormProps { interface PetitionFormProps {
@ -37,7 +38,7 @@ export const PetitionForm = ({ compact = false }: PetitionFormProps) => {
// Validate input based on mode // Validate input based on mode
try { try {
if (isAnonymous) { if (isAnonymous) {
anonymousSchema.parse({ email: formData.email }); anonymousSchema.parse({ email: formData.email, comment: formData.comment });
} else { } else {
petitionSchema.parse(formData); petitionSchema.parse(formData);
} }
@ -56,7 +57,7 @@ export const PetitionForm = ({ compact = false }: PetitionFormProps) => {
.insert([{ .insert([{
name: isAnonymous ? 'Anonymous' : formData.name.trim(), name: isAnonymous ? 'Anonymous' : formData.name.trim(),
email: formData.email.trim(), email: formData.email.trim(),
comment: isAnonymous ? null : (formData.comment.trim() || null), comment: formData.comment.trim() || null,
}]); }]);
if (error) throw error; if (error) throw error;
@ -111,20 +112,18 @@ export const PetitionForm = ({ compact = false }: PetitionFormProps) => {
/> />
</div> </div>
{!isAnonymous && !compact && ( <div>
<div> <Textarea
<Textarea placeholder="Why is Victoria Way Carpark important to you? (Optional)"
placeholder="Why is Victoria Way Carpark important to you? (Optional)" value={formData.comment}
value={formData.comment} onChange={(e) => setFormData({ ...formData, comment: e.target.value })}
onChange={(e) => setFormData({ ...formData, comment: e.target.value })} className="bg-background border-border min-h-24"
className="bg-background border-border min-h-24" />
/> </div>
</div>
)}
{isAnonymous && ( {isAnonymous && (
<p className="text-sm text-muted-foreground"> <p className="text-sm text-muted-foreground">
Your signature will be recorded as "Anonymous" with only your email for verification. Your signature will be recorded as "Anonymous" with your email for verification.
</p> </p>
)} )}