@visual-platform/next 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { type ResolvedPage } from "@visual-platform/contracts";
1
+ import { type ComponentNode, type ResolvedPage } from "@visual-platform/contracts";
2
2
  import { type VisualEventData, type VisualRegistry } from "@visual-platform/runtime-core";
3
3
  import type { Metadata } from "next";
4
4
  import { type ReactNode } from "react";
5
+ import { sourceTag, type ActionDefinition, type SourceEntry, type SourceError, type VisualContextConfig, type VisualContextValue } from "./sources.js";
5
6
  export type VisualNextConfig = {
6
7
  /** Published API base URL, e.g. process.env.VISUAL_API_URL. */
7
8
  apiUrl: string;
@@ -9,6 +10,16 @@ export type VisualNextConfig = {
9
10
  /** Public project key from the admin (Integrations → API keys), e.g. process.env.VISUAL_PROJECT_KEY. */
10
11
  apiKey?: string;
11
12
  registry: VisualRegistry;
13
+ /**
14
+ * Where Studio page links (button/nav "link to page") go in this app, e.g.
15
+ * `({ pageKey, locale, anchor }) => \`/${locale}/campaign/${pageKey}${anchor ? \`#${anchor}\` : ""}\``.
16
+ * Runs on the server; only same-site paths, #anchors or https URLs are used. Default: `/<pageKey>`.
17
+ */
18
+ pageHref?: (link: {
19
+ pageKey: string;
20
+ anchor?: string | undefined;
21
+ locale?: string | undefined;
22
+ }) => string | undefined;
12
23
  /** Seconds before Next refetches (stale-while-revalidate). Webhook revalidation is immediate. Default 60. */
13
24
  revalidate?: number;
14
25
  /** Validate API responses with zod (default: in development only). */
@@ -30,6 +41,55 @@ export type VisualNextConfig = {
30
41
  * request) and kept until the publish webhook or the next build.
31
42
  */
32
43
  rendering?: Rendering;
44
+ /**
45
+ * Data the app registers once (ADR-048): pages read them by name, the SDK resolves — on this server —
46
+ * only the sources a page uses. A plain value is read as is; a function or defineSource({ resolve }) is called.
47
+ * sources: { siteConfig: appConfig, products: defineSource({ params, resolve: ({ params }) => cms.products(params) }) }
48
+ */
49
+ sources?: Record<string, SourceEntry>;
50
+ /** App context for source params and private sources: `static` (cache-safe) and `request` (cookies/session → per request). */
51
+ context?: VisualContextConfig;
52
+ /** A source failed, timed out or got invalid params/shape; the page used its fallback. Default: console.warn. */
53
+ onSourceError?: (e: SourceError & {
54
+ page?: string;
55
+ }) => void;
56
+ /** Default source timeout in ms (1500). */
57
+ sourceTimeout?: number;
58
+ /**
59
+ * Context for the browser (`useVisual()`): a cache-safe subset of the static context, e.g.
60
+ * (ctx) => ({ currency: ctx.currency }). Per-visitor data goes through a `load: "client"` source instead.
61
+ */
62
+ expose?: (staticContext: VisualContextValue) => Record<string, unknown>;
63
+ /** Route that serves client sources (`visual.sourcesHandler()`). Default "/api/visual/sources". */
64
+ sourcesEndpoint?: string;
65
+ /** Secret for client-source handles. Default process.env.VISUAL_SOURCE_SECRET (≥ 32 chars). */
66
+ sourceSecret?: string;
67
+ /**
68
+ * Server Actions Studio events can trigger by name (ADR-048 P4): { onAddToCart: defineAction({ input, from, run, revalidates }) }.
69
+ * Needs `actionRunner`: your one "use server" function that calls visual.runAction.
70
+ */
71
+ actions?: Record<string, ActionDefinition<any, any>>;
72
+ /**
73
+ * // app/visual-actions.ts
74
+ * "use server";
75
+ * import { visual } from "@/visual";
76
+ * export async function runVisualAction(name: string, event: unknown) { return visual.runAction(name, event); }
77
+ */
78
+ actionRunner?: (name: string, event: unknown) => Promise<unknown>;
79
+ /** Development panel listing resolved sources (default: on in development). */
80
+ debug?: boolean;
81
+ /**
82
+ * Rate limit for `sourcesHandler` shared by all your instances (e.g. Upstash/Redis): return false to refuse.
83
+ * Default: 120 requests per minute per client IP, counted per server instance.
84
+ */
85
+ rateLimit?: (key: string, request: Request) => boolean | Promise<boolean>;
86
+ };
87
+ /** Route values for source params of kind route-param / query-param. */
88
+ export type SourceRouteProps = {
89
+ /** Route params, e.g. `await params` — `slug` and `locale` are filled in from the other props. */
90
+ params?: Record<string, unknown>;
91
+ /** `await searchParams` — only reaches sources through their typed params. */
92
+ searchParams?: Record<string, string | string[] | undefined>;
33
93
  };
34
94
  export type Rendering = "isr" | "static";
35
95
  /** Per page/component override of the caching mode. */
@@ -44,6 +104,8 @@ export declare const visualTags: {
44
104
  project: (projectId: string) => string;
45
105
  page: (projectId: string, locale: string, path: string) => string;
46
106
  component: (projectId: string, id: string) => string;
107
+ /** An app source (ADR-048): `visual.revalidateSource(name)` or `visual.sourceWebhook(secret)`. */
108
+ source: typeof sourceTag;
47
109
  };
48
110
  /**
49
111
  * Next.js App Router integration (blueprint 61). Call once at module scope:
@@ -108,7 +170,7 @@ export declare function createVisualNext(config: VisualNextConfig): {
108
170
  versionNumber: number;
109
171
  document: {
110
172
  schemaVersion: 1;
111
- nodes: import("@visual-platform/contracts").ComponentNode[];
173
+ nodes: ComponentNode[];
112
174
  props: {
113
175
  name: string;
114
176
  label: string;
@@ -127,7 +189,7 @@ export declare function createVisualNext(config: VisualNextConfig): {
127
189
  data?: {
128
190
  name: string;
129
191
  label?: string | undefined;
130
- source: "app" | "table";
192
+ source: "app" | "appSource" | "table";
131
193
  shape: "list" | "object";
132
194
  fields: import("@visual-platform/contracts").DataField[];
133
195
  sample?: unknown;
@@ -144,7 +206,81 @@ export declare function createVisualNext(config: VisualNextConfig): {
144
206
  locale?: string | undefined;
145
207
  } | undefined;
146
208
  single?: boolean | undefined;
209
+ sourceRef?: string | undefined;
210
+ params?: Record<string, {
211
+ kind: "literal";
212
+ value: string | number | boolean | null;
213
+ } | {
214
+ kind: "page-locale";
215
+ } | {
216
+ kind: "route-param";
217
+ name: string;
218
+ } | {
219
+ kind: "query-param";
220
+ name: string;
221
+ } | {
222
+ kind: "context";
223
+ key: string;
224
+ } | {
225
+ kind: "source";
226
+ path: string;
227
+ }> | undefined;
228
+ fallback?: "empty" | "hide" | "sample" | undefined;
147
229
  }[] | undefined;
230
+ flows?: {
231
+ name: string;
232
+ label?: string | undefined;
233
+ description?: string | undefined;
234
+ params?: {
235
+ name: string;
236
+ label?: string | undefined;
237
+ type: "boolean" | "number" | "text";
238
+ required?: boolean | undefined;
239
+ }[] | undefined;
240
+ steps: import("@visual-platform/contracts").FlowStep[];
241
+ onError?: import("@visual-platform/contracts").FlowStep[] | undefined;
242
+ }[] | undefined;
243
+ lifecycle?: {
244
+ mount?: string | undefined;
245
+ unmount?: string | undefined;
246
+ visible?: string | undefined;
247
+ leave?: string | undefined;
248
+ visibleOnce?: boolean | undefined;
249
+ every?: {
250
+ run: string;
251
+ ms: number;
252
+ max?: number | undefined;
253
+ } | undefined;
254
+ } | undefined;
255
+ animation?: {
256
+ entrance?: {
257
+ duration?: number | undefined;
258
+ delay?: number | undefined;
259
+ easing?: string | undefined;
260
+ preset: string;
261
+ trigger?: "mount" | "visible" | undefined;
262
+ once?: boolean | undefined;
263
+ } | undefined;
264
+ hover?: {
265
+ preset: string;
266
+ duration?: number | undefined;
267
+ easing?: string | undefined;
268
+ } | undefined;
269
+ loop?: {
270
+ duration?: number | undefined;
271
+ delay?: number | undefined;
272
+ easing?: string | undefined;
273
+ preset: string;
274
+ iterations?: number | "infinite" | undefined;
275
+ } | undefined;
276
+ scroll?: {
277
+ preset: string;
278
+ range?: "cover" | "enter" | "exit" | undefined;
279
+ } | undefined;
280
+ stagger?: {
281
+ ms: number;
282
+ } | undefined;
283
+ } | undefined;
148
284
  disabledLocales?: string[] | undefined;
149
285
  childrenSlot?: {
150
286
  nodeId: string;
@@ -165,6 +301,34 @@ export declare function createVisualNext(config: VisualNextConfig): {
165
301
  unicodeRange?: string | undefined;
166
302
  }[];
167
303
  }[];
304
+ motion?: {
305
+ presets?: Record<string, {
306
+ label?: string | undefined;
307
+ kind: "emphasis" | "entrance" | "hover" | "loop";
308
+ frames: {
309
+ at: number;
310
+ opacity?: number | undefined;
311
+ x?: number | undefined;
312
+ y?: number | undefined;
313
+ unit?: "%" | "px" | undefined;
314
+ scale?: number | undefined;
315
+ rotate?: number | undefined;
316
+ blur?: number | undefined;
317
+ }[];
318
+ duration: number;
319
+ easing: string;
320
+ delay?: number | undefined;
321
+ iterations?: number | "infinite" | undefined;
322
+ alternate?: boolean | undefined;
323
+ }> | undefined;
324
+ durations?: {
325
+ fast: number;
326
+ normal: number;
327
+ slow: number;
328
+ } | undefined;
329
+ easings?: Record<string, string> | undefined;
330
+ disabled?: boolean | undefined;
331
+ } | undefined;
168
332
  systems?: Record<string, {
169
333
  vars: Record<string, string>;
170
334
  themes: Record<string, Record<string, string>>;
@@ -178,6 +342,34 @@ export declare function createVisualNext(config: VisualNextConfig): {
178
342
  unicodeRange?: string | undefined;
179
343
  }[];
180
344
  }[];
345
+ motion?: {
346
+ presets?: Record<string, {
347
+ label?: string | undefined;
348
+ kind: "emphasis" | "entrance" | "hover" | "loop";
349
+ frames: {
350
+ at: number;
351
+ opacity?: number | undefined;
352
+ x?: number | undefined;
353
+ y?: number | undefined;
354
+ unit?: "%" | "px" | undefined;
355
+ scale?: number | undefined;
356
+ rotate?: number | undefined;
357
+ blur?: number | undefined;
358
+ }[];
359
+ duration: number;
360
+ easing: string;
361
+ delay?: number | undefined;
362
+ iterations?: number | "infinite" | undefined;
363
+ alternate?: boolean | undefined;
364
+ }> | undefined;
365
+ durations?: {
366
+ fast: number;
367
+ normal: number;
368
+ slow: number;
369
+ } | undefined;
370
+ easings?: Record<string, string> | undefined;
371
+ disabled?: boolean | undefined;
372
+ } | undefined;
181
373
  }> | undefined;
182
374
  } | null | undefined;
183
375
  styles?: string | null | undefined;
@@ -187,6 +379,34 @@ export declare function createVisualNext(config: VisualNextConfig): {
187
379
  dir: "ltr" | "rtl";
188
380
  }> | null | undefined;
189
381
  data?: Record<string, unknown> | undefined;
382
+ sourcePlan?: {
383
+ layers: {
384
+ input: string;
385
+ kind: "app" | "appSource";
386
+ sourceRef: string;
387
+ params: Record<string, {
388
+ kind: "literal";
389
+ value: string | number | boolean | null;
390
+ } | {
391
+ kind: "page-locale";
392
+ } | {
393
+ kind: "route-param";
394
+ name: string;
395
+ } | {
396
+ kind: "query-param";
397
+ name: string;
398
+ } | {
399
+ kind: "context";
400
+ key: string;
401
+ } | {
402
+ kind: "source";
403
+ path: string;
404
+ }>;
405
+ fallback: "empty" | "hide" | "sample";
406
+ dependsOn: string[];
407
+ }[][];
408
+ contextKeys: string[];
409
+ } | undefined;
190
410
  } | null>;
191
411
  VisualPage: (props: {
192
412
  locale: string;
@@ -194,7 +414,7 @@ export declare function createVisualNext(config: VisualNextConfig): {
194
414
  mode?: "production" | "preview";
195
415
  data?: Record<string, unknown>;
196
416
  handlers?: VisualServerHandlers;
197
- } & RenderingOptions) => Promise<import("react").JSX.Element>;
417
+ } & RenderingOptions & SourceRouteProps) => Promise<import("react").JSX.Element | Iterable<ReactNode> | (string | number | bigint | boolean | Iterable<ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined)>;
198
418
  VisualComponent: (props: {
199
419
  id: string;
200
420
  locale?: string;
@@ -203,12 +423,28 @@ export declare function createVisualNext(config: VisualNextConfig): {
203
423
  theme?: string;
204
424
  fallback?: ReactNode;
205
425
  handlers?: VisualServerHandlers;
206
- } & RenderingOptions) => Promise<import("react").JSX.Element>;
426
+ } & RenderingOptions & SourceRouteProps) => Promise<string | number | bigint | boolean | import("react").JSX.Element | Iterable<ReactNode> | null | undefined>;
207
427
  generateMetadata: (locale: string, slug: string | string[] | undefined, opts?: {
208
428
  titleTemplate?: string;
209
429
  baseUrl?: string;
210
430
  } & RenderingOptions) => Promise<Metadata>;
211
431
  revalidateHandler: (secret: string) => (request: Request) => Promise<Response>;
432
+ revalidateSource: (name: string) => void;
433
+ sourceWebhook: (secret: string) => (request: Request) => Promise<Response>;
434
+ sourcesHandler: () => (request: Request) => Promise<Response>;
435
+ previewDataHandler: (secret: string) => (request: Request) => Promise<Response>;
436
+ runAction: (boundName: string, event: unknown) => Promise<{
437
+ ok: true;
438
+ data: unknown;
439
+ revalidated: string[];
440
+ } | {
441
+ ok: false;
442
+ error: string;
443
+ }>;
444
+ getContext: (opts: {
445
+ locale: string;
446
+ request?: boolean;
447
+ }) => Promise<VisualContextValue>;
212
448
  locales: () => Promise<{
213
449
  code: string;
214
450
  name: string;
@@ -251,5 +487,7 @@ export declare function createVisualNext(config: VisualNextConfig): {
251
487
  }>;
252
488
  };
253
489
  export { createVisualRegistry } from "@visual-platform/runtime-core";
490
+ export { ActionError, defineAction, defineSource } from "./sources.js";
491
+ export type { ActionDefinition, ActionRunArgs, SourceDefinition, SourceEntry, SourceError, SourceResolveArgs, SourceVisibility, StandardSchema, VisualContextConfig, VisualContextValue, VisualSourceHandle } from "./sources.js";
254
492
  export type { VisualRegistry, VisualNodeProps, VisualEvent, VisualEventData, EventKind } from "@visual-platform/runtime-core";
255
493
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}