nuxt-og-image 3.0.1 → 3.0.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.
@@ -1 +1 @@
1
- {"id":"d105fb01-545e-4b40-b706-5b2d4c655752","timestamp":1726080816101}
1
+ {"id":"f7ac4397-9cc2-4170-a44e-5e843b399997","timestamp":1726156539286}
@@ -0,0 +1 @@
1
+ {"id":"f7ac4397-9cc2-4170-a44e-5e843b399997","timestamp":1726156539286,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -0,0 +1 @@
1
+ .spotlight[data-v-1e8489a4]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-1e8489a4]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-1e8489a4]{background-color:#ffffff4d}.gradient-border[data-v-1e8489a4]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-1e8489a4]{background-color:#1414144d}.gradient-border[data-v-1e8489a4]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-1e8489a4]: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-1e8489a4]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-1e8489a4]{position:fixed}.left-0[data-v-1e8489a4]{left:0}.right-0[data-v-1e8489a4]{right:0}.z-10[data-v-1e8489a4]{z-index:10}.z-20[data-v-1e8489a4]{z-index:20}.grid[data-v-1e8489a4]{display:grid}.mb-16[data-v-1e8489a4]{margin-bottom:4rem}.mb-8[data-v-1e8489a4]{margin-bottom:2rem}.max-w-520px[data-v-1e8489a4]{max-width:520px}.min-h-screen[data-v-1e8489a4]{min-height:100vh}.w-full[data-v-1e8489a4]{width:100%}.flex[data-v-1e8489a4]{display:flex}.cursor-pointer[data-v-1e8489a4]{cursor:pointer}.place-content-center[data-v-1e8489a4]{place-content:center}.items-center[data-v-1e8489a4]{align-items:center}.justify-center[data-v-1e8489a4]{justify-content:center}.overflow-hidden[data-v-1e8489a4]{overflow:hidden}.bg-white[data-v-1e8489a4]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-1e8489a4]{padding-left:1rem;padding-right:1rem}.px-8[data-v-1e8489a4]{padding-left:2rem;padding-right:2rem}.py-2[data-v-1e8489a4]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-1e8489a4]{text-align:center}.text-8xl[data-v-1e8489a4]{font-size:6rem;line-height:1}.text-xl[data-v-1e8489a4]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-1e8489a4]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-1e8489a4]{font-weight:300}.font-medium[data-v-1e8489a4]{font-weight:500}.leading-tight[data-v-1e8489a4]{line-height:1.25}.font-sans[data-v-1e8489a4]{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-1e8489a4]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-1e8489a4]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-1e8489a4]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-1e8489a4]{padding-left:0;padding-right:0}.sm\:px-6[data-v-1e8489a4]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-1e8489a4]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-1e8489a4]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-1e8489a4]{font-size:1.25rem;line-height:1.75rem}}
@@ -0,0 +1 @@
1
+ .spotlight[data-v-3e7659a1]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-3e7659a1]{position:fixed}.-bottom-1\/2[data-v-3e7659a1]{bottom:-50%}.left-0[data-v-3e7659a1]{left:0}.right-0[data-v-3e7659a1]{right:0}.grid[data-v-3e7659a1]{display:grid}.mb-16[data-v-3e7659a1]{margin-bottom:4rem}.mb-8[data-v-3e7659a1]{margin-bottom:2rem}.h-1\/2[data-v-3e7659a1]{height:50%}.max-w-520px[data-v-3e7659a1]{max-width:520px}.min-h-screen[data-v-3e7659a1]{min-height:100vh}.place-content-center[data-v-3e7659a1]{place-content:center}.overflow-hidden[data-v-3e7659a1]{overflow:hidden}.bg-white[data-v-3e7659a1]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-3e7659a1]{padding-left:2rem;padding-right:2rem}.text-center[data-v-3e7659a1]{text-align:center}.text-8xl[data-v-3e7659a1]{font-size:6rem;line-height:1}.text-xl[data-v-3e7659a1]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-3e7659a1]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-3e7659a1]{font-weight:300}.font-medium[data-v-3e7659a1]{font-weight:500}.leading-tight[data-v-3e7659a1]{line-height:1.25}.font-sans[data-v-3e7659a1]{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-3e7659a1]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-3e7659a1]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-3e7659a1]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-3e7659a1]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-3e7659a1]{font-size:2.25rem;line-height:2.5rem}}
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html><html data-capo=""><head><meta charset="utf-8">
2
2
  <meta name="viewport" content="width=device-width, initial-scale=1">
