"use client"; import Link from "next/link"; import type { CapabilityFeature } from "@/lib/capabilities/types"; import { useCapabilities } from "@/lib/capabilities/context"; interface FeatureGateProps { feature: CapabilityFeature; children?: React.ReactNode; /** 未就緒時是否顯示說明(預設不顯示,直接隱藏) */ showHint?: boolean; className?: string; } export function FeatureGate({ feature, children, showHint = false, className, }: FeatureGateProps) { const { loading, get } = useCapabilities(); if (loading) return null; const cap = get(feature); if (cap?.ready) { return <>{children}>; } if (!showHint || !cap) return null; return (
{cap.reason ?? `${cap.label}尚未就緒`} {cap.setupHref && cap.setupLabel && ( <> {" · "} {cap.setupLabel} > )}