feat: add Записаться button to group cards with pre-filled Instagram DM

- BookingModal now accepts optional groupInfo for pre-filled message
- Trainer profile: each group card has Записаться button
- Schedule group view: each group card has Записаться button
- Message includes class type, trainer, days, and time

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-15 16:45:27 +03:00
parent 4f92057411
commit 6981376171
4 changed files with 37 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
"use client";
import { useState, useMemo, useCallback } from "react";
import { BookingModal } from "@/components/ui/BookingModal";
import { CalendarDays, Users, LayoutGrid } from "lucide-react";
import { SectionHeading } from "@/components/ui/SectionHeading";
import { Reveal } from "@/components/ui/Reveal";
@@ -28,6 +29,7 @@ export function Schedule({ data: schedule, classItems }: ScheduleProps) {
const [filterStatus, setFilterStatus] = useState<StatusFilter>("all");
const [filterTime, setFilterTime] = useState<TimeFilter>("all");
const [filterDaySet, setFilterDaySet] = useState<Set<string>>(new Set());
const [bookingGroup, setBookingGroup] = useState<string | null>(null);
const isAllMode = locationMode === "all";
@@ -329,9 +331,15 @@ export function Schedule({ data: schedule, classItems }: ScheduleProps) {
filterTrainer={filterTrainer}
setFilterTrainer={setFilterTrainerFromCard}
showLocation={isAllMode}
onBook={setBookingGroup}
/>
</Reveal>
)}
<BookingModal
open={bookingGroup !== null}
onClose={() => setBookingGroup(null)}
groupInfo={bookingGroup ?? undefined}
/>
</section>
);
}