@@ -73,55 +73,50 @@ export function Scripts({ children }: PropsWithChildren<{}>) {
73
73
}
74
74
75
75
interface SEOProps {
76
- title : string
77
- description : string
78
- keywords : string | string [ ]
76
+ title ? : string
77
+ description ? : string
78
+ keywords ? : string | string [ ]
79
79
image ?: string
80
80
}
81
81
82
82
export function SEO ( { title, description, keywords, image } : SEOProps ) {
83
83
return createElement (
84
84
Head ,
85
85
undefined ,
86
- createElement ( 'title' , undefined , title ) ,
87
- createElement ( 'meta' , { name : 'description' , content : description } ) ,
88
- createElement ( 'meta' , { name : 'keywords' , content : util . isArray ( keywords ) ? keywords . join ( ',' ) : keywords } ) ,
89
- createElement ( 'meta' , { name : 'og:title' , content : title } ) ,
90
- createElement ( 'meta' , { name : 'og:description' , content : description } ) ,
91
- createElement ( 'meta' , { name : 'twitter:title' , content : title } ) ,
92
- createElement ( 'meta' , { name : 'twitter:description' , content : description } ) ,
86
+ title && createElement ( 'title' , undefined , title ) ,
87
+ description && createElement ( 'meta' , { name : 'description' , content : description } ) ,
88
+ keywords && createElement ( 'meta' , { name : 'keywords' , content : util . isArray ( keywords ) ? keywords . join ( ',' ) : keywords } ) ,
89
+ title && createElement ( 'meta' , { name : 'og:title' , content : title } ) ,
90
+ description && createElement ( 'meta' , { name : 'og:description' , content : description } ) ,
91
+ title && createElement ( 'meta' , { name : 'twitter:title' , content : title } ) ,
92
+ description && createElement ( 'meta' , { name : 'twitter:description' , content : description } ) ,
93
93
image && createElement ( 'meta' , { name : 'og:image' , content : image } ) ,
94
94
image && createElement ( 'meta' , { name : 'twitter:image:src' , content : image } ) ,
95
95
image && createElement ( 'meta' , { name : 'twitter:card' , content : 'summary_large_image' } ) ,
96
96
)
97
97
}
98
98
99
99
interface ViewportProps {
100
- width : number | 'device-width'
100
+ width ? : number | 'device-width'
101
101
height ?: number | 'device-height'
102
102
initialScale ?: number
103
103
minimumScale ?: number
104
104
maximumScale ?: number
105
- userScalable ?: boolean
105
+ userScalable ?: 'yes' | 'no'
106
106
targetDensitydpi ?: number | 'device-dpi' | 'low-dpi' | 'medium-dpi' | 'high-dpi'
107
107
}
108
108
109
109
export function Viewport ( props : ViewportProps ) {
110
110
const content = Object . entries ( props )
111
111
. map ( ( [ key , value ] ) => {
112
112
key = key . replace ( / [ A - Z ] / g, c => '-' + c . toLowerCase ( ) )
113
- if ( value === true ) {
114
- value = 'yes'
115
- } else if ( value === false ) {
116
- value = 'no'
117
- }
118
113
return `${ key } =${ value } `
119
114
} )
120
115
. join ( ',' )
121
116
return createElement (
122
117
Head ,
123
118
undefined ,
124
- createElement ( 'meta' , { name : 'viewport' , content } )
119
+ content && createElement ( 'meta' , { name : 'viewport' , content } )
125
120
)
126
121
}
127
122
0 commit comments