11import { Button } from "@/components/ui/button" ;
22import { Card } from "@/components/ui/card" ;
33import { ArrowRight , ExternalLink } from "lucide-react" ;
4+ import { useNavigate } from "react-router-dom" ;
45
56interface PackageCardProps {
67 name : string ;
@@ -9,23 +10,44 @@ interface PackageCardProps {
910 gradient : string ;
1011 icon : React . ReactNode ;
1112 isMain ?: boolean ;
13+ docsLink ?: string ;
14+ githubLink ?: string ;
1215}
1316
14- const PackageCard = ( { name, description, features, gradient, icon, isMain = false } : PackageCardProps ) => {
17+ const PackageCard = ( {
18+ name,
19+ description,
20+ features,
21+ gradient,
22+ icon,
23+ isMain = false ,
24+ docsLink,
25+ githubLink,
26+ } : PackageCardProps ) => {
27+ const navigate = useNavigate ( ) ;
28+
1529 return (
16- < Card className = { `p-8 relative overflow-hidden border-2 transition-all duration-300 hover:shadow-elegant hover:scale-105 ${
17- isMain ? 'border-primary/20 bg-gradient-to-br from-primary/5 to-accent/5' : 'border-border hover:border-primary/30'
18- } `} >
19- < div className = { `absolute top-0 right-0 w-32 h-32 ${ gradient } opacity-10 rounded-full -translate-y-16 translate-x-16` } > </ div >
20-
30+ < Card
31+ className = { `p-8 relative overflow-hidden border-2 transition-all duration-300 hover:shadow-elegant hover:scale-105 ${
32+ isMain
33+ ? "border-primary/20 bg-gradient-to-br from-primary/5 to-accent/5"
34+ : "border-border hover:border-primary/30"
35+ } `}
36+ >
37+ < div
38+ className = { `absolute top-0 right-0 w-32 h-32 ${ gradient } opacity-10 rounded-full -translate-y-16 translate-x-16` }
39+ > </ div >
40+
2141 < div className = "relative" >
22- < div className = { `w-14 h-14 ${ gradient } rounded-2xl mb-6 flex items-center justify-center shadow-elegant` } >
42+ < div
43+ className = { `w-14 h-14 ${ gradient } rounded-2xl mb-6 flex items-center justify-center shadow-elegant` }
44+ >
2345 { icon }
2446 </ div >
25-
47+
2648 < h3 className = "text-2xl font-bold mb-4 text-foreground" > { name } </ h3 >
2749 < p className = "text-muted-foreground mb-6 text-lg" > { description } </ p >
28-
50+
2951 < div className = "space-y-3 mb-8" >
3052 { features . map ( ( feature , index ) => (
3153 < div key = { index } className = "flex items-start space-x-3" >
@@ -34,13 +56,20 @@ const PackageCard = ({ name, description, features, gradient, icon, isMain = fal
3456 </ div >
3557 ) ) }
3658 </ div >
37-
59+
3860 < div className = "flex flex-col sm:flex-row gap-3" >
39- < Button className = { `${ gradient } shadow-elegant flex-1` } >
61+ < Button
62+ className = { `${ gradient } shadow-elegant flex-1` }
63+ onClick = { ( ) => ( docsLink ? navigate ( docsLink ) : null ) }
64+ >
4065 Documentação
4166 < ArrowRight className = "w-4 h-4 ml-2" />
4267 </ Button >
43- < Button variant = "outline" className = "flex-1" >
68+ < Button
69+ variant = "outline"
70+ className = "flex-1"
71+ onClick = { ( ) => ( githubLink ? window . open ( githubLink , "_blank" ) : null ) }
72+ >
4473 < ExternalLink className = "w-4 h-4 mr-2" />
4574 GitHub
4675 </ Button >
@@ -50,4 +79,4 @@ const PackageCard = ({ name, description, features, gradient, icon, isMain = fal
5079 ) ;
5180} ;
5281
53- export default PackageCard ;
82+ export default PackageCard ;
0 commit comments