@ubean/client 0.2.0

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.
@@ -0,0 +1,486 @@
1
+ import { A as CreateUbeanRouterOptions, C as useUnheadHead, D as definePage, E as defineMiddleware, O as UbeanVuePage, S as useSeoMeta, T as defineMeta, _ as VueHeadClient$1, h as UbeanAppOptions, j as createUbeanRouter, k as usePage, m as UbeanAppInstance, n as Head, v as createUbeanClientApp, y as createUbeanSSRApp } from "./app-BknjDM9j.js";
2
+ import { AppPluginConfig, DefineAppOptions, ResolvedAppConfig, applyAppConfig, createDefaultAppConfig, defineApp, mergeAppConfig } from "./define-app.js";
3
+ import { ComputedRef, Ref, ShallowRef } from "vue";
4
+ import { useRouter } from "vue-router";
5
+ import { ERROR_KEY, ErrorBoundary, LAYOUT_CHAIN_KEY, LOADING_KEY, LOCALIZE_PATH_KEY, LayoutChainContext, LayoutChainRenderer, Link, PAGE_KEY, PageView, RouteLocation, RouteLocationRaw, SSR_KEY, SlotView, TRANSITION_KEY, TypedLinkProps, UbeanVueOptions, UbeanVuePageData, UseCacheViewsReturn, UsePageTransitionReturn, UseReloadSignalReturn, ViewTransitionOptions, clearPageTransition, disablePageCache, enablePageCache, excludePageCache, getCacheEnabled, getCachedViewNames, getExcludedViewNames, getNamedPageWrapper, getNavigationType, getPageTransitionName, getReloadCounter, includePageCache, initCachedViewsFromRoutes, invalidatePageCache, isActiveRoute, isCacheEnabled, isPageCached, isPageExcluded, isReloading, reloadPage, resetNamedPageWrappers, resetRouteCache, resolveRoute, setPageTransition, supportsViewTransitions, ubeanVue, useCacheViews, usePageTransition, useReloadSignal, useViewTransition, useViewTransitionState, withViewTransition } from "@ubean/vue";
6
+ import { VueHeadClient, injectHead } from "@unhead/vue";
7
+ import { createHead as createClientHead } from "@unhead/vue/client";
8
+ import { PageObject } from "@ubean/pages";
9
+ import { I18nConfig, LocaleChangeCallback, LocaleDefinition, LocaleMessages } from "@ubean/i18n";
10
+ import { HydrateIslandsOptions, IslandHydrateOptions, IslandRecord, collectIslands, hydrateIsland, hydrateIslands } from "@ubean/islands/runtime";
11
+ import { LinkTag, MetaTag, SeoMetadata } from "@ubean/seo";
12
+ //#region src/client.d.ts
13
+ declare function getInitialPageData<T = Record<string, unknown>>(): PageObject<T> | null;
14
+ /**
15
+ * 从 DOM 中的 `<script id="__UBEAN_STATE__">` 读取 SSR 序列化的状态。
16
+ *
17
+ * 该状态由服务端 `defineApp({ serializeState })` 产生,用于在客户端 mount 前
18
+ * 水合到对应的库实例(如 Pinia 的 `pinia.state.value`)。
19
+ *
20
+ * 必须在 `app.mount()` 之前调用(在 `defineApp({ hydrateState })` 内部使用)。
21
+ *
22
+ * @returns 解析后的状态对象,或 `null`(无状态 / 解析失败 / 非 DOM 环境)
23
+ */
24
+ declare function getInitialState(): Record<string, unknown> | null;
25
+ //#endregion
26
+ //#region src/head.d.ts
27
+ declare function useHeadInstance(): import("@unhead/vue").VueHeadClient;
28
+ //#endregion
29
+ //#region src/composables.d.ts
30
+ interface UbeanVueContext {
31
+ __ubean_router?: import('vue-router').Router;
32
+ __ubean_data_cache?: DataCacheStore;
33
+ }
34
+ interface LinkProps {
35
+ href: string;
36
+ replace?: boolean;
37
+ prefetch?: boolean;
38
+ }
39
+ interface DataCacheStore {
40
+ get: <T = unknown>(key: string | symbol) => T | undefined;
41
+ set: <T = unknown>(key: string | symbol, value: T, tags?: string[]) => void;
42
+ has: (key: string | symbol) => boolean;
43
+ invalidate: (keyOrTag: string | symbol) => number;
44
+ clear: () => void;
45
+ subscribe: (fn: () => void) => () => void;
46
+ getTimestamp: (key: string | symbol) => number | undefined;
47
+ }
48
+ declare function createDataCacheStore(): DataCacheStore;
49
+ interface UseAsyncDataOptions<T> {
50
+ key?: string;
51
+ tags?: string[];
52
+ lazy?: boolean;
53
+ server?: boolean;
54
+ default?: () => T;
55
+ transform?: (input: unknown) => T;
56
+ }
57
+ interface UseAsyncDataReturn<T> {
58
+ data: {
59
+ value: T | undefined;
60
+ };
61
+ error: {
62
+ value: Error | null;
63
+ };
64
+ loading: {
65
+ value: boolean;
66
+ };
67
+ refresh: () => Promise<void>;
68
+ invalidate: () => void;
69
+ }
70
+ declare function createUseAsyncData(store: DataCacheStore): <T = unknown>(keyOrFetcher: string | (() => Promise<T>), fetcherOrOptions?: (() => Promise<T>) | UseAsyncDataOptions<T>, options?: UseAsyncDataOptions<T>) => UseAsyncDataReturn<T>;
71
+ declare function invalidateCache(store: DataCacheStore, keyOrTag: string): number;
72
+ declare function clearCache(store: DataCacheStore): void;
73
+ declare function defineDataKey(key: string): symbol;
74
+ declare function createLinkHandler(ctx: UbeanVueContext): {
75
+ getProps: () => {};
76
+ navigate(href: string, opts?: {
77
+ replace?: boolean;
78
+ }): Promise<void>;
79
+ prefetch(_href: string): Promise<void>;
80
+ };
81
+ declare function extractPageData<T = Record<string, unknown>>(): PageObject<T> | null;
82
+ declare function useServerData<T>(fetcher: () => Promise<T>): Promise<T>;
83
+ declare function getInvalidatedKeysForAction(actionName: string, invalidationMap: Record<string, Array<string | symbol>>, store: DataCacheStore): number;
84
+ //#endregion
85
+ //#region src/i18n.d.ts
86
+ declare function initClientI18n(): void;
87
+ interface VueI18nInstance {
88
+ locale: {
89
+ value: string;
90
+ };
91
+ fallbackLocale: string;
92
+ availableLocales: string[];
93
+ t: (key: string, params?: Record<string, string | number>) => string;
94
+ setLocale: (locale: string) => void;
95
+ getLocale: () => string;
96
+ onLocaleChange: (callback: LocaleChangeCallback) => () => void;
97
+ getLocaleDir: (locale?: string) => 'ltr' | 'rtl';
98
+ getLocaleName: (locale?: string) => string | undefined;
99
+ localeDir: {
100
+ value: 'ltr' | 'rtl';
101
+ };
102
+ localeName: {
103
+ value: string | undefined;
104
+ };
105
+ }
106
+ declare function useI18n(): VueI18nInstance;
107
+ declare function defineLocale(definition: LocaleDefinition): LocaleDefinition;
108
+ declare function t(key: string, params?: Record<string, string | number>): string;
109
+ declare function setLocale(locale: string): void;
110
+ declare function getLocale(): string;
111
+ declare function onLocaleChange(callback: LocaleChangeCallback): () => void;
112
+ declare function getLocaleDir(locale?: string): 'ltr' | 'rtl';
113
+ declare function getLocaleName(locale?: string): string | undefined;
114
+ declare function getRegisteredLocales(): string[];
115
+ declare function detectLocale(acceptLanguage?: string): string;
116
+ declare function detectBrowserLocale(): string;
117
+ declare function addLocale(code: string, messages: LocaleMessages, options?: {
118
+ name?: string;
119
+ dir?: 'ltr' | 'rtl';
120
+ }): void;
121
+ declare function mergeLocale(code: string, messages: LocaleMessages): void;
122
+ declare function clearLocales(): void;
123
+ declare function getI18nConfig(): I18nConfig;
124
+ declare function setI18nConfig(config: Partial<I18nConfig>): void;
125
+ declare function localizePath(path: string, locale?: string): string;
126
+ declare function switchLocalePath(newLocale: string, currentPath?: string): string;
127
+ declare function getDefaultLocale(): string;
128
+ declare function extractLocaleFromPath(path: string): {
129
+ locale: string | null;
130
+ pathWithoutLocale: string;
131
+ };
132
+ declare function useSwitchLocalePath(): import("vue").ComputedRef<(newLocale: string) => any>;
133
+ declare function useLocalePath(): import("vue").ComputedRef<(path: string, locale?: string) => any>;
134
+ //#endregion
135
+ //#region src/color-mode.d.ts
136
+ interface ColorModeConfig {
137
+ /** Default preference: 'system' | 'light' | 'dark' | string (default: 'system'). */
138
+ preference: string;
139
+ /** Fallback when system preference can't be determined (default: 'light'). */
140
+ fallback: string;
141
+ /** Class prefix for the html element (default: ''). */
142
+ classPrefix: string;
143
+ /** Class suffix (default: '-mode' → 'light-mode', 'dark-mode'). */
144
+ classSuffix: string;
145
+ /** localStorage key for persisting user preference (default: 'ubean-color-mode'). */
146
+ storageKey: string;
147
+ /** Cookie name for SSR (default: 'ubean-color-mode'). */
148
+ cookieName: string;
149
+ /**
150
+ * Use a `data-color-mode` attribute on `<html>` instead of a class.
151
+ * When `true`, no class is added; instead `data-color-mode="<value>"` is set.
152
+ * (default: `false`)
153
+ */
154
+ dataValue: boolean;
155
+ /** List of all possible color mode values (default: ['light', 'dark']). */
156
+ modes: string[];
157
+ }
158
+ interface ColorMode {
159
+ /** User's preference ('system', 'light', 'dark', or custom). */
160
+ preference: Ref<string>;
161
+ /** Resolved mode ('light', 'dark', or custom — never 'system'). */
162
+ value: ComputedRef<string>;
163
+ /** Whether the system preference is unknown (e.g. no `prefers-color-scheme`). */
164
+ unknown: Ref<boolean>;
165
+ /** Whether the color mode is forced (e.g. by route meta). */
166
+ forced: Ref<boolean>;
167
+ /** Set the preference and persist it. */
168
+ set: (mode: string) => void;
169
+ /** Cycle to the next mode in the modes list. */
170
+ toggle: () => void;
171
+ }
172
+ /** Merge user config with defaults. */
173
+ declare function resolveColorModeConfig(config?: Partial<ColorModeConfig>): ColorModeConfig;
174
+ /**
175
+ * Generate the no-FOUC inline script that resolves the color mode and sets
176
+ * the `<html>` class/attribute **before** the page renders.
177
+ *
178
+ * The script:
179
+ * 1. Reads the user's preference from a cookie (SSR-friendly) or localStorage.
180
+ * 2. If preference is 'system', checks `prefers-color-scheme`.
181
+ * 3. Falls back to `config.fallback` if system preference is unknown.
182
+ * 4. Sets the class or `data-*` attribute on `<html>`.
183
+ *
184
+ * This script is injected into `<head>` and runs synchronously.
185
+ */
186
+ declare function getColorModeScript(config: ColorModeConfig): string;
187
+ /** Configure the color mode module (called once during app initialization). */
188
+ declare function configureColorMode(config?: Partial<ColorModeConfig>): ColorModeConfig;
189
+ /** Get the current color mode config. */
190
+ declare function getColorModeConfig(): ColorModeConfig;
191
+ /**
192
+ * Reactively access and control the color mode.
193
+ *
194
+ * Returns a `ColorMode` object with reactive refs and methods:
195
+ * - `preference` — the user's preference ('system', 'light', 'dark', ...)
196
+ * - `value` — the resolved mode (never 'system')
197
+ * - `unknown` — whether the system preference is unknown
198
+ * - `forced` — whether the mode is forced (e.g. by route meta)
199
+ * - `set(mode)` — set the preference and persist it
200
+ * - `toggle()` — cycle to the next mode
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * const colorMode = useColorMode();
205
+ * console.log(colorMode.value); // 'dark'
206
+ * colorMode.set('light');
207
+ * colorMode.toggle(); // cycles: light → dark → light
208
+ * ```
209
+ */
210
+ declare function useColorMode(): ColorMode;
211
+ /**
212
+ * Force a color mode (e.g. from route meta `colorMode: 'dark'`).
213
+ * When forced, user changes are ignored until `unforceColorMode()` is called.
214
+ */
215
+ declare function forceColorMode(mode: string): void;
216
+ /**
217
+ * Remove the forced color mode, returning to user preference.
218
+ */
219
+ declare function unforceColorMode(): void;
220
+ /**
221
+ * Reset the color mode module state (for testing).
222
+ * @internal
223
+ */
224
+ declare function _resetColorMode(): void;
225
+ //#endregion
226
+ //#region src/party-town.d.ts
227
+ interface PartyTownConfig {
228
+ /** Enable Partytown for third-party scripts (default: false, opt-in). */
229
+ enabled: boolean;
230
+ /**
231
+ * Path where Partytown lib files are served (default: '~partytown').
232
+ * The Vite plugin copies partytown lib files to `public/<libPath>/`.
233
+ */
234
+ libPath: string;
235
+ /**
236
+ * Forward calls to main thread (e.g. `['dataLayer.push']`).
237
+ * These are global functions/objects that Partytown should forward
238
+ * from the Web Worker to the main thread.
239
+ */
240
+ forward: string[];
241
+ /** Main thread accessors (e.g. `['document.cookie']`). */
242
+ mainAccess?: string[];
243
+ /** Enable debug mode (default: false). */
244
+ debug: boolean;
245
+ /** Log script execution errors (default: false). */
246
+ logScriptExecution: boolean;
247
+ /** Whether to load scripts in a non-blocking way (default: true). */
248
+ nonBlocking: boolean;
249
+ }
250
+ /** Merge user config with defaults. */
251
+ declare function resolvePartyTownConfig(config?: Partial<PartyTownConfig>): PartyTownConfig;
252
+ /**
253
+ * Generate the inline Partytown config script for `<head>`.
254
+ *
255
+ * This script configures `window.partytown` **before** the Partytown lib
256
+ * snippet loads. The Partytown lib is loaded via a separate `<script>`
257
+ * tag that reads `window.partytown` for configuration.
258
+ *
259
+ * Returns an empty string if Partytown is not enabled.
260
+ */
261
+ declare function getPartyTownScript(config: PartyTownConfig): string;
262
+ /**
263
+ * Generate the full HTML for Partytown initialization.
264
+ * Used by the Vite plugin to inject into `<head>`.
265
+ */
266
+ declare function getPartyTownHeadContent(config: PartyTownConfig): string;
267
+ type ScriptTrigger = 'load' | 'idle' | 'visible' | 'manual';
268
+ interface UseScriptOptions {
269
+ /** When to load the script (default: 'load'). */
270
+ trigger?: ScriptTrigger;
271
+ /**
272
+ * Run the script in Partytown (Web Worker).
273
+ * When `true`, sets `type="text/partytown"` on the script tag.
274
+ * (default: false)
275
+ */
276
+ partytown?: boolean;
277
+ /** Script `async` attribute (default: true for non-module scripts). */
278
+ async?: boolean;
279
+ /** Script `defer` attribute (default: false). */
280
+ defer?: boolean;
281
+ /** Script `type` attribute (e.g. 'module', 'application/json'). */
282
+ type?: string;
283
+ /** Additional HTML attributes for the `<script>` tag. */
284
+ attrs?: Record<string, string>;
285
+ /** Element ref to observe for `trigger: 'visible'`. Required when trigger is 'visible'. */
286
+ target?: Ref<HTMLElement | null | undefined>;
287
+ /** Root element for IntersectionObserver (default: viewport). */
288
+ rootMargin?: string;
289
+ /** Threshold for IntersectionObserver (default: 0). */
290
+ threshold?: number;
291
+ /** Crossorigin attribute. */
292
+ crossorigin?: 'anonymous' | 'use-credentials';
293
+ /** Referrer policy. */
294
+ referrerPolicy?: ReferrerPolicy;
295
+ /** Whether to remove the script when the component unmounts (default: false). */
296
+ removeOnUnmount?: boolean;
297
+ }
298
+ interface UseScriptReturn {
299
+ /** The script element (null until loaded). */
300
+ script: Ref<HTMLScriptElement | null>;
301
+ /** Whether the script has been loaded. */
302
+ loaded: Ref<boolean>;
303
+ /** Whether the script failed to load. */
304
+ error: Ref<boolean>;
305
+ /** Manually trigger loading (for `trigger: 'manual'`). */
306
+ load: () => void;
307
+ /** Remove the script from the DOM. */
308
+ remove: () => void;
309
+ /** Wait for the script to load. Returns a promise that resolves on load. */
310
+ waitForLoad: () => Promise<void>;
311
+ }
312
+ /**
313
+ * Load a third-party script with a loading strategy.
314
+ *
315
+ * @param src - The script URL
316
+ * @param options - Loading options
317
+ * @returns Script control object with `load()`, `remove()`, and reactive state
318
+ *
319
+ * @example
320
+ * ```typescript
321
+ * // Load immediately with Partytown
322
+ * useScript('https://www.googletagmanager.com/gtag/js?id=GA_ID', {
323
+ * partytown: true,
324
+ * trigger: 'load'
325
+ * });
326
+ *
327
+ * // Load when browser is idle
328
+ * const { load } = useScript('/heavy-script.js', { trigger: 'idle' });
329
+ *
330
+ * // Load when element is visible
331
+ * const targetRef = ref<HTMLElement | null>(null);
332
+ * useScript('/analytics.js', { trigger: 'visible', target: targetRef });
333
+ * ```
334
+ */
335
+ declare function useScript(src: string, options?: UseScriptOptions): UseScriptReturn;
336
+ /** Configure the Partytown module globally. */
337
+ declare function configurePartyTown(config?: Partial<PartyTownConfig>): PartyTownConfig;
338
+ /** Get the current Partytown config. */
339
+ declare function getPartyTownConfig(): PartyTownConfig;
340
+ /** Check if Partytown is enabled. */
341
+ declare function isPartyTownEnabled(): boolean;
342
+ /** Reset Partytown module state (for testing). @internal */
343
+ declare function _resetPartyTown(): void;
344
+ //#endregion
345
+ //#region src/search.d.ts
346
+ /** A single search result from Pagefind. */
347
+ interface SearchResult {
348
+ /** Unique internal ID of the result. */
349
+ id: number;
350
+ /** The URL of the page this result points to. */
351
+ url: string;
352
+ /** HTML excerpt with matched terms highlighted (via `<mark>`). */
353
+ excerpt: string;
354
+ /** Page metadata extracted during indexing (title, description, etc.). */
355
+ meta: Record<string, string>;
356
+ /** Weighted relevance score (higher = more relevant). */
357
+ score: number;
358
+ /** Word count of the matched content. */
359
+ wordCount?: number;
360
+ /** Raw data reference (advanced use). */
361
+ data?: unknown;
362
+ }
363
+ /** Filter options passed to `pagefind.search()`. */
364
+ interface SearchFilters {
365
+ /** Key-value filters (e.g. `{ tags: 'guide' }` matches `data-pagefind-filter`). */
366
+ filters?: Record<string, string | string[]>;
367
+ /** Sort results by a meta field instead of relevance. */
368
+ sort?: Record<string, 'asc' | 'desc'>;
369
+ }
370
+ /** Options for the `useSearch` composable. */
371
+ interface UseSearchOptions {
372
+ /** Debounce delay in ms (default: 150). Set to 0 for no debounce. */
373
+ debounce?: number;
374
+ /** Max number of results to return (default: 10). */
375
+ limit?: number;
376
+ /** Filters/sort passed to every search call. */
377
+ filters?: SearchFilters;
378
+ /** Path to the Pagefind browser bundle (default: '/pagefind/pagefind-modern.js'). */
379
+ pagefindPath?: string;
380
+ /** Auto-search on mount with an initial query (default: ''). */
381
+ immediate?: string;
382
+ }
383
+ /** Return type of `useSearch()`. */
384
+ interface UseSearchReturn {
385
+ /** Current search query (reactive). */
386
+ query: Ref<string>;
387
+ /** Search results (reactive, shallow — each update replaces the array). */
388
+ results: ShallowRef<SearchResult[]>;
389
+ /** Whether a search is in progress. */
390
+ loading: Ref<boolean>;
391
+ /** Error message if the search failed (null on success). */
392
+ error: Ref<string | null>;
393
+ /** Whether the Pagefind library has been loaded. */
394
+ ready: Ref<boolean>;
395
+ /** Execute a search. Pass an empty string to clear. */
396
+ search: (query: string, filters?: SearchFilters) => Promise<void>;
397
+ /** Clear results and reset query. */
398
+ clear: () => void;
399
+ /** Preload the Pagefind library without searching. */
400
+ preload: () => Promise<void>;
401
+ }
402
+ /** Runtime search configuration (subset of build-time SearchConfig). */
403
+ interface SearchRuntimeConfig {
404
+ /** Path to the Pagefind browser bundle. */
405
+ pagefindPath: string;
406
+ /** Default debounce in ms. */
407
+ debounce: number;
408
+ /** Default result limit. */
409
+ limit: number;
410
+ }
411
+ /**
412
+ * Configure the search runtime globally. Call this in `app.ts` (client-side)
413
+ * to override defaults before any `useSearch()` call.
414
+ */
415
+ declare function configureSearch(config: Partial<SearchRuntimeConfig>): void;
416
+ /** Get the current runtime search config. */
417
+ declare function getSearchConfig(): SearchRuntimeConfig;
418
+ /** Resolve a user-provided config object into a full SearchRuntimeConfig. */
419
+ declare function resolveSearchConfig(config?: Partial<SearchRuntimeConfig> | true): SearchRuntimeConfig;
420
+ /** The loaded Pagefind browser module (cached after first load). */
421
+ type PagefindModule = any;
422
+ /**
423
+ * Dynamically import the Pagefind browser library.
424
+ *
425
+ * The library is generated at build time into `<outputDir>/pagefind/` and
426
+ * served at `/pagefind/pagefind-modern.js`. In dev mode or when Pagefind is
427
+ * not enabled, the import will fail — callers should catch and show a message.
428
+ */
429
+ declare function initPagefind(options?: {
430
+ pagefindPath?: string;
431
+ }): Promise<PagefindModule>;
432
+ /** Check whether the Pagefind browser library has been loaded. */
433
+ declare function isPagefindLoaded(): boolean;
434
+ /**
435
+ * Execute a raw Pagefind search. Returns normalized `SearchResult[]`.
436
+ *
437
+ * Exposed for advanced use cases where the reactive composable is not needed
438
+ * (e.g. server-side API routes that proxy search requests).
439
+ */
440
+ declare function executeSearch(query: string, options?: {
441
+ filters?: SearchFilters;
442
+ limit?: number;
443
+ pagefindPath?: string;
444
+ }): Promise<SearchResult[]>;
445
+ /**
446
+ * `useSearch` — reactive Pagefind search composable.
447
+ *
448
+ * Lazily loads the Pagefind browser library on first search and provides
449
+ * reactive `results`, `loading`, and `error` state. Built-in debounce
450
+ * prevents excessive searches while the user is typing.
451
+ *
452
+ * @example
453
+ * ```vue
454
+ * <script setup>
455
+ * const { search, results, loading } = useSearch({ debounce: 200 });
456
+ * </script>
457
+ *
458
+ * <template>
459
+ * <input
460
+ * type="search"
461
+ * placeholder="Search..."
462
+ * @input="search($event.target.value)"
463
+ * />
464
+ * <div v-if="loading">Searching...</div>
465
+ * <ul v-else>
466
+ * <li v-for="r in results" :key="r.id">
467
+ * <a :href="r.url" v-html="r.meta.title || r.url" />
468
+ * <p v-html="r.excerpt" />
469
+ * </li>
470
+ * </ul>
471
+ * </template>
472
+ * ```
473
+ */
474
+ declare function useSearch(options?: UseSearchOptions): UseSearchReturn;
475
+ /** Reset all internal state (for unit tests only). */
476
+ declare function _resetSearch(): void;
477
+ /**
478
+ * Inject a mock Pagefind module for testing.
479
+ *
480
+ * The mock replaces the dynamic `import()` so tests can simulate search
481
+ * results without a real Pagefind build. Also calls `mock.init()` to mimic
482
+ * the real library's initialization.
483
+ */
484
+ declare function _setPagefindMock(mock: any): void;
485
+ //#endregion
486
+ export { type AppPluginConfig, type ColorMode, type ColorModeConfig, type CreateUbeanRouterOptions, type DataCacheStore, type DefineAppOptions, ERROR_KEY, ErrorBoundary, Head, type VueHeadClient as HeadClient, type HydrateIslandsOptions, type IslandHydrateOptions, type IslandRecord, LAYOUT_CHAIN_KEY, LOADING_KEY, LOCALIZE_PATH_KEY, type LayoutChainContext, LayoutChainRenderer, Link, type LinkProps, type LinkTag, type MetaTag, PAGE_KEY, PageView, type PartyTownConfig, type ResolvedAppConfig, type RouteLocation, type RouteLocationRaw, SSR_KEY, type ScriptTrigger, type SearchFilters, type SearchResult, type SearchRuntimeConfig, type SeoMetadata, SlotView, TRANSITION_KEY, type TypedLinkProps, type UbeanAppInstance, type UbeanAppOptions, type UbeanVueContext, type UbeanVueOptions, type UbeanVuePage, type UbeanVuePageData, type UseAsyncDataOptions, type UseAsyncDataReturn, type UseCacheViewsReturn, type UsePageTransitionReturn, type UseReloadSignalReturn, type UseScriptOptions, type UseScriptReturn, type UseSearchOptions, type UseSearchReturn, type ViewTransitionOptions, type VueHeadClient$1 as VueHeadClient, type VueI18nInstance, _resetColorMode, _resetPartyTown, _resetSearch, _setPagefindMock, addLocale, applyAppConfig, clearCache, clearLocales, clearPageTransition, collectIslands, configureColorMode, configurePartyTown, configureSearch, createClientHead, createDataCacheStore, createDefaultAppConfig, createLinkHandler, createUbeanClientApp, createUbeanRouter, createUbeanSSRApp, createUseAsyncData, defineApp, defineDataKey, defineLocale, defineMeta, defineMiddleware, definePage, detectBrowserLocale, detectLocale, disablePageCache, enablePageCache, excludePageCache, executeSearch, extractLocaleFromPath, extractPageData, forceColorMode, getCacheEnabled, getCachedViewNames, getColorModeConfig, getColorModeScript, getDefaultLocale, getExcludedViewNames, getI18nConfig, getInitialPageData, getInitialState, getInvalidatedKeysForAction, getLocale, getLocaleDir, getLocaleName, getNamedPageWrapper, getNavigationType, getPageTransitionName, getPartyTownConfig, getPartyTownHeadContent, getPartyTownScript, getRegisteredLocales, getReloadCounter, getSearchConfig, hydrateIsland, hydrateIslands, includePageCache, initCachedViewsFromRoutes, initClientI18n, initPagefind, injectHead, invalidateCache, invalidatePageCache, isActiveRoute, isCacheEnabled, isPageCached, isPageExcluded, isPagefindLoaded, isPartyTownEnabled, isReloading, localizePath, mergeAppConfig, mergeLocale, onLocaleChange, reloadPage, resetNamedPageWrappers, resetRouteCache, resolveColorModeConfig, resolvePartyTownConfig, resolveRoute, resolveSearchConfig, setI18nConfig, setLocale, setPageTransition, supportsViewTransitions, switchLocalePath, t, ubeanVue, unforceColorMode, useCacheViews, useColorMode, useUnheadHead as useHead, useHeadInstance, useI18n, useLocalePath, usePage, usePageTransition, useReloadSignal, useRouter, useScript, useSearch, useSeoMeta, useServerData, useSwitchLocalePath, useViewTransition, useViewTransitionState, withViewTransition };