Add complete Torbat Food hospitality frontend connected to backend APIs.
Introduces modules/hospitality with 54 routes, BFF proxy, capability-gated nav, CRUD factory, and architecture validation docs. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
9e1fcd9176
commit
065c053c16
53
frontend/app/api/hospitality/[...path]/route.ts
Normal file
53
frontend/app/api/hospitality/[...path]/route.ts
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import { NextRequest, NextResponse } from "next/server";
|
||||||
|
|
||||||
|
const UPSTREAM =
|
||||||
|
process.env.HOSPITALITY_SERVICE_URL ||
|
||||||
|
process.env.NEXT_PUBLIC_HOSPITALITY_API_URL ||
|
||||||
|
"http://localhost:8009";
|
||||||
|
|
||||||
|
async function proxy(req: NextRequest, pathSegments: string[]) {
|
||||||
|
const p = pathSegments.join("/");
|
||||||
|
const url = new URL(req.url);
|
||||||
|
const target = `${UPSTREAM.replace(/\/$/, "")}/${p}${url.search}`;
|
||||||
|
const headers = new Headers();
|
||||||
|
for (const h of ["authorization", "content-type", "x-tenant-id", "accept"]) {
|
||||||
|
const v = req.headers.get(h);
|
||||||
|
if (v) headers.set(h, v);
|
||||||
|
}
|
||||||
|
let body: ArrayBuffer | undefined;
|
||||||
|
if (req.method !== "GET" && req.method !== "HEAD") body = await req.arrayBuffer();
|
||||||
|
try {
|
||||||
|
const res = await fetch(target, { method: req.method, headers, body, cache: "no-store" });
|
||||||
|
const out = new Headers();
|
||||||
|
const ct = res.headers.get("content-type");
|
||||||
|
if (ct) out.set("content-type", ct);
|
||||||
|
return new NextResponse(await res.arrayBuffer(), { status: res.status, headers: out });
|
||||||
|
} catch (err) {
|
||||||
|
const detail = err instanceof Error ? err.message : "upstream_unreachable";
|
||||||
|
return NextResponse.json(
|
||||||
|
{ error: { code: "hospitality_proxy_error", message: `پروکسی تربت فود — ${detail}` } },
|
||||||
|
{ status: 502 }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function GET(req: NextRequest, ctx: { params: Promise<{ path: string[] }> }) {
|
||||||
|
const { path: p } = await ctx.params;
|
||||||
|
return proxy(req, p);
|
||||||
|
}
|
||||||
|
export async function POST(req: NextRequest, ctx: { params: Promise<{ path: string[] }> }) {
|
||||||
|
const { path: p } = await ctx.params;
|
||||||
|
return proxy(req, p);
|
||||||
|
}
|
||||||
|
export async function PATCH(req: NextRequest, ctx: { params: Promise<{ path: string[] }> }) {
|
||||||
|
const { path: p } = await ctx.params;
|
||||||
|
return proxy(req, p);
|
||||||
|
}
|
||||||
|
export async function PUT(req: NextRequest, ctx: { params: Promise<{ path: string[] }> }) {
|
||||||
|
const { path: p } = await ctx.params;
|
||||||
|
return proxy(req, p);
|
||||||
|
}
|
||||||
|
export async function DELETE(req: NextRequest, ctx: { params: Promise<{ path: string[] }> }) {
|
||||||
|
const { path: p } = await ctx.params;
|
||||||
|
return proxy(req, p);
|
||||||
|
}
|
||||||
7
frontend/app/hospitality/analytics/error.tsx
Normal file
7
frontend/app/hospitality/analytics/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/analytics/loading.tsx
Normal file
5
frontend/app/hospitality/analytics/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/analytics/page.tsx
Normal file
3
frontend/app/hospitality/analytics/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { AnalyticsPage as default } from "@/modules/hospitality/features/analyticsSnapshots";
|
||||||
7
frontend/app/hospitality/audit/error.tsx
Normal file
7
frontend/app/hospitality/audit/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/audit/loading.tsx
Normal file
5
frontend/app/hospitality/audit/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/audit/page.tsx
Normal file
3
frontend/app/hospitality/audit/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { AuditLogsPage as default } from "@/modules/hospitality/features/events";
|
||||||
7
frontend/app/hospitality/branches/error.tsx
Normal file
7
frontend/app/hospitality/branches/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
7
frontend/app/hospitality/branches/list/error.tsx
Normal file
7
frontend/app/hospitality/branches/list/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/branches/list/loading.tsx
Normal file
5
frontend/app/hospitality/branches/list/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/branches/list/page.tsx
Normal file
3
frontend/app/hospitality/branches/list/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { BranchListPage as default } from "@/modules/hospitality/features/branches";
|
||||||
5
frontend/app/hospitality/branches/loading.tsx
Normal file
5
frontend/app/hospitality/branches/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/branches/page.tsx
Normal file
3
frontend/app/hospitality/branches/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { BranchesPage as default } from "@/modules/hospitality/features/venues";
|
||||||
7
frontend/app/hospitality/bundles/error.tsx
Normal file
7
frontend/app/hospitality/bundles/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/bundles/loading.tsx
Normal file
5
frontend/app/hospitality/bundles/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/bundles/page.tsx
Normal file
3
frontend/app/hospitality/bundles/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { BundlesPage as default } from "@/modules/hospitality/features/tenantBundles";
|
||||||
7
frontend/app/hospitality/capabilities/error.tsx
Normal file
7
frontend/app/hospitality/capabilities/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/capabilities/loading.tsx
Normal file
5
frontend/app/hospitality/capabilities/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/capabilities/page.tsx
Normal file
3
frontend/app/hospitality/capabilities/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { CapabilitiesPage as default } from "@/modules/hospitality/features/capabilities";
|
||||||
7
frontend/app/hospitality/customers/error.tsx
Normal file
7
frontend/app/hospitality/customers/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/customers/loading.tsx
Normal file
5
frontend/app/hospitality/customers/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/customers/page.tsx
Normal file
3
frontend/app/hospitality/customers/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { CustomersPage as default } from "@/modules/hospitality/features/connectorRegistrationsCrm";
|
||||||
7
frontend/app/hospitality/dining-areas/error.tsx
Normal file
7
frontend/app/hospitality/dining-areas/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/dining-areas/loading.tsx
Normal file
5
frontend/app/hospitality/dining-areas/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/dining-areas/page.tsx
Normal file
3
frontend/app/hospitality/dining-areas/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { DiningAreasPage as default } from "@/modules/hospitality/features/diningAreas";
|
||||||
7
frontend/app/hospitality/error.tsx
Normal file
7
frontend/app/hospitality/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
7
frontend/app/hospitality/floor-map/error.tsx
Normal file
7
frontend/app/hospitality/floor-map/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/floor-map/loading.tsx
Normal file
5
frontend/app/hospitality/floor-map/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/floor-map/page.tsx
Normal file
3
frontend/app/hospitality/floor-map/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { FloorMapPage as default } from "@/modules/hospitality/features/posFloorPlans";
|
||||||
7
frontend/app/hospitality/guests/error.tsx
Normal file
7
frontend/app/hospitality/guests/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/guests/loading.tsx
Normal file
5
frontend/app/hospitality/guests/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/guests/page.tsx
Normal file
3
frontend/app/hospitality/guests/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { GuestsPage as default } from "@/modules/hospitality/features/qrMenuSessions";
|
||||||
7
frontend/app/hospitality/health/error.tsx
Normal file
7
frontend/app/hospitality/health/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/health/loading.tsx
Normal file
5
frontend/app/hospitality/health/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/health/page.tsx
Normal file
3
frontend/app/hospitality/health/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { HealthPage as default } from "@/modules/hospitality/features/health";
|
||||||
7
frontend/app/hospitality/hub/error.tsx
Normal file
7
frontend/app/hospitality/hub/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/hub/loading.tsx
Normal file
5
frontend/app/hospitality/hub/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/hub/page.tsx
Normal file
3
frontend/app/hospitality/hub/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { HospitalityHub as default } from "@/modules/hospitality/features/hub";
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { CommunicationIntegrationPage as default } from "@/modules/hospitality/features/connectorCommunication";
|
||||||
7
frontend/app/hospitality/integrations/crm/error.tsx
Normal file
7
frontend/app/hospitality/integrations/crm/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/integrations/crm/loading.tsx
Normal file
5
frontend/app/hospitality/integrations/crm/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/integrations/crm/page.tsx
Normal file
3
frontend/app/hospitality/integrations/crm/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { CrmIntegrationPage as default } from "@/modules/hospitality/features/connectorCrm";
|
||||||
7
frontend/app/hospitality/integrations/delivery/error.tsx
Normal file
7
frontend/app/hospitality/integrations/delivery/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/integrations/delivery/page.tsx
Normal file
3
frontend/app/hospitality/integrations/delivery/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { DeliveryIntegrationPage as default } from "@/modules/hospitality/features/connectorDelivery";
|
||||||
7
frontend/app/hospitality/integrations/loyalty/error.tsx
Normal file
7
frontend/app/hospitality/integrations/loyalty/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/integrations/loyalty/page.tsx
Normal file
3
frontend/app/hospitality/integrations/loyalty/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { LoyaltyIntegrationPage as default } from "@/modules/hospitality/features/connectorLoyalty";
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { MarketplaceIntegrationPage as default } from "@/modules/hospitality/features/connectorDispatches";
|
||||||
7
frontend/app/hospitality/integrations/website/error.tsx
Normal file
7
frontend/app/hospitality/integrations/website/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/integrations/website/page.tsx
Normal file
3
frontend/app/hospitality/integrations/website/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { WebsiteIntegrationPage as default } from "@/modules/hospitality/features/connectorWebsite";
|
||||||
7
frontend/app/hospitality/inventory/error.tsx
Normal file
7
frontend/app/hospitality/inventory/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/inventory/loading.tsx
Normal file
5
frontend/app/hospitality/inventory/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/inventory/page.tsx
Normal file
3
frontend/app/hospitality/inventory/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { InventoryPage as default } from "@/modules/hospitality/features/inventoryOverview";
|
||||||
7
frontend/app/hospitality/invoices/error.tsx
Normal file
7
frontend/app/hospitality/invoices/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/invoices/loading.tsx
Normal file
5
frontend/app/hospitality/invoices/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/invoices/page.tsx
Normal file
3
frontend/app/hospitality/invoices/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { InvoicesPage as default } from "@/modules/hospitality/features/invoices";
|
||||||
7
frontend/app/hospitality/kitchen/display/error.tsx
Normal file
7
frontend/app/hospitality/kitchen/display/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/kitchen/display/loading.tsx
Normal file
5
frontend/app/hospitality/kitchen/display/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/kitchen/display/page.tsx
Normal file
3
frontend/app/hospitality/kitchen/display/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { KitchenDisplayPage as default } from "@/modules/hospitality/features/kitchenTickets";
|
||||||
7
frontend/app/hospitality/kitchen/preparation/error.tsx
Normal file
7
frontend/app/hospitality/kitchen/preparation/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/kitchen/preparation/loading.tsx
Normal file
5
frontend/app/hospitality/kitchen/preparation/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/kitchen/preparation/page.tsx
Normal file
3
frontend/app/hospitality/kitchen/preparation/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { KitchenPrepPage as default } from "@/modules/hospitality/features/kitchenTicketsPrep";
|
||||||
7
frontend/app/hospitality/kitchen/queue/error.tsx
Normal file
7
frontend/app/hospitality/kitchen/queue/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/kitchen/queue/loading.tsx
Normal file
5
frontend/app/hospitality/kitchen/queue/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/kitchen/queue/page.tsx
Normal file
3
frontend/app/hospitality/kitchen/queue/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { KitchenQueuePage as default } from "@/modules/hospitality/features/kitchenTicketItems";
|
||||||
5
frontend/app/hospitality/layout.tsx
Normal file
5
frontend/app/hospitality/layout.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { HospitalityRootLayout } from "@/modules/hospitality/components/createPortalLayout";
|
||||||
|
|
||||||
|
export default HospitalityRootLayout;
|
||||||
5
frontend/app/hospitality/loading.tsx
Normal file
5
frontend/app/hospitality/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
7
frontend/app/hospitality/menu/availability/error.tsx
Normal file
7
frontend/app/hospitality/menu/availability/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/menu/availability/loading.tsx
Normal file
5
frontend/app/hospitality/menu/availability/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/menu/availability/page.tsx
Normal file
3
frontend/app/hospitality/menu/availability/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { AvailabilityPage as default } from "@/modules/hospitality/features/availabilityWindows";
|
||||||
7
frontend/app/hospitality/menu/categories/error.tsx
Normal file
7
frontend/app/hospitality/menu/categories/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/menu/categories/loading.tsx
Normal file
5
frontend/app/hospitality/menu/categories/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/menu/categories/page.tsx
Normal file
3
frontend/app/hospitality/menu/categories/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { MenuCategoriesPage as default } from "@/modules/hospitality/features/menuCategories";
|
||||||
7
frontend/app/hospitality/menu/error.tsx
Normal file
7
frontend/app/hospitality/menu/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
7
frontend/app/hospitality/menu/items/error.tsx
Normal file
7
frontend/app/hospitality/menu/items/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/menu/items/loading.tsx
Normal file
5
frontend/app/hospitality/menu/items/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/menu/items/page.tsx
Normal file
3
frontend/app/hospitality/menu/items/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { MenuItemsPage as default } from "@/modules/hospitality/features/menuItems";
|
||||||
5
frontend/app/hospitality/menu/loading.tsx
Normal file
5
frontend/app/hospitality/menu/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
7
frontend/app/hospitality/menu/media/error.tsx
Normal file
7
frontend/app/hospitality/menu/media/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/menu/media/loading.tsx
Normal file
5
frontend/app/hospitality/menu/media/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/menu/media/page.tsx
Normal file
3
frontend/app/hospitality/menu/media/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { MediaLibraryPage as default } from "@/modules/hospitality/features/menuMediaRefs";
|
||||||
7
frontend/app/hospitality/menu/modifier-options/error.tsx
Normal file
7
frontend/app/hospitality/menu/modifier-options/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/menu/modifier-options/page.tsx
Normal file
3
frontend/app/hospitality/menu/modifier-options/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { ModifierOptionsPage as default } from "@/modules/hospitality/features/modifierOptions";
|
||||||
7
frontend/app/hospitality/menu/modifiers/error.tsx
Normal file
7
frontend/app/hospitality/menu/modifiers/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/menu/modifiers/loading.tsx
Normal file
5
frontend/app/hospitality/menu/modifiers/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/menu/modifiers/page.tsx
Normal file
3
frontend/app/hospitality/menu/modifiers/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { ModifierGroupsPage as default } from "@/modules/hospitality/features/modifierGroups";
|
||||||
3
frontend/app/hospitality/menu/page.tsx
Normal file
3
frontend/app/hospitality/menu/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { DigitalMenuPage as default } from "@/modules/hospitality/features/menus";
|
||||||
10
frontend/app/hospitality/not-found.tsx
Normal file
10
frontend/app/hospitality/not-found.tsx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import Link from "next/link";
|
||||||
|
import { Button, EmptyState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function HospitalityNotFound() {
|
||||||
|
return (
|
||||||
|
<div className="flex min-h-[50vh] items-center justify-center p-6">
|
||||||
|
<EmptyState title="صفحه یافت نشد" action={<Link href="/hospitality"><Button>بازگشت</Button></Link>} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
7
frontend/app/hospitality/notifications/error.tsx
Normal file
7
frontend/app/hospitality/notifications/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/notifications/loading.tsx
Normal file
5
frontend/app/hospitality/notifications/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
3
frontend/app/hospitality/notifications/page.tsx
Normal file
3
frontend/app/hospitality/notifications/page.tsx
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export { NotificationsPage as default } from "@/modules/hospitality/features/notifications";
|
||||||
7
frontend/app/hospitality/ordering/cart/error.tsx
Normal file
7
frontend/app/hospitality/ordering/cart/error.tsx
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ErrorState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
|
||||||
|
return <ErrorState message={error.message} onRetry={reset} />;
|
||||||
|
}
|
||||||
5
frontend/app/hospitality/ordering/cart/loading.tsx
Normal file
5
frontend/app/hospitality/ordering/cart/loading.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { LoadingState } from "@/components/ds";
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return <LoadingState label="در حال بارگذاری تربت فود…" />;
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user