@@ -9,7 +9,7 @@ interface IChatBoxProps {
9
9
onAnalyze : ( jd : string ) => void ;
10
10
}
11
11
12
- export const ChatBox = ( { onSendMessage, onAnalyze } : IChatBoxProps ) => {
12
+ export const ChatBox = ( { onSendMessage, onAnalyze} : IChatBoxProps ) => {
13
13
14
14
const [ message , setMessage ] = useState ( "" ) ;
15
15
const [ showPrompt , setShowPrompt ] = useState ( false ) ;
@@ -33,84 +33,84 @@ export const ChatBox = ({ onSendMessage, onAnalyze }: IChatBoxProps) => {
33
33
34
34
35
35
return (
36
- < div className = "border-2 p-4 flex flex-col bg-white rounded-lg shadow-md" >
37
- { /* Overlay and Modal for Job Description */
38
- showPrompt && (
39
- < >
40
- < div
41
- className = "fixed inset-0 bg-black bg-opacity-50 z-40"
42
- onClick = { ( ) => setShowPrompt ( false ) }
43
- />
44
- < div
45
- className = "fixed top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-white p-10 rounded-xl shadow-xl z-50 w-96" >
46
- < h3 className = "text-2xl font-bold mb-6" > Enter a Job Description</ h3 >
47
- < Textarea
48
- className = "w-full h-40 p-4 border-2 border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 shadow-sm transition-all"
49
- value = { jobDescription }
50
- onChange = { ( e ) => setJobDescription ( e . target . value ) }
51
- placeholder = "Enter job description here..."
52
- />
53
- < button
54
- className = "mt-6 bg-blue-500 text-white font-semibold text-lg px-8 py-3 rounded-lg shadow-md hover:bg-blue-600 hover:shadow-lg transition-all w-full"
55
- onClick = { handleAnalyze }
56
- >
57
- Submit
58
- </ button >
59
- </ div >
36
+ < div className = "border-2 p-4 flex flex-col bg-white rounded-lg shadow-md" >
37
+ { /* Overlay and Modal for Job Description */
38
+ showPrompt && (
39
+ < >
40
+ < div
41
+ className = "fixed inset-0 bg-black bg-opacity-50 z-40"
42
+ onClick = { ( ) => setShowPrompt ( false ) }
43
+ />
44
+ < div
45
+ className = "fixed top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-white p-10 rounded-xl shadow-xl z-50 w-96" >
46
+ < h3 className = "text-2xl font-bold mb-6" > Enter a Job Description</ h3 >
47
+ < Textarea
48
+ className = "w-full h-40 p-4 border-2 border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 shadow-sm transition-all"
49
+ value = { jobDescription }
50
+ onChange = { ( e ) => setJobDescription ( e . target . value ) }
51
+ placeholder = "Enter job description here..."
52
+ />
53
+ < button
54
+ className = "mt-6 bg-blue-500 text-white font-semibold text-lg px-8 py-3 rounded-lg shadow-md hover:bg-blue-600 hover:shadow-lg transition-all w-full"
55
+ onClick = { handleAnalyze }
56
+ >
57
+ Submit
58
+ </ button >
59
+ </ div >
60
60
61
- </ >
62
- )
63
- }
64
- { /* icon row */
65
- }
61
+ </ >
62
+ )
63
+ }
64
+ { /* icon row */
65
+ }
66
66
< div className = "flex justify-start gap-2 mb-2" >
67
- < div
68
- style = { { width : '64px' , display : 'flex' , justifyContent : 'center' , cursor : 'pointer' } }
69
- onClick = { ( ) => {
70
- document . getElementById ( 'fileInput' ) . click ( ) ;
67
+ < div
68
+ style = { { width : '64px' , display : 'flex' , justifyContent : 'center' , cursor : 'pointer' } }
69
+ onClick = { ( ) => {
70
+ document . getElementById ( 'fileInput' ) ?. click ( ) ;
71
+ } }
72
+ >
73
+ < UploadIcon />
74
+ < input
75
+ id = "fileInput"
76
+ type = "file"
77
+ accept = ".pdf"
78
+ style = { { display : 'none' } }
79
+ onChange = { ( event ) => {
80
+ const files = event . target . files ;
81
+ if ( ! files || files . length === 0 ) return ;
82
+ const file = files [ 0 ] ;
83
+ if ( file ) {
84
+ uploadFile ( file ) ;
85
+ }
71
86
} }
72
- >
73
- < UploadIcon />
74
- < input
75
- id = "fileInput"
76
- type = "file"
77
- accept = ".pdf"
78
- style = { { display : 'none' } }
79
- onChange = { ( event ) => {
80
- const files = event . target . files ;
81
- if ( ! files || files . length === 0 ) return ;
82
- const file = files [ 0 ] ;
83
- if ( file ) {
84
- uploadFile ( file ) ;
85
- }
86
- } }
87
- />
88
- </ div >
89
- < button
90
- className = "cursor-pointer px-4 py-2 rounded-full bg-blue-500 text-white text-sm flex items-center gap-1 hover:bg-blue-600 transition"
91
- onClick = { ( ) => setShowPrompt ( true ) }
92
- >
93
- < span className = "text-base" > 📄</ span > Analyze my resume
94
- </ button >
95
- { /*🛈 /!* Example icon - you can use actual icons here *!/*/ }
96
- { /*💼 /!* Example icon for interview *!/*/ }
87
+ />
88
+ </ div >
89
+ < button
90
+ className = "cursor-pointer px-4 py-2 rounded-full bg-blue-500 text-white text-sm flex items-center gap-1 hover:bg-blue-600 transition"
91
+ onClick = { ( ) => setShowPrompt ( true ) }
92
+ >
93
+ < span className = "text-base" > 📄</ span > Analyze my resume
94
+ </ button >
95
+ { /*🛈 /!* Example icon - you can use actual icons here *!/*/ }
96
+ { /*💼 /!* Example icon for interview *!/*/ }
97
97
</ div >
98
98
{ /* input row */ }
99
99
< div style = { { display : 'flex' , alignItems : 'center' } } >
100
- < Textarea
101
- className = "flex-1"
102
- value = { message }
103
- onChange = { ( e ) => setMessage ( xss ( e . target . value ) ) }
104
- onKeyUp = { ( e ) => {
105
- // listen for enter key
106
- if ( e . key === "Enter" && ! e . shiftKey ) {
107
- e . preventDefault ( ) ;
108
- handleSend ( ) ;
109
- }
110
- } }
111
- />
100
+ < Textarea
101
+ className = "flex-1"
102
+ value = { message }
103
+ onChange = { ( e ) => setMessage ( xss ( e . target . value ) ) }
104
+ onKeyUp = { ( e ) => {
105
+ // listen for enter key
106
+ if ( e . key === "Enter" && ! e . shiftKey ) {
107
+ e . preventDefault ( ) ;
108
+ handleSend ( ) ;
109
+ }
110
+ } }
111
+ />
112
112
</ div >
113
- </ div >
113
+ </ div >
114
114
)
115
115
}
116
116
0 commit comments