@@ -161,7 +161,7 @@ const slackSocialPreviewSiteName = computed(() => {
161
161
})
162
162
163
163
function toggleSocialPreview(preview ? : string ) {
164
- if (! preview || preview === socialPreview . value )
164
+ if (! preview )
165
165
socialPreview .value = ' '
166
166
else
167
167
socialPreview .value = preview !
@@ -380,16 +380,9 @@ async function ejectComponent(component: string) {
380
380
</VTooltip >
381
381
</div >
382
382
<div class =" items-center space-x-3 hidden lg:flex" >
383
- <div class =" opacity-80 text-sm" >
384
- <NLink href =" https://github.com/sponsors/harlan-zw" target =" _blank" >
385
- <NIcon icon =" carbon:favorite" class =" mr-[2px]" />
386
- Sponsor
387
- </NLink >
388
- </div >
389
383
<div class =" opacity-80 text-sm" >
390
384
<NLink href =" https://github.com/nuxt-modules/og-image" target =" _blank" >
391
- <NIcon icon =" logos:github-icon" class =" mr-[2px]" />
392
- Submit an issue
385
+ GitHub
393
386
</NLink >
394
387
</div >
395
388
<a href =" https://nuxtseo.com" target =" _blank" class =" flex items-end gap-1.5 font-semibold text-xl dark:text-white font-title" >
@@ -408,13 +401,13 @@ async function ejectComponent(component: string) {
408
401
</div >
409
402
<div class =" flex items-center w-[100px]" >
410
403
<NButton icon =" carbon:drag-horizontal" :border =" !socialPreview" @click =" toggleSocialPreview()" />
411
- <NButton icon =" logos: twitter" :border =" socialPreview === 'twitter'" @click =" toggleSocialPreview('twitter')" />
404
+ <NButton icon =" fa6-brands:x- twitter" :border =" socialPreview === 'twitter'" @click =" toggleSocialPreview('twitter')" />
412
405
<NButton icon =" logos:slack-icon" :border =" socialPreview === 'slack'" @click =" toggleSocialPreview('slack')" />
413
406
</div >
414
407
</div >
415
408
<TwitterCardRenderer v-if =" socialPreview === 'twitter'" :title =" socialPreviewTitle" >
416
409
<template #domain >
417
- <a target =" _blank" :href =" withHttps(socialSiteUrl)" >From {{ socialSiteUrl }}</a >
410
+ <a target =" _blank" :href =" withHttps(socialSiteUrl)" >{{ socialSiteUrl }}</a >
418
411
</template >
419
412
<ImageLoader
420
413
:src =" src"
@@ -485,10 +478,10 @@ async function ejectComponent(component: string) {
485
478
<Pane size =" 60" class =" flex h-full justify-center items-center relative n-panel-grids-center pr-4" style =" padding-top : 30px ;" >
486
479
<div class =" flex justify-between items-center text-sm w-full absolute pr-[30px] top-0 left-0" >
487
480
<div class =" flex items-center text-lg space-x-1 w-[100px]" >
488
- <NButton v-if =" !!globalDebug?.compatibility?.sharp || renderer === 'chromium'" icon =" carbon:jpg" :border =" imageFormat === 'jpeg' || imageFormat === 'jpg'" @click =" patchOptions({ extension: 'jpg' })" />
489
- <NButton icon =" carbon:png" :border =" imageFormat === 'png'" @click =" patchOptions({ extension: 'png' })" />
490
- <NButton v-if =" renderer !== 'chromium'" icon =" carbon:svg" :border =" imageFormat === 'svg'" @click =" patchOptions({ extension: 'svg' })" />
491
- <NButton v-if =" !isPageScreenshot" icon =" carbon:html" :border =" imageFormat === 'html'" @click =" patchOptions({ extension: 'html' })" />
481
+ <NButton v-if =" !!globalDebug?.compatibility?.sharp || renderer === 'chromium'" icon =" carbon:jpg" :class =" imageFormat === 'jpeg' || imageFormat === 'jpg' ? 'border border-zinc-300 dark:border-zinc-700 opacity-100' : ' '" @click =" patchOptions({ extension: 'jpg' })" />
482
+ <NButton icon =" carbon:png" :class =" imageFormat === 'png' ? 'border border-zinc-300 dark:border-zinc-700 opacity-100' : ' '" @click =" patchOptions({ extension: 'png' })" />
483
+ <NButton v-if =" renderer !== 'chromium'" icon =" carbon:svg" :class =" imageFormat === 'svg' ? 'border border-zinc-300 dark:border-zinc-700 opacity-100' : ' '" @click =" patchOptions({ extension: 'svg' })" />
484
+ <NButton v-if =" !isPageScreenshot" icon =" carbon:html" :class =" imageFormat === 'html' ? 'border border-zinc-300 dark:border-zinc-700 opacity-100' : ' '" @click =" patchOptions({ extension: 'html' })" />
492
485
</div >
493
486
<div class =" text-xs" >
494
487
<div v-if =" !isPageScreenshot" class =" opacity-70 space-x-1 hover:opacity-90 transition cursor-pointer" >
@@ -500,13 +493,18 @@ async function ejectComponent(component: string) {
500
493
Screenshot of the current page.
501
494
</div >
502
495
</div >
503
- <div class =" flex items-center w-[100px]" >
504
- <NButton icon =" carbon:drag-horizontal" :border =" !socialPreview" @click =" toggleSocialPreview()" />
505
- <NButton icon =" logos:twitter" :border =" socialPreview === 'twitter'" @click =" toggleSocialPreview('twitter')" />
496
+ <div class =" flex items-center space-x-1" >
497
+ <VTooltip v-if =" !isCustomOgImage" >
498
+ <NButton class =" p-4" icon =" carbon:drag-horizontal" :class =" !socialPreview ? 'border border-zinc-300 dark:border-zinc-700 opacity-100' : ''" @click =" toggleSocialPreview()" />
499
+ <template #popper >
500
+ Preview full width
501
+ </template >
502
+ </VTooltip >
503
+ <NButton class =" p-4" :class =" socialPreview === 'twitter' ? 'border border-zinc-300 dark:border-zinc-700 opacity-100' : ''" icon =" simple-icons:x" @click =" toggleSocialPreview('twitter')" />
506
504
<!-- <NButton icon="logos:facebook" :border="socialPreview === 'facebook'" @click="socialPreview = 'facebook'" /> -->
507
- <NButton icon = " logos:slack-icon " :border =" socialPreview === 'slack'" @click =" toggleSocialPreview('slack')" />
508
- <!-- < NButton icon="logos:whatsapp-icon " :border ="socialPreview === 'discord'" @click="socialPreview = 'discord' " /> -- >
509
- <VTooltip >
505
+ <NButton class = " p-4 " :class =" socialPreview === 'slack' ? 'border border-zinc-300 dark:border-zinc-700 opacity-100' : '' " icon = " simple-icons:slack " @click =" toggleSocialPreview('slack')" />
506
+ <NButton class = " p-4 " :class =" socialPreview === 'whatsapp' ? 'border border-zinc-300 dark:border-zinc-700 opacity-100' : '' " icon = " simple-icons:whatsapp " @click = " toggleSocialPreview('whatsapp') " />
507
+ <VTooltip v-if = " !isCustomOgImage " >
510
508
<button text-lg =" " type =" button" class =" n-icon-button n-button n-transition n-disabled:n-disabled" @click =" sidePanelOpen = !sidePanelOpen" >
511
509
<div v-if =" sidePanelOpen" class =" n-icon carbon:side-panel-open" />
512
510
<div v-else class =" n-icon carbon:open-panel-right" />
@@ -517,7 +515,7 @@ async function ejectComponent(component: string) {
517
515
</VTooltip >
518
516
</div >
519
517
</div >
520
- <TwitterCardRenderer v-if =" socialPreview === 'twitter'" :title =" socialPreviewTitle" >
518
+ <TwitterCardRenderer v-if =" socialPreview === 'twitter'" :title =" socialPreviewTitle" :aspect-ratio = " aspectRatio " >
521
519
<template #domain >
522
520
<a target =" _blank" :href =" withHttps(socialSiteUrl)" >From {{ socialSiteUrl }}</a >
523
521
</template >
@@ -567,6 +565,37 @@ async function ejectComponent(component: string) {
567
565
@refresh =" refreshSources"
568
566
/>
569
567
</SlackCardRenderer >
568
+ <WhatsAppRenderer v-else-if =" socialPreview === 'whatsapp'" >
569
+ <template #siteName >
570
+ {{ slackSocialPreviewSiteName }}
571
+ </template >
572
+ <template #title >
573
+ {{ socialPreviewTitle }}
574
+ </template >
575
+ <template #description >
576
+ {{ socialPreviewDescription }}
577
+ </template >
578
+ <template #url >
579
+ {{ socialSiteUrl }}
580
+ </template >
581
+ <ImageLoader
582
+ v-if =" imageFormat !== 'html'"
583
+ :src =" src"
584
+ class =" !h-[90px]"
585
+ min-height =" 90"
586
+ :aspect-ratio =" 1"
587
+ style =" background-size : cover ; background-position : center center ;"
588
+ @load =" generateLoadTime"
589
+ @refresh =" refreshSources"
590
+ />
591
+ <IFrameLoader
592
+ v-else
593
+ :src =" src"
594
+ :aspect-ratio =" 1 / 1"
595
+ @load =" generateLoadTime"
596
+ @refresh =" refreshSources"
597
+ />
598
+ </WhatsAppRenderer >
570
599
<div v-else class =" w-full h-full" >
571
600
<ImageLoader
572
601
v-if =" imageFormat !== 'html'"
@@ -583,7 +612,7 @@ async function ejectComponent(component: string) {
583
612
@refresh =" refreshSources"
584
613
/>
585
614
</div >
586
- <div v-if =" description" class =" mt-3 text-sm opacity-50 absolute bottom-3 " >
615
+ <div v-if =" description" class =" mt-5 text-sm opacity-50" >
587
616
{{ description }}
588
617
</div >
589
618
</Pane >
0 commit comments