11import React from 'react' ;
2+
23import { i18nService } from '@/services/i18n' ;
34
45interface WelcomeDialogProps {
56 onLogin : ( ) => void ;
67 onCustomModel : ( ) => void ;
7- onClose : ( ) => void ;
88}
99
10- const WelcomeDialog : React . FC < WelcomeDialogProps > = ( { onLogin, onCustomModel, onClose } ) => {
10+ const WelcomeDialog : React . FC < WelcomeDialogProps > = ( { onLogin, onCustomModel } ) => {
1111 return (
1212 < div className = "fixed inset-0 z-[60] bg-surface flex items-center justify-center" >
1313 { /* gradient overlay */ }
@@ -16,17 +16,6 @@ const WelcomeDialog: React.FC<WelcomeDialogProps> = ({ onLogin, onCustomModel, o
1616 style = { { background : 'linear-gradient(360deg, rgba(255, 0, 77, 0) 5.5%, rgba(255, 0, 77, 0.05) 100%)' } }
1717 />
1818
19- { /* close button */ }
20- < button
21- onClick = { onClose }
22- className = "absolute top-4 right-4 w-8 h-8 flex items-center justify-center rounded-full text-secondary hover:text-foreground hover:bg-surface-raised transition-colors z-10"
23- aria-label = "Close"
24- >
25- < svg width = "14" height = "14" viewBox = "0 0 14 14" fill = "none" >
26- < path d = "M1 1L13 13M13 1L1 13" stroke = "currentColor" strokeWidth = "1.5" strokeLinecap = "round" />
27- </ svg >
28- </ button >
29-
3019 { /* content */ }
3120 < div className = "relative z-10 flex flex-col items-center py-12 w-[420px]" >
3221 { /* logo */ }
@@ -49,43 +38,47 @@ const WelcomeDialog: React.FC<WelcomeDialogProps> = ({ onLogin, onCustomModel, o
4938 { i18nService . t ( 'welcomeSubtitle' ) }
5039 </ p >
5140
52- { /* promo badge — left-aligned to match buttons */ }
53- < div className = "flex items-center gap-1.5 w-full" style = { { paddingLeft : 11 , marginBottom : 10 } } >
54- < img
55- src = "love.png"
56- alt = ""
57- width = { 16 }
58- height = { 16 }
59- className = "select-none shrink-0"
60- draggable = { false }
61- aria-hidden = "true"
62- />
63- < span className = "text-sm text-secondary" > { i18nService . t ( 'welcomePromo' ) } </ span >
64- </ div >
41+ { /* action stack — login is the primary path, custom model stays visible but quiet */ }
42+ < div className = "flex flex-col w-[320px]" >
43+ { /* promo badge — anchored above the login button as its incentive */ }
44+ < div className = "flex items-center gap-1.5" style = { { paddingLeft : 11 , marginBottom : 10 } } >
45+ < img
46+ src = "love.png"
47+ alt = ""
48+ width = { 16 }
49+ height = { 16 }
50+ className = "select-none shrink-0"
51+ draggable = { false }
52+ aria-hidden = "true"
53+ />
54+ < span className = "text-sm text-secondary" > { i18nService . t ( 'welcomePromo' ) } </ span >
55+ </ div >
6556
66- { /* buttons — hand image sits at bottom-left of this row, overlapping login button */ }
67- < div className = "flex gap-3 w-full relative overflow-visible" >
68- < img
69- src = "hand.png"
70- alt = ""
71- width = { 41 }
72- height = { 55 }
73- className = "absolute select-none pointer-events-none z-10"
74- style = { { bottom : 0 , left : - 8 } }
75- draggable = { false }
76- aria-hidden = "true"
77- />
78- < button
79- onClick = { onLogin }
80- className = "w-[204px] h-10 rounded-xl text-sm font-medium text-white transition-opacity hover:opacity-90 active:opacity-80"
81- style = { { backgroundColor : 'rgba(72, 133, 255, 1)' } }
82- >
83- { i18nService . t ( 'welcomeLogin' ) }
84- </ button >
57+ { /* primary: login — hand image overlaps its bottom-left corner */ }
58+ < div className = "relative w-full overflow-visible" >
59+ < img
60+ src = "hand.png"
61+ alt = ""
62+ width = { 41 }
63+ height = { 55 }
64+ className = "absolute select-none pointer-events-none z-10"
65+ style = { { bottom : 0 , left : - 8 } }
66+ draggable = { false }
67+ aria-hidden = "true"
68+ />
69+ < button
70+ onClick = { onLogin }
71+ className = "w-full h-11 rounded-xl text-sm font-medium text-white transition-opacity hover:opacity-90 active:opacity-80 shadow-[0_4px_14px_rgba(72,133,255,0.35)]"
72+ style = { { backgroundColor : 'rgba(72, 133, 255, 1)' } }
73+ >
74+ { i18nService . t ( 'welcomeLogin' ) }
75+ </ button >
76+ </ div >
77+
78+ { /* secondary: custom model — ghost style keeps it discoverable without competing */ }
8579 < button
8680 onClick = { onCustomModel }
87- className = "w-[204px] h-10 rounded-xl text-sm font-medium text-white transition-opacity hover:opacity-90 active:opacity-80"
88- style = { { backgroundColor : 'rgba(54, 57, 63, 1)' } }
81+ className = "mt-3 w-full h-10 rounded-xl text-sm font-medium text-secondary border border-border bg-transparent hover:text-foreground hover:bg-surface-raised transition-colors"
8982 >
9083 { i18nService . t ( 'welcomeCustomModel' ) }
9184 </ button >
0 commit comments