TorbatYar/frontend/modules/sports-center/features/capabilities.tsx
Mortezakoohjani 6f4a484051 Migrate Beauty, Healthcare, and Accounting frontend to modular src/modules architecture.
Move business logic out of App Router into module packages, add boundary validation scripts, and keep all routes as thin re-exports without changing URLs or API behavior.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-26 22:28:27 +03:30

44 lines
1.7 KiB
TypeScript

"use client";
import { useQuery } from "@tanstack/react-query";
import { sportsCenterApi } from "@/modules/sports-center/services/sports-center-api";
import { SportsCenterPageLoader, SportsCenterPageError } from "@/modules/sports-center/pages/shared";
import { PageHeader, Card, CardContent, Badge } from "@/components/ds";
import { SportsCenterBreadcrumbs } from "@/modules/sports-center/components/SportsCenterBreadcrumbs";
export function CapabilitiesPage() {
const capsQ = useQuery({
queryKey: ["sports-center", "capabilities"],
queryFn: () => sportsCenterApi.capabilities(),
});
if (capsQ.isLoading) return <SportsCenterPageLoader />;
if (capsQ.error) return <SportsCenterPageError error={capsQ.error} onRetry={() => capsQ.refetch()} />;
const caps = capsQ.data!;
const features = Object.entries(caps.features ?? {});
return (
<div className="space-y-6">
<SportsCenterBreadcrumbs current="قابلیت‌ها" />
<PageHeader
title="قابلیت‌های سرویس"
description={`فاز ${caps.phase}${caps.service}`}
actions={<Badge tone="primary">v{caps.version}</Badge>}
/>
<div className="grid gap-3 sm:grid-cols-2 lg:grid-cols-3">
{features.map(([key, enabled]) => (
<Card key={key}>
<CardContent className="flex items-center justify-between p-4">
<span className="text-sm font-medium">{key}</span>
<Badge tone={enabled ? "success" : "default"}>{enabled ? "فعال" : "غیرفعال"}</Badge>
</CardContent>
</Card>
))}
</div>
</div>
);
}
export default CapabilitiesPage;