feat(resources): one tabbed page per resource

In the resource-first model a resource is the unit of capacity, so its
working hours, holidays, services, skills and categories belong to it — not
scattered across a list page's modals plus a separate calendar page.

/admin/resources/{uuid} now carries six tabs and the active tab lives in the
query string, so back and refresh land on the same view. The old
/calendar URL redirects to ?tab=hours instead of 404ing.

The skills and services modal bodies became panels the tab renders directly;
the modals are now thin wrappers, so the list page keeps working unchanged
and there is still one implementation of each editor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
hamed
2026-08-02 13:06:06 +03:30
co-authored by Claude Opus 5
parent 03d8d7d68a
commit e08876f7b4
15 changed files with 1126 additions and 705 deletions
+2
View File
@@ -989,6 +989,8 @@ export interface ClinicResource {
subject_kind: 'doctor' | 'staff' | 'room' | null;
subject_uuid: string | null;
skills: ResourceSkillLine[];
/** دستهٔ سراسری؛ فقط انتخاب می‌شود — ساختش در «تنظیمات ← دسته‌بندی‌ها» است */
categories?: Array<{ uuid: string; name: string }>;
active: boolean;
created_at: number;
updated_at: number;