trx-cli 0.1.10

A Modern Cross-Platform Package Manager TUI
"use client";

import { useEffect, useRef, useState } from "react";
import { LIGHT_COMMAND_ROW } from "@/app/landing-material";
import { HERO_QUICK_INSTALL } from "./tokens";
import { CopyIconButton } from "./CopyIconButton";

export function HeroCurlInstall() {
  const [copied, setCopied] = useState(false);
  const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);

  useEffect(() => () => { if (timerRef.current) clearTimeout(timerRef.current); }, []);

  const handleCopy = async () => {
    if (timerRef.current) { clearTimeout(timerRef.current); timerRef.current = null; }
    try {
      await navigator.clipboard.writeText(HERO_QUICK_INSTALL);
      setCopied(true);
      timerRef.current = setTimeout(() => { setCopied(false); timerRef.current = null; }, 1500);
    } catch {
      setCopied(false);
    }
  };

  return (
    <div className="flex w-full min-w-0 flex-col gap-2">
      <p
        className="text-[12px] font-medium leading-snug text-[#878787] [font-family:var(--font-geist-sans)]"
        style={{ letterSpacing: "-0.01em" }}
      >
        Quick install: paste in your terminal:
      </p>
      <div className={LIGHT_COMMAND_ROW}>
        <div className="min-w-0 flex-1 overflow-hidden truncate whitespace-nowrap pr-0.5">
          {HERO_QUICK_INSTALL}
        </div>
        <CopyIconButton tone="light" copied={copied} onCopy={handleCopy} idleLabel="Copy quick install command" />
      </div>
    </div>
  );
}