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,14 @@
1
+ /**
2
+ * Neo-brutalist design with bold typography and raw aesthetics
3
+ */
4
+ type __VLS_Props = {
5
+ title?: string;
6
+ subtitle?: string;
7
+ accent?: string;
8
+ };
9
+ 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<{}>, {
10
+ title: string;
11
+ accent: string;
12
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
@@ -0,0 +1,51 @@
1
+ <script setup>
2
+ defineProps({
3
+ title: { type: String, required: false, default: "title" },
4
+ subtitle: { type: String, required: false },
5
+ accent: { type: String, required: false, default: "#facc15" }
6
+ });
7
+ </script>
8
+
9
+ <template>
10
+ <div class="h-full w-full flex relative overflow-hidden bg-stone-100">
11
+ <!-- Offset shadow box -->
12
+ <div
13
+ class="absolute bg-black"
14
+ style="top: 28px; left: 28px; right: 52px; bottom: 52px;"
15
+ />
16
+
17
+ <!-- Main card -->
18
+ <div
19
+ class="absolute bg-white border-4 border-black flex flex-col justify-between"
20
+ style="top: 40px; left: 40px; right: 40px; bottom: 40px; padding: 48px;"
21
+ >
22
+ <!-- Accent bar -->
23
+ <div
24
+ class="absolute w-32 hidden lg:flex"
25
+ :style="{ background: accent, top: '-2px', right: '-4px', bottom: '-4px' }"
26
+ />
27
+
28
+ <!-- Corner marks -->
29
+ <div class="absolute top-3 left-3 w-4 h-4 border-l-4 border-t-4 border-black" />
30
+ <div class="absolute bottom-3 left-3 w-4 h-4 border-l-4 border-b-4 border-black" />
31
+
32
+ <div class="relative z-10 max-w-[85%]">
33
+ <p v-if="subtitle" class="text-lg font-mono uppercase tracking-[0.3em] text-black/60 mb-4">
34
+ {{ subtitle }}
35
+ </p>
36
+ <h1
37
+ class="text-[76px] font-black text-black leading-[0.95] tracking-tighter uppercase"
38
+ style="display: block; line-clamp: 3; text-overflow: ellipsis;"
39
+ >
40
+ {{ title }}
41
+ </h1>
42
+ </div>
43
+
44
+ <!-- Bottom marker -->
45
+ <div class="flex items-center gap-4 relative z-10">
46
+ <div class="w-12 h-1 bg-black" />
47
+ <div class="w-3 h-3 bg-black" style="transform: rotate(45deg);" />
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </template>
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Neo-brutalist design with bold typography and raw aesthetics
3
+ */
4
+ type __VLS_Props = {
5
+ title?: string;
6
+ subtitle?: string;
7
+ accent?: string;
8
+ };
9
+ 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<{}>, {
10
+ title: string;
11
+ accent: string;
12
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
@@ -14,8 +14,8 @@ type __VLS_Props = {
14
14
  icon: string;
15
15
  }[];
16
16
  };
17
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
17
+ 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<{}>, {
18
18
  bg: string;
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,71 @@
1
+ <script setup>
2
+ defineProps({
3
+ title: { type: String, required: false },
4
+ description: { type: String, required: false },
5
+ bg: { type: String, required: false, default: "linear-gradient(145deg, #1c1c1c 0%, #0d0d0d 100%)" },
6
+ icon: { type: String, required: false },
7
+ logo: { type: String, required: false },
8
+ image: { type: String, required: false },
9
+ username: { type: String, required: false },
10
+ socials: { type: Array, required: false }
11
+ });
12
+ </script>
13
+
14
+ <template>
15
+ <div
16
+ class="relative h-full w-full flex items-center justify-center text-white overflow-hidden"
17
+ :style="{ backgroundImage: bg }"
18
+ >
19
+ <!-- Inner frame with refined border -->
20
+ <div class="absolute inset-4 border border-white/20 rounded-sm" />
21
+ <div class="absolute inset-5 border border-white/10 rounded-sm" />
22
+
23
+ <!-- Background image with better treatment -->
24
+ <div
25
+ v-if="image"
26
+ class="absolute inset-0 w-full h-full bg-cover bg-center opacity-[0.07]"
27
+ :style="{ backgroundImage: `url(${image})` }"
28
+ />
29
+
30
+ <!-- Subtle corner accents -->
31
+ <div class="absolute top-4 left-4 w-8 h-8 border-l-2 border-t-2 border-white/30" />
32
+ <div class="absolute top-4 right-4 w-8 h-8 border-r-2 border-t-2 border-white/30" />
33
+ <div class="absolute bottom-4 left-4 w-8 h-8 border-l-2 border-b-2 border-white/30" />
34
+ <div class="absolute bottom-4 right-4 w-8 h-8 border-r-2 border-b-2 border-white/30" />
35
+
36
+ <div class="flex flex-col items-center text-center px-8 lg:px-20 relative z-10">
37
+ <h1 class="flex items-center gap-5 text-[72px] font-bold leading-tight tracking-tight" style="display: block; line-clamp: 2; text-overflow: ellipsis; text-shadow: 0 4px 30px rgba(0,0,0,0.5);">
38
+ <Icon
39
+ v-if="icon"
40
+ :name="icon"
41
+ class="opacity-90"
42
+ />
43
+ {{ title }}
44
+ </h1>
45
+ <p v-if="description" class="text-[28px] max-w-[800px] text-white/70 mt-4 leading-relaxed" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
46
+ {{ description }}
47
+ </p>
48
+ </div>
49
+
50
+ <img
51
+ v-if="logo"
52
+ :src="logo"
53
+ class="absolute bottom-6 left-6"
54
+ style="height: 100px; width: auto; opacity: 0.9; filter: drop-shadow(0 2px 8px rgba(0,0,0,0.3));"
55
+ >
56
+ <div class="absolute bottom-6 right-6 flex items-center gap-4">
57
+ <div
58
+ v-if="username"
59
+ class="text-white/60 font-medium text-lg mr-2"
60
+ >
61
+ {{ username }}
62
+ </div>
63
+ <Icon
64
+ v-for="social of socials"
65
+ :key="social.name"
66
+ :name="social.icon"
67
+ class="w-6 h-6 text-white/50"
68
+ />
69
+ </div>
70
+ </div>
71
+ </template>
@@ -14,8 +14,8 @@ type __VLS_Props = {
14
14
  icon: string;
15
15
  }[];
16
16
  };
17
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
17
+ 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<{}>, {
18
18
  bg: string;
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,12 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ category?: string;
4
+ publication?: string;
5
+ date?: string;
6
+ };
7
+ 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<{}>, {
8
+ title: string;
9
+ publication: string;
10
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,70 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ const props = defineProps({
4
+ title: { type: String, required: false, default: "title" },
5
+ category: { type: String, required: false },
6
+ publication: { type: String, required: false, default: "The Daily" },
7
+ date: { type: String, required: false }
8
+ });
9
+ const formattedDate = computed(() => {
10
+ if (props.date)
11
+ return props.date;
12
+ return (/* @__PURE__ */ new Date()).toLocaleDateString("en-US", {
13
+ weekday: "long",
14
+ year: "numeric",
15
+ month: "long",
16
+ day: "numeric"
17
+ });
18
+ });
19
+ </script>
20
+
21
+ <template>
22
+ <div class="h-full w-full flex flex-col relative overflow-hidden" style="background: #faf9f7;">
23
+ <!-- Paper texture -->
24
+ <div class="absolute inset-0 opacity-[0.4]" style="background-image: url('data:image/svg+xml,%3Csvg viewBox=%270 0 200 200%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cfilter id=%27noise%27%3E%3CfeTurbulence type=%27fractalNoise%27 baseFrequency=%270.9%27 numOctaves=%273%27 stitchTiles=%27stitch%27/%3E%3C/filter%3E%3Crect width=%27100%25%27 height=%27100%25%27 filter=%27url(%23noise)%27/%3E%3C/svg%3E');" />
25
+
26
+ <!-- Top rule -->
27
+ <div class="w-full h-1 bg-black" />
28
+ <div class="w-full h-[2px] bg-black mt-1" />
29
+
30
+ <!-- Masthead -->
31
+ <div class="px-12 pt-6 pb-4 border-b-2 border-black">
32
+ <div class="flex items-end justify-between">
33
+ <p class="text-sm leading-1.5 tracking-[0.2em] uppercase text-black/60">
34
+ {{ formattedDate }}
35
+ </p>
36
+ <h2 class="text-4xl leading-1 font-black tracking-tight text-black uppercase" style="font-style: italic; line-height: 20px;">
37
+ {{ publication }}
38
+ </h2>
39
+ <p v-if="category" class="text-sm leading-1.5 tracking-[0.2em] uppercase text-black/60">
40
+ {{ category }}
41
+ </p>
42
+ </div>
43
+ </div>
44
+
45
+ <!-- Thin decorative line -->
46
+ <div class="w-full h-[1px] bg-black/20" />
47
+
48
+ <!-- Main headline -->
49
+ <div class="flex-1 flex items-center px-16 py-12">
50
+ <h1
51
+ class="text-[72px] font-black text-black leading-[1.05] tracking-tight text-center w-full"
52
+ style="display: block; line-clamp: 3; text-overflow: ellipsis; font-variant-ligatures: discretionary-ligatures;"
53
+ >
54
+ {{ title }}
55
+ </h1>
56
+ </div>
57
+
58
+ <!-- Bottom rules -->
59
+ <div class="px-16 pb-12">
60
+ <div class="flex items-center gap-6">
61
+ <div class="flex-1 h-[1px] bg-black/30" />
62
+ <div class="w-2 h-2 bg-black" style="transform: rotate(45deg);" />
63
+ <div class="flex-1 h-[1px] bg-black/30" />
64
+ </div>
65
+ </div>
66
+
67
+ <div class="w-full h-[2px] bg-black" />
68
+ <div class="w-full h-1 bg-black mt-1" />
69
+ </div>
70
+ </template>
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ category?: string;
4
+ publication?: string;
5
+ date?: string;
6
+ };
7
+ 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<{}>, {
8
+ title: string;
9
+ publication: string;
10
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ description?: string;
4
+ headline?: string;
5
+ };
6
+ 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<{}>, {
7
+ title: string;
8
+ description: string;
9
+ headline: string;
10
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -39,11 +39,11 @@ const description = computed(() => (props.description || "").slice(0, 200));
39
39
  </defs>
40
40
  </svg>
41
41
 
42
- <div class="w-[600px] pl-[100px]">
42
+ <div class="max-w-[700px] pl-6 lg:pl-[100px]">
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" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
46
+ <h1 v-if="title" class="m-0 text-[75px] font-semibold mb-4 text-white" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
47
47
  {{ title }}
48
48
  </h1>
49
49
  <p v-if="description" class="text-[32px] text-[#E4E4E7] leading-tight" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
@@ -51,7 +51,7 @@ const description = computed(() => (props.description || "").slice(0, 200));
51
51
  </p>
52
52
  </div>
53
53
  <svg
54
- class="absolute top-[160px] right-[90px]"
54
+ class="absolute top-[160px] right-[90px] hidden lg:flex"
55
55
  width="340"
56
56
  height="340"
57
57
  viewBox="0 0 340 340"
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ description?: string;
4
+ headline?: string;
5
+ };
6
+ 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<{}>, {
7
+ title: string;
8
+ description: string;
9
+ headline: string;
10
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ colorMode?: 'dark' | 'light';
3
+ title?: string;
4
+ description?: string;
5
+ isPro?: boolean;
6
+ };
7
+ 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<{}>, {
8
+ title: string;
9
+ colorMode: "dark" | "light";
10
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,69 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ const props = defineProps({
4
+ colorMode: { type: String, required: false, default: "light" },
5
+ title: { type: String, required: false, default: "title" },
6
+ description: { type: String, required: false },
7
+ isPro: { type: Boolean, required: false }
8
+ });
9
+ const themeColor = computed(() => props.isPro ? "124, 58, 237" : "34, 197, 94");
10
+ </script>
11
+
12
+ <template>
13
+ <div
14
+ class="w-full h-full flex flex-col justify-center items-center relative p-[60px]"
15
+ :class="[
16
+ colorMode === 'light' ? ['bg-white', 'text-neutral-900'] : ['bg-neutral-900', 'text-neutral-50']
17
+ ]"
18
+ >
19
+ <!-- Gradient background -->
20
+ <div
21
+ class="absolute inset-0" :style="{
22
+ backgroundImage: `radial-gradient(ellipse at bottom right, rgba(${themeColor}, 0.15) 0%, transparent 60%)`
23
+ }"
24
+ />
25
+ <div
26
+ class="absolute inset-0" :style="{
27
+ backgroundImage: `radial-gradient(ellipse at top left, rgba(${themeColor}, 0.1) 0%, transparent 50%)`
28
+ }"
29
+ />
30
+
31
+ <div class="relative flex flex-col items-center text-center gap-8">
32
+ <!-- Logo -->
33
+ <div class="flex items-center gap-3">
34
+ <svg viewBox="0 0 64 64" class="w-16 h-16">
35
+ <defs>
36
+ <linearGradient :id="isPro ? 'nsLine2' : 'nsLine1'" x1="0%" y1="100%" x2="100%" y2="0%">
37
+ <stop offset="0%" :stop-color="isPro ? '#7c3aed' : '#22c55e'" />
38
+ <stop offset="100%" :stop-color="isPro ? '#c4b5fd' : '#86efac'" />
39
+ </linearGradient>
40
+ <linearGradient :id="isPro ? 'nsFill2' : 'nsFill1'" x1="0%" y1="0%" x2="0%" y2="100%">
41
+ <stop offset="0%" :stop-color="isPro ? '#7c3aed' : '#22c55e'" stop-opacity="0.6" />
42
+ <stop offset="100%" :stop-color="isPro ? '#7c3aed' : '#22c55e'" stop-opacity="0" />
43
+ </linearGradient>
44
+ </defs>
45
+ <path d="M8 52 Q20 48 24 36 T40 20 T56 12 L56 56 L8 56 Z" :fill="`url(#${isPro ? 'nsFill2' : 'nsFill1'})`" />
46
+ <path d="M8 52 Q20 48 24 36 T40 20 T56 12" fill="none" :stroke="`url(#${isPro ? 'nsLine2' : 'nsLine1'})`" stroke-width="4" stroke-linecap="round" />
47
+ <circle cx="56" cy="12" r="6" :fill="`url(#${isPro ? 'nsLine2' : 'nsLine1'})`" />
48
+ </svg>
49
+ <span class="text-[42px] font-bold tracking-tight">
50
+ Nuxt<span :class="isPro ? 'text-violet-500' : 'text-green-500'" class="ml-2">SEO{{ isPro ? " Pro" : "" }}</span>
51
+ </span>
52
+ </div>
53
+
54
+ <!-- Title -->
55
+ <h1 class="text-[80px] font-bold m-0 leading-tight max-w-[1000px]">
56
+ {{ title }}
57
+ </h1>
58
+
59
+ <!-- Description -->
60
+ <p v-if="description" class="text-[32px] opacity-70 max-w-[900px] leading-relaxed">
61
+ {{ description }}
62
+ </p>
63
+ </div>
64
+ </div>
65
+ </template>
66
+
67
+ <style>
68
+ :root{font-family:Hubot Sans}
69
+ </style>
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ colorMode?: 'dark' | 'light';
3
+ title?: string;
4
+ description?: string;
5
+ isPro?: boolean;
6
+ };
7
+ 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<{}>, {
8
+ title: string;
9
+ colorMode: "dark" | "light";
10
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ description?: string;
4
+ headline?: string;
5
+ };
6
+ 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<{}>, {
7
+ title: string;
8
+ description: string;
9
+ headline: string;
10
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -9,35 +9,38 @@ const title = computed(() => props.title.slice(0, 60));
9
9
  </script>
10
10
 
11
11
  <template>
12
- <div class="w-full h-full flex flex-col justify-center bg-[#212121]">
12
+ <div class="w-full h-full flex flex-col justify-center relative overflow-hidden" style="background: linear-gradient(145deg, #262626 0%, #1a1a1a 100%);">
13
+ <!-- Subtle noise texture -->
14
+ <div class="absolute inset-0 opacity-[0.03]" style="background-image: url('data:image/svg+xml,%3Csvg viewBox=%270 0 256 256%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cfilter id=%27noise%27%3E%3CfeTurbulence type=%27fractalNoise%27 baseFrequency=%270.8%27 numOctaves=%274%27 stitchTiles=%27stitch%27/%3E%3C/filter%3E%3Crect width=%27100%25%27 height=%27100%25%27 filter=%27url(%23noise)%27/%3E%3C/svg%3E');" />
15
+
13
16
  <svg class="absolute top-0 right-0" width="1200" height="675" viewBox="0 0 1200 675" fill="none" xmlns="http://www.w3.org/2000/svg">
14
- <g style="mix-blend-mode:overlay" opacity="0.7" filter="url(#filter0_f_448_25)">
15
- <circle cx="901.5" cy="45.5" r="199.5" fill="#FFA7A7" />
16
- <circle cx="600.5" cy="216.5" r="199.5" fill="#FFCC49" />
17
- <circle cx="179.5" cy="317.5" r="199.5" fill="#FFA149" />
17
+ <g style="mix-blend-mode:overlay" opacity="0.6" filter="url(#filter0_f_448_25)">
18
+ <circle cx="950" cy="30" r="220" fill="#FF9B9B" />
19
+ <circle cx="620" cy="200" r="200" fill="#FFD166" />
20
+ <circle cx="200" cy="340" r="180" fill="#FF9F43" />
18
21
  </g>
19
22
  <defs>
20
23
  <filter id="filter0_f_448_25" x="-240" y="-374" width="1561" height="1111" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
21
24
  <feFlood flood-opacity="0" result="BackgroundImageFix" />
22
25
  <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
23
- <feGaussianBlur stdDeviation="110" result="effect1_foregroundBlur_448_25" />
26
+ <feGaussianBlur stdDeviation="120" result="effect1_foregroundBlur_448_25" />
24
27
  </filter>
25
28
  </defs>
26
29
  </svg>
27
30
 
28
- <div class="w-[600px] pl-[100px]">
29
- <p v-if="headline" class="uppercase text-[24px] text-[#FEC476] mb-4 font-semibold">
31
+ <div class="max-w-full lg:max-w-[60%] pl-8 lg:pl-16 pr-8 relative z-10">
32
+ <p v-if="headline" class="uppercase text-[22px] text-amber-400 mb-3 font-semibold tracking-wider">
30
33
  {{ headline }}
31
34
  </p>
32
- <h1 class="w-[600px] m-0 text-[75px] font-semibold mb-4 text-white" style="display: block; line-clamp: 2; text-overflow: ellipsis;">
35
+ <h1 class="m-0 text-[68px] font-bold mb-5 text-white leading-[1.1] tracking-tight" style="display: block; line-clamp: 2; text-overflow: ellipsis; text-shadow: 0 4px 30px rgba(0,0,0,0.3);">
33
36
  {{ title }}
34
37
  </h1>
35
- <p class="text-[32px] text-[#E4E4E7] leading-tight" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
38
+ <p v-if="description" class="text-[30px] text-neutral-400 leading-[1.4]" style="display: block; line-clamp: 3; text-overflow: ellipsis;">
36
39
  {{ description }}
37
40
  </p>
38
41
  </div>
39
42
 
40
- <svg class="absolute top-[250px] right-[190px]" width="241" height="184" viewBox="0 0 241 184" fill="none" xmlns="http://www.w3.org/2000/svg">
43
+ <svg class="absolute top-[250px] right-[190px] hidden lg:flex" width="241" height="184" viewBox="0 0 241 184" fill="none" xmlns="http://www.w3.org/2000/svg">
41
44
  <g filter="url(#filter0_ddd_563_6)">
42
45
  <path d="M204.852 126.822C204.852 127.098 204.677 128.114 202.583 129.748C200.551 131.335 197.276 133.034 192.613 134.687C183.325 137.979 169.872 140.62 153.875 142.19C137.92 143.755 120.334 144.166 103.363 143.367C86.3776 142.566 70.8801 140.594 58.8213 137.738C52.7901 136.31 47.8449 134.713 44.0617 133.037C40.1988 131.325 37.891 129.679 36.7621 128.335C36.2309 127.702 36.0703 127.267 36.0227 127.035C35.9829 126.842 35.9842 126.629 36.1192 126.305C36.459 125.488 37.6413 124.038 40.7165 122.28C46.7614 118.823 57.5073 115.641 71.9244 113.359C86.2251 111.096 103.109 109.879 120.426 109.879" stroke="url(#paint0_angular_563_6)" stroke-width="8" />
43
46
  </g>
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ title?: string;
3
+ description?: string;
4
+ headline?: string;
5
+ };
6
+ 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<{}>, {
7
+ title: string;
8
+ description: string;
9
+ headline: string;
10
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Retro-futuristic synthwave/CRT aesthetic
3
+ */
4
+ type __VLS_Props = {
5
+ title?: string;
6
+ tagline?: 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
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,64 @@
1
+ <script setup>
2
+ defineProps({
3
+ title: { type: String, required: false, default: "title" },
4
+ tagline: { type: String, required: false }
5
+ });
6
+ </script>
7
+
8
+ <template>
9
+ <div class="h-full w-full flex flex-col justify-end relative overflow-hidden" style="background: linear-gradient(180deg, #0a0a0a 0%, #1a0a2e 40%, #2d1b4e 70%, #1a0a2e 100%);">
10
+ <!-- Gradient glow at top -->
11
+ <div class="absolute" style="width: 100%; height: 300px; top: 0; left: 0; background: radial-gradient(ellipse 80% 100% at 50% 0%, rgba(255,107,157,0.3) 0%, rgba(196,69,105,0.15) 40%, transparent 70%);" />
12
+
13
+ <!-- Grid floor -->
14
+ <svg class="absolute bottom-0 left-0 right-0" style="height: 280px;" viewBox="0 0 1200 280" preserveAspectRatio="none">
15
+ <defs>
16
+ <linearGradient id="gridFade" x1="0%" y1="0%" x2="0%" y2="100%">
17
+ <stop offset="0%" style="stop-color:#ff2a6d;stop-opacity:0.8" />
18
+ <stop offset="100%" style="stop-color:#05d9e8;stop-opacity:0.3" />
19
+ </linearGradient>
20
+ </defs>
21
+ <!-- Horizontal lines with perspective -->
22
+ <line x1="0" y1="20" x2="1200" y2="20" stroke="url(#gridFade)" stroke-width="1" opacity="0.3" />
23
+ <line x1="0" y1="50" x2="1200" y2="50" stroke="url(#gridFade)" stroke-width="1" opacity="0.4" />
24
+ <line x1="0" y1="90" x2="1200" y2="90" stroke="url(#gridFade)" stroke-width="1" opacity="0.5" />
25
+ <line x1="0" y1="140" x2="1200" y2="140" stroke="url(#gridFade)" stroke-width="1.5" opacity="0.6" />
26
+ <line x1="0" y1="200" x2="1200" y2="200" stroke="url(#gridFade)" stroke-width="2" opacity="0.7" />
27
+ <line x1="0" y1="280" x2="1200" y2="280" stroke="url(#gridFade)" stroke-width="2" opacity="0.8" />
28
+ <!-- Vertical lines converging to horizon -->
29
+ <line x1="600" y1="0" x2="600" y2="280" stroke="url(#gridFade)" stroke-width="1" opacity="0.5" />
30
+ <line x1="600" y1="0" x2="0" y2="280" stroke="url(#gridFade)" stroke-width="1" opacity="0.4" />
31
+ <line x1="600" y1="0" x2="1200" y2="280" stroke="url(#gridFade)" stroke-width="1" opacity="0.4" />
32
+ <line x1="600" y1="0" x2="200" y2="280" stroke="url(#gridFade)" stroke-width="1" opacity="0.3" />
33
+ <line x1="600" y1="0" x2="1000" y2="280" stroke="url(#gridFade)" stroke-width="1" opacity="0.3" />
34
+ <line x1="600" y1="0" x2="400" y2="280" stroke="url(#gridFade)" stroke-width="1" opacity="0.35" />
35
+ <line x1="600" y1="0" x2="800" y2="280" stroke="url(#gridFade)" stroke-width="1" opacity="0.35" />
36
+ <line x1="600" y1="0" x2="-200" y2="280" stroke="url(#gridFade)" stroke-width="1" opacity="0.2" />
37
+ <line x1="600" y1="0" x2="1400" y2="280" stroke="url(#gridFade)" stroke-width="1" opacity="0.2" />
38
+ </svg>
39
+
40
+ <!-- Scanlines overlay -->
41
+ <div class="absolute inset-0 pointer-events-none opacity-[0.03]" style="background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,0.3) 2px, rgba(0,0,0,0.3) 4px);" />
42
+
43
+ <!-- Content -->
44
+ <div class="relative z-10 px-16 pb-20" style="margin-top: auto;">
45
+ <p
46
+ v-if="tagline"
47
+ class="text-xl font-mono uppercase tracking-[0.4em] mb-4"
48
+ style="color: #05d9e8; text-shadow: 0 0 20px #05d9e8, 0 0 40px #05d9e8;"
49
+ >
50
+ {{ tagline }}
51
+ </p>
52
+ <h1
53
+ class="text-[80px] font-black uppercase leading-[0.9] tracking-tight"
54
+ style="color: #fff; text-shadow: 0 0 20px #ff2a6d, 0 0 40px #ff2a6d, 0 0 60px #ff2a6d, 2px 2px 0 #05d9e8; display: block; line-clamp: 2; text-overflow: ellipsis;"
55
+ >
56
+ {{ title }}
57
+ </h1>
58
+ </div>
59
+
60
+ <!-- Corner chrome accents -->
61
+ <div class="absolute top-6 left-6 w-16 h-16 border-l-2 border-t-2" style="border-color: #05d9e8; opacity: 0.6;" />
62
+ <div class="absolute top-6 right-6 w-16 h-16 border-r-2 border-t-2" style="border-color: #ff2a6d; opacity: 0.6;" />
63
+ </div>
64
+ </template>
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Retro-futuristic synthwave/CRT aesthetic
3
+ */
4
+ type __VLS_Props = {
5
+ title?: string;
6
+ tagline?: 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
+ }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -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;