nuxt-og-image 5.1.2 → 5.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/client/200.html +10 -10
  2. package/dist/client/404.html +10 -10
  3. package/dist/client/_nuxt/B8PEiB0p.js +1 -0
  4. package/dist/client/_nuxt/Cp-IABpG.js +1 -0
  5. package/dist/client/_nuxt/De-qQEWw.js +4017 -0
  6. package/dist/client/_nuxt/{CHRxzU3f.js → Dr5ncp7f.js} +1 -1
  7. package/dist/client/_nuxt/{Ct9h7GIg.js → DriqWBeb.js} +1 -1
  8. package/dist/client/_nuxt/builds/latest.json +1 -1
  9. package/dist/client/_nuxt/builds/meta/dev.json +1 -0
  10. package/dist/client/_nuxt/builds/meta/e8cf65e2-e6ce-426c-84bd-d6a74b10ae7a.json +1 -0
  11. package/dist/client/_nuxt/error-404.B8Wdqtfs.css +1 -0
  12. package/dist/client/_nuxt/error-500.Cj9Kfu8q.css +1 -0
  13. package/dist/client/index.html +10 -10
  14. package/dist/module.cjs +5 -3
  15. package/dist/module.json +1 -1
  16. package/dist/module.mjs +5 -3
  17. package/dist/runtime/app/components/Templates/Community/BrandedLogo.vue +1 -1
  18. package/dist/runtime/app/components/Templates/Community/Frame.vue +2 -2
  19. package/dist/runtime/app/components/Templates/Community/Nuxt.vue +3 -3
  20. package/dist/runtime/app/components/Templates/Community/NuxtSeo.vue +5 -2
  21. package/dist/runtime/app/components/Templates/Community/Pergel.vue +4 -4
  22. package/dist/runtime/app/components/Templates/Community/SimpleBlog.vue +2 -2
  23. package/dist/runtime/app/components/Templates/Community/UnJs.vue +10 -4
  24. package/dist/runtime/app/components/Templates/Community/Wave.vue +1 -1
  25. package/dist/runtime/app/components/Templates/Community/WithEmoji.vue +1 -1
  26. package/dist/runtime/server/og-image/context.js +20 -4
  27. package/dist/runtime/server/og-image/satori/transforms/emojis/emoji-utils.d.ts +24 -0
  28. package/dist/runtime/server/og-image/satori/transforms/emojis/emoji-utils.js +76 -0
  29. package/dist/runtime/server/util/plugins.js +2 -14
  30. package/dist/runtime/shared.js +1 -1
  31. package/package.json +36 -39
  32. package/dist/client/_nuxt/Br6VVWxo.js +0 -1
  33. package/dist/client/_nuxt/Cw1iv1IW.js +0 -4017
  34. package/dist/client/_nuxt/Dtw-SHSX.js +0 -1
  35. package/dist/client/_nuxt/builds/meta/17f66c16-3b9b-4db1-b3c4-f2ed69a85873.json +0 -1
  36. package/dist/client/_nuxt/error-404.q4U0EoKE.css +0 -1
  37. package/dist/client/_nuxt/error-500.DXbjM38H.css +0 -1
  38. /package/dist/client/_nuxt/{entry.CPPV_4vb.css → entry.B0gj-CgF.css} +0 -0
