"use client"; import { useHospitalityCapabilities } from "@/modules/hospitality/hooks/useHospitalityCapabilities"; import { HospitalityPageLoader } from "@/modules/hospitality/pages/shared"; import { FeatureLock } from "@/modules/commercial/components"; import { useTenantId } from "@/hooks/useTenantId"; import { CapabilityUnavailable } from "@/modules/hospitality/components/CapabilityUnavailable"; /** * Dual-layer gate: * 1) Hospitality L2 `/capabilities` feature flag (service-owned pack) * 2) Commercial Runtime entitlement (FeatureLock) * * No local commercial catalog / bundle alias map. */ export function HospitalityBundleGate({ feature, capabilities, children, }: { feature: string; capabilities?: { features: Record }; children: React.ReactNode; }) { const capsQ = useHospitalityCapabilities(); const { tenantId } = useTenantId(); const caps = capabilities ?? capsQ.data; const commercialKey = feature.startsWith("hospitality.") ? feature : `hospitality.${feature}`; if (capsQ.isLoading && !capabilities) return ; const featureFlag = caps?.features?.[feature] ?? caps?.features?.[commercialKey]; if (featureFlag === false) { return ( ); } if (!tenantId) return <>{children}; return ( } > {children} ); }