nuxt-og-image 3.0.0-rc.54 → 3.0.0-rc.56

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 (44) hide show
  1. package/dist/client/200.html +17 -14
  2. package/dist/client/404.html +17 -14
  3. package/dist/client/_nuxt/B474tPdy.js +66 -0
  4. package/dist/client/_nuxt/{8m94Rtva.js → B5M9JXfn.js} +1 -1
  5. package/dist/client/_nuxt/{DZD3AlMl.js → BiQytsUZ.js} +1 -1
  6. package/dist/client/_nuxt/Buoqr_Oi.js +2 -0
  7. package/dist/client/_nuxt/{kb-FbsIp.js → COuojIwY.js} +1 -1
  8. package/dist/client/_nuxt/{DCjyzNN-.js → D4FSFK-1.js} +1 -1
  9. package/dist/client/_nuxt/{o8H-iTt6.js → DG8tVHNj.js} +1 -1
  10. package/dist/client/_nuxt/{HFCcX1lU.js → DU18hSVa.js} +69 -69
  11. package/dist/client/_nuxt/DVC_qXWv.js +1 -0
  12. package/dist/client/_nuxt/{NL97_oaV.js → GPY1wEXZ.js} +1 -1
  13. package/dist/client/_nuxt/IconCSS.ml_PwIMm.css +1 -0
  14. package/dist/client/_nuxt/VQMr7AbF.js +1 -0
  15. package/dist/client/_nuxt/builds/latest.json +1 -1
  16. package/dist/client/_nuxt/builds/meta/13f41e6e-d220-4048-8549-013c386aea85.json +1 -0
  17. package/dist/client/_nuxt/cW9vKj3g.js +1 -0
  18. package/dist/client/_nuxt/{entry.DVnILh1U.css → entry.B6GrRE4Z.css} +1 -1
  19. package/dist/client/_nuxt/error-404.CshEgLbC.css +1 -0
  20. package/dist/client/_nuxt/error-500.Buijmx_2.css +1 -0
  21. package/dist/module.json +2 -2
  22. package/dist/module.mjs +7 -4
  23. package/dist/runtime/nitro/og-image/bindings/resvg/wasm-fs.d.ts +1 -1
  24. package/dist/runtime/nitro/og-image/bindings/resvg/wasm.d.ts +1 -1
  25. package/dist/runtime/nitro/og-image/chromium/screenshot.d.ts +0 -1
  26. package/dist/runtime/nitro/og-image/satori/instances.d.ts +1 -1
  27. package/dist/runtime/nitro/plugins/nuxt-content.d.ts +1 -1
  28. package/dist/runtime/nitro/plugins/prerender.d.ts +1 -1
  29. package/dist/runtime/nitro/util/cache.d.ts +10 -0
  30. package/dist/runtime/nitro/util/wasm.d.ts +0 -1
  31. package/dist/runtime/nuxt/components/OgImage/OgImage.d.ts +2 -2
  32. package/dist/runtime/nuxt/components/OgImage/OgImageScreenshot.d.ts +2 -2
  33. package/dist/runtime/nuxt/components/Templates/Community/Nuxt.vue +1 -1
  34. package/dist/runtime/nuxt/components/Templates/Community/NuxtSeo.vue +3 -3
  35. package/dist/runtime/nuxt/components/Templates/Community/Pergel.vue +1 -2
  36. package/dist/runtime/nuxt/composables/mock.d.ts +4 -0
  37. package/dist/runtime/types.d.ts +163 -0
  38. package/package.json +26 -22
  39. package/dist/client/_nuxt/CoEqzGFw.js +0 -44
  40. package/dist/client/_nuxt/IconCSS.MLh-peQH.css +0 -1
  41. package/dist/client/_nuxt/builds/meta/ce5d759a-31b3-43b6-b457-16195d8e8276.json +0 -1
  42. package/dist/client/_nuxt/error-404.DEDgGDo3.css +0 -1
  43. package/dist/client/_nuxt/error-500.D8jWTpMJ.css +0 -1
  44. package/dist/client/index.html +0 -263
@@ -1,2 +1,2 @@
1
- declare const _default: import("nitropack/runtime/plugin").NitroAppPlugin;
1
+ declare const _default: import("nitropack").NitroAppPlugin;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("nitropack/runtime/plugin").NitroAppPlugin;
1
+ declare const _default: import("nitropack").NitroAppPlugin;
2
2
  export default _default;
@@ -0,0 +1,10 @@
1
+ import type { H3Error } from 'h3';
2
+ import type { OgImageRenderEventContext } from '../../types.js';
3
+ export declare function useOgImageBufferCache(ctx: OgImageRenderEventContext, options: {
4
+ baseCacheKey: string | false;
5
+ cacheMaxAgeSeconds?: number;
6
+ }): Promise<void | H3Error | {
7
+ cachedItem: false | BufferSource;
8
+ enabled: boolean;
9
+ update: (image: BufferSource) => Promise<void>;
10
+ }>;
@@ -1,3 +1,2 @@
1
- /// <reference types="node" />
2
1
  export declare function importWasm(input: any): Promise<any>;
3
2
  export declare function readWasmFile(input: string): Promise<Buffer>;
@@ -1,5 +1,5 @@
1
1
  import type { OgImageOptions } from '../../../types.js';
