@@ -23,6 +23,7 @@ import {
2323 IconCode ,
2424 IconInfoCircle ,
2525 IconCircleCheck ,
26+ IconRocket ,
2627} from '@tabler/icons-react' ;
2728import { gsap } from 'gsap' ;
2829import { useColorScheme } from '../../theme/ThemeProvider' ;
@@ -37,6 +38,10 @@ const ProjectModal = ({ project, isOpen, onClose }) => {
3738 const { reducedMotion } = useAnimationContext ( ) ;
3839 const isDark = colorScheme === 'dark' ;
3940
41+ // Check if this is the JobFit project
42+ const isJobFit =
43+ project ?. id === 'jobfit' || ( project ?. title && project ?. title . toLowerCase ( ) . includes ( 'jobfit' ) ) ;
44+
4045 // Prevent body scrolling when modal is open
4146 useEffect ( ( ) => {
4247 if ( isOpen ) {
@@ -254,6 +259,22 @@ const ProjectModal = ({ project, isOpen, onClose }) => {
254259 Featured Project
255260 </ Badge >
256261 ) }
262+
263+ { /* Live demo badge for JobFit */ }
264+ { isJobFit && project . liveUrl && (
265+ < Badge
266+ className = "animate-item"
267+ color = "teal"
268+ variant = "filled"
269+ ml = "sm"
270+ sx = { {
271+ background : 'linear-gradient(45deg, #00F5FF, #00B5AD)' ,
272+ boxShadow : '0 2px 8px rgba(0, 245, 255, 0.3)' ,
273+ } }
274+ >
275+ Live Demo Available
276+ </ Badge >
277+ ) }
257278 </ Box >
258279 </ Box >
259280
@@ -344,6 +365,38 @@ const ProjectModal = ({ project, isOpen, onClose }) => {
344365 </ Badge >
345366 ) ) }
346367 </ Group >
368+
369+ { /* API Key note for JobFit */ }
370+ { isJobFit && (
371+ < Box
372+ className = "animate-item"
373+ sx = { {
374+ padding : '15px' ,
375+ borderRadius : '8px' ,
376+ border : '1px solid #00F5FF' ,
377+ backgroundColor : 'rgba(0, 245, 255, 0.05)' ,
378+ marginBottom : '20px' ,
379+ } }
380+ >
381+ < Text size = "sm" weight = { 500 } >
382+ < IconInfoCircle
383+ size = { 16 }
384+ style = { { marginRight : '8px' , verticalAlign : 'middle' } }
385+ />
386+ The live demo requires a Google Gemini API key to function. You can obtain
387+ a free API key from{ ' ' }
388+ < a
389+ href = "https://aistudio.google.com/"
390+ target = "_blank"
391+ rel = "noopener noreferrer"
392+ style = { { color : '#00F5FF' , textDecoration : 'underline' } }
393+ >
394+ Google AI Studio
395+ </ a >
396+ .
397+ </ Text >
398+ </ Box >
399+ ) }
347400 </ Box >
348401 ) }
349402
@@ -443,7 +496,29 @@ const ProjectModal = ({ project, isOpen, onClose }) => {
443496
444497 { /* Action buttons */ }
445498 < Group position = "center" mt = "xl" className = "animate-item" >
446- { project . liveUrl && (
499+ { isJobFit && project . liveUrl && (
500+ < Button
501+ component = "a"
502+ href = { project . liveUrl }
503+ target = "_blank"
504+ leftSection = { < IconRocket size = { 16 } /> }
505+ size = "lg"
506+ sx = { {
507+ background : 'linear-gradient(45deg, #00F5FF, #00B5AD)' ,
508+ boxShadow : '0 4px 10px rgba(0, 245, 255, 0.3)' ,
509+ '&:hover' : {
510+ boxShadow : '0 6px 15px rgba(0, 245, 255, 0.4)' ,
511+ transform : 'translateY(-2px)' ,
512+ } ,
513+ transition : 'all 0.3s ease' ,
514+ marginRight : '20px' ,
515+ } }
516+ >
517+ Try JobFit Live Demo
518+ </ Button >
519+ ) }
520+
521+ { ! isJobFit && project . liveUrl && (
447522 < Button
448523 component = "a"
449524 href = { project . liveUrl }
0 commit comments