@@ -1 +1 @@
1
- import{_ as s,u as a,c as i,o as u,a as e,t as o}from"./Cw1iv1IW.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const n=t;return a({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,r)=>(u(),i("div",l,[r[0]||(r[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},b=s(f,[["__scopeId","data-v-36b63092"]]);export{b as default};
1
+ import{_ as s,u as a,c as i,o as u,a as e,t as o}from"./De-qQEWw.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const n=t;return a({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,r)=>(u(),i("div",l,[r[0]||(r[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},h=s(f,[["__scopeId","data-v-232a872a"]]);export{h as default};
@@ -1 +1 @@
1
- import{_ as a,u as i,c as u,o as c,a as e,t as r,b as l,w as d,d as p,e as f}from"./Cw1iv1IW.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},b=["textContent"],h=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return i({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,o)=>{const s=f;return c(),u("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.statusCode)},null,8,b),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,h),e("div",x,[l(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:d(()=>[p(r(t.backHome),1)]),_:1})])])])}}},_=a(y,[["__scopeId","data-v-46c0b798"]]);export{_ as default};
1
+ import{_ as a,u as i,c as u,o as c,a as e,t as r,b as l,w as d,d as p,e as f}from"./De-qQEWw.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},b=["textContent"],h=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return i({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,o)=>{const s=f;return c(),u("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.statusCode)},null,8,b),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,h),e("div",x,[l(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:d(()=>[p(r(t.backHome),1)]),_:1})])])])}}},_=a(y,[["__scopeId","data-v-614499fb"]]);export{_ as default};
@@ -1 +1 @@
1
- {"id":"17f66c16-3b9b-4db1-b3c4-f2ed69a85873","timestamp":1744806051803}
1
+ {"id":"e8cf65e2-e6ce-426c-84bd-d6a74b10ae7a","timestamp":1747715432026}
@@ -0,0 +1 @@
1
+ {"id":"dev","timestamp":1747715432208,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"e8cf65e2-e6ce-426c-84bd-d6a74b10ae7a","timestamp":1747715432026,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -0,0 +1 @@
1
+ .spotlight[data-v-614499fb]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-614499fb]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-614499fb]{background-color:#ffffff4d}.gradient-border[data-v-614499fb]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-614499fb]{background-color:#1414144d}.gradient-border[data-v-614499fb]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-614499fb]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-614499fb]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-614499fb]{position:fixed}.left-0[data-v-614499fb]{left:0}.right-0[data-v-614499fb]{right:0}.z-10[data-v-614499fb]{z-index:10}.z-20[data-v-614499fb]{z-index:20}.grid[data-v-614499fb]{display:grid}.mb-16[data-v-614499fb]{margin-bottom:4rem}.mb-8[data-v-614499fb]{margin-bottom:2rem}.max-w-520px[data-v-614499fb]{max-width:520px}.min-h-screen[data-v-614499fb]{min-height:100vh}.w-full[data-v-614499fb]{width:100%}.flex[data-v-614499fb]{display:flex}.cursor-pointer[data-v-614499fb]{cursor:pointer}.place-content-center[data-v-614499fb]{place-content:center}.items-center[data-v-614499fb]{align-items:center}.justify-center[data-v-614499fb]{justify-content:center}.overflow-hidden[data-v-614499fb]{overflow:hidden}.bg-white[data-v-614499fb]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-614499fb]{padding-left:1rem;padding-right:1rem}.px-8[data-v-614499fb]{padding-left:2rem;padding-right:2rem}.py-2[data-v-614499fb]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-614499fb]{text-align:center}.text-8xl[data-v-614499fb]{font-size:6rem;line-height:1}.text-xl[data-v-614499fb]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-614499fb]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-614499fb]{font-weight:300}.font-medium[data-v-614499fb]{font-weight:500}.leading-tight[data-v-614499fb]{line-height:1.25}.font-sans[data-v-614499fb]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-614499fb]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-614499fb]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-614499fb]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-614499fb]{padding-left:0;padding-right:0}.sm\:px-6[data-v-614499fb]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-614499fb]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-614499fb]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-614499fb]{font-size:1.25rem;line-height:1.75rem}}
@@ -0,0 +1 @@
1
+ .spotlight[data-v-232a872a]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-232a872a]{position:fixed}.-bottom-1\/2[data-v-232a872a]{bottom:-50%}.left-0[data-v-232a872a]{left:0}.right-0[data-v-232a872a]{right:0}.grid[data-v-232a872a]{display:grid}.mb-16[data-v-232a872a]{margin-bottom:4rem}.mb-8[data-v-232a872a]{margin-bottom:2rem}.h-1\/2[data-v-232a872a]{height:50%}.max-w-520px[data-v-232a872a]{max-width:520px}.min-h-screen[data-v-232a872a]{min-height:100vh}.place-content-center[data-v-232a872a]{place-content:center}.overflow-hidden[data-v-232a872a]{overflow:hidden}.bg-white[data-v-232a872a]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-232a872a]{padding-left:2rem;padding-right:2rem}.text-center[data-v-232a872a]{text-align:center}.text-8xl[data-v-232a872a]{font-size:6rem;line-height:1}.text-xl[data-v-232a872a]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-232a872a]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-232a872a]{font-weight:300}.font-medium[data-v-232a872a]{font-weight:500}.leading-tight[data-v-232a872a]{line-height:1.25}.font-sans[data-v-232a872a]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-232a872a]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-232a872a]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-232a872a]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-232a872a]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-232a872a]{font-size:2.25rem;line-height:2.5rem}}
@@ -1,15 +1,15 @@
1
1
  <!DOCTYPE html><html><head><meta charset="utf-8">
2
2
  <meta name="viewport" content="width=device-width, initial-scale=1">