2
- declare const _default: import("vue").DefineComponent<OgImageOptions<"NuxtSeo">, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<OgImageOptions<"NuxtSeo">>, {
3
- props?: any;
2
+ declare const _default: import("@vue/runtime-core").DefineComponent<OgImageOptions<"NuxtSeo">, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<OgImageOptions<"NuxtSeo">>, {
3
+ [x: string]: unknown;
4
4
  }, {}>;
5
5
  export default _default;
@@ -1,5 +1,5 @@
1
1
  import type { OgImagePageScreenshotOptions } from '../../../types.js';
2
- declare const _default: import("vue").DefineComponent<OgImagePageScreenshotOptions, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<OgImagePageScreenshotOptions>, {
3
- props?: any;
2
+ declare const _default: import("@vue/runtime-core").DefineComponent<OgImagePageScreenshotOptions, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<OgImagePageScreenshotOptions>, {
3
+ [x: string]: unknown;
4
4
  }, {}>;
5
5
  export default _default;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts" setup>
2
2
  /**
3
3
  * @credits NuxtLabs <https://nuxtlabs.com/>
4
- * @see https://github.com/nuxt/nuxt.com/blob/main/components/OgImage/OgImageDocs.vue
4
+ * @see https://github.com/nuxt/nuxt.com/blob/main/components/OgImage/Docs.vue
5
5
  */
6
6
  import { computed } from 'vue'
7
7
 
@@ -78,13 +78,13 @@ const IconComponent = runtimeConfig.hasNuxtIcon
78
78
  ? resolveComponent('Icon')
79
79
  : defineComponent({
80
80
  render() {
81
- return h('div', 'missing nuxt-icon')
81
+ return h('div', 'missing @nuxt/icon')
82
82
  },
83
83
  })
84
84
  if (typeof props.icon === 'string' && !runtimeConfig.hasNuxtIcon && process.dev) {
85
- console.warn('Please install `nuxt-icon` to use icons with the fallback OG Image component.')
85
+ console.warn('Please install `@nuxt/icon` to use icons with the fallback OG Image component.')
86
86
  // eslint-disable-next-line no-console
87
- console.log('\nnpm add -D nuxt-icon\n')
87
+ console.log('\nnpx nuxi module add icon\n')
88
88
  // create simple div renderer component
89
89
  }
90
90
  </script>
@@ -1,7 +1,6 @@
1
1
  <script lang="ts" setup>
2
2
  /**
3
3
  * @credits Pergel <https://nuxtlabs.com/>
4
- * @see https://github.com/nuxt/nuxt.com/blob/main/components/OgImage/OgImageDocs.vue
5
4
  */
6
5
  import { computed } from 'vue'
7
6
 
@@ -33,7 +32,7 @@ const title = computed(() => props.title.slice(0, 60))
33
32
 
34
33
  <div class="w-[600px] pl-[100px]">
35
34
  <p v-if="headline" class="uppercase text-[24px] text-[#FEC476] mb-4 font-semibold">
36
- Oku - Pergel
35
+ {{ headline }}
37
36
  </p>
38
37
  <h1 class="w-[600px] m-0 text-[75px] font-semibold mb-4 text-white flex items-center">
39
38
  <span>{{ title }}</span>
@@ -0,0 +1,4 @@
1
+ import type { DefineOgImageInput, ExtractComponentProps, OgImageOptions, OgImagePageScreenshotOptions } from '../../types.js';
2
+ export declare function defineOgImage(_options?: DefineOgImageInput): void;
3
+ export declare function defineOgImageComponent<T extends keyof OgImageComponents>(component: T, props?: Partial<ExtractComponentProps<OgImageComponents[T]>>, options?: OgImageOptions): void;
4
+ export declare function defineOgImageScreenshot(options?: OgImagePageScreenshotOptions): void;
@@ -0,0 +1,163 @@
1
+ import type { html } from 'satori-html';
2
+ import type { H3Error, H3Event } from 'h3';
3
+ import type { ResvgRenderOptions } from '@resvg/resvg-js';
4
+ import type { SatoriOptions } from 'satori';
5
+ import type { AllowedComponentProps, Component, ComponentCustomProps, VNodeProps } from '@vue/runtime-core';
6
+ import type { SharpOptions } from 'sharp';
7
+ import type { NitroApp, NitroOptions } from 'nitropack';
8
+ import type { OgImageComponents } from '#nuxt-og-image/components';
9
+ export interface OgImageRenderEventContext {
10
+ e: H3Event;
11
+ extension: 'png' | 'jpeg' | 'jpg' | 'svg' | 'html' | 'json';
12
+ key: string;
13
+ basePath: string;
14
+ renderer: Renderer;
15
+ options: OgImageOptions;
16
+ isDebugJsonPayload: boolean;
17
+ publicStoragePath: string;
18
+ _nitro: NitroApp;
19
+ }
20
+ export type IconifyEmojiIconSets = 'twemoji' | 'noto' | 'fluent-emoji' | 'fluent-emoji-flat' | 'fluent-emoji-high-contrast' | 'noto-v1' | 'emojione' | 'emojione-monotone' | 'emojione-v1' | 'streamline-emojis' | 'openmoji';
21
+ export interface OgImageRuntimeConfig {
22
+ version: string;
23
+ satoriOptions: SatoriOptions;
24
+ resvgOptions: ResvgRenderOptions;
25
+ sharpOptions: SharpOptions;
26
+ publicStoragePath: string;
27
+ defaults: OgImageOptions;
28
+ debug: boolean;
29
+ baseCacheKey: string;
30
+ fonts: FontConfig[];
31
+ hasNuxtIcon: boolean;
32
+ colorPreference: 'light' | 'dark';
33
+ isNuxtContentDocumentDriven: boolean;
34
+ }
35
+ export interface OgImageComponent {
36
+ path?: string;
37
+ pascalName: string;
38
+ kebabName: string;
39
+ hash: string;
40
+ category: 'app' | 'community' | 'pro';
41
+ credits?: string;
42
+ }
43
+ export interface ScreenshotOptions {
44
+ colorScheme?: 'dark' | 'light';
45
+ selector?: string;
46
+ mask?: string;
47
+ /**
48
+ * The width of the screenshot.
49
+ *
50
+ * @default 1200
51
+ */
52
+ width: number;
53
+ /**
54
+ * The height of the screenshot.
55
+ *
56
+ * @default 630
57
+ */
58
+ height: number;
59
+ /**
60
+ * How long to wait before taking the screenshot. Useful for waiting for animations.
61
+ */
62
+ delay?: number;
63
+ }
64
+ export type OgImagePrebuilt = {
65
+ url: string;
66
+ } & Pick<OgImageOptions, 'width' | 'height' | 'alt' | '_query'>;
67
+ export type DefineOgImageInput = OgImageOptions | OgImagePrebuilt | false;
68
+ export interface OgImageOptions<T extends keyof OgImageComponents = 'NuxtSeo'> {
69
+ /**
70
+ * The width of the screenshot.
71
+ *
72
+ * @default 1200
73
+ */
74
+ width?: number;
75
+ /**
76
+ * The height of the screenshot.
77
+ *
78
+ * @default 630
79
+ */
80
+ height?: number;
81
+ /**
82
+ * The alt text for the image.
83
+ */
84
+ alt?: string;
85
+ /**
86
+ * Use a prebuilt image instead of generating one.
87
+ *
88
+ * Should be an absolute URL.
89
+ */
90
+ url?: string;
91
+ /**
92
+ * The name of the component to render.
93
+ */
94
+ component?: T | string;
95
+ /**
96
+ * Props to pass to the component.
97
+ */
98
+ props?: OgImageComponents[T] | Record<string, any>;
99
+ renderer?: 'chromium' | 'satori';
100
+ extension?: 'png' | 'jpeg' | 'jpg';
101
+ emojis?: IconifyEmojiIconSets;
102
+ /**
103
+ * Provide a static HTML template to render the OG Image instead of a component.
104
+ */
105
+ html?: string;
106
+ resvg?: ResvgRenderOptions;
107
+ satori?: SatoriOptions;
108
+ screenshot?: Partial<ScreenshotOptions>;
109
+ sharp?: SharpOptions;
110
+ fonts?: InputFontConfig[];
111
+ cacheMaxAgeSeconds?: number;
112
+ /**
113
+ * @internal
114
+ */
115
+ _query?: Record<string, any>;
116
+ }
117
+ export interface FontConfig {
118
+ name: string;
119
+ style?: string;
120
+ weight?: string | number;
121
+ path?: string;
122
+ key?: string;
123
+ absolutePath?: boolean;
124
+ }
125
+ export interface ResolvedFontConfig extends FontConfig {
126
+ cacheKey: string;
127
+ data?: BufferSource;
128
+ }
129
+ export type InputFontConfig = (`${string}:${number}` | string | FontConfig);
130
+ export interface RuntimeCompatibilitySchema {
131
+ chromium: 'chrome-launcher' | 'on-demand' | 'playwright' | false;
132
+ ['css-inline']: 'node' | 'wasm' | 'wasm-fs' | false;
133
+ resvg: 'node' | 'wasm' | 'wasm-fs' | false;
134
+ satori: 'node' | 'wasm' | 'wasm-fs' | false;
135
+ sharp: 'node' | false;
136
+ wasm?: NitroOptions['wasm'];
137
+ }
138
+ export type CompatibilityFlags = Partial<Omit<RuntimeCompatibilitySchema, 'wasm'>>;
139
+ export interface CompatibilityFlagEnvOverrides {
140
+ dev?: CompatibilityFlags;
141
+ runtime?: CompatibilityFlags;
142
+ prerender?: CompatibilityFlags;
143
+ }
144
+ export type RendererOptions = Omit<OgImageOptions, 'extension'> & {
145
+ extension: Omit<OgImageOptions['extension'], 'html'>;
146
+ };
147
+ export interface Renderer {
148
+ name: 'chromium' | 'satori';
149
+ supportedFormats: Partial<RendererOptions['extension']>[];
150
+ createImage: (e: OgImageRenderEventContext) => Promise<H3Error | BufferSource | void>;
151
+ debug: (e: OgImageRenderEventContext) => Promise<Record<string, any>>;
152
+ }
153
+ export type ExtractComponentProps<T extends Component> = T extends new (...args: any) => any ? Omit<InstanceType<T>['$props'], keyof ComponentCustomProps | keyof VNodeProps | keyof AllowedComponentProps> : never;
154
+ export type OgImagePageScreenshotOptions = Omit<OgImageOptions, 'html' | 'renderer' | 'component' | 'satori' | 'resvg' | 'sharp'>;
155
+ export type VNode = ReturnType<typeof html>;
156
+ export interface SatoriTransformer {
157
+ filter: (node: VNode) => boolean;
158
+ transform: (node: VNode, e: OgImageRenderEventContext) => Promise<void> | void;
159
+ }
160
+ export interface SocialPreviewMetaData {
161
+ twitter?: Record<string, string>;
162
+ og?: Record<string, string>;
163
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-og-image",
3
3
  "type": "module",
4
- "version": "3.0.0-rc.54",
4
+ "version": "3.0.0-rc.56",
5
5
  "description": "Enlightened OG Image generation for Nuxt.",
6
6
  "author": {
7
7
  "website": "https://harlanzw.com",
@@ -31,11 +31,14 @@
31
31
  "dist",
32
32
  "virtual.d.ts"
33
33
  ],
34
+ "engines": {
35
+ "node": ">=18.0.0"
36
+ },
34
37
  "dependencies": {
35
38
  "@css-inline/css-inline": "0.14.1",
36
39
  "@css-inline/css-inline-wasm": "0.14.1",
37
- "@nuxt/devtools-kit": "^1.3.3",
38
- "@nuxt/kit": "^3.12.2",
40
+ "@nuxt/devtools-kit": "^1.3.9",
41
+ "@nuxt/kit": "^3.12.3",
39
42
  "@resvg/resvg-js": "^2.6.2",
40
43
  "@resvg/resvg-wasm": "^2.6.2",
41
44
  "@unocss/core": "0.61.0",
@@ -43,24 +46,24 @@
43
46
  "@vueuse/core": "^10.11.0",
44
47
  "chrome-launcher": "^1.1.2",
45
48
  "defu": "^6.1.4",
46
- "execa": "^9.2.0",
49
+ "execa": "^9.3.0",
47
50
  "flatted": "^3.3.1",
48
51
  "floating-vue": "5.2.2",
49
52
  "image-size": "^1.1.1",
50
53
  "json-editor-vue": "^0.15.1",
51
54
  "nuxt-icon": "^0.6.10",
52
- "nuxt-site-config": "^2.2.12",
53
- "nuxt-site-config-kit": "^2.2.12",
54
- "nypm": "^0.3.8",
55
+ "nuxt-site-config": "^2.2.13",
56
+ "nuxt-site-config-kit": "^2.2.13",
57
+ "nypm": "^0.3.9",
55
58
  "ofetch": "^1.3.4",
56
59
  "ohash": "^1.1.3",
57
60
  "pathe": "^1.1.2",
58
- "pkg-types": "^1.1.1",
59
- "playwright-core": "^1.44.1",
61
+ "pkg-types": "^1.1.3",
62
+ "playwright-core": "^1.45.1",
60
63
  "radix3": "^1.1.2",
61
64
  "satori": "0.10.13",
62
65
  "satori-html": "^0.3.2",
63
- "shiki": "^1.7.0",
66
+ "shiki": "^1.10.1",
64
67
  "sirv": "^2.0.4",
65
68
  "splitpanes": "^3.1.5",
66
69
  "std-env": "^3.7.0",
@@ -70,21 +73,22 @@
70
73
  "yoga-wasm-web": "^0.3.3"
71
74
  },
72
75
  "devDependencies": {
73
- "@antfu/eslint-config": "^2.21.1",
76
+ "@antfu/eslint-config": "^2.21.2",
74
77
  "@headlessui/vue": "^1.7.22",
75
- "@iconify-json/carbon": "^1.1.35",
78
+ "@iconify-json/carbon": "^1.1.36",
76
79
  "@iconify-json/logos": "^1.1.43",
77
80
  "@iconify-json/noto": "^1.1.18",
78
81
  "@iconify-json/ri": "^1.1.21",
79
- "@iconify-json/tabler": "^1.1.114",
82
+ "@iconify-json/tabler": "^1.1.115",
80
83
  "@img/sharp-linux-x64": "0.33.4",
81
- "@nuxt/content": "^2.12.1",
82
- "@nuxt/devtools": "1.3.3",
83
- "@nuxt/devtools-ui-kit": "^1.3.3",
84
- "@nuxt/module-builder": "^0.8.0",
84
+ "@nuxt/content": "^2.13.0",
85
+ "@nuxt/devtools": "1.3.9",
86
+ "@nuxt/devtools-ui-kit": "^1.3.9",
87
+ "@nuxt/image": "^1.7.0",
88
+ "@nuxt/module-builder": "^0.8.1",
85
89
  "@nuxt/test-utils": "3.13.1",
86
90
  "@nuxt/ui": "^2.17.0",
87
- "@nuxtjs/color-mode": "^3.4.1",
91
+ "@nuxtjs/color-mode": "^3.4.2",
88
92
  "@nuxtjs/eslint-config-typescript": "^12.1.0",
89
93
  "@nuxtjs/i18n": "^8.3.1",
90
94
  "@nuxtjs/tailwindcss": "^6.12.0",
@@ -94,14 +98,14 @@
94
98
  "@unocss/runtime": "0.61.0",
95
99
  "@vueuse/nuxt": "^10.11.0",
96
100
  "bumpp": "^9.4.1",
97
- "eslint": "9.5.0",
101
+ "eslint": "9.6.0",
98
102
  "jest-image-snapshot": "^6.4.0",
99
- "nuxt": "^3.12.2",
103
+ "nuxt": "^3.12.3",
100
104
  "nuxt-icon": "0.6.10",
101
- "playwright": "^1.44.1",
105
+ "playwright": "^1.45.1",
102
106
  "sass": "^1.77.6",
103
107
  "sharp": "^0.33.4",
104
- "typescript": "^5.4.5",
108
+ "typescript": "^5.5.3",
105
109
  "unocss": "0.61.0",
106
110
  "vitest": "^1.6.0"
107
111
  },
@@ -1,44 +0,0 @@
1
- const e=Object.freeze({displayName:"GDScript",fileTypes:["gd"],name:"gdscript",patterns:[{include:"#statement"},{include:"#expression"}],repository:{annotated_parameter:{begin:`(?x)
2
- \\s* ([a-zA-Z_]\\w*) \\s* (:)\\s* ([a-zA-Z_]\\w*)?
3
- `,beginCaptures:{1:{name:"variable.parameter.function.language.gdscript"},2:{name:"punctuation.separator.annotation.gdscript"},3:{name:"entity.name.type.class.builtin.gdscript"}},end:"(,)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.parameters.gdscript"}},patterns:[{include:"#base_expression"},{match:"=(?!=)",name:"keyword.operator.assignment.gdscript"}]},annotations:{captures:{1:{name:"entity.name.function.decorator.gdscript"},2:{name:"entity.name.function.decorator.gdscript"}},match:"(@)(export|export_color_no_alpha|export_dir|export_enum|export_exp_easing|export_file|export_flags|export_flags_2d_navigation|export_flags_2d_physics|export_flags_2d_render|export_flags_3d_navigation|export_flags_3d_physics|export_flags_3d_render|export_global_dir|export_global_file|export_multiline|export_node_path|export_placeholder|export_range|icon|onready|rpc|tool|warning_ignore|abstract)\\b"},any_method:{match:"\\b([A-Za-z_]\\w*)\\b(?=\\s*(?:[(]))",name:"support.function.any-method.gdscript"},any_property:{captures:{1:{name:"punctuation.accessor.gdscript"},2:{name:"constant.language.gdscript"},3:{name:"variable.other.property.gdscript"}},match:"\\b(\\.)\\s*(?<![@\\$#%])(?:([A-Z_][A-Z_0-9]*)|([A-Za-z_]\\w*))\\b(?![(])"},any_variable:{match:"\\b(?<![@\\$#%])([A-Za-z_]\\w*)\\b(?![(])",name:"variable.other.gdscript"},arithmetic_operator:{match:"->|\\+=|-=|\\*=|/=|%=|&=|\\|=|\\*|/|%|\\+|-|<<|>>|&|\\||\\^|~|!",name:"keyword.operator.arithmetic.gdscript"},assignment_operator:{match:"=",name:"keyword.operator.assignment.gdscript"},base_expression:{patterns:[{include:"#builtin_get_node_shorthand"},{include:"#nodepath_object"},{include:"#nodepath_function"},{include:"#strings"},{include:"#const_vars"},{include:"#keywords"},{include:"#logic_operator"},{include:"#compare_operator"},{include:"#arithmetic_operator"},{include:"#lambda_declaration"},{include:"#class_declaration"},{include:"#variable_declaration"},{include:"#signal_declaration_bare"},{include:"#signal_declaration"},{include:"#function_declaration"},{include:"#statement_keyword"},{include:"#assignment_operator"},{include:"#in_keyword"},{include:"#control_flow"},{include:"#round_braces"},{include:"#function_call"},{include:"#comment"},{include:"#self"},{include:"#func"},{include:"#letter"},{include:"#numbers"},{include:"#builtin_classes"},{include:"#pascal_case_class"},{include:"#line_continuation"}]},builtin_classes:{match:"(?<![^.]\\.|:)\\b(OS|GDScript|Vector2|Vector2i|Vector3|Vector3i|Color|Rect2|Rect2i|Array|Basis|Dictionary|Plane|Quat|RID|Rect3|Transform|Transform2D|Transform3D|AABB|String|Color|NodePath|Object|PoolByteArray|PoolIntArray|PoolRealArray|PoolStringArray|PoolVector2Array|PoolVector3Array|PoolColorArray|bool|int|float|StringName|Quaternion|PackedByteArray|PackedInt32Array|PackedInt64Array|PackedFloat32Array|PackedFloat64Array|PackedStringArray|PackedVector2Array|PackedVector2iArray|PackedVector3Array|PackedVector3iArray|PackedColorArray|super)\\b",name:"entity.name.type.class.builtin.gdscript"},builtin_get_node_shorthand:{patterns:[{include:"#builtin_get_node_shorthand_quoted"},{include:"#builtin_get_node_shorthand_bare"},{include:"#builtin_get_node_shorthand_bare_multi"}]},builtin_get_node_shorthand_bare:{captures:{1:{name:"keyword.control.flow.gdscript"},2:{name:"constant.character.escape.gdscript"},3:{name:"constant.character.escape.gdscript"}},match:"(?<!/\\s*)(\\$|%|\\$%)([a-zA-Z_]\\w*)\\b(?!\\s*/)",name:"meta.literal.nodepath.gdscript"},builtin_get_node_shorthand_bare_multi:{begin:"(\\$|%|\\$%)([a-zA-Z_]\\w*)",beginCaptures:{1:{name:"keyword.control.flow.gdscript"},2:{name:"constant.character.escape.gdscript"}},end:"(?!\\s*/\\s*%?\\s*[a-zA-Z_]\\w*)",name:"meta.literal.nodepath.gdscript",patterns:[{captures:{1:{name:"constant.character.escape.gdscript"},2:{name:"keyword.control.flow.gdscript"},3:{name:"constant.character.escape.gdscript"}},match:"(/)\\s*(%)?\\s*([a-zA-Z_]\\w*)\\s*"}]},builtin_get_node_shorthand_quoted:{begin:`(?:(\\$)|(&|\\^|@))("|')`,beginCaptures:{1:{name:"keyword.control.flow.gdscript"},2:{name:"variable.other.enummember.gdscript"}},end:"(\\3)",name:"string.quoted.gdscript meta.literal.nodepath.gdscript constant.character.escape.gdscript",patterns:[{match:"%",name:"keyword.control.flow"}]},class_declaration:{captures:{1:{name:"entity.name.type.class.gdscript"},2:{name:"class.other.gdscript"}},match:"(?<=^class)\\s+([a-zA-Z_]\\w*)\\s*(?=:)"},class_enum:{captures:{1:{name:"entity.name.type.class.gdscript"},2:{name:"constant.language.gdscript"}},match:"\\b([A-Z][a-zA-Z_0-9]*)\\.([A-Z_0-9]+)"},class_is:{captures:{1:{name:"storage.type.is.gdscript"},2:{name:"entity.name.type.class.gdscript"}},match:"\\s+(is)\\s+([a-zA-Z_]\\w*)"},class_name:{captures:{1:{name:"entity.name.type.class.gdscript"},2:{name:"class.other.gdscript"}},match:"(?<=class_name)\\s+([a-zA-Z_]\\w*(\\.([a-zA-Z_]\\w*))?)"},class_new:{captures:{1:{name:"entity.name.type.class.gdscript"},2:{name:"storage.type.new.gdscript"},3:{name:"punctuation.parenthesis.begin.gdscript"}},match:"\\b([a-zA-Z_]\\w*).(new)\\("},comment:{captures:{1:{name:"punctuation.definition.comment.number-sign.gdscript"}},match:"(#).*$\\n?",name:"comment.line.number-sign.gdscript"},compare_operator:{match:"<=|>=|==|<|>|!=",name:"keyword.operator.comparison.gdscript"},const_vars:{match:"\\b([A-Z_][A-Z_0-9]*)\\b",name:"constant.language.gdscript"},control_flow:{match:"\\b(?:if|elif|else|while|break|continue|pass|return|match|yield|await)\\b",name:"keyword.control.gdscript"},expression:{patterns:[{include:"#base_expression"},{include:"#getter_setter_godot4"},{include:"#assignment_operator"},{include:"#annotations"},{include:"#class_name"},{include:"#builtin_classes"},{include:"#class_new"},{include:"#class_is"},{include:"#class_enum"},{include:"#any_method"},{include:"#any_variable"},{include:"#any_property"}]},extends_statement:{captures:{1:{name:"keyword.language.gdscript"},2:{name:"entity.other.inherited-class.gdscript"}},match:"(extends)\\s+([a-zA-Z_]\\w*\\.[a-zA-Z_]\\w*)?"},func:{match:"\\bfunc\\b",name:"keyword.language.gdscript"},function_arguments:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.gdscript"}},contentName:"meta.function.parameters.gdscript",end:"(?=\\))(?!\\)\\s*\\()",patterns:[{match:"(,)",name:"punctuation.separator.arguments.gdscript"},{captures:{1:{name:"variable.parameter.function-call.gdscript"},2:{name:"keyword.operator.assignment.gdscript"}},match:"\\b([a-zA-Z_]\\w*)\\s*(=)(?!=)"},{match:"=(?!=)",name:"keyword.operator.assignment.gdscript"},{include:"#base_expression"},{captures:{1:{name:"punctuation.definition.arguments.end.gdscript"},2:{name:"punctuation.definition.arguments.begin.gdscript"}},match:"\\s*(\\))\\s*(\\()"},{include:"#letter"},{include:"#any_variable"},{include:"#any_property"},{include:"#keywords"}]},function_call:{begin:`(?x)
4
- \\b(?=
5
- ([a-zA-Z_]\\w*) \\s* (\\()
6
- )
7
- `,beginCaptures:{2:{name:"punctuation.definition.arguments.begin.gdscript"}},comment:'Regular function call of the type "name(args)"',end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.gdscript"}},name:"meta.function-call.gdscript",patterns:[{include:"#function_name"},{include:"#function_arguments"}]},function_declaration:{begin:`(?x) \\s*
8
- (func) \\s+
9
- ([a-zA-Z_]\\w*) \\s*
10
- (?=\\()`,beginCaptures:{1:{name:"keyword.language.gdscript storage.type.function.gdscript"},2:{name:"entity.name.function.gdscript"}},end:`(:|(?=[#'"\\n]))`,end2:"(\\s*(\\-\\>)\\s*(void\\w*)|([a-zA-Z_]\\w*)\\s*\\:)",endCaptures2:{1:{name:"punctuation.separator.annotation.result.gdscript"},2:{name:"keyword.language.void.gdscript"},3:{name:"entity.name.type.class.gdscript markup.italic"}},name:"meta.function.gdscript",patterns:[{include:"#parameters"},{include:"#line_continuation"},{include:"#base_expression"}]},function_name:{patterns:[{include:"#builtin_classes"},{comment:"Some color schemas support meta.function-call.generic scope",match:`(?x)
11
- \\b ([a-zA-Z_]\\w*) \\b
12
- `,name:"support.function.any-method.gdscript"}]},getter_setter_godot4:{patterns:[{captures:{1:{name:"entity.name.function.gdscript"}},match:"\\b(get):"},{begin:`(?x) \\s+
13
- (set) \\s*
14
- (?=\\()`,beginCaptures:{1:{name:"entity.name.function.gdscript"}},end:`(:|(?=[#'"\\n]))`,name:"meta.function.gdscript",patterns:[{include:"#parameters"},{include:"#line_continuation"}]}]},in_keyword:{patterns:[{begin:"\\b(for)\\b",captures:{1:{name:"keyword.control.gdscript"}},end:":",patterns:[{match:"\\bin\\b",name:"keyword.control.gdscript"},{include:"#base_expression"},{include:"#any_variable"},{include:"#any_property"}]},{match:"\\bin\\b",name:"keyword.operator.wordlike.gdscript"}]},keywords:{match:"\\b(?:class|class_name|is|onready|tool|static|export|as|void|enum|preload|assert|breakpoint|rpc|sync|remote|master|puppet|slave|remotesync|mastersync|puppetsync|trait|namespace)\\b",name:"keyword.language.gdscript"},lambda_declaration:{begin:"(func)\\s?(?=\\()",beginCaptures:{1:{name:"keyword.language.gdscript storage.type.function.gdscript"},2:{name:"entity.name.function.gdscript"}},end:`(:|(?=[#'"\\n]))`,end2:"(\\s*(\\-\\>)\\s*(void\\w*)|([a-zA-Z_]\\w*)\\s*\\:)",endCaptures2:{1:{name:"punctuation.separator.annotation.result.gdscript"},2:{name:"keyword.language.void.gdscript"},3:{name:"entity.name.type.class.gdscript markup.italic"}},name:"meta.function.gdscript",patterns:[{include:"#parameters"},{include:"#line_continuation"},{include:"#base_expression"},{include:"#any_variable"},{include:"#any_property"}]},letter:{match:"\\b(?:true|false|null)\\b",name:"constant.language.gdscript"},line_continuation:{patterns:[{captures:{1:{name:"punctuation.separator.continuation.line.gdscript"},2:{name:"invalid.illegal.line.continuation.gdscript"}},match:"(\\\\)\\s*(\\S.*$\\n?)"},{begin:"(\\\\)\\s*$\\n?",beginCaptures:{1:{name:"punctuation.separator.continuation.line.gdscript"}},end:`(?x)
15
- (?=^\\s*$)
16
- |
17
- (?! (\\s* [rR]? (\\'\\'\\'|\\"\\"\\"|\\'|\\"))
18
- |
19
- (\\G $) (?# '\\G' is necessary for ST)
20
- )
21
- `,patterns:[{include:"#base_expression"}]}]},logic_operator:{match:"\\b(and|or|not|!)\\b",name:"keyword.operator.wordlike.gdscript"},loose_default:{begin:"(=)",beginCaptures:{1:{name:"keyword.operator.gdscript"}},end:"(,)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.parameters.gdscript"}},patterns:[{include:"#base_expression"}]},nodepath_function:{begin:"(get_node_or_null|has_node|has_node_and_resource|find_node|get_node)\\s*(\\()",beginCaptures:{1:{name:"entity.name.function.gdscript"},2:{name:"punctuation.definition.parameters.begin.gdscript"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.gdscript"}},patterns:[{begin:`("|')`,end:"\\1",name:"string.quoted.gdscript meta.literal.nodepath.gdscript constant.character.escape",patterns:[{match:"%",name:"keyword.control.flow"}]}]},nodepath_object:{begin:"(NodePath)\\s*(?:\\()",beginCaptures:{1:{name:"support.class.library.gdscript"}},end:"(?:\\))",name:"meta.literal.nodepath.gdscript",patterns:[{begin:`("|')`,end:"\\1",name:"string.quoted.gdscript constant.character.escape.gdscript",patterns:[{match:"%",name:"keyword.control.flow.gdscript"}]}]},numbers:{patterns:[{match:"0b[01_]+",name:"constant.numeric.integer.binary.gdscript"},{match:"0x[0-9A-Fa-f_]+",name:"constant.numeric.integer.hexadecimal.gdscript"},{match:"[-]?([0-9][0-9_]+\\.[0-9_]*(e[\\-\\+]?[0-9_]+)?)",name:"constant.numeric.float.gdscript"},{match:"[-]?(\\.[0-9][0-9_]*(e[\\-\\+]?[0-9_]+)?)",name:"constant.numeric.float.gdscript"},{match:"[-]?([0-9][0-9_]*e[\\-\\+]?\\[0-9_])",name:"constant.numeric.float.gdscript"},{match:"[-]?[0-9][0-9_]*",name:"constant.numeric.integer.gdscript"}]},parameters:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.gdscript"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.gdscript"}},name:"meta.function.parameters.gdscript",patterns:[{include:"#annotated_parameter"},{captures:{1:{name:"variable.parameter.function.language.gdscript"},2:{name:"punctuation.separator.parameters.gdscript"}},match:`(?x)
22
- ([a-zA-Z_]\\w*)
23
- \\s* (?: (,) | (?=[)#\\n=]))
24
- `},{include:"#comment"},{include:"#loose_default"}]},pascal_case_class:{match:"\\b([A-Z][a-z_0-9]*([A-Z]?[a-z_0-9]+)*[A-Z]?)\\b",name:"entity.name.type.class.gdscript"},round_braces:{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.begin.gdscript"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.end.gdscript"}},patterns:[{include:"#base_expression"},{include:"#any_variable"}]},self:{match:"\\bself\\b",name:"variable.language.gdscript"},signal_declaration:{begin:`(?x) \\s*
25
- (signal) \\s+
26
- ([a-zA-Z_]\\w*) \\s*
27
- (?=\\()`,beginCaptures:{1:{name:"keyword.language.gdscript storage.type.function.gdscript"},2:{name:"entity.name.function.gdscript"}},end:`((?=[#'"\\n]))`,name:"meta.signal.gdscript",patterns:[{include:"#parameters"},{include:"#line_continuation"}]},signal_declaration_bare:{captures:{1:{name:"keyword.language.gdscript storage.type.function.gdscript"},2:{name:"entity.name.function.gdscript"}},match:`(?x) \\s*
28
- (signal) \\s+
29
- ([a-zA-Z_]\\w*)(?=[\\n\\s])`,name:"meta.signal.gdscript"},statement:{patterns:[{include:"#extends_statement"}]},statement_keyword:{patterns:[{match:`(?x)
30
- \\b(?<!\\.)(
31
- continue | assert | break | elif | else | if | pass | return | while )\\b
32
- `,name:"keyword.control.flow.gdscript"},{match:"\\b(?<!\\.)(class)\\b",name:"storage.type.class.gdscript"},{captures:{1:{name:"keyword.control.flow.gdscript"}},match:`(?x)
33
- ^\\s*(
34
- case | match
35
- )(?=\\s*([-+\\w\\d(\\[{'":#]|$))\\b
36
- `}]},string_formatting:{captures:{1:{name:"constant.character.format.placeholder.other.gdscript"}},match:`(?x)
37
- (
38
- % (\\([\\w\\s]*\\))?
39
- [-+#0 ]*
40
- (\\d+|\\*)? (\\.(\\d+|\\*))?
41
- ([hlL])?
42
- [diouxXeEfFgGcrsab%]
43
- )
44
- `,name:"meta.format.percent.gdscript"},strings:{begin:`(r)?("""|'''|"|')`,beginCaptures:{1:{name:"constant.character.escape.gdscript"}},end:"\\2",name:"string.quoted.gdscript",patterns:[{match:"\\\\.",name:"constant.character.escape.gdscript"},{include:"#string_formatting"}]},variable_declaration:{begin:"\\b(?:(var)|(const))\\s+(?:(\\b[A-Z_][A-Z_0-9]*\\b)|([A-Za-z_]\\w*))\\s*",beginCaptures:{1:{name:"keyword.language.gdscript storage.type.var.gdscript"},2:{name:"keyword.language.gdscript storage.type.const.gdscript"},3:{name:"constant.language.gdscript"},4:{name:"variable.other.gdscript"}},end:"$|;",name:"meta.variable.gdscript",patterns:[{captures:{1:{name:"punctuation.separator.annotation.gdscript"},2:{name:"keyword.language.gdscript storage.type.const.gdscript"},3:{name:"entity.name.function.gdscript"}},match:"(:)?\\s*(set|get)\\s+=\\s+([a-zA-Z_]\\w*)"},{match:":=|=(?!=)",name:"keyword.operator.assignment.gdscript"},{captures:{1:{name:"punctuation.separator.annotation.gdscript"},2:{name:"entity.name.type.class.gdscript"}},match:"(:)\\s*([a-zA-Z_]\\w*)?"},{captures:{1:{name:"keyword.language.gdscript storage.type.const.gdscript"},2:{name:"entity.name.function.gdscript"},3:{name:"entity.name.function.gdscript"}},match:"(setget)\\s+([a-zA-Z_]\\w*)(?:[,]\\s*([a-zA-Z_]\\w*))?"},{include:"#expression"},{include:"#letter"},{include:"#any_variable"},{include:"#any_property"},{include:"#keywords"}]}},scopeName:"source.gdscript"});var n=[e];export{n as default};
@@ -1 +0,0 @@
1
- span[data-v-369b0d4b]{background-color:currentColor;display:inline-block;-webkit-mask-image:var(--257a861c);mask-image:var(--257a861c);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;vertical-align:middle}
@@ -1 +0,0 @@
1
- {"id":"ce5d759a-31b3-43b6-b457-16195d8e8276","timestamp":1718856452123,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -1 +0,0 @@
1
- .spotlight[data-v-bdcd1a09]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-bdcd1a09]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-bdcd1a09]{background-color:#ffffff4d}.gradient-border[data-v-bdcd1a09]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-bdcd1a09]{background-color:#1414144d}.gradient-border[data-v-bdcd1a09]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-bdcd1a09]: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-bdcd1a09]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-bdcd1a09]{position:fixed}.left-0[data-v-bdcd1a09]{left:0}.right-0[data-v-bdcd1a09]{right:0}.z-10[data-v-bdcd1a09]{z-index:10}.z-20[data-v-bdcd1a09]{z-index:20}.grid[data-v-bdcd1a09]{display:grid}.mb-16[data-v-bdcd1a09]{margin-bottom:4rem}.mb-8[data-v-bdcd1a09]{margin-bottom:2rem}.max-w-520px[data-v-bdcd1a09]{max-width:520px}.min-h-screen[data-v-bdcd1a09]{min-height:100vh}.w-full[data-v-bdcd1a09]{width:100%}.flex[data-v-bdcd1a09]{display:flex}.cursor-pointer[data-v-bdcd1a09]{cursor:pointer}.place-content-center[data-v-bdcd1a09]{place-content:center}.items-center[data-v-bdcd1a09]{align-items:center}.justify-center[data-v-bdcd1a09]{justify-content:center}.overflow-hidden[data-v-bdcd1a09]{overflow:hidden}.bg-white[data-v-bdcd1a09]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-bdcd1a09]{padding-left:1rem;padding-right:1rem}.px-8[data-v-bdcd1a09]{padding-left:2rem;padding-right:2rem}.py-2[data-v-bdcd1a09]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-bdcd1a09]{text-align:center}.text-8xl[data-v-bdcd1a09]{font-size:6rem;line-height:1}.text-xl[data-v-bdcd1a09]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-bdcd1a09]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-bdcd1a09]{font-weight:300}.font-medium[data-v-bdcd1a09]{font-weight:500}.leading-tight[data-v-bdcd1a09]{line-height:1.25}.font-sans[data-v-bdcd1a09]{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-bdcd1a09]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-bdcd1a09]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-bdcd1a09]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-bdcd1a09]{padding-left:0;padding-right:0}.sm\:px-6[data-v-bdcd1a09]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-bdcd1a09]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-bdcd1a09]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-bdcd1a09]{font-size:1.25rem;line-height:1.75rem}}
@@ -1 +0,0 @@
1
- .spotlight[data-v-fc2b23f7]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-fc2b23f7]{position:fixed}.-bottom-1\/2[data-v-fc2b23f7]{bottom:-50%}.left-0[data-v-fc2b23f7]{left:0}.right-0[data-v-fc2b23f7]{right:0}.grid[data-v-fc2b23f7]{display:grid}.mb-16[data-v-fc2b23f7]{margin-bottom:4rem}.mb-8[data-v-fc2b23f7]{margin-bottom:2rem}.h-1\/2[data-v-fc2b23f7]{height:50%}.max-w-520px[data-v-fc2b23f7]{max-width:520px}.min-h-screen[data-v-fc2b23f7]{min-height:100vh}.place-content-center[data-v-fc2b23f7]{place-content:center}.overflow-hidden[data-v-fc2b23f7]{overflow:hidden}.bg-white[data-v-fc2b23f7]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-fc2b23f7]{padding-left:2rem;padding-right:2rem}.text-center[data-v-fc2b23f7]{text-align:center}.text-8xl[data-v-fc2b23f7]{font-size:6rem;line-height:1}.text-xl[data-v-fc2b23f7]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-fc2b23f7]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-fc2b23f7]{font-weight:300}.font-medium[data-v-fc2b23f7]{font-weight:500}.leading-tight[data-v-fc2b23f7]{line-height:1.25}.font-sans[data-v-fc2b23f7]{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-fc2b23f7]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-fc2b23f7]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-fc2b23f7]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-fc2b23f7]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-fc2b23f7]{font-size:2.25rem;line-height:2.5rem}}