@nuxt/scripts 1.0.0-beta.22 → 1.0.0-beta.23

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,987 +1,1994 @@
1
- import * as schemas_js from '../dist/runtime/registry/schemas.js';
2
- export * from '../dist/runtime/registry/schemas.js';
3
-
4
- function _mergeNamespaces(n, m) {
5
- for (var i = 0; i < m.length; i++) {
6
- const e = m[i];
7
- if (typeof e !== 'string' && !Array.isArray(e)) { for (const k in e) {
8
- if (k !== 'default' && !(k in n)) {
9
- n[k] = e[k];
10
- }
11
- } }
12
- }
13
- return n;
14
- }
15
-
16
- const schemas = /*#__PURE__*/_mergeNamespaces({
17
- __proto__: null
18
- }, [schemas_js]);
19
-
20
- const clarity = [
21
- {
22
- name: "ClarityOptions",
23
- kind: "const",
24
- code: "export const ClarityOptions = object({\n /**\n * The Clarity token.\n * @see https://learn.microsoft.com/en-us/clarity/setup-clarity\n */\n id: pipe(string(), minLength(10)),\n})"
25
- },
26
- {
27
- name: "ClarityFunctions",
28
- kind: "type",
29
- code: "type ClarityFunctions = ((fn: 'start', options?: { content?: boolean, cookies?: string[], dob?: number, expire?: number, projectId?: string, upload?: string }) => void)\n & ((fn: 'identify', id: string, session?: string, page?: string, userHint?: string) => Promise<{\n id: string\n session: string\n page: string\n userHint: string\n }>)\n & ((fn: 'consent', enabled?: boolean | Record<string, string>) => void)\n & ((fn: 'set', key: string, value: string | string[]) => void)\n & ((fn: 'event', value: string) => void)\n & ((fn: 'upgrade', upgradeReason: string) => void)\n & ((fn: (string & {}), ...args: any[]) => void)"
30
- },
31
- {
32
- name: "ClarityApi",
33
- kind: "interface",
34
- code: "export interface ClarityApi {\n clarity: ClarityFunctions & {\n q: any[]\n v: string\n }\n}"
35
- }
36
- ];
37
- const crisp = [
38
- {
39
- name: "CrispOptions",
40
- kind: "const",
41
- code: "export const CrispOptions = object({\n /**\n * The Crisp ID.\n */\n id: string(),\n /**\n * Extra configuration options. Used to configure the locale.\n * Same as CRISP_RUNTIME_CONFIG.\n * @see https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/language-customization/\n */\n runtimeConfig: optional(object({\n locale: optional(string()),\n })),\n /**\n * Associated a session, equivalent to using CRISP_TOKEN_ID variable.\n * Same as CRISP_TOKEN_ID.\n * @see https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/session-continuity/\n */\n tokenId: optional(string()),\n /**\n * Restrict the domain that the Crisp cookie is set on.\n * Same as CRISP_COOKIE_DOMAIN.\n * @see https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/cookie-policies/\n */\n cookieDomain: optional(string()),\n /**\n * The cookie expiry in seconds.\n * Same as CRISP_COOKIE_EXPIRATION.\n * @see https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/cookie-policies/#change-cookie-expiration-date\n */\n cookieExpiry: optional(number()),\n})"
42
- },
43
- {
44
- name: "CrispApi",
45
- kind: "interface",
46
- code: "export interface CrispApi {\n push: (...args: any[]) => void\n is: (name: 'chat:opened' | 'chat:closed' | 'chat:visible' | 'chat:hidden' | 'chat:small' | 'chat:large' | 'session:ongoing' | 'website:available' | 'overlay:opened' | 'overlay:closed' | (string & {})) => boolean\n set: ((name: 'message:text' | 'user:email' | 'user:phone' | 'user:nickname' | 'user:avatar' | 'user:company', value: string) => void)\n & ((name: 'session:data', value: [[string, string | number | boolean], ...[string, string | number | boolean][]]) => void)\n & ((name: 'session:segments', value: string[]) => void)\n & ((name: 'session:event', value: [[string, Record<string, any>?, string?]]) => void)\n & ((name: (string & {}), value: any) => void)\n get: ((name: 'chat:unread:count') => number)\n & ((name: 'message:text' | 'session:identifier' | 'user:email' | 'user:phone' | 'user:nickname' | 'user:avatar' | 'user:company') => string)\n & ((name: 'session:data', key: string) => string | number | boolean)\n & ((name: (string & {})) => any)\n do: (name: 'chat:open' | 'chat:close' | 'chat:toggle' | 'chat:show' | 'chat:hide' | 'helpdesk:search' | 'helpdesk:article:open' | 'helpdesk:query' | 'overlay:open' | 'overlay:close' | 'message:send' | 'message:show' | 'message:read' | 'message:thread:start' | 'message:thread:end' | 'session:reset' | 'trigger:run', arg2?: any) => any\n on: (name: 'session:loaded' | 'chat:initiated' | 'chat:opened' | 'chat:closed' | 'message:sent' | 'message:received' | 'message:compose:sent' | 'message:compose:received' | 'user:email:changed' | 'user:phone:changed' | 'user:nickname:changed' | 'user:avatar:changed' | 'website:availability:changed' | 'helpdesk:queried' | (string & {}), callback: (...args: any[]) => any) => void\n off: (name: 'session:loaded' | 'chat:initiated' | 'chat:opened' | 'chat:closed' | 'message:sent' | 'message:received' | 'message:compose:sent' | 'message:compose:received' | 'user:email:changed' | 'user:phone:changed' | 'user:nickname:changed' | 'user:avatar:changed' | 'website:availability:changed' | 'helpdesk:queried' | (string & {}), callback: (...args: any[]) => any) => void\n config: ((name: 'container:index', value: number) => void)\n & ((name: 'color:theme', value: 'default' | 'amber' | 'black' | 'blue' | 'blue_grey' | 'light_blue' | 'brown' | 'cyan' | 'green' | 'light_green' | 'grey' | 'indigo' | 'orange' | 'deep_orange' | 'pink' | 'purple' | 'deep_purple' | 'red' | 'teal') => void)\n & ((name: 'position:reverse' | 'hide:on:mobile' | 'hide:on:away' | 'lock:maximized' | 'lock:fullview' | 'show:operator:count' | 'sound:mute', value: boolean) => void)\n & ((name: (string & {}), value: any) => void)\n help: () => void\n [key: string]: any\n}"
47
- },
48
- {
49
- name: "ScriptCrispProps",
50
- kind: "interface",
51
- code: "interface ScriptCrispProps {\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n id: string\n runtimeConfig?: {\n locale: string\n }\n tokenId?: string\n cookieDomain?: string\n cookieExpiry?: number\n}"
52
- },
53
- {
54
- name: "ScriptCrispDefaults",
55
- kind: "const",
56
- code: "const ScriptCrispDefaults = {\n \"trigger\": \"'click'\"\n}"
57
- }
58
- ];
59
- const gravatar = [
60
- {
61
- name: "GravatarApi",
62
- kind: "interface",
63
- code: "export interface GravatarApi {\n /**\n * Get a proxied avatar URL for a given SHA256 email hash.\n * When firstParty mode is enabled, this routes through your server.\n */\n getAvatarUrl: (hash: string, options?: { size?: number, default?: string, rating?: string }) => string\n /**\n * Get a proxied avatar URL using the server-side hashing endpoint.\n * The email is sent to YOUR server (not Gravatar) for hashing.\n * Only available when the gravatar proxy is enabled.\n */\n getAvatarUrlFromEmail: (email: string, options?: { size?: number, default?: string, rating?: string }) => string\n}"
64
- }
65
- ];
66
- const hotjar = [
67
- {
68
- name: "HotjarOptions",
69
- kind: "const",
70
- code: "export const HotjarOptions = object({\n /**\n * Your Hotjar Site ID.\n * @see https://help.hotjar.com/hc/en-us/articles/115012039247-Hotjar-Tracking-Code\n */\n id: number(),\n /**\n * The Hotjar snippet version.\n * @default 6\n */\n sv: optional(number()),\n})"
71
- },
72
- {
73
- name: "HotjarApi",
74
- kind: "interface",
75
- code: "export interface HotjarApi {\n hj: ((event: 'identify', userId: string, attributes?: Record<string, any>) => void) & ((event: 'stateChange', path: string) => void) & ((event: 'vPageView', path: string) => void) & ((event: 'event', eventName: string) => void) & ((event: (string & {}), ...args: any[]) => void) & {\n q: any[]\n }\n}"
76
- }
77
- ];
78
- const intercom = [
79
- {
80
- name: "IntercomOptions",
81
- kind: "const",
82
- code: "export const IntercomOptions = object({\n /**\n * Your Intercom app ID.\n * @see https://developers.intercom.com/installing-intercom/docs/javascript-api-attributes-objects\n */\n app_id: string(),\n /**\n * The regional API base URL. Choose based on your Intercom data hosting region.\n */\n api_base: optional(union([literal('https://api-iam.intercom.io'), literal('https://api-iam.eu.intercom.io'), literal('https://api-iam.au.intercom.io')])),\n /**\n * The name of the logged-in user.\n */\n name: optional(string()),\n /**\n * The email address of the logged-in user.\n */\n email: optional(string()),\n /**\n * A unique identifier for the logged-in user.\n */\n user_id: optional(string()),\n /**\n * The horizontal alignment of the Intercom messenger launcher.\n * @default 'right'\n */\n alignment: optional(union([literal('left'), literal('right')])),\n /**\n * The horizontal padding (in px) of the messenger launcher from the edge of the page.\n * @default 20\n */\n horizontal_padding: optional(number()),\n /**\n * The vertical padding (in px) of the messenger launcher from the bottom of the page.\n * @default 20\n */\n vertical_padding: optional(number()),\n})"
83
- },
84
- {
85
- name: "IntercomApi",
86
- kind: "interface",
87
- code: "export interface IntercomApi {\n Intercom: ((event: 'boot', data?: InferInput<typeof IntercomOptions>) => void)\n & ((event: 'shutdown') => void)\n & ((event: 'update', options?: InferInput<typeof IntercomOptions>) => void)\n & ((event: 'hide') => void)\n & ((event: 'show') => void)\n & ((event: 'showSpace', spaceName: 'home' | 'messages' | 'help' | 'news' | 'tasks' | 'tickets' | (string & {})) => void)\n & ((event: 'showMessages') => void)\n & ((event: 'showNewMessage', content?: string) => void)\n & ((event: 'onHide', fn: () => void) => void)\n & ((event: 'onShow', fn: () => void) => void)\n & ((event: 'onUnreadCountChange', fn: () => void) => void)\n & ((event: 'trackEvent', eventName: string, metadata?: Record<string, any>) => void)\n & ((event: 'getVisitorId') => Promise<string>)\n & ((event: 'startTour', tourId: string | number) => void)\n & ((event: 'showArticle', articleId: string | number) => void)\n & ((event: 'showNews', newsItemId: string | number) => void)\n & ((event: 'startSurvey', surveyId: string | number) => void)\n & ((event: 'startChecklist', checklistId: string | number) => void)\n & ((event: 'showTicket', ticketId: string | number) => void)\n & ((event: 'showConversation', conversationId: string | number) => void)\n & ((event: 'onUserEmailSupplied', fn: () => void) => void)\n & ((event: (string & {}), ...params: any[]) => void)\n}"
88
- },
89
- {
90
- name: "ScriptIntercomProps",
91
- kind: "interface",
92
- code: "interface ScriptIntercomProps {\n appId: string\n apiBase?: string\n name?: string\n email?: string\n userId?: string\n // customizing the messenger\n alignment?: 'left' | 'right'\n horizontalPadding?: number\n verticalPadding?: number\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n}"
93
- },
94
- {
95
- name: "ScriptIntercomDefaults",
96
- kind: "const",
97
- code: "const ScriptIntercomDefaults = {\n \"trigger\": \"'click'\"\n}"
98
- }
99
- ];
100
- const npm = [
101
- {
102
- name: "NpmOptions",
103
- kind: "const",
104
- code: "export const NpmOptions = object({\n /**\n * The npm package name to load.\n * @example 'lodash'\n */\n packageName: string(),\n /**\n * The specific file path within the package to load.\n * @example '/dist/lodash.min.js'\n */\n file: optional(string()),\n /**\n * The package version to load.\n * @default 'latest'\n */\n version: optional(string()),\n /**\n * The CDN provider to use for loading the package.\n * @default 'unpkg'\n * @see https://unpkg.com\n * @see https://www.jsdelivr.com\n * @see https://cdnjs.com\n */\n provider: optional(union([literal('jsdelivr'), literal('cdnjs'), literal('unpkg')])),\n})"
105
- },
106
- {
107
- name: "Provider",
108
- kind: "type",
109
- code: "type Provider = 'jsdelivr' | 'cdnjs' | 'unpkg'"
110
- }
111
- ];
112
- const paypal = [
113
- {
114
- name: "PayPalOptions",
115
- kind: "const",
116
- code: "export const PayPalOptions = union([\n object({\n /**\n * Your PayPal client ID.\n * @see https://developer.paypal.com/sdk/js/reference/\n */\n clientId: string(),\n clientToken: optional(string()),\n /**\n * Use the PayPal sandbox environment. Defaults to `true` in development.\n */\n sandbox: optional(boolean()),\n }),\n object({\n clientId: optional(string()),\n /**\n * A server-generated client token for authentication.\n * @see https://docs.paypal.ai/payments/methods/paypal/sdk/js/v6/paypal-checkout\n */\n clientToken: string(),\n /**\n * Use the PayPal sandbox environment. Defaults to `true` in development.\n */\n sandbox: optional(boolean()),\n }),\n])"
117
- },
118
- {
119
- name: "PayPalApi",
120
- kind: "interface",
121
- code: "export interface PayPalApi {\n paypal: PayPalV6Namespace\n}"
122
- },
123
- {
124
- name: "ScriptPayPalButtonsProps",
125
- kind: "interface",
126
- code: "interface ScriptPayPalButtonsProps {\n /**\n * Customize the root element attributes.\n */\n rootAttrs?: HTMLAttributes & ReservedProps & Record<string, unknown>\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n /**\n * Client ID or client token for PayPal SDK v6 authentication.\n */\n clientId?: string\n /**\n * Server-generated client token for SDK v6.\n */\n clientToken?: string\n /**\n * The v6 SDK components to load.\n * @default ['paypal-payments']\n */\n components?: Components[]\n /**\n * The page type context hint.\n */\n pageType?: PageTypes\n /**\n * The locale for the SDK (BCP-47 code).\n */\n locale?: string\n /**\n * The merchant ID(s).\n */\n merchantId?: string | string[]\n /**\n * Partner attribution ID for revenue sharing.\n */\n partnerAttributionId?: string\n /**\n * The paypal script options.\n */\n paypalScriptOptions?: Partial<PayPalInput>\n}"
127
- },
128
- {
129
- name: "ScriptPayPalButtonsDefaults",
130
- kind: "const",
131
- code: "const ScriptPayPalButtonsDefaults = {\n \"trigger\": \"'visible'\",\n \"clientId\": \"'test'\",\n \"components\": \"() => ['paypal-payments'] as Components[]\",\n \"paypalScriptOptions\": \"() => ({})\"\n}"
132
- },
133
- {
134
- name: "ScriptPayPalMessagesProps",
135
- kind: "interface",
136
- code: "interface ScriptPayPalMessagesProps {\n /**\n * Customize the root element attributes.\n */\n rootAttrs?: HTMLAttributes & ReservedProps & Record<string, unknown>\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n /**\n * Client ID or client token for PayPal SDK v6 authentication.\n */\n clientId?: string\n /**\n * Server-generated client token for SDK v6.\n */\n clientToken?: string\n /**\n * The merchant ID for the paypal script.\n */\n merchantId?: string | string[]\n /**\n * The partner attribution ID.\n */\n partnerAttributionId?: string\n /**\n * The page type context hint.\n */\n pageType?: PageTypes\n /**\n * The locale for the SDK (BCP-47 code).\n */\n locale?: string\n /**\n * Options for the PayPal Messages session.\n */\n messagesOptions?: PayPalMessagesOptions\n /**\n * The paypal script options.\n */\n paypalScriptOptions?: Partial<PayPalInput>\n}"
137
- },
138
- {
139
- name: "ScriptPayPalMessagesDefaults",
140
- kind: "const",
141
- code: "const ScriptPayPalMessagesDefaults = {\n \"trigger\": \"'visible'\",\n \"clientId\": \"'test'\",\n \"paypalScriptOptions\": \"() => ({})\",\n \"messagesOptions\": \"() => ({})\"\n}"
142
- }
143
- ];
144
- const posthog = [
145
- {
146
- name: "PostHogOptions",
147
- kind: "const",
148
- code: "export const PostHogOptions = object({\n /**\n * Your PostHog project API key.\n * @see https://posthog.com/docs/libraries/js#usage\n */\n apiKey: string(),\n /**\n * Your PostHog data region.\n * @default 'us'\n * @see https://posthog.com/docs/libraries/js#config\n */\n region: optional(union([literal('us'), literal('eu')])),\n /**\n * Custom API host URL. Overrides the default derived from `region`.\n * Useful for self-hosted instances or reverse proxies.\n */\n apiHost: optional(string()),\n /**\n * Enable autocapture of clicks, form submissions, and page views.\n * @default true\n */\n autocapture: optional(boolean()),\n /**\n * Capture page views automatically. Set to `'history_change'` to only capture on history changes.\n * @default true\n */\n capturePageview: optional(union([boolean(), literal('history_change')])),\n /**\n * Capture page leave events automatically.\n * @default true\n */\n capturePageleave: optional(boolean()),\n /**\n * Disable session recording.\n */\n disableSessionRecording: optional(boolean()),\n /**\n * Additional PostHog configuration options passed directly to `posthog.init()`.\n * @see https://posthog.com/docs/libraries/js#config\n */\n config: optional(record(string(), any())),\n})"
149
- },
150
- {
151
- name: "PostHogApi",
152
- kind: "interface",
153
- code: "export interface PostHogApi {\n posthog: PostHog\n}"
154
- }
155
- ];
156
- const segment = [
157
- {
158
- name: "SegmentOptions",
159
- kind: "const",
160
- code: "export const SegmentOptions = object({\n /**\n * Your Segment write key.\n * @see https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/quickstart/\n */\n writeKey: string(),\n /**\n * The global variable name for the analytics instance.\n * @default 'analytics'\n */\n analyticsKey: optional(string()),\n})"
161
- },
162
- {
163
- name: "AnalyticsApi",
164
- kind: "interface",
165
- code: "interface AnalyticsApi {\n track: (event: string, properties?: Record<string, any>) => void\n page: (name?: string, properties?: Record<string, any>) => void\n identify: (userId: string, traits?: Record<string, any>, options?: Record<string, any>) => void\n group: (groupId: string, traits?: Record<string, any>, options?: Record<string, any>) => void\n alias: (userId: string, previousId: string, options?: Record<string, any>) => void\n reset: () => void\n /**\n * @internal\n */\n methods: string[]\n /**\n * @internal\n */\n factory: (method: string) => (...args: any[]) => AnalyticsApi\n /**\n * @internal\n */\n push: (args: any[]) => void\n}"
166
- },
167
- {
168
- name: "SegmentApi",
169
- kind: "type",
170
- code: "export type SegmentApi = Pick<AnalyticsApi, 'track' | 'page' | 'identify' | 'group' | 'alias' | 'reset'>"
171
- }
172
- ];
173
- const stripe = [
174
- {
175
- name: "StripeOptions",
176
- kind: "const",
177
- code: "export const StripeOptions = object({\n /**\n * Whether to load Stripe's advanced fraud detection signals.\n * Set to `false` to opt out.\n * @default true\n * @see https://docs.stripe.com/disputes/prevention/advanced-fraud-detection\n */\n advancedFraudSignals: optional(boolean()),\n})"
178
- },
179
- {
180
- name: "StripeApi",
181
- kind: "interface",
182
- code: "export interface StripeApi {\n Stripe: StripeConstructor\n}"
183
- },
184
- {
185
- name: "ScriptStripePricingTableProps",
186
- kind: "interface",
187
- code: "interface ScriptStripePricingTableProps {\n trigger?: ElementScriptTrigger\n publishableKey: string\n pricingTableId: string\n clientReferenceId?: string\n customerEmail?: string\n customerSessionClientSecret?: string\n}"
188
- },
189
- {
190
- name: "ScriptStripePricingTableDefaults",
191
- kind: "const",
192
- code: "const ScriptStripePricingTableDefaults = {\n \"trigger\": \"'visible'\"\n}"
193
- }
194
- ];
195
- const registryTypes = {
1
+ const types = {
196
2
  "bluesky-embed": [
197
- {
198
- name: "BlueskyEmbedOptions",
199
- kind: "const",
200
- code: "export const BlueskyEmbedOptions = object({\n /**\n * The Bluesky post URL to embed.\n * @example 'https://bsky.app/profile/bsky.app/post/3mgnwwvj3u22a'\n */\n postUrl: string(),\n /**\n * Custom API endpoint for fetching post data.\n * @default '/_scripts/embed/bluesky'\n */\n apiEndpoint: optional(string()),\n /**\n * Custom image proxy endpoint.\n * @default '/_scripts/embed/bluesky-image'\n */\n imageProxyEndpoint: optional(string()),\n})"
201
- },
202
- {
203
- name: "BlueskyEmbedPostData",
204
- kind: "interface",
205
- code: "export interface BlueskyEmbedPostData {\n uri: string\n cid: string\n author: {\n did: string\n handle: string\n displayName: string\n avatar: string\n labels: Array<{ val: string }>\n verification?: {\n verifiedStatus: string\n }\n }\n record: {\n $type: string\n createdAt: string\n text: string\n langs?: string[]\n facets?: Array<{\n features: Array<{\n $type: string\n uri?: string\n did?: string\n tag?: string\n }>\n index: {\n byteStart: number\n byteEnd: number\n }\n }>\n embed?: {\n $type: string\n images?: Array<{\n alt: string\n image: { ref: { $link: string }, mimeType: string, size: number }\n aspectRatio?: { width: number, height: number }\n }>\n external?: {\n uri: string\n title: string\n description: string\n thumb?: { ref: { $link: string }, mimeType: string, size: number }\n }\n }\n }\n embed?: {\n $type: string\n images?: Array<{\n thumb: string\n fullsize: string\n alt: string\n aspectRatio?: { width: number, height: number }\n }>\n external?: {\n uri: string\n title: string\n description: string\n thumb?: string\n }\n }\n likeCount: number\n repostCount: number\n replyCount: number\n quoteCount: number\n indexedAt: string\n labels: Array<{ val: string }>\n}"
206
- }
207
- ],
208
- clarity: clarity,
3
+ {
4
+ name: "BlueskyEmbedOptions",
5
+ kind: "const",
6
+ code: "export const BlueskyEmbedOptions = object({\n /**\n * The Bluesky post URL to embed.\n * @example 'https://bsky.app/profile/bsky.app/post/3mgnwwvj3u22a'\n */\n postUrl: string(),\n /**\n * Custom API endpoint for fetching post data.\n * @default '/_scripts/embed/bluesky'\n */\n apiEndpoint: optional(string()),\n /**\n * Custom image proxy endpoint.\n * @default '/_scripts/embed/bluesky-image'\n */\n imageProxyEndpoint: optional(string()),\n})"
7
+ },
8
+ {
9
+ name: "BlueskyEmbedPostData",
10
+ kind: "interface",
11
+ code: "export interface BlueskyEmbedPostData {\n uri: string\n cid: string\n author: {\n did: string\n handle: string\n displayName: string\n avatar: string\n labels: Array<{ val: string }>\n verification?: {\n verifiedStatus: string\n }\n }\n record: {\n $type: string\n createdAt: string\n text: string\n langs?: string[]\n facets?: Array<{\n features: Array<{\n $type: string\n uri?: string\n did?: string\n tag?: string\n }>\n index: {\n byteStart: number\n byteEnd: number\n }\n }>\n embed?: {\n $type: string\n images?: Array<{\n alt: string\n image: { ref: { $link: string }, mimeType: string, size: number }\n aspectRatio?: { width: number, height: number }\n }>\n external?: {\n uri: string\n title: string\n description: string\n thumb?: { ref: { $link: string }, mimeType: string, size: number }\n }\n }\n }\n embed?: {\n $type: string\n images?: Array<{\n thumb: string\n fullsize: string\n alt: string\n aspectRatio?: { width: number, height: number }\n }>\n external?: {\n uri: string\n title: string\n description: string\n thumb?: string\n }\n }\n likeCount: number\n repostCount: number\n replyCount: number\n quoteCount: number\n indexedAt: string\n labels: Array<{ val: string }>\n}"
12
+ },
13
+ {
14
+ name: "ScriptBlueskyEmbedProps",
15
+ kind: "interface",
16
+ code: "interface ScriptBlueskyEmbedProps {\n /**\n * The Bluesky post URL to embed\n * @example 'https://bsky.app/profile/bsky.app/post/3mgnwwvj3u22a'\n */\n postUrl: string\n /**\n * Custom API endpoint for fetching post data\n * @default '/_scripts/embed/bluesky'\n */\n apiEndpoint?: string\n /**\n * Custom image proxy endpoint\n * @default '/_scripts/embed/bluesky-image'\n */\n imageProxyEndpoint?: string\n /**\n * Root element attributes\n */\n rootAttrs?: HTMLAttributes\n}"
17
+ },
18
+ {
19
+ name: "ScriptBlueskyEmbedDefaults",
20
+ kind: "const",
21
+ code: "const ScriptBlueskyEmbedDefaults = {\n \"apiEndpoint\": \"'/_scripts/embed/bluesky'\",\n \"imageProxyEndpoint\": \"'/_scripts/embed/bluesky-image'\"\n}"
22
+ }
23
+ ],
24
+ clarity: [
25
+ {
26
+ name: "ClarityOptions",
27
+ kind: "const",
28
+ code: "export const ClarityOptions = object({\n /**\n * The Clarity token.\n * @see https://learn.microsoft.com/en-us/clarity/setup-clarity\n */\n id: pipe(string(), minLength(10)),\n})"
29
+ },
30
+ {
31
+ name: "ClarityFunctions",
32
+ kind: "type",
33
+ code: "type ClarityFunctions = ((fn: 'start', options?: { content?: boolean, cookies?: string[], dob?: number, expire?: number, projectId?: string, upload?: string }) => void)\n & ((fn: 'identify', id: string, session?: string, page?: string, userHint?: string) => Promise<{\n id: string\n session: string\n page: string\n userHint: string\n }>)\n & ((fn: 'consent', enabled?: boolean | Record<string, string>) => void)\n & ((fn: 'set', key: string, value: string | string[]) => void)\n & ((fn: 'event', value: string) => void)\n & ((fn: 'upgrade', upgradeReason: string) => void)\n & ((fn: (string & {}), ...args: any[]) => void)"
34
+ },
35
+ {
36
+ name: "ClarityApi",
37
+ kind: "interface",
38
+ code: "export interface ClarityApi {\n clarity: ClarityFunctions & {\n q: any[]\n v: string\n }\n}"
39
+ }
40
+ ],
209
41
  "cloudflare-web-analytics": [
210
- {
211
- name: "CloudflareWebAnalyticsOptions",
212
- kind: "const",
213
- code: "export const CloudflareWebAnalyticsOptions = object({\n /**\n * The Cloudflare Web Analytics token.\n * @see https://developers.cloudflare.com/analytics/web-analytics/get-started/\n */\n token: pipe(string(), minLength(32)),\n /**\n * Cloudflare Web Analytics enables measuring SPAs automatically by overriding the History API's pushState function\n * and listening to the onpopstate. Hash-based router is not supported.\n *\n * @default true\n * @see https://developers.cloudflare.com/analytics/web-analytics/get-started/#spa-tracking\n */\n spa: optional(boolean()),\n})"
214
- },
215
- {
216
- name: "CloudflareWebAnalyticsApi",
217
- kind: "interface",
218
- code: "export interface CloudflareWebAnalyticsApi {\n __cfBeacon: {\n load: 'single'\n spa: boolean\n token: string\n }\n}"
219
- }
220
- ],
221
- crisp: crisp,
42
+ {
43
+ name: "CloudflareWebAnalyticsOptions",
44
+ kind: "const",
45
+ code: "export const CloudflareWebAnalyticsOptions = object({\n /**\n * The Cloudflare Web Analytics token.\n * @see https://developers.cloudflare.com/analytics/web-analytics/get-started/\n */\n token: pipe(string(), minLength(32)),\n /**\n * Cloudflare Web Analytics enables measuring SPAs automatically by overriding the History API's pushState function\n * and listening to the onpopstate. Hash-based router is not supported.\n *\n * @default true\n * @see https://developers.cloudflare.com/analytics/web-analytics/get-started/#spa-tracking\n */\n spa: optional(boolean()),\n})"
46
+ },
47
+ {
48
+ name: "CloudflareWebAnalyticsApi",
49
+ kind: "interface",
50
+ code: "export interface CloudflareWebAnalyticsApi {\n __cfBeacon: {\n load: 'single'\n spa: boolean\n token: string\n }\n}"
51
+ }
52
+ ],
53
+ crisp: [
54
+ {
55
+ name: "CrispOptions",
56
+ kind: "const",
57
+ code: "export const CrispOptions = object({\n /**\n * The Crisp ID.\n */\n id: string(),\n /**\n * Extra configuration options. Used to configure the locale.\n * Same as CRISP_RUNTIME_CONFIG.\n * @see https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/language-customization/\n */\n runtimeConfig: optional(object({\n locale: optional(string()),\n })),\n /**\n * Associated a session, equivalent to using CRISP_TOKEN_ID variable.\n * Same as CRISP_TOKEN_ID.\n * @see https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/session-continuity/\n */\n tokenId: optional(string()),\n /**\n * Restrict the domain that the Crisp cookie is set on.\n * Same as CRISP_COOKIE_DOMAIN.\n * @see https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/cookie-policies/\n */\n cookieDomain: optional(string()),\n /**\n * The cookie expiry in seconds.\n * Same as CRISP_COOKIE_EXPIRATION.\n * @see https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/cookie-policies/#change-cookie-expiration-date\n */\n cookieExpiry: optional(number()),\n})"
58
+ },
59
+ {
60
+ name: "CrispApi",
61
+ kind: "interface",
62
+ code: "export interface CrispApi {\n push: (...args: any[]) => void\n is: (name: 'chat:opened' | 'chat:closed' | 'chat:visible' | 'chat:hidden' | 'chat:small' | 'chat:large' | 'session:ongoing' | 'website:available' | 'overlay:opened' | 'overlay:closed' | (string & {})) => boolean\n set: ((name: 'message:text' | 'user:email' | 'user:phone' | 'user:nickname' | 'user:avatar' | 'user:company', value: string) => void)\n & ((name: 'session:data', value: [[string, string | number | boolean], ...[string, string | number | boolean][]]) => void)\n & ((name: 'session:segments', value: string[]) => void)\n & ((name: 'session:event', value: [[string, Record<string, any>?, string?]]) => void)\n & ((name: (string & {}), value: any) => void)\n get: ((name: 'chat:unread:count') => number)\n & ((name: 'message:text' | 'session:identifier' | 'user:email' | 'user:phone' | 'user:nickname' | 'user:avatar' | 'user:company') => string)\n & ((name: 'session:data', key: string) => string | number | boolean)\n & ((name: (string & {})) => any)\n do: (name: 'chat:open' | 'chat:close' | 'chat:toggle' | 'chat:show' | 'chat:hide' | 'helpdesk:search' | 'helpdesk:article:open' | 'helpdesk:query' | 'overlay:open' | 'overlay:close' | 'message:send' | 'message:show' | 'message:read' | 'message:thread:start' | 'message:thread:end' | 'session:reset' | 'trigger:run', arg2?: any) => any\n on: (name: 'session:loaded' | 'chat:initiated' | 'chat:opened' | 'chat:closed' | 'message:sent' | 'message:received' | 'message:compose:sent' | 'message:compose:received' | 'user:email:changed' | 'user:phone:changed' | 'user:nickname:changed' | 'user:avatar:changed' | 'website:availability:changed' | 'helpdesk:queried' | (string & {}), callback: (...args: any[]) => any) => void\n off: (name: 'session:loaded' | 'chat:initiated' | 'chat:opened' | 'chat:closed' | 'message:sent' | 'message:received' | 'message:compose:sent' | 'message:compose:received' | 'user:email:changed' | 'user:phone:changed' | 'user:nickname:changed' | 'user:avatar:changed' | 'website:availability:changed' | 'helpdesk:queried' | (string & {}), callback: (...args: any[]) => any) => void\n config: ((name: 'container:index', value: number) => void)\n & ((name: 'color:theme', value: 'default' | 'amber' | 'black' | 'blue' | 'blue_grey' | 'light_blue' | 'brown' | 'cyan' | 'green' | 'light_green' | 'grey' | 'indigo' | 'orange' | 'deep_orange' | 'pink' | 'purple' | 'deep_purple' | 'red' | 'teal') => void)\n & ((name: 'position:reverse' | 'hide:on:mobile' | 'hide:on:away' | 'lock:maximized' | 'lock:fullview' | 'show:operator:count' | 'sound:mute', value: boolean) => void)\n & ((name: (string & {}), value: any) => void)\n help: () => void\n [key: string]: any\n}"
63
+ },
64
+ {
65
+ name: "ScriptCrispProps",
66
+ kind: "interface",
67
+ code: "interface ScriptCrispProps {\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n id: string\n runtimeConfig?: {\n locale: string\n }\n tokenId?: string\n cookieDomain?: string\n cookieExpiry?: number\n}"
68
+ },
69
+ {
70
+ name: "ScriptCrispDefaults",
71
+ kind: "const",
72
+ code: "const ScriptCrispDefaults = {\n \"trigger\": \"'click'\"\n}"
73
+ }
74
+ ],
222
75
  "databuddy-analytics": [
223
- {
224
- name: "DatabuddyAnalyticsOptions",
225
- kind: "const",
226
- code: "export const DatabuddyAnalyticsOptions = object({\n /**\n * Your Databuddy client ID.\n */\n clientId: string(),\n\n /**\n * Custom script URL for the Databuddy SDK.\n * @default 'https://cdn.databuddy.cc/databuddy.js'\n */\n scriptUrl: optional(string()),\n /**\n * Custom API URL for sending analytics data.\n * @default 'https://basket.databuddy.cc'\n */\n apiUrl: optional(string()),\n /**\n * Disable all tracking when set to `true`.\n */\n disabled: optional(boolean()),\n\n /**\n * Track screen/page views automatically.\n * @default true\n * @see https://www.databuddy.cc/docs/sdk#track-screen-views\n */\n trackScreenViews: optional(boolean()),\n /**\n * Track page performance metrics.\n * @default true\n * @see https://www.databuddy.cc/docs/sdk#track-performance\n */\n trackPerformance: optional(boolean()),\n /**\n * Track user sessions.\n * @default true\n * @see https://www.databuddy.cc/docs/sdk#track-sessions\n */\n trackSessions: optional(boolean()),\n\n /**\n * Track Web Vitals (LCP, FID, CLS, etc.).\n */\n trackWebVitals: optional(boolean()),\n /**\n * Track JavaScript errors.\n */\n trackErrors: optional(boolean()),\n /**\n * Track outgoing link clicks.\n */\n trackOutgoingLinks: optional(boolean()),\n /**\n * Track scroll depth.\n */\n trackScrollDepth: optional(boolean()),\n /**\n * Track user engagement time.\n */\n trackEngagement: optional(boolean()),\n /**\n * Track user interactions (clicks, form submissions, etc.).\n */\n trackInteractions: optional(boolean()),\n /**\n * Track element attributes for detailed interaction context.\n */\n trackAttributes: optional(boolean()),\n /**\n * Track hash changes in the URL.\n */\n trackHashChanges: optional(boolean()),\n /**\n * Track exit intent behavior.\n */\n trackExitIntent: optional(boolean()),\n /**\n * Track bounce rate metrics.\n */\n trackBounceRate: optional(boolean()),\n\n /**\n * Enable event batching for better performance.\n */\n enableBatching: optional(boolean()),\n /**\n * Maximum number of events per batch.\n */\n batchSize: optional(number()),\n /**\n * Timeout (in ms) before flushing a batch.\n */\n batchTimeout: optional(number()),\n /**\n * Enable automatic retries for failed requests.\n */\n enableRetries: optional(boolean()),\n /**\n * Maximum number of retry attempts.\n */\n maxRetries: optional(number()),\n /**\n * Initial delay (in ms) before the first retry.\n */\n initialRetryDelay: optional(number()),\n /**\n * Sampling rate (0 to 1). Set to `0.5` to track ~50% of sessions.\n */\n samplingRate: optional(number()),\n\n /**\n * Custom SDK identifier.\n */\n sdk: optional(string()),\n /**\n * Custom SDK version string.\n */\n sdkVersion: optional(string()),\n\n /**\n * Enable observability/monitoring features.\n */\n enableObservability: optional(boolean()),\n /**\n * The service name for observability reporting.\n */\n observabilityService: optional(string()),\n /**\n * The environment name for observability (e.g., `'production'`, `'staging'`).\n */\n observabilityEnvironment: optional(string()),\n /**\n * The version string for observability reporting.\n */\n observabilityVersion: optional(string()),\n /**\n * Enable console logging for debugging.\n */\n enableLogging: optional(boolean()),\n /**\n * Enable request tracing.\n */\n enableTracing: optional(boolean()),\n /**\n * Enable error tracking via observability.\n */\n enableErrorTracking: optional(boolean()),\n})"
227
- },
228
- {
229
- name: "DatabuddyAnalyticsApi",
230
- kind: "interface",
231
- code: "export interface DatabuddyAnalyticsApi {\n /**\n * Track a custom event.\n * @param eventName Name of the event (use snake_case)\n * @param properties Optional event properties\n */\n track: (eventName: string, properties?: Record<string, any>) => Promise<any> | any | void\n\n /**\n * Manually record a page / screen view. Useful for SPA route changes.\n * @param path Optional path to record (defaults to current location)\n * @param properties Optional additional properties for the screen view\n */\n screenView: (path?: string, properties?: Record<string, any>) => void\n\n /**\n * Set properties that will be attached to all future events (e.g. user_id).\n * @param properties Key/value map of properties to attach globally\n */\n setGlobalProperties: (properties: Record<string, any>) => void\n\n /**\n * Track a custom event alias (compatibility helper present on the global)\n * @param eventName Name of the event\n * @param properties Optional event properties\n */\n trackCustomEvent: (eventName: string, properties?: Record<string, any>) => void\n\n /**\n * Clears session and anonymous identifiers (useful on logout).\n */\n clear: () => void\n\n /**\n * Force immediate sending of any queued/batched events.\n */\n flush: () => void\n}"
232
- }
233
- ],
76
+ {
77
+ name: "DatabuddyAnalyticsOptions",
78
+ kind: "const",
79
+ code: "export const DatabuddyAnalyticsOptions = object({\n /**\n * Your Databuddy client ID.\n */\n clientId: string(),\n\n /**\n * Custom script URL for the Databuddy SDK.\n * @default 'https://cdn.databuddy.cc/databuddy.js'\n */\n scriptUrl: optional(string()),\n /**\n * Custom API URL for sending analytics data.\n * @default 'https://basket.databuddy.cc'\n */\n apiUrl: optional(string()),\n /**\n * Disable all tracking when set to `true`.\n */\n disabled: optional(boolean()),\n\n /**\n * Track screen/page views automatically.\n * @default true\n * @see https://www.databuddy.cc/docs/sdk#track-screen-views\n */\n trackScreenViews: optional(boolean()),\n /**\n * Track page performance metrics.\n * @default true\n * @see https://www.databuddy.cc/docs/sdk#track-performance\n */\n trackPerformance: optional(boolean()),\n /**\n * Track user sessions.\n * @default true\n * @see https://www.databuddy.cc/docs/sdk#track-sessions\n */\n trackSessions: optional(boolean()),\n\n /**\n * Track Web Vitals (LCP, FID, CLS, etc.).\n */\n trackWebVitals: optional(boolean()),\n /**\n * Track JavaScript errors.\n */\n trackErrors: optional(boolean()),\n /**\n * Track outgoing link clicks.\n */\n trackOutgoingLinks: optional(boolean()),\n /**\n * Track scroll depth.\n */\n trackScrollDepth: optional(boolean()),\n /**\n * Track user engagement time.\n */\n trackEngagement: optional(boolean()),\n /**\n * Track user interactions (clicks, form submissions, etc.).\n */\n trackInteractions: optional(boolean()),\n /**\n * Track element attributes for detailed interaction context.\n */\n trackAttributes: optional(boolean()),\n /**\n * Track hash changes in the URL.\n */\n trackHashChanges: optional(boolean()),\n /**\n * Track exit intent behavior.\n */\n trackExitIntent: optional(boolean()),\n /**\n * Track bounce rate metrics.\n */\n trackBounceRate: optional(boolean()),\n\n /**\n * Enable event batching for better performance.\n */\n enableBatching: optional(boolean()),\n /**\n * Maximum number of events per batch.\n */\n batchSize: optional(number()),\n /**\n * Timeout (in ms) before flushing a batch.\n */\n batchTimeout: optional(number()),\n /**\n * Enable automatic retries for failed requests.\n */\n enableRetries: optional(boolean()),\n /**\n * Maximum number of retry attempts.\n */\n maxRetries: optional(number()),\n /**\n * Initial delay (in ms) before the first retry.\n */\n initialRetryDelay: optional(number()),\n /**\n * Sampling rate (0 to 1). Set to `0.5` to track ~50% of sessions.\n */\n samplingRate: optional(number()),\n\n /**\n * Custom SDK identifier.\n */\n sdk: optional(string()),\n /**\n * Custom SDK version string.\n */\n sdkVersion: optional(string()),\n\n /**\n * Enable observability/monitoring features.\n */\n enableObservability: optional(boolean()),\n /**\n * The service name for observability reporting.\n */\n observabilityService: optional(string()),\n /**\n * The environment name for observability (e.g., `'production'`, `'staging'`).\n */\n observabilityEnvironment: optional(string()),\n /**\n * The version string for observability reporting.\n */\n observabilityVersion: optional(string()),\n /**\n * Enable console logging for debugging.\n */\n enableLogging: optional(boolean()),\n /**\n * Enable request tracing.\n */\n enableTracing: optional(boolean()),\n /**\n * Enable error tracking via observability.\n */\n enableErrorTracking: optional(boolean()),\n})"
80
+ },
81
+ {
82
+ name: "DatabuddyAnalyticsApi",
83
+ kind: "interface",
84
+ code: "export interface DatabuddyAnalyticsApi {\n /**\n * Track a custom event.\n * @param eventName Name of the event (use snake_case)\n * @param properties Optional event properties\n */\n track: (eventName: string, properties?: Record<string, any>) => Promise<any> | any | void\n\n /**\n * Manually record a page / screen view. Useful for SPA route changes.\n * @param path Optional path to record (defaults to current location)\n * @param properties Optional additional properties for the screen view\n */\n screenView: (path?: string, properties?: Record<string, any>) => void\n\n /**\n * Set properties that will be attached to all future events (e.g. user_id).\n * @param properties Key/value map of properties to attach globally\n */\n setGlobalProperties: (properties: Record<string, any>) => void\n\n /**\n * Track a custom event alias (compatibility helper present on the global)\n * @param eventName Name of the event\n * @param properties Optional event properties\n */\n trackCustomEvent: (eventName: string, properties?: Record<string, any>) => void\n\n /**\n * Clears session and anonymous identifiers (useful on logout).\n */\n clear: () => void\n\n /**\n * Force immediate sending of any queued/batched events.\n */\n flush: () => void\n}"
85
+ }
86
+ ],
234
87
  "fathom-analytics": [
235
- {
236
- name: "FathomAnalyticsOptions",
237
- kind: "const",
238
- code: "export const FathomAnalyticsOptions = object({\n /**\n * The Fathom Analytics site ID.\n * @see https://usefathom.com/docs/script/script-settings\n */\n site: string(),\n /**\n * The Fathom Analytics tracking mode.\n * @default 'auto'\n */\n spa: optional(union([literal('auto'), literal('history'), literal('hash')])),\n /**\n * Automatically track page views.\n * @default true\n */\n auto: optional(boolean()),\n /**\n * Enable canonical URL tracking.\n * @default true\n */\n canonical: optional(boolean()),\n /**\n * Honor Do Not Track requests.\n * @default false\n */\n honorDnt: optional(boolean()),\n})"
239
- },
240
- {
241
- name: "FathomAnalyticsApi",
242
- kind: "interface",
243
- code: "export interface FathomAnalyticsApi {\n beacon: (ctx: { url: string, referrer?: string }) => void\n blockTrackingForMe: () => void\n enableTrackingForMe: () => void\n isTrackingEnabled: () => boolean\n send: (type: string, data: unknown) => void\n setSite: (siteId: string) => void\n siteId: string\n trackPageview: (ctx?: { url: string, referrer?: string }) => void\n trackGoal: (goalId: string, cents: number) => void\n trackEvent: (eventName: string, value?: { _value?: number, _site_id?: string }) => void\n}"
244
- }
245
- ],
88
+ {
89
+ name: "FathomAnalyticsOptions",
90
+ kind: "const",
91
+ code: "export const FathomAnalyticsOptions = object({\n /**\n * The Fathom Analytics site ID.\n * @see https://usefathom.com/docs/script/script-settings\n */\n site: string(),\n /**\n * The Fathom Analytics tracking mode.\n * @default 'auto'\n */\n spa: optional(union([literal('auto'), literal('history'), literal('hash')])),\n /**\n * Automatically track page views.\n * @default true\n */\n auto: optional(boolean()),\n /**\n * Enable canonical URL tracking.\n * @default true\n */\n canonical: optional(boolean()),\n /**\n * Honor Do Not Track requests.\n * @default false\n */\n honorDnt: optional(boolean()),\n})"
92
+ },
93
+ {
94
+ name: "FathomAnalyticsApi",
95
+ kind: "interface",
96
+ code: "export interface FathomAnalyticsApi {\n beacon: (ctx: { url: string, referrer?: string }) => void\n blockTrackingForMe: () => void\n enableTrackingForMe: () => void\n isTrackingEnabled: () => boolean\n send: (type: string, data: unknown) => void\n setSite: (siteId: string) => void\n siteId: string\n trackPageview: (ctx?: { url: string, referrer?: string }) => void\n trackGoal: (goalId: string, cents: number) => void\n trackEvent: (eventName: string, value?: { _value?: number, _site_id?: string }) => void\n}"
97
+ }
98
+ ],
246
99
  "google-adsense": [
247
- {
248
- name: "GoogleAdsenseOptions",
249
- kind: "const",
250
- code: "export const GoogleAdsenseOptions = object({\n /**\n * The Google Adsense ID.\n * @example 'ca-pub-XXXXXXXXXXXXXXXX'\n */\n client: optional(string()),\n /**\n * Enable or disable Auto Ads.\n * @default false\n * @see https://support.google.com/adsense/answer/9261805\n */\n autoAds: optional(boolean()),\n})"
251
- },
252
- {
253
- name: "GoogleAdsenseApi",
254
- kind: "interface",
255
- code: "export interface GoogleAdsenseApi {\n /**\n * The Google Adsense API.\n */\n adsbygoogle: any[] & { loaded?: boolean }\n}"
256
- },
257
- {
258
- name: "ScriptGoogleAdsenseProps",
259
- kind: "interface",
260
- code: "interface ScriptGoogleAdsenseProps {\n dataAdClient: string\n dataAdSlot: string\n dataAdFormat?: 'auto' | 'rectangle' | 'vertical' | 'horizontal' | 'fluid' | 'autorelaxed'\n dataAdLayout?: 'in-article' | 'in-feed' | 'fixed'\n dataFullWidthResponsive?: boolean\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n}"
261
- },
262
- {
263
- name: "ScriptGoogleAdsenseDefaults",
264
- kind: "const",
265
- code: "const ScriptGoogleAdsenseDefaults = {\n \"dataFullWidthResponsive\": \"true\",\n \"dataAdFormat\": \"undefined\"\n}"
266
- }
267
- ],
100
+ {
101
+ name: "GoogleAdsenseOptions",
102
+ kind: "const",
103
+ code: "export const GoogleAdsenseOptions = object({\n /**\n * The Google Adsense ID.\n * @example 'ca-pub-XXXXXXXXXXXXXXXX'\n */\n client: optional(string()),\n /**\n * Enable or disable Auto Ads.\n * @default false\n * @see https://support.google.com/adsense/answer/9261805\n */\n autoAds: optional(boolean()),\n})"
104
+ },
105
+ {
106
+ name: "GoogleAdsenseApi",
107
+ kind: "interface",
108
+ code: "export interface GoogleAdsenseApi {\n /**\n * The Google Adsense API.\n */\n adsbygoogle: any[] & { loaded?: boolean }\n}"
109
+ },
110
+ {
111
+ name: "ScriptGoogleAdsenseProps",
112
+ kind: "interface",
113
+ code: "interface ScriptGoogleAdsenseProps {\n dataAdClient: string\n dataAdSlot: string\n dataAdFormat?: 'auto' | 'rectangle' | 'vertical' | 'horizontal' | 'fluid' | 'autorelaxed'\n dataAdLayout?: 'in-article' | 'in-feed' | 'fixed'\n dataFullWidthResponsive?: boolean\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n}"
114
+ },
115
+ {
116
+ name: "ScriptGoogleAdsenseDefaults",
117
+ kind: "const",
118
+ code: "const ScriptGoogleAdsenseDefaults = {\n \"dataFullWidthResponsive\": \"true\",\n \"dataAdFormat\": \"undefined\"\n}"
119
+ }
120
+ ],
268
121
  "google-analytics": [
269
- {
270
- name: "GtagCustomParams",
271
- kind: "type",
272
- code: "export type GtagCustomParams = Record<string, any>"
273
- },
274
- {
275
- name: "ConsentStatus",
276
- kind: "type",
277
- code: "export type ConsentStatus = 'granted' | 'denied'"
278
- },
279
- {
280
- name: "ConsentOptions",
281
- kind: "interface",
282
- code: "export interface ConsentOptions {\n ad_user_data?: ConsentStatus\n ad_personalization?: ConsentStatus\n ad_storage?: ConsentStatus\n analytics_storage?: ConsentStatus\n functionality_storage?: ConsentStatus\n personalization_storage?: ConsentStatus\n security_storage?: ConsentStatus\n wait_for_update?: number\n region?: string[]\n}"
283
- },
284
- {
285
- name: "ConfigParams",
286
- kind: "interface",
287
- code: "export interface ConfigParams extends GtagCustomParams {\n send_page_view?: boolean\n transport_url?: string\n cookie_domain?: string\n cookie_prefix?: string\n cookie_expires?: number\n cookie_update?: boolean\n cookie_flags?: string\n user_id?: string\n}"
288
- },
289
- {
290
- name: "EventParameters",
291
- kind: "interface",
292
- code: "export interface EventParameters extends GtagCustomParams {\n value?: number\n currency?: string\n transaction_id?: string\n items?: Array<{\n item_id?: string\n item_name?: string\n item_category?: string\n item_variant?: string\n price?: number\n quantity?: number\n [key: string]: any\n }>\n [key: string]: any\n}"
293
- },
294
- {
295
- name: "DefaultEventName",
296
- kind: "type",
297
- code: "export type DefaultEventName\n = | 'add_payment_info'\n | 'add_shipping_info'\n | 'add_to_cart'\n | 'add_to_wishlist'\n | 'begin_checkout'\n | 'purchase'\n | 'refund'\n | 'remove_from_cart'\n | 'select_item'\n | 'select_promotion'\n | 'view_cart'\n | 'view_item'\n | 'view_item_list'\n | 'view_promotion'\n | 'login'\n | 'sign_up'\n | 'search'\n | 'page_view'\n | 'screen_view'\n | (string & {})"
298
- },
299
- {
300
- name: "GTag",
301
- kind: "interface",
302
- code: "export interface GTag {\n // Initialize gtag.js with timestamp\n (command: 'js', value: Date): void\n\n // Configure a GA4 property\n (command: 'config', targetId: string, configParams?: ConfigParams): void\n\n // Get a value from gtag\n (command: 'get', targetId: string, fieldName: string, callback?: (field: any) => void): void\n\n // Send an event to GA4\n (command: 'event', eventName: DefaultEventName, eventParams?: EventParameters): void\n\n // Set default parameters for all subsequent events\n (command: 'set', params: GtagCustomParams): void\n\n // Update consent state\n (command: 'consent', consentArg: 'default' | 'update', consentParams: ConsentOptions): void\n}"
303
- },
304
- {
305
- name: "DataLayerObject",
306
- kind: "interface",
307
- code: "export interface DataLayerObject {\n event?: string\n [key: string]: any\n}"
308
- },
309
- {
310
- name: "DataLayer",
311
- kind: "type",
312
- code: "export type DataLayer = Array<DataLayerObject>"
313
- },
314
- {
315
- name: "GoogleAnalyticsApi",
316
- kind: "interface",
317
- code: "export interface GoogleAnalyticsApi {\n gtag: GTag\n dataLayer: DataLayer\n}"
318
- },
319
- {
320
- name: "GoogleAnalyticsOptions",
321
- kind: "const",
322
- code: "export const GoogleAnalyticsOptions = object({\n /**\n * The GA4 measurement ID.\n * @example 'G-XXXXXXXX'\n * @see https://developers.google.com/analytics/devguides/collection/gtagjs\n */\n id: optional(string()),\n /**\n * Global name for the dataLayer variable.\n * @default 'dataLayer'\n * @see https://developers.google.com/analytics/devguides/collection/gtagjs/setting-up-gtag#rename_the_data_layer\n */\n l: optional(string()),\n})"
323
- }
324
- ],
122
+ {
123
+ name: "GtagCustomParams",
124
+ kind: "type",
125
+ code: "export type GtagCustomParams = Record<string, any>"
126
+ },
127
+ {
128
+ name: "ConsentStatus",
129
+ kind: "type",
130
+ code: "export type ConsentStatus = 'granted' | 'denied'"
131
+ },
132
+ {
133
+ name: "ConsentOptions",
134
+ kind: "interface",
135
+ code: "export interface ConsentOptions {\n ad_user_data?: ConsentStatus\n ad_personalization?: ConsentStatus\n ad_storage?: ConsentStatus\n analytics_storage?: ConsentStatus\n functionality_storage?: ConsentStatus\n personalization_storage?: ConsentStatus\n security_storage?: ConsentStatus\n wait_for_update?: number\n region?: string[]\n}"
136
+ },
137
+ {
138
+ name: "ConfigParams",
139
+ kind: "interface",
140
+ code: "export interface ConfigParams extends GtagCustomParams {\n send_page_view?: boolean\n transport_url?: string\n cookie_domain?: string\n cookie_prefix?: string\n cookie_expires?: number\n cookie_update?: boolean\n cookie_flags?: string\n user_id?: string\n}"
141
+ },
142
+ {
143
+ name: "EventParameters",
144
+ kind: "interface",
145
+ code: "export interface EventParameters extends GtagCustomParams {\n value?: number\n currency?: string\n transaction_id?: string\n items?: Array<{\n item_id?: string\n item_name?: string\n item_category?: string\n item_variant?: string\n price?: number\n quantity?: number\n [key: string]: any\n }>\n [key: string]: any\n}"
146
+ },
147
+ {
148
+ name: "DefaultEventName",
149
+ kind: "type",
150
+ code: "export type DefaultEventName\n = | 'add_payment_info'\n | 'add_shipping_info'\n | 'add_to_cart'\n | 'add_to_wishlist'\n | 'begin_checkout'\n | 'purchase'\n | 'refund'\n | 'remove_from_cart'\n | 'select_item'\n | 'select_promotion'\n | 'view_cart'\n | 'view_item'\n | 'view_item_list'\n | 'view_promotion'\n | 'login'\n | 'sign_up'\n | 'search'\n | 'page_view'\n | 'screen_view'\n | (string & {})"
151
+ },
152
+ {
153
+ name: "GTag",
154
+ kind: "interface",
155
+ code: "export interface GTag {\n // Initialize gtag.js with timestamp\n (command: 'js', value: Date): void\n\n // Configure a GA4 property\n (command: 'config', targetId: string, configParams?: ConfigParams): void\n\n // Get a value from gtag\n (command: 'get', targetId: string, fieldName: string, callback?: (field: any) => void): void\n\n // Send an event to GA4\n (command: 'event', eventName: DefaultEventName, eventParams?: EventParameters): void\n\n // Set default parameters for all subsequent events\n (command: 'set', params: GtagCustomParams): void\n\n // Update consent state\n (command: 'consent', consentArg: 'default' | 'update', consentParams: ConsentOptions): void\n}"
156
+ },
157
+ {
158
+ name: "DataLayerObject",
159
+ kind: "interface",
160
+ code: "export interface DataLayerObject {\n event?: string\n [key: string]: any\n}"
161
+ },
162
+ {
163
+ name: "DataLayer",
164
+ kind: "type",
165
+ code: "export type DataLayer = Array<DataLayerObject>"
166
+ },
167
+ {
168
+ name: "GoogleAnalyticsApi",
169
+ kind: "interface",
170
+ code: "export interface GoogleAnalyticsApi {\n gtag: GTag\n dataLayer: DataLayer\n}"
171
+ },
172
+ {
173
+ name: "GoogleAnalyticsOptions",
174
+ kind: "const",
175
+ code: "export const GoogleAnalyticsOptions = object({\n /**\n * The GA4 measurement ID.\n * @example 'G-XXXXXXXX'\n * @see https://developers.google.com/analytics/devguides/collection/gtagjs\n */\n id: optional(string()),\n /**\n * Global name for the dataLayer variable.\n * @default 'dataLayer'\n * @see https://developers.google.com/analytics/devguides/collection/gtagjs/setting-up-gtag#rename_the_data_layer\n */\n l: optional(string()),\n})"
176
+ }
177
+ ],
325
178
  "google-maps": [
326
- {
327
- name: "GoogleMapsOptions",
328
- kind: "const",
329
- code: "export const GoogleMapsOptions = object({\n /**\n * Your Google Maps API key.\n */\n apiKey: string(),\n /**\n * The Google Maps libraries to load.\n * @default ['places']\n * @see https://developers.google.com/maps/documentation/javascript/libraries\n */\n libraries: optional(array(string())),\n /**\n * The language code for the map UI and geocoding results.\n * @see https://developers.google.com/maps/faq#languagesupport\n */\n language: optional(string()),\n /**\n * The region code to bias geocoding results.\n * @see https://developers.google.com/maps/documentation/javascript/localization#Region\n */\n region: optional(string()),\n /**\n * The Google Maps JS API version to load.\n * @default 'weekly'\n * @see https://developers.google.com/maps/documentation/javascript/versions\n */\n v: optional(union([literal('weekly'), literal('quarterly'), literal('beta'), literal('alpha'), string()])),\n})"
330
- },
331
- {
332
- name: "MapsNamespace",
333
- kind: "type",
334
- code: "type MapsNamespace = typeof window.google.maps"
335
- },
336
- {
337
- name: "GoogleMapsApi",
338
- kind: "interface",
339
- code: "export interface GoogleMapsApi {\n maps: Promise<MapsNamespace>\n}"
340
- },
341
- {
342
- name: "ScriptGoogleMapsProps",
343
- kind: "interface",
344
- code: "interface ScriptGoogleMapsProps {\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n /**\n * Is Google Maps being rendered above the fold?\n * This will load the placeholder image with higher priority.\n */\n aboveTheFold?: boolean\n /**\n * Defines the Google Maps API key. Must have access to the Static Maps API as well.\n */\n apiKey?: string\n /**\n * A latitude / longitude of where to focus the map.\n */\n center?: google.maps.LatLng | google.maps.LatLngLiteral | `${string},${string}`\n /**\n * Should a marker be displayed on the map where the centre is.\n */\n centerMarker?: boolean\n /**\n * Options for the map.\n */\n mapOptions?: google.maps.MapOptions\n /**\n * Defines the region of the map.\n */\n region?: string\n /**\n * Defines the language of the map\n */\n language?: string\n /**\n * Defines the version of google maps js API\n */\n version?: string\n /**\n * Defines the width of the map.\n */\n width?: number | string\n /**\n * Defines the height of the map\n */\n height?: number | string\n /**\n * Customize the placeholder image attributes.\n *\n * @see https://developers.google.com/maps/documentation/maps-static/start.\n */\n placeholderOptions?: PlaceholderOptions\n /**\n * Customize the placeholder image attributes.\n */\n placeholderAttrs?: ImgHTMLAttributes & ReservedProps & Record<string, unknown>\n /**\n * Customize the root element attributes.\n */\n rootAttrs?: HTMLAttributes & ReservedProps & Record<string, unknown>\n /**\n * Extra Markers to add to the map.\n */\n markers?: (`${string},${string}` | google.maps.marker.AdvancedMarkerElementOptions)[]\n /**\n * Map IDs for light and dark color modes.\n * When provided, the map will automatically switch styles based on color mode.\n * Requires @nuxtjs/color-mode or manual colorMode prop.\n */\n mapIds?: { light?: string, dark?: string }\n /**\n * Manual color mode control. When provided, overrides auto-detection from @nuxtjs/color-mode.\n * Accepts 'light', 'dark', or a reactive ref.\n */\n colorMode?: 'light' | 'dark'\n}"
345
- },
346
- {
347
- name: "ScriptGoogleMapsDefaults",
348
- kind: "const",
349
- code: "const ScriptGoogleMapsDefaults = {\n \"trigger\": \"['mouseenter', 'mouseover', 'mousedown']\",\n \"width\": \"640\",\n \"height\": \"400\",\n \"centerMarker\": \"true\"\n}"
350
- },
351
- {
352
- name: "ScriptGoogleMapsAdvancedMarkerElementProps",
353
- kind: "interface",
354
- code: "interface ScriptGoogleMapsAdvancedMarkerElementProps {\n options?: Omit<google.maps.marker.AdvancedMarkerElementOptions, 'map'>\n}"
355
- },
356
- {
357
- name: "ScriptGoogleMapsCircleProps",
358
- kind: "interface",
359
- code: "interface ScriptGoogleMapsCircleProps {\n options?: Omit<google.maps.CircleOptions, 'map'>\n}"
360
- },
361
- {
362
- name: "ScriptGoogleMapsHeatmapLayerProps",
363
- kind: "interface",
364
- code: "interface ScriptGoogleMapsHeatmapLayerProps {\n options?: Omit<google.maps.visualization.HeatmapLayerOptions, 'map'>\n}"
365
- },
366
- {
367
- name: "ScriptGoogleMapsInfoWindowProps",
368
- kind: "interface",
369
- code: "interface ScriptGoogleMapsInfoWindowProps {\n options?: google.maps.InfoWindowOptions\n}"
370
- },
371
- {
372
- name: "ScriptGoogleMapsMarkerProps",
373
- kind: "interface",
374
- code: "interface ScriptGoogleMapsMarkerProps {\n options?: Omit<google.maps.MarkerOptions, 'map'>\n}"
375
- },
376
- {
377
- name: "ScriptGoogleMapsMarkerClustererProps",
378
- kind: "interface",
379
- code: "interface ScriptGoogleMapsMarkerClustererProps {\n options?: Omit<MarkerClustererOptions, 'map'>\n}"
380
- },
381
- {
382
- name: "ScriptGoogleMapsPinElementProps",
383
- kind: "interface",
384
- code: "interface ScriptGoogleMapsPinElementProps {\n options?: Omit<google.maps.marker.PinElementOptions, 'map'>\n}"
385
- },
386
- {
387
- name: "ScriptGoogleMapsPolygonProps",
388
- kind: "interface",
389
- code: "interface ScriptGoogleMapsPolygonProps {\n options?: Omit<google.maps.PolygonOptions, 'map'>\n}"
390
- },
391
- {
392
- name: "ScriptGoogleMapsPolylineProps",
393
- kind: "interface",
394
- code: "interface ScriptGoogleMapsPolylineProps {\n options?: Omit<google.maps.PolylineOptions, 'map'>\n}"
395
- },
396
- {
397
- name: "ScriptGoogleMapsRectangleProps",
398
- kind: "interface",
399
- code: "interface ScriptGoogleMapsRectangleProps {\n options?: Omit<google.maps.RectangleOptions, 'map'>\n}"
400
- }
401
- ],
179
+ {
180
+ name: "GoogleMapsOptions",
181
+ kind: "const",
182
+ code: "export const GoogleMapsOptions = object({\n /**\n * Your Google Maps API key.\n */\n apiKey: string(),\n /**\n * The Google Maps libraries to load.\n * @default ['places']\n * @see https://developers.google.com/maps/documentation/javascript/libraries\n */\n libraries: optional(array(string())),\n /**\n * The language code for the map UI and geocoding results.\n * @see https://developers.google.com/maps/faq#languagesupport\n */\n language: optional(string()),\n /**\n * The region code to bias geocoding results.\n * @see https://developers.google.com/maps/documentation/javascript/localization#Region\n */\n region: optional(string()),\n /**\n * The Google Maps JS API version to load.\n * @default 'weekly'\n * @see https://developers.google.com/maps/documentation/javascript/versions\n */\n v: optional(union([literal('weekly'), literal('quarterly'), literal('beta'), literal('alpha'), string()])),\n})"
183
+ },
184
+ {
185
+ name: "MapsNamespace",
186
+ kind: "type",
187
+ code: "type MapsNamespace = typeof window.google.maps"
188
+ },
189
+ {
190
+ name: "GoogleMapsApi",
191
+ kind: "interface",
192
+ code: "export interface GoogleMapsApi {\n maps: Promise<MapsNamespace>\n}"
193
+ },
194
+ {
195
+ name: "ScriptGoogleMapsProps",
196
+ kind: "interface",
197
+ code: "interface ScriptGoogleMapsProps {\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n /**\n * Is Google Maps being rendered above the fold?\n * This will load the placeholder image with higher priority.\n */\n aboveTheFold?: boolean\n /**\n * Defines the Google Maps API key. Must have access to the Static Maps API as well.\n */\n apiKey?: string\n /**\n * A latitude / longitude of where to focus the map.\n */\n center?: google.maps.LatLng | google.maps.LatLngLiteral | `${string},${string}`\n /**\n * Should a marker be displayed on the map where the centre is.\n */\n centerMarker?: boolean\n /**\n * Options for the map.\n */\n mapOptions?: google.maps.MapOptions\n /**\n * Defines the region of the map.\n */\n region?: string\n /**\n * Defines the language of the map\n */\n language?: string\n /**\n * Defines the version of google maps js API\n */\n version?: string\n /**\n * Defines the width of the map.\n */\n width?: number | string\n /**\n * Defines the height of the map\n */\n height?: number | string\n /**\n * Customize the placeholder image attributes.\n *\n * @see https://developers.google.com/maps/documentation/maps-static/start.\n */\n placeholderOptions?: PlaceholderOptions\n /**\n * Customize the placeholder image attributes.\n */\n placeholderAttrs?: ImgHTMLAttributes & ReservedProps & Record<string, unknown>\n /**\n * Customize the root element attributes.\n */\n rootAttrs?: HTMLAttributes & ReservedProps & Record<string, unknown>\n /**\n * Extra Markers to add to the map.\n */\n markers?: (`${string},${string}` | google.maps.marker.AdvancedMarkerElementOptions)[]\n /**\n * Map IDs for light and dark color modes.\n * When provided, the map will automatically switch styles based on color mode.\n * Requires @nuxtjs/color-mode or manual colorMode prop.\n */\n mapIds?: { light?: string, dark?: string }\n /**\n * Manual color mode control. When provided, overrides auto-detection from @nuxtjs/color-mode.\n * Accepts 'light', 'dark', or a reactive ref.\n */\n colorMode?: 'light' | 'dark'\n}"
198
+ },
199
+ {
200
+ name: "ScriptGoogleMapsDefaults",
201
+ kind: "const",
202
+ code: "const ScriptGoogleMapsDefaults = {\n \"trigger\": \"['mouseenter', 'mouseover', 'mousedown']\",\n \"width\": \"640\",\n \"height\": \"400\",\n \"centerMarker\": \"true\"\n}"
203
+ },
204
+ {
205
+ name: "ScriptGoogleMapsAdvancedMarkerElementProps",
206
+ kind: "interface",
207
+ code: "interface ScriptGoogleMapsAdvancedMarkerElementProps {\n options?: Omit<google.maps.marker.AdvancedMarkerElementOptions, 'map'>\n}"
208
+ },
209
+ {
210
+ name: "ScriptGoogleMapsCircleProps",
211
+ kind: "interface",
212
+ code: "interface ScriptGoogleMapsCircleProps {\n options?: Omit<google.maps.CircleOptions, 'map'>\n}"
213
+ },
214
+ {
215
+ name: "ScriptGoogleMapsHeatmapLayerProps",
216
+ kind: "interface",
217
+ code: "interface ScriptGoogleMapsHeatmapLayerProps {\n options?: Omit<google.maps.visualization.HeatmapLayerOptions, 'map'>\n}"
218
+ },
219
+ {
220
+ name: "ScriptGoogleMapsInfoWindowProps",
221
+ kind: "interface",
222
+ code: "interface ScriptGoogleMapsInfoWindowProps {\n options?: google.maps.InfoWindowOptions\n}"
223
+ },
224
+ {
225
+ name: "ScriptGoogleMapsMarkerProps",
226
+ kind: "interface",
227
+ code: "interface ScriptGoogleMapsMarkerProps {\n options?: Omit<google.maps.MarkerOptions, 'map'>\n}"
228
+ },
229
+ {
230
+ name: "ScriptGoogleMapsMarkerClustererProps",
231
+ kind: "interface",
232
+ code: "interface ScriptGoogleMapsMarkerClustererProps {\n options?: Omit<MarkerClustererOptions, 'map'>\n}"
233
+ },
234
+ {
235
+ name: "ScriptGoogleMapsPinElementProps",
236
+ kind: "interface",
237
+ code: "interface ScriptGoogleMapsPinElementProps {\n options?: Omit<google.maps.marker.PinElementOptions, 'map'>\n}"
238
+ },
239
+ {
240
+ name: "ScriptGoogleMapsPolygonProps",
241
+ kind: "interface",
242
+ code: "interface ScriptGoogleMapsPolygonProps {\n options?: Omit<google.maps.PolygonOptions, 'map'>\n}"
243
+ },
244
+ {
245
+ name: "ScriptGoogleMapsPolylineProps",
246
+ kind: "interface",
247
+ code: "interface ScriptGoogleMapsPolylineProps {\n options?: Omit<google.maps.PolylineOptions, 'map'>\n}"
248
+ },
249
+ {
250
+ name: "ScriptGoogleMapsRectangleProps",
251
+ kind: "interface",
252
+ code: "interface ScriptGoogleMapsRectangleProps {\n options?: Omit<google.maps.RectangleOptions, 'map'>\n}"
253
+ }
254
+ ],
402
255
  "google-recaptcha": [
403
- {
404
- name: "GoogleRecaptchaOptions",
405
- kind: "const",
406
- code: "export const GoogleRecaptchaOptions = object({\n /**\n * Your reCAPTCHA site key.\n * @see https://developers.google.com/recaptcha/docs/display#render_param\n */\n siteKey: string(),\n /**\n * Use the Enterprise version of reCAPTCHA (enterprise.js instead of api.js).\n * @see https://cloud.google.com/recaptcha-enterprise/docs/introduction\n */\n enterprise: optional(boolean()),\n /**\n * Use recaptcha.net instead of google.com domain. Useful for regions where google.com is blocked.\n */\n recaptchaNet: optional(boolean()),\n /**\n * Language code for the reCAPTCHA widget.\n * @see https://developers.google.com/recaptcha/docs/language\n */\n hl: optional(string()),\n})"
407
- },
408
- {
409
- name: "GoogleRecaptchaApi",
410
- kind: "interface",
411
- code: "export interface GoogleRecaptchaApi {\n grecaptcha: {\n ready: (callback: () => void) => void\n execute: (siteKey: string, options: { action: string }) => Promise<string>\n enterprise?: {\n ready: (callback: () => void) => void\n execute: (siteKey: string, options: { action: string }) => Promise<string>\n }\n }\n}"
412
- }
413
- ],
256
+ {
257
+ name: "GoogleRecaptchaOptions",
258
+ kind: "const",
259
+ code: "export const GoogleRecaptchaOptions = object({\n /**\n * Your reCAPTCHA site key.\n * @see https://developers.google.com/recaptcha/docs/display#render_param\n */\n siteKey: string(),\n /**\n * Use the Enterprise version of reCAPTCHA (enterprise.js instead of api.js).\n * @see https://cloud.google.com/recaptcha-enterprise/docs/introduction\n */\n enterprise: optional(boolean()),\n /**\n * Use recaptcha.net instead of google.com domain. Useful for regions where google.com is blocked.\n */\n recaptchaNet: optional(boolean()),\n /**\n * Language code for the reCAPTCHA widget.\n * @see https://developers.google.com/recaptcha/docs/language\n */\n hl: optional(string()),\n})"
260
+ },
261
+ {
262
+ name: "GoogleRecaptchaApi",
263
+ kind: "interface",
264
+ code: "export interface GoogleRecaptchaApi {\n grecaptcha: {\n ready: (callback: () => void) => void\n execute: (siteKey: string, options: { action: string }) => Promise<string>\n enterprise?: {\n ready: (callback: () => void) => void\n execute: (siteKey: string, options: { action: string }) => Promise<string>\n }\n }\n}"
265
+ }
266
+ ],
414
267
  "google-sign-in": [
415
- {
416
- name: "CredentialResponse",
417
- kind: "interface",
418
- code: "export interface CredentialResponse {\n credential: string // JWT token\n select_by: 'auto' | 'user' | 'user_1tap' | 'user_2tap' | 'btn' | 'btn_confirm' | 'btn_add_session' | 'btn_confirm_add_session'\n clientId?: string\n}"
419
- },
420
- {
421
- name: "IdConfiguration",
422
- kind: "interface",
423
- code: "export interface IdConfiguration {\n client_id: string\n auto_select?: boolean\n callback?: (response: CredentialResponse) => void\n login_uri?: string\n native_callback?: (response: CredentialResponse) => void\n cancel_on_tap_outside?: boolean\n prompt_parent_id?: string\n nonce?: string\n context?: 'signin' | 'signup' | 'use'\n state_cookie_domain?: string\n ux_mode?: 'popup' | 'redirect'\n allowed_parent_origin?: string | string[]\n intermediate_iframe_close_callback?: () => void\n itp_support?: boolean\n login_hint?: string\n hd?: string\n use_fedcm_for_prompt?: boolean\n}"
424
- },
425
- {
426
- name: "GsiButtonConfiguration",
427
- kind: "interface",
428
- code: "export interface GsiButtonConfiguration {\n type?: 'standard' | 'icon'\n theme?: 'outline' | 'filled_blue' | 'filled_black'\n size?: 'large' | 'medium' | 'small'\n text?: 'signin_with' | 'signup_with' | 'continue_with' | 'signin'\n shape?: 'rectangular' | 'pill' | 'circle' | 'square'\n logo_alignment?: 'left' | 'center'\n width?: string | number\n locale?: string\n click_listener?: () => void\n // FedCM support for button flow (mandatory from August 2025)\n use_fedcm?: boolean\n}"
429
- },
430
- {
431
- name: "MomentType",
432
- kind: "type",
433
- code: "export type MomentType\n = | 'display'\n | 'skipped'\n | 'dismissed'"
434
- },
435
- {
436
- name: "MomentNotification",
437
- kind: "interface",
438
- code: "export interface MomentNotification {\n isDisplayMoment: () => boolean\n isDisplayed: () => boolean\n isNotDisplayed: () => boolean\n getNotDisplayedReason: () =>\n | 'browser_not_supported'\n | 'invalid_client'\n | 'missing_client_id'\n | 'opt_out_or_no_session'\n | 'secure_http_required'\n | 'suppressed_by_user'\n | 'unregistered_origin'\n | 'unknown_reason'\n isSkippedMoment: () => boolean\n getSkippedReason: () =>\n | 'auto_cancel'\n | 'user_cancel'\n | 'tap_outside'\n | 'issuing_failed'\n isDismissedMoment: () => boolean\n getDismissedReason: () =>\n | 'credential_returned'\n | 'cancel_called'\n | 'flow_restarted'\n getMomentType: () => MomentType\n}"
439
- },
440
- {
441
- name: "RevocationResponse",
442
- kind: "interface",
443
- code: "export interface RevocationResponse {\n successful: boolean\n error?: string\n}"
444
- },
445
- {
446
- name: "AccountsNamespace",
447
- kind: "type",
448
- code: "type AccountsNamespace = typeof google.accounts"
449
- },
450
- {
451
- name: "GoogleSignInApi",
452
- kind: "interface",
453
- code: "export interface GoogleSignInApi {\n accounts: AccountsNamespace\n}"
454
- },
455
- {
456
- name: "GoogleSignInOptions",
457
- kind: "const",
458
- code: "export const GoogleSignInOptions = object({\n /**\n * Your Google API client ID.\n * @example 'XXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com'\n * @see https://developers.google.com/identity/gsi/web/guides/get-google-api-clientid\n */\n clientId: string(),\n /**\n * Auto-select credentials when only one Google account is available.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#auto_select\n */\n autoSelect: optional(boolean()),\n /**\n * The context text for the One Tap prompt.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#context\n */\n context: optional(union([literal('signin'), literal('signup'), literal('use')])),\n /**\n * Enable FedCM (Federated Credential Management) API support. Mandatory from August 2025.\n * @see https://developers.google.com/identity/gsi/web/guides/fedcm-migration\n */\n useFedcmForPrompt: optional(boolean()),\n /**\n * Cancel the One Tap prompt if the user clicks outside.\n * @default true\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#cancel_on_tap_outside\n */\n cancelOnTapOutside: optional(boolean()),\n /**\n * The UX mode for the sign-in flow.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#ux_mode\n */\n uxMode: optional(union([literal('popup'), literal('redirect')])),\n /**\n * The URI to redirect to after sign-in when using redirect UX mode.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#login_uri\n */\n loginUri: optional(string()),\n /**\n * Enable Intelligent Tracking Prevention (ITP) support for Safari.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#itp_support\n */\n itpSupport: optional(boolean()),\n /**\n * Allowed parent origin(s) for iframe embedding.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#allowed_parent_origin\n */\n allowedParentOrigin: optional(union([string(), array(string())])),\n /**\n * Restrict sign-in to a specific Google Workspace hosted domain.\n * @example 'example.com'\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#hd\n */\n hd: optional(string()),\n})"
459
- }
460
- ],
268
+ {
269
+ name: "CredentialResponse",
270
+ kind: "interface",
271
+ code: "export interface CredentialResponse {\n credential: string // JWT token\n select_by: 'auto' | 'user' | 'user_1tap' | 'user_2tap' | 'btn' | 'btn_confirm' | 'btn_add_session' | 'btn_confirm_add_session'\n clientId?: string\n}"
272
+ },
273
+ {
274
+ name: "IdConfiguration",
275
+ kind: "interface",
276
+ code: "export interface IdConfiguration {\n client_id: string\n auto_select?: boolean\n callback?: (response: CredentialResponse) => void\n login_uri?: string\n native_callback?: (response: CredentialResponse) => void\n cancel_on_tap_outside?: boolean\n prompt_parent_id?: string\n nonce?: string\n context?: 'signin' | 'signup' | 'use'\n state_cookie_domain?: string\n ux_mode?: 'popup' | 'redirect'\n allowed_parent_origin?: string | string[]\n intermediate_iframe_close_callback?: () => void\n itp_support?: boolean\n login_hint?: string\n hd?: string\n use_fedcm_for_prompt?: boolean\n}"
277
+ },
278
+ {
279
+ name: "GsiButtonConfiguration",
280
+ kind: "interface",
281
+ code: "export interface GsiButtonConfiguration {\n type?: 'standard' | 'icon'\n theme?: 'outline' | 'filled_blue' | 'filled_black'\n size?: 'large' | 'medium' | 'small'\n text?: 'signin_with' | 'signup_with' | 'continue_with' | 'signin'\n shape?: 'rectangular' | 'pill' | 'circle' | 'square'\n logo_alignment?: 'left' | 'center'\n width?: string | number\n locale?: string\n click_listener?: () => void\n // FedCM support for button flow (mandatory from August 2025)\n use_fedcm?: boolean\n}"
282
+ },
283
+ {
284
+ name: "MomentType",
285
+ kind: "type",
286
+ code: "export type MomentType\n = | 'display'\n | 'skipped'\n | 'dismissed'"
287
+ },
288
+ {
289
+ name: "MomentNotification",
290
+ kind: "interface",
291
+ code: "export interface MomentNotification {\n isDisplayMoment: () => boolean\n isDisplayed: () => boolean\n isNotDisplayed: () => boolean\n getNotDisplayedReason: () =>\n | 'browser_not_supported'\n | 'invalid_client'\n | 'missing_client_id'\n | 'opt_out_or_no_session'\n | 'secure_http_required'\n | 'suppressed_by_user'\n | 'unregistered_origin'\n | 'unknown_reason'\n isSkippedMoment: () => boolean\n getSkippedReason: () =>\n | 'auto_cancel'\n | 'user_cancel'\n | 'tap_outside'\n | 'issuing_failed'\n isDismissedMoment: () => boolean\n getDismissedReason: () =>\n | 'credential_returned'\n | 'cancel_called'\n | 'flow_restarted'\n getMomentType: () => MomentType\n}"
292
+ },
293
+ {
294
+ name: "RevocationResponse",
295
+ kind: "interface",
296
+ code: "export interface RevocationResponse {\n successful: boolean\n error?: string\n}"
297
+ },
298
+ {
299
+ name: "AccountsNamespace",
300
+ kind: "type",
301
+ code: "type AccountsNamespace = typeof google.accounts"
302
+ },
303
+ {
304
+ name: "GoogleSignInApi",
305
+ kind: "interface",
306
+ code: "export interface GoogleSignInApi {\n accounts: AccountsNamespace\n}"
307
+ },
308
+ {
309
+ name: "GoogleSignInOptions",
310
+ kind: "const",
311
+ code: "export const GoogleSignInOptions = object({\n /**\n * Your Google API client ID.\n * @example 'XXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com'\n * @see https://developers.google.com/identity/gsi/web/guides/get-google-api-clientid\n */\n clientId: string(),\n /**\n * Auto-select credentials when only one Google account is available.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#auto_select\n */\n autoSelect: optional(boolean()),\n /**\n * The context text for the One Tap prompt.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#context\n */\n context: optional(union([literal('signin'), literal('signup'), literal('use')])),\n /**\n * Enable FedCM (Federated Credential Management) API support. Mandatory from August 2025.\n * @see https://developers.google.com/identity/gsi/web/guides/fedcm-migration\n */\n useFedcmForPrompt: optional(boolean()),\n /**\n * Cancel the One Tap prompt if the user clicks outside.\n * @default true\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#cancel_on_tap_outside\n */\n cancelOnTapOutside: optional(boolean()),\n /**\n * The UX mode for the sign-in flow.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#ux_mode\n */\n uxMode: optional(union([literal('popup'), literal('redirect')])),\n /**\n * The URI to redirect to after sign-in when using redirect UX mode.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#login_uri\n */\n loginUri: optional(string()),\n /**\n * Enable Intelligent Tracking Prevention (ITP) support for Safari.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#itp_support\n */\n itpSupport: optional(boolean()),\n /**\n * Allowed parent origin(s) for iframe embedding.\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#allowed_parent_origin\n */\n allowedParentOrigin: optional(union([string(), array(string())])),\n /**\n * Restrict sign-in to a specific Google Workspace hosted domain.\n * @example 'example.com'\n * @see https://developers.google.com/identity/gsi/web/reference/js-reference#hd\n */\n hd: optional(string()),\n})"
312
+ }
313
+ ],
461
314
  "google-tag-manager": [
462
- {
463
- name: "DataLayerItem",
464
- kind: "type",
465
- code: "export type DataLayerItem = Parameters<GTag> | Record<string, unknown>"
466
- },
467
- {
468
- name: "DataLayer",
469
- kind: "type",
470
- code: "export type DataLayer = Array<DataLayerItem>"
471
- },
472
- {
473
- name: "DataLayerPush",
474
- kind: "interface",
475
- code: "export interface DataLayerPush {\n (...args: Parameters<GTag>): void\n (obj: Record<string, unknown> | any[]): void\n}"
476
- },
477
- {
478
- name: "GoogleTagManagerDataLayerApi",
479
- kind: "interface",
480
- code: "export interface GoogleTagManagerDataLayerApi {\n name: string\n push: DataLayerPush\n set: (config: Record<string, unknown>) => void\n get: <T = unknown>(key: string) => T\n reset: () => void\n listeners: Array<() => void>\n}"
481
- },
482
- {
483
- name: "GoogleTagManagerDataLayerStatus",
484
- kind: "interface",
485
- code: "export interface GoogleTagManagerDataLayerStatus {\n dataLayer: {\n gtmDom: boolean\n gtmLoad: boolean\n subscribers: number\n [key: string]: unknown\n }\n}"
486
- },
487
- {
488
- name: "GoogleTagManagerContainer",
489
- kind: "interface",
490
- code: "export interface GoogleTagManagerContainer {\n callback: () => void\n dataLayer: GoogleTagManagerDataLayerApi\n state: Record<string, unknown>\n}"
491
- },
492
- {
493
- name: "GoogleTagManagerInstance",
494
- kind: "interface",
495
- code: "export interface GoogleTagManagerInstance extends GoogleTagManagerDataLayerStatus {\n [containerId: string]: GoogleTagManagerContainer | any\n}"
496
- },
497
- {
498
- name: "GoogleTagManagerApi",
499
- kind: "interface",
500
- code: "export interface GoogleTagManagerApi {\n google_tag_manager: GoogleTagManagerInstance\n dataLayer: DataLayer & {\n push: DataLayerPush\n }\n}"
501
- },
502
- {
503
- name: "GoogleTagManagerOptions",
504
- kind: "const",
505
- code: "export const GoogleTagManagerOptions = object({\n /**\n * GTM container ID (format: GTM-XXXXXX)\n * @see https://developers.google.com/tag-platform/tag-manager/web#install-the-container\n */\n id: string(),\n\n /**\n * Optional dataLayer variable name\n * @default 'dataLayer'\n * @see https://developers.google.com/tag-platform/tag-manager/web/datalayer#rename_the_data_layer\n */\n l: optional(string()),\n\n /**\n * Authentication token for environment-specific container versions\n * @see https://support.google.com/tagmanager/answer/6328337\n */\n auth: optional(string()),\n\n /**\n * Preview environment name\n * @see https://support.google.com/tagmanager/answer/6328337\n */\n preview: optional(string()),\n\n /** Forces GTM cookies to take precedence when true */\n cookiesWin: optional(union([boolean(), literal('x')])),\n\n /**\n * Enables debug mode when true\n * @see https://support.google.com/tagmanager/answer/6107056\n */\n debug: optional(union([boolean(), literal('x')])),\n\n /**\n * No Personal Advertising - disables advertising features when true\n * @see https://developers.google.com/tag-platform/tag-manager/templates/consent-apis\n */\n npa: optional(union([boolean(), literal('1')])),\n\n /** Custom dataLayer name (alternative to \"l\" property) */\n dataLayer: optional(string()),\n\n /**\n * Environment name for environment-specific container\n * @see https://support.google.com/tagmanager/answer/6328337\n */\n envName: optional(string()),\n\n /** Referrer policy for analytics requests */\n authReferrerPolicy: optional(string()),\n\n /**\n * Default consent settings for GTM\n * @see https://developers.google.com/tag-platform/tag-manager/templates/consent-apis\n */\n defaultConsent: optional(record(string(), union([string(), number()]))),\n})"
506
- }
507
- ],
508
- gravatar: gravatar,
509
- hotjar: hotjar,
315
+ {
316
+ name: "DataLayerItem",
317
+ kind: "type",
318
+ code: "export type DataLayerItem = Parameters<GTag> | Record<string, unknown>"
319
+ },
320
+ {
321
+ name: "DataLayer",
322
+ kind: "type",
323
+ code: "export type DataLayer = Array<DataLayerItem>"
324
+ },
325
+ {
326
+ name: "DataLayerPush",
327
+ kind: "interface",
328
+ code: "export interface DataLayerPush {\n (...args: Parameters<GTag>): void\n (obj: Record<string, unknown> | any[]): void\n}"
329
+ },
330
+ {
331
+ name: "GoogleTagManagerDataLayerApi",
332
+ kind: "interface",
333
+ code: "export interface GoogleTagManagerDataLayerApi {\n name: string\n push: DataLayerPush\n set: (config: Record<string, unknown>) => void\n get: <T = unknown>(key: string) => T\n reset: () => void\n listeners: Array<() => void>\n}"
334
+ },
335
+ {
336
+ name: "GoogleTagManagerDataLayerStatus",
337
+ kind: "interface",
338
+ code: "export interface GoogleTagManagerDataLayerStatus {\n dataLayer: {\n gtmDom: boolean\n gtmLoad: boolean\n subscribers: number\n [key: string]: unknown\n }\n}"
339
+ },
340
+ {
341
+ name: "GoogleTagManagerContainer",
342
+ kind: "interface",
343
+ code: "export interface GoogleTagManagerContainer {\n callback: () => void\n dataLayer: GoogleTagManagerDataLayerApi\n state: Record<string, unknown>\n}"
344
+ },
345
+ {
346
+ name: "GoogleTagManagerInstance",
347
+ kind: "interface",
348
+ code: "export interface GoogleTagManagerInstance extends GoogleTagManagerDataLayerStatus {\n [containerId: string]: GoogleTagManagerContainer | any\n}"
349
+ },
350
+ {
351
+ name: "GoogleTagManagerApi",
352
+ kind: "interface",
353
+ code: "export interface GoogleTagManagerApi {\n google_tag_manager: GoogleTagManagerInstance\n dataLayer: DataLayer & {\n push: DataLayerPush\n }\n}"
354
+ },
355
+ {
356
+ name: "GoogleTagManagerOptions",
357
+ kind: "const",
358
+ code: "export const GoogleTagManagerOptions = object({\n /**\n * GTM container ID (format: GTM-XXXXXX)\n * @see https://developers.google.com/tag-platform/tag-manager/web#install-the-container\n */\n id: string(),\n\n /**\n * Optional dataLayer variable name\n * @default 'dataLayer'\n * @see https://developers.google.com/tag-platform/tag-manager/web/datalayer#rename_the_data_layer\n */\n l: optional(string()),\n\n /**\n * Authentication token for environment-specific container versions\n * @see https://support.google.com/tagmanager/answer/6328337\n */\n auth: optional(string()),\n\n /**\n * Preview environment name\n * @see https://support.google.com/tagmanager/answer/6328337\n */\n preview: optional(string()),\n\n /** Forces GTM cookies to take precedence when true */\n cookiesWin: optional(union([boolean(), literal('x')])),\n\n /**\n * Enables debug mode when true\n * @see https://support.google.com/tagmanager/answer/6107056\n */\n debug: optional(union([boolean(), literal('x')])),\n\n /**\n * No Personal Advertising - disables advertising features when true\n * @see https://developers.google.com/tag-platform/tag-manager/templates/consent-apis\n */\n npa: optional(union([boolean(), literal('1')])),\n\n /** Custom dataLayer name (alternative to \"l\" property) */\n dataLayer: optional(string()),\n\n /**\n * Environment name for environment-specific container\n * @see https://support.google.com/tagmanager/answer/6328337\n */\n envName: optional(string()),\n\n /** Referrer policy for analytics requests */\n authReferrerPolicy: optional(string()),\n\n /**\n * Default consent settings for GTM\n * @see https://developers.google.com/tag-platform/tag-manager/templates/consent-apis\n */\n defaultConsent: optional(record(string(), union([string(), number()]))),\n})"
359
+ }
360
+ ],
361
+ gravatar: [
362
+ {
363
+ name: "GravatarApi",
364
+ kind: "interface",
365
+ code: "export interface GravatarApi {\n /**\n * Get a proxied avatar URL for a given SHA256 email hash.\n * When firstParty mode is enabled, this routes through your server.\n */\n getAvatarUrl: (hash: string, options?: { size?: number, default?: string, rating?: string }) => string\n /**\n * Get a proxied avatar URL using the server-side hashing endpoint.\n * The email is sent to YOUR server (not Gravatar) for hashing.\n * Only available when the gravatar proxy is enabled.\n */\n getAvatarUrlFromEmail: (email: string, options?: { size?: number, default?: string, rating?: string }) => string\n}"
366
+ }
367
+ ],
368
+ hotjar: [
369
+ {
370
+ name: "HotjarOptions",
371
+ kind: "const",
372
+ code: "export const HotjarOptions = object({\n /**\n * Your Hotjar Site ID.\n * @see https://help.hotjar.com/hc/en-us/articles/115012039247-Hotjar-Tracking-Code\n */\n id: number(),\n /**\n * The Hotjar snippet version.\n * @default 6\n */\n sv: optional(number()),\n})"
373
+ },
374
+ {
375
+ name: "HotjarApi",
376
+ kind: "interface",
377
+ code: "export interface HotjarApi {\n hj: ((event: 'identify', userId: string, attributes?: Record<string, any>) => void) & ((event: 'stateChange', path: string) => void) & ((event: 'vPageView', path: string) => void) & ((event: 'event', eventName: string) => void) & ((event: (string & {}), ...args: any[]) => void) & {\n q: any[]\n }\n}"
378
+ }
379
+ ],
510
380
  "instagram-embed": [
511
- {
512
- name: "InstagramEmbedOptions",
513
- kind: "const",
514
- code: "export const InstagramEmbedOptions = object({\n /**\n * The Instagram post URL to embed.\n * @example 'https://www.instagram.com/p/C_XXXXXXXXX/'\n * @see https://developers.facebook.com/docs/instagram/oembed/\n */\n postUrl: string(),\n /**\n * Whether to include captions in the embed.\n * @default true\n */\n captions: optional(boolean()),\n /**\n * Custom API endpoint for fetching embed HTML.\n * @default '/_scripts/embed/instagram'\n */\n apiEndpoint: optional(string()),\n})"
515
- },
516
- {
517
- name: "ScriptInstagramEmbedProps",
518
- kind: "interface",
519
- code: "interface ScriptInstagramEmbedProps {\n /**\n * The Instagram post URL to embed\n * e.g., https://www.instagram.com/p/ABC123/\n */\n postUrl: string\n /**\n * Whether to include captions in the embed\n * @default true\n */\n captions?: boolean\n /**\n * Custom API endpoint for fetching embed HTML\n * @default '/_scripts/embed/instagram'\n */\n apiEndpoint?: string\n /**\n * Root element attributes\n */\n rootAttrs?: HTMLAttributes\n}"
520
- },
521
- {
522
- name: "ScriptInstagramEmbedDefaults",
523
- kind: "const",
524
- code: "const ScriptInstagramEmbedDefaults = {\n \"captions\": \"true\",\n \"apiEndpoint\": \"'/_scripts/embed/instagram'\"\n}"
525
- }
526
- ],
527
- intercom: intercom,
381
+ {
382
+ name: "InstagramEmbedOptions",
383
+ kind: "const",
384
+ code: "export const InstagramEmbedOptions = object({\n /**\n * The Instagram post URL to embed.\n * @example 'https://www.instagram.com/p/C_XXXXXXXXX/'\n * @see https://developers.facebook.com/docs/instagram/oembed/\n */\n postUrl: string(),\n /**\n * Whether to include captions in the embed.\n * @default true\n */\n captions: optional(boolean()),\n /**\n * Custom API endpoint for fetching embed HTML.\n * @default '/_scripts/embed/instagram'\n */\n apiEndpoint: optional(string()),\n})"
385
+ },
386
+ {
387
+ name: "ScriptInstagramEmbedProps",
388
+ kind: "interface",
389
+ code: "interface ScriptInstagramEmbedProps {\n /**\n * The Instagram post URL to embed\n * e.g., https://www.instagram.com/p/ABC123/\n */\n postUrl: string\n /**\n * Whether to include captions in the embed\n * @default true\n */\n captions?: boolean\n /**\n * Custom API endpoint for fetching embed HTML\n * @default '/_scripts/embed/instagram'\n */\n apiEndpoint?: string\n /**\n * Root element attributes\n */\n rootAttrs?: HTMLAttributes\n}"
390
+ },
391
+ {
392
+ name: "ScriptInstagramEmbedDefaults",
393
+ kind: "const",
394
+ code: "const ScriptInstagramEmbedDefaults = {\n \"captions\": \"true\",\n \"apiEndpoint\": \"'/_scripts/embed/instagram'\"\n}"
395
+ }
396
+ ],
397
+ intercom: [
398
+ {
399
+ name: "IntercomOptions",
400
+ kind: "const",
401
+ code: "export const IntercomOptions = object({\n /**\n * Your Intercom app ID.\n * @see https://developers.intercom.com/installing-intercom/docs/javascript-api-attributes-objects\n */\n app_id: string(),\n /**\n * The regional API base URL. Choose based on your Intercom data hosting region.\n */\n api_base: optional(union([literal('https://api-iam.intercom.io'), literal('https://api-iam.eu.intercom.io'), literal('https://api-iam.au.intercom.io')])),\n /**\n * The name of the logged-in user.\n */\n name: optional(string()),\n /**\n * The email address of the logged-in user.\n */\n email: optional(string()),\n /**\n * A unique identifier for the logged-in user.\n */\n user_id: optional(string()),\n /**\n * The horizontal alignment of the Intercom messenger launcher.\n * @default 'right'\n */\n alignment: optional(union([literal('left'), literal('right')])),\n /**\n * The horizontal padding (in px) of the messenger launcher from the edge of the page.\n * @default 20\n */\n horizontal_padding: optional(number()),\n /**\n * The vertical padding (in px) of the messenger launcher from the bottom of the page.\n * @default 20\n */\n vertical_padding: optional(number()),\n})"
402
+ },
403
+ {
404
+ name: "IntercomApi",
405
+ kind: "interface",
406
+ code: "export interface IntercomApi {\n Intercom: ((event: 'boot', data?: InferInput<typeof IntercomOptions>) => void)\n & ((event: 'shutdown') => void)\n & ((event: 'update', options?: InferInput<typeof IntercomOptions>) => void)\n & ((event: 'hide') => void)\n & ((event: 'show') => void)\n & ((event: 'showSpace', spaceName: 'home' | 'messages' | 'help' | 'news' | 'tasks' | 'tickets' | (string & {})) => void)\n & ((event: 'showMessages') => void)\n & ((event: 'showNewMessage', content?: string) => void)\n & ((event: 'onHide', fn: () => void) => void)\n & ((event: 'onShow', fn: () => void) => void)\n & ((event: 'onUnreadCountChange', fn: () => void) => void)\n & ((event: 'trackEvent', eventName: string, metadata?: Record<string, any>) => void)\n & ((event: 'getVisitorId') => Promise<string>)\n & ((event: 'startTour', tourId: string | number) => void)\n & ((event: 'showArticle', articleId: string | number) => void)\n & ((event: 'showNews', newsItemId: string | number) => void)\n & ((event: 'startSurvey', surveyId: string | number) => void)\n & ((event: 'startChecklist', checklistId: string | number) => void)\n & ((event: 'showTicket', ticketId: string | number) => void)\n & ((event: 'showConversation', conversationId: string | number) => void)\n & ((event: 'onUserEmailSupplied', fn: () => void) => void)\n & ((event: (string & {}), ...params: any[]) => void)\n}"
407
+ },
408
+ {
409
+ name: "ScriptIntercomProps",
410
+ kind: "interface",
411
+ code: "interface ScriptIntercomProps {\n appId: string\n apiBase?: string\n name?: string\n email?: string\n userId?: string\n // customizing the messenger\n alignment?: 'left' | 'right'\n horizontalPadding?: number\n verticalPadding?: number\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n}"
412
+ },
413
+ {
414
+ name: "ScriptIntercomDefaults",
415
+ kind: "const",
416
+ code: "const ScriptIntercomDefaults = {\n \"trigger\": \"'click'\"\n}"
417
+ }
418
+ ],
528
419
  "lemon-squeezy": [
529
- {
530
- name: "LemonSqueezyEventPayload",
531
- kind: "type",
532
- code: "export type LemonSqueezyEventPayload = { event: 'Checkout.Success', data: Record<string, any> }\n & { event: 'Checkout.ViewCart', data: Record<string, any> }\n & { event: 'GA.ViewCart', data: Record<string, any> }\n & { event: 'PaymentMethodUpdate.Mounted' }\n & { event: 'PaymentMethodUpdate.Closed' }\n & { event: 'PaymentMethodUpdate.Updated' }\n & { event: string }"
533
- },
534
- {
535
- name: "LemonSqueezyApi",
536
- kind: "interface",
537
- code: "export interface LemonSqueezyApi {\n /**\n * Initialises Lemon.js on your page.\n */\n Setup: (options: {\n eventHandler: (event: LemonSqueezyEventPayload) => void\n }) => void\n /**\n * Refreshes `lemonsqueezy-button` listeners on the page.\n */\n Refresh: () => void\n\n Url: {\n /**\n * Opens a given Lemon Squeezy URL, typically these are Checkout or Payment Details Update overlays.\n * @param url - The URL to open.\n */\n Open: (url: string) => void\n\n /**\n * Closes the current opened Lemon Squeezy overlay checkout window.\n */\n Close: () => void\n }\n Affiliate: {\n /**\n * Retrieve the affiliate tracking ID\n */\n GetID: () => string\n\n /**\n * Append the affiliate tracking parameter to the given URL\n * @param url - The URL to append the affiliate tracking parameter to.\n */\n Build: (url: string) => string\n }\n Loader: {\n /**\n * Show the Lemon.js loader.\n */\n Show: () => void\n\n /**\n * Hide the Lemon.js loader.\n */\n Hide: () => void\n }\n}"
538
- },
539
- {
540
- name: "ScriptLemonSqueezyProps",
541
- kind: "interface",
542
- code: "interface ScriptLemonSqueezyProps {\n trigger?: ElementScriptTrigger\n}"
543
- },
544
- {
545
- name: "ScriptLemonSqueezyDefaults",
546
- kind: "const",
547
- code: "const ScriptLemonSqueezyDefaults = {\n \"trigger\": \"'visible'\"\n}"
548
- }
549
- ],
420
+ {
421
+ name: "LemonSqueezyEventPayload",
422
+ kind: "type",
423
+ code: "export type LemonSqueezyEventPayload = { event: 'Checkout.Success', data: Record<string, any> }\n & { event: 'Checkout.ViewCart', data: Record<string, any> }\n & { event: 'GA.ViewCart', data: Record<string, any> }\n & { event: 'PaymentMethodUpdate.Mounted' }\n & { event: 'PaymentMethodUpdate.Closed' }\n & { event: 'PaymentMethodUpdate.Updated' }\n & { event: string }"
424
+ },
425
+ {
426
+ name: "LemonSqueezyApi",
427
+ kind: "interface",
428
+ code: "export interface LemonSqueezyApi {\n /**\n * Initialises Lemon.js on your page.\n */\n Setup: (options: {\n eventHandler: (event: LemonSqueezyEventPayload) => void\n }) => void\n /**\n * Refreshes `lemonsqueezy-button` listeners on the page.\n */\n Refresh: () => void\n\n Url: {\n /**\n * Opens a given Lemon Squeezy URL, typically these are Checkout or Payment Details Update overlays.\n * @param url - The URL to open.\n */\n Open: (url: string) => void\n\n /**\n * Closes the current opened Lemon Squeezy overlay checkout window.\n */\n Close: () => void\n }\n Affiliate: {\n /**\n * Retrieve the affiliate tracking ID\n */\n GetID: () => string\n\n /**\n * Append the affiliate tracking parameter to the given URL\n * @param url - The URL to append the affiliate tracking parameter to.\n */\n Build: (url: string) => string\n }\n Loader: {\n /**\n * Show the Lemon.js loader.\n */\n Show: () => void\n\n /**\n * Hide the Lemon.js loader.\n */\n Hide: () => void\n }\n}"
429
+ },
430
+ {
431
+ name: "ScriptLemonSqueezyProps",
432
+ kind: "interface",
433
+ code: "interface ScriptLemonSqueezyProps {\n trigger?: ElementScriptTrigger\n}"
434
+ },
435
+ {
436
+ name: "ScriptLemonSqueezyDefaults",
437
+ kind: "const",
438
+ code: "const ScriptLemonSqueezyDefaults = {\n \"trigger\": \"'visible'\"\n}"
439
+ }
440
+ ],
550
441
  "matomo-analytics": [
551
- {
552
- name: "MatomoAnalyticsOptions",
553
- kind: "const",
554
- code: "export const MatomoAnalyticsOptions = object({\n /**\n * The URL of your self-hosted Matomo instance.\n * Either `matomoUrl` or `cloudId` is required.\n * @example 'https://matomo.example.com'\n * @see https://developer.matomo.org/guides/tracking-javascript-guide\n */\n matomoUrl: optional(string()),\n /**\n * Your Matomo site ID.\n * @default '1'\n */\n siteId: optional(union([string(), number()])),\n /**\n * Your Matomo Cloud ID (the subdomain portion of your `*.matomo.cloud` URL).\n * Either `matomoUrl` or `cloudId` is required.\n * @example 'mysite.matomo.cloud'\n */\n cloudId: optional(string()),\n /**\n * A custom tracker URL. Overrides the default tracker endpoint derived from `matomoUrl` or `cloudId`.\n */\n trackerUrl: optional(string()),\n /**\n * Whether to track the initial page view on load.\n * @deprecated Use `watch: true` (default) for automatic page view tracking.\n */\n trackPageView: optional(boolean()),\n /**\n * Enable download and outlink tracking.\n */\n enableLinkTracking: optional(boolean()),\n /**\n * Disable all tracking cookies for cookieless analytics.\n */\n disableCookies: optional(boolean()),\n /**\n * Automatically track page views on route change.\n * @default true\n */\n watch: optional(boolean()),\n})"
555
- },
556
- {
557
- name: "MatomoAnalyticsApi",
558
- kind: "interface",
559
- code: "interface MatomoAnalyticsApi {\n _paq: unknown[]\n}"
560
- }
561
- ],
442
+ {
443
+ name: "MatomoAnalyticsOptions",
444
+ kind: "const",
445
+ code: "export const MatomoAnalyticsOptions = object({\n /**\n * The URL of your self-hosted Matomo instance.\n * Either `matomoUrl` or `cloudId` is required.\n * @example 'https://matomo.example.com'\n * @see https://developer.matomo.org/guides/tracking-javascript-guide\n */\n matomoUrl: optional(string()),\n /**\n * Your Matomo site ID.\n * @default '1'\n */\n siteId: optional(union([string(), number()])),\n /**\n * Your Matomo Cloud ID (the subdomain portion of your `*.matomo.cloud` URL).\n * Either `matomoUrl` or `cloudId` is required.\n * @example 'mysite.matomo.cloud'\n */\n cloudId: optional(string()),\n /**\n * A custom tracker URL. Overrides the default tracker endpoint derived from `matomoUrl` or `cloudId`.\n */\n trackerUrl: optional(string()),\n /**\n * Whether to track the initial page view on load.\n * @deprecated Use `watch: true` (default) for automatic page view tracking.\n */\n trackPageView: optional(boolean()),\n /**\n * Enable download and outlink tracking.\n */\n enableLinkTracking: optional(boolean()),\n /**\n * Disable all tracking cookies for cookieless analytics.\n */\n disableCookies: optional(boolean()),\n /**\n * Automatically track page views on route change.\n * @default true\n */\n watch: optional(boolean()),\n})"
446
+ },
447
+ {
448
+ name: "MatomoAnalyticsApi",
449
+ kind: "interface",
450
+ code: "interface MatomoAnalyticsApi {\n _paq: unknown[]\n}"
451
+ }
452
+ ],
562
453
  "meta-pixel": [
563
- {
564
- name: "StandardEvents",
565
- kind: "type",
566
- code: "type StandardEvents = 'AddPaymentInfo' | 'AddToCart' | 'AddToWishlist' | 'CompleteRegistration' | 'Contact' | 'CustomizeProduct' | 'Donate' | 'FindLocation' | 'InitiateCheckout' | 'Lead' | 'Purchase' | 'Schedule' | 'Search' | 'StartTrial' | 'SubmitApplication' | 'Subscribe' | 'ViewContent'"
567
- },
568
- {
569
- name: "EventObjectProperties",
570
- kind: "interface",
571
- code: "interface EventObjectProperties {\n content_category?: string\n content_ids?: string[]\n content_name?: string\n content_type?: string\n contents?: { id: string, quantity: number }[]\n currency?: string\n delivery_category?: 'in_store' | 'curbside' | 'home_delivery'\n num_items?: number\n predicted_ltv?: number\n search_string?: string\n status?: 'completed' | 'updated' | 'viewed' | 'added_to_cart' | 'removed_from_cart' | (string & {})\n value?: number\n [key: string]: any\n}"
572
- },
573
- {
574
- name: "ConsentAction",
575
- kind: "type",
576
- code: "type ConsentAction = 'grant' | 'revoke'"
577
- },
578
- {
579
- name: "FbqArgs",
580
- kind: "type",
581
- code: "type FbqArgs\n = | ['track', StandardEvents, EventObjectProperties?]\n | ['trackCustom', string, EventObjectProperties?]\n | ['trackSingle', string, StandardEvents, EventObjectProperties?]\n | ['trackSingleCustom', string, string, EventObjectProperties?]\n | ['init', string]\n | ['init', number, Record<string, any>?]\n | ['consent', ConsentAction]\n // fallback: allow any fbq call signature not covered above\n | [string, ...any[]]"
582
- },
583
- {
584
- name: "FbqFns",
585
- kind: "type",
586
- code: "type FbqFns = (...args: FbqArgs) => void"
587
- },
588
- {
589
- name: "MetaPixelApi",
590
- kind: "interface",
591
- code: "export interface MetaPixelApi {\n fbq: FbqFns & {\n push: FbqFns\n loaded: boolean\n version: string\n queue: any[]\n }\n _fbq: MetaPixelApi['fbq']\n callMethod?: FbqFns\n}"
592
- },
593
- {
594
- name: "MetaPixelOptions",
595
- kind: "const",
596
- code: "export const MetaPixelOptions = object({\n /**\n * Your Meta (Facebook) Pixel ID.\n * @see https://developers.facebook.com/docs/meta-pixel/get-started\n */\n id: union([string(), number()]),\n})"
597
- }
598
- ],
599
- npm: npm,
600
- paypal: paypal,
454
+ {
455
+ name: "StandardEvents",
456
+ kind: "type",
457
+ code: "type StandardEvents = 'AddPaymentInfo' | 'AddToCart' | 'AddToWishlist' | 'CompleteRegistration' | 'Contact' | 'CustomizeProduct' | 'Donate' | 'FindLocation' | 'InitiateCheckout' | 'Lead' | 'Purchase' | 'Schedule' | 'Search' | 'StartTrial' | 'SubmitApplication' | 'Subscribe' | 'ViewContent'"
458
+ },
459
+ {
460
+ name: "EventObjectProperties",
461
+ kind: "interface",
462
+ code: "interface EventObjectProperties {\n content_category?: string\n content_ids?: string[]\n content_name?: string\n content_type?: string\n contents?: { id: string, quantity: number }[]\n currency?: string\n delivery_category?: 'in_store' | 'curbside' | 'home_delivery'\n num_items?: number\n predicted_ltv?: number\n search_string?: string\n status?: 'completed' | 'updated' | 'viewed' | 'added_to_cart' | 'removed_from_cart' | (string & {})\n value?: number\n [key: string]: any\n}"
463
+ },
464
+ {
465
+ name: "ConsentAction",
466
+ kind: "type",
467
+ code: "type ConsentAction = 'grant' | 'revoke'"
468
+ },
469
+ {
470
+ name: "FbqArgs",
471
+ kind: "type",
472
+ code: "type FbqArgs\n = | ['track', StandardEvents, EventObjectProperties?]\n | ['trackCustom', string, EventObjectProperties?]\n | ['trackSingle', string, StandardEvents, EventObjectProperties?]\n | ['trackSingleCustom', string, string, EventObjectProperties?]\n | ['init', string]\n | ['init', number, Record<string, any>?]\n | ['consent', ConsentAction]\n // fallback: allow any fbq call signature not covered above\n | [string, ...any[]]"
473
+ },
474
+ {
475
+ name: "FbqFns",
476
+ kind: "type",
477
+ code: "type FbqFns = (...args: FbqArgs) => void"
478
+ },
479
+ {
480
+ name: "MetaPixelApi",
481
+ kind: "interface",
482
+ code: "export interface MetaPixelApi {\n fbq: FbqFns & {\n push: FbqFns\n loaded: boolean\n version: string\n queue: any[]\n }\n _fbq: MetaPixelApi['fbq']\n callMethod?: FbqFns\n}"
483
+ },
484
+ {
485
+ name: "MetaPixelOptions",
486
+ kind: "const",
487
+ code: "export const MetaPixelOptions = object({\n /**\n * Your Meta (Facebook) Pixel ID.\n * @see https://developers.facebook.com/docs/meta-pixel/get-started\n */\n id: union([string(), number()]),\n})"
488
+ }
489
+ ],
490
+ npm: [
491
+ {
492
+ name: "NpmOptions",
493
+ kind: "const",
494
+ code: "export const NpmOptions = object({\n /**\n * The npm package name to load.\n * @example 'lodash'\n */\n packageName: string(),\n /**\n * The specific file path within the package to load.\n * @example '/dist/lodash.min.js'\n */\n file: optional(string()),\n /**\n * The package version to load.\n * @default 'latest'\n */\n version: optional(string()),\n /**\n * The CDN provider to use for loading the package.\n * @default 'unpkg'\n * @see https://unpkg.com\n * @see https://www.jsdelivr.com\n * @see https://cdnjs.com\n */\n provider: optional(union([literal('jsdelivr'), literal('cdnjs'), literal('unpkg')])),\n})"
495
+ },
496
+ {
497
+ name: "Provider",
498
+ kind: "type",
499
+ code: "type Provider = 'jsdelivr' | 'cdnjs' | 'unpkg'"
500
+ }
501
+ ],
502
+ paypal: [
503
+ {
504
+ name: "PayPalOptions",
505
+ kind: "const",
506
+ code: "export const PayPalOptions = union([\n object({\n /**\n * Your PayPal client ID.\n * @see https://developer.paypal.com/sdk/js/reference/\n */\n clientId: string(),\n clientToken: optional(string()),\n /**\n * Use the PayPal sandbox environment. Defaults to `true` in development.\n */\n sandbox: optional(boolean()),\n }),\n object({\n clientId: optional(string()),\n /**\n * A server-generated client token for authentication.\n * @see https://docs.paypal.ai/payments/methods/paypal/sdk/js/v6/paypal-checkout\n */\n clientToken: string(),\n /**\n * Use the PayPal sandbox environment. Defaults to `true` in development.\n */\n sandbox: optional(boolean()),\n }),\n])"
507
+ },
508
+ {
509
+ name: "PayPalApi",
510
+ kind: "interface",
511
+ code: "export interface PayPalApi {\n paypal: PayPalV6Namespace\n}"
512
+ },
513
+ {
514
+ name: "ScriptPayPalButtonsProps",
515
+ kind: "interface",
516
+ code: "interface ScriptPayPalButtonsProps {\n /**\n * Customize the root element attributes.\n */\n rootAttrs?: HTMLAttributes & ReservedProps & Record<string, unknown>\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n /**\n * Client ID or client token for PayPal SDK v6 authentication.\n */\n clientId?: string\n /**\n * Server-generated client token for SDK v6.\n */\n clientToken?: string\n /**\n * The v6 SDK components to load.\n * @default ['paypal-payments']\n */\n components?: Components[]\n /**\n * The page type context hint.\n */\n pageType?: PageTypes\n /**\n * The locale for the SDK (BCP-47 code).\n */\n locale?: string\n /**\n * The merchant ID(s).\n */\n merchantId?: string | string[]\n /**\n * Partner attribution ID for revenue sharing.\n */\n partnerAttributionId?: string\n /**\n * The paypal script options.\n */\n paypalScriptOptions?: Partial<PayPalInput>\n}"
517
+ },
518
+ {
519
+ name: "ScriptPayPalButtonsDefaults",
520
+ kind: "const",
521
+ code: "const ScriptPayPalButtonsDefaults = {\n \"trigger\": \"'visible'\",\n \"clientId\": \"'test'\",\n \"components\": \"() => ['paypal-payments'] as Components[]\",\n \"paypalScriptOptions\": \"() => ({})\"\n}"
522
+ },
523
+ {
524
+ name: "ScriptPayPalMessagesProps",
525
+ kind: "interface",
526
+ code: "interface ScriptPayPalMessagesProps {\n /**\n * Customize the root element attributes.\n */\n rootAttrs?: HTMLAttributes & ReservedProps & Record<string, unknown>\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n /**\n * Client ID or client token for PayPal SDK v6 authentication.\n */\n clientId?: string\n /**\n * Server-generated client token for SDK v6.\n */\n clientToken?: string\n /**\n * The merchant ID for the paypal script.\n */\n merchantId?: string | string[]\n /**\n * The partner attribution ID.\n */\n partnerAttributionId?: string\n /**\n * The page type context hint.\n */\n pageType?: PageTypes\n /**\n * The locale for the SDK (BCP-47 code).\n */\n locale?: string\n /**\n * Options for the PayPal Messages session.\n */\n messagesOptions?: PayPalMessagesOptions\n /**\n * The paypal script options.\n */\n paypalScriptOptions?: Partial<PayPalInput>\n}"
527
+ },
528
+ {
529
+ name: "ScriptPayPalMessagesDefaults",
530
+ kind: "const",
531
+ code: "const ScriptPayPalMessagesDefaults = {\n \"trigger\": \"'visible'\",\n \"clientId\": \"'test'\",\n \"paypalScriptOptions\": \"() => ({})\",\n \"messagesOptions\": \"() => ({})\"\n}"
532
+ }
533
+ ],
601
534
  "plausible-analytics": [
602
- {
603
- name: "PlausibleAnalyticsOptions",
604
- kind: "interface",
605
- code: "export interface PlausibleAnalyticsOptions {\n /**\n * Unique script ID for your site (recommended - new format as of October 2025)\n * Get this from your Plausible dashboard under Site Installation\n *\n * Extract it from your Plausible script URL:\n * ```\n * <script src=\"https://plausible.io/js/pa-gYyxvZhkMzdzXBAtSeSNz.js\"></script>\n * ^^^^^^^^^^^^^^^^^^^^^^^^^^\n * scriptId: 'gYyxvZhkMzdzXBAtSeSNz'\n * ```\n * @example 'gYyxvZhkMzdzXBAtSeSNz'\n */\n scriptId?: string\n /**\n * Your site domain\n * @deprecated Use `scriptId` instead (new October 2025 format)\n * @example 'example.com'\n */\n domain?: string\n /**\n * Script extensions for additional features\n * @deprecated Use init options like `hashBasedRouting`, `captureOnLocalhost`, etc. instead (new October 2025 format)\n */\n extension?: 'hash' | 'outbound-links' | 'file-downloads' | 'tagged-events' | 'revenue' | 'pageview-props' | 'compat' | 'local' | 'manual' | Array<'hash' | 'outbound-links' | 'file-downloads' | 'tagged-events' | 'revenue' | 'pageview-props' | 'compat' | 'local' | 'manual'>\n /** Custom properties to track with every pageview */\n customProperties?: Record<string, any>\n /** Custom tracking endpoint URL */\n endpoint?: string\n /** Configure file download tracking */\n fileDownloads?: {\n /** File extensions to track (default: pdf, xlsx, docx, txt, rtf, csv, exe, key, pps, ppt, pptx, 7z, pkg, rar, gz, zip, avi, mov, mp4, mpeg, wmv, midi, mp3, wav, wma, dmg) */\n fileExtensions?: string[]\n }\n /** Enable hash-based routing for single-page apps */\n hashBasedRouting?: boolean\n /** Set to false to manually trigger pageviews */\n autoCapturePageviews?: boolean\n /** Enable tracking on localhost */\n captureOnLocalhost?: boolean\n /** Enable form submission tracking */\n trackForms?: boolean\n}"
606
- },
607
- {
608
- name: "PlausibleInitOptions",
609
- kind: "interface",
610
- code: "export interface PlausibleInitOptions {\n customProperties?: Record<string, any>\n endpoint?: string\n fileDownloads?: {\n fileExtensions?: string[]\n }\n hashBasedRouting?: boolean\n autoCapturePageviews?: boolean\n captureOnLocalhost?: boolean\n}"
611
- },
612
- {
613
- name: "PlausibleFunction",
614
- kind: "type",
615
- code: "export type PlausibleFunction = ((event: '404', options: Record<string, any>) => void)\n & ((event: 'event', options: Record<string, any>) => void)\n & ((...params: any[]) => void) & {\n q: any[]\n init: (options: PlausibleInitOptions) => void\n }"
616
- },
617
- {
618
- name: "PlausibleAnalyticsApi",
619
- kind: "interface",
620
- code: "export interface PlausibleAnalyticsApi {\n plausible: PlausibleFunction\n}"
621
- }
622
- ],
623
- posthog: posthog,
535
+ {
536
+ name: "PlausibleAnalyticsOptions",
537
+ kind: "interface",
538
+ code: "export interface PlausibleAnalyticsOptions {\n /**\n * Unique script ID for your site (recommended - new format as of October 2025)\n * Get this from your Plausible dashboard under Site Installation\n *\n * Extract it from your Plausible script URL:\n * ```\n * <script src=\"https://plausible.io/js/pa-gYyxvZhkMzdzXBAtSeSNz.js\"></script>\n * ^^^^^^^^^^^^^^^^^^^^^^^^^^\n * scriptId: 'gYyxvZhkMzdzXBAtSeSNz'\n * ```\n * @example 'gYyxvZhkMzdzXBAtSeSNz'\n */\n scriptId?: string\n /**\n * Your site domain\n * @deprecated Use `scriptId` instead (new October 2025 format)\n * @example 'example.com'\n */\n domain?: string\n /**\n * Script extensions for additional features\n * @deprecated Use init options like `hashBasedRouting`, `captureOnLocalhost`, etc. instead (new October 2025 format)\n */\n extension?: 'hash' | 'outbound-links' | 'file-downloads' | 'tagged-events' | 'revenue' | 'pageview-props' | 'compat' | 'local' | 'manual' | Array<'hash' | 'outbound-links' | 'file-downloads' | 'tagged-events' | 'revenue' | 'pageview-props' | 'compat' | 'local' | 'manual'>\n /** Custom properties to track with every pageview */\n customProperties?: Record<string, any>\n /** Custom tracking endpoint URL */\n endpoint?: string\n /** Configure file download tracking */\n fileDownloads?: {\n /** File extensions to track (default: pdf, xlsx, docx, txt, rtf, csv, exe, key, pps, ppt, pptx, 7z, pkg, rar, gz, zip, avi, mov, mp4, mpeg, wmv, midi, mp3, wav, wma, dmg) */\n fileExtensions?: string[]\n }\n /** Enable hash-based routing for single-page apps */\n hashBasedRouting?: boolean\n /** Set to false to manually trigger pageviews */\n autoCapturePageviews?: boolean\n /** Enable tracking on localhost */\n captureOnLocalhost?: boolean\n /** Enable form submission tracking */\n trackForms?: boolean\n}"
539
+ },
540
+ {
541
+ name: "PlausibleInitOptions",
542
+ kind: "interface",
543
+ code: "export interface PlausibleInitOptions {\n customProperties?: Record<string, any>\n endpoint?: string\n fileDownloads?: {\n fileExtensions?: string[]\n }\n hashBasedRouting?: boolean\n autoCapturePageviews?: boolean\n captureOnLocalhost?: boolean\n}"
544
+ },
545
+ {
546
+ name: "PlausibleFunction",
547
+ kind: "type",
548
+ code: "export type PlausibleFunction = ((event: '404', options: Record<string, any>) => void)\n & ((event: 'event', options: Record<string, any>) => void)\n & ((...params: any[]) => void) & {\n q: any[]\n init: (options: PlausibleInitOptions) => void\n }"
549
+ },
550
+ {
551
+ name: "PlausibleAnalyticsApi",
552
+ kind: "interface",
553
+ code: "export interface PlausibleAnalyticsApi {\n plausible: PlausibleFunction\n}"
554
+ }
555
+ ],
556
+ posthog: [
557
+ {
558
+ name: "PostHogOptions",
559
+ kind: "const",
560
+ code: "export const PostHogOptions = object({\n /**\n * Your PostHog project API key.\n * @see https://posthog.com/docs/libraries/js#usage\n */\n apiKey: string(),\n /**\n * Your PostHog data region.\n * @default 'us'\n * @see https://posthog.com/docs/libraries/js#config\n */\n region: optional(union([literal('us'), literal('eu')])),\n /**\n * Custom API host URL. Overrides the default derived from `region`.\n * Useful for self-hosted instances or reverse proxies.\n */\n apiHost: optional(string()),\n /**\n * Enable autocapture of clicks, form submissions, and page views.\n * @default true\n */\n autocapture: optional(boolean()),\n /**\n * Capture page views automatically. Set to `'history_change'` to only capture on history changes.\n * @default true\n */\n capturePageview: optional(union([boolean(), literal('history_change')])),\n /**\n * Capture page leave events automatically.\n * @default true\n */\n capturePageleave: optional(boolean()),\n /**\n * Disable session recording.\n */\n disableSessionRecording: optional(boolean()),\n /**\n * Additional PostHog configuration options passed directly to `posthog.init()`.\n * @see https://posthog.com/docs/libraries/js#config\n */\n config: optional(record(string(), any())),\n})"
561
+ },
562
+ {
563
+ name: "PostHogApi",
564
+ kind: "interface",
565
+ code: "export interface PostHogApi {\n posthog: PostHog\n}"
566
+ }
567
+ ],
624
568
  "reddit-pixel": [
625
- {
626
- name: "StandardEvents",
627
- kind: "type",
628
- code: "type StandardEvents = 'PageVisit' | 'ViewContent' | 'Search' | 'AddToCart' | 'AddToWishlist' | 'Purchase' | 'Lead' | 'SignUp'"
629
- },
630
- {
631
- name: "RdtFns",
632
- kind: "type",
633
- code: "type RdtFns\n = & ((event: 'init', id: string) => void)\n & ((event: 'track', eventName: StandardEvents | (string & {}), properties?: Record<string, any>) => void)"
634
- },
635
- {
636
- name: "RedditPixelApi",
637
- kind: "interface",
638
- code: "export interface RedditPixelApi {\n rdt: RdtFns & {\n sendEvent: (rdt: RedditPixelApi['rdt'], args: unknown[]) => void\n callQueue: unknown[]\n }\n}"
639
- },
640
- {
641
- name: "RedditPixelOptions",
642
- kind: "const",
643
- code: "export const RedditPixelOptions = object({\n /**\n * Your Reddit Pixel advertiser ID.\n * @see https://reddithelp.com/en/categories/advertising/managing-ads/installing-reddit-pixel\n */\n id: string(),\n})"
644
- }
645
- ],
569
+ {
570
+ name: "StandardEvents",
571
+ kind: "type",
572
+ code: "type StandardEvents = 'PageVisit' | 'ViewContent' | 'Search' | 'AddToCart' | 'AddToWishlist' | 'Purchase' | 'Lead' | 'SignUp'"
573
+ },
574
+ {
575
+ name: "RdtFns",
576
+ kind: "type",
577
+ code: "type RdtFns\n = & ((event: 'init', id: string) => void)\n & ((event: 'track', eventName: StandardEvents | (string & {}), properties?: Record<string, any>) => void)"
578
+ },
579
+ {
580
+ name: "RedditPixelApi",
581
+ kind: "interface",
582
+ code: "export interface RedditPixelApi {\n rdt: RdtFns & {\n sendEvent: (rdt: RedditPixelApi['rdt'], args: unknown[]) => void\n callQueue: unknown[]\n }\n}"
583
+ },
584
+ {
585
+ name: "RedditPixelOptions",
586
+ kind: "const",
587
+ code: "export const RedditPixelOptions = object({\n /**\n * Your Reddit Pixel advertiser ID.\n * @see https://reddithelp.com/en/categories/advertising/managing-ads/installing-reddit-pixel\n */\n id: string(),\n})"
588
+ }
589
+ ],
646
590
  "rybbit-analytics": [
647
- {
648
- name: "RybbitAnalyticsOptions",
649
- kind: "const",
650
- code: "export const RybbitAnalyticsOptions = object({\n /**\n * Your Rybbit site ID.\n * @see https://rybbit.io/docs\n */\n siteId: union([string(), number()]),\n /**\n * Automatically track page views.\n * @default true\n */\n autoTrackPageview: optional(boolean()),\n /**\n * Enable SPA (single-page app) route tracking.\n * @default true\n */\n trackSpa: optional(boolean()),\n /**\n * Include query parameters in tracked URLs.\n */\n trackQuery: optional(boolean()),\n /**\n * Track outbound link clicks.\n */\n trackOutbound: optional(boolean()),\n /**\n * Track JavaScript errors.\n */\n trackErrors: optional(boolean()),\n /**\n * Enable session replay recording.\n */\n sessionReplay: optional(boolean()),\n /**\n * Enable Web Vitals tracking (LCP, FID, CLS, etc.).\n */\n webVitals: optional(boolean()),\n /**\n * URL patterns to skip from tracking (glob syntax).\n */\n skipPatterns: optional(array(string())),\n /**\n * URL patterns to mask in tracked data (glob syntax).\n */\n maskPatterns: optional(array(string())),\n /**\n * Debounce interval (in ms) for page view tracking.\n */\n debounce: optional(number()),\n /**\n * API key for authenticated tracking.\n */\n apiKey: optional(string()),\n /**\n * Override the analytics host URL. When first-party mode is enabled, this is\n * auto-injected to route through the proxy. The SDK derives its API endpoint\n * from the script src, so this changes the script src to `${analyticsHost}/script.js`.\n */\n analyticsHost: optional(string()),\n})"
651
- },
652
- {
653
- name: "RybbitAnalyticsApi",
654
- kind: "interface",
655
- code: "export interface RybbitAnalyticsApi {\n /**\n * Tracks a page view\n */\n pageview: () => void\n\n /**\n * Tracks a custom event\n * @param name Name of the event\n * @param properties Optional properties for the event\n */\n event: (name: string, properties?: Record<string, any>) => void\n\n /**\n * Sets a custom user ID for tracking logged-in users\n * @param userId The user ID to set (will be stored in localStorage)\n */\n identify: (userId: string) => void\n\n /**\n * Clears the stored user ID\n */\n clearUserId: () => void\n\n /**\n * Gets the currently set user ID\n * @returns The current user ID or null if not set\n */\n getUserId: () => string | null\n /**\n * @deprecated use top level functions instead\n */\n rybbit: RybbitAnalyticsApi\n}"
656
- },
657
- {
658
- name: "RybbitQueueState",
659
- kind: "interface",
660
- code: "interface RybbitQueueState {\n queue: Array<[string, ...any[]]>\n flushed: boolean\n}"
661
- }
662
- ],
663
- segment: segment,
591
+ {
592
+ name: "RybbitAnalyticsOptions",
593
+ kind: "const",
594
+ code: "export const RybbitAnalyticsOptions = object({\n /**\n * Your Rybbit site ID.\n * @see https://rybbit.io/docs\n */\n siteId: union([string(), number()]),\n /**\n * Automatically track page views.\n * @default true\n */\n autoTrackPageview: optional(boolean()),\n /**\n * Enable SPA (single-page app) route tracking.\n * @default true\n */\n trackSpa: optional(boolean()),\n /**\n * Include query parameters in tracked URLs.\n */\n trackQuery: optional(boolean()),\n /**\n * Track outbound link clicks.\n */\n trackOutbound: optional(boolean()),\n /**\n * Track JavaScript errors.\n */\n trackErrors: optional(boolean()),\n /**\n * Enable session replay recording.\n */\n sessionReplay: optional(boolean()),\n /**\n * Enable Web Vitals tracking (LCP, FID, CLS, etc.).\n */\n webVitals: optional(boolean()),\n /**\n * URL patterns to skip from tracking (glob syntax).\n */\n skipPatterns: optional(array(string())),\n /**\n * URL patterns to mask in tracked data (glob syntax).\n */\n maskPatterns: optional(array(string())),\n /**\n * Debounce interval (in ms) for page view tracking.\n */\n debounce: optional(number()),\n /**\n * API key for authenticated tracking.\n */\n apiKey: optional(string()),\n /**\n * Override the analytics host URL. When first-party mode is enabled, this is\n * auto-injected to route through the proxy. The SDK derives its API endpoint\n * from the script src, so this changes the script src to `${analyticsHost}/script.js`.\n */\n analyticsHost: optional(string()),\n})"
595
+ },
596
+ {
597
+ name: "RybbitAnalyticsApi",
598
+ kind: "interface",
599
+ code: "export interface RybbitAnalyticsApi {\n /**\n * Tracks a page view\n */\n pageview: () => void\n\n /**\n * Tracks a custom event\n * @param name Name of the event\n * @param properties Optional properties for the event\n */\n event: (name: string, properties?: Record<string, any>) => void\n\n /**\n * Sets a custom user ID for tracking logged-in users\n * @param userId The user ID to set (will be stored in localStorage)\n */\n identify: (userId: string) => void\n\n /**\n * Clears the stored user ID\n */\n clearUserId: () => void\n\n /**\n * Gets the currently set user ID\n * @returns The current user ID or null if not set\n */\n getUserId: () => string | null\n /**\n * @deprecated use top level functions instead\n */\n rybbit: RybbitAnalyticsApi\n}"
600
+ },
601
+ {
602
+ name: "RybbitQueueState",
603
+ kind: "interface",
604
+ code: "interface RybbitQueueState {\n queue: Array<[string, ...any[]]>\n flushed: boolean\n}"
605
+ }
606
+ ],
607
+ segment: [
608
+ {
609
+ name: "SegmentOptions",
610
+ kind: "const",
611
+ code: "export const SegmentOptions = object({\n /**\n * Your Segment write key.\n * @see https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/quickstart/\n */\n writeKey: string(),\n /**\n * The global variable name for the analytics instance.\n * @default 'analytics'\n */\n analyticsKey: optional(string()),\n})"
612
+ },
613
+ {
614
+ name: "AnalyticsApi",
615
+ kind: "interface",
616
+ code: "interface AnalyticsApi {\n track: (event: string, properties?: Record<string, any>) => void\n page: (name?: string, properties?: Record<string, any>) => void\n identify: (userId: string, traits?: Record<string, any>, options?: Record<string, any>) => void\n group: (groupId: string, traits?: Record<string, any>, options?: Record<string, any>) => void\n alias: (userId: string, previousId: string, options?: Record<string, any>) => void\n reset: () => void\n /**\n * @internal\n */\n methods: string[]\n /**\n * @internal\n */\n factory: (method: string) => (...args: any[]) => AnalyticsApi\n /**\n * @internal\n */\n push: (args: any[]) => void\n}"
617
+ },
618
+ {
619
+ name: "SegmentApi",
620
+ kind: "type",
621
+ code: "export type SegmentApi = Pick<AnalyticsApi, 'track' | 'page' | 'identify' | 'group' | 'alias' | 'reset'>"
622
+ }
623
+ ],
664
624
  "snapchat-pixel": [
665
- {
666
- name: "InitObjectPropertiesSchema",
667
- kind: "const",
668
- code: "export const InitObjectPropertiesSchema = object({\n /**\n * The user's email address (for matching).\n */\n user_email: optional(string()),\n /**\n * The user's IP address.\n */\n ip_address: optional(string()),\n /**\n * The user's phone number (for matching).\n */\n user_phone_number: optional(string()),\n /**\n * SHA-256 hashed email address.\n */\n user_hashed_email: optional(string()),\n /**\n * SHA-256 hashed phone number.\n */\n user_hashed_phone_number: optional(string()),\n /**\n * The user's first name.\n */\n firstname: optional(string()),\n /**\n * The user's last name.\n */\n lastname: optional(string()),\n /**\n * The user's city.\n */\n geo_city: optional(string()),\n /**\n * The user's region/state.\n */\n geo_region: optional(string()),\n /**\n * The user's postal/zip code.\n */\n geo_postal_code: optional(string()),\n /**\n * The user's country code.\n */\n geo_country: optional(string()),\n /**\n * The user's age.\n */\n age: optional(string()),\n})"
669
- },
670
- {
671
- name: "SnapTrPixelOptions",
672
- kind: "const",
673
- code: "export const SnapTrPixelOptions = object({\n /**\n * Your Snapchat Pixel ID.\n * @see https://businesshelp.snapchat.com/s/article/pixel-website-install\n */\n id: string(),\n /**\n * Whether to automatically track a `PAGE_VIEW` event on initialization.\n */\n trackPageView: optional(boolean()),\n ...(InitObjectPropertiesSchema?.entries || {}),\n})"
674
- },
675
- {
676
- name: "StandardEvents",
677
- kind: "type",
678
- code: "type StandardEvents = 'PAGE_VIEW' | 'VIEW_CONTENT' | 'ADD_CART' | 'SIGN_UP' | 'SAVE' | 'START_CHECKOUT' | 'APP_OPEN' | 'ADD_BILLING' | 'SEARCH' | 'SUBSCRIBE' | 'AD_CLICK' | 'AD_VIEW' | 'COMPLETE_TUTORIAL' | 'LEVEL_COMPLETE' | 'INVITE' | 'LOGIN' | 'SHARE' | 'RESERVE' | 'ACHIEVEMENT_UNLOCKED' | 'ADD_TO_WISHLIST' | 'SPENT_CREDITS' | 'RATE' | 'START_TRIAL' | 'LIST_VIEW'"
679
- },
680
- {
681
- name: "EventObjectProperties",
682
- kind: "interface",
683
- code: "interface EventObjectProperties {\n price?: number\n client_dedup_id?: string\n currency?: string\n transaction_id?: string\n item_ids?: string[]\n item_category?: string\n description?: string\n search_string?: string\n number_items?: number\n payment_info_available?: 0 | 1\n sign_up_method?: string\n success?: 0 | 1\n brands?: string[]\n delivery_method?: 'in_store' | 'curbside' | 'delivery'\n customer_status?: 'new' | 'returning' | 'reactivated'\n event_tag?: string\n [key: string]: any\n}"
684
- },
685
- {
686
- name: "InitObjectProperties",
687
- kind: "type",
688
- code: "type InitObjectProperties = InferInput<typeof InitObjectPropertiesSchema>"
689
- },
690
- {
691
- name: "SnapTrFns",
692
- kind: "type",
693
- code: "type SnapTrFns\n = ((event: 'track', eventName: StandardEvents | (string & {}), data?: EventObjectProperties) => void)\n & ((event: 'init', id: string, data?: Record<string, any>) => void)\n & ((event: 'init', id: string, data?: InitObjectProperties) => void)\n & ((event: (string & {}), ...params: any[]) => void)"
694
- },
695
- {
696
- name: "SnapPixelApi",
697
- kind: "interface",
698
- code: "export interface SnapPixelApi {\n snaptr: SnapTrFns & {\n push: SnapTrFns\n loaded: boolean\n version: string\n queue: any[]\n }\n _snaptr: SnapPixelApi['snaptr']\n handleRequest?: SnapTrFns\n}"
699
- }
700
- ],
701
- stripe: stripe,
625
+ {
626
+ name: "InitObjectPropertiesSchema",
627
+ kind: "const",
628
+ code: "export const InitObjectPropertiesSchema = object({\n /**\n * The user's email address (for matching).\n */\n user_email: optional(string()),\n /**\n * The user's IP address.\n */\n ip_address: optional(string()),\n /**\n * The user's phone number (for matching).\n */\n user_phone_number: optional(string()),\n /**\n * SHA-256 hashed email address.\n */\n user_hashed_email: optional(string()),\n /**\n * SHA-256 hashed phone number.\n */\n user_hashed_phone_number: optional(string()),\n /**\n * The user's first name.\n */\n firstname: optional(string()),\n /**\n * The user's last name.\n */\n lastname: optional(string()),\n /**\n * The user's city.\n */\n geo_city: optional(string()),\n /**\n * The user's region/state.\n */\n geo_region: optional(string()),\n /**\n * The user's postal/zip code.\n */\n geo_postal_code: optional(string()),\n /**\n * The user's country code.\n */\n geo_country: optional(string()),\n /**\n * The user's age.\n */\n age: optional(string()),\n})"
629
+ },
630
+ {
631
+ name: "SnapTrPixelOptions",
632
+ kind: "const",
633
+ code: "export const SnapTrPixelOptions = object({\n /**\n * Your Snapchat Pixel ID.\n * @see https://businesshelp.snapchat.com/s/article/pixel-website-install\n */\n id: string(),\n /**\n * Whether to automatically track a `PAGE_VIEW` event on initialization.\n */\n trackPageView: optional(boolean()),\n ...(InitObjectPropertiesSchema?.entries || {}),\n})"
634
+ },
635
+ {
636
+ name: "StandardEvents",
637
+ kind: "type",
638
+ code: "type StandardEvents = 'PAGE_VIEW' | 'VIEW_CONTENT' | 'ADD_CART' | 'SIGN_UP' | 'SAVE' | 'START_CHECKOUT' | 'APP_OPEN' | 'ADD_BILLING' | 'SEARCH' | 'SUBSCRIBE' | 'AD_CLICK' | 'AD_VIEW' | 'COMPLETE_TUTORIAL' | 'LEVEL_COMPLETE' | 'INVITE' | 'LOGIN' | 'SHARE' | 'RESERVE' | 'ACHIEVEMENT_UNLOCKED' | 'ADD_TO_WISHLIST' | 'SPENT_CREDITS' | 'RATE' | 'START_TRIAL' | 'LIST_VIEW'"
639
+ },
640
+ {
641
+ name: "EventObjectProperties",
642
+ kind: "interface",
643
+ code: "interface EventObjectProperties {\n price?: number\n client_dedup_id?: string\n currency?: string\n transaction_id?: string\n item_ids?: string[]\n item_category?: string\n description?: string\n search_string?: string\n number_items?: number\n payment_info_available?: 0 | 1\n sign_up_method?: string\n success?: 0 | 1\n brands?: string[]\n delivery_method?: 'in_store' | 'curbside' | 'delivery'\n customer_status?: 'new' | 'returning' | 'reactivated'\n event_tag?: string\n [key: string]: any\n}"
644
+ },
645
+ {
646
+ name: "InitObjectProperties",
647
+ kind: "type",
648
+ code: "type InitObjectProperties = InferInput<typeof InitObjectPropertiesSchema>"
649
+ },
650
+ {
651
+ name: "SnapTrFns",
652
+ kind: "type",
653
+ code: "type SnapTrFns\n = ((event: 'track', eventName: StandardEvents | (string & {}), data?: EventObjectProperties) => void)\n & ((event: 'init', id: string, data?: Record<string, any>) => void)\n & ((event: 'init', id: string, data?: InitObjectProperties) => void)\n & ((event: (string & {}), ...params: any[]) => void)"
654
+ },
655
+ {
656
+ name: "SnapPixelApi",
657
+ kind: "interface",
658
+ code: "export interface SnapPixelApi {\n snaptr: SnapTrFns & {\n push: SnapTrFns\n loaded: boolean\n version: string\n queue: any[]\n }\n _snaptr: SnapPixelApi['snaptr']\n handleRequest?: SnapTrFns\n}"
659
+ }
660
+ ],
661
+ stripe: [
662
+ {
663
+ name: "StripeOptions",
664
+ kind: "const",
665
+ code: "export const StripeOptions = object({\n /**\n * Whether to load Stripe's advanced fraud detection signals.\n * Set to `false` to opt out.\n * @default true\n * @see https://docs.stripe.com/disputes/prevention/advanced-fraud-detection\n */\n advancedFraudSignals: optional(boolean()),\n})"
666
+ },
667
+ {
668
+ name: "StripeApi",
669
+ kind: "interface",
670
+ code: "export interface StripeApi {\n Stripe: StripeConstructor\n}"
671
+ },
672
+ {
673
+ name: "ScriptStripePricingTableProps",
674
+ kind: "interface",
675
+ code: "interface ScriptStripePricingTableProps {\n trigger?: ElementScriptTrigger\n publishableKey: string\n pricingTableId: string\n clientReferenceId?: string\n customerEmail?: string\n customerSessionClientSecret?: string\n}"
676
+ },
677
+ {
678
+ name: "ScriptStripePricingTableDefaults",
679
+ kind: "const",
680
+ code: "const ScriptStripePricingTableDefaults = {\n \"trigger\": \"'visible'\"\n}"
681
+ }
682
+ ],
702
683
  "tiktok-pixel": [
703
- {
704
- name: "StandardEvents",
705
- kind: "type",
706
- code: "type StandardEvents\n = 'ViewContent'\n | 'ClickButton'\n | 'Search'\n | 'AddToWishlist'\n | 'AddToCart'\n | 'InitiateCheckout'\n | 'AddPaymentInfo'\n | 'CompletePayment'\n | 'PlaceAnOrder'\n | 'Contact'\n | 'Download'\n | 'SubmitForm'\n | 'CompleteRegistration'\n | 'Subscribe'"
707
- },
708
- {
709
- name: "EventProperties",
710
- kind: "interface",
711
- code: "interface EventProperties {\n content_id?: string\n content_type?: string\n content_name?: string\n contents?: Array<{ content_id: string, content_type?: string, content_name?: string, price?: number, quantity?: number }>\n currency?: string\n value?: number\n description?: string\n query?: string\n [key: string]: any\n}"
712
- },
713
- {
714
- name: "IdentifyProperties",
715
- kind: "interface",
716
- code: "interface IdentifyProperties {\n email?: string\n phone_number?: string\n external_id?: string\n}"
717
- },
718
- {
719
- name: "TtqFns",
720
- kind: "type",
721
- code: "type TtqFns\n = ((cmd: 'track', event: StandardEvents | (string & {}), properties?: EventProperties) => void)\n & ((cmd: 'page') => void)\n & ((cmd: 'identify', properties: IdentifyProperties) => void)\n & ((cmd: (string & {}), ...args: any[]) => void)"
722
- },
723
- {
724
- name: "TikTokPixelApi",
725
- kind: "interface",
726
- code: "export interface TikTokPixelApi {\n ttq: TtqFns & {\n push: TtqFns\n loaded: boolean\n queue: any[]\n }\n}"
727
- },
728
- {
729
- name: "TikTokPixelOptions",
730
- kind: "const",
731
- code: "export const TikTokPixelOptions = object({\n /**\n * Your TikTok Pixel ID.\n * @see https://ads.tiktok.com/help/article/get-started-pixel\n */\n id: string(),\n /**\n * Whether to automatically track a page view on initialization.\n * @default true\n */\n trackPageView: optional(boolean()),\n})"
732
- }
733
- ],
684
+ {
685
+ name: "StandardEvents",
686
+ kind: "type",
687
+ code: "type StandardEvents\n = 'ViewContent'\n | 'ClickButton'\n | 'Search'\n | 'AddToWishlist'\n | 'AddToCart'\n | 'InitiateCheckout'\n | 'AddPaymentInfo'\n | 'CompletePayment'\n | 'PlaceAnOrder'\n | 'Contact'\n | 'Download'\n | 'SubmitForm'\n | 'CompleteRegistration'\n | 'Subscribe'"
688
+ },
689
+ {
690
+ name: "EventProperties",
691
+ kind: "interface",
692
+ code: "interface EventProperties {\n content_id?: string\n content_type?: string\n content_name?: string\n contents?: Array<{ content_id: string, content_type?: string, content_name?: string, price?: number, quantity?: number }>\n currency?: string\n value?: number\n description?: string\n query?: string\n [key: string]: any\n}"
693
+ },
694
+ {
695
+ name: "IdentifyProperties",
696
+ kind: "interface",
697
+ code: "interface IdentifyProperties {\n email?: string\n phone_number?: string\n external_id?: string\n}"
698
+ },
699
+ {
700
+ name: "TtqFns",
701
+ kind: "type",
702
+ code: "type TtqFns\n = ((cmd: 'track', event: StandardEvents | (string & {}), properties?: EventProperties) => void)\n & ((cmd: 'page') => void)\n & ((cmd: 'identify', properties: IdentifyProperties) => void)\n & ((cmd: (string & {}), ...args: any[]) => void)"
703
+ },
704
+ {
705
+ name: "TikTokPixelApi",
706
+ kind: "interface",
707
+ code: "export interface TikTokPixelApi {\n ttq: TtqFns & {\n push: TtqFns\n loaded: boolean\n queue: any[]\n }\n}"
708
+ },
709
+ {
710
+ name: "TikTokPixelOptions",
711
+ kind: "const",
712
+ code: "export const TikTokPixelOptions = object({\n /**\n * Your TikTok Pixel ID.\n * @see https://ads.tiktok.com/help/article/get-started-pixel\n */\n id: string(),\n /**\n * Whether to automatically track a page view on initialization.\n * @default true\n */\n trackPageView: optional(boolean()),\n})"
713
+ }
714
+ ],
734
715
  "umami-analytics": [
735
- {
736
- name: "UmamiAnalyticsOptions",
737
- kind: "const",
738
- code: "export const UmamiAnalyticsOptions = object({\n /**\n * Your Umami website ID.\n * @see https://umami.is/docs/tracker-config\n */\n websiteId: string(), // required\n /**\n * By default, Umami will send data to wherever the script is located.\n * You can override this to send data to another location.\n * @see https://umami.is/docs/tracker-config#data-host-url\n */\n hostUrl: optional(string()),\n /**\n * By default, Umami tracks all pageviews and events for you automatically.\n * You can disable this behavior and track events yourself using the tracker functions.\n * @default true\n * @see https://umami.is/docs/tracker-functions\n */\n autoTrack: optional(boolean()),\n /**\n * If you want the tracker to only run on specific domains, you can add them to your tracker script.\n * This is a comma delimited list of domain names.\n * Helps if you are working in a staging/development environment.\n * @see https://umami.is/docs/tracker-config#data-domains\n */\n domains: optional(array(string())),\n /**\n * If you want the tracker to collect events under a specific tag.\n * Events can be filtered in the dashboard by a specific tag.\n * @see https://umami.is/docs/tracker-config#data-tag\n */\n tag: optional(string()),\n /**\n * Function that will be called before data is sent to Umami.\n * The function takes two parameters: type and payload.\n * Return the payload to continue sending, or return a falsy value to cancel.\n * @see https://umami.is/docs/tracker-config#data-before-send\n */\n beforeSend: optional(union([\n custom<(type: string, payload: Record<string, any>) => Record<string, any> | null | false>(input => typeof input === 'function'),\n string(),\n ])),\n})"
739
- },
740
- {
741
- name: "UmamiAnalyticsApi",
742
- kind: "interface",
743
- code: "export interface UmamiAnalyticsApi {\n track: ((payload?: Record<string, any>) => void) & ((event_name: string, event_data: Record<string, any>) => void)\n identify: (session_data?: Record<string, any> | string) => void\n}"
744
- }
745
- ],
716
+ {
717
+ name: "UmamiAnalyticsOptions",
718
+ kind: "const",
719
+ code: "export const UmamiAnalyticsOptions = object({\n /**\n * Your Umami website ID.\n * @see https://umami.is/docs/tracker-config\n */\n websiteId: string(), // required\n /**\n * By default, Umami will send data to wherever the script is located.\n * You can override this to send data to another location.\n * @see https://umami.is/docs/tracker-config#data-host-url\n */\n hostUrl: optional(string()),\n /**\n * By default, Umami tracks all pageviews and events for you automatically.\n * You can disable this behavior and track events yourself using the tracker functions.\n * @default true\n * @see https://umami.is/docs/tracker-functions\n */\n autoTrack: optional(boolean()),\n /**\n * If you want the tracker to only run on specific domains, you can add them to your tracker script.\n * This is a comma delimited list of domain names.\n * Helps if you are working in a staging/development environment.\n * @see https://umami.is/docs/tracker-config#data-domains\n */\n domains: optional(array(string())),\n /**\n * If you want the tracker to collect events under a specific tag.\n * Events can be filtered in the dashboard by a specific tag.\n * @see https://umami.is/docs/tracker-config#data-tag\n */\n tag: optional(string()),\n /**\n * Function that will be called before data is sent to Umami.\n * The function takes two parameters: type and payload.\n * Return the payload to continue sending, or return a falsy value to cancel.\n * @see https://umami.is/docs/tracker-config#data-before-send\n */\n beforeSend: optional(union([\n custom<(type: string, payload: Record<string, any>) => Record<string, any> | null | false>(input => typeof input === 'function'),\n string(),\n ])),\n})"
720
+ },
721
+ {
722
+ name: "UmamiAnalyticsApi",
723
+ kind: "interface",
724
+ code: "export interface UmamiAnalyticsApi {\n track: ((payload?: Record<string, any>) => void) & ((event_name: string, event_data: Record<string, any>) => void)\n identify: (session_data?: Record<string, any> | string) => void\n}"
725
+ }
726
+ ],
746
727
  "vercel-analytics": [
747
- {
748
- name: "VercelAnalyticsOptions",
749
- kind: "const",
750
- code: "export const VercelAnalyticsOptions = object({\n /**\n * The DSN of the project to send events to.\n * Only required when self-hosting or deploying outside of Vercel.\n */\n dsn: optional(string()),\n /**\n * Whether to disable automatic page view tracking on route changes.\n * Set to true if you want to manually call pageview().\n */\n disableAutoTrack: optional(boolean()),\n /**\n * The mode to use for the analytics script.\n * - `auto` - Automatically detect the environment (default)\n * - `production` - Always use production script\n * - `development` - Always use development script (logs to console)\n */\n mode: optional(union([literal('auto'), literal('development'), literal('production')])),\n /**\n * Whether to enable debug logging.\n * Automatically enabled in development/test environments.\n */\n debug: optional(boolean()),\n /**\n * Custom endpoint for data collection.\n * Useful for self-hosted or proxied setups.\n */\n endpoint: optional(string()),\n})"
751
- },
752
- {
753
- name: "AllowedPropertyValues",
754
- kind: "type",
755
- code: "export type AllowedPropertyValues = string | number | boolean | null"
756
- },
757
- {
758
- name: "VercelAnalyticsMode",
759
- kind: "type",
760
- code: "export type VercelAnalyticsMode = 'auto' | 'development' | 'production'"
761
- },
762
- {
763
- name: "BeforeSendEvent",
764
- kind: "interface",
765
- code: "export interface BeforeSendEvent {\n type: 'pageview' | 'event'\n url: string\n}"
766
- },
767
- {
768
- name: "BeforeSend",
769
- kind: "type",
770
- code: "export type BeforeSend = (event: BeforeSendEvent) => BeforeSendEvent | null"
771
- },
772
- {
773
- name: "VercelAnalyticsApi",
774
- kind: "interface",
775
- code: "export interface VercelAnalyticsApi {\n va: (event: string, properties?: unknown) => void\n track: (name: string, properties?: Record<string, AllowedPropertyValues>) => void\n pageview: (options?: { route?: string | null, path?: string }) => void\n}"
776
- }
777
- ],
728
+ {
729
+ name: "VercelAnalyticsOptions",
730
+ kind: "const",
731
+ code: "export const VercelAnalyticsOptions = object({\n /**\n * The DSN of the project to send events to.\n * Only required when self-hosting or deploying outside of Vercel.\n */\n dsn: optional(string()),\n /**\n * Whether to disable automatic page view tracking on route changes.\n * Set to true if you want to manually call pageview().\n */\n disableAutoTrack: optional(boolean()),\n /**\n * The mode to use for the analytics script.\n * - `auto` - Automatically detect the environment (default)\n * - `production` - Always use production script\n * - `development` - Always use development script (logs to console)\n */\n mode: optional(union([literal('auto'), literal('development'), literal('production')])),\n /**\n * Whether to enable debug logging.\n * Automatically enabled in development/test environments.\n */\n debug: optional(boolean()),\n /**\n * Custom endpoint for data collection.\n * Useful for self-hosted or proxied setups.\n */\n endpoint: optional(string()),\n})"
732
+ },
733
+ {
734
+ name: "AllowedPropertyValues",
735
+ kind: "type",
736
+ code: "export type AllowedPropertyValues = string | number | boolean | null"
737
+ },
738
+ {
739
+ name: "VercelAnalyticsMode",
740
+ kind: "type",
741
+ code: "export type VercelAnalyticsMode = 'auto' | 'development' | 'production'"
742
+ },
743
+ {
744
+ name: "BeforeSendEvent",
745
+ kind: "interface",
746
+ code: "export interface BeforeSendEvent {\n type: 'pageview' | 'event'\n url: string\n}"
747
+ },
748
+ {
749
+ name: "BeforeSend",
750
+ kind: "type",
751
+ code: "export type BeforeSend = (event: BeforeSendEvent) => BeforeSendEvent | null"
752
+ },
753
+ {
754
+ name: "VercelAnalyticsApi",
755
+ kind: "interface",
756
+ code: "export interface VercelAnalyticsApi {\n va: (event: string, properties?: unknown) => void\n track: (name: string, properties?: Record<string, AllowedPropertyValues>) => void\n pageview: (options?: { route?: string | null, path?: string }) => void\n}"
757
+ }
758
+ ],
778
759
  "vimeo-player": [
779
- {
780
- name: "Constructor",
781
- kind: "type",
782
- code: "type Constructor<T extends new (...args: any) => any> = T extends new (...args: infer A) => infer R ? new (...args: A) => R : never"
783
- },
784
- {
785
- name: "VimeoPlayerApi",
786
- kind: "interface",
787
- code: "export interface VimeoPlayerApi {\n Vimeo: {\n Player: Constructor<typeof Vimeo>\n }\n}"
788
- },
789
- {
790
- name: "ScriptVimeoPlayerProps",
791
- kind: "interface",
792
- code: "interface ScriptVimeoPlayerProps {\n // custom\n trigger?: ElementScriptTrigger\n placeholderAttrs?: ImgHTMLAttributes\n rootAttrs?: HTMLAttributes\n aboveTheFold?: boolean\n vimeoOptions?: VimeoOptions\n id?: number | undefined\n url?: string | undefined\n ratio?: string\n /**\n * Object-fit for the placeholder image.\n *\n * @default 'contain'\n */\n placeholderObjectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down'\n}"
793
- },
794
- {
795
- name: "ScriptVimeoPlayerDefaults",
796
- kind: "const",
797
- code: "const ScriptVimeoPlayerDefaults = {\n \"trigger\": \"'mousedown'\",\n \"ratio\": \"'16/9'\",\n \"placeholderObjectFit\": \"'contain'\"\n}"
798
- }
799
- ],
760
+ {
761
+ name: "Constructor",
762
+ kind: "type",
763
+ code: "type Constructor<T extends new (...args: any) => any> = T extends new (...args: infer A) => infer R ? new (...args: A) => R : never"
764
+ },
765
+ {
766
+ name: "VimeoPlayerApi",
767
+ kind: "interface",
768
+ code: "export interface VimeoPlayerApi {\n Vimeo: {\n Player: Constructor<typeof Vimeo>\n }\n}"
769
+ },
770
+ {
771
+ name: "ScriptVimeoPlayerProps",
772
+ kind: "interface",
773
+ code: "interface ScriptVimeoPlayerProps {\n // custom\n trigger?: ElementScriptTrigger\n placeholderAttrs?: ImgHTMLAttributes\n rootAttrs?: HTMLAttributes\n aboveTheFold?: boolean\n vimeoOptions?: VimeoOptions\n id?: number | undefined\n url?: string | undefined\n ratio?: string\n /**\n * Object-fit for the placeholder image.\n *\n * @default 'contain'\n */\n placeholderObjectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down'\n}"
774
+ },
775
+ {
776
+ name: "ScriptVimeoPlayerDefaults",
777
+ kind: "const",
778
+ code: "const ScriptVimeoPlayerDefaults = {\n \"trigger\": \"'mousedown'\",\n \"ratio\": \"'16/9'\",\n \"placeholderObjectFit\": \"'contain'\"\n}"
779
+ }
780
+ ],
800
781
  "x-embed": [
801
- {
802
- name: "XEmbedOptions",
803
- kind: "const",
804
- code: "export const XEmbedOptions = object({\n /**\n * The tweet ID to embed.\n * @example '1754336034228171055'\n * @see https://developer.x.com/en/docs/twitter-for-websites/embedded-tweets/overview\n */\n tweetId: string(),\n /**\n * Optional: Custom API endpoint for fetching tweet data.\n * @default '/_scripts/embed/x'\n */\n apiEndpoint: optional(string()),\n /**\n * Optional: Custom image proxy endpoint.\n * @default '/_scripts/embed/x-image'\n */\n imageProxyEndpoint: optional(string()),\n})"
805
- },
806
- {
807
- name: "XEmbedTweetData",
808
- kind: "interface",
809
- code: "export interface XEmbedTweetData {\n id_str: string\n text: string\n created_at: string\n favorite_count: number\n conversation_count: number\n user: {\n name: string\n screen_name: string\n profile_image_url_https: string\n verified?: boolean\n is_blue_verified?: boolean\n }\n entities?: {\n media?: Array<{\n media_url_https: string\n type: string\n sizes: Record<string, { w: number, h: number }>\n }>\n urls?: Array<{\n url: string\n expanded_url: string\n display_url: string\n }>\n }\n photos?: Array<{\n url: string\n width: number\n height: number\n }>\n video?: {\n poster: string\n variants: Array<{ type: string, src: string }>\n }\n quoted_tweet?: XEmbedTweetData\n parent?: {\n user: {\n screen_name: string\n }\n }\n}"
810
- },
811
- {
812
- name: "ScriptXEmbedProps",
813
- kind: "interface",
814
- code: "interface ScriptXEmbedProps {\n /**\n * The tweet ID to embed\n */\n tweetId: string\n /**\n * Custom API endpoint for fetching tweet data\n * @default '/_scripts/embed/x'\n */\n apiEndpoint?: string\n /**\n * Custom image proxy endpoint\n * @default '/_scripts/embed/x-image'\n */\n imageProxyEndpoint?: string\n /**\n * Root element attributes\n */\n rootAttrs?: HTMLAttributes\n}"
815
- },
816
- {
817
- name: "ScriptXEmbedDefaults",
818
- kind: "const",
819
- code: "const ScriptXEmbedDefaults = {\n \"apiEndpoint\": \"'/_scripts/embed/x'\",\n \"imageProxyEndpoint\": \"'/_scripts/embed/x-image'\"\n}"
820
- }
821
- ],
782
+ {
783
+ name: "XEmbedOptions",
784
+ kind: "const",
785
+ code: "export const XEmbedOptions = object({\n /**\n * The tweet ID to embed.\n * @example '1754336034228171055'\n * @see https://developer.x.com/en/docs/twitter-for-websites/embedded-tweets/overview\n */\n tweetId: string(),\n /**\n * Optional: Custom API endpoint for fetching tweet data.\n * @default '/_scripts/embed/x'\n */\n apiEndpoint: optional(string()),\n /**\n * Optional: Custom image proxy endpoint.\n * @default '/_scripts/embed/x-image'\n */\n imageProxyEndpoint: optional(string()),\n})"
786
+ },
787
+ {
788
+ name: "XEmbedTweetData",
789
+ kind: "interface",
790
+ code: "export interface XEmbedTweetData {\n id_str: string\n text: string\n created_at: string\n favorite_count: number\n conversation_count: number\n user: {\n name: string\n screen_name: string\n profile_image_url_https: string\n verified?: boolean\n is_blue_verified?: boolean\n }\n entities?: {\n media?: Array<{\n media_url_https: string\n type: string\n sizes: Record<string, { w: number, h: number }>\n }>\n urls?: Array<{\n url: string\n expanded_url: string\n display_url: string\n }>\n }\n photos?: Array<{\n url: string\n width: number\n height: number\n }>\n video?: {\n poster: string\n variants: Array<{ type: string, src: string }>\n }\n quoted_tweet?: XEmbedTweetData\n parent?: {\n user: {\n screen_name: string\n }\n }\n}"
791
+ },
792
+ {
793
+ name: "ScriptXEmbedProps",
794
+ kind: "interface",
795
+ code: "interface ScriptXEmbedProps {\n /**\n * The tweet ID to embed\n */\n tweetId: string\n /**\n * Custom API endpoint for fetching tweet data\n * @default '/_scripts/embed/x'\n */\n apiEndpoint?: string\n /**\n * Custom image proxy endpoint\n * @default '/_scripts/embed/x-image'\n */\n imageProxyEndpoint?: string\n /**\n * Root element attributes\n */\n rootAttrs?: HTMLAttributes\n}"
796
+ },
797
+ {
798
+ name: "ScriptXEmbedDefaults",
799
+ kind: "const",
800
+ code: "const ScriptXEmbedDefaults = {\n \"apiEndpoint\": \"'/_scripts/embed/x'\",\n \"imageProxyEndpoint\": \"'/_scripts/embed/x-image'\"\n}"
801
+ }
802
+ ],
822
803
  "x-pixel": [
823
- {
824
- name: "ContentProperties",
825
- kind: "interface",
826
- code: "interface ContentProperties {\n content_type?: string | null\n content_id?: string | number | null\n content_name?: string | null\n content_price?: string | number | null\n num_items?: string | number | null\n content_group_id?: string | number | null\n}"
827
- },
828
- {
829
- name: "EventObjectProperties",
830
- kind: "interface",
831
- code: "interface EventObjectProperties {\n // this is the same as Twitter events\n value?: string | number | null\n currency?: string | null\n conversion_id?: string | number | null\n email_address?: string | null\n phone_number?: string | null\n contents: ContentProperties[]\n}"
832
- },
833
- {
834
- name: "TwqFns",
835
- kind: "type",
836
- code: "type TwqFns\n = ((event: 'event', eventId: string, data?: EventObjectProperties) => void)\n & ((event: 'config', id: string) => void)\n & ((event: (string & {}), ...params: any[]) => void)"
837
- },
838
- {
839
- name: "XPixelApi",
840
- kind: "interface",
841
- code: "export interface XPixelApi {\n twq: TwqFns & {\n loaded: boolean\n version: string\n queue: any[]\n }\n}"
842
- },
843
- {
844
- name: "XPixelOptions",
845
- kind: "const",
846
- code: "export const XPixelOptions = object({\n /**\n * Your X (Twitter) Pixel ID.\n * @see https://business.twitter.com/en/help/campaign-measurement-and-analytics/conversion-tracking-for-websites.html\n */\n id: string(),\n /**\n * The X Pixel script version.\n * @default '1.1'\n */\n version: optional(string()),\n})"
847
- }
848
- ],
804
+ {
805
+ name: "ContentProperties",
806
+ kind: "interface",
807
+ code: "interface ContentProperties {\n content_type?: string | null\n content_id?: string | number | null\n content_name?: string | null\n content_price?: string | number | null\n num_items?: string | number | null\n content_group_id?: string | number | null\n}"
808
+ },
809
+ {
810
+ name: "EventObjectProperties",
811
+ kind: "interface",
812
+ code: "interface EventObjectProperties {\n // this is the same as Twitter events\n value?: string | number | null\n currency?: string | null\n conversion_id?: string | number | null\n email_address?: string | null\n phone_number?: string | null\n contents: ContentProperties[]\n}"
813
+ },
814
+ {
815
+ name: "TwqFns",
816
+ kind: "type",
817
+ code: "type TwqFns\n = ((event: 'event', eventId: string, data?: EventObjectProperties) => void)\n & ((event: 'config', id: string) => void)\n & ((event: (string & {}), ...params: any[]) => void)"
818
+ },
819
+ {
820
+ name: "XPixelApi",
821
+ kind: "interface",
822
+ code: "export interface XPixelApi {\n twq: TwqFns & {\n loaded: boolean\n version: string\n queue: any[]\n }\n}"
823
+ },
824
+ {
825
+ name: "XPixelOptions",
826
+ kind: "const",
827
+ code: "export const XPixelOptions = object({\n /**\n * Your X (Twitter) Pixel ID.\n * @see https://business.twitter.com/en/help/campaign-measurement-and-analytics/conversion-tracking-for-websites.html\n */\n id: string(),\n /**\n * The X Pixel script version.\n * @default '1.1'\n */\n version: optional(string()),\n})"
828
+ }
829
+ ],
849
830
  "youtube-player": [
850
- {
851
- name: "YouTubePlayerApi",
852
- kind: "interface",
853
- code: "export interface YouTubePlayerApi {\n YT: MaybePromise<{\n Player: YT.Player\n PlayerState: YT.PlayerState\n get: (k: string) => any\n loaded: 0 | 1\n loading: 0 | 1\n ready: (f: () => void) => void\n scan: () => void\n setConfig: (config: YT.PlayerOptions) => void\n subscribe: <EventName extends keyof YT.Events>(\n event: EventName,\n listener: YT.Events[EventName],\n context?: any,\n ) => void\n unsubscribe: <EventName extends keyof YT.Events>(\n event: EventName,\n listener: YT.Events[EventName],\n context?: any,\n ) => void\n }>\n}"
854
- },
855
- {
856
- name: "ScriptYouTubePlayerProps",
857
- kind: "interface",
858
- code: "interface ScriptYouTubePlayerProps {\n placeholderAttrs?: ImgHTMLAttributes\n rootAttrs?: HTMLAttributes\n aboveTheFold?: boolean\n trigger?: ElementScriptTrigger\n videoId: string\n playerVars?: YT.PlayerVars\n width?: number\n height?: number\n ratio?: string\n /**\n * Whether to use youtube-nocookie.com for embedding.\n *\n * @default false\n */\n cookies?: boolean\n playerOptions?: YT.PlayerOptions\n thumbnailSize?: YoutubeThumbnailSize\n webp?: boolean\n /**\n * Object-fit for the placeholder image.\n *\n * @default 'cover'\n */\n placeholderObjectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down'\n}"
859
- },
860
- {
861
- name: "ScriptYouTubePlayerDefaults",
862
- kind: "const",
863
- code: "const ScriptYouTubePlayerDefaults = {\n \"cookies\": \"false\",\n \"trigger\": \"'mousedown'\",\n \"thumbnailSize\": \"'hq720'\",\n \"webp\": \"true\",\n \"playerVars\": \"{ autoplay: 0, playsinline: 1 }\",\n \"width\": \"640\",\n \"height\": \"360\",\n \"ratio\": \"'16/9'\",\n \"placeholderObjectFit\": \"'cover'\"\n}"
864
- }
865
- ],
831
+ {
832
+ name: "YouTubePlayerApi",
833
+ kind: "interface",
834
+ code: "export interface YouTubePlayerApi {\n YT: MaybePromise<{\n Player: YT.Player\n PlayerState: YT.PlayerState\n get: (k: string) => any\n loaded: 0 | 1\n loading: 0 | 1\n ready: (f: () => void) => void\n scan: () => void\n setConfig: (config: YT.PlayerOptions) => void\n subscribe: <EventName extends keyof YT.Events>(\n event: EventName,\n listener: YT.Events[EventName],\n context?: any,\n ) => void\n unsubscribe: <EventName extends keyof YT.Events>(\n event: EventName,\n listener: YT.Events[EventName],\n context?: any,\n ) => void\n }>\n}"
835
+ },
836
+ {
837
+ name: "ScriptYouTubePlayerProps",
838
+ kind: "interface",
839
+ code: "interface ScriptYouTubePlayerProps {\n placeholderAttrs?: ImgHTMLAttributes\n rootAttrs?: HTMLAttributes\n aboveTheFold?: boolean\n trigger?: ElementScriptTrigger\n videoId: string\n playerVars?: YT.PlayerVars\n width?: number\n height?: number\n ratio?: string\n /**\n * Whether to use youtube-nocookie.com for embedding.\n *\n * @default false\n */\n cookies?: boolean\n playerOptions?: YT.PlayerOptions\n thumbnailSize?: YoutubeThumbnailSize\n webp?: boolean\n /**\n * Object-fit for the placeholder image.\n *\n * @default 'cover'\n */\n placeholderObjectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down'\n}"
840
+ },
841
+ {
842
+ name: "ScriptYouTubePlayerDefaults",
843
+ kind: "const",
844
+ code: "const ScriptYouTubePlayerDefaults = {\n \"cookies\": \"false\",\n \"trigger\": \"'mousedown'\",\n \"thumbnailSize\": \"'hq720'\",\n \"webp\": \"true\",\n \"playerVars\": \"{ autoplay: 0, playsinline: 1 }\",\n \"width\": \"640\",\n \"height\": \"360\",\n \"ratio\": \"'16/9'\",\n \"placeholderObjectFit\": \"'cover'\"\n}"
845
+ }
846
+ ],
866
847
  "carbon-ads": [
867
- {
868
- name: "ScriptCarbonAdsProps",
869
- kind: "interface",
870
- code: "interface ScriptCarbonAdsProps {\n serve: string\n placement: string\n format: string\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n}"
871
- }
872
- ]
848
+ {
849
+ name: "ScriptCarbonAdsProps",
850
+ kind: "interface",
851
+ code: "interface ScriptCarbonAdsProps {\n serve: string\n placement: string\n format: string\n /**\n * Defines the trigger event to load the script.\n */\n trigger?: ElementScriptTrigger\n}"
852
+ }
853
+ ]
854
+ };
855
+ const schemaFields = {
856
+ BlueskyEmbedOptions: [
857
+ {
858
+ name: "postUrl",
859
+ type: "string",
860
+ required: true,
861
+ description: "The Bluesky post URL to embed."
862
+ },
863
+ {
864
+ name: "apiEndpoint",
865
+ type: "string",
866
+ required: false,
867
+ description: "Custom API endpoint for fetching post data.",
868
+ defaultValue: "'/_scripts/embed/bluesky'"
869
+ },
870
+ {
871
+ name: "imageProxyEndpoint",
872
+ type: "string",
873
+ required: false,
874
+ description: "Custom image proxy endpoint.",
875
+ defaultValue: "'/_scripts/embed/bluesky-image'"
876
+ }
877
+ ],
878
+ ClarityOptions: [
879
+ {
880
+ name: "id",
881
+ type: "string",
882
+ required: true,
883
+ description: "The Clarity token."
884
+ }
885
+ ],
886
+ CloudflareWebAnalyticsOptions: [
887
+ {
888
+ name: "token",
889
+ type: "string",
890
+ required: true,
891
+ description: "The Cloudflare Web Analytics token."
892
+ },
893
+ {
894
+ name: "spa",
895
+ type: "boolean",
896
+ required: false,
897
+ description: "Cloudflare Web Analytics enables measuring SPAs automatically by overriding the History API's pushState function and listening to the onpopstate. Hash-based router is not supported.",
898
+ defaultValue: "true"
899
+ }
900
+ ],
901
+ CrispOptions: [
902
+ {
903
+ name: "id",
904
+ type: "string",
905
+ required: true,
906
+ description: "The Crisp ID."
907
+ },
908
+ {
909
+ name: "runtimeConfig",
910
+ type: "object",
911
+ required: false,
912
+ description: "Extra configuration options. Used to configure the locale. Same as CRISP_RUNTIME_CONFIG."
913
+ },
914
+ {
915
+ name: "tokenId",
916
+ type: "string",
917
+ required: false,
918
+ description: "Associated a session, equivalent to using CRISP_TOKEN_ID variable. Same as CRISP_TOKEN_ID."
919
+ },
920
+ {
921
+ name: "cookieDomain",
922
+ type: "string",
923
+ required: false,
924
+ description: "Restrict the domain that the Crisp cookie is set on. Same as CRISP_COOKIE_DOMAIN."
925
+ },
926
+ {
927
+ name: "cookieExpiry",
928
+ type: "number",
929
+ required: false,
930
+ description: "The cookie expiry in seconds. Same as CRISP_COOKIE_EXPIRATION."
931
+ }
932
+ ],
933
+ DatabuddyAnalyticsOptions: [
934
+ {
935
+ name: "clientId",
936
+ type: "string",
937
+ required: true,
938
+ description: "Your Databuddy client ID."
939
+ },
940
+ {
941
+ name: "scriptUrl",
942
+ type: "string",
943
+ required: false,
944
+ description: "Custom script URL for the Databuddy SDK.",
945
+ defaultValue: "'https://cdn.databuddy.cc/databuddy.js'"
946
+ },
947
+ {
948
+ name: "apiUrl",
949
+ type: "string",
950
+ required: false,
951
+ description: "Custom API URL for sending analytics data.",
952
+ defaultValue: "'https://basket.databuddy.cc'"
953
+ },
954
+ {
955
+ name: "disabled",
956
+ type: "boolean",
957
+ required: false,
958
+ description: "Disable all tracking when set to `true`."
959
+ },
960
+ {
961
+ name: "trackScreenViews",
962
+ type: "boolean",
963
+ required: false,
964
+ description: "Track screen/page views automatically.",
965
+ defaultValue: "true"
966
+ },
967
+ {
968
+ name: "trackPerformance",
969
+ type: "boolean",
970
+ required: false,
971
+ description: "Track page performance metrics.",
972
+ defaultValue: "true"
973
+ },
974
+ {
975
+ name: "trackSessions",
976
+ type: "boolean",
977
+ required: false,
978
+ description: "Track user sessions.",
979
+ defaultValue: "true"
980
+ },
981
+ {
982
+ name: "trackWebVitals",
983
+ type: "boolean",
984
+ required: false,
985
+ description: "Track Web Vitals (LCP, FID, CLS, etc.)."
986
+ },
987
+ {
988
+ name: "trackErrors",
989
+ type: "boolean",
990
+ required: false,
991
+ description: "Track JavaScript errors."
992
+ },
993
+ {
994
+ name: "trackOutgoingLinks",
995
+ type: "boolean",
996
+ required: false,
997
+ description: "Track outgoing link clicks."
998
+ },
999
+ {
1000
+ name: "trackScrollDepth",
1001
+ type: "boolean",
1002
+ required: false,
1003
+ description: "Track scroll depth."
1004
+ },
1005
+ {
1006
+ name: "trackEngagement",
1007
+ type: "boolean",
1008
+ required: false,
1009
+ description: "Track user engagement time."
1010
+ },
1011
+ {
1012
+ name: "trackInteractions",
1013
+ type: "boolean",
1014
+ required: false,
1015
+ description: "Track user interactions (clicks, form submissions, etc.)."
1016
+ },
1017
+ {
1018
+ name: "trackAttributes",
1019
+ type: "boolean",
1020
+ required: false,
1021
+ description: "Track element attributes for detailed interaction context."
1022
+ },
1023
+ {
1024
+ name: "trackHashChanges",
1025
+ type: "boolean",
1026
+ required: false,
1027
+ description: "Track hash changes in the URL."
1028
+ },
1029
+ {
1030
+ name: "trackExitIntent",
1031
+ type: "boolean",
1032
+ required: false,
1033
+ description: "Track exit intent behavior."
1034
+ },
1035
+ {
1036
+ name: "trackBounceRate",
1037
+ type: "boolean",
1038
+ required: false,
1039
+ description: "Track bounce rate metrics."
1040
+ },
1041
+ {
1042
+ name: "enableBatching",
1043
+ type: "boolean",
1044
+ required: false,
1045
+ description: "Enable event batching for better performance."
1046
+ },
1047
+ {
1048
+ name: "batchSize",
1049
+ type: "number",
1050
+ required: false,
1051
+ description: "Maximum number of events per batch."
1052
+ },
1053
+ {
1054
+ name: "batchTimeout",
1055
+ type: "number",
1056
+ required: false,
1057
+ description: "Timeout (in ms) before flushing a batch."
1058
+ },
1059
+ {
1060
+ name: "enableRetries",
1061
+ type: "boolean",
1062
+ required: false,
1063
+ description: "Enable automatic retries for failed requests."
1064
+ },
1065
+ {
1066
+ name: "maxRetries",
1067
+ type: "number",
1068
+ required: false,
1069
+ description: "Maximum number of retry attempts."
1070
+ },
1071
+ {
1072
+ name: "initialRetryDelay",
1073
+ type: "number",
1074
+ required: false,
1075
+ description: "Initial delay (in ms) before the first retry."
1076
+ },
1077
+ {
1078
+ name: "samplingRate",
1079
+ type: "number",
1080
+ required: false,
1081
+ description: "Sampling rate (0 to 1). Set to `0.5` to track ~50% of sessions."
1082
+ },
1083
+ {
1084
+ name: "sdk",
1085
+ type: "string",
1086
+ required: false,
1087
+ description: "Custom SDK identifier."
1088
+ },
1089
+ {
1090
+ name: "sdkVersion",
1091
+ type: "string",
1092
+ required: false,
1093
+ description: "Custom SDK version string."
1094
+ },
1095
+ {
1096
+ name: "enableObservability",
1097
+ type: "boolean",
1098
+ required: false,
1099
+ description: "Enable observability/monitoring features."
1100
+ },
1101
+ {
1102
+ name: "observabilityService",
1103
+ type: "string",
1104
+ required: false,
1105
+ description: "The service name for observability reporting."
1106
+ },
1107
+ {
1108
+ name: "observabilityEnvironment",
1109
+ type: "string",
1110
+ required: false,
1111
+ description: "The environment name for observability (e.g., `'production'`, `'staging'`)."
1112
+ },
1113
+ {
1114
+ name: "observabilityVersion",
1115
+ type: "string",
1116
+ required: false,
1117
+ description: "The version string for observability reporting."
1118
+ },
1119
+ {
1120
+ name: "enableLogging",
1121
+ type: "boolean",
1122
+ required: false,
1123
+ description: "Enable console logging for debugging."
1124
+ },
1125
+ {
1126
+ name: "enableTracing",
1127
+ type: "boolean",
1128
+ required: false,
1129
+ description: "Enable request tracing."
1130
+ },
1131
+ {
1132
+ name: "enableErrorTracking",
1133
+ type: "boolean",
1134
+ required: false,
1135
+ description: "Enable error tracking via observability."
1136
+ }
1137
+ ],
1138
+ FathomAnalyticsOptions: [
1139
+ {
1140
+ name: "site",
1141
+ type: "string",
1142
+ required: true,
1143
+ description: "The Fathom Analytics site ID."
1144
+ },
1145
+ {
1146
+ name: "spa",
1147
+ type: "'auto' | 'history' | 'hash'",
1148
+ required: false,
1149
+ description: "The Fathom Analytics tracking mode.",
1150
+ defaultValue: "'auto'"
1151
+ },
1152
+ {
1153
+ name: "auto",
1154
+ type: "boolean",
1155
+ required: false,
1156
+ description: "Automatically track page views.",
1157
+ defaultValue: "true"
1158
+ },
1159
+ {
1160
+ name: "canonical",
1161
+ type: "boolean",
1162
+ required: false,
1163
+ description: "Enable canonical URL tracking.",
1164
+ defaultValue: "true"
1165
+ },
1166
+ {
1167
+ name: "honorDnt",
1168
+ type: "boolean",
1169
+ required: false,
1170
+ description: "Honor Do Not Track requests.",
1171
+ defaultValue: "false"
1172
+ }
1173
+ ],
1174
+ GoogleAdsenseOptions: [
1175
+ {
1176
+ name: "client",
1177
+ type: "string",
1178
+ required: false,
1179
+ description: "The Google Adsense ID."
1180
+ },
1181
+ {
1182
+ name: "autoAds",
1183
+ type: "boolean",
1184
+ required: false,
1185
+ description: "Enable or disable Auto Ads.",
1186
+ defaultValue: "false"
1187
+ }
1188
+ ],
1189
+ GoogleAnalyticsOptions: [
1190
+ {
1191
+ name: "id",
1192
+ type: "string",
1193
+ required: false,
1194
+ description: "The GA4 measurement ID."
1195
+ },
1196
+ {
1197
+ name: "l",
1198
+ type: "string",
1199
+ required: false,
1200
+ description: "Global name for the dataLayer variable.",
1201
+ defaultValue: "'dataLayer'"
1202
+ }
1203
+ ],
1204
+ GoogleMapsOptions: [
1205
+ {
1206
+ name: "apiKey",
1207
+ type: "string",
1208
+ required: true,
1209
+ description: "Your Google Maps API key."
1210
+ },
1211
+ {
1212
+ name: "libraries",
1213
+ type: "string[]",
1214
+ required: false,
1215
+ description: "The Google Maps libraries to load.",
1216
+ defaultValue: "['places']"
1217
+ },
1218
+ {
1219
+ name: "language",
1220
+ type: "string",
1221
+ required: false,
1222
+ description: "The language code for the map UI and geocoding results."
1223
+ },
1224
+ {
1225
+ name: "region",
1226
+ type: "string",
1227
+ required: false,
1228
+ description: "The region code to bias geocoding results."
1229
+ },
1230
+ {
1231
+ name: "v",
1232
+ type: "'weekly' | 'quarterly' | 'beta' | 'alpha' | string",
1233
+ required: false,
1234
+ description: "The Google Maps JS API version to load.",
1235
+ defaultValue: "'weekly'"
1236
+ }
1237
+ ],
1238
+ GoogleRecaptchaOptions: [
1239
+ {
1240
+ name: "siteKey",
1241
+ type: "string",
1242
+ required: true,
1243
+ description: "Your reCAPTCHA site key."
1244
+ },
1245
+ {
1246
+ name: "enterprise",
1247
+ type: "boolean",
1248
+ required: false,
1249
+ description: "Use the Enterprise version of reCAPTCHA (enterprise.js instead of api.js)."
1250
+ },
1251
+ {
1252
+ name: "recaptchaNet",
1253
+ type: "boolean",
1254
+ required: false,
1255
+ description: "Use recaptcha.net instead of google.com domain. Useful for regions where google.com is blocked."
1256
+ },
1257
+ {
1258
+ name: "hl",
1259
+ type: "string",
1260
+ required: false,
1261
+ description: "Language code for the reCAPTCHA widget."
1262
+ }
1263
+ ],
1264
+ GoogleSignInOptions: [
1265
+ {
1266
+ name: "clientId",
1267
+ type: "string",
1268
+ required: true,
1269
+ description: "Your Google API client ID."
1270
+ },
1271
+ {
1272
+ name: "autoSelect",
1273
+ type: "boolean",
1274
+ required: false,
1275
+ description: "Auto-select credentials when only one Google account is available."
1276
+ },
1277
+ {
1278
+ name: "context",
1279
+ type: "'signin' | 'signup' | 'use'",
1280
+ required: false,
1281
+ description: "The context text for the One Tap prompt."
1282
+ },
1283
+ {
1284
+ name: "useFedcmForPrompt",
1285
+ type: "boolean",
1286
+ required: false,
1287
+ description: "Enable FedCM (Federated Credential Management) API support. Mandatory from August 2025."
1288
+ },
1289
+ {
1290
+ name: "cancelOnTapOutside",
1291
+ type: "boolean",
1292
+ required: false,
1293
+ description: "Cancel the One Tap prompt if the user clicks outside.",
1294
+ defaultValue: "true"
1295
+ },
1296
+ {
1297
+ name: "uxMode",
1298
+ type: "'popup' | 'redirect'",
1299
+ required: false,
1300
+ description: "The UX mode for the sign-in flow."
1301
+ },
1302
+ {
1303
+ name: "loginUri",
1304
+ type: "string",
1305
+ required: false,
1306
+ description: "The URI to redirect to after sign-in when using redirect UX mode."
1307
+ },
1308
+ {
1309
+ name: "itpSupport",
1310
+ type: "boolean",
1311
+ required: false,
1312
+ description: "Enable Intelligent Tracking Prevention (ITP) support for Safari."
1313
+ },
1314
+ {
1315
+ name: "allowedParentOrigin",
1316
+ type: "string | string[]",
1317
+ required: false,
1318
+ description: "Allowed parent origin(s) for iframe embedding."
1319
+ },
1320
+ {
1321
+ name: "hd",
1322
+ type: "string",
1323
+ required: false,
1324
+ description: "Restrict sign-in to a specific Google Workspace hosted domain."
1325
+ }
1326
+ ],
1327
+ GoogleTagManagerOptions: [
1328
+ {
1329
+ name: "id",
1330
+ type: "string",
1331
+ required: true,
1332
+ description: "GTM container ID (format: GTM-XXXXXX)"
1333
+ },
1334
+ {
1335
+ name: "l",
1336
+ type: "string",
1337
+ required: false,
1338
+ description: "Optional dataLayer variable name",
1339
+ defaultValue: "'dataLayer'"
1340
+ },
1341
+ {
1342
+ name: "auth",
1343
+ type: "string",
1344
+ required: false,
1345
+ description: "Authentication token for environment-specific container versions"
1346
+ },
1347
+ {
1348
+ name: "preview",
1349
+ type: "string",
1350
+ required: false,
1351
+ description: "Preview environment name"
1352
+ },
1353
+ {
1354
+ name: "cookiesWin",
1355
+ type: "boolean | 'x'",
1356
+ required: false
1357
+ },
1358
+ {
1359
+ name: "debug",
1360
+ type: "boolean | 'x'",
1361
+ required: false,
1362
+ description: "Enables debug mode when true"
1363
+ },
1364
+ {
1365
+ name: "npa",
1366
+ type: "boolean | '1'",
1367
+ required: false,
1368
+ description: "No Personal Advertising - disables advertising features when true"
1369
+ },
1370
+ {
1371
+ name: "dataLayer",
1372
+ type: "string",
1373
+ required: false
1374
+ },
1375
+ {
1376
+ name: "envName",
1377
+ type: "string",
1378
+ required: false,
1379
+ description: "Environment name for environment-specific container"
1380
+ },
1381
+ {
1382
+ name: "authReferrerPolicy",
1383
+ type: "string",
1384
+ required: false
1385
+ },
1386
+ {
1387
+ name: "defaultConsent",
1388
+ type: "Record<string, string | number>",
1389
+ required: false,
1390
+ description: "Default consent settings for GTM"
1391
+ }
1392
+ ],
1393
+ HotjarOptions: [
1394
+ {
1395
+ name: "id",
1396
+ type: "number",
1397
+ required: true,
1398
+ description: "Your Hotjar Site ID."
1399
+ },
1400
+ {
1401
+ name: "sv",
1402
+ type: "number",
1403
+ required: false,
1404
+ description: "The Hotjar snippet version.",
1405
+ defaultValue: "6"
1406
+ }
1407
+ ],
1408
+ InstagramEmbedOptions: [
1409
+ {
1410
+ name: "postUrl",
1411
+ type: "string",
1412
+ required: true,
1413
+ description: "The Instagram post URL to embed."
1414
+ },
1415
+ {
1416
+ name: "captions",
1417
+ type: "boolean",
1418
+ required: false,
1419
+ description: "Whether to include captions in the embed.",
1420
+ defaultValue: "true"
1421
+ },
1422
+ {
1423
+ name: "apiEndpoint",
1424
+ type: "string",
1425
+ required: false,
1426
+ description: "Custom API endpoint for fetching embed HTML.",
1427
+ defaultValue: "'/_scripts/embed/instagram'"
1428
+ }
1429
+ ],
1430
+ IntercomOptions: [
1431
+ {
1432
+ name: "app_id",
1433
+ type: "string",
1434
+ required: true,
1435
+ description: "Your Intercom app ID."
1436
+ },
1437
+ {
1438
+ name: "api_base",
1439
+ type: "'https://api-iam.intercom.io' | 'https://api-iam.eu.intercom.io' | 'https://api-iam.au.intercom.io'",
1440
+ required: false,
1441
+ description: "The regional API base URL. Choose based on your Intercom data hosting region."
1442
+ },
1443
+ {
1444
+ name: "name",
1445
+ type: "string",
1446
+ required: false,
1447
+ description: "The name of the logged-in user."
1448
+ },
1449
+ {
1450
+ name: "email",
1451
+ type: "string",
1452
+ required: false,
1453
+ description: "The email address of the logged-in user."
1454
+ },
1455
+ {
1456
+ name: "user_id",
1457
+ type: "string",
1458
+ required: false,
1459
+ description: "A unique identifier for the logged-in user."
1460
+ },
1461
+ {
1462
+ name: "alignment",
1463
+ type: "'left' | 'right'",
1464
+ required: false,
1465
+ description: "The horizontal alignment of the Intercom messenger launcher.",
1466
+ defaultValue: "'right'"
1467
+ },
1468
+ {
1469
+ name: "horizontal_padding",
1470
+ type: "number",
1471
+ required: false,
1472
+ description: "The horizontal padding (in px) of the messenger launcher from the edge of the page.",
1473
+ defaultValue: "20"
1474
+ },
1475
+ {
1476
+ name: "vertical_padding",
1477
+ type: "number",
1478
+ required: false,
1479
+ description: "The vertical padding (in px) of the messenger launcher from the bottom of the page.",
1480
+ defaultValue: "20"
1481
+ }
1482
+ ],
1483
+ MatomoAnalyticsOptions: [
1484
+ {
1485
+ name: "matomoUrl",
1486
+ type: "string",
1487
+ required: false,
1488
+ description: "The URL of your self-hosted Matomo instance. Either `matomoUrl` or `cloudId` is required."
1489
+ },
1490
+ {
1491
+ name: "siteId",
1492
+ type: "string | number",
1493
+ required: false,
1494
+ description: "Your Matomo site ID.",
1495
+ defaultValue: "'1'"
1496
+ },
1497
+ {
1498
+ name: "cloudId",
1499
+ type: "string",
1500
+ required: false,
1501
+ description: "Your Matomo Cloud ID (the subdomain portion of your `*.matomo.cloud` URL). Either `matomoUrl` or `cloudId` is required."
1502
+ },
1503
+ {
1504
+ name: "trackerUrl",
1505
+ type: "string",
1506
+ required: false,
1507
+ description: "A custom tracker URL. Overrides the default tracker endpoint derived from `matomoUrl` or `cloudId`."
1508
+ },
1509
+ {
1510
+ name: "trackPageView",
1511
+ type: "boolean",
1512
+ required: false,
1513
+ description: "Whether to track the initial page view on load."
1514
+ },
1515
+ {
1516
+ name: "enableLinkTracking",
1517
+ type: "boolean",
1518
+ required: false,
1519
+ description: "Enable download and outlink tracking."
1520
+ },
1521
+ {
1522
+ name: "disableCookies",
1523
+ type: "boolean",
1524
+ required: false,
1525
+ description: "Disable all tracking cookies for cookieless analytics."
1526
+ },
1527
+ {
1528
+ name: "watch",
1529
+ type: "boolean",
1530
+ required: false,
1531
+ description: "Automatically track page views on route change.",
1532
+ defaultValue: "true"
1533
+ }
1534
+ ],
1535
+ MetaPixelOptions: [
1536
+ {
1537
+ name: "id",
1538
+ type: "string | number",
1539
+ required: true,
1540
+ description: "Your Meta (Facebook) Pixel ID."
1541
+ }
1542
+ ],
1543
+ NpmOptions: [
1544
+ {
1545
+ name: "packageName",
1546
+ type: "string",
1547
+ required: true,
1548
+ description: "The npm package name to load."
1549
+ },
1550
+ {
1551
+ name: "file",
1552
+ type: "string",
1553
+ required: false,
1554
+ description: "The specific file path within the package to load."
1555
+ },
1556
+ {
1557
+ name: "version",
1558
+ type: "string",
1559
+ required: false,
1560
+ description: "The package version to load.",
1561
+ defaultValue: "'latest'"
1562
+ },
1563
+ {
1564
+ name: "provider",
1565
+ type: "'jsdelivr' | 'cdnjs' | 'unpkg'",
1566
+ required: false,
1567
+ description: "The CDN provider to use for loading the package.",
1568
+ defaultValue: "'unpkg'"
1569
+ }
1570
+ ],
1571
+ PostHogOptions: [
1572
+ {
1573
+ name: "apiKey",
1574
+ type: "string",
1575
+ required: true,
1576
+ description: "Your PostHog project API key."
1577
+ },
1578
+ {
1579
+ name: "region",
1580
+ type: "'us' | 'eu'",
1581
+ required: false,
1582
+ description: "Your PostHog data region.",
1583
+ defaultValue: "'us'"
1584
+ },
1585
+ {
1586
+ name: "apiHost",
1587
+ type: "string",
1588
+ required: false,
1589
+ description: "Custom API host URL. Overrides the default derived from `region`. Useful for self-hosted instances or reverse proxies."
1590
+ },
1591
+ {
1592
+ name: "autocapture",
1593
+ type: "boolean",
1594
+ required: false,
1595
+ description: "Enable autocapture of clicks, form submissions, and page views.",
1596
+ defaultValue: "true"
1597
+ },
1598
+ {
1599
+ name: "capturePageview",
1600
+ type: "boolean | 'history_change'",
1601
+ required: false,
1602
+ description: "Capture page views automatically. Set to `'history_change'` to only capture on history changes.",
1603
+ defaultValue: "true"
1604
+ },
1605
+ {
1606
+ name: "capturePageleave",
1607
+ type: "boolean",
1608
+ required: false,
1609
+ description: "Capture page leave events automatically.",
1610
+ defaultValue: "true"
1611
+ },
1612
+ {
1613
+ name: "disableSessionRecording",
1614
+ type: "boolean",
1615
+ required: false,
1616
+ description: "Disable session recording."
1617
+ },
1618
+ {
1619
+ name: "config",
1620
+ type: "Record<string, any>",
1621
+ required: false,
1622
+ description: "Additional PostHog configuration options passed directly to `posthog.init()`."
1623
+ }
1624
+ ],
1625
+ RedditPixelOptions: [
1626
+ {
1627
+ name: "id",
1628
+ type: "string",
1629
+ required: true,
1630
+ description: "Your Reddit Pixel advertiser ID."
1631
+ }
1632
+ ],
1633
+ RybbitAnalyticsOptions: [
1634
+ {
1635
+ name: "siteId",
1636
+ type: "string | number",
1637
+ required: true,
1638
+ description: "Your Rybbit site ID."
1639
+ },
1640
+ {
1641
+ name: "autoTrackPageview",
1642
+ type: "boolean",
1643
+ required: false,
1644
+ description: "Automatically track page views.",
1645
+ defaultValue: "true"
1646
+ },
1647
+ {
1648
+ name: "trackSpa",
1649
+ type: "boolean",
1650
+ required: false,
1651
+ description: "Enable SPA (single-page app) route tracking.",
1652
+ defaultValue: "true"
1653
+ },
1654
+ {
1655
+ name: "trackQuery",
1656
+ type: "boolean",
1657
+ required: false,
1658
+ description: "Include query parameters in tracked URLs."
1659
+ },
1660
+ {
1661
+ name: "trackOutbound",
1662
+ type: "boolean",
1663
+ required: false,
1664
+ description: "Track outbound link clicks."
1665
+ },
1666
+ {
1667
+ name: "trackErrors",
1668
+ type: "boolean",
1669
+ required: false,
1670
+ description: "Track JavaScript errors."
1671
+ },
1672
+ {
1673
+ name: "sessionReplay",
1674
+ type: "boolean",
1675
+ required: false,
1676
+ description: "Enable session replay recording."
1677
+ },
1678
+ {
1679
+ name: "webVitals",
1680
+ type: "boolean",
1681
+ required: false,
1682
+ description: "Enable Web Vitals tracking (LCP, FID, CLS, etc.)."
1683
+ },
1684
+ {
1685
+ name: "skipPatterns",
1686
+ type: "string[]",
1687
+ required: false,
1688
+ description: "URL patterns to skip from tracking (glob syntax)."
1689
+ },
1690
+ {
1691
+ name: "maskPatterns",
1692
+ type: "string[]",
1693
+ required: false,
1694
+ description: "URL patterns to mask in tracked data (glob syntax)."
1695
+ },
1696
+ {
1697
+ name: "debounce",
1698
+ type: "number",
1699
+ required: false,
1700
+ description: "Debounce interval (in ms) for page view tracking."
1701
+ },
1702
+ {
1703
+ name: "apiKey",
1704
+ type: "string",
1705
+ required: false,
1706
+ description: "API key for authenticated tracking."
1707
+ },
1708
+ {
1709
+ name: "analyticsHost",
1710
+ type: "string",
1711
+ required: false,
1712
+ description: "Override the analytics host URL. When first-party mode is enabled, this is auto-injected to route through the proxy. The SDK derives its API endpoint from the script src, so this changes the script src to `${analyticsHost}/script.js`."
1713
+ }
1714
+ ],
1715
+ SegmentOptions: [
1716
+ {
1717
+ name: "writeKey",
1718
+ type: "string",
1719
+ required: true,
1720
+ description: "Your Segment write key."
1721
+ },
1722
+ {
1723
+ name: "analyticsKey",
1724
+ type: "string",
1725
+ required: false,
1726
+ description: "The global variable name for the analytics instance.",
1727
+ defaultValue: "'analytics'"
1728
+ }
1729
+ ],
1730
+ InitObjectPropertiesSchema: [
1731
+ {
1732
+ name: "user_email",
1733
+ type: "string",
1734
+ required: false,
1735
+ description: "The user's email address (for matching)."
1736
+ },
1737
+ {
1738
+ name: "ip_address",
1739
+ type: "string",
1740
+ required: false,
1741
+ description: "The user's IP address."
1742
+ },
1743
+ {
1744
+ name: "user_phone_number",
1745
+ type: "string",
1746
+ required: false,
1747
+ description: "The user's phone number (for matching)."
1748
+ },
1749
+ {
1750
+ name: "user_hashed_email",
1751
+ type: "string",
1752
+ required: false,
1753
+ description: "SHA-256 hashed email address."
1754
+ },
1755
+ {
1756
+ name: "user_hashed_phone_number",
1757
+ type: "string",
1758
+ required: false,
1759
+ description: "SHA-256 hashed phone number."
1760
+ },
1761
+ {
1762
+ name: "firstname",
1763
+ type: "string",
1764
+ required: false,
1765
+ description: "The user's first name."
1766
+ },
1767
+ {
1768
+ name: "lastname",
1769
+ type: "string",
1770
+ required: false,
1771
+ description: "The user's last name."
1772
+ },
1773
+ {
1774
+ name: "geo_city",
1775
+ type: "string",
1776
+ required: false,
1777
+ description: "The user's city."
1778
+ },
1779
+ {
1780
+ name: "geo_region",
1781
+ type: "string",
1782
+ required: false,
1783
+ description: "The user's region/state."
1784
+ },
1785
+ {
1786
+ name: "geo_postal_code",
1787
+ type: "string",
1788
+ required: false,
1789
+ description: "The user's postal/zip code."
1790
+ },
1791
+ {
1792
+ name: "geo_country",
1793
+ type: "string",
1794
+ required: false,
1795
+ description: "The user's country code."
1796
+ },
1797
+ {
1798
+ name: "age",
1799
+ type: "string",
1800
+ required: false,
1801
+ description: "The user's age."
1802
+ }
1803
+ ],
1804
+ SnapTrPixelOptions: [
1805
+ {
1806
+ name: "id",
1807
+ type: "string",
1808
+ required: true,
1809
+ description: "Your Snapchat Pixel ID."
1810
+ },
1811
+ {
1812
+ name: "trackPageView",
1813
+ type: "boolean",
1814
+ required: false,
1815
+ description: "Whether to automatically track a `PAGE_VIEW` event on initialization."
1816
+ }
1817
+ ],
1818
+ StripeOptions: [
1819
+ {
1820
+ name: "advancedFraudSignals",
1821
+ type: "boolean",
1822
+ required: false,
1823
+ description: "Whether to load Stripe's advanced fraud detection signals. Set to `false` to opt out.",
1824
+ defaultValue: "true"
1825
+ }
1826
+ ],
1827
+ TikTokPixelOptions: [
1828
+ {
1829
+ name: "id",
1830
+ type: "string",
1831
+ required: true,
1832
+ description: "Your TikTok Pixel ID."
1833
+ },
1834
+ {
1835
+ name: "trackPageView",
1836
+ type: "boolean",
1837
+ required: false,
1838
+ description: "Whether to automatically track a page view on initialization.",
1839
+ defaultValue: "true"
1840
+ }
1841
+ ],
1842
+ UmamiAnalyticsOptions: [
1843
+ {
1844
+ name: "websiteId",
1845
+ type: "string",
1846
+ required: true,
1847
+ description: "Your Umami website ID."
1848
+ },
1849
+ {
1850
+ name: "hostUrl",
1851
+ type: "string",
1852
+ required: false,
1853
+ description: "By default, Umami will send data to wherever the script is located. You can override this to send data to another location."
1854
+ },
1855
+ {
1856
+ name: "autoTrack",
1857
+ type: "boolean",
1858
+ required: false,
1859
+ description: "By default, Umami tracks all pageviews and events for you automatically. You can disable this behavior and track events yourself using the tracker functions.",
1860
+ defaultValue: "true"
1861
+ },
1862
+ {
1863
+ name: "domains",
1864
+ type: "string[]",
1865
+ required: false,
1866
+ description: "If you want the tracker to only run on specific domains, you can add them to your tracker script. This is a comma delimited list of domain names. Helps if you are working in a staging/development environment."
1867
+ },
1868
+ {
1869
+ name: "tag",
1870
+ type: "string",
1871
+ required: false,
1872
+ description: "If you want the tracker to collect events under a specific tag. Events can be filtered in the dashboard by a specific tag."
1873
+ },
1874
+ {
1875
+ name: "beforeSend",
1876
+ type: "Function | string",
1877
+ required: false,
1878
+ description: "Function that will be called before data is sent to Umami. The function takes two parameters: type and payload. Return the payload to continue sending, or return a falsy value to cancel."
1879
+ }
1880
+ ],
1881
+ XEmbedOptions: [
1882
+ {
1883
+ name: "tweetId",
1884
+ type: "string",
1885
+ required: true,
1886
+ description: "The tweet ID to embed."
1887
+ },
1888
+ {
1889
+ name: "apiEndpoint",
1890
+ type: "string",
1891
+ required: false,
1892
+ description: "Optional: Custom API endpoint for fetching tweet data.",
1893
+ defaultValue: "'/_scripts/embed/x'"
1894
+ },
1895
+ {
1896
+ name: "imageProxyEndpoint",
1897
+ type: "string",
1898
+ required: false,
1899
+ description: "Optional: Custom image proxy endpoint.",
1900
+ defaultValue: "'/_scripts/embed/x-image'"
1901
+ }
1902
+ ],
1903
+ VercelAnalyticsOptions: [
1904
+ {
1905
+ name: "dsn",
1906
+ type: "string",
1907
+ required: false,
1908
+ description: "The DSN of the project to send events to. Only required when self-hosting or deploying outside of Vercel."
1909
+ },
1910
+ {
1911
+ name: "disableAutoTrack",
1912
+ type: "boolean",
1913
+ required: false,
1914
+ description: "Whether to disable automatic page view tracking on route changes. Set to true if you want to manually call pageview()."
1915
+ },
1916
+ {
1917
+ name: "mode",
1918
+ type: "'auto' | 'development' | 'production'",
1919
+ required: false,
1920
+ description: "The mode to use for the analytics script. - `auto` - Automatically detect the environment (default) - `production` - Always use production script - `development` - Always use development script (logs to console)"
1921
+ },
1922
+ {
1923
+ name: "debug",
1924
+ type: "boolean",
1925
+ required: false,
1926
+ description: "Whether to enable debug logging. Automatically enabled in development/test environments."
1927
+ },
1928
+ {
1929
+ name: "endpoint",
1930
+ type: "string",
1931
+ required: false,
1932
+ description: "Custom endpoint for data collection. Useful for self-hosted or proxied setups."
1933
+ }
1934
+ ],
1935
+ XPixelOptions: [
1936
+ {
1937
+ name: "id",
1938
+ type: "string",
1939
+ required: true,
1940
+ description: "Your X (Twitter) Pixel ID."
1941
+ },
1942
+ {
1943
+ name: "version",
1944
+ type: "string",
1945
+ required: false,
1946
+ description: "The X Pixel script version.",
1947
+ defaultValue: "'1.1'"
1948
+ }
1949
+ ],
1950
+ GravatarOptions: [
1951
+ {
1952
+ name: "cacheMaxAge",
1953
+ type: "number",
1954
+ required: false,
1955
+ description: "Cache duration for proxied avatar images in seconds.",
1956
+ defaultValue: "3600"
1957
+ },
1958
+ {
1959
+ name: "default",
1960
+ type: "string",
1961
+ required: false,
1962
+ description: "Default image to show when no Gravatar exists.",
1963
+ defaultValue: "'mp'"
1964
+ },
1965
+ {
1966
+ name: "size",
1967
+ type: "number",
1968
+ required: false,
1969
+ description: "Avatar size in pixels (1-2048).",
1970
+ defaultValue: "80"
1971
+ },
1972
+ {
1973
+ name: "rating",
1974
+ type: "string",
1975
+ required: false,
1976
+ description: "Content rating filter.",
1977
+ defaultValue: "'g'"
1978
+ }
1979
+ ]
1980
+ };
1981
+ const registryTypesJson = {
1982
+ types: types,
1983
+ schemaFields: schemaFields
873
1984
  };
874
1985
 
875
- const JSDOC_START_RE = /^\s*\/\*\*/;
876
- const JSDOC_END_RE = /^\s*\*\//;
877
- const DOC_LINE_RE = /^\s*\*\s?(.*)/;
878
- const DEFAULT_TAG_RE = /^@default\s*/;
879
- const NAME_MATCH_RE = /^\s*(\w+)/;
880
- const FIELD_MATCH_RE = /^\s*(\w+)\s*:/;
1986
+ const registryTypes = registryTypesJson.types || registryTypesJson;
881
1987
  function getRegistryTypes() {
882
1988
  return registryTypes;
883
1989
  }
884
- function resolveType(schema) {
885
- if (!schema)
886
- return "unknown";
887
- switch (schema.type) {
888
- case "string":
889
- return "string";
890
- case "number":
891
- return "number";
892
- case "boolean":
893
- return "boolean";
894
- case "array":
895
- return `${resolveType(schema.item)}[]`;
896
- case "object":
897
- return "object";
898
- case "union":
899
- return schema.options?.map((o) => resolveType(o)).join(" | ") || "unknown";
900
- case "literal":
901
- return typeof schema.literal === "string" ? `'${schema.literal}'` : String(schema.literal);
902
- case "record":
903
- return `Record<${resolveType(schema.key)}, ${resolveType(schema.value)}>`;
904
- case "custom":
905
- return "Function";
906
- case "any":
907
- return "any";
908
- default:
909
- return schema.type || "unknown";
910
- }
911
- }
912
- function parseComments(code) {
913
- const result = {};
914
- const lines = code.split("\n");
915
- let desc = "";
916
- let def = "";
917
- for (const line of lines) {
918
- if (JSDOC_START_RE.test(line)) {
919
- desc = "";
920
- def = "";
921
- continue;
922
- }
923
- if (JSDOC_END_RE.test(line))
924
- continue;
925
- const docLine = line.match(DOC_LINE_RE);
926
- if (docLine) {
927
- const content = docLine[1].trim();
928
- if (content.startsWith("@default"))
929
- def = content.replace(DEFAULT_TAG_RE, "");
930
- else if (!content.startsWith("@") && content)
931
- desc += (desc ? " " : "") + content;
932
- continue;
933
- }
934
- const colonIdx = line.indexOf(":");
935
- const commentIdx = colonIdx > 0 ? line.indexOf("//", colonIdx) : -1;
936
- if (colonIdx > 0 && commentIdx > colonIdx) {
937
- const nameMatch = line.match(NAME_MATCH_RE);
938
- if (nameMatch) {
939
- const comment = line.slice(commentIdx + 2).trim();
940
- result[nameMatch[1]] = { description: desc || comment, defaultValue: def || void 0 };
941
- desc = "";
942
- def = "";
943
- continue;
944
- }
945
- }
946
- const fieldMatch = line.match(FIELD_MATCH_RE);
947
- if (fieldMatch) {
948
- if (desc || def)
949
- result[fieldMatch[1]] = { description: desc || void 0, defaultValue: def || void 0 };
950
- desc = "";
951
- def = "";
952
- }
953
- }
954
- return result;
955
- }
956
1990
  function getRegistrySchemaFields() {
957
- const types = registryTypes;
958
- const result = {};
959
- for (const declarations of Object.values(types)) {
960
- for (const decl of declarations) {
961
- if (decl.kind !== "const" || decl.name.endsWith("Defaults"))
962
- continue;
963
- const schema = schemas[decl.name];
964
- if (!schema?.entries)
965
- continue;
966
- const comments = parseComments(decl.code);
967
- const fields = [];
968
- for (const [name, entry] of Object.entries(schema.entries)) {
969
- const e = entry;
970
- const isOptional = e.type === "optional";
971
- const inner = isOptional ? e.wrapped : e;
972
- fields.push({
973
- name,
974
- type: resolveType(inner),
975
- required: !isOptional,
976
- description: comments[name]?.description,
977
- defaultValue: comments[name]?.defaultValue
978
- });
979
- }
980
- if (fields.length)
981
- result[decl.name] = fields;
982
- }
983
- }
984
- return result;
1991
+ return registryTypesJson.schemaFields || {};
985
1992
  }
986
1993
 
987
1994
  export { getRegistrySchemaFields, getRegistryTypes };