3
- <link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.CPPV_4vb.css" crossorigin>
4
- <link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Cw1iv1IW.js">
3
+ <link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.B0gj-CgF.css" crossorigin>
4
+ <link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/De-qQEWw.js">
5
5
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CVO1_9PV.js">
6
6
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D0r3Knsf.js">
7
- <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Br6VVWxo.js">
8
- <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Dtw-SHSX.js">
7
+ <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/B8PEiB0p.js">
8
+ <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Cp-IABpG.js">
9
9
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/B6E6ObS_.js">
10
- <link rel="prefetch" as="style" crossorigin href="/__nuxt-og-image/_nuxt/error-404.q4U0EoKE.css">
11
- <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Ct9h7GIg.js">
12
- <link rel="prefetch" as="style" crossorigin href="/__nuxt-og-image/_nuxt/error-500.DXbjM38H.css">
13
- <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CHRxzU3f.js">
14
- <script type="module" src="/__nuxt-og-image/_nuxt/Cw1iv1IW.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1744806057684,false]</script>
15
- <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"17f66c16-3b9b-4db1-b3c4-f2ed69a85873",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
10
+ <link rel="prefetch" as="style" crossorigin href="/__nuxt-og-image/_nuxt/error-404.B8Wdqtfs.css">
11
+ <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DriqWBeb.js">
12
+ <link rel="prefetch" as="style" crossorigin href="/__nuxt-og-image/_nuxt/error-500.Cj9Kfu8q.css">
13
+ <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Dr5ncp7f.js">
14
+ <script type="module" src="/__nuxt-og-image/_nuxt/De-qQEWw.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1747715437580,false]</script>
15
+ <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"e8cf65e2-e6ce-426c-84bd-d6a74b10ae7a",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
package/dist/module.cjs CHANGED
@@ -566,6 +566,7 @@ function normaliseFontInput(fonts) {
566
566
  });
567
567
  }
568
568
 
569
+ const IS_MODULE_DEVELOPMENT = undefined.endsWith(".ts");
569
570
  function isProviderEnabledForEnv(provider, nuxt, config) {
570
571
  return nuxt.options.dev && config.compatibility?.dev?.[provider] !== false || !nuxt.options.dev && (config.compatibility?.runtime?.[provider] !== false || config.compatibility?.prerender?.[provider] !== false);
571
572
  }
@@ -833,8 +834,8 @@ const module$1 = kit.defineNuxtModule({
833
834
  if (!config.zeroRuntime || nuxt.options.dev) {
834
835
  kit.addComponentsDir({
835
836
  path: resolve("./runtime/app/components/Templates/Community"),
836
- island: true
837
- // watch: true,
837
+ island: true,
838
+ watch: IS_MODULE_DEVELOPMENT
838
839
  });
839
840
  }
840
841
  [
@@ -856,7 +857,8 @@ const module$1 = kit.defineNuxtModule({
856
857
  if (fs.existsSync(path)) {
857
858
  kit.addComponentsDir({
858
859
  path,
859
- island: true
860
+ island: true,
861
+ watch: IS_MODULE_DEVELOPMENT
860
862
  });
861
863
  } else if (!defaultComponentDirs.includes(componentDir)) {
862
864
  logger_js.logger.warn(`The configured component directory \`./${pathe.relative(nuxt.options.rootDir, path)}\` does not exist. Skipping.`);
package/dist/module.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "bridge": false
6
6
  },
7
7
  "configKey": "ogImage",
8
- "version": "5.1.1",
8
+ "version": "5.1.3",
9
9
  "builder": {
10
10
  "@nuxt/module-builder": "1.0.1",
11
11
  "unbuild": "3.5.0"
package/dist/module.mjs CHANGED
@@ -546,6 +546,7 @@ function normaliseFontInput(fonts) {
546
546
  });
547
547
  }
548
548
 
549
+ const IS_MODULE_DEVELOPMENT = import.meta.filename.endsWith(".ts");
549
550
  function isProviderEnabledForEnv(provider, nuxt, config) {
550
551
  return nuxt.options.dev && config.compatibility?.dev?.[provider] !== false || !nuxt.options.dev && (config.compatibility?.runtime?.[provider] !== false || config.compatibility?.prerender?.[provider] !== false);
551
552
  }
@@ -813,8 +814,8 @@ const module = defineNuxtModule({
813
814
  if (!config.zeroRuntime || nuxt.options.dev) {
814
815
  addComponentsDir({
815
816
  path: resolve("./runtime/app/components/Templates/Community"),
816
- island: true
817
- // watch: true,
817
+ island: true,
818
+ watch: IS_MODULE_DEVELOPMENT
818
819
  });
819
820
  }
820
821
  [
@@ -836,7 +837,8 @@ const module = defineNuxtModule({
836
837
  if (existsSync(path)) {
837
838
  addComponentsDir({
838
839
  path,
839
- island: true
840
+ island: true,
841
+ watch: IS_MODULE_DEVELOPMENT
840
842
  });
841
843
  } else if (!defaultComponentDirs.includes(componentDir)) {
842
844
  logger.warn(`The configured component directory \`./${relative$1(nuxt.options.rootDir, path)}\` does not exist. Skipping.`);
@@ -13,7 +13,7 @@ defineProps({
13
13
  <div class="flex items-start justify-start h-full">
14
14
  <div class="flex flex-col justify-between w-full h-full p-20">
15
15
  <img :src="logo" height="50">
16
- <h1 class="text-[60px] text-white font-bold text-left">
16
+ <h1 class="text-[60px] text-white font-bold text-left" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
17
17
  {{ title }}
18
18
  </h1>
19
19
  </div>
@@ -22,14 +22,14 @@ defineProps({
22
22
  :style="{ backgroundImage: `url(${image})` }"
23
23
  />
24
24
  <div class="flex flex-col items-center text-center">
25
- <h1 class="flex gap-4 text-7xl font-bold">
25
+ <h1 class="flex gap-4 text-7xl font-bold" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
26
26
  <Icon
27
27
  v-if="icon"
28
28
  :name="icon"
29
29
  />
30
30
  {{ title }}
31
31
  </h1>
32
- <p class="text-2xl max-w-3xl">
32
+ <p class="text-2xl max-w-3xl" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
33
33
  {{ description }}
34
34
  </p>
35
35
  </div>
@@ -43,10 +43,10 @@ const description = computed(() => (props.description || "").slice(0, 200));
43
43
  <p v-if="headline" class="uppercase text-[24px] text-[#00DC82] mb-4 font-semibold">
44
44
  {{ headline }}
45
45
  </p>
46
- <h1 v-if="title" class="w-[600px] m-0 text-[75px] font-semibold mb-4 text-white flex items-center">
47
- <span>{{ title }}</span>
46
+ <h1 v-if="title" class="w-[600px] m-0 text-[75px] font-semibold mb-4 text-white" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
47
+ {{ title }}
48
48
  </h1>
49
- <p v-if="description" class="text-[32px] text-[#E4E4E7] leading-tight">
49
+ <p v-if="description" class="text-[32px] text-[#E4E4E7] leading-tight" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
50
50
  {{ description }}
51
51
  </p>
52
52
  </div>
@@ -69,13 +69,16 @@ if (typeof props.icon === "string" && !runtimeConfig.hasNuxtIcon && process.dev)
69
69
  <div class="h-full w-full justify-between relative">
70
70
  <div class="flex flex-row justify-between items-start">
71
71
  <div class="flex flex-col w-full max-w-[65%]">
72
- <h1 class="m-0 font-bold mb-[30px] text-[75px]">
72
+ <h1 class="m-0 font-bold mb-[30px] text-[75px]" style="display: block; text-overflow: ellipsis;" :style="{ lineClamp: description ? 2 : 3 }">
73
73
  {{ title }}
74
74
  </h1>
75
75
  <p
76
- v-if="description" class="text-[35px]" :class="[
76
+ v-if="description"
77
+ class="text-[35px] leading-12"
78
+ :class="[
77
79
  colorMode === 'light' ? ['text-gray-700'] : ['text-gray-300']
78
80
  ]"
81
+ style="display: block; line-clamp: 3; text-overflow: ellipsis;"
79
82
  >
80
83
  {{ description }}
81
84
  </p>
@@ -29,11 +29,11 @@ const title = computed(() => props.title.slice(0, 60));
29
29
  <p v-if="headline" class="uppercase text-[24px] text-[#FEC476] mb-4 font-semibold">
30
30
  {{ headline }}
31
31
  </p>
32
- <h1 class="w-[600px] m-0 text-[75px] font-semibold mb-4 text-white flex items-center">
33
- <span>{{ title }}</span>
32
+ <h1 class="w-[600px] m-0 text-[75px] font-semibold mb-4 text-white" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
33
+ {{ title }}
34
34
  </h1>
35
- <p class="text-[32px] text-[#E4E4E7] leading-tight">
36
- {{ description.slice(0, 200) }}
35
+ <p class="text-[32px] text-[#E4E4E7] leading-tight" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
36
+ {{ description }}
37
37
  </p>
38
38
  </div>
39
39
 
@@ -14,10 +14,10 @@ const website = computed(() => {
14
14
  <div class="h-full w-full flex items-start justify-start border-solid border-blue-500 border-[12px] bg-gray-50">
15
15
  <div class="flex items-start justify-start h-full">
16
16
  <div class="flex flex-col justify-between w-full h-full">
17
- <h1 class="text-[80px] p-20 font-black text-left">
17
+ <h1 class="text-[80px] p-20 font-black text-left" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
18
18
  {{ title }}
19
19
  </h1>
20
- <p class="text-2xl pb-10 px-20 font-bold mb-0">
20
+ <p class="text-2xl pb-10 px-20 font-bold mb-0" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
21
21
  {{ website }}
22
22
  </p>
23
23
  </div>
@@ -25,11 +25,17 @@ const description = computed(() => (props.description || "").slice(0, 200));
25
25
  <div class="flex flex-row justify-between">
26
26
  <div class="max-w-[700px]">
27
27
  <h1 class="mb-[30px] max-w-[700px] text-[60px] text-gray-900 font-normal flex flex-row">
28
- <span>{{ org }}</span>
29
- <span v-if="repo" class="ml-2">/</span>
30
- <span v-if="repo" class="ml-2 font-bold">{{ repo }}</span>
28
+ <p style="display: block; overflow: hidden; line-clamp: 1; text-overflow: clip;">
29
+ {{ org }}
30
+ </p>
31
+ <p v-if="repo" style="display: block; overflow: hidden; line-clamp: 1; text-overflow: clip;" class="ml-2">
32
+ /
33
+ </p>
34
+ <p v-if="repo" style="display: block; overflow: hidden; line-clamp: 1; text-overflow: clip;" class="ml-2 font-bold">
35
+ {{ repo }}
36
+ </p>
31
37
  </h1>
32
- <p class="text-gray-500 max-w-[700px] text-[35px] leading-[60px]">
38
+ <p class="text-gray-500 max-w-[700px] text-[35px] leading-[60px]" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
33
39
  {{ description }}
34
40
  </p>
35
41
  </div>
@@ -6,7 +6,7 @@ defineProps({
6
6
 
7
7
  <template>
8
8
  <div class="h-full w-full flex items-start justify-start bg-yellow-50 relative">
9
- <h1 class="text-7xl p-20 font-bold text-left text-gray-900">
9
+ <h1 class="text-7xl p-20 font-bold text-left text-gray-900" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
10
10
  {{ title }}
11
11
  </h1>
12
12
 
@@ -12,7 +12,7 @@ defineProps({
12
12
  <p class="text-[120px] mx-auto text-center font-bold mb-0">
13
13
  {{ emoji }}
14
14
  </p>
15
- <h1 class="text-[60px] font-bold">
15
+ <h1 class="text-[60px] font-bold" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
16
16
  {{ title }}
17
17
  </h1>
18
18
  </div>
@@ -51,14 +51,30 @@ export async function resolveContext(e) {
51
51
  statusMessage: `[Nuxt OG Image] Unknown OG Image type ${extension}.`
52
52
  });
53
53
  }
54
- let queryParams = { ...getQuery(e) };
55
- queryParams.props = JSON.parse(queryParams.props || "{}");
54
+ const query = getQuery(e);
55
+ let queryParams = {};
56
+ for (const k in query) {
57
+ const v = String(query[k]);
58
+ if (!v)
59
+ continue;
60
+ if (v.startsWith("{")) {
61
+ try {
62
+ queryParams[k] = JSON.parse(v);
63
+ } catch (error) {
64
+ if (import.meta.dev) {
65
+ logger.error(`[Nuxt OG Image] Invalid JSON in ${k} parameter: ${error.message}`);
66
+ }
67
+ }
68
+ } else {
69
+ queryParams[k] = v;
70
+ }
71
+ }
56
72
  queryParams = separateProps(queryParams);
57
73
  let basePath = withoutTrailingSlash(
58
74
  path.replace(`/__og-image__/image`, "").replace(`/__og-image__/static`, "").replace(`/og.${extension}`, "")
59
75
  );
60
- if (queryParams._query)
61
- basePath = withQuery(basePath, JSON.parse(queryParams._query));
76
+ if (queryParams._query && typeof queryParams._query === "object")
77
+ basePath = withQuery(basePath, queryParams._query);
62
78
  const isDebugJsonPayload = extension === "json" && runtimeConfig.debug;
63
79
  const key = resolvePathCacheKey(e, basePath);
64
80
  let options = queryParams.options;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Emoji Unicode to name mapping utilities
3
+ *
4
+ * This file provides utilities for converting Unicode emoji characters to their
5
+ * corresponding Iconify icon names, using a more efficient approach than a large
6
+ * hardcoded mapping.
7
+ */
8
+ export declare const EMOJI_PREFIXES: Record<string, string[]>;
9
+ export declare const KNOWN_EMOJI_NAMES: Record<string, string>;
10
+ /**
11
+ * Gets possible Iconify icon names for a given Unicode emoji
12
+ *
13
+ * @param codePoint The Unicode code point as a hex string (e.g., "1f44b" for 👋)
14
+ * @param emojiSet The emoji set to use (e.g., "noto")
15
+ * @returns An array of possible icon names to try
16
+ */
17
+ export declare function getEmojiIconNames(codePoint: string, emojiSet: string): string[];
18
+ /**
19
+ * Gets the code point for a Unicode emoji character
20
+ *
21
+ * @param emoji The emoji character (e.g., "👋")
22
+ * @returns Hex code point (e.g., "1f44b")
23
+ */
24
+ export declare function getEmojiCodePoint(emoji: string): string;
@@ -0,0 +1,76 @@
1
+ export const EMOJI_PREFIXES = {
2
+ // Most emoji sets use kebab-case naming
3
+ "default": ["emoji-", ""],
4
+ // Some sets may have specific prefixes
5
+ "noto": ["", "emoji-"],
6
+ "twemoji": ["", "emoji-"],
7
+ "fluent-emoji": ["", "emoji-"],
8
+ "fluent-emoji-flat": ["", "emoji-"],
9
+ "fluent-emoji-high-contrast": ["", "emoji-"],
10
+ "openmoji": ["", "emoji-"],
11
+ "emojione": ["", "emoji-"]
12
+ };
13
+ export const KNOWN_EMOJI_NAMES = {
14
+ "1f44b": "waving-hand",
15
+ "1f600": "grinning-face",
16
+ "1f604": "grinning-face-with-smiling-eyes",
17
+ "1f60d": "smiling-face-with-heart-eyes",
18
+ "1f618": "face-blowing-a-kiss",
19
+ "1f44d": "thumbs-up",
20
+ "1f44e": "thumbs-down",
21
+ "1f389": "party-popper",
22
+ "1f680": "rocket",
23
+ "1f4a5": "collision",
24
+ "1f525": "fire",
25
+ "1f381": "wrapped-gift",
26
+ "1f602": "face-with-tears-of-joy",
27
+ "1f970": "smiling-face-with-hearts",
28
+ "1f60a": "smiling-face-with-smiling-eyes",
29
+ "1f973": "partying-face",
30
+ "2764": "red-heart",
31
+ "1f49b": "yellow-heart",
32
+ "1f499": "blue-heart",
33
+ "1f49a": "green-heart",
34
+ "1f49c": "purple-heart",
35
+ "1f496": "sparkling-heart",
36
+ "1f495": "two-hearts",
37
+ "1f4af": "hundred-points",
38
+ "1f4aa": "flexed-biceps",
39
+ "1f44f": "clapping-hands",
40
+ "1f64f": "folded-hands",
41
+ "1f64c": "raising-hands",
42
+ "1f9d0": "face-with-monocle",
43
+ "1f914": "thinking-face",
44
+ "1f605": "grinning-face-with-sweat",
45
+ "1f643": "upside-down-face",
46
+ "1f609": "winking-face",
47
+ "1f60e": "smiling-face-with-sunglasses",
48
+ "1f385": "santa-claus",
49
+ "1f384": "christmas-tree",
50
+ "1f334": "palm-tree",
51
+ "1f419": "octopus",
52
+ "1f98b": "butterfly",
53
+ "1f41d": "honeybee",
54
+ "1f436": "dog-face",
55
+ "1f431": "cat-face",
56
+ "1f427": "penguin",
57
+ "1f98a": "fox",
58
+ "1f438": "frog"
59
+ };
60
+ export function getEmojiIconNames(codePoint, emojiSet) {
61
+ const prefixes = EMOJI_PREFIXES[emojiSet] || EMOJI_PREFIXES.default;
62
+ if (KNOWN_EMOJI_NAMES[codePoint]) {
63
+ return prefixes.map((prefix) => `${prefix}${KNOWN_EMOJI_NAMES[codePoint]}`);
64
+ }
65
+ return [
66
+ // Try direct code point (e.g., "1f44b")
67
+ codePoint,
68
+ // Try with u prefix (e.g., "u1f44b")
69
+ `u${codePoint}`,
70
+ // Try with emoji- prefix (e.g., "emoji-u1f44b")
71
+ ...prefixes.map((prefix) => `${prefix}u${codePoint}`)
72
+ ];
73
+ }
74
+ export function getEmojiCodePoint(emoji) {
75
+ return emoji.codePointAt(0).toString(16);
76
+ }
@@ -21,7 +21,7 @@ export function nuxtContentPlugin(nitroApp) {
21
21
  let src = optionsWithDefault.url || getOgImagePath(path, optionsWithDefault);
22
22
  if (optionsWithDefault._query && Object.keys(optionsWithDefault._query).length)
23
23
  src = withQuery(src, { _query: optionsWithDefault._query });
24
- const meta = generateMeta(src, optionsWithDefault);
24
+ const meta = generateMeta(src, ogImageConfig);
25
25
  if (optionsWithDefault.url) {
26
26
  content.head = defu({ meta }, content.head);
27
27
  return content;
@@ -47,19 +47,7 @@ export function nuxtContentPlugin(nitroApp) {
47
47
  // slighty higher priority
48
48
  }
49
49
  ],
50
- meta: [
51
- { property: "og:image", content: src },
52
- { property: "og:image:width", content: optionsWithDefault.width },
53
- { property: "og:image:height", content: optionsWithDefault.height },
54
- { property: "og:image:type", content: `image/${optionsWithDefault.extension}` },
55
- { property: "og:image:alt", content: optionsWithDefault.alt },
56
- // twitter
57
- { name: "twitter:card", content: "summary_large_image" },
58
- { name: "twitter:image:src", content: src },
59
- { name: "twitter:image:width", content: optionsWithDefault.width },
60
- { name: "twitter:image:height", content: optionsWithDefault.height },
61
- { name: "twitter:image:alt", content: optionsWithDefault.alt }
62
- ]
50
+ meta: generateMeta(src, optionsWithDefault)
63
51
  }, content.head);
64
52
  }
65
53
  return content;
@@ -6,7 +6,7 @@ export * from "./pure.js";
6
6
  export function generateMeta(url, resolvedOptions) {
7
7
  const meta = [
8
8
  { property: "og:image", content: url },
9
- { property: "og:image:type", content: () => `image/${resolvedOptions.extension || getExtension(toValue(url))}` },
9
+ { property: "og:image:type", content: () => `image/${getExtension(toValue(url)) || resolvedOptions.extension}` },
10
10
  { name: "twitter:card", content: "summary_large_image" },
11
11
  // we don't need this but avoids issue when using useSeoMeta({ twitterImage })
12
12
  { name: "twitter:image", content: url },
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-og-image",
3
3
  "type": "module",
4
- "version": "5.1.2",
4
+ "version": "5.1.4",
5
5
  "description": "Enlightened OG Image generation for Nuxt.",
6
6
  "author": {
7
7
  "website": "https://harlanzw.com",
@@ -48,77 +48,74 @@
48
48
  "unstorage": "^1.15.0"
49
49
  },
50
50
  "dependencies": {
51
- "@nuxt/devtools-kit": "^2.4.0",
52
- "@nuxt/kit": "^3.16.2",
51
+ "@nuxt/devtools-kit": "^2.4.1",
52
+ "@nuxt/kit": "^3.17.3",
53
53
  "@resvg/resvg-js": "^2.6.2",
54
54
  "@resvg/resvg-wasm": "^2.6.2",
55
- "@unocss/core": "^66.0.0",
56
- "@unocss/preset-wind3": "^66.0.0",
57
- "chrome-launcher": "^1.1.2",
55
+ "@unocss/core": "^66.1.2",
56
+ "@unocss/preset-wind3": "^66.1.2",
57
+ "chrome-launcher": "^1.2.0",
58
58
  "consola": "^3.4.2",
59
59
  "defu": "^6.1.4",
60
- "execa": "^9.5.2",
60
+ "execa": "^9.5.3",
61
61
  "image-size": "^2.0.2",
62
62
  "magic-string": "^0.30.17",
63
63
  "mocked-exports": "^0.1.1",
64
- "nuxt-site-config": "^3.1.9",
64
+ "nuxt-site-config": "^3.2.0",
65
65
  "nypm": "^0.6.0",
66
66
  "ofetch": "^1.4.1",
67
67
  "ohash": "^2.0.11",
68
68
  "pathe": "^2.0.3",
69
69
  "pkg-types": "^2.1.0",
70
- "playwright-core": "^1.51.1",
70
+ "playwright-core": "^1.52.0",
71
71
  "radix3": "^1.1.2",
72
- "satori": "^0.12.2",
72
+ "satori": "^0.13.1",
73
73
  "satori-html": "^0.3.2",
74
74
  "sirv": "^3.0.1",
75
75
  "std-env": "^3.9.0",
76
76
  "strip-literal": "^3.0.0",
77
77
  "ufo": "^1.6.1",
78
- "unplugin": "^2.3.2",
78
+ "unplugin": "^2.3.4",
79
79
  "unwasm": "^0.3.9",
80
80
  "yoga-wasm-web": "^0.3.3"
81
81
  },
82
82
  "devDependencies": {
83
- "@antfu/eslint-config": "^4.12.0",
83
+ "@antfu/eslint-config": "^4.13.1",
84
84
  "@css-inline/css-inline": "^0.14.3",
85
85
  "@headlessui/vue": "^1.7.23",
86
86
  "@iconify-json/carbon": "^1.2.8",
87
87
  "@iconify-json/logos": "^1.2.4",
88
88
  "@iconify-json/noto": "^1.2.3",
89
89
  "@iconify-json/ri": "^1.2.5",
90
- "@iconify-json/tabler": "^1.2.17",
91
- "@img/sharp-linux-x64": "0.34.1",
92
- "@nuxt/content": "^3.4.0",
93
- "@nuxt/devtools": "^2.4.0",
94
- "@nuxt/devtools-ui-kit": "^2.4.0",
95
- "@nuxt/icon": "^1.12.0",
90
+ "@iconify-json/tabler": "^1.2.18",
91
+ "@img/sharp-linux-x64": "^0.34.1",
92
+ "@nuxt/content": "^3.5.1",
93
+ "@nuxt/devtools": "^2.4.1",
94
+ "@nuxt/devtools-ui-kit": "^2.4.1",
95
+ "@nuxt/icon": "^1.13.0",
96
96
  "@nuxt/image": "^1.10.0",
97
97
  "@nuxt/module-builder": "^1.0.1",
98
- "@nuxt/test-utils": "3.17.2",
99
- "@nuxt/ui": "^3.0.2",
98
+ "@nuxt/test-utils": "^3.19.0",
99
+ "@nuxt/ui": "^3.1.2",
100
100
  "@nuxtjs/color-mode": "^3.5.2",
101
101
  "@nuxtjs/eslint-config-typescript": "^12.1.0",
102
- "@nuxtjs/i18n": "^9.5.3",
103
- "@nuxtjs/tailwindcss": "^6.13.2",
104
- "@unocss/nuxt": "^66.0.0",
105
- "@unocss/preset-icons": "^66.0.0",
106
- "@unocss/runtime": "^66.0.0",
107
- "@vueuse/nuxt": "^13.1.0",
108
- "bumpp": "^10.1.0",
109
- "eslint": "9.24.0",
110
- "jest-image-snapshot": "^6.4.0",
111
- "nuxt": "^3.16.2",
112
- "playwright": "^1.51.1",
113
- "sass": "^1.86.3",
102
+ "@nuxtjs/i18n": "^9.5.4",
103
+ "@nuxtjs/tailwindcss": "^6.14.0",
104
+ "@unocss/nuxt": "^66.1.2",
105
+ "@unocss/preset-icons": "^66.1.2",
106
+ "@unocss/runtime": "^66.1.2",
107
+ "@vueuse/nuxt": "^13.2.0",
108
+ "bumpp": "^10.1.1",
109
+ "eslint": "9.25.1",
110
+ "jest-image-snapshot": "^6.5.0",
111
+ "nuxt": "^3.17.3",
112
+ "playwright": "^1.52.0",
113
+ "sass": "^1.89.0",
114
114
  "sharp": "^0.34.1",
115
- "typescript": "5.8.3",
116
- "unocss": "^66.0.0",
117
- "vitest": "^3.1.1",
118
- "vue-tsc": "^2.2.8"
119
- },
120
- "resolutions": {
121
- "typescript": "5.8.3"
115
+ "typescript": "^5.8.3",
116
+ "unocss": "^66.1.2",
117
+ "vitest": "^3.1.3",
118
+ "vue-tsc": "^2.2.10"
122
119
  },
123
120
  "scripts": {
124
121
  "stub": "nuxt-build-module build --stub && nuxt-module-build prepare",