@@ -7,13 +7,13 @@ import {
77 DialogHeader ,
88 DialogTitle ,
99} from '@/components/shared/ui/dialog' ;
10- import { Button } from '@/components/shared/ui/button' ;
11- import { theme } from '../connect/ui/theme' ;
12- import { AlertCircle , ArrowRight } from 'lucide-react' ;
10+ import { theme , fonts } from '../connect/ui/theme' ;
11+ import { AlertCircle , ArrowRight , Sparkles } from 'lucide-react' ;
1312import { env } from '@/config/env' ;
1413
1514interface ConnectToVincentYieldModalProps {
1615 agentPKP : IRelayPKP ;
16+ onClose ?: ( ) => void ;
1717}
1818
1919export function ConnectToVincentYieldModal ( { agentPKP } : ConnectToVincentYieldModalProps ) {
@@ -34,31 +34,60 @@ export function ConnectToVincentYieldModal({ agentPKP }: ConnectToVincentYieldMo
3434 50% { opacity: 0.8; }
3535 }
3636 button[class*="absolute top-4 right-4"] {
37- opacity: 0.15 !important;
38- }
39- button[class*="absolute top-4 right-4"]:hover {
40- opacity: 0.4 !important;
37+ display: none !important;
4138 }
4239 ` } </ style >
4340 < DialogContent
44- className = { `w-[calc(100%-1rem)] max-w-md mx-auto ${ theme . mainCard } border ${ theme . mainCardBorder } rounded-2xl shadow-2xl overflow-hidden p-0 [&>button]:hidden` }
41+ className = "w-[calc(100%-1rem)] max-w-md border-2 rounded-2xl shadow-2xl overflow-hidden p-0 backdrop-blur-xl"
42+ style = { {
43+ borderColor : theme . brandOrange ,
44+ background : `linear-gradient(135deg, ${ theme . mainCard } 0%, rgba(224, 90, 26, 0.05) 100%)` ,
45+ } }
4546 onPointerDownOutside = { ( e ) => e . preventDefault ( ) }
4647 onEscapeKeyDown = { ( e ) => e . preventDefault ( ) }
4748 >
48- < DialogHeader className = { `px-3 sm:px-6 pt-4 pb-3 border-b ${ theme . cardBorder } ` } >
49- < div className = "flex items-center justify-center mb-3" >
49+ { /* NEW badge */ }
50+ < div
51+ className = "absolute top-4 right-4 px-2 py-1 rounded-md text-xs font-bold tracking-wide z-10"
52+ style = { {
53+ backgroundColor : theme . brandOrange ,
54+ color : 'white' ,
55+ ...fonts . heading ,
56+ } }
57+ >
58+ REQUIRED
59+ </ div >
60+
61+ < DialogHeader className = { `px-4 sm:px-6 pt-6 pb-4` } >
62+ { /* Logo and Title */ }
63+ < div className = "flex items-center gap-3 mb-4" >
5064 < div
51- className = { `inline-flex items-center justify-center w-12 h-12 rounded-full bg-orange-100 dark:bg-orange-900/30` }
65+ className = "w-16 h-16 rounded-lg flex items-center justify-center flex-shrink-0"
66+ style = { {
67+ backgroundColor : theme . brandOrange ,
68+ } }
5269 >
53- < AlertCircle className = "w-6 h-6 text-orange-500" />
70+ < Sparkles className = "w-8 h-8 text-white" />
71+ </ div >
72+ < div className = "flex flex-col justify-center min-w-0 flex-1" >
73+ < DialogTitle
74+ className = { `text-base font-semibold leading-tight ${ theme . text } ` }
75+ style = { fonts . heading }
76+ >
77+ Connect to Vincent Yield
78+ </ DialogTitle >
79+ < span className = { `text-sm leading-tight` } style = { { color : theme . brandOrange } } >
80+ Migration Required
81+ </ span >
5482 </ div >
5583 </ div >
56- < DialogTitle className = { `text-lg font-semibold ${ theme . text } text-center` } >
57- Architectural Update Required
58- </ DialogTitle >
59- < DialogDescription className = { `${ theme . textMuted } text-sm text-center mt-2` } >
60- There's been an architectural change to Vincent Wallets. Your existing wallet needs to
61- be connected to Vincent Yield to continue.
84+
85+ < DialogDescription
86+ className = { `${ theme . textMuted } text-xs leading-relaxed` }
87+ style = { fonts . body }
88+ >
89+ Your existing Vincent Wallet needs to be connected to Vincent Yield due to architectural
90+ improvements.
6291 </ DialogDescription >
6392 </ DialogHeader >
6493
@@ -89,37 +118,36 @@ export function ConnectToVincentYieldModal({ agentPKP }: ConnectToVincentYieldMo
89118 </ div >
90119 </ div >
91120
92- < div className = "flex px-3 sm:px-6 pt-3 pb-4 sm:pb-6 border-t border-gray-200 dark:border-gray-700 " >
93- < Button
121+ < div className = "px-4 sm:px-6 pb-6 " >
122+ < button
94123 onClick = { handleConnect }
95124 disabled = { isRedirecting }
96- className = { `w-full font-normal tracking-wide transition-all duration-200 border text-white flex items-center justify-center gap-2 ${
97- isRedirecting
98- ? 'bg-gray-100 dark:bg-gray-800 !text-gray-400 border-gray-200 dark:border-gray-700 cursor-not-allowed'
99- : ''
100- } `}
125+ className = "w-full flex items-center justify-center gap-1.5 px-3 py-2 rounded-lg text-xs font-medium transition-colors text-white disabled:opacity-50 disabled:cursor-not-allowed"
101126 style = { {
102- borderRadius : '0.5rem' ,
103- fontSize : 'clamp(0.75rem, 3vw, 0.875rem)' ,
104- padding : 'clamp(0.5rem, 1vw, 0.75rem) clamp(1rem, 4vw, 1.5rem)' ,
105- ...( isRedirecting
106- ? { }
107- : {
108- backgroundColor : '#e55a1a' ,
109- borderColor : '#e55a1a' ,
110- animation : 'pulse 2s ease-in-out infinite' ,
111- } ) ,
127+ ...fonts . heading ,
128+ backgroundColor : isRedirecting ? theme . textMuted : theme . brandOrange ,
129+ animation : isRedirecting ? 'none' : 'pulse 2s ease-in-out infinite' ,
130+ } }
131+ onMouseEnter = { ( e ) => {
132+ if ( ! isRedirecting ) {
133+ e . currentTarget . style . backgroundColor = theme . brandOrangeDarker ;
134+ }
135+ } }
136+ onMouseLeave = { ( e ) => {
137+ if ( ! isRedirecting ) {
138+ e . currentTarget . style . backgroundColor = theme . brandOrange ;
139+ }
112140 } }
113141 >
114142 { isRedirecting ? (
115143 'Redirecting...'
116144 ) : (
117145 < >
118- Connect to Vincent Yield
119- < ArrowRight className = "w-4 h-4" / >
146+ < ArrowRight className = "w-4 h-4 flex-shrink-0 -mt-px" />
147+ < span className = "leading-none" > Connect to Vincent Yield </ span >
120148 </ >
121149 ) }
122- </ Button >
150+ </ button >
123151 </ div >
124152 </ DialogContent >
125153 </ Dialog >
0 commit comments