"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 (

Strip Estafet

{relayId === null ? ( <>

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. */} Unggah foto estafet? {`Foto strip kamu (${required} foto) dikirim ke link pribadi. Hanya orang yang kamu kirimi link yang bisa melengkapi. Link aktif 48 jam, lalu foto terhapus otomatis.`}
) }