import { useState } from "preact/hooks"; import { t } from "../../i18n"; import { standardReadinessStateText, type StandardReadiness, } from "../../features/customize/environment"; import { hint } from "../../features/customize/host"; import { ot } from "../../features/onboarding/copy"; import type { OnboardingNetwork, OnboardingStatus } from "../../features/onboarding/status"; function CopyCommand({ item }: { item: { command: string; label: string } }) { const [copied, setCopied] = useState(false); return (
{item.command}
); } function EnvironmentCard({ readiness }: { readiness: StandardReadiness }) { return (
{t("environment.readiness.cardTitle")}
{standardReadinessStateText(readiness)}
{readiness.missing_environments.length ? (
{t("environment.readiness.missingEnvironments")}
) : null} {Object.entries(readiness.missing_packages).map(([environment, packages]) => packages.length ? (
{t("environment.readiness.missingPackages", environment)}
) : null, )} {readiness.remediation && readiness.remediation.requires_explicit_action && readiness.remediation.commands.length ? (
{t("environment.readiness.remediation")}
{t("environment.readiness.explicitOnly")}
{readiness.remediation.commands.map((item) => ( ))}
) : null}
); } function NetworkCard({ network, platform, nativeRuntime, }: { network: OnboardingNetwork; platform: string; nativeRuntime: boolean; }) { const yn = (value: boolean) => (value ? ot("onboarding.readiness.yes") : ot("onboarding.readiness.no")); return (
{ot("onboarding.readiness.network")}
{ot("onboarding.readiness.allowNetwork", yn(network.allow_network))}
{ot("onboarding.readiness.egress", network.egress)}
{ot("onboarding.readiness.contacted", yn(network.contacted))}
{ot("onboarding.readiness.platform", platform || "—")}
{nativeRuntime ? ot("onboarding.readiness.runtimeYes") : ot("onboarding.readiness.runtimeNo")}
); } export function ReadinessPanel({ status }: { status: OnboardingStatus }) { return (
{status.environment ? : null}
); }