@@ -17,6 +17,8 @@ interface SealStatus {
1717 timeRemaining ?: number ;
1818 keyB ?: string ;
1919 iv ?: string ;
20+ isDMS ?: boolean ;
21+ pulseToken ?: string ;
2022}
2123
2224export default function VaultPage ( { params } : { params : { id : string } } ) {
@@ -257,7 +259,7 @@ function VaultPageClient({ id }: { id: string }) {
257259
258260 // Locked state with countdown
259261 return (
260- < div className = "min-h-screen flex items-center justify-center p-4 relative w-full overflow-hidden" >
262+ < div className = "min-h-screen flex items-center justify-center p-4 relative w-full overflow-x- hidden pb-20 " >
261263 < BackgroundBeams className = "absolute top-0 left-0 w-full h-full z-0" />
262264 < div className = "max-w-md w-full text-center relative z-10" >
263265 < motion . div
@@ -269,30 +271,46 @@ function VaultPageClient({ id }: { id: string }) {
269271 repeat : Infinity ,
270272 repeatType : "reverse"
271273 } }
272- className = "mb-6 flex justify-center"
274+ className = "mb-4 flex justify-center"
273275 >
274- < Lock className = "w-16 h-16 text-neon-green" />
276+ < Lock className = "w-12 h-12 text-neon-green" />
275277 </ motion . div >
276278
277- < h1 className = "text-3xl sm:text-4xl font-bold glow-text mb-3 px-2" >
278- < DecryptedText text = " VAULT SEALED" animateOn = "view" className = "text-neon-green" />
279+ < h1 className = "text-2xl sm:text-3xl font-bold glow-text mb-3 px-2" >
280+ < DecryptedText text = { status . isDMS ? "DEAD MAN'S SWITCH ACTIVE" : " VAULT SEALED"} animateOn = "view" className = "text-neon-green" />
279281 </ h1 >
280- < p className = "text-neon-green/70 mb-6 text-sm sm:text-base px-4" >
281- This message is cryptographically locked until:
282+
283+ { status . isDMS && status . pulseToken && (
284+ < div className = "mb-4 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg" >
285+ < p className = "text-yellow-500 text-sm font-bold mb-2" > ⚠️ PULSE REQUIRED</ p >
286+ < p className = "text-yellow-400/80 text-xs mb-3" >
287+ This seal will auto-unlock if not pulsed. Click below to keep it locked.
288+ </ p >
289+ < a
290+ href = { `/pulse/${ status . pulseToken } ` }
291+ className = "cyber-button inline-flex items-center justify-center gap-2 bg-yellow-500/20 hover:bg-yellow-500/30 border-yellow-500/50 text-yellow-500 w-full text-sm"
292+ >
293+ SEND PULSE NOW →
294+ </ a >
295+ </ div >
296+ ) }
297+
298+ < p className = "text-neon-green/70 mb-4 text-sm px-4" >
299+ { status . isDMS ? 'Will auto-unlock if pulse not received by:' : 'This message is cryptographically locked until:' }
282300 </ p >
283301
284- < Card className = "p-4 sm:p-6 mb-6 border-neon-green/40 shadow-[0_0_30px_rgba(0,255,65,0.1)]" >
285- < div className = "text-base sm:text-lg md:text-xl font-bold mb-4 text-neon-green/80 uppercase tracking-widest border-b border-neon-green/20 pb-2" >
302+ < Card className = "p-4 mb-4 border-neon-green/40 shadow-[0_0_30px_rgba(0,255,65,0.1)]" >
303+ < div className = "text-sm font-bold mb-3 text-neon-green/80 uppercase tracking-widest border-b border-neon-green/20 pb-2" >
286304 Protocol Unlock Time
287305 </ div >
288- < div className = "text-lg sm:text-xl md:text-2xl font-bold mb-6 text-white font-mono break-words" >
306+ < div className = "text-lg sm:text-xl font-bold mb-4 text-white font-mono break-words" >
289307 { new Date ( status . unlockTime ) . toLocaleString ( ) }
290308 </ div >
291309
292- < div className = "text-xs text-neon-green/50 mb-2 uppercase tracking-abovet " > Time Remaining</ div >
310+ < div className = "text-xs text-neon-green/50 mb-2 uppercase tracking-widest " > Time Remaining</ div >
293311 { timeLeft > 0 ? (
294312 < >
295- < div className = "text-2xl sm:text-3xl md:text-4xl font-mono pulse-glow text-neon-green tabular-nums mb-4 " >
313+ < div className = "text-2xl sm:text-3xl font-mono pulse-glow text-neon-green tabular-nums mb-3 " >
296314 < DecryptedText
297315 text = { formatTimeLeft ( timeLeft ) }
298316 speed = { 0 }
@@ -316,16 +334,16 @@ function VaultPageClient({ id }: { id: string }) {
316334 ) }
317335 </ Card >
318336
319- < div className = "space-y-4 " >
337+ < div className = "space-y-3 " >
320338 < button
321339 onClick = { copyVaultLink }
322- className = "cyber-button inline-flex items-center justify-center gap-2 bg-neon-green/10 hover:bg-neon-green/20"
340+ className = "cyber-button inline-flex items-center justify-center gap-2 bg-neon-green/10 hover:bg-neon-green/20 w-full "
323341 >
324342 < Copy className = "w-4 h-4" />
325343 COPY VAULT LINK
326344 </ button >
327345
328- < p className = "text-xs text-neon-green/40 max-w-xs mx-auto leading-relaxed" >
346+ < p className = "text-xs text-neon-green/40 max-w-xs mx-auto leading-relaxed px-2 " >
329347 < span className = "block mb-1" > SECURITY LEVEL: MAXIMUM</ span >
330348 This vault uses split-key encryption and WORM storage.
331349 It cannot be opened early, even by the creator.
@@ -338,4 +356,4 @@ function VaultPageClient({ id }: { id: string }) {
338356 </ div >
339357 </ div >
340358 ) ;
341- }
359+ }
0 commit comments