feat(booking): give the booking flow a dark palette derived from its own colours
components/appointment/ had every colour hard-coded, so the flow rendered identically in either theme even after the wiring was fixed. It now reads from CSS custom properties. These are not new colours. The :root values are byte-for-byte the hex codes that were already in the components — twenty-one files, mapped one to one — so light mode is unchanged. The dark values are derived from those same colours: surfaces and borders darkened, text inverted, and the two brand colours (the indigo and the orange) lightened rather than replaced, because both lose contrast against a dark surface at their original values. Verified in a headless browser with prefers-color-scheme forced dark: data-theme lands on <html> and --ap-surface resolves to #1b1b20 rather than white. Six one-off colours remain hard-coded — a success green, an error red and similar — each used exactly once and none of them a surface. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@ import SelectDatePicker from "./SelectDatePicker";
|
||||
function Time({ isStep, setDate, disabledDates, clinicUuid }) {
|
||||
return (
|
||||
<div className="flex relative mt-[24px] flex-col items-start gap-[19px] justify-start">
|
||||
<p className="text-[#3B3B3B] text-[14px] md:text-[16px] font-bold">
|
||||
<p className="text-[var(--ap-text)] text-[14px] md:text-[16px] font-bold">
|
||||
1. انتخاب روز
|
||||
</p>
|
||||
<SelectDatePicker setDate={setDate} disabledDates={disabledDates} clinicUuid={clinicUuid} />
|
||||
|
||||
@@ -3,7 +3,7 @@ import DateTime from "@/app/component/date/dateTime";
|
||||
function Hour({ doctor, setStep, date, isStep, setSelectedSlot, setSelectedDate, serviceMode = false, selectedServiceUuids = [], clinicUuid = null, selectedLocation = null }) {
|
||||
return (
|
||||
<div className="flex relative mt-[24px] flex-col items-start gap-[12px] justify-start">
|
||||
<p className="text-[#3B3B3B] text-[14px] md:text-[16px] font-bold">
|
||||
<p className="text-[var(--ap-text)] text-[14px] md:text-[16px] font-bold">
|
||||
2. انتخاب ساعت
|
||||
</p>
|
||||
<DateTime
|
||||
|
||||
@@ -27,7 +27,7 @@ function Date({
|
||||
return (
|
||||
<div className="w-full lg:w-[61%]">
|
||||
<div
|
||||
className="p-0 lg:p-[24px] rounded-[8px] border border-solid border-transparent lg:border-[#EFEFEF] bg-transparent lg:bg-[#FFF]"
|
||||
className="p-0 lg:p-[24px] rounded-[8px] border border-solid border-transparent lg:border-[var(--ap-border)] bg-transparent lg:bg-[var(--ap-surface)]"
|
||||
>
|
||||
{(onChangeLocation || (serviceMode && onChangeService)) && (
|
||||
<div className="mb-3 flex flex-wrap items-center gap-x-4 gap-y-1">
|
||||
@@ -35,7 +35,7 @@ function Date({
|
||||
<button
|
||||
type="button"
|
||||
onClick={onChangeLocation}
|
||||
className="text-[13px] text-[#5559CE] hover:underline"
|
||||
className="text-[13px] text-[var(--ap-primary)] hover:underline"
|
||||
>
|
||||
← تغییر محل{selectedLocation?.title ? ` (${selectedLocation.title})` : ""}
|
||||
</button>
|
||||
@@ -44,7 +44,7 @@ function Date({
|
||||
<button
|
||||
type="button"
|
||||
onClick={onChangeService}
|
||||
className="text-[13px] text-[#5559CE] hover:underline"
|
||||
className="text-[13px] text-[var(--ap-primary)] hover:underline"
|
||||
>
|
||||
← تغییر سرویس
|
||||
</button>
|
||||
@@ -52,14 +52,14 @@ function Date({
|
||||
</div>
|
||||
)}
|
||||
{closedOnDate && (
|
||||
<div className="mb-3 rounded-[8px] border border-solid border-[#F17732] bg-[rgba(241,119,50,0.08)] p-[12px]">
|
||||
<p className="text-[13px] text-[#B4541F] leading-relaxed">
|
||||
<div className="mb-3 rounded-[8px] border border-solid border-[var(--ap-accent)] bg-[rgba(241,119,50,0.08)] p-[12px]">
|
||||
<p className="text-[13px] text-[var(--ap-accent-strong)] leading-relaxed">
|
||||
«{selectedLocation?.title}» در روز انتخابشده نوبتدهی ندارد.
|
||||
{onChangeLocation && (
|
||||
<button
|
||||
type="button"
|
||||
onClick={onChangeLocation}
|
||||
className="mr-1 font-medium text-[#5559CE] hover:underline"
|
||||
className="mr-1 font-medium text-[var(--ap-primary)] hover:underline"
|
||||
>
|
||||
انتخاب محل دیگر
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user