TorbatYar/frontend/modules/delivery/features/permissions.tsx
Mortezakoohjani 7978970783 feat(delivery): add Torbat Driver frontend module with real API wiring.
Ship the delivery platform UI under modules/delivery with thin app routes, BFF proxy, CRUD for phase 10.0-10.1 APIs, and capability-gated future screens.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 12:02:01 +03:30

32 lines
1.3 KiB
TypeScript

"use client";
import { useQuery } from "@tanstack/react-query";
import { useTenantId } from "@/hooks/useTenantId";
import { deliveryApi } from "@/modules/delivery/services/delivery-api";
import { DeliveryPageLoader, DeliveryPageError } from "@/modules/delivery/pages/shared";
import { PageHeader, Card, CardContent, Badge } from "@/components/ds";
import { DeliveryBreadcrumbs } from "@/modules/delivery/components/DeliveryBreadcrumbs";
export const PermissionsPage = function DeliveryPermissionsPage() {
const { tenantId } = useTenantId();
const q = useQuery({
queryKey: ["delivery", tenantId, "permissions-catalog"],
queryFn: () => deliveryApi.permissions.catalog(tenantId!),
enabled: !!tenantId,
});
if (!tenantId || q.isLoading) return <DeliveryPageLoader />;
if (q.error) return <DeliveryPageError error={q.error} onRetry={() => q.refetch()} />;
return (
<div>
<DeliveryBreadcrumbs current="مجوزها" />
<PageHeader title="کاتالوگ مجوزها" description={`پیشوند: ${q.data?.prefix}${q.data?.count} مجوز`} />
<div className="grid gap-2 sm:grid-cols-2 lg:grid-cols-3">
{q.data?.permissions.map((p) => (
<Card key={p}><CardContent className="p-2"><code className="text-xs">{p}</code></CardContent></Card>
))}
</div>
</div>
);
};
export default PermissionsPage;