"use client" import { useState } from "react" import { Users } from "@phosphor-icons/react" import { Button } from "@/components/ui/button" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" /* M8 (SE-01 sampai SE-03): kartu estafet di rel kanan langkah Ambil Foto. Susunannya mengikuti docs/ui-reference/capture.html: kartu `violet-soft`, judul berikon, satu kalimat, lalu tombol sekunder. Tiga keadaan: belum cukup foto (tombol nonaktif dengan teks bantu), siap (tombol membuka dialog persetujuan), dan link sudah dibuat (alamat, tombol bagikan, tautan status). Tidak ada aksi `tangerine` di sini: aksi utama layar tetap "Lanjut Hias" (DESIGN-SYSTEM ยง2). */ export function RelayInviteCard({ relayId, canInvite, filled, required, busy, statusText, onInvite, onShare, }: { relayId: string | null canInvite: boolean filled: number required: number busy: boolean statusText?: string onInvite: () => void onShare: (url: string) => void }) { const [confirmOpen, setConfirmOpen] = useState(false) const relayUrl = relayId === null ? "" : `${typeof window === "undefined" ? "" : window.location.origin}/r/${relayId}` const missing = Math.max(0, required - filled) return (
Cukup ambil {required} foto. Sisanya diisi temanmu lewat link.
{busy || statusText !== undefined ? ({statusText ?? "Menyiapkan link estafet..."}
) : ( )} {missing > 0 ? ({`Butuh ${missing} foto dulu.`}
) : null} > ) : ( <>{relayUrl}
Lihat status > )} {/* SE-02: persetujuan menyebut apa yang diunggah, siapa yang bisa melihat, dan kapan terhapus. */}