feat(frontend): integrate custom services across booking flow and routes

Update BookingFlow to support custom service selection, add custom_services to booking types, and link CustomServicesManagement into admin pages. Minor updates to schedules, prices, and today routes.

Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-06-15 16:58:37 +01:00
co-authored by Sisyphus
parent 8f8bf83b64
commit 867f86978b
7 changed files with 36 additions and 7 deletions
@@ -1514,10 +1514,19 @@
{services}
selected={selectedServices}
loading={servicesLoading}
ontoggle={toggleService}
/>
ontoggle={toggleService}
/>
{#if selectedServices.length > 0}
<div class="mt-4 rounded-lg border border-dashed border-gray-300 bg-gray-50 p-4 text-center">
<p class="text-sm text-gray-600">
Need something different? Select the closest service and add a note, or contact us for a bespoke treatment.
</p>
<a href="/contact" class="mt-1 inline-block text-sm font-medium text-blue-600 hover:underline">
Arrange a custom booking →
</a>
</div>
{#if selectedServices.length > 0}
<div class="rounded-lg bg-gray-50 p-4">
<h4 class="mb-2 font-semibold">Selected Services</h4>
<div class="space-y-2">
@@ -744,7 +744,7 @@
{item.data.user_name}
</button>
<div class="flex flex-wrap items-center gap-x-1 text-sm text-gray-600">
<span class="truncate">{item.data.services.join(', ')}</span>
<span class="truncate">{(item.data.services ?? []).join(', ')}</span>
<span
class="shrink-0 rounded-full bg-gray-100 px-1.5 py-0.5 text-xs font-medium"
>