nuxt-og-image 5.1.13 → 6.0.0-beta.2

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 (233) hide show
  1. package/README.md +1 -1
  2. package/bin/cli.mjs +2 -0
  3. package/dist/chunks/tw4-classes.cjs +116 -0
  4. package/dist/chunks/tw4-classes.mjs +113 -0
  5. package/dist/chunks/tw4-generator.cjs +118 -0
  6. package/dist/chunks/tw4-generator.mjs +110 -0
  7. package/dist/cli.cjs +433 -0
  8. package/dist/cli.d.cts +1 -0
  9. package/dist/cli.d.mts +1 -0
  10. package/dist/cli.d.ts +1 -0
  11. package/dist/cli.mjs +416 -0
  12. package/dist/client/200.html +1 -1
  13. package/dist/client/404.html +1 -1
  14. package/dist/client/_fonts/0xp3SbCWC1OhX7q1-uF6kilMZFm-alJNkUtkLTPCy_A-tN9KwPUWhhXvtqh74sU9FIkI4W6hsbm85r0X24hjOfM.woff2 +0 -0
  15. package/dist/client/_fonts/1ZTlEDqU4DtwDJiND8f6qaugUpa0RIDvQl-v7iM6l54-D6hedAgqRfOCLZzaShnyeAvlEnMzk4Wm7g9WDKWFHIc.woff +0 -0
  16. package/dist/client/_fonts/4HA9tc4y8BVQeLXvLn3JgQqilAj1xrAnUSprQGHIPSw-ZPswEL_UDOYaxTLQDUySPjoOHDxhD83pD19HMfKfK9s.woff2 +0 -0
  17. package/dist/client/_fonts/Bmul3LaKlc7BUKqJHE_UmEoF40Sg_2ga52yJjwyDcKs-TnYmYl1DNYkiWMu0Vx49DakCPBuiCCj9zoLIuQjUdKY.woff2 +0 -0
  18. package/dist/client/_fonts/DfgmjWGpWte3Q3a54Nevr_BYmMM5YEJXRI1CdI2VwO0-ox5RadQfCyVTmKl_hubTaIJjtRw9oaQz2GDBeZR6l1M.woff2 +0 -0
  19. package/dist/client/_fonts/Lc_5lWuBuZcZ166p1-s-mnGkMJwIYJE_QDCkws8iCkI-r45Qbm2hCykrfOZ0kowz__uTTTUOPDN9hz34QcRNTY4.woff2 +0 -0
  20. package/dist/client/_fonts/iEvApgDRmzKzNqOYocBTrmcHZmuGAJloawKDP1S0nyE-T3oc_9We24QGwfw5naik4cM0g7VxylWVaQwKm4dy3cw.woff2 +0 -0
  21. package/dist/client/_nuxt/0kYTU2a7.js +2 -0
  22. package/dist/client/_nuxt/B0QDx5EE.js +2 -0
  23. package/dist/client/_nuxt/BKqzYw6x.js +3 -0
  24. package/dist/client/_nuxt/C-Ivr2Rl.js +1 -0
  25. package/dist/client/_nuxt/CLgn8DCr.js +1 -0
  26. package/dist/client/_nuxt/CwWm-XE3.js +1 -0
  27. package/dist/client/_nuxt/D9eL2h5z.js +1 -0
  28. package/dist/client/_nuxt/DJXHIJSq.js +1 -0
  29. package/dist/client/_nuxt/DVnX3Z-O.js +1 -0
  30. package/dist/client/_nuxt/DXObZt09.js +184 -0
  31. package/dist/client/_nuxt/Dxi6QG7I.js +1 -0
  32. package/dist/client/_nuxt/E8AZ6HoH.js +1 -0
  33. package/dist/client/_nuxt/IFrameLoader.CGrV1TpP.css +1 -0
  34. package/dist/client/_nuxt/JAMwWy1K.js +3864 -0
  35. package/dist/client/_nuxt/OSectionBlock.BVHnMsIr.css +1 -0
  36. package/dist/client/_nuxt/PONEy9N-.js +1 -0
  37. package/dist/client/_nuxt/UdkqSAsD.js +1 -0
  38. package/dist/client/_nuxt/builds/latest.json +1 -1
  39. package/dist/client/_nuxt/builds/meta/8e2df3bd-1df7-4172-a3c9-b46cdb9070e5.json +1 -0
  40. package/dist/client/_nuxt/entry.BEExJd9R.css +2 -0
  41. package/dist/client/_nuxt/error-404.B79WD2X-.css +1 -0
  42. package/dist/client/_nuxt/error-500.DT3Sd0Wu.css +1 -0
  43. package/dist/client/_nuxt/pages.eW3hi7XF.css +1 -0
  44. package/dist/client/_nuxt/templates.dUiUBaip.css +1 -0
  45. package/dist/client/_payload.json +1 -0
  46. package/dist/client/debug/_payload.json +1 -0
  47. package/dist/client/debug/index.html +1 -0
  48. package/dist/client/docs/_payload.json +1 -0
  49. package/dist/client/docs/index.html +1 -0
  50. package/dist/client/fonts/HubotSans-Regular.woff2 +0 -0
  51. package/dist/client/index.html +1 -1
  52. package/dist/client/templates/_payload.json +1 -0
  53. package/dist/client/templates/index.html +1 -0
  54. package/dist/module.cjs +36 -1027
  55. package/dist/module.d.cts +63 -25
  56. package/dist/module.d.mts +63 -25
  57. package/dist/module.d.ts +63 -25
  58. package/dist/module.json +1 -1
  59. package/dist/module.mjs +32 -1009
  60. package/dist/runtime/app/components/Templates/Community/Brutalist.satori.d.vue.ts +14 -0
  61. package/dist/runtime/app/components/Templates/Community/Brutalist.satori.vue +51 -0
  62. package/dist/runtime/app/components/Templates/Community/Brutalist.satori.vue.d.ts +14 -0
  63. package/dist/runtime/app/components/Templates/Community/{Frame.vue.d.ts → Frame.satori.d.vue.ts} +2 -2
  64. package/dist/runtime/app/components/Templates/Community/Frame.satori.vue +71 -0
  65. package/dist/runtime/app/components/Templates/Community/{Frame.d.vue.ts → Frame.satori.vue.d.ts} +2 -2
  66. package/dist/runtime/app/components/Templates/Community/Newspaper.satori.d.vue.ts +12 -0
  67. package/dist/runtime/app/components/Templates/Community/Newspaper.satori.vue +70 -0
  68. package/dist/runtime/app/components/Templates/Community/Newspaper.satori.vue.d.ts +12 -0
  69. package/dist/runtime/app/components/Templates/Community/Nuxt.satori.d.vue.ts +12 -0
  70. package/dist/runtime/app/components/Templates/Community/{Nuxt.vue → Nuxt.satori.vue} +3 -3
  71. package/dist/runtime/app/components/Templates/Community/Nuxt.satori.vue.d.ts +12 -0
  72. package/dist/runtime/app/components/Templates/Community/NuxtSeo.satori.d.vue.ts +12 -0
  73. package/dist/runtime/app/components/Templates/Community/NuxtSeo.satori.vue +69 -0
  74. package/dist/runtime/app/components/Templates/Community/NuxtSeo.satori.vue.d.ts +12 -0
  75. package/dist/runtime/app/components/Templates/Community/Pergel.satori.d.vue.ts +12 -0
  76. package/dist/runtime/app/components/Templates/Community/{Pergel.vue → Pergel.satori.vue} +14 -11
  77. package/dist/runtime/app/components/Templates/Community/Pergel.satori.vue.d.ts +12 -0
  78. package/dist/runtime/app/components/Templates/Community/Retro.satori.d.vue.ts +12 -0
  79. package/dist/runtime/app/components/Templates/Community/Retro.satori.vue +64 -0
  80. package/dist/runtime/app/components/Templates/Community/Retro.satori.vue.d.ts +12 -0
  81. package/dist/runtime/app/components/Templates/Community/SaaS.satori.d.vue.ts +12 -0
  82. package/dist/runtime/app/components/Templates/Community/SaaS.satori.vue +60 -0
  83. package/dist/runtime/app/components/Templates/Community/SaaS.satori.vue.d.ts +12 -0
  84. package/dist/runtime/app/components/Templates/Community/SimpleBlog.satori.d.vue.ts +9 -0
  85. package/dist/runtime/app/components/Templates/Community/SimpleBlog.satori.vue +38 -0
  86. package/dist/runtime/app/components/Templates/Community/SimpleBlog.satori.vue.d.ts +9 -0
  87. package/dist/runtime/app/components/Templates/Community/{UnJs.d.vue.ts → UnJs.satori.d.vue.ts} +2 -2
  88. package/dist/runtime/app/components/Templates/Community/{UnJs.vue → UnJs.satori.vue} +41 -33
  89. package/dist/runtime/app/components/Templates/Community/{UnJs.vue.d.ts → UnJs.satori.vue.d.ts} +2 -2
  90. package/dist/runtime/app/components/Templates/Community/WithEmoji.satori.d.vue.ts +13 -0
  91. package/dist/runtime/app/components/Templates/Community/WithEmoji.satori.vue +27 -0
  92. package/dist/runtime/app/components/Templates/Community/WithEmoji.satori.vue.d.ts +13 -0
  93. package/dist/runtime/app/composables/_defineOgImageRaw.d.ts +6 -0
  94. package/dist/runtime/app/composables/_defineOgImageRaw.js +70 -0
  95. package/dist/runtime/app/composables/defineOgImage.d.ts +14 -2
  96. package/dist/runtime/app/composables/defineOgImage.js +13 -42
  97. package/dist/runtime/app/composables/defineOgImageComponent.d.ts +5 -1
  98. package/dist/runtime/app/composables/defineOgImageComponent.js +4 -5
  99. package/dist/runtime/app/composables/defineOgImageScreenshot.d.ts +1 -1
  100. package/dist/runtime/app/composables/defineOgImageScreenshot.js +2 -2
  101. package/dist/runtime/app/composables/mock.d.ts +7 -4
  102. package/dist/runtime/app/composables/mock.js +4 -4
  103. package/dist/runtime/app/utils/plugins.js +22 -28
  104. package/dist/runtime/app/utils.d.ts +15 -1
  105. package/dist/runtime/app/utils.js +74 -46
  106. package/dist/runtime/pure.d.ts +7 -0
  107. package/dist/runtime/pure.js +105 -0
  108. package/dist/runtime/server/og-image/bindings/css-inline/wasm-fs.d.ts +3 -2
  109. package/dist/runtime/server/og-image/bindings/css-inline/wasm.d.ts +3 -2
  110. package/dist/runtime/server/og-image/bindings/font-assets/cloudflare.d.ts +3 -0
  111. package/dist/runtime/server/og-image/bindings/font-assets/cloudflare.js +22 -0
  112. package/dist/runtime/server/og-image/bindings/font-assets/dev-prerender.d.ts +3 -0
  113. package/dist/runtime/server/og-image/bindings/font-assets/dev-prerender.js +49 -0
  114. package/dist/runtime/server/og-image/bindings/font-assets/node.d.ts +3 -0
  115. package/dist/runtime/server/og-image/bindings/font-assets/node.js +14 -0
  116. package/dist/runtime/server/og-image/bindings/resvg/node-dev.d.ts +5 -0
  117. package/dist/runtime/server/og-image/bindings/resvg/node-dev.js +70 -0
  118. package/dist/runtime/server/og-image/bindings/takumi/node.d.ts +6 -0
  119. package/dist/runtime/server/og-image/bindings/takumi/node.js +5 -0
  120. package/dist/runtime/server/og-image/bindings/takumi/wasm.d.ts +6 -0
  121. package/dist/runtime/server/og-image/bindings/takumi/wasm.js +6 -0
  122. package/dist/runtime/server/og-image/cache/buildCache.d.ts +16 -0
  123. package/dist/runtime/server/og-image/cache/buildCache.js +48 -0
  124. package/dist/runtime/server/og-image/cache/lru.d.ts +2 -2
  125. package/dist/runtime/server/og-image/cache/lru.js +3 -3
  126. package/dist/runtime/server/og-image/cache/mock.d.ts +1 -2
  127. package/dist/runtime/server/og-image/cache/mock.js +0 -1
  128. package/dist/runtime/server/og-image/chromium/screenshot.js +4 -3
  129. package/dist/runtime/server/og-image/context.d.ts +2 -3
  130. package/dist/runtime/server/og-image/context.js +55 -193
  131. package/dist/runtime/server/og-image/devtools.d.ts +10 -0
  132. package/dist/runtime/server/og-image/devtools.js +74 -0
  133. package/dist/runtime/server/og-image/fonts.d.ts +6 -0
  134. package/dist/runtime/server/og-image/fonts.js +41 -0
  135. package/dist/runtime/server/og-image/instances.d.ts +1 -0
  136. package/dist/runtime/server/og-image/instances.js +5 -0
  137. package/dist/runtime/server/og-image/satori/instances.d.ts +1 -36
  138. package/dist/runtime/server/og-image/satori/plugins/emojis.js +83 -4
  139. package/dist/runtime/server/og-image/satori/plugins/encoding.js +11 -1
  140. package/dist/runtime/server/og-image/satori/plugins/imageSrc.js +5 -1
  141. package/dist/runtime/server/og-image/satori/plugins/twClasses.js +35 -0
  142. package/dist/runtime/server/og-image/satori/renderer.js +16 -53
  143. package/dist/runtime/server/og-image/satori/transforms/emojis/emoji-names-minimal.d.ts +1 -0
  144. package/dist/runtime/server/og-image/satori/transforms/emojis/emoji-names-minimal.js +223 -0
  145. package/dist/runtime/server/og-image/satori/transforms/emojis/emoji-utils.d.ts +45 -0
  146. package/dist/runtime/server/og-image/satori/transforms/emojis/emoji-utils.js +13 -0
  147. package/dist/runtime/server/og-image/satori/transforms/emojis/fetch.d.ts +6 -0
  148. package/dist/runtime/server/og-image/satori/transforms/emojis/fetch.js +38 -0
  149. package/dist/runtime/server/og-image/satori/transforms/emojis/index.d.ts +7 -0
  150. package/dist/runtime/server/og-image/satori/transforms/emojis/index.js +64 -0
  151. package/dist/runtime/server/og-image/satori/transforms/emojis/local.d.ts +7 -0
  152. package/dist/runtime/server/og-image/satori/transforms/emojis/local.js +32 -0
  153. package/dist/runtime/server/og-image/satori/utils.js +5 -4
  154. package/dist/runtime/server/og-image/satori/vnodes.js +7 -6
  155. package/dist/runtime/server/og-image/takumi/instances.d.ts +1 -0
  156. package/dist/runtime/server/og-image/takumi/instances.js +6 -0
  157. package/dist/runtime/server/og-image/takumi/nodes.d.ts +12 -0
  158. package/dist/runtime/server/og-image/takumi/nodes.js +86 -0
  159. package/dist/runtime/server/og-image/takumi/renderer.d.ts +3 -0
  160. package/dist/runtime/server/og-image/takumi/renderer.js +45 -0
  161. package/dist/runtime/server/og-image/templates/html.js +32 -23
  162. package/dist/runtime/server/plugins/prerender.d.ts +1 -1
  163. package/dist/runtime/server/plugins/prerender.js +17 -7
  164. package/dist/runtime/server/util/auto-eject.d.ts +2 -0
  165. package/dist/runtime/server/util/auto-eject.js +30 -0
  166. package/dist/runtime/server/util/eventHandlers.d.ts +0 -1
  167. package/dist/runtime/server/util/eventHandlers.js +15 -85
  168. package/dist/runtime/server/util/options.d.ts +7 -2
  169. package/dist/runtime/server/util/options.js +40 -6
  170. package/dist/runtime/server/utils.d.ts +6 -2
  171. package/dist/runtime/server/utils.js +12 -8
  172. package/dist/runtime/shared/urlEncoding.d.ts +64 -0
  173. package/dist/runtime/shared/urlEncoding.js +194 -0
  174. package/dist/runtime/shared.d.ts +4 -9
  175. package/dist/runtime/shared.js +31 -50
  176. package/dist/runtime/types.d.ts +71 -25
  177. package/dist/shared/nuxt-og-image.D-QhzI76.mjs +2831 -0
  178. package/dist/shared/nuxt-og-image.iluFGbPR.cjs +2858 -0
  179. package/dist/types.d.mts +2 -0
  180. package/package.json +108 -44
  181. package/types/virtual.d.ts +7 -1
  182. package/dist/client/_nuxt/B3LgXoKV.js +0 -2
  183. package/dist/client/_nuxt/B8PEiB0p.js +0 -1
  184. package/dist/client/_nuxt/CPsbVDfV.js +0 -1
  185. package/dist/client/_nuxt/CVO1_9PV.js +0 -1
  186. package/dist/client/_nuxt/CjQm5wk3.js +0 -4029
  187. package/dist/client/_nuxt/Cp-IABpG.js +0 -1
  188. package/dist/client/_nuxt/D0TMZt8T.js +0 -1
  189. package/dist/client/_nuxt/D0r3Knsf.js +0 -1
  190. package/dist/client/_nuxt/builds/meta/eb2c0390-3125-4af7-b189-e76a7dfe3017.json +0 -1
  191. package/dist/client/_nuxt/entry.cdy4VsCK.css +0 -1
  192. package/dist/client/_nuxt/error-404.Cu4JbXd7.css +0 -1
  193. package/dist/client/_nuxt/error-500.B79uceR7.css +0 -1
  194. package/dist/runtime/app/components/OgImage/OgImage.d.ts +0 -3
  195. package/dist/runtime/app/components/OgImage/OgImage.js +0 -10
  196. package/dist/runtime/app/components/Templates/Community/BrandedLogo.d.vue.ts +0 -13
  197. package/dist/runtime/app/components/Templates/Community/BrandedLogo.vue +0 -22
  198. package/dist/runtime/app/components/Templates/Community/BrandedLogo.vue.d.ts +0 -13
  199. package/dist/runtime/app/components/Templates/Community/Frame.vue +0 -58
  200. package/dist/runtime/app/components/Templates/Community/Nuxt.d.vue.ts +0 -12
  201. package/dist/runtime/app/components/Templates/Community/Nuxt.vue.d.ts +0 -12
  202. package/dist/runtime/app/components/Templates/Community/NuxtSeo.d.vue.ts +0 -15
  203. package/dist/runtime/app/components/Templates/Community/NuxtSeo.vue +0 -103
  204. package/dist/runtime/app/components/Templates/Community/NuxtSeo.vue.d.ts +0 -15
  205. package/dist/runtime/app/components/Templates/Community/Pergel.d.vue.ts +0 -12
  206. package/dist/runtime/app/components/Templates/Community/Pergel.vue.d.ts +0 -12
  207. package/dist/runtime/app/components/Templates/Community/SimpleBlog.d.vue.ts +0 -9
  208. package/dist/runtime/app/components/Templates/Community/SimpleBlog.vue +0 -27
  209. package/dist/runtime/app/components/Templates/Community/SimpleBlog.vue.d.ts +0 -9
  210. package/dist/runtime/app/components/Templates/Community/Wave.d.vue.ts +0 -11
  211. package/dist/runtime/app/components/Templates/Community/Wave.vue +0 -28
  212. package/dist/runtime/app/components/Templates/Community/Wave.vue.d.ts +0 -11
  213. package/dist/runtime/app/components/Templates/Community/WithEmoji.d.vue.ts +0 -13
  214. package/dist/runtime/app/components/Templates/Community/WithEmoji.vue +0 -21
  215. package/dist/runtime/app/components/Templates/Community/WithEmoji.vue.d.ts +0 -13
  216. package/dist/runtime/assets/Inter-normal-400.ttf.base64 +0 -1
  217. package/dist/runtime/assets/Inter-normal-700.ttf.base64 +0 -1
  218. package/dist/runtime/server/og-image/satori/font.d.ts +0 -3
  219. package/dist/runtime/server/og-image/satori/font.js +0 -40
  220. package/dist/runtime/server/og-image/satori/plugins/unocss.js +0 -55
  221. package/dist/runtime/server/og-image/satori/transforms/emojis.d.ts +0 -3
  222. package/dist/runtime/server/og-image/satori/transforms/emojis.js +0 -3595
  223. package/dist/runtime/server/plugins/__zero-runtime/nuxt-content-v2.d.ts +0 -2
  224. package/dist/runtime/server/plugins/__zero-runtime/nuxt-content-v2.js +0 -9
  225. package/dist/runtime/server/plugins/nuxt-content-v2.d.ts +0 -2
  226. package/dist/runtime/server/plugins/nuxt-content-v2.js +0 -5
  227. package/dist/runtime/server/routes/__zero-runtime/font.d.ts +0 -2
  228. package/dist/runtime/server/routes/__zero-runtime/font.js +0 -8
  229. package/dist/runtime/server/routes/font.d.ts +0 -2
  230. package/dist/runtime/server/routes/font.js +0 -3
  231. package/dist/runtime/server/util/plugins.d.ts +0 -2
  232. package/dist/runtime/server/util/plugins.js +0 -56
  233. /package/dist/runtime/server/og-image/satori/plugins/{unocss.d.ts → twClasses.d.ts} +0 -0
@@ -0,0 +1,60 @@
1
+ <script setup>
2
+ import { useSiteConfig } from "#site-config/app/composables";
3
+ const props = defineProps({
4
+ title: { type: String, required: false },
5
+ icon: { type: String, required: false },
6
+ siteName: { type: String, required: false },
7
+ theme: { type: String, required: false, default: "#6366f1" },
8
+ image: { type: String, required: false }
9
+ });
10
+ const siteConfig = useSiteConfig();
11
+ const title = props.title || siteConfig.title || "Build something amazing";
12
+ const siteName = props.siteName || siteConfig.name || "Acme";
13
+ </script>
14
+
15
+ <template>
16
+ <div class="w-full h-full flex flex-col relative overflow-hidden" :style="{ background: theme }">
17
+ <!-- Main content area - full height -->
18
+ <div class="flex-1 flex flex-col p-7 relative">
19
+ <!-- Left side: Title + Site name -->
20
+ <div class="flex flex-col justify-between h-full w-full lg:w-[50%]">
21
+ <!-- Title -->
22
+ <h1
23
+ class="font-black leading-[1.08] tracking-tight text-white text-[56px] line-clamp-3"
24
+ style="display: block; font-style: italic; text-shadow: 0 2px 10px rgba(0,0,0,0.2);"
25
+ >
26
+ {{ title }}
27
+ </h1>
28
+
29
+ <!-- Logo / Site name -->
30
+ <div class="flex flex-row items-center gap-3">
31
+ <div v-if="icon" class="flex items-center justify-center rounded-full bg-white/20 w-14 h-14">
32
+ <span class="text-3xl text-white">{{ icon }}</span>
33
+ </div>
34
+ <span class="font-black text-white text-[56px]">{{ siteName }}</span>
35
+ </div>
36
+ </div>
37
+
38
+ <!-- Product screenshot - absolute positioned, cut off on right -->
39
+ <div
40
+ v-if="image"
41
+ class="absolute flex flex-col bg-[#1a1a1a] rounded-xl overflow-hidden shadow-2xl hidden lg:flex"
42
+ style="right: -120px; top: 20px; bottom: 20px; width: 55%;"
43
+ >
44
+ <!-- Browser toolbar -->
45
+ <div class="flex flex-row items-center bg-[#2d2d2d] px-4 py-3">
46
+ <div class="w-3 h-3 rounded-full bg-[#ff5f57]" />
47
+ <div class="w-3 h-3 rounded-full bg-[#febc2e] ml-2" />
48
+ <div class="w-3 h-3 rounded-full bg-[#28c840] ml-2" />
49
+ </div>
50
+ <!-- Screenshot area -->
51
+ <div class="flex-1 flex bg-[#f5f5f5]">
52
+ <img
53
+ :src="image"
54
+ class="w-full h-full object-cover object-left-top"
55
+ >
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </template>
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ icon?: string;
4
+ siteName?: string;
5
+ theme?: string;
6
+ image?: string;
7
+ };
8
+ declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
+ theme: string;
10
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,9 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ website?: string;
4
+ };
5
+ declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
6
+ title: string;
7
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,38 @@
1
+ <script setup>
2
+ import { useSiteConfig } from "#site-config/app/composables";
3
+ import { parseURL } from "ufo";
4
+ import { computed } from "vue";
5
+ const props = defineProps({
6
+ title: { type: String, required: false, default: "title" },
7
+ website: { type: String, required: false }
8
+ });
9
+ const website = computed(() => {
10
+ return props.website || parseURL(useSiteConfig().url).host;
11
+ });
12
+ </script>
13
+
14
+ <template>
15
+ <div class="h-full w-full flex relative overflow-hidden" style="background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);">
16
+ <!-- Accent bar -->
17
+ <div class="absolute left-0 top-0 bottom-0 w-3" style="background: linear-gradient(180deg, #3b82f6 0%, #1d4ed8 100%);" />
18
+
19
+ <!-- Subtle pattern -->
20
+ <div class="absolute inset-0 opacity-[0.015]" style="background-image: radial-gradient(#64748b 1px, transparent 1px); background-size: 24px 24px;" />
21
+
22
+ <!-- Decorative circles -->
23
+ <div class="absolute w-[300px] h-[300px] rounded-full opacity-[0.04]" style="background: #3b82f6; top: -100px; right: -50px;" />
24
+ <div class="absolute w-[200px] h-[200px] rounded-full opacity-[0.03]" style="background: #3b82f6; bottom: -50px; right: 200px;" />
25
+
26
+ <div class="flex flex-col justify-between w-full h-full pl-12 pr-16 py-14 relative z-10">
27
+ <h1 class="text-[72px] font-bold text-slate-800 leading-[1.1] tracking-tight max-w-[90%]" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
28
+ {{ title }}
29
+ </h1>
30
+ <div class="flex items-center gap-3">
31
+ <div class="w-3 h-3 rounded-full bg-blue-500" />
32
+ <p class="text-[26px] font-semibold text-slate-500" style="display: block; line-clamp: 1; text-overflow: ellipsis;">
33
+ {{ website }}
34
+ </p>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </template>
@@ -0,0 +1,9 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ website?: string;
4
+ };
5
+ declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
6
+ title: string;
7
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -9,13 +9,13 @@ type __VLS_Props = {
9
9
  stars?: string | number;
10
10
  contributors?: string | number;
11
11
  };
12
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
+ declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
13
13
  title: string;
14
14
  description: string;
15
15
  emoji: string;
16
16
  downloads: string | number;
17
17
  stars: string | number;
18
18
  contributors: string | number;
19
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
20
20
  declare const _default: typeof __VLS_export;
21
21
  export default _default;
@@ -20,61 +20,68 @@ const description = computed(() => (props.description || "").slice(0, 200));
20
20
  </script>
21
21
 
22
22
  <template>
23
- <div class="w-full h-full flex flex-col bg-white">
24
- <div class="pt-[60px] pb-[70px] px-[6.75rem] h-full flex flex-col justify-between">
25
- <div class="flex flex-row justify-between">
26
- <div class="max-w-[700px]">
27
- <h1 class="mb-[30px] max-w-[700px] text-[60px] text-gray-900 font-normal flex flex-row">
28
- <p style="display: block; overflow: hidden; line-clamp: 1; text-overflow: clip;">
23
+ <div class="w-full h-full flex flex-col relative overflow-hidden" style="background: linear-gradient(180deg, #ffffff 0%, #fafafa 100%);">
24
+ <!-- Subtle pattern -->
25
+ <div class="absolute inset-0 opacity-[0.02]" style="background-image: radial-gradient(#9ca3af 1px, transparent 1px); background-size: 32px 32px;" />
26
+
27
+ <div class="py-14 px-16 h-full flex flex-col justify-between relative z-10">
28
+ <div class="flex flex-row justify-between items-start">
29
+ <div class="max-w-[680px]">
30
+ <h1 class="mb-6 text-[56px] text-gray-900 font-normal flex flex-row items-baseline tracking-tight">
31
+ <span style="display: block; overflow: hidden; line-clamp: 1; text-overflow: clip;" class="text-gray-500">
29
32
  {{ 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">
33
+ </span>
34
+ <span v-if="repo" class="mx-2 text-gray-400">/</span>
35
+ <span v-if="repo" style="display: block; overflow: hidden; line-clamp: 1; text-overflow: clip;" class="font-bold text-gray-900">
35
36
  {{ repo }}
36
- </p>
37
+ </span>
37
38
  </h1>
38
- <p class="text-gray-500 max-w-[700px] text-[35px] leading-[60px]" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
39
+ <p class="text-gray-500 max-w-[650px] text-[32px] leading-[1.5]" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
39
40
  {{ description }}
40
41
  </p>
41
42
  </div>
42
- <div class="text-[200px]">
43
+ <div class="text-[180px] leading-none" style="filter: drop-shadow(0 4px 12px rgba(0,0,0,0.06));">
43
44
  {{ emoji }}
44
45
  </div>
45
46
  </div>
46
47
  <div class="flex flex-row items-center justify-between">
47
- <div class="flex flex-row text-[40px]">
48
- <div class="flex flex-row pr-10">
49
- <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32"><path fill="#888888" d="m4.67 28l6.39-12l7.3 6.49a2 2 0 0 0 1.7.47a2 2 0 0 0 1.42-1.07L27 10.9l-1.82-.9l-5.49 11l-7.3-6.49a2 2 0 0 0-1.68-.51a2 2 0 0 0-1.42 1L4 25V2H2v26a2 2 0 0 0 2 2h26v-2Z" /></svg>
50
- <div class="pl-2">
51
- <div>{{ downloads }}</div>
52
- <div class="text-lg text-gray-600">
53
- Monthly Downloads
48
+ <div class="flex flex-row text-[36px] gap-10">
49
+ <div class="flex flex-row items-center gap-3">
50
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32" class="text-gray-400"><path fill="currentColor" d="m4.67 28l6.39-12l7.3 6.49a2 2 0 0 0 1.7.47a2 2 0 0 0 1.42-1.07L27 10.9l-1.82-.9l-5.49 11l-7.3-6.49a2 2 0 0 0-1.68-.51a2 2 0 0 0-1.42 1L4 25V2H2v26a2 2 0 0 0 2 2h26v-2Z" /></svg>
51
+ <div>
52
+ <div class="font-semibold text-gray-800">
53
+ {{ downloads }}
54
+ </div>
55
+ <div class="text-[20px] text-gray-500">
56
+ Monthly
54
57
  </div>
55
58
  </div>
56
59
  </div>
57
- <div class="flex flex-row pr-10">
58
- <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32"><path fill="#888888" d="m16 6.52l2.76 5.58l.46 1l1 .15l6.16.89l-4.38 4.3l-.75.73l.18 1l1.05 6.13l-5.51-2.89L16 23l-.93.49l-5.51 2.85l1-6.13l.18-1l-.74-.77l-4.42-4.35l6.16-.89l1-.15l.46-1L16 6.52M16 2l-4.55 9.22l-10.17 1.47l7.36 7.18L6.9 30l9.1-4.78L25.1 30l-1.74-10.13l7.36-7.17l-10.17-1.48Z" /></svg>
59
- <div class="pl-2">
60
- <div>{{ stars }}</div>
61
- <div class="text-lg text-gray-600">
60
+ <div class="flex flex-row items-center gap-3">
61
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32" class="text-amber-500"><path fill="currentColor" d="m16 6.52l2.76 5.58l.46 1l1 .15l6.16.89l-4.38 4.3l-.75.73l.18 1l1.05 6.13l-5.51-2.89L16 23l-.93.49l-5.51 2.85l1-6.13l.18-1l-.74-.77l-4.42-4.35l6.16-.89l1-.15l.46-1L16 6.52M16 2l-4.55 9.22l-10.17 1.47l7.36 7.18L6.9 30l9.1-4.78L25.1 30l-1.74-10.13l7.36-7.17l-10.17-1.48Z" /></svg>
62
+ <div>
63
+ <div class="font-semibold text-gray-800">
64
+ {{ stars }}
65
+ </div>
66
+ <div class="text-[20px] text-gray-500">
62
67
  Stars
63
68
  </div>
64
69
  </div>
65
70
  </div>
66
- <div class="flex flex-row pr-10">
67
- <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32"><path fill="#888888" d="M22.45 6a5.47 5.47 0 0 1 3.91 1.64a5.7 5.7 0 0 1 0 8L16 26.13L5.64 15.64a5.7 5.7 0 0 1 0-8a5.48 5.48 0 0 1 7.82 0l2.54 2.6l2.53-2.58A5.44 5.44 0 0 1 22.45 6m0-2a7.47 7.47 0 0 0-5.34 2.24L16 7.36l-1.11-1.12a7.49 7.49 0 0 0-10.68 0a7.72 7.72 0 0 0 0 10.82L16 29l11.79-11.94a7.72 7.72 0 0 0 0-10.82A7.49 7.49 0 0 0 22.45 4Z" /></svg>
68
- <div class="pl-2">
69
- <div>{{ contributors }}</div>
70
- <div class="text-lg text-gray-600">
71
+ <div class="flex flex-row items-center gap-3">
72
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32" class="text-rose-400"><path fill="currentColor" d="M22.45 6a5.47 5.47 0 0 1 3.91 1.64a5.7 5.7 0 0 1 0 8L16 26.13L5.64 15.64a5.7 5.7 0 0 1 0-8a5.48 5.48 0 0 1 7.82 0l2.54 2.6l2.53-2.58A5.44 5.44 0 0 1 22.45 6m0-2a7.47 7.47 0 0 0-5.34 2.24L16 7.36l-1.11-1.12a7.49 7.49 0 0 0-10.68 0a7.72 7.72 0 0 0 0 10.82L16 29l11.79-11.94a7.72 7.72 0 0 0 0-10.82A7.49 7.49 0 0 0 22.45 4Z" /></svg>
73
+ <div>
74
+ <div class="font-semibold text-gray-800">
75
+ {{ contributors }}
76
+ </div>
77
+ <div class="text-[20px] text-gray-500">
71
78
  Contributors
72
79
  </div>
73
80
  </div>
74
81
  </div>
75
82
  </div>
76
83
  <div class="flex flex-row">
77
- <svg width="100" height="100" class="rounded-[0.25rem] w-[100px] h-[100px]" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
84
+ <svg width="80" height="80" class="rounded-lg" style="filter: drop-shadow(0 2px 8px rgba(0,0,0,0.08));" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
78
85
  <g clip-path="url(#clip0_206_4645)">
79
86
  <mask id="mask0_206_4645" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="32">
80
87
  <path d="M32 0H0V32H32V0Z" fill="white" />
@@ -94,6 +101,7 @@ const description = computed(() => (props.description || "").slice(0, 200));
94
101
  </div>
95
102
  </div>
96
103
  </div>
97
- <div class="absolute bottom-0 w-full h-8 bg-[#ECDC5A]" />
104
+ <!-- Refined accent bar -->
105
+ <div class="absolute bottom-0 w-full h-2" style="background: linear-gradient(90deg, #ECDC5A 0%, #F7E98E 50%, #ECDC5A 100%);" />
98
106
  </div>
99
107
  </template>
@@ -9,13 +9,13 @@ type __VLS_Props = {
9
9
  stars?: string | number;
10
10
  contributors?: string | number;
11
11
  };
12
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
+ declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
13
13
  title: string;
14
14
  description: string;
15
15
  emoji: string;
16
16
  downloads: string | number;
17
17
  stars: string | number;
18
18
  contributors: string | number;
19
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
20
20
  declare const _default: typeof __VLS_export;
21
21
  export default _default;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @credits Full Stack Heroes <https://fullstackheroes.com/>
3
+ */
4
+ type __VLS_Props = {
5
+ emoji?: string;
6
+ title?: string;
7
+ };
8
+ declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
+ title: string;
10
+ emoji: string;
11
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
@@ -0,0 +1,27 @@
1
+ <script setup>
2
+ defineProps({
3
+ emoji: { type: String, required: false, default: "\u{1F44B}" },
4
+ title: { type: String, required: false, default: "title" }
5
+ });
6
+ </script>
7
+
8
+ <template>
9
+ <div class="h-full w-full flex items-center justify-center relative overflow-hidden" style="background: linear-gradient(135deg, #fafbfc 0%, #f0f4f8 50%, #e8eef5 100%);">
10
+ <!-- Subtle grid pattern -->
11
+ <div class="absolute inset-0 opacity-[0.03]" style="background-image: linear-gradient(#94a3b8 1px, transparent 1px), linear-gradient(90deg, #94a3b8 1px, transparent 1px); background-size: 40px 40px;" />
12
+
13
+ <!-- Soft glow behind emoji -->
14
+ <div class="absolute w-[400px] h-[400px] rounded-full opacity-20" style="background: radial-gradient(circle, #38bdf8 0%, transparent 70%); top: 50%; left: 50%; transform: translate(-50%, -65%);" />
15
+
16
+ <div class="flex flex-col justify-center items-center w-full text-center relative z-10 px-16">
17
+ <div class="mb-6" style="filter: drop-shadow(0 8px 24px rgba(0,0,0,0.08));">
18
+ <p class="text-[140px] leading-none">
19
+ {{ emoji }}
20
+ </p>
21
+ </div>
22
+ <h1 class="text-[58px] font-bold text-slate-800 leading-tight tracking-tight max-w-[900px]" style="display: block; line-clamp: 2; text-overflow: ellipsis; text-shadow: 0 1px 2px rgba(0,0,0,0.04);">
23
+ {{ title }}
24
+ </h1>
25
+ </div>
26
+ </div>
27
+ </template>
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @credits Full Stack Heroes <https://fullstackheroes.com/>
3
+ */
4
+ type __VLS_Props = {
5
+ emoji?: string;
6
+ title?: string;
7
+ };
8
+ declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
+ title: string;
10
+ emoji: string;
11
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { DefineOgImageInput } from '../../types.js';
2
+ /**
3
+ * Internal raw implementation for defining OG images.
4
+ * Used by defineOgImage and defineOgImageScreenshot.
5
+ */
6
+ export declare function _defineOgImageRaw(_options?: DefineOgImageInput | DefineOgImageInput[]): string[];
@@ -0,0 +1,70 @@
1
+ import { appendHeader } from "h3";
2
+ import { createError, useError, useNuxtApp, useRequestEvent, useRoute, useState } from "nuxt/app";
3
+ import { ref, toValue } from "vue";
4
+ import { createOgImageMeta, getOgImagePath, setHeadOgImagePrebuilt, useOgImageRuntimeConfig } from "../utils.js";
5
+ export function _defineOgImageRaw(_options = {}) {
6
+ const nuxtApp = useNuxtApp();
7
+ const route = useRoute();
8
+ const basePath = route.path || "/";
9
+ if (nuxtApp.payload.path === basePath) {
10
+ const state = import.meta.dev ? useState(`og-image:ssr-exists:${basePath}`, () => false) : ref(false);
11
+ if (import.meta.dev && !import.meta.server) {
12
+ if (!state.value && !useError().value) {
13
+ throw createError({ message: "You are using a defineOgImage() function in a client-only context. You must call this function within your root component setup, see https://github.com/nuxt-modules/og-image/pull/293." });
14
+ }
15
+ return [];
16
+ }
17
+ state.value = true;
18
+ }
19
+ if (!import.meta.server) {
20
+ return [];
21
+ }
22
+ const paths = [];
23
+ if (Array.isArray(_options)) {
24
+ for (const opt of _options) {
25
+ const path2 = processOgImageOptions(opt, nuxtApp, route, basePath);
26
+ if (path2)
27
+ paths.push(path2);
28
+ }
29
+ return paths;
30
+ }
31
+ const path = processOgImageOptions(_options, nuxtApp, route, basePath);
32
+ if (path)
33
+ paths.push(path);
34
+ return paths;
35
+ }
36
+ function processOgImageOptions(_options, nuxtApp, route, basePath) {
37
+ const { defaults } = useOgImageRuntimeConfig();
38
+ const options = toValue(_options);
39
+ if (options === false) {
40
+ return;
41
+ }
42
+ if (nuxtApp.ssrContext?.event.context._nitro?.routeRules?.ogImage === false) {
43
+ nuxtApp.ssrContext._ogImageInstance?.dispose();
44
+ nuxtApp.ssrContext._ogImageDevtoolsInstance?.dispose();
45
+ nuxtApp.ssrContext._ogImageInstance = void 0;
46
+ nuxtApp.ssrContext._ogImagePayloads = [];
47
+ return;
48
+ }
49
+ const validOptions = options;
50
+ for (const key in defaults) {
51
+ if (validOptions[key] === void 0)
52
+ validOptions[key] = defaults[key];
53
+ }
54
+ if (route.query)
55
+ validOptions._query = route.query;
56
+ if (validOptions.url) {
57
+ setHeadOgImagePrebuilt(validOptions);
58
+ return toValue(validOptions.url);
59
+ }
60
+ const { path, hash } = getOgImagePath(basePath, validOptions);
61
+ if (import.meta.prerender) {
62
+ const prerenderPath = (path.split("?")[0] || path).replace(/,/g, "%2C");
63
+ appendHeader(useRequestEvent(nuxtApp), "x-nitro-prerender", prerenderPath);
64
+ }
65
+ if (hash) {
66
+ validOptions._hash = hash;
67
+ }
68
+ createOgImageMeta(path, validOptions, nuxtApp.ssrContext);
69
+ return path;
70
+ }
@@ -1,2 +1,14 @@
1
- import type { DefineOgImageInput } from '../../types.js';
2
- export declare function defineOgImage(_options?: DefineOgImageInput): void;
1
+ import type { OgImageComponents } from '#og-image/components';
2
+ import type { ExtractComponentProps, OgImageOptions } from '../../types.js';
3
+ type OgImageComponentOptions<T extends keyof OgImageComponents> = OgImageOptions & {
4
+ props?: Partial<ExtractComponentProps<OgImageComponents[T]>>;
5
+ };
6
+ /**
7
+ * Define an OG image using a component.
8
+ *
9
+ * @param component - The component name (must match an OgImage component)
10
+ * @param propsOrOptions - Either component props, or an array of options for multiple images
11
+ * @param options - Additional OG image options (width, height, etc.)
12
+ */
13
+ export declare function defineOgImage<T extends keyof OgImageComponents>(component: T, propsOrOptions?: Partial<ExtractComponentProps<OgImageComponents[T]>> | OgImageComponentOptions<T>[], options?: OgImageOptions): string[];
14
+ export {};
@@ -1,43 +1,14 @@
1
- import { appendHeader } from "h3";
2
- import { createError, useNuxtApp, useRequestEvent, useRoute, useState } from "nuxt/app";
3
- import { ref, toValue } from "vue";
4
- import { createOgImageMeta, getOgImagePath, setHeadOgImagePrebuilt, useOgImageRuntimeConfig } from "../utils.js";
5
- export function defineOgImage(_options = {}) {
6
- const nuxtApp = useNuxtApp();
7
- const route = useRoute();
8
- const basePath = route.path || "/";
9
- if (nuxtApp.payload.path === basePath) {
10
- const state = import.meta.dev ? useState(`og-image:ssr-exists:${basePath}`, () => false) : ref(false);
11
- if (import.meta.dev && !import.meta.server) {
12
- if (!state.value) {
13
- throw createError({ message: "You are using a defineOgImage() function in a client-only context. You must call this function within your root component setup, see https://github.com/nuxt-modules/og-image/pull/293." });
14
- }
15
- return;
16
- }
17
- state.value = true;
18
- }
19
- if (!import.meta.server) {
20
- return;
21
- }
22
- const { defaults } = useOgImageRuntimeConfig();
23
- const options = toValue(_options);
24
- if (options === false) {
25
- return;
26
- }
27
- const validOptions = options;
28
- for (const key in defaults) {
29
- if (validOptions[key] === void 0)
30
- validOptions[key] = defaults[key];
31
- }
32
- if (route.query)
33
- validOptions._query = route.query;
34
- if (validOptions.url) {
35
- setHeadOgImagePrebuilt(validOptions);
36
- return;
37
- }
38
- const path = getOgImagePath(basePath, validOptions);
39
- if (import.meta.prerender) {
40
- appendHeader(useRequestEvent(nuxtApp), "x-nitro-prerender", path);
41
- }
42
- createOgImageMeta(path, validOptions, nuxtApp.ssrContext);
1
+ import { _defineOgImageRaw } from "./_defineOgImageRaw.js";
2
+ export function defineOgImage(component, propsOrOptions = {}, options = {}) {
3
+ if (Array.isArray(propsOrOptions)) {
4
+ return _defineOgImageRaw(propsOrOptions.map((opt) => ({
5
+ ...opt,
6
+ component
7
+ })));
8
+ }
9
+ return _defineOgImageRaw({
10
+ ...options,
11
+ component,
12
+ props: propsOrOptions
13
+ });
43
14
  }
@@ -1,3 +1,7 @@
1
1
  import type { OgImageComponents } from '#og-image/components';
2
2
  import type { ExtractComponentProps, OgImageOptions } from '../../types.js';
3
- export declare function defineOgImageComponent<T extends keyof OgImageComponents>(component: T, props?: Partial<ExtractComponentProps<OgImageComponents[T]>>, options?: OgImageOptions): void;
3
+ /**
4
+ * @deprecated Use `defineOgImage()` instead. This function will be removed in a future version.
5
+ * Migration: `defineOgImageComponent('X', props, options)` → `defineOgImage('X', props, options)`
6
+ */
7
+ export declare function defineOgImageComponent<T extends keyof OgImageComponents>(component: T, props?: Partial<ExtractComponentProps<OgImageComponents[T]>>, options?: OgImageOptions): string[];
@@ -1,8 +1,7 @@
1
1
  import { defineOgImage } from "./defineOgImage.js";
2
2
  export function defineOgImageComponent(component, props = {}, options = {}) {
3
- return defineOgImage({
4
- ...options,
5
- component,
6
- props
7
- });
3
+ if (import.meta.dev) {
4
+ console.warn("[nuxt-og-image] `defineOgImageComponent()` is deprecated. Use `defineOgImage()` instead. Run `npx nuxt-og-image migrate v6 --api` to auto-migrate.");
5
+ }
6
+ return defineOgImage(component, props, options);
8
7
  }
@@ -1,2 +1,2 @@
1
1
  import type { OgImagePageScreenshotOptions } from '../../types.js';
2
- export declare function defineOgImageScreenshot(options?: OgImagePageScreenshotOptions): void;
2
+ export declare function defineOgImageScreenshot(options?: OgImagePageScreenshotOptions): string[];
@@ -1,9 +1,9 @@
1
1
  import { useRouter } from "#app";
2
- import { defineOgImage } from "./defineOgImage.js";
2
+ import { _defineOgImageRaw } from "./_defineOgImageRaw.js";
3
3
  export function defineOgImageScreenshot(options = {}) {
4
4
  const router = useRouter();
5
5
  const route = router.currentRoute.value?.path || "/";
6
- return defineOgImage({
6
+ return _defineOgImageRaw({
7
7
  alt: `Web page screenshot${route ? ` of ${route}` : ""}.`,
8
8
  renderer: "chromium",
9
9
  extension: "jpeg",
@@ -1,5 +1,8 @@
1
1
  import type { OgImageComponents } from '#og-image/components';
2
- import type { DefineOgImageInput, ExtractComponentProps, OgImageOptions, OgImagePageScreenshotOptions } from '../../types.js';
3
- export declare function defineOgImage(_options?: DefineOgImageInput): void;
4
- export declare function defineOgImageComponent<T extends keyof OgImageComponents>(component: T, props?: Partial<ExtractComponentProps<OgImageComponents[T]>>, options?: OgImageOptions): void;
5
- export declare function defineOgImageScreenshot(options?: OgImagePageScreenshotOptions): void;
2
+ import type { ExtractComponentProps, OgImageOptions, OgImagePageScreenshotOptions } from '../../types.js';
3
+ export declare function defineOgImage<T extends keyof OgImageComponents>(_component: T, _props?: Partial<ExtractComponentProps<OgImageComponents[T]>>, _options?: OgImageOptions): void;
4
+ /**
5
+ * @deprecated Use `defineOgImage()` instead.
6
+ */
7
+ export declare function defineOgImageComponent<T extends keyof OgImageComponents>(_component: T, _props?: Partial<ExtractComponentProps<OgImageComponents[T]>>, _options?: OgImageOptions): void;
8
+ export declare function defineOgImageScreenshot(_options?: OgImagePageScreenshotOptions): void;
@@ -1,15 +1,15 @@
1
1
  import { useRuntimeConfig } from "nuxt/app";
2
- export function defineOgImage(_options = {}) {
2
+ export function defineOgImage(_component, _props = {}, _options = {}) {
3
3
  if (import.meta.dev) {
4
4
  console.warn("`defineOgImage()` is skipped as the OG Image module is not enabled.");
5
5
  }
6
6
  }
7
- export function defineOgImageComponent(component, props = {}, options = {}) {
7
+ export function defineOgImageComponent(_component, _props = {}, _options = {}) {
8
8
  if (import.meta.dev) {
9
- console.warn("`defineOgImageComponent()` is skipped as the OG Image module is not enabled.");
9
+ console.warn("`defineOgImageComponent()` is deprecated and skipped. Use `defineOgImage()` instead.");
10
10
  }
11
11
  }
12
- export function defineOgImageScreenshot(options = {}) {
12
+ export function defineOgImageScreenshot(_options = {}) {
13
13
  if (import.meta.dev) {
14
14
  if (useRuntimeConfig()["nuxt-og-image"]) {
15
15
  console.warn("`defineOgImageScreenshot()` is skipped as the `chromium` compatibility is disabled.");