@gaddario98/react-core 2.1.5 → 2.1.6
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.
- package/README.md +630 -4
- package/dist/pages/index.d.ts +527 -682
- package/dist/pages/index.js +234 -253
- package/dist/pages/index.js.map +1 -1
- package/dist/pages/index.mjs +234 -253
- package/dist/pages/index.mjs.map +1 -1
- package/dist/queries/index.d.ts +25 -4
- package/dist/queries/index.js +211 -216
- package/dist/queries/index.js.map +1 -1
- package/dist/queries/index.mjs +211 -216
- package/dist/queries/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/pages/index.d.ts
CHANGED
|
@@ -5,21 +5,383 @@ import { QueriesArray, MultipleQueryResponse, AllMutation, QueryDefinition, Muta
|
|
|
5
5
|
import { DeepKeys, DeepValue } from '@tanstack/react-form';
|
|
6
6
|
import { ComponentProps } from 'react';
|
|
7
7
|
import * as jotai from 'jotai';
|
|
8
|
-
import { AuthState } from '../auth/index';
|
|
9
8
|
import * as jotai_family from 'jotai-family';
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
|
-
* Metadata
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* Metadata Store, DOM Application, and Server Collection
|
|
12
|
+
*
|
|
13
|
+
* Architecture:
|
|
14
|
+
* - `createMetadataStore()` → request-scoped store (SSR-safe)
|
|
15
|
+
* - `applyMetadataToDom(resolved)` → client-side DOM manipulation
|
|
16
|
+
* - `collectMetadataToHtml(resolved)` → server-side HTML string collection
|
|
17
|
+
* - `setMetadata / getMetadata / resetMetadata` → backward-compatible global API
|
|
18
|
+
*
|
|
19
|
+
* @module config/metadata
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Create a new request-scoped metadata store.
|
|
24
|
+
* In SSR, each incoming request should create its own store
|
|
25
|
+
* to avoid cross-request data leaks.
|
|
26
|
+
* On the client, a single global store is used (see below).
|
|
27
|
+
*/
|
|
28
|
+
declare function createMetadataStore(): MetadataStore;
|
|
29
|
+
/**
|
|
30
|
+
* Apply resolved metadata to the document `<head>`.
|
|
31
|
+
* Client-only: this function does nothing if `document` is not available.
|
|
32
|
+
* Covers: title, description, canonical, lang, keywords, author, viewport,
|
|
33
|
+
* themeColor, Open Graph (advanced), Twitter Card, alternates/hreflang,
|
|
34
|
+
* icons, manifest, structured data JSON-LD, AI hints, robots, customMeta.
|
|
35
|
+
*/
|
|
36
|
+
declare function applyMetadataToDom(resolved: ResolvedMetadata): void;
|
|
37
|
+
/**
|
|
38
|
+
* Collect resolved metadata as an HTML string for SSR injection into `<head>`.
|
|
39
|
+
* Pure function — no DOM, no side effects.
|
|
40
|
+
*/
|
|
41
|
+
declare function collectMetadataToHtml(resolved: ResolvedMetadata): string;
|
|
42
|
+
/**
|
|
43
|
+
* Apply metadata configuration to the page.
|
|
44
|
+
* Merges with existing metadata in the global store.
|
|
45
|
+
* On web: also applies changes to the DOM.
|
|
46
|
+
*
|
|
47
|
+
* @deprecated Prefer using `MetadataStoreProvider` + `resolveMetadata` + `applyMetadataToDom`
|
|
48
|
+
* for SSR-safe, request-scoped metadata management.
|
|
49
|
+
*/
|
|
50
|
+
declare const setMetadata: (config: MetadataConfig$1) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Get current metadata from the global store.
|
|
53
|
+
* @deprecated Prefer using `MetadataStoreProvider` context in SSR.
|
|
54
|
+
*/
|
|
55
|
+
declare const getMetadata: () => MetadataConfig$1;
|
|
56
|
+
/**
|
|
57
|
+
* Reset all metadata in the global store.
|
|
58
|
+
* @deprecated Prefer using `MetadataStoreProvider` context in SSR.
|
|
59
|
+
*/
|
|
60
|
+
declare const resetMetadata: () => void;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* resolveMetadata — Pure function that evaluates dynamic MetadataConfig into ResolvedMetadata.
|
|
64
|
+
*
|
|
65
|
+
* All evaluator functions (title, description, og fields, twitter fields, etc.)
|
|
66
|
+
* are called with the provided context. The result is a plain object with no functions.
|
|
67
|
+
*
|
|
68
|
+
* This function has NO side effects: no DOM, no global state.
|
|
69
|
+
*
|
|
70
|
+
* @module config/resolveMetadata
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Resolve a MetadataConfig (which may contain evaluator functions)
|
|
75
|
+
* into a plain ResolvedMetadata object.
|
|
76
|
+
*
|
|
77
|
+
* @param meta - The metadata configuration (static or with dynamic functions)
|
|
78
|
+
* @param ctx - The context providing get/set accessors for queries, form, state
|
|
79
|
+
* @returns Fully resolved metadata with all functions evaluated
|
|
80
|
+
*/
|
|
81
|
+
declare function resolveMetadata<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(meta: MetadataConfig$1<F, Q, V>, ctx: MetadataEvaluatorContext$1<F, Q, V>): ResolvedMetadata;
|
|
82
|
+
|
|
83
|
+
interface MetadataStoreProviderProps {
|
|
84
|
+
/** Optional pre-created store. If not provided, a new one is created. */
|
|
85
|
+
store?: MetadataStore;
|
|
86
|
+
children: React.ReactNode;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Provides a request-scoped MetadataStore via React Context.
|
|
90
|
+
*
|
|
91
|
+
* @example SSR (one per request)
|
|
92
|
+
* ```tsx
|
|
93
|
+
* import { createMetadataStore, MetadataStoreProvider } from '@/core/pages';
|
|
94
|
+
*
|
|
95
|
+
* function handleRequest(req, res) {
|
|
96
|
+
* const store = createMetadataStore();
|
|
97
|
+
* const html = renderToString(
|
|
98
|
+
* <MetadataStoreProvider store={store}>
|
|
99
|
+
* <App />
|
|
100
|
+
* </MetadataStoreProvider>
|
|
101
|
+
* );
|
|
102
|
+
* const headHtml = collectMetadataToHtml(store.getMetadata());
|
|
103
|
+
* // inject headHtml into <head>
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
declare function MetadataStoreProvider({ store, children, }: MetadataStoreProviderProps): react_jsx_runtime.JSX.Element;
|
|
108
|
+
/**
|
|
109
|
+
* Access the nearest request-scoped MetadataStore.
|
|
110
|
+
* Returns `null` if no provider is found (falls back to global store in consumers).
|
|
111
|
+
*/
|
|
112
|
+
declare function useMetadataStore(): MetadataStore | null;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Optional dev-only metadata logging.
|
|
116
|
+
*
|
|
117
|
+
* Tracks what metadata was resolved and applied, useful for debugging
|
|
118
|
+
* metadata issues during development.
|
|
119
|
+
*
|
|
120
|
+
* Logging is a no-op in production builds.
|
|
121
|
+
*
|
|
122
|
+
* @module config/metadataLogger
|
|
123
|
+
*/
|
|
124
|
+
|
|
125
|
+
interface MetadataLogEntry {
|
|
126
|
+
pageId: string;
|
|
127
|
+
action: "resolve" | "apply-dom" | "apply-store" | "translate";
|
|
128
|
+
metadata: ResolvedMetadata;
|
|
129
|
+
timestamp: number;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Enable or disable metadata logging.
|
|
133
|
+
* Only effective in development mode.
|
|
134
|
+
*/
|
|
135
|
+
declare function setMetadataLogging(enabled: boolean): void;
|
|
136
|
+
/**
|
|
137
|
+
* Log a metadata action (resolve, apply, translate).
|
|
138
|
+
* No-op in production or when logging is disabled.
|
|
139
|
+
*/
|
|
140
|
+
declare function logMetadata(pageId: string, action: MetadataLogEntry["action"], metadata: ResolvedMetadata): void;
|
|
141
|
+
/**
|
|
142
|
+
* Get all logged metadata entries (dev only).
|
|
143
|
+
* Useful for inspecting metadata in browser devtools.
|
|
144
|
+
*/
|
|
145
|
+
declare function getMetadataLog(): Array<MetadataLogEntry>;
|
|
146
|
+
/**
|
|
147
|
+
* Clear the metadata log.
|
|
148
|
+
*/
|
|
149
|
+
declare function clearMetadataLog(): void;
|
|
150
|
+
|
|
151
|
+
interface DefaultContainerProps$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
152
|
+
children?: Array<React.JSX.Element>;
|
|
153
|
+
allContents: Array<ContentItem$1<F, Q, V> | FormManagerConfig<F> | Submit<F>>;
|
|
154
|
+
handleRefresh?: () => void;
|
|
155
|
+
viewSettings?: ViewSettings$1;
|
|
156
|
+
pageId?: string;
|
|
157
|
+
}
|
|
158
|
+
type PageAuthState$1 = {
|
|
159
|
+
id: string;
|
|
160
|
+
accountVerified?: boolean;
|
|
161
|
+
isLogged?: boolean;
|
|
162
|
+
token?: string;
|
|
163
|
+
phoneNumber?: string;
|
|
164
|
+
email?: string;
|
|
165
|
+
};
|
|
166
|
+
interface PageTranslationOptions$1 {
|
|
167
|
+
[key: string]: string | number | boolean | undefined;
|
|
168
|
+
ns?: string;
|
|
169
|
+
}
|
|
170
|
+
interface PageConfigProps$1 {
|
|
171
|
+
HeaderContainer: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: Omit<DefaultContainerProps$1<F, Q, V>, "viewSettings"> & ViewSettings$1["header"]) => React.ReactNode;
|
|
172
|
+
FooterContainer: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: Omit<DefaultContainerProps$1<F, Q, V>, "viewSettings"> & ViewSettings$1["footer"]) => React.ReactNode;
|
|
173
|
+
BodyContainer: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: DefaultContainerProps$1<F, Q, V>) => React.ReactNode;
|
|
174
|
+
authPageImage: string;
|
|
175
|
+
authPageProps: PageProps$1;
|
|
176
|
+
isLogged: (val: PageAuthState$1 | null) => boolean;
|
|
177
|
+
ItemsContainer: (props: {
|
|
178
|
+
children: React.ReactNode;
|
|
179
|
+
}) => React.ReactNode;
|
|
180
|
+
LoaderComponent?: (props: {
|
|
181
|
+
loading?: boolean;
|
|
182
|
+
message?: string;
|
|
183
|
+
ns?: string;
|
|
184
|
+
}) => React.ReactNode;
|
|
185
|
+
PageContainer: (props: {
|
|
186
|
+
children: React.ReactNode;
|
|
187
|
+
id: string;
|
|
188
|
+
}) => React.ReactNode;
|
|
189
|
+
meta?: {
|
|
190
|
+
title?: string;
|
|
191
|
+
description?: string;
|
|
192
|
+
};
|
|
193
|
+
defaultMetadata: MetadataConfig$1;
|
|
194
|
+
setMetadata: (config: MetadataConfig$1) => void;
|
|
195
|
+
getMetadata: () => MetadataConfig$1;
|
|
196
|
+
resetMetadata: () => void;
|
|
197
|
+
authValues?: PageAuthState$1 | null;
|
|
198
|
+
locale?: string;
|
|
199
|
+
translateText?: (key: string, options?: PageTranslationOptions$1) => string;
|
|
200
|
+
}
|
|
201
|
+
declare function getPageConfig(): PageConfigProps$1;
|
|
202
|
+
declare const pageConfigAtom: jotai.PrimitiveAtom<PageConfigProps$1>;
|
|
203
|
+
declare const usePageConfigValue: () => PageConfigProps$1;
|
|
204
|
+
declare const usePageConfigState: () => [PageConfigProps$1, (value: PageConfigProps$1) => void];
|
|
205
|
+
declare const usePageConfigReset: () => () => void;
|
|
206
|
+
|
|
207
|
+
type StringKey$1<T> = Extract<keyof T, string>;
|
|
208
|
+
type VariableTopKey$1<V> = StringKey$1<V>;
|
|
209
|
+
type VariableValue$1<V, K extends VariableTopKey$1<V>> = V[K];
|
|
210
|
+
type QueryTopKey$1<Q extends QueriesArray> = StringKey$1<MultipleQueryResponse<Q>>;
|
|
211
|
+
type QuerySubKey$1<Q extends QueriesArray, K extends QueryTopKey$1<Q>> = StringKey$1<MultipleQueryResponse<Q>[K]>;
|
|
212
|
+
type QueryCompositeKey$1<Q extends QueriesArray> = {
|
|
213
|
+
[K in QueryTopKey$1<Q>]: K | `${K}.${QuerySubKey$1<Q, K>}`;
|
|
214
|
+
}[QueryTopKey$1<Q>];
|
|
215
|
+
type QueryValue$1<Q extends QueriesArray, K extends QueryCompositeKey$1<Q>> = K extends `${infer Top}.${infer Sub}` ? Top extends QueryTopKey$1<Q> ? Sub extends QuerySubKey$1<Q, Top> ? MultipleQueryResponse<Q>[Top][Sub] : never : never : K extends QueryTopKey$1<Q> ? MultipleQueryResponse<Q>[K] : never;
|
|
216
|
+
type MutationTopKey$1<Q extends QueriesArray> = StringKey$1<AllMutation<Q>>;
|
|
217
|
+
type MutationSubKey$1<Q extends QueriesArray, K extends MutationTopKey$1<Q>> = StringKey$1<AllMutation<Q>[K]>;
|
|
218
|
+
type MutationCompositeKey$1<Q extends QueriesArray> = {
|
|
219
|
+
[K in MutationTopKey$1<Q>]: K | `${K}.${MutationSubKey$1<Q, K>}`;
|
|
220
|
+
}[MutationTopKey$1<Q>];
|
|
221
|
+
type MutationValue$1<Q extends QueriesArray, K extends MutationCompositeKey$1<Q>> = K extends `${infer Top}.${infer Sub}` ? Top extends MutationTopKey$1<Q> ? Sub extends MutationSubKey$1<Q, Top> ? AllMutation<Q>[Top][Sub] : never : never : K extends MutationTopKey$1<Q> ? AllMutation<Q>[K] : never;
|
|
222
|
+
type GetFunction$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
223
|
+
<K extends QueryTopKey$1<Q>>(type: "query", key: K): MultipleQueryResponse<Q>[K];
|
|
224
|
+
<K extends QueryCompositeKey$1<Q>>(type: "query", key: K): QueryValue$1<Q, K>;
|
|
225
|
+
<K extends QueryCompositeKey$1<Q>>(type: "query", key: K, defaultValue: unknown): NonNullable<QueryValue$1<Q, K>>;
|
|
226
|
+
<K extends QueryTopKey$1<Q>>(type: "query", key: K, defaultValue: MultipleQueryResponse<Q>[K]["data"]): MultipleQueryResponse<Q>[K]["data"];
|
|
227
|
+
<K extends QueryCompositeKey$1<Q>>(type: "query", key: K, defaultValue: QueryValue$1<Q, K>): NonNullable<QueryValue$1<Q, K>>;
|
|
228
|
+
<K extends MutationTopKey$1<Q>>(type: "mutation", key: K): AllMutation<Q>[K];
|
|
229
|
+
<K extends MutationCompositeKey$1<Q>>(type: "mutation", key: K): MutationValue$1<Q, K>;
|
|
230
|
+
<K extends MutationCompositeKey$1<Q>>(type: "mutation", key: K, defaultValue: unknown): NonNullable<MutationValue$1<Q, K>>;
|
|
231
|
+
<K extends MutationTopKey$1<Q>>(type: "mutation", key: K, defaultValue: AllMutation<Q>[K]["data"]): AllMutation<Q>[K]["data"];
|
|
232
|
+
<K extends MutationCompositeKey$1<Q>>(type: "mutation", key: K, defaultValue: MutationValue$1<Q, K>): NonNullable<MutationValue$1<Q, K>>;
|
|
233
|
+
<K extends VariableTopKey$1<V>>(type: "state", key: K): VariableValue$1<V, K>;
|
|
234
|
+
<K extends VariableTopKey$1<V>>(type: "state", key: K, defaultValue: VariableValue$1<V, K>): NonNullable<VariableValue$1<V, K>>;
|
|
235
|
+
<TField extends DeepKeys<F>>(type: "form", key: TField): DeepValue<F, TField> | undefined;
|
|
236
|
+
<TField extends DeepKeys<F>>(type: "form", key: TField, defaultValue: DeepValue<F, TField>): NonNullable<DeepValue<F, TField>>;
|
|
237
|
+
};
|
|
238
|
+
type SetFunction$1<F extends FieldValues, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
239
|
+
(type: "form"): SetValueFunction<F>;
|
|
240
|
+
(type: "state"): <K extends VariableTopKey$1<V>>(key: K, value: VariableValue$1<V, K>) => void;
|
|
241
|
+
};
|
|
242
|
+
type FunctionProps$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
243
|
+
/**
|
|
244
|
+
* Read the current query/mutation value by key.
|
|
245
|
+
* Example: get('query', 'bookings')
|
|
246
|
+
*/
|
|
247
|
+
get: GetFunction$1<F, Q, V>;
|
|
248
|
+
/**
|
|
249
|
+
* Generic setter accessor.
|
|
250
|
+
* - set('form') returns `setValue`
|
|
251
|
+
* - set('state') returns state setter
|
|
252
|
+
*/
|
|
253
|
+
set: SetFunction$1<F, V>;
|
|
254
|
+
};
|
|
255
|
+
type MappedItemsFunction$1<F extends FieldValues, Q extends QueriesArray, ComponentType, V extends Record<string, unknown> = Record<string, unknown>> = (props: FunctionProps$1<F, Q, V>) => ComponentType;
|
|
256
|
+
type Items$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
257
|
+
type: "custom";
|
|
258
|
+
component: React.JSX.Element | ((props: FunctionProps$1<F, Q, V>) => React.JSX.Element);
|
|
259
|
+
index?: number;
|
|
260
|
+
usedBoxes?: number;
|
|
261
|
+
renderInFooter?: boolean;
|
|
262
|
+
renderInHeader?: boolean;
|
|
263
|
+
hidden?: boolean | MappedItemsFunction$1<F, Q, boolean, V>;
|
|
264
|
+
isDraggable?: boolean;
|
|
265
|
+
isInDraggableView?: boolean;
|
|
266
|
+
key?: string;
|
|
267
|
+
/** @deprecated Query dependencies for selective rendering */
|
|
268
|
+
usedQueries?: string[];
|
|
269
|
+
lazy?: boolean;
|
|
270
|
+
lazyTrigger?: "viewport" | "interaction" | "conditional";
|
|
271
|
+
lazyCondition?: MappedItemsFunction$1<F, Q, boolean, V>;
|
|
272
|
+
};
|
|
273
|
+
type ContainerItem$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
274
|
+
type: "container";
|
|
275
|
+
component?: PageConfigProps$1["ItemsContainer"];
|
|
276
|
+
items: ContentItemsType$1<F, Q, V>;
|
|
277
|
+
index?: number;
|
|
278
|
+
usedBoxes?: number;
|
|
279
|
+
renderInFooter?: boolean;
|
|
280
|
+
renderInHeader?: boolean;
|
|
281
|
+
hidden?: boolean | MappedItemsFunction$1<F, Q, boolean, V>;
|
|
282
|
+
isDraggable?: boolean;
|
|
283
|
+
isInDraggableView?: boolean;
|
|
284
|
+
key?: string;
|
|
285
|
+
/** @deprecated Query dependencies for selective rendering */
|
|
286
|
+
usedQueries?: string[];
|
|
287
|
+
lazy?: boolean;
|
|
288
|
+
lazyTrigger?: "viewport" | "interaction" | "conditional";
|
|
289
|
+
lazyCondition?: MappedItemsFunction$1<F, Q, boolean, V>;
|
|
290
|
+
};
|
|
291
|
+
type ContentItem$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = Items$1<F, Q, V> | ContainerItem$1<F, Q, V>;
|
|
292
|
+
type MappedContents$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = MappedItemsFunction$1<F, Q, Array<ContentItem$1<F, Q, V>>, V>;
|
|
293
|
+
type ContentItemsType$1<F extends FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = Array<ContentItem$1<F, Q, V>> | MappedContents$1<F, Q, V>;
|
|
294
|
+
type FormPageProps$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = Omit<ComponentProps<typeof FormManager<F>>, "updateFormValues" | "submit" | "data"> & {
|
|
295
|
+
defaultValueQueryKey?: Array<string>;
|
|
296
|
+
defaultValueQueryMap?: (props: ExtractQuery<Q>["response"]) => F;
|
|
297
|
+
submit?: Array<Submit<F>> | MappedItemsFunction$1<F, Q, Array<Submit<F>>, V>;
|
|
298
|
+
index?: number;
|
|
299
|
+
data?: Array<FormManagerConfig<F> | MappedItemsFunction$1<F, Q, FormManagerConfig<F>, V>>;
|
|
300
|
+
debounceDelay?: number;
|
|
301
|
+
hidden?: boolean | MappedItemsFunction$1<F, Q, boolean, V>;
|
|
302
|
+
};
|
|
303
|
+
type SingleQueryConfig$1<F extends FieldValues, Q extends QueryDefinition<any, any, any, any, any>, V extends Record<string, unknown> = Record<string, unknown>> = Q extends QueryDefinition<infer K, infer T, infer P, infer R, infer C> ? T extends "mutation" ? {
|
|
304
|
+
type: "mutation";
|
|
305
|
+
mutationConfig: (<Qa extends QueriesArray>(props: FunctionProps$1<F, Qa, V>) => MutationConfig<P, R, C>) | MutationConfig<P, R, C>;
|
|
306
|
+
key: K;
|
|
307
|
+
} : {
|
|
308
|
+
type: "query";
|
|
309
|
+
queryConfig?: (<Qa extends QueriesArray>(props: FunctionProps$1<F, Qa, V>) => Omit<QueryProps<K, R>, "keyToMap">) | Omit<QueryProps<K, R>, "keyToMap">;
|
|
310
|
+
key: K;
|
|
311
|
+
} : never;
|
|
312
|
+
type QueryPageConfigArray$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
313
|
+
[I in keyof Q]: SingleQueryConfig$1<F, QueryAtIndex<Q, I>, V>;
|
|
314
|
+
};
|
|
315
|
+
interface PageProps$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
316
|
+
id: string;
|
|
317
|
+
ns?: string;
|
|
318
|
+
contents?: ContentItemsType$1<F, Q, V>;
|
|
319
|
+
queries?: QueryPageConfigArray$1<F, Q, V>;
|
|
320
|
+
form?: FormPageProps$1<F, Q, V>;
|
|
321
|
+
variables?: V;
|
|
322
|
+
viewSettings?: MappedItemsFunction$1<F, Q, ViewSettings$1, V> | ViewSettings$1;
|
|
323
|
+
meta?: MetadataConfig$1<F, Q, V>;
|
|
324
|
+
enableAuthControl?: boolean;
|
|
325
|
+
}
|
|
326
|
+
type ViewSettings$1 = {
|
|
327
|
+
withoutPadding?: boolean;
|
|
328
|
+
header?: {
|
|
329
|
+
withoutPadding?: boolean;
|
|
330
|
+
};
|
|
331
|
+
footer?: {
|
|
332
|
+
withoutPadding?: boolean;
|
|
333
|
+
};
|
|
334
|
+
disableRefreshing?: boolean;
|
|
335
|
+
layoutComponent?: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: DefaultContainerProps$1<F, Q, V> & Record<string, unknown>) => React.ReactNode;
|
|
336
|
+
layoutProps?: Record<string, unknown>;
|
|
337
|
+
pageContainerComponent?: React.ComponentType<{
|
|
338
|
+
children: React.ReactNode;
|
|
339
|
+
id: string;
|
|
340
|
+
} & Record<string, unknown>>;
|
|
341
|
+
pageContainerProps?: Record<string, unknown>;
|
|
342
|
+
/** @deprecated Use layoutComponent instead */
|
|
343
|
+
customLayoutComponent?: PageConfigProps$1["BodyContainer"];
|
|
344
|
+
/** @deprecated Use pageContainerComponent instead */
|
|
345
|
+
customPageContainer?: PageConfigProps$1["PageContainer"];
|
|
346
|
+
};
|
|
347
|
+
/**
|
|
348
|
+
* Dependency Graph Node
|
|
349
|
+
* Tracks which queries, form values, and mutations a component depends on
|
|
350
|
+
*/
|
|
351
|
+
interface DependencyNode {
|
|
352
|
+
componentId: string;
|
|
353
|
+
parentComponent: string | null;
|
|
354
|
+
childComponents: Array<string>;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Dependency Graph
|
|
358
|
+
* Maps component IDs to their dependency nodes for selective re-rendering
|
|
359
|
+
*/
|
|
360
|
+
interface DependencyGraph {
|
|
361
|
+
nodes: Map<string, DependencyNode>;
|
|
362
|
+
addNode: (node: DependencyNode) => void;
|
|
363
|
+
getNode: (componentId: string) => DependencyNode | undefined;
|
|
364
|
+
getAffectedComponents: (changedKeys: Array<string>) => Array<string>;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Memoization Cache Types
|
|
368
|
+
* For tracking memoized computations and their cache hits
|
|
15
369
|
*/
|
|
370
|
+
interface MemoizationCacheStats {
|
|
371
|
+
hits: number;
|
|
372
|
+
misses: number;
|
|
373
|
+
size: number;
|
|
374
|
+
maxSize: number;
|
|
375
|
+
}
|
|
376
|
+
interface RenderComponentsProps<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
377
|
+
content: ContentItem$1<F, Q, V>;
|
|
378
|
+
ns: string;
|
|
379
|
+
pageId: string;
|
|
380
|
+
key: string;
|
|
381
|
+
}
|
|
16
382
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* Provides access to form values, queries, and page state
|
|
20
|
-
*/
|
|
21
|
-
type MetadataEvaluatorContext<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> = FunctionProps<F, Q>;
|
|
22
|
-
interface MetaTag {
|
|
383
|
+
type MetadataEvaluatorContext$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = FunctionProps$1<F, Q, V>;
|
|
384
|
+
interface MetaTag$1 {
|
|
23
385
|
/** For <meta name="..." content="..." /> */
|
|
24
386
|
name?: string;
|
|
25
387
|
/** For <meta property="og:..." content="..." /> */
|
|
@@ -34,7 +396,7 @@ interface MetaTag {
|
|
|
34
396
|
/**
|
|
35
397
|
* Open Graph Image Configuration
|
|
36
398
|
*/
|
|
37
|
-
interface OpenGraphImage {
|
|
399
|
+
interface OpenGraphImage$1 {
|
|
38
400
|
/** Absolute URL to the image */
|
|
39
401
|
url: string;
|
|
40
402
|
/** Alt text for the image */
|
|
@@ -49,7 +411,7 @@ interface OpenGraphImage {
|
|
|
49
411
|
/**
|
|
50
412
|
* Open Graph Article Configuration (when type='article')
|
|
51
413
|
*/
|
|
52
|
-
interface OpenGraphArticle {
|
|
414
|
+
interface OpenGraphArticle$1 {
|
|
53
415
|
/** ISO 8601 date string */
|
|
54
416
|
publishedTime?: string;
|
|
55
417
|
/** ISO 8601 date string */
|
|
@@ -66,45 +428,45 @@ interface OpenGraphArticle {
|
|
|
66
428
|
/**
|
|
67
429
|
* Open Graph Configuration (Facebook, LinkedIn, etc.)
|
|
68
430
|
*/
|
|
69
|
-
interface OpenGraphConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> {
|
|
70
|
-
type?:
|
|
71
|
-
title?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
72
|
-
description?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
431
|
+
interface OpenGraphConfig$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
432
|
+
type?: "website" | "article" | "product" | "profile";
|
|
433
|
+
title?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
434
|
+
description?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
73
435
|
/** Single image URL or full image config */
|
|
74
|
-
image?: string | OpenGraphImage | ((context: MetadataEvaluatorContext<F, Q>) => string | OpenGraphImage);
|
|
436
|
+
image?: string | OpenGraphImage$1 | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string | OpenGraphImage$1);
|
|
75
437
|
/** Multiple images for the page */
|
|
76
|
-
images?: Array<OpenGraphImage> | ((context: MetadataEvaluatorContext<F, Q>) => Array<OpenGraphImage>);
|
|
438
|
+
images?: Array<OpenGraphImage$1> | ((context: MetadataEvaluatorContext$1<F, Q, V>) => Array<OpenGraphImage$1>);
|
|
77
439
|
/** Canonical URL */
|
|
78
|
-
url?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
440
|
+
url?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
79
441
|
siteName?: string;
|
|
80
442
|
/** Locale (e.g., "en_US", "it_IT") */
|
|
81
443
|
locale?: string;
|
|
82
444
|
/** Article-specific metadata (when type='article') */
|
|
83
|
-
article?: OpenGraphArticle;
|
|
445
|
+
article?: OpenGraphArticle$1;
|
|
84
446
|
}
|
|
85
447
|
/**
|
|
86
448
|
* Twitter Card Configuration
|
|
87
449
|
*/
|
|
88
|
-
interface TwitterCardConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> {
|
|
450
|
+
interface TwitterCardConfig$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
89
451
|
/** Card type */
|
|
90
|
-
card?:
|
|
452
|
+
card?: "summary" | "summary_large_image" | "app" | "player";
|
|
91
453
|
/** @username of the website */
|
|
92
454
|
site?: string;
|
|
93
455
|
/** @username of the content creator */
|
|
94
456
|
creator?: string;
|
|
95
457
|
/** Title (falls back to og:title then page title) */
|
|
96
|
-
title?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
458
|
+
title?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
97
459
|
/** Description (falls back to og:description then page description) */
|
|
98
|
-
description?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
460
|
+
description?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
99
461
|
/** Image URL (falls back to og:image) */
|
|
100
|
-
image?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
462
|
+
image?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
101
463
|
/** Alt text for the image */
|
|
102
|
-
imageAlt?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
464
|
+
imageAlt?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
103
465
|
}
|
|
104
466
|
/**
|
|
105
467
|
* Alternate languages/URLs configuration for i18n SEO
|
|
106
468
|
*/
|
|
107
|
-
interface AlternatesConfig {
|
|
469
|
+
interface AlternatesConfig$1 {
|
|
108
470
|
/** Canonical URL for this page */
|
|
109
471
|
canonical?: string;
|
|
110
472
|
/** Map of locale → URL for hreflang tags (e.g., { "en": "/en/page", "it": "/it/page" }) */
|
|
@@ -120,7 +482,7 @@ interface AlternatesConfig {
|
|
|
120
482
|
/**
|
|
121
483
|
* Icon configuration
|
|
122
484
|
*/
|
|
123
|
-
interface IconConfig {
|
|
485
|
+
interface IconConfig$1 {
|
|
124
486
|
/** URL to the icon */
|
|
125
487
|
url: string;
|
|
126
488
|
/** Icon type (e.g., "image/png", "image/svg+xml") */
|
|
@@ -133,38 +495,38 @@ interface IconConfig {
|
|
|
133
495
|
/**
|
|
134
496
|
* Icons & PWA configuration
|
|
135
497
|
*/
|
|
136
|
-
interface IconsConfig {
|
|
498
|
+
interface IconsConfig$1 {
|
|
137
499
|
/** Standard favicon(s) - link[rel="icon"] */
|
|
138
|
-
icon?: string | IconConfig | Array<IconConfig>;
|
|
500
|
+
icon?: string | IconConfig$1 | Array<IconConfig$1>;
|
|
139
501
|
/** Apple touch icon(s) - link[rel="apple-touch-icon"] */
|
|
140
|
-
apple?: string | IconConfig | Array<IconConfig>;
|
|
502
|
+
apple?: string | IconConfig$1 | Array<IconConfig$1>;
|
|
141
503
|
/** Shortcut icon (legacy) */
|
|
142
504
|
shortcut?: string;
|
|
143
505
|
}
|
|
144
506
|
/**
|
|
145
507
|
* Structured Data Configuration (schema.org JSON-LD)
|
|
146
508
|
*/
|
|
147
|
-
interface StructuredDataConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> {
|
|
148
|
-
type:
|
|
149
|
-
schema: Record<string, unknown> | ((context: MetadataEvaluatorContext<F, Q>) => Record<string, unknown>);
|
|
509
|
+
interface StructuredDataConfig$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
510
|
+
type: "Article" | "Product" | "WebPage" | "FAQPage" | "Organization" | "Person" | "WebSite" | "BreadcrumbList";
|
|
511
|
+
schema: Record<string, unknown> | ((context: MetadataEvaluatorContext$1<F, Q, V>) => Record<string, unknown>);
|
|
150
512
|
}
|
|
151
513
|
/**
|
|
152
514
|
* AI Crawler Hints (for AI search engines and LLMs)
|
|
153
515
|
*/
|
|
154
|
-
interface AIHintsConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> {
|
|
516
|
+
interface AIHintsConfig$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
155
517
|
/** Content classification (e.g., "documentation", "tutorial", "reference") */
|
|
156
|
-
contentClassification?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
518
|
+
contentClassification?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
157
519
|
/** Hints for AI models (e.g., ["code-heavy", "technical"]) */
|
|
158
|
-
modelHints?: Array<string> | ((context: MetadataEvaluatorContext<F, Q>) => Array<string>);
|
|
520
|
+
modelHints?: Array<string> | ((context: MetadataEvaluatorContext$1<F, Q, V>) => Array<string>);
|
|
159
521
|
/** Additional context for AI understanding */
|
|
160
|
-
contextualInfo?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
522
|
+
contextualInfo?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
161
523
|
/** Exclude this page from AI crawler indexing */
|
|
162
524
|
excludeFromIndexing?: boolean;
|
|
163
525
|
}
|
|
164
526
|
/**
|
|
165
527
|
* Robots Configuration (indexing directives)
|
|
166
528
|
*/
|
|
167
|
-
interface RobotsConfig {
|
|
529
|
+
interface RobotsConfig$1 {
|
|
168
530
|
/** Prevent indexing */
|
|
169
531
|
noindex?: boolean;
|
|
170
532
|
/** Don't follow links */
|
|
@@ -174,7 +536,7 @@ interface RobotsConfig {
|
|
|
174
536
|
/** Don't show snippets in search results */
|
|
175
537
|
nosnippet?: boolean;
|
|
176
538
|
/** Image preview size in search results */
|
|
177
|
-
maxImagePreview?:
|
|
539
|
+
maxImagePreview?: "none" | "standard" | "large";
|
|
178
540
|
/** Max snippet length in search results */
|
|
179
541
|
maxSnippet?: number;
|
|
180
542
|
}
|
|
@@ -193,18 +555,18 @@ interface ResolvedMetadata {
|
|
|
193
555
|
viewport?: string;
|
|
194
556
|
themeColor?: string;
|
|
195
557
|
openGraph?: {
|
|
196
|
-
type?:
|
|
558
|
+
type?: "website" | "article" | "product" | "profile";
|
|
197
559
|
title?: string;
|
|
198
560
|
description?: string;
|
|
199
|
-
image?: string | OpenGraphImage;
|
|
200
|
-
images?: Array<OpenGraphImage>;
|
|
561
|
+
image?: string | OpenGraphImage$1;
|
|
562
|
+
images?: Array<OpenGraphImage$1>;
|
|
201
563
|
url?: string;
|
|
202
564
|
siteName?: string;
|
|
203
565
|
locale?: string;
|
|
204
|
-
article?: OpenGraphArticle;
|
|
566
|
+
article?: OpenGraphArticle$1;
|
|
205
567
|
};
|
|
206
568
|
twitter?: {
|
|
207
|
-
card?:
|
|
569
|
+
card?: "summary" | "summary_large_image" | "app" | "player";
|
|
208
570
|
site?: string;
|
|
209
571
|
creator?: string;
|
|
210
572
|
title?: string;
|
|
@@ -212,8 +574,8 @@ interface ResolvedMetadata {
|
|
|
212
574
|
image?: string;
|
|
213
575
|
imageAlt?: string;
|
|
214
576
|
};
|
|
215
|
-
alternates?: AlternatesConfig;
|
|
216
|
-
icons?: IconsConfig;
|
|
577
|
+
alternates?: AlternatesConfig$1;
|
|
578
|
+
icons?: IconsConfig$1;
|
|
217
579
|
/** Web app manifest URL */
|
|
218
580
|
manifest?: string;
|
|
219
581
|
structuredData?: {
|
|
@@ -226,22 +588,22 @@ interface ResolvedMetadata {
|
|
|
226
588
|
contextualInfo?: string;
|
|
227
589
|
excludeFromIndexing?: boolean;
|
|
228
590
|
};
|
|
229
|
-
robots?: RobotsConfig;
|
|
591
|
+
robots?: RobotsConfig$1;
|
|
230
592
|
disableIndexing?: boolean;
|
|
231
|
-
customMeta?: Array<MetaTag>;
|
|
593
|
+
customMeta?: Array<MetaTag$1>;
|
|
232
594
|
}
|
|
233
595
|
/**
|
|
234
596
|
* Complete Metadata Configuration (Generic over F and Q for dynamic metadata)
|
|
235
597
|
* This is the "input" type — values can be strings or evaluator functions.
|
|
236
598
|
* Use resolveMetadata() to convert this to ResolvedMetadata.
|
|
237
599
|
*/
|
|
238
|
-
interface MetadataConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> {
|
|
600
|
+
interface MetadataConfig$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
239
601
|
/** Page title - sets document.title on web */
|
|
240
|
-
title?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
602
|
+
title?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
241
603
|
/** Page description meta tag */
|
|
242
|
-
description?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
604
|
+
description?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
243
605
|
/** Canonical URL for the page */
|
|
244
|
-
canonical?: string | ((context: MetadataEvaluatorContext<F, Q>) => string);
|
|
606
|
+
canonical?: string | ((context: MetadataEvaluatorContext$1<F, Q, V>) => string);
|
|
245
607
|
/** HTML lang attribute (e.g., "en", "it") */
|
|
246
608
|
lang?: string;
|
|
247
609
|
/**
|
|
@@ -249,17 +611,17 @@ interface MetadataConfig<F extends FieldValues = FieldValues, Q extends QueriesA
|
|
|
249
611
|
*/
|
|
250
612
|
documentLang?: string;
|
|
251
613
|
/** Keywords for SEO */
|
|
252
|
-
keywords?: Array<string> | ((context: MetadataEvaluatorContext<F, Q>) => Array<string>);
|
|
253
|
-
openGraph?: OpenGraphConfig<F, Q>;
|
|
254
|
-
twitter?: TwitterCardConfig<F, Q>;
|
|
255
|
-
alternates?: AlternatesConfig;
|
|
256
|
-
icons?: IconsConfig;
|
|
614
|
+
keywords?: Array<string> | ((context: MetadataEvaluatorContext$1<F, Q, V>) => Array<string>);
|
|
615
|
+
openGraph?: OpenGraphConfig$1<F, Q, V>;
|
|
616
|
+
twitter?: TwitterCardConfig$1<F, Q, V>;
|
|
617
|
+
alternates?: AlternatesConfig$1;
|
|
618
|
+
icons?: IconsConfig$1;
|
|
257
619
|
/** Web app manifest URL */
|
|
258
620
|
manifest?: string;
|
|
259
|
-
structuredData?: StructuredDataConfig<F, Q>;
|
|
260
|
-
aiHints?: AIHintsConfig<F, Q>;
|
|
261
|
-
robots?: RobotsConfig;
|
|
262
|
-
customMeta?: Array<MetaTag> | ((context: MetadataEvaluatorContext<F, Q>) => Array<MetaTag>);
|
|
621
|
+
structuredData?: StructuredDataConfig$1<F, Q, V>;
|
|
622
|
+
aiHints?: AIHintsConfig$1<F, Q, V>;
|
|
623
|
+
robots?: RobotsConfig$1;
|
|
624
|
+
customMeta?: Array<MetaTag$1> | ((context: MetadataEvaluatorContext$1<F, Q, V>) => Array<MetaTag$1>);
|
|
263
625
|
disableIndexing?: boolean;
|
|
264
626
|
/** Author meta tag */
|
|
265
627
|
author?: string;
|
|
@@ -283,51 +645,12 @@ interface MetadataStore {
|
|
|
283
645
|
}
|
|
284
646
|
interface MetadataProvider {
|
|
285
647
|
/** Apply metadata configuration to the page */
|
|
286
|
-
setMetadata: (config: MetadataConfig) => void;
|
|
648
|
+
setMetadata: (config: MetadataConfig$1) => void;
|
|
287
649
|
/** Get current metadata configuration */
|
|
288
|
-
getMetadata: () => MetadataConfig;
|
|
650
|
+
getMetadata: () => MetadataConfig$1;
|
|
289
651
|
/** Reset all metadata to defaults */
|
|
290
652
|
resetMetadata: () => void;
|
|
291
653
|
}
|
|
292
|
-
/**
|
|
293
|
-
* Configuration for lazy loading and code splitting behavior
|
|
294
|
-
* Enables deferred component loading to reduce initial bundle size
|
|
295
|
-
*/
|
|
296
|
-
interface LazyLoadingConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> {
|
|
297
|
-
/** Enable lazy loading (default: true) */
|
|
298
|
-
enabled?: boolean;
|
|
299
|
-
/** Preload on hover for interactive elements (default: false) */
|
|
300
|
-
preloadOnHover?: boolean;
|
|
301
|
-
/** Preload on focus for keyboard navigation (default: false) */
|
|
302
|
-
preloadOnFocus?: boolean;
|
|
303
|
-
/** Preload after render with delay (in ms, default: undefined - no delay) */
|
|
304
|
-
preloadAfterRender?: number;
|
|
305
|
-
/** Fallback component to show while loading (default: null) */
|
|
306
|
-
suspenseFallback?: React.ReactNode;
|
|
307
|
-
/** Custom error boundary component for lazy-loaded modules */
|
|
308
|
-
errorBoundary?: React.ComponentType<{
|
|
309
|
-
error: Error;
|
|
310
|
-
retry: () => void;
|
|
311
|
-
}>;
|
|
312
|
-
/** Maximum time to wait before showing error state (in ms, default: 30000) */
|
|
313
|
-
timeout?: number;
|
|
314
|
-
/** Log performance metrics for lazy loading (development only) */
|
|
315
|
-
logMetrics?: boolean;
|
|
316
|
-
/** IntersectionObserver threshold (0-1, default: 0.1) - alias for intersectionThreshold */
|
|
317
|
-
threshold?: number | Array<number>;
|
|
318
|
-
/** IntersectionObserver threshold (0-1, default: 0.1) */
|
|
319
|
-
intersectionThreshold?: number | Array<number>;
|
|
320
|
-
/** IntersectionObserver root margin (default: "100px") - alias for intersectionRootMargin */
|
|
321
|
-
rootMargin?: string;
|
|
322
|
-
/** IntersectionObserver root margin (default: "100px") */
|
|
323
|
-
intersectionRootMargin?: string;
|
|
324
|
-
/** Trigger type for lazy loading: viewport (IntersectionObserver), interaction (manual), or conditional (based on function) */
|
|
325
|
-
trigger?: 'viewport' | 'interaction' | 'conditional';
|
|
326
|
-
/** Conditional function to determine if content should load (for trigger: "conditional") */
|
|
327
|
-
condition?: (context: MetadataEvaluatorContext<F, Q>) => boolean;
|
|
328
|
-
/** Placeholder component to show before lazy content loads */
|
|
329
|
-
placeholder?: React.ReactNode;
|
|
330
|
-
}
|
|
331
654
|
/**
|
|
332
655
|
* Entry for the llms.txt file
|
|
333
656
|
*/
|
|
@@ -351,146 +674,22 @@ interface LlmsTxtConfig {
|
|
|
351
674
|
entries: Array<LlmsTxtEntry>;
|
|
352
675
|
}
|
|
353
676
|
|
|
354
|
-
|
|
355
|
-
* Metadata Store, DOM Application, and Server Collection
|
|
356
|
-
*
|
|
357
|
-
* Architecture:
|
|
358
|
-
* - `createMetadataStore()` → request-scoped store (SSR-safe)
|
|
359
|
-
* - `applyMetadataToDom(resolved)` → client-side DOM manipulation
|
|
360
|
-
* - `collectMetadataToHtml(resolved)` → server-side HTML string collection
|
|
361
|
-
* - `setMetadata / getMetadata / resetMetadata` → backward-compatible global API
|
|
362
|
-
*
|
|
363
|
-
* @module config/metadata
|
|
364
|
-
*/
|
|
365
|
-
|
|
366
|
-
/**
|
|
367
|
-
* Create a new request-scoped metadata store.
|
|
368
|
-
* In SSR, each incoming request should create its own store
|
|
369
|
-
* to avoid cross-request data leaks.
|
|
370
|
-
* On the client, a single global store is used (see below).
|
|
371
|
-
*/
|
|
372
|
-
declare function createMetadataStore(): MetadataStore;
|
|
373
|
-
/**
|
|
374
|
-
* Apply resolved metadata to the document `<head>`.
|
|
375
|
-
* Client-only: this function does nothing if `document` is not available.
|
|
376
|
-
* Covers: title, description, canonical, lang, keywords, author, viewport,
|
|
377
|
-
* themeColor, Open Graph (advanced), Twitter Card, alternates/hreflang,
|
|
378
|
-
* icons, manifest, structured data JSON-LD, AI hints, robots, customMeta.
|
|
379
|
-
*/
|
|
380
|
-
declare function applyMetadataToDom(resolved: ResolvedMetadata): void;
|
|
381
|
-
/**
|
|
382
|
-
* Collect resolved metadata as an HTML string for SSR injection into `<head>`.
|
|
383
|
-
* Pure function — no DOM, no side effects.
|
|
384
|
-
*/
|
|
385
|
-
declare function collectMetadataToHtml(resolved: ResolvedMetadata): string;
|
|
386
|
-
/**
|
|
387
|
-
* Apply metadata configuration to the page.
|
|
388
|
-
* Merges with existing metadata in the global store.
|
|
389
|
-
* On web: also applies changes to the DOM.
|
|
390
|
-
*
|
|
391
|
-
* @deprecated Prefer using `MetadataStoreProvider` + `resolveMetadata` + `applyMetadataToDom`
|
|
392
|
-
* for SSR-safe, request-scoped metadata management.
|
|
393
|
-
*/
|
|
394
|
-
declare const setMetadata: (config: MetadataConfig) => void;
|
|
395
|
-
/**
|
|
396
|
-
* Get current metadata from the global store.
|
|
397
|
-
* @deprecated Prefer using `MetadataStoreProvider` context in SSR.
|
|
398
|
-
*/
|
|
399
|
-
declare const getMetadata: () => MetadataConfig;
|
|
400
|
-
/**
|
|
401
|
-
* Reset all metadata in the global store.
|
|
402
|
-
* @deprecated Prefer using `MetadataStoreProvider` context in SSR.
|
|
403
|
-
*/
|
|
404
|
-
declare const resetMetadata: () => void;
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* resolveMetadata — Pure function that evaluates dynamic MetadataConfig into ResolvedMetadata.
|
|
408
|
-
*
|
|
409
|
-
* All evaluator functions (title, description, og fields, twitter fields, etc.)
|
|
410
|
-
* are called with the provided context. The result is a plain object with no functions.
|
|
411
|
-
*
|
|
412
|
-
* This function has NO side effects: no DOM, no global state.
|
|
413
|
-
*
|
|
414
|
-
* @module config/resolveMetadata
|
|
415
|
-
*/
|
|
677
|
+
declare const PageGenerator: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>({ enableAuthControl, meta, variables, ...props }: PageProps$1<F, Q, V>) => react_jsx_runtime.JSX.Element;
|
|
416
678
|
|
|
417
|
-
|
|
418
|
-
* Resolve a MetadataConfig (which may contain evaluator functions)
|
|
419
|
-
* into a plain ResolvedMetadata object.
|
|
420
|
-
*
|
|
421
|
-
* @param meta - The metadata configuration (static or with dynamic functions)
|
|
422
|
-
* @param ctx - The context providing get/set accessors for queries, form, state
|
|
423
|
-
* @returns Fully resolved metadata with all functions evaluated
|
|
424
|
-
*/
|
|
425
|
-
declare function resolveMetadata<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray>(meta: MetadataConfig<F, Q>, ctx: MetadataEvaluatorContext<F, Q>): ResolvedMetadata;
|
|
679
|
+
declare const RenderComponents: <F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: RenderComponentsProps<F, Q, V>) => react_jsx_runtime.JSX.Element;
|
|
426
680
|
|
|
427
|
-
interface
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
681
|
+
interface Props<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
682
|
+
content: ContentItem$1<F, Q, V>;
|
|
683
|
+
ns: string;
|
|
684
|
+
pageId: string;
|
|
431
685
|
}
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
*
|
|
435
|
-
* @example SSR (one per request)
|
|
436
|
-
* ```tsx
|
|
437
|
-
* import { createMetadataStore, MetadataStoreProvider } from '@/core/pages';
|
|
438
|
-
*
|
|
439
|
-
* function handleRequest(req, res) {
|
|
440
|
-
* const store = createMetadataStore();
|
|
441
|
-
* const html = renderToString(
|
|
442
|
-
* <MetadataStoreProvider store={store}>
|
|
443
|
-
* <App />
|
|
444
|
-
* </MetadataStoreProvider>
|
|
445
|
-
* );
|
|
446
|
-
* const headHtml = collectMetadataToHtml(store.getMetadata());
|
|
447
|
-
* // inject headHtml into <head>
|
|
448
|
-
* }
|
|
449
|
-
* ```
|
|
450
|
-
*/
|
|
451
|
-
declare function MetadataStoreProvider({ store, children, }: MetadataStoreProviderProps): react_jsx_runtime.JSX.Element;
|
|
452
|
-
/**
|
|
453
|
-
* Access the nearest request-scoped MetadataStore.
|
|
454
|
-
* Returns `null` if no provider is found (falls back to global store in consumers).
|
|
455
|
-
*/
|
|
456
|
-
declare function useMetadataStore(): MetadataStore | null;
|
|
457
|
-
|
|
458
|
-
/**
|
|
459
|
-
* Optional dev-only metadata logging.
|
|
460
|
-
*
|
|
461
|
-
* Tracks what metadata was resolved and applied, useful for debugging
|
|
462
|
-
* metadata issues during development.
|
|
463
|
-
*
|
|
464
|
-
* Logging is a no-op in production builds.
|
|
465
|
-
*
|
|
466
|
-
* @module config/metadataLogger
|
|
467
|
-
*/
|
|
468
|
-
|
|
469
|
-
interface MetadataLogEntry {
|
|
686
|
+
interface ContentProps<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> extends Omit<Props<F, Q, V>, 'content'> {
|
|
687
|
+
content: Items$1<F, Q, V>;
|
|
470
688
|
pageId: string;
|
|
471
|
-
action: 'resolve' | 'apply-dom' | 'apply-store' | 'translate';
|
|
472
|
-
metadata: ResolvedMetadata;
|
|
473
|
-
timestamp: number;
|
|
474
689
|
}
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
*/
|
|
479
|
-
declare function setMetadataLogging(enabled: boolean): void;
|
|
480
|
-
/**
|
|
481
|
-
* Log a metadata action (resolve, apply, translate).
|
|
482
|
-
* No-op in production or when logging is disabled.
|
|
483
|
-
*/
|
|
484
|
-
declare function logMetadata(pageId: string, action: MetadataLogEntry['action'], metadata: ResolvedMetadata): void;
|
|
485
|
-
/**
|
|
486
|
-
* Get all logged metadata entries (dev only).
|
|
487
|
-
* Useful for inspecting metadata in browser devtools.
|
|
488
|
-
*/
|
|
489
|
-
declare function getMetadataLog(): Array<MetadataLogEntry>;
|
|
490
|
-
/**
|
|
491
|
-
* Clear the metadata log.
|
|
492
|
-
*/
|
|
493
|
-
declare function clearMetadataLog(): void;
|
|
690
|
+
interface ItemContainerProps<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> extends Omit<Props<F, Q, V>, 'content'> {
|
|
691
|
+
content: ContainerItem$1<F, Q, V>;
|
|
692
|
+
}
|
|
494
693
|
|
|
495
694
|
interface DefaultContainerProps<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
496
695
|
children?: Array<React.JSX.Element>;
|
|
@@ -538,16 +737,10 @@ interface PageConfigProps {
|
|
|
538
737
|
setMetadata: (config: MetadataConfig) => void;
|
|
539
738
|
getMetadata: () => MetadataConfig;
|
|
540
739
|
resetMetadata: () => void;
|
|
541
|
-
lazyLoading: LazyLoadingConfig;
|
|
542
740
|
authValues?: PageAuthState | null;
|
|
543
741
|
locale?: string;
|
|
544
742
|
translateText?: (key: string, options?: PageTranslationOptions) => string;
|
|
545
743
|
}
|
|
546
|
-
declare function getPageConfig(): PageConfigProps;
|
|
547
|
-
declare const pageConfigAtom: jotai.PrimitiveAtom<PageConfigProps>;
|
|
548
|
-
declare const usePageConfigValue: () => PageConfigProps;
|
|
549
|
-
declare const usePageConfigState: () => [PageConfigProps, (value: PageConfigProps) => void];
|
|
550
|
-
declare const usePageConfigReset: () => () => void;
|
|
551
744
|
|
|
552
745
|
type StringKey<T> = Extract<keyof T, string>;
|
|
553
746
|
type VariableTopKey<V> = StringKey<V>;
|
|
@@ -598,15 +791,6 @@ type FunctionProps<F extends FieldValues, Q extends QueriesArray, V extends Reco
|
|
|
598
791
|
set: SetFunction<F, V>;
|
|
599
792
|
};
|
|
600
793
|
type MappedItemsFunction<F extends FieldValues, Q extends QueriesArray, ComponentType, V extends Record<string, unknown> = Record<string, unknown>> = (props: FunctionProps<F, Q, V>) => ComponentType;
|
|
601
|
-
/**
|
|
602
|
-
* Context passed to lifecycle callbacks
|
|
603
|
-
* Provides access to form, queries, mutations, and utilities
|
|
604
|
-
*/
|
|
605
|
-
type LifecycleContext<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = FunctionProps<F, Q, V> & {
|
|
606
|
-
ns?: string;
|
|
607
|
-
pageId?: string;
|
|
608
|
-
pageConfig?: PageProps<F, Q, V>;
|
|
609
|
-
};
|
|
610
794
|
type Items<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
611
795
|
type: "custom";
|
|
612
796
|
component: React.JSX.Element | ((props: FunctionProps<F, Q, V>) => React.JSX.Element);
|
|
@@ -674,114 +858,33 @@ interface PageProps<F extends FieldValues = FieldValues, Q extends QueriesArray
|
|
|
674
858
|
form?: FormPageProps<F, Q, V>;
|
|
675
859
|
variables?: V;
|
|
676
860
|
viewSettings?: MappedItemsFunction<F, Q, ViewSettings, V> | ViewSettings;
|
|
677
|
-
meta?: MetadataConfig<F, Q>;
|
|
678
|
-
lazyLoading?: LazyLoadingConfig;
|
|
679
|
-
platformOverrides?: PlatformOverrides<F, Q, V>;
|
|
680
|
-
lifecycleCallbacks?: {
|
|
681
|
-
onMountComplete?: (context: LifecycleContext<F, Q, V>) => void | Promise<void>;
|
|
682
|
-
onQuerySuccess?: (context: LifecycleContext<F, Q, V>, queryKey: string, data: unknown) => void | Promise<void>;
|
|
683
|
-
onQueryError?: (context: LifecycleContext<F, Q, V>, queryKey: string, error: Error) => void | Promise<void>;
|
|
684
|
-
onFormSubmit?: (context: LifecycleContext<F, Q, V>, result: unknown) => void | Promise<void>;
|
|
685
|
-
onValuesChange?: MappedItemsFunction<F, Q, void, V>;
|
|
686
|
-
};
|
|
861
|
+
meta?: MetadataConfig<F, Q, V>;
|
|
687
862
|
enableAuthControl?: boolean;
|
|
688
863
|
}
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
}
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
pageContainerComponent?: React.ComponentType<{
|
|
711
|
-
children: React.ReactNode;
|
|
712
|
-
id: string;
|
|
713
|
-
} & Record<string, unknown>>;
|
|
714
|
-
pageContainerProps?: Record<string, unknown>;
|
|
715
|
-
/** @deprecated Use layoutComponent instead */
|
|
716
|
-
customLayoutComponent?: PageConfigProps["BodyContainer"];
|
|
717
|
-
/** @deprecated Use pageContainerComponent instead */
|
|
718
|
-
customPageContainer?: PageConfigProps["PageContainer"];
|
|
719
|
-
};
|
|
720
|
-
/**
|
|
721
|
-
* Dependency Graph Node
|
|
722
|
-
* Tracks which queries, form values, and mutations a component depends on
|
|
723
|
-
*/
|
|
724
|
-
interface DependencyNode {
|
|
725
|
-
componentId: string;
|
|
726
|
-
parentComponent: string | null;
|
|
727
|
-
childComponents: Array<string>;
|
|
728
|
-
}
|
|
729
|
-
/**
|
|
730
|
-
* Dependency Graph
|
|
731
|
-
* Maps component IDs to their dependency nodes for selective re-rendering
|
|
732
|
-
*/
|
|
733
|
-
interface DependencyGraph {
|
|
734
|
-
nodes: Map<string, DependencyNode>;
|
|
735
|
-
addNode: (node: DependencyNode) => void;
|
|
736
|
-
getNode: (componentId: string) => DependencyNode | undefined;
|
|
737
|
-
getAffectedComponents: (changedKeys: Array<string>) => Array<string>;
|
|
738
|
-
}
|
|
739
|
-
/**
|
|
740
|
-
* Memoization Cache Types
|
|
741
|
-
* For tracking memoized computations and their cache hits
|
|
742
|
-
*/
|
|
743
|
-
interface MemoizationCacheStats {
|
|
744
|
-
hits: number;
|
|
745
|
-
misses: number;
|
|
746
|
-
size: number;
|
|
747
|
-
maxSize: number;
|
|
748
|
-
}
|
|
749
|
-
interface RenderComponentsProps<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
750
|
-
content: ContentItem<F, Q, V>;
|
|
751
|
-
ns: string;
|
|
752
|
-
pageId: string;
|
|
753
|
-
key: string;
|
|
754
|
-
}
|
|
755
|
-
|
|
756
|
-
declare const PageGenerator: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>({ enableAuthControl, meta, variables, ...props }: PageProps<F, Q, V>) => react_jsx_runtime.JSX.Element;
|
|
757
|
-
|
|
758
|
-
declare const RenderComponents: <F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: RenderComponentsProps<F, Q, V>) => react_jsx_runtime.JSX.Element;
|
|
759
|
-
|
|
760
|
-
interface Props<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
761
|
-
content: ContentItem<F, Q, V>;
|
|
762
|
-
ns: string;
|
|
763
|
-
pageId: string;
|
|
764
|
-
}
|
|
765
|
-
interface ContentProps<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> extends Omit<Props<F, Q, V>, 'content'> {
|
|
766
|
-
content: Items<F, Q, V>;
|
|
767
|
-
pageId: string;
|
|
768
|
-
}
|
|
769
|
-
interface ItemContainerProps<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> extends Omit<Props<F, Q, V>, 'content'> {
|
|
770
|
-
content: ContainerItem<F, Q, V>;
|
|
771
|
-
}
|
|
772
|
-
|
|
773
|
-
/**
|
|
774
|
-
* Metadata Configuration Types
|
|
775
|
-
* Custom metadata system replacing react-helmet-async
|
|
776
|
-
* Platform-agnostic: works on web, React Native, and SSR
|
|
777
|
-
*/
|
|
864
|
+
type ViewSettings = {
|
|
865
|
+
withoutPadding?: boolean;
|
|
866
|
+
header?: {
|
|
867
|
+
withoutPadding?: boolean;
|
|
868
|
+
};
|
|
869
|
+
footer?: {
|
|
870
|
+
withoutPadding?: boolean;
|
|
871
|
+
};
|
|
872
|
+
disableRefreshing?: boolean;
|
|
873
|
+
layoutComponent?: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: DefaultContainerProps<F, Q, V> & Record<string, unknown>) => React.ReactNode;
|
|
874
|
+
layoutProps?: Record<string, unknown>;
|
|
875
|
+
pageContainerComponent?: React.ComponentType<{
|
|
876
|
+
children: React.ReactNode;
|
|
877
|
+
id: string;
|
|
878
|
+
} & Record<string, unknown>>;
|
|
879
|
+
pageContainerProps?: Record<string, unknown>;
|
|
880
|
+
/** @deprecated Use layoutComponent instead */
|
|
881
|
+
customLayoutComponent?: PageConfigProps["BodyContainer"];
|
|
882
|
+
/** @deprecated Use pageContainerComponent instead */
|
|
883
|
+
customPageContainer?: PageConfigProps["PageContainer"];
|
|
884
|
+
};
|
|
778
885
|
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
* Provides access to form values, queries, and page state
|
|
782
|
-
*/
|
|
783
|
-
type MetadataEvaluatorContext$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> = FunctionProps$1<F, Q>;
|
|
784
|
-
interface MetaTag$1 {
|
|
886
|
+
type MetadataEvaluatorContext<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = FunctionProps<F, Q, V>;
|
|
887
|
+
interface MetaTag {
|
|
785
888
|
/** For <meta name="..." content="..." /> */
|
|
786
889
|
name?: string;
|
|
787
890
|
/** For <meta property="og:..." content="..." /> */
|
|
@@ -796,7 +899,7 @@ interface MetaTag$1 {
|
|
|
796
899
|
/**
|
|
797
900
|
* Open Graph Image Configuration
|
|
798
901
|
*/
|
|
799
|
-
interface OpenGraphImage
|
|
902
|
+
interface OpenGraphImage {
|
|
800
903
|
/** Absolute URL to the image */
|
|
801
904
|
url: string;
|
|
802
905
|
/** Alt text for the image */
|
|
@@ -811,7 +914,7 @@ interface OpenGraphImage$1 {
|
|
|
811
914
|
/**
|
|
812
915
|
* Open Graph Article Configuration (when type='article')
|
|
813
916
|
*/
|
|
814
|
-
interface OpenGraphArticle
|
|
917
|
+
interface OpenGraphArticle {
|
|
815
918
|
/** ISO 8601 date string */
|
|
816
919
|
publishedTime?: string;
|
|
817
920
|
/** ISO 8601 date string */
|
|
@@ -828,45 +931,45 @@ interface OpenGraphArticle$1 {
|
|
|
828
931
|
/**
|
|
829
932
|
* Open Graph Configuration (Facebook, LinkedIn, etc.)
|
|
830
933
|
*/
|
|
831
|
-
interface OpenGraphConfig
|
|
832
|
-
type?:
|
|
833
|
-
title?: string | ((context: MetadataEvaluatorContext
|
|
834
|
-
description?: string | ((context: MetadataEvaluatorContext
|
|
934
|
+
interface OpenGraphConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
935
|
+
type?: "website" | "article" | "product" | "profile";
|
|
936
|
+
title?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
937
|
+
description?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
835
938
|
/** Single image URL or full image config */
|
|
836
|
-
image?: string | OpenGraphImage
|
|
939
|
+
image?: string | OpenGraphImage | ((context: MetadataEvaluatorContext<F, Q, V>) => string | OpenGraphImage);
|
|
837
940
|
/** Multiple images for the page */
|
|
838
|
-
images?: Array<OpenGraphImage
|
|
941
|
+
images?: Array<OpenGraphImage> | ((context: MetadataEvaluatorContext<F, Q, V>) => Array<OpenGraphImage>);
|
|
839
942
|
/** Canonical URL */
|
|
840
|
-
url?: string | ((context: MetadataEvaluatorContext
|
|
943
|
+
url?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
841
944
|
siteName?: string;
|
|
842
945
|
/** Locale (e.g., "en_US", "it_IT") */
|
|
843
946
|
locale?: string;
|
|
844
947
|
/** Article-specific metadata (when type='article') */
|
|
845
|
-
article?: OpenGraphArticle
|
|
948
|
+
article?: OpenGraphArticle;
|
|
846
949
|
}
|
|
847
950
|
/**
|
|
848
951
|
* Twitter Card Configuration
|
|
849
952
|
*/
|
|
850
|
-
interface TwitterCardConfig
|
|
953
|
+
interface TwitterCardConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
851
954
|
/** Card type */
|
|
852
|
-
card?:
|
|
955
|
+
card?: "summary" | "summary_large_image" | "app" | "player";
|
|
853
956
|
/** @username of the website */
|
|
854
957
|
site?: string;
|
|
855
958
|
/** @username of the content creator */
|
|
856
959
|
creator?: string;
|
|
857
960
|
/** Title (falls back to og:title then page title) */
|
|
858
|
-
title?: string | ((context: MetadataEvaluatorContext
|
|
961
|
+
title?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
859
962
|
/** Description (falls back to og:description then page description) */
|
|
860
|
-
description?: string | ((context: MetadataEvaluatorContext
|
|
963
|
+
description?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
861
964
|
/** Image URL (falls back to og:image) */
|
|
862
|
-
image?: string | ((context: MetadataEvaluatorContext
|
|
965
|
+
image?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
863
966
|
/** Alt text for the image */
|
|
864
|
-
imageAlt?: string | ((context: MetadataEvaluatorContext
|
|
967
|
+
imageAlt?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
865
968
|
}
|
|
866
969
|
/**
|
|
867
970
|
* Alternate languages/URLs configuration for i18n SEO
|
|
868
971
|
*/
|
|
869
|
-
interface AlternatesConfig
|
|
972
|
+
interface AlternatesConfig {
|
|
870
973
|
/** Canonical URL for this page */
|
|
871
974
|
canonical?: string;
|
|
872
975
|
/** Map of locale → URL for hreflang tags (e.g., { "en": "/en/page", "it": "/it/page" }) */
|
|
@@ -882,7 +985,7 @@ interface AlternatesConfig$1 {
|
|
|
882
985
|
/**
|
|
883
986
|
* Icon configuration
|
|
884
987
|
*/
|
|
885
|
-
interface IconConfig
|
|
988
|
+
interface IconConfig {
|
|
886
989
|
/** URL to the icon */
|
|
887
990
|
url: string;
|
|
888
991
|
/** Icon type (e.g., "image/png", "image/svg+xml") */
|
|
@@ -895,38 +998,38 @@ interface IconConfig$1 {
|
|
|
895
998
|
/**
|
|
896
999
|
* Icons & PWA configuration
|
|
897
1000
|
*/
|
|
898
|
-
interface IconsConfig
|
|
1001
|
+
interface IconsConfig {
|
|
899
1002
|
/** Standard favicon(s) - link[rel="icon"] */
|
|
900
|
-
icon?: string | IconConfig
|
|
1003
|
+
icon?: string | IconConfig | Array<IconConfig>;
|
|
901
1004
|
/** Apple touch icon(s) - link[rel="apple-touch-icon"] */
|
|
902
|
-
apple?: string | IconConfig
|
|
1005
|
+
apple?: string | IconConfig | Array<IconConfig>;
|
|
903
1006
|
/** Shortcut icon (legacy) */
|
|
904
1007
|
shortcut?: string;
|
|
905
1008
|
}
|
|
906
1009
|
/**
|
|
907
1010
|
* Structured Data Configuration (schema.org JSON-LD)
|
|
908
1011
|
*/
|
|
909
|
-
interface StructuredDataConfig
|
|
910
|
-
type:
|
|
911
|
-
schema: Record<string, unknown> | ((context: MetadataEvaluatorContext
|
|
1012
|
+
interface StructuredDataConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
1013
|
+
type: "Article" | "Product" | "WebPage" | "FAQPage" | "Organization" | "Person" | "WebSite" | "BreadcrumbList";
|
|
1014
|
+
schema: Record<string, unknown> | ((context: MetadataEvaluatorContext<F, Q, V>) => Record<string, unknown>);
|
|
912
1015
|
}
|
|
913
1016
|
/**
|
|
914
1017
|
* AI Crawler Hints (for AI search engines and LLMs)
|
|
915
1018
|
*/
|
|
916
|
-
interface AIHintsConfig
|
|
1019
|
+
interface AIHintsConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
917
1020
|
/** Content classification (e.g., "documentation", "tutorial", "reference") */
|
|
918
|
-
contentClassification?: string | ((context: MetadataEvaluatorContext
|
|
1021
|
+
contentClassification?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
919
1022
|
/** Hints for AI models (e.g., ["code-heavy", "technical"]) */
|
|
920
|
-
modelHints?: Array<string> | ((context: MetadataEvaluatorContext
|
|
1023
|
+
modelHints?: Array<string> | ((context: MetadataEvaluatorContext<F, Q, V>) => Array<string>);
|
|
921
1024
|
/** Additional context for AI understanding */
|
|
922
|
-
contextualInfo?: string | ((context: MetadataEvaluatorContext
|
|
1025
|
+
contextualInfo?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
923
1026
|
/** Exclude this page from AI crawler indexing */
|
|
924
1027
|
excludeFromIndexing?: boolean;
|
|
925
1028
|
}
|
|
926
1029
|
/**
|
|
927
1030
|
* Robots Configuration (indexing directives)
|
|
928
1031
|
*/
|
|
929
|
-
interface RobotsConfig
|
|
1032
|
+
interface RobotsConfig {
|
|
930
1033
|
/** Prevent indexing */
|
|
931
1034
|
noindex?: boolean;
|
|
932
1035
|
/** Don't follow links */
|
|
@@ -936,7 +1039,7 @@ interface RobotsConfig$1 {
|
|
|
936
1039
|
/** Don't show snippets in search results */
|
|
937
1040
|
nosnippet?: boolean;
|
|
938
1041
|
/** Image preview size in search results */
|
|
939
|
-
maxImagePreview?:
|
|
1042
|
+
maxImagePreview?: "none" | "standard" | "large";
|
|
940
1043
|
/** Max snippet length in search results */
|
|
941
1044
|
maxSnippet?: number;
|
|
942
1045
|
}
|
|
@@ -945,13 +1048,13 @@ interface RobotsConfig$1 {
|
|
|
945
1048
|
* This is the "input" type — values can be strings or evaluator functions.
|
|
946
1049
|
* Use resolveMetadata() to convert this to ResolvedMetadata.
|
|
947
1050
|
*/
|
|
948
|
-
interface MetadataConfig
|
|
1051
|
+
interface MetadataConfig<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
949
1052
|
/** Page title - sets document.title on web */
|
|
950
|
-
title?: string | ((context: MetadataEvaluatorContext
|
|
1053
|
+
title?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
951
1054
|
/** Page description meta tag */
|
|
952
|
-
description?: string | ((context: MetadataEvaluatorContext
|
|
1055
|
+
description?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
953
1056
|
/** Canonical URL for the page */
|
|
954
|
-
canonical?: string | ((context: MetadataEvaluatorContext
|
|
1057
|
+
canonical?: string | ((context: MetadataEvaluatorContext<F, Q, V>) => string);
|
|
955
1058
|
/** HTML lang attribute (e.g., "en", "it") */
|
|
956
1059
|
lang?: string;
|
|
957
1060
|
/**
|
|
@@ -959,17 +1062,17 @@ interface MetadataConfig$1<F extends FieldValues = FieldValues, Q extends Querie
|
|
|
959
1062
|
*/
|
|
960
1063
|
documentLang?: string;
|
|
961
1064
|
/** Keywords for SEO */
|
|
962
|
-
keywords?: Array<string> | ((context: MetadataEvaluatorContext
|
|
963
|
-
openGraph?: OpenGraphConfig
|
|
964
|
-
twitter?: TwitterCardConfig
|
|
965
|
-
alternates?: AlternatesConfig
|
|
966
|
-
icons?: IconsConfig
|
|
1065
|
+
keywords?: Array<string> | ((context: MetadataEvaluatorContext<F, Q, V>) => Array<string>);
|
|
1066
|
+
openGraph?: OpenGraphConfig<F, Q, V>;
|
|
1067
|
+
twitter?: TwitterCardConfig<F, Q, V>;
|
|
1068
|
+
alternates?: AlternatesConfig;
|
|
1069
|
+
icons?: IconsConfig;
|
|
967
1070
|
/** Web app manifest URL */
|
|
968
1071
|
manifest?: string;
|
|
969
|
-
structuredData?: StructuredDataConfig
|
|
970
|
-
aiHints?: AIHintsConfig
|
|
971
|
-
robots?: RobotsConfig
|
|
972
|
-
customMeta?: Array<MetaTag
|
|
1072
|
+
structuredData?: StructuredDataConfig<F, Q, V>;
|
|
1073
|
+
aiHints?: AIHintsConfig<F, Q, V>;
|
|
1074
|
+
robots?: RobotsConfig;
|
|
1075
|
+
customMeta?: Array<MetaTag> | ((context: MetadataEvaluatorContext<F, Q, V>) => Array<MetaTag>);
|
|
973
1076
|
disableIndexing?: boolean;
|
|
974
1077
|
/** Author meta tag */
|
|
975
1078
|
author?: string;
|
|
@@ -978,270 +1081,13 @@ interface MetadataConfig$1<F extends FieldValues = FieldValues, Q extends Querie
|
|
|
978
1081
|
/** Theme color for browser UI */
|
|
979
1082
|
themeColor?: string;
|
|
980
1083
|
}
|
|
981
|
-
/**
|
|
982
|
-
* Configuration for lazy loading and code splitting behavior
|
|
983
|
-
* Enables deferred component loading to reduce initial bundle size
|
|
984
|
-
*/
|
|
985
|
-
interface LazyLoadingConfig$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> {
|
|
986
|
-
/** Enable lazy loading (default: true) */
|
|
987
|
-
enabled?: boolean;
|
|
988
|
-
/** Preload on hover for interactive elements (default: false) */
|
|
989
|
-
preloadOnHover?: boolean;
|
|
990
|
-
/** Preload on focus for keyboard navigation (default: false) */
|
|
991
|
-
preloadOnFocus?: boolean;
|
|
992
|
-
/** Preload after render with delay (in ms, default: undefined - no delay) */
|
|
993
|
-
preloadAfterRender?: number;
|
|
994
|
-
/** Fallback component to show while loading (default: null) */
|
|
995
|
-
suspenseFallback?: React.ReactNode;
|
|
996
|
-
/** Custom error boundary component for lazy-loaded modules */
|
|
997
|
-
errorBoundary?: React.ComponentType<{
|
|
998
|
-
error: Error;
|
|
999
|
-
retry: () => void;
|
|
1000
|
-
}>;
|
|
1001
|
-
/** Maximum time to wait before showing error state (in ms, default: 30000) */
|
|
1002
|
-
timeout?: number;
|
|
1003
|
-
/** Log performance metrics for lazy loading (development only) */
|
|
1004
|
-
logMetrics?: boolean;
|
|
1005
|
-
/** IntersectionObserver threshold (0-1, default: 0.1) - alias for intersectionThreshold */
|
|
1006
|
-
threshold?: number | Array<number>;
|
|
1007
|
-
/** IntersectionObserver threshold (0-1, default: 0.1) */
|
|
1008
|
-
intersectionThreshold?: number | Array<number>;
|
|
1009
|
-
/** IntersectionObserver root margin (default: "100px") - alias for intersectionRootMargin */
|
|
1010
|
-
rootMargin?: string;
|
|
1011
|
-
/** IntersectionObserver root margin (default: "100px") */
|
|
1012
|
-
intersectionRootMargin?: string;
|
|
1013
|
-
/** Trigger type for lazy loading: viewport (IntersectionObserver), interaction (manual), or conditional (based on function) */
|
|
1014
|
-
trigger?: 'viewport' | 'interaction' | 'conditional';
|
|
1015
|
-
/** Conditional function to determine if content should load (for trigger: "conditional") */
|
|
1016
|
-
condition?: (context: MetadataEvaluatorContext$1<F, Q>) => boolean;
|
|
1017
|
-
/** Placeholder component to show before lazy content loads */
|
|
1018
|
-
placeholder?: React.ReactNode;
|
|
1019
|
-
}
|
|
1020
|
-
|
|
1021
|
-
interface DefaultContainerProps$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
1022
|
-
children?: Array<React.JSX.Element>;
|
|
1023
|
-
allContents: Array<ContentItem$1<F, Q, V> | FormManagerConfig<F> | Submit<F>>;
|
|
1024
|
-
handleRefresh?: () => void;
|
|
1025
|
-
viewSettings?: ViewSettings$1;
|
|
1026
|
-
pageId?: string;
|
|
1027
|
-
}
|
|
1028
|
-
type PageAuthState$1 = {
|
|
1029
|
-
id: string;
|
|
1030
|
-
accountVerified?: boolean;
|
|
1031
|
-
isLogged?: boolean;
|
|
1032
|
-
token?: string;
|
|
1033
|
-
phoneNumber?: string;
|
|
1034
|
-
email?: string;
|
|
1035
|
-
};
|
|
1036
|
-
interface PageTranslationOptions$1 {
|
|
1037
|
-
[key: string]: string | number | boolean | undefined;
|
|
1038
|
-
ns?: string;
|
|
1039
|
-
}
|
|
1040
|
-
interface PageConfigProps$1 {
|
|
1041
|
-
HeaderContainer: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: Omit<DefaultContainerProps$1<F, Q, V>, 'viewSettings'> & ViewSettings$1['header']) => React.ReactNode;
|
|
1042
|
-
FooterContainer: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: Omit<DefaultContainerProps$1<F, Q, V>, 'viewSettings'> & ViewSettings$1['footer']) => React.ReactNode;
|
|
1043
|
-
BodyContainer: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: DefaultContainerProps$1<F, Q, V>) => React.ReactNode;
|
|
1044
|
-
authPageImage: string;
|
|
1045
|
-
authPageProps: PageProps$1;
|
|
1046
|
-
isLogged: (val: AuthState | null) => boolean;
|
|
1047
|
-
ItemsContainer: (props: {
|
|
1048
|
-
children: React.ReactNode;
|
|
1049
|
-
}) => React.ReactNode;
|
|
1050
|
-
LoaderComponent?: (props: {
|
|
1051
|
-
loading?: boolean;
|
|
1052
|
-
message?: string;
|
|
1053
|
-
ns?: string;
|
|
1054
|
-
}) => React.ReactNode;
|
|
1055
|
-
PageContainer: (props: {
|
|
1056
|
-
children: React.ReactNode;
|
|
1057
|
-
id: string;
|
|
1058
|
-
}) => React.ReactNode;
|
|
1059
|
-
meta?: {
|
|
1060
|
-
title?: string;
|
|
1061
|
-
description?: string;
|
|
1062
|
-
};
|
|
1063
|
-
defaultMetadata: MetadataConfig$1;
|
|
1064
|
-
setMetadata: (config: MetadataConfig$1) => void;
|
|
1065
|
-
getMetadata: () => MetadataConfig$1;
|
|
1066
|
-
resetMetadata: () => void;
|
|
1067
|
-
lazyLoading: LazyLoadingConfig$1;
|
|
1068
|
-
authValues?: PageAuthState$1 | null;
|
|
1069
|
-
locale?: string;
|
|
1070
|
-
translateText?: (key: string, options?: PageTranslationOptions$1) => string;
|
|
1071
|
-
}
|
|
1072
1084
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
type VariableValue$1<V, K extends VariableTopKey$1<V>> = V[K];
|
|
1076
|
-
type QueryTopKey$1<Q extends QueriesArray> = StringKey$1<MultipleQueryResponse<Q>>;
|
|
1077
|
-
type QuerySubKey$1<Q extends QueriesArray, K extends QueryTopKey$1<Q>> = StringKey$1<MultipleQueryResponse<Q>[K]>;
|
|
1078
|
-
type QueryCompositeKey$1<Q extends QueriesArray> = {
|
|
1079
|
-
[K in QueryTopKey$1<Q>]: K | `${K}.${QuerySubKey$1<Q, K>}`;
|
|
1080
|
-
}[QueryTopKey$1<Q>];
|
|
1081
|
-
type QueryValue$1<Q extends QueriesArray, K extends QueryCompositeKey$1<Q>> = K extends `${infer Top}.${infer Sub}` ? Top extends QueryTopKey$1<Q> ? Sub extends QuerySubKey$1<Q, Top> ? MultipleQueryResponse<Q>[Top][Sub] : never : never : K extends QueryTopKey$1<Q> ? MultipleQueryResponse<Q>[K] : never;
|
|
1082
|
-
type MutationTopKey$1<Q extends QueriesArray> = StringKey$1<AllMutation<Q>>;
|
|
1083
|
-
type MutationSubKey$1<Q extends QueriesArray, K extends MutationTopKey$1<Q>> = StringKey$1<AllMutation<Q>[K]>;
|
|
1084
|
-
type MutationCompositeKey$1<Q extends QueriesArray> = {
|
|
1085
|
-
[K in MutationTopKey$1<Q>]: K | `${K}.${MutationSubKey$1<Q, K>}`;
|
|
1086
|
-
}[MutationTopKey$1<Q>];
|
|
1087
|
-
type MutationValue$1<Q extends QueriesArray, K extends MutationCompositeKey$1<Q>> = K extends `${infer Top}.${infer Sub}` ? Top extends MutationTopKey$1<Q> ? Sub extends MutationSubKey$1<Q, Top> ? AllMutation<Q>[Top][Sub] : never : never : K extends MutationTopKey$1<Q> ? AllMutation<Q>[K] : never;
|
|
1088
|
-
type GetFunction$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
1089
|
-
<K extends QueryTopKey$1<Q>>(type: "query", key: K): MultipleQueryResponse<Q>[K];
|
|
1090
|
-
<K extends QueryCompositeKey$1<Q>>(type: "query", key: K): QueryValue$1<Q, K>;
|
|
1091
|
-
<K extends QueryCompositeKey$1<Q>>(type: "query", key: K, defaultValue: unknown): NonNullable<QueryValue$1<Q, K>>;
|
|
1092
|
-
<K extends QueryTopKey$1<Q>>(type: "query", key: K, defaultValue: MultipleQueryResponse<Q>[K]["data"]): MultipleQueryResponse<Q>[K]["data"];
|
|
1093
|
-
<K extends QueryCompositeKey$1<Q>>(type: "query", key: K, defaultValue: QueryValue$1<Q, K>): NonNullable<QueryValue$1<Q, K>>;
|
|
1094
|
-
<K extends MutationTopKey$1<Q>>(type: "mutation", key: K): AllMutation<Q>[K];
|
|
1095
|
-
<K extends MutationCompositeKey$1<Q>>(type: "mutation", key: K): MutationValue$1<Q, K>;
|
|
1096
|
-
<K extends MutationCompositeKey$1<Q>>(type: "mutation", key: K, defaultValue: unknown): NonNullable<MutationValue$1<Q, K>>;
|
|
1097
|
-
<K extends MutationTopKey$1<Q>>(type: "mutation", key: K, defaultValue: AllMutation<Q>[K]["data"]): AllMutation<Q>[K]["data"];
|
|
1098
|
-
<K extends MutationCompositeKey$1<Q>>(type: "mutation", key: K, defaultValue: MutationValue$1<Q, K>): NonNullable<MutationValue$1<Q, K>>;
|
|
1099
|
-
<K extends VariableTopKey$1<V>>(type: "state", key: K): VariableValue$1<V, K>;
|
|
1100
|
-
<K extends VariableTopKey$1<V>>(type: "state", key: K, defaultValue: VariableValue$1<V, K>): NonNullable<VariableValue$1<V, K>>;
|
|
1101
|
-
<TField extends DeepKeys<F>>(type: "form", key: TField): DeepValue<F, TField> | undefined;
|
|
1102
|
-
<TField extends DeepKeys<F>>(type: "form", key: TField, defaultValue: DeepValue<F, TField>): NonNullable<DeepValue<F, TField>>;
|
|
1103
|
-
};
|
|
1104
|
-
type SetFunction$1<F extends FieldValues, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
1105
|
-
(type: "form"): SetValueFunction<F>;
|
|
1106
|
-
(type: "state"): <K extends VariableTopKey$1<V>>(key: K, value: VariableValue$1<V, K>) => void;
|
|
1107
|
-
};
|
|
1108
|
-
type FunctionProps$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
1109
|
-
/**
|
|
1110
|
-
* Read the current query/mutation value by key.
|
|
1111
|
-
* Example: get('query', 'bookings')
|
|
1112
|
-
*/
|
|
1113
|
-
get: GetFunction$1<F, Q, V>;
|
|
1114
|
-
/**
|
|
1115
|
-
* Generic setter accessor.
|
|
1116
|
-
* - set('form') returns `setValue`
|
|
1117
|
-
* - set('state') returns state setter
|
|
1118
|
-
*/
|
|
1119
|
-
set: SetFunction$1<F, V>;
|
|
1120
|
-
};
|
|
1121
|
-
type MappedItemsFunction$1<F extends FieldValues, Q extends QueriesArray, ComponentType, V extends Record<string, unknown> = Record<string, unknown>> = (props: FunctionProps$1<F, Q, V>) => ComponentType;
|
|
1122
|
-
/**
|
|
1123
|
-
* Context passed to lifecycle callbacks
|
|
1124
|
-
* Provides access to form, queries, mutations, and utilities
|
|
1125
|
-
*/
|
|
1126
|
-
type LifecycleContext$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = FunctionProps$1<F, Q, V> & {
|
|
1127
|
-
ns?: string;
|
|
1128
|
-
pageId?: string;
|
|
1129
|
-
pageConfig?: PageProps$1<F, Q, V>;
|
|
1130
|
-
};
|
|
1131
|
-
type Items$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
1132
|
-
type: "custom";
|
|
1133
|
-
component: React.JSX.Element | ((props: FunctionProps$1<F, Q, V>) => React.JSX.Element);
|
|
1134
|
-
index?: number;
|
|
1135
|
-
usedBoxes?: number;
|
|
1136
|
-
renderInFooter?: boolean;
|
|
1137
|
-
renderInHeader?: boolean;
|
|
1138
|
-
hidden?: boolean | MappedItemsFunction$1<F, Q, boolean, V>;
|
|
1139
|
-
isDraggable?: boolean;
|
|
1140
|
-
isInDraggableView?: boolean;
|
|
1141
|
-
key?: string;
|
|
1142
|
-
lazy?: boolean;
|
|
1143
|
-
lazyTrigger?: "viewport" | "interaction" | "conditional";
|
|
1144
|
-
lazyCondition?: MappedItemsFunction$1<F, Q, boolean, V>;
|
|
1145
|
-
};
|
|
1146
|
-
type ContainerItem$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
1147
|
-
type: "container";
|
|
1148
|
-
component?: PageConfigProps$1["ItemsContainer"];
|
|
1149
|
-
items: ContentItemsType$1<F, Q, V>;
|
|
1150
|
-
index?: number;
|
|
1151
|
-
usedBoxes?: number;
|
|
1152
|
-
renderInFooter?: boolean;
|
|
1153
|
-
renderInHeader?: boolean;
|
|
1154
|
-
hidden?: boolean | MappedItemsFunction$1<F, Q, boolean, V>;
|
|
1155
|
-
isDraggable?: boolean;
|
|
1156
|
-
isInDraggableView?: boolean;
|
|
1157
|
-
key?: string;
|
|
1158
|
-
lazy?: boolean;
|
|
1159
|
-
lazyTrigger?: "viewport" | "interaction" | "conditional";
|
|
1160
|
-
lazyCondition?: MappedItemsFunction$1<F, Q, boolean, V>;
|
|
1161
|
-
};
|
|
1162
|
-
type ContentItem$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = Items$1<F, Q, V> | ContainerItem$1<F, Q, V>;
|
|
1163
|
-
type MappedContents$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = MappedItemsFunction$1<F, Q, Array<ContentItem$1<F, Q, V>>, V>;
|
|
1164
|
-
type ContentItemsType$1<F extends FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = Array<ContentItem$1<F, Q, V>> | MappedContents$1<F, Q, V>;
|
|
1165
|
-
type FormPageProps$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = Omit<ComponentProps<typeof FormManager<F>>, "updateFormValues" | "submit" | "data"> & {
|
|
1166
|
-
defaultValueQueryKey?: Array<string>;
|
|
1167
|
-
defaultValueQueryMap?: (props: ExtractQuery<Q>["response"]) => F;
|
|
1168
|
-
submit?: Array<Submit<F>> | MappedItemsFunction$1<F, Q, Array<Submit<F>>, V>;
|
|
1169
|
-
index?: number;
|
|
1170
|
-
data?: Array<FormManagerConfig<F> | MappedItemsFunction$1<F, Q, FormManagerConfig<F>, V>>;
|
|
1171
|
-
debounceDelay?: number;
|
|
1172
|
-
hidden?: boolean | MappedItemsFunction$1<F, Q, boolean, V>;
|
|
1173
|
-
};
|
|
1174
|
-
type SingleQueryConfig$1<F extends FieldValues, Q extends QueryDefinition<any, any, any, any, any>, V extends Record<string, unknown> = Record<string, unknown>> = Q extends QueryDefinition<infer K, infer T, infer P, infer R, infer C> ? T extends "mutation" ? {
|
|
1175
|
-
type: "mutation";
|
|
1176
|
-
mutationConfig: (<Qa extends QueriesArray>(props: FunctionProps$1<F, Qa, V>) => MutationConfig<P, R, C>) | MutationConfig<P, R, C>;
|
|
1177
|
-
key: K;
|
|
1178
|
-
} : {
|
|
1179
|
-
type: "query";
|
|
1180
|
-
queryConfig?: (<Qa extends QueriesArray>(props: FunctionProps$1<F, Qa, V>) => Omit<QueryProps<K, R>, "keyToMap">) | Omit<QueryProps<K, R>, "keyToMap">;
|
|
1181
|
-
key: K;
|
|
1182
|
-
} : never;
|
|
1183
|
-
type QueryPageConfigArray$1<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
1184
|
-
[I in keyof Q]: SingleQueryConfig$1<F, QueryAtIndex<Q, I>, V>;
|
|
1185
|
-
};
|
|
1186
|
-
interface PageProps$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
1187
|
-
id: string;
|
|
1188
|
-
ns?: string;
|
|
1189
|
-
contents?: ContentItemsType$1<F, Q, V>;
|
|
1190
|
-
queries?: QueryPageConfigArray$1<F, Q, V>;
|
|
1085
|
+
declare const usePageConfig: <F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>({ queries, form, ns, viewSettings, meta, variables, pageId, }: {
|
|
1086
|
+
queries: QueryPageConfigArray$1<F, Q, V>;
|
|
1191
1087
|
form?: FormPageProps$1<F, Q, V>;
|
|
1192
|
-
|
|
1088
|
+
ns: string;
|
|
1193
1089
|
viewSettings?: MappedItemsFunction$1<F, Q, ViewSettings$1, V> | ViewSettings$1;
|
|
1194
1090
|
meta?: MetadataConfig$1<F, Q>;
|
|
1195
|
-
lazyLoading?: LazyLoadingConfig$1;
|
|
1196
|
-
platformOverrides?: PlatformOverrides$1<F, Q, V>;
|
|
1197
|
-
lifecycleCallbacks?: {
|
|
1198
|
-
onMountComplete?: (context: LifecycleContext$1<F, Q, V>) => void | Promise<void>;
|
|
1199
|
-
onQuerySuccess?: (context: LifecycleContext$1<F, Q, V>, queryKey: string, data: unknown) => void | Promise<void>;
|
|
1200
|
-
onQueryError?: (context: LifecycleContext$1<F, Q, V>, queryKey: string, error: Error) => void | Promise<void>;
|
|
1201
|
-
onFormSubmit?: (context: LifecycleContext$1<F, Q, V>, result: unknown) => void | Promise<void>;
|
|
1202
|
-
onValuesChange?: MappedItemsFunction$1<F, Q, void, V>;
|
|
1203
|
-
};
|
|
1204
|
-
enableAuthControl?: boolean;
|
|
1205
|
-
}
|
|
1206
|
-
/**
|
|
1207
|
-
* Platform-specific configuration overrides (proper type with PageProps reference)
|
|
1208
|
-
* Allows different behavior on web vs React Native
|
|
1209
|
-
*/
|
|
1210
|
-
type PlatformOverrides$1<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> = {
|
|
1211
|
-
/** Web-specific overrides (React DOM) */
|
|
1212
|
-
web?: Partial<PageProps$1<F, Q, V>>;
|
|
1213
|
-
/** React Native-specific overrides */
|
|
1214
|
-
native?: Partial<PageProps$1<F, Q, V>>;
|
|
1215
|
-
};
|
|
1216
|
-
type ViewSettings$1 = {
|
|
1217
|
-
withoutPadding?: boolean;
|
|
1218
|
-
header?: {
|
|
1219
|
-
withoutPadding?: boolean;
|
|
1220
|
-
};
|
|
1221
|
-
footer?: {
|
|
1222
|
-
withoutPadding?: boolean;
|
|
1223
|
-
};
|
|
1224
|
-
disableRefreshing?: boolean;
|
|
1225
|
-
layoutComponent?: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>(props: DefaultContainerProps$1<F, Q, V> & Record<string, unknown>) => React.ReactNode;
|
|
1226
|
-
layoutProps?: Record<string, unknown>;
|
|
1227
|
-
pageContainerComponent?: React.ComponentType<{
|
|
1228
|
-
children: React.ReactNode;
|
|
1229
|
-
id: string;
|
|
1230
|
-
} & Record<string, unknown>>;
|
|
1231
|
-
pageContainerProps?: Record<string, unknown>;
|
|
1232
|
-
/** @deprecated Use layoutComponent instead */
|
|
1233
|
-
customLayoutComponent?: PageConfigProps$1["BodyContainer"];
|
|
1234
|
-
/** @deprecated Use pageContainerComponent instead */
|
|
1235
|
-
customPageContainer?: PageConfigProps$1["PageContainer"];
|
|
1236
|
-
};
|
|
1237
|
-
|
|
1238
|
-
declare const usePageConfig: <F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>({ queries, form, ns, viewSettings, meta, lazyLoading, variables, pageId, }: {
|
|
1239
|
-
queries: QueryPageConfigArray<F, Q, V>;
|
|
1240
|
-
form?: FormPageProps<F, Q, V>;
|
|
1241
|
-
ns: string;
|
|
1242
|
-
viewSettings?: MappedItemsFunction<F, Q, ViewSettings, V> | ViewSettings;
|
|
1243
|
-
meta?: MetadataConfig<F, Q>;
|
|
1244
|
-
lazyLoading?: LazyLoadingConfig;
|
|
1245
1091
|
variables?: V;
|
|
1246
1092
|
pageId: string;
|
|
1247
1093
|
}) => {
|
|
@@ -1252,28 +1098,27 @@ declare const usePageConfig: <F extends FieldValues, Q extends QueriesArray, V e
|
|
|
1252
1098
|
formValues: F;
|
|
1253
1099
|
setValue: _gaddario98_react_form.SetValueFunction<F>;
|
|
1254
1100
|
};
|
|
1255
|
-
form: FormPageProps<F, Q, V> | undefined;
|
|
1256
|
-
mappedViewSettings: ViewSettings;
|
|
1257
|
-
meta: MetadataConfig<F, Q
|
|
1258
|
-
|
|
1259
|
-
globalConfig: PageConfigProps$1;
|
|
1101
|
+
form: FormPageProps$1<F, Q, V> | undefined;
|
|
1102
|
+
mappedViewSettings: ViewSettings$1;
|
|
1103
|
+
meta: MetadataConfig$1<F, Q, Record<string, unknown>> | undefined;
|
|
1104
|
+
globalConfig: PageConfigProps;
|
|
1260
1105
|
};
|
|
1261
1106
|
|
|
1262
1107
|
interface GenerateContentProps<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
1263
1108
|
pageId: string;
|
|
1264
1109
|
ns?: string;
|
|
1265
|
-
contents: ContentItemsType<F, Q, V>;
|
|
1110
|
+
contents: ContentItemsType$1<F, Q, V>;
|
|
1266
1111
|
pageConfig: ReturnType<typeof usePageConfig<F, Q, V>>;
|
|
1267
1112
|
}
|
|
1268
1113
|
declare const useGenerateContent: <F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>({ pageId, ns, contents, pageConfig, }: GenerateContentProps<F, Q, V>) => {
|
|
1269
1114
|
header: react_jsx_runtime.JSX.Element[];
|
|
1270
1115
|
body: react_jsx_runtime.JSX.Element[];
|
|
1271
1116
|
footer: react_jsx_runtime.JSX.Element[];
|
|
1272
|
-
allContents: (ContentItem
|
|
1117
|
+
allContents: (ContentItem<F, Q, V> | _gaddario98_react_form.Submit<F, _gaddario98_react_form.SubmitKeysArg<F>> | _gaddario98_react_form.FormManagerConfig<F>)[];
|
|
1273
1118
|
};
|
|
1274
1119
|
|
|
1275
1120
|
interface GenerateContentRenderProps<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
1276
|
-
contents?: ContentItemsType<F, Q, V>;
|
|
1121
|
+
contents?: ContentItemsType$1<F, Q, V>;
|
|
1277
1122
|
ns?: string;
|
|
1278
1123
|
pageId: string;
|
|
1279
1124
|
formData: {
|
|
@@ -1299,7 +1144,7 @@ declare const useGenerateContentRender: <F extends FieldValues, Q extends Querie
|
|
|
1299
1144
|
renderInHeader: boolean;
|
|
1300
1145
|
key: string;
|
|
1301
1146
|
}[];
|
|
1302
|
-
allContents: (ContentItem<F, Q, V> | Submit<F, SubmitKeysArg<F>> | FormManagerConfig<F>)[];
|
|
1147
|
+
allContents: (ContentItem$1<F, Q, V> | Submit<F, SubmitKeysArg<F>> | FormManagerConfig<F>)[];
|
|
1303
1148
|
};
|
|
1304
1149
|
|
|
1305
1150
|
/**
|
|
@@ -1313,9 +1158,9 @@ declare const useGenerateContentRender: <F extends FieldValues, Q extends Querie
|
|
|
1313
1158
|
* @returns Processed view settings
|
|
1314
1159
|
*/
|
|
1315
1160
|
declare function useViewSettings<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>({ viewSettings, pageId, }: {
|
|
1316
|
-
viewSettings?: MappedItemsFunction<F, Q, ViewSettings, V> | ViewSettings;
|
|
1161
|
+
viewSettings?: MappedItemsFunction$1<F, Q, ViewSettings$1, V> | ViewSettings$1;
|
|
1317
1162
|
pageId: string;
|
|
1318
|
-
}): ViewSettings;
|
|
1163
|
+
}): ViewSettings$1;
|
|
1319
1164
|
|
|
1320
1165
|
/**
|
|
1321
1166
|
* Specialized hook for managing form data processing
|
|
@@ -1329,7 +1174,7 @@ declare function useViewSettings<F extends FieldValues, Q extends QueriesArray,
|
|
|
1329
1174
|
* @returns Processed form data and submit handlers
|
|
1330
1175
|
*/
|
|
1331
1176
|
declare function useFormData<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>({ form, pageId }: {
|
|
1332
|
-
form?: FormPageProps<F, Q, V>;
|
|
1177
|
+
form?: FormPageProps$1<F, Q, V>;
|
|
1333
1178
|
pageId: string;
|
|
1334
1179
|
}): {
|
|
1335
1180
|
mappedFormData: FormManagerConfig<F>[];
|
|
@@ -1348,9 +1193,9 @@ declare function useFormData<F extends FieldValues, Q extends QueriesArray, V ex
|
|
|
1348
1193
|
/**
|
|
1349
1194
|
* Props for useMetadata hook
|
|
1350
1195
|
*/
|
|
1351
|
-
interface UseMetadataProps<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray> {
|
|
1196
|
+
interface UseMetadataProps<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
|
|
1352
1197
|
/** Base metadata configuration (static or dynamic function) */
|
|
1353
|
-
meta?: MetadataConfig<F, Q> | MappedItemsFunction<F, Q, MetadataConfig>;
|
|
1198
|
+
meta?: MetadataConfig$1<F, Q, V> | MappedItemsFunction$1<F, Q, MetadataConfig$1<F, Q, V>, V>;
|
|
1354
1199
|
/** Namespace for i18n translations */
|
|
1355
1200
|
ns?: string;
|
|
1356
1201
|
/** Whether to automatically apply metadata (default: true) */
|
|
@@ -1368,7 +1213,7 @@ interface UseMetadataProps<F extends FieldValues = FieldValues, Q extends Querie
|
|
|
1368
1213
|
*
|
|
1369
1214
|
* @returns Resolved and translated metadata
|
|
1370
1215
|
*/
|
|
1371
|
-
declare function useMetadata<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray>({ meta, autoApply, pageId }: UseMetadataProps<F, Q>): ResolvedMetadata;
|
|
1216
|
+
declare function useMetadata<F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>({ meta, autoApply, pageId, }: UseMetadataProps<F, Q, V>): ResolvedMetadata;
|
|
1372
1217
|
/**
|
|
1373
1218
|
* Hook to manually apply metadata (when autoApply is false)
|
|
1374
1219
|
* @returns Function to apply resolved metadata to the DOM
|
|
@@ -1376,8 +1221,8 @@ declare function useMetadata<F extends FieldValues = FieldValues, Q extends Quer
|
|
|
1376
1221
|
declare function useApplyMetadata(): (meta: ResolvedMetadata) => void;
|
|
1377
1222
|
|
|
1378
1223
|
declare const usePageUtiles: () => {
|
|
1379
|
-
getContentProps: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray>(props: ContentItem<F, Q>) => ContentItem<F, Q>;
|
|
1380
|
-
getContentItems: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray>(props: Array<ContentItem<F, Q>>) => ContentItem<F, Q>[];
|
|
1224
|
+
getContentProps: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray>(props: ContentItem$1<F, Q>) => ContentItem$1<F, Q>;
|
|
1225
|
+
getContentItems: <F extends FieldValues = FieldValues, Q extends QueriesArray = QueriesArray>(props: Array<ContentItem$1<F, Q>>) => ContentItem$1<F, Q>[];
|
|
1381
1226
|
};
|
|
1382
1227
|
|
|
1383
1228
|
/**
|
|
@@ -1485,8 +1330,8 @@ interface NextMetadata {
|
|
|
1485
1330
|
follow?: boolean;
|
|
1486
1331
|
noarchive?: boolean;
|
|
1487
1332
|
nosnippet?: boolean;
|
|
1488
|
-
|
|
1489
|
-
|
|
1333
|
+
"max-image-preview"?: "none" | "standard" | "large";
|
|
1334
|
+
"max-snippet"?: number;
|
|
1490
1335
|
};
|
|
1491
1336
|
alternates?: {
|
|
1492
1337
|
canonical?: string;
|
|
@@ -1515,7 +1360,7 @@ interface NextMetadata {
|
|
|
1515
1360
|
tags?: Array<string>;
|
|
1516
1361
|
};
|
|
1517
1362
|
twitter?: {
|
|
1518
|
-
card?:
|
|
1363
|
+
card?: "summary" | "summary_large_image" | "app" | "player";
|
|
1519
1364
|
site?: string;
|
|
1520
1365
|
creator?: string;
|
|
1521
1366
|
title?: string;
|
|
@@ -1832,4 +1677,4 @@ declare function pageToMarkdown(options: {
|
|
|
1832
1677
|
}): string;
|
|
1833
1678
|
|
|
1834
1679
|
export { MemoizationCache, MetadataStoreProvider, PageGenerator, RenderComponents, applyMetadataToDom, buildArticleJsonLd, buildBreadcrumbListJsonLd, buildFAQPageJsonLd, buildOrganizationJsonLd, buildProductJsonLd, buildWebSiteJsonLd, clearMetadataLog, collectMetadataToHtml, createMetadataStore, createScopePageVariablesAtom, deepEqual, generateLlmsFullTxt, generateLlmsTxt, generateRobotsTxt, generateSitemapEntries, generateSitemapXml, getMetadata, getMetadataLog, getPageConfig, getPageVariablesCompositeKey, isStableValue, logMetadata, memoPropsComparator, memoize, optimizeDeps, pageConfigAtom, pageToMarkdown, pageVariablesAtom, pageVariablesAtomFamily, resetMetadata, resolveMetadata, setMetadata, setMetadataLogging, shallowEqual, toNextHeadTags, toNextMetadata, useApplyMetadata, useFormData, useGenerateContent, useGenerateContentRender, useMetadata, useMetadataStore, usePageConfig, usePageConfigReset, usePageConfigState, usePageConfigValue, usePageUtiles, useViewSettings };
|
|
1835
|
-
export type { AIHintsConfig, AlternatesConfig, ArticleJsonLdInput, BreadcrumbItem, ContainerItem, ContentItem, ContentItemsType, ContentProps, DefaultContainerProps, DependencyGraph, DependencyNode, Elements, FAQItem, FormPageProps, FunctionProps, GenerateContentProps, GenerateContentRenderProps, GetFunction, HeadTag, IconConfig, IconsConfig, ItemContainerProps, Items
|
|
1680
|
+
export type { AIHintsConfig$1 as AIHintsConfig, AlternatesConfig$1 as AlternatesConfig, ArticleJsonLdInput, BreadcrumbItem, ContainerItem$1 as ContainerItem, ContentItem$1 as ContentItem, ContentItemsType$1 as ContentItemsType, ContentProps, DefaultContainerProps$1 as DefaultContainerProps, DependencyGraph, DependencyNode, Elements, FAQItem, FormPageProps$1 as FormPageProps, FunctionProps$1 as FunctionProps, GenerateContentProps, GenerateContentRenderProps, GetFunction$1 as GetFunction, HeadTag, IconConfig$1 as IconConfig, IconsConfig$1 as IconsConfig, ItemContainerProps, Items$1 as Items, LlmsTxtConfig, LlmsTxtEntry, MappedContents$1 as MappedContents, MappedItemsFunction$1 as MappedItemsFunction, MemoizationCacheStats, MetaTag$1 as MetaTag, MetadataConfig$1 as MetadataConfig, MetadataEvaluatorContext$1 as MetadataEvaluatorContext, MetadataProvider, MetadataStore, NextMetadata, OpenGraphArticle$1 as OpenGraphArticle, OpenGraphConfig$1 as OpenGraphConfig, OpenGraphImage$1 as OpenGraphImage, OrganizationJsonLdInput, PageAuthState$1 as PageAuthState, PageConfigProps$1 as PageConfigProps, MetadataConfig$1 as PageMetadataProps, PageProps$1 as PageProps, PageTranslationOptions$1 as PageTranslationOptions, ProductJsonLdInput, Props, QueryPageConfigArray$1 as QueryPageConfigArray, RenderComponentsProps, ResolvedMetadata, RobotsConfig$1 as RobotsConfig, RobotsTxtConfig, SetFunction$1 as SetFunction, SitemapEntry, StructuredDataConfig$1 as StructuredDataConfig, TwitterCardConfig$1 as TwitterCardConfig, UseMetadataProps, ViewSettings$1 as ViewSettings, WebSiteJsonLdInput };
|