feat(doctor): claim-profile section + modal for unclaimed IRIMC-imported doctors

- ClaimProfileSection (components/doctor/claim): shown only when
  doctor.owner_status === "unclaimed"; banner explains the profile is not
  yet managed by the doctor, button "تأیید و مدیریت این پروفایل"
- Modal: login prompt when logged out; otherwise first/last name,
  national code, Jalali birth-date (existing JalaliDatePicker) — posts to
  POST api/v1/doctor/{uuid}/claim (identity verified server-side via API.ir;
  no client call to API.ir, no token exposure)
- States: loading, per-field validation, server error (Persian envelope
  message), double-submit guard, success welcome message + redirect
- Shared component across main domain and all representative subdomains
- services/response.js: getDoctorClaimInfo / postDoctorClaim

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
hamed
2026-07-11 11:44:40 +03:30
co-authored by Claude Opus 4.8
parent 2fd0eec156
commit d8ab26b4b7
3 changed files with 189 additions and 0 deletions
+2
View File
@@ -1,5 +1,6 @@
import Link from "next/link";
import AppointmentList from "./appointmentList";
import ClaimProfileSection from "./claim";
import DetailDoctor from "./detailDoctor";
import Share from "./detailDoctor/Share";
import CustomLoading from "@/app/component/loading/Custom";
@@ -40,6 +41,7 @@ function DoctorPage({ doctor, comments, rateAggregate, slug }) {
/>
<AppointmentList doctor={doctor} doctorSlug={slug} />
</div>
<ClaimProfileSection doctor={doctor} />
</div>
);
}