diff --git a/apps/web/modules/bookings/views/bookings-single-view.tsx b/apps/web/modules/bookings/views/bookings-single-view.tsx
index 5734dc7f03..04505d7469 100644
--- a/apps/web/modules/bookings/views/bookings-single-view.tsx
+++ b/apps/web/modules/bookings/views/bookings-single-view.tsx
@@ -38,6 +38,7 @@ import isSmsCalEmail from "@calcom/lib/isSmsCalEmail";
import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML";
import { getEveryFreqFor } from "@calcom/lib/recurringStrings";
import { getIs24hClockFromLocalStorage, isBrowserLocale24h } from "@calcom/lib/timeFormat";
+import { getTimeShiftFlags, getFirstShiftFlags } from "@calcom/lib/timeShift";
import { CURRENT_TIMEZONE } from "@calcom/lib/timezoneConstants";
import { localStorage } from "@calcom/lib/webstorage";
import { BookingStatus, SchedulingType } from "@calcom/prisma/enums";
@@ -571,8 +572,14 @@ export default function Success(props: PageProps) {
>
)}
- {isRoundRobin ? (typeof bookingInfo.title === 'string' ? bookingInfo.title : eventName) : eventName}
+
+ {isRoundRobin
+ ? typeof bookingInfo.title === "string"
+ ? bookingInfo.title
+ : eventName
+ : eventName}
{t("when")}
@@ -1163,6 +1170,12 @@ function RecurringBookings({
if (!duration) return null;
if (recurringBookingsSorted && allRemainingBookings) {
+ const shiftFlags = getTimeShiftFlags({
+ dates: recurringBookingsSorted,
+ timezone: tz,
+ });
+ const displayFlags = getFirstShiftFlags(shiftFlags);
+
return (
<>
{eventType.recurringEvent?.count && (
@@ -1197,6 +1210,14 @@ function RecurringBookings({
({formatToLocalizedTimezone(dayjs.utc(dateStr), language, tz)})
+ {displayFlags[idx] && (
+ <>
+ {" "}
+
+ {t("time_shift")}
+
+ >
+ )}
))}
{recurringBookingsSorted.length > 4 && (
@@ -1228,6 +1249,14 @@ function RecurringBookings({
({formatToLocalizedTimezone(dayjs.utc(dateStr), language, tz)})
+ {displayFlags[idx + 4] && (
+ <>
+ {" "}
+
+ {t("time_shift")}
+
+ >
+ )}
))}
diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json
index 35770754e0..558fa5c98b 100644
--- a/apps/web/public/static/locales/en/common.json
+++ b/apps/web/public/static/locales/en/common.json
@@ -125,6 +125,7 @@
"no_available_users_found_error": "No available users found. Could you try another time slot?",
"timeslot_unavailable_book_a_new_time": "The selected time slot is no longer available. <0>Please select a new time0>",
"timeslot_unavailable_short": "Taken",
+ "time_shift": "Time shift",
"just_connected_description": "You’ve just connected. Please book from above slots or retry later.",
"please_try_again_later_or_book_another_slot": "You've just tried connecting now. Please try again later in {{remaining}} minutes or book another slot from the booking page.",
"unavailable_timeslot_title": "Unavailable timeslot",
diff --git a/packages/features/bookings/components/event-meta/Occurences.tsx b/packages/features/bookings/components/event-meta/Occurences.tsx
index e57d39afdc..81d78161de 100644
--- a/packages/features/bookings/components/event-meta/Occurences.tsx
+++ b/packages/features/bookings/components/event-meta/Occurences.tsx
@@ -5,7 +5,9 @@ import type { BookerEvent } from "@calcom/features/bookings/types";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { parseRecurringDates } from "@calcom/lib/parse-dates";
import { getRecurringFreq } from "@calcom/lib/recurringStrings";
+import { getTimeShiftFlags, getFirstShiftFlags } from "@calcom/lib/timeShift";
import { Alert } from "@calcom/ui/components/alert";
+import { Badge } from "@calcom/ui/components/badge";
import { Input } from "@calcom/ui/components/form";
import { Tooltip } from "@calcom/ui/components/tooltip";
@@ -14,13 +16,17 @@ import { useBookerTime } from "../../Booker/components/hooks/useBookerTime";
export const EventOccurences = ({ event }: { event: Pick