2023-03-03 12:00:04 +01:00
< template >
< div class = "project-data" >
< div class = "project-data__header" >
< h3 > { { title } } < / h3 >
< a :href = "url" target = "_blank" : title = "`Accéder au site web de ${title}`" >
< svg aria -hidden = " true " viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke -width = " 2 " stroke -linecap = " round " stroke -linejoin = " round " xmlns = "http://www.w3.org/2000/svg" >
< g transform = "matrix(1.2, 0, 0, 1.2, -2.400001, -2.400001)" >
< path d = "M 18 13 L 18 19 C 18 20.105 17.105 21 16 21 L 5 21 C 3.895 21 3 20.105 3 19 L 3 8 C 3 6.895 3.895 6 5 6 L 11 6" / >
< polyline points = "15 3 21 3 21 9" / >
< line x1 = "10" y1 = "14" x2 = "21" y2 = "3" / >
< / g >
< / svg >
< / a >
< / div >
< p v-html = "description" > < / p >
< ul >
< li v-for = "keyword in keywords" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke -width = " 2 " stroke -linecap = " round " stroke -linejoin = " round " xmlns = "http://www.w3.org/2000/svg" >
< g transform = "matrix(1.126687, 0, 0, 1.126687, -1.053373, -1.050698)" >
< path d = "M 20.59 13.41 L 13.42 20.58 C 12.639 21.362 11.371 21.362 10.59 20.58 L 2 12 L 2 2 L 12 2 L 20.59 10.59 C 21.365 11.37 21.365 12.63 20.59 13.41 Z" / >
< line x1 = "7" y1 = "7" x2 = "7.01" y2 = "7" / >
< / g >
< / svg >
< span > { { keyword } } < / span >
< / li >
< / ul >
< / div >
< / template >
< script setup >
// --------------------------------------------------
// DATA
// --------------------------------------------------
defineProps ( {
title : String ,
url : String ,
description : String ,
keywords : Array
} ) ;
< / script >
< style lang = "scss" scoped >
// --------------------------------------------------
// STYLE
// --------------------------------------------------
. project - data {
display : flex ;
flex - direction : column ;
gap : 1 rem ;
margin : 0 2 rem ;
text - align : center ;
& _ _header {
display : flex ;
justify - content : center ;
align - items : center ;
gap : 1 rem ;
a {
2023-03-03 12:12:57 +01:00
width : var ( -- text - font - height ) ;
height : var ( -- text - font - height ) ;
2023-03-03 12:00:04 +01:00
svg {
width : var ( -- h3 - font - size ) ;
height : var ( -- h3 - font - size ) ;
stroke : var ( -- primary - accent - color ) ;
transition : transform 200 ms ease - in - out ;
}
& : hover ,
& : focus ,
& : active {
svg {
transform : translate ( 0.1 rem , - 0.1 rem ) ;
}
}
}
}
ul {
display : flex ;
flex - wrap : wrap ;
justify - content : center ;
column - gap : 1 rem ;
row - gap : 0.5 rem ;
list - style : none ;
font - family : var ( -- title - font - family ) ;
font - size : var ( -- footnote - font - size ) ;
font - weight : var ( -- semi - bold - font - weight ) ;
li {
display : flex ;
align - items : center ;
gap : 0.2 rem ;
svg {
width : var ( -- footnote - font - size ) ;
height : var ( -- footnote - font - size ) ;
stroke : var ( -- primary - color - light ) ;
}
}
}
@ media screen and ( min - width : $tablet - media - query ) {
margin : 0 4 rem ;
}
@ media screen and ( min - width : $desktop - media - query ) {
margin : 0 ;
}
}
< / style >