TorbatYar/frontend/modules/hospitality/features/health.tsx
Mortezakoohjani 31a0a34945 feat(loyalty): add complete Loyalty Platform Frontend module
Scaffold frontend/modules/loyalty with types, API client, design system, feature pages, and thin App Router routes. Wire all screens to backend Loyalty service via BFF proxy. Add loyalty docs and update progress.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 10:46:45 +03:30

50 lines
2.0 KiB
TypeScript

"use client";
import { useQuery } from "@tanstack/react-query";
import { hospitalityApi } from "@/modules/hospitality/services/hospitality-api";
import { useHospitalityCapabilities } from "@/modules/hospitality/hooks/useHospitalityCapabilities";
import { HospitalityPageLoader, HospitalityPageError } from "@/modules/hospitality/pages/shared";
import { PageHeader, Card, CardContent, Badge, Button } from "@/components/ds";
import { HospitalityBreadcrumbs } from "@/modules/hospitality/components/HospitalityBreadcrumbs";
export const HealthPage = function HospitalityHealthPage() {
const healthQ = useQuery({
queryKey: ["hospitality", "health"],
queryFn: () => hospitalityApi.health(),
refetchInterval: 15_000,
});
const capsQ = useHospitalityCapabilities();
if (healthQ.isLoading || capsQ.isLoading) return <HospitalityPageLoader />;
if (healthQ.error) return <HospitalityPageError error={healthQ.error} onRetry={() => healthQ.refetch()} />;
return (
<div className="space-y-6">
<HospitalityBreadcrumbs current="سلامت سرویس" />
<PageHeader
title="سلامت سرویس"
description="وضعیت زنده سرویس Hospitality و اتصال BFF."
actions={
<Button variant="outline" size="sm" onClick={() => healthQ.refetch()}>
بررسی مجدد
</Button>
}
/>
<Card>
<CardContent className="space-y-4 p-6">
<div className="flex flex-wrap items-center gap-3">
<Badge tone={healthQ.data?.status === "ok" ? "success" : "danger"}>{healthQ.data?.status}</Badge>
<span className="text-sm">{healthQ.data?.service}</span>
<span className="text-sm text-[var(--muted)]">v{healthQ.data?.version}</span>
</div>
<p className="text-sm text-[var(--muted)]">
Capabilities API: {capsQ.data ? "متصل" : "—"} {Object.keys(capsQ.data?.features ?? {}).length} feature flag
</p>
</CardContent>
</Card>
</div>
);
};
export default HealthPage;