"use client";

import type { DomainStatus } from "@domainops/shared-types";
import { Tag, Tooltip } from "antd";

/**
 * A domain's lifecycle stage - what actually determines this on the
 * backend (Domain::status, set by DomainProvisioningService and friends)
 * doesn't change here, only how it reads to someone who isn't already
 * fluent in this app's internals.
 */
export const DOMAIN_STATUS_LABELS: Record<DomainStatus, string> = {
  provisioning: "Setting Up",
  live: "Live",
  parked: "Parked",
  redirected: "Redirected",
  deploying: "Deploying",
};

export const DOMAIN_STATUS_COLORS: Record<DomainStatus, string> = {
  provisioning: "gold",
  live: "green",
  parked: "default",
  redirected: "blue",
  deploying: "orange",
};

export const DOMAIN_STATUS_DESCRIPTIONS: Record<DomainStatus, string> = {
  provisioning: "Added to Inventory, but not yet fully connected - no server and/or Cloudflare zone attached yet.",
  live: "Connected to a server and Cloudflare, serving its own site.",
  parked: "Connected, but not serving a real site yet - held without an active build.",
  redirected: "Forwarding visitors to a different domain instead of serving its own site.",
  deploying: "A site deployment (ZIP upload or WordPress install) is actively in progress.",
};

export function DomainStatusTag({ status }: { status: DomainStatus }) {
  return (
    <Tooltip title={DOMAIN_STATUS_DESCRIPTIONS[status]}>
      <Tag color={DOMAIN_STATUS_COLORS[status]} className="dms_domain_status_tag">
        {DOMAIN_STATUS_LABELS[status]}
      </Tag>
    </Tooltip>
  );
}
