Reschedule Booking Move this booking to a new time. This change takes effect immediately.
{#if showNoticeWarning || showNoShowWarning}

Short Notice Reschedule

{#if hasPayments}

Rescheduling may forfeit deposit protection on payments made.

What this means

"Rescheduling within {Math.round(hoursUntilAppointment)}h of the original time with payments present means deposit protection applies — up to 50% of the total (up to £{( booking.total_amount * 0.5 ).toFixed(2)}) could be retained depending on notice period."

What happens with forgiveness

"We've waived deposit protection on this reschedule as a goodwill gesture. The full amount moves to the new appointment instead of having up to 50% retained as deposit."

{/if}

This time change counts as a no-show toward deposit obligations.

What this means

"This time change will count as a no-show toward your booking history. Two no-shows within 6 months would require a deposit on future bookings."

What happens with forgiveness

"We've waived the no-show record for this reschedule so your deposit obligations are unaffected."

{#snippet trigger()} View full cancellation policy → {/snippet}

{/if}
Current: {parseWallClockDate(booking.start_time).toLocaleDateString('en-GB', { weekday: 'short', day: 'numeric', month: 'short', year: 'numeric' })} at {parseWallClockDate(booking.start_time).toLocaleTimeString('en-GB', { hour: 'numeric', minute: '2-digit', hour12: true })}
{formatUserName( booking.user?.full_name || 'Unknown', booking.user?.previous_first_name, booking.user?.previous_last_name )} · {booking.services?.map((s) => s.service_name).join(', ') || 'No services'} · {bookingDuration} min
{ selectedDate = newDate; selectedTime = null; }} onPlaceholderChange={(newPlaceholder) => { placeholder = newPlaceholder; userNavigatedCalendar = true; }} />
{#if !loadingHours} {#if selectedDate}
{#if formattedSelectedDate}
{formattedSelectedDate}
{/if} { selectedTime = time; }} />
{:else}

Select a date to see available times

{/if} {/if} {#if selectedDate && selectedTime} {/if}