3
3
  <link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.DtsycVcr.css">
4
- <link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DkfuXiRx.js">
4
+ <link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DW2-WTuf.js">
5
5
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BS9sT-GQ.js">
6
6
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C6doOGgB.js">
7
7
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/pCnzZaOt.js">
@@ -267,9 +267,9 @@
267
267
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BLmvGqlk.js">
268
268
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BYelj_cE.js">
269
269
  <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/B6E6ObS_.js">
270
- <link rel="prefetch" as="style" href="/__nuxt-og-image/_nuxt/error-404.D2eZnIkK.css">
271
- <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CxK4ekaG.js">
272
- <link rel="prefetch" as="style" href="/__nuxt-og-image/_nuxt/error-500.BJ-KsTwR.css">
273
- <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CFTaR7kf.js">
274
- <script type="module" src="/__nuxt-og-image/_nuxt/DkfuXiRx.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__">[{"serverRendered":1},false]</script>
275
- <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"d105fb01-545e-4b40-b706-5b2d4c655752",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
270
+ <link rel="prefetch" as="style" href="/__nuxt-og-image/_nuxt/error-404.BOFYfCaH.css">
271
+ <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DE1lnDnt.js">
272
+ <link rel="prefetch" as="style" href="/__nuxt-og-image/_nuxt/error-500.WFhhfaOj.css">
273
+ <link rel="prefetch" as="script" crossorigin href="/__nuxt-og-image/_nuxt/7waJbMbQ.js">
274
+ <script type="module" src="/__nuxt-og-image/_nuxt/DW2-WTuf.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__">[{"serverRendered":1},false]</script>
275
+ <script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"f7ac4397-9cc2-4170-a44e-5e843b399997",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
package/dist/module.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "bridge": false
6
6
  },
7
7
  "configKey": "ogImage",
8
- "version": "3.0.0",
8
+ "version": "3.0.1",
9
9
  "builder": {
10
10
  "@nuxt/module-builder": "0.8.4",
11
11
  "unbuild": "2.0.0"
@@ -9,6 +9,7 @@ import { normalizeKey } from "unstorage";
9
9
  import { separateProps, useOgImageRuntimeConfig } from "../../shared.js";
10
10
  import { decodeObjectHtmlEntities } from "../util/encoding.js";
11
11
  import { createNitroRouteRuleMatcher } from "../util/kit.js";
12
+ import { normaliseOptions } from "../util/options.js";
12
13
  import { useChromiumRenderer, useSatoriRenderer } from "./instances.js";
13
14
  export function resolvePathCacheKey(e, path) {
14
15
  const siteConfig = e.context.siteConfig.get();
@@ -99,7 +100,7 @@ export async function resolveContext(e) {
99
100
  publicStoragePath: runtimeConfig.publicStoragePath,
100
101
  extension,
101
102
  basePath,
102
- options,
103
+ options: normaliseOptions(options),
103
104
  _nitro: useNitroApp()
104
105
  };
105
106
  await ctx._nitro.hooks.callHook("nuxt-og-image:context", ctx);
@@ -159,8 +160,19 @@ async function fetchPathHtmlAndExtractOptions(e, path, key) {
159
160
  html = await e.$fetch(path, {
160
161
  // follow redirects
161
162
  redirect: "follow",
162
- responseType: "text"
163
+ headers: {
164
+ accept: "text/html"
165
+ }
163
166
  });
167
+ if (typeof html !== "string" || !html.includes("<html>")) {
168
+ html = await globalThis.$fetch(path, {
169
+ // follow redirects
170
+ redirect: "follow",
171
+ headers: {
172
+ accept: "text/html"
173
+ }
174
+ });
175
+ }
164
176
  } catch (err) {
165
177
  return createError({
166
178
  statusCode: 500,
@@ -11,17 +11,42 @@ const BLOCK_ELEMENTS = [
11
11
  "table",
12
12
  "dl"
13
13
  ];
14
+ const INLINE_ELEMENTS = [
15
+ "span",
16
+ "a",
17
+ "b",
18
+ "i",
19
+ "u",
20
+ "em",
21
+ "strong",
22
+ "code",
23
+ "abbr",
24
+ "del",
25
+ "ins",
26
+ "mark",
27
+ "sub",
28
+ "sup",
29
+ "small",
30
+ "p",
31
+ "h1",
32
+ "h2",
33
+ "h3",
34
+ "h4",
35
+ "h5"
36
+ ];
14
37
  export default defineSatoriTransformer({
15
- filter: (node) => node.type === "div" && (Array.isArray(node.props?.children) && node.props?.children.length >= 1) && !node.props?.class?.includes("hidden"),
38
+ filter: (node) => [...INLINE_ELEMENTS, "div"].includes(node.type) && (Array.isArray(node.props?.children) && node.props?.children.length >= 1) && !node.props?.class?.includes("hidden"),
16
39
  transform: (node) => {
17
40
  node.props.style = node.props.style || {};
18
41
  if (node.props.style?.display && node.props.style?.display !== "flex") {
19
42
  return;
20
43
  }
21
- node.props.style.display = "flex";
22
- if (!node.props?.class?.includes("flex-") && node.props.children.some((child) => BLOCK_ELEMENTS.includes(child.type))) {
23
- node.props.style.flexDirection = "column";
24
- return;
44
+ if (node.type === "div") {
45
+ node.props.style.display = "flex";
46
+ if (!node.props?.class?.includes("flex-") && node.props.children.some((child) => BLOCK_ELEMENTS.includes(child.type))) {
47
+ node.props.style.flexDirection = "column";
48
+ return;
49
+ }
25
50
  }
26
51
  let flexWrap = node.props?.class?.includes("flex-wrap");
27
52
  if (!node.props?.class?.includes("flex-")) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-og-image",
3
3
  "type": "module",
4
- "version": "3.0.1",
4
+ "version": "3.0.2",
5
5
  "description": "Enlightened OG Image generation for Nuxt.",
6
6
  "author": {
7
7
  "website": "https://harlanzw.com",
@@ -66,7 +66,7 @@
66
66
  "yoga-wasm-web": "^0.3.3"
67
67
  },
68
68
  "devDependencies": {
69
- "@antfu/eslint-config": "^3.5.1",
69
+ "@antfu/eslint-config": "^3.6.0",
70
70
  "@css-inline/css-inline": "^0.14.1",
71
71
  "@headlessui/vue": "^1.7.23",
72
72
  "@iconify-json/carbon": "^1.2.1",
@@ -101,7 +101,7 @@
101
101
  "sharp": "^0.33.5",
102
102
  "typescript": "^5.6.2",
103
103
  "unocss": "^0.62.3",
104
- "vitest": "^2.0.5"
104
+ "vitest": "^2.1.0"
105
105
  },
106
106
  "resolutions": {
107
107
  "vue": "3.5.4",
@@ -131,6 +131,7 @@
131
131
  "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground && nuxi prepare client",
132
132
  "release": "pnpm build && bumpp && pnpm -r publish --no-git-checks",
133
133
  "typecheck": "tsc --noEmit",
134
- "test": "vitest"
134
+ "test": "HAS_CHROME=true vitest",
135
+ "test:no-chrome": "vitest"
135
136
  }
136
137
  }
@@ -1 +0,0 @@
1
- {"id":"d105fb01-545e-4b40-b706-5b2d4c655752","timestamp":1726080816101,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -1 +0,0 @@
1
- .spotlight[data-v-e8999add]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-e8999add]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-e8999add]{background-color:#ffffff4d}.gradient-border[data-v-e8999add]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-e8999add]{background-color:#1414144d}.gradient-border[data-v-e8999add]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-e8999add]: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-e8999add]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-e8999add]{position:fixed}.left-0[data-v-e8999add]{left:0}.right-0[data-v-e8999add]{right:0}.z-10[data-v-e8999add]{z-index:10}.z-20[data-v-e8999add]{z-index:20}.grid[data-v-e8999add]{display:grid}.mb-16[data-v-e8999add]{margin-bottom:4rem}.mb-8[data-v-e8999add]{margin-bottom:2rem}.max-w-520px[data-v-e8999add]{max-width:520px}.min-h-screen[data-v-e8999add]{min-height:100vh}.w-full[data-v-e8999add]{width:100%}.flex[data-v-e8999add]{display:flex}.cursor-pointer[data-v-e8999add]{cursor:pointer}.place-content-center[data-v-e8999add]{place-content:center}.items-center[data-v-e8999add]{align-items:center}.justify-center[data-v-e8999add]{justify-content:center}.overflow-hidden[data-v-e8999add]{overflow:hidden}.bg-white[data-v-e8999add]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-e8999add]{padding-left:1rem;padding-right:1rem}.px-8[data-v-e8999add]{padding-left:2rem;padding-right:2rem}.py-2[data-v-e8999add]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-e8999add]{text-align:center}.text-8xl[data-v-e8999add]{font-size:6rem;line-height:1}.text-xl[data-v-e8999add]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-e8999add]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-e8999add]{font-weight:300}.font-medium[data-v-e8999add]{font-weight:500}.leading-tight[data-v-e8999add]{line-height:1.25}.font-sans[data-v-e8999add]{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-e8999add]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-e8999add]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-e8999add]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-e8999add]{padding-left:0;padding-right:0}.sm\:px-6[data-v-e8999add]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-e8999add]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-e8999add]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-e8999add]{font-size:1.25rem;line-height:1.75rem}}
@@ -1 +0,0 @@
1
- .spotlight[data-v-ab5e1a72]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-ab5e1a72]{position:fixed}.-bottom-1\/2[data-v-ab5e1a72]{bottom:-50%}.left-0[data-v-ab5e1a72]{left:0}.right-0[data-v-ab5e1a72]{right:0}.grid[data-v-ab5e1a72]{display:grid}.mb-16[data-v-ab5e1a72]{margin-bottom:4rem}.mb-8[data-v-ab5e1a72]{margin-bottom:2rem}.h-1\/2[data-v-ab5e1a72]{height:50%}.max-w-520px[data-v-ab5e1a72]{max-width:520px}.min-h-screen[data-v-ab5e1a72]{min-height:100vh}.place-content-center[data-v-ab5e1a72]{place-content:center}.overflow-hidden[data-v-ab5e1a72]{overflow:hidden}.bg-white[data-v-ab5e1a72]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-ab5e1a72]{padding-left:2rem;padding-right:2rem}.text-center[data-v-ab5e1a72]{text-align:center}.text-8xl[data-v-ab5e1a72]{font-size:6rem;line-height:1}.text-xl[data-v-ab5e1a72]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-ab5e1a72]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-ab5e1a72]{font-weight:300}.font-medium[data-v-ab5e1a72]{font-weight:500}.leading-tight[data-v-ab5e1a72]{line-height:1.25}.font-sans[data-v-ab5e1a72]{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-ab5e1a72]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-ab5e1a72]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-ab5e1a72]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-ab5e1a72]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-ab5e1a72]{font-size:2.25rem;line-height:2.5rem}}