@visual-platform/next 0.2.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;
@@ -123,10 +185,11 @@ export declare function createVisualNext(config: VisualNextConfig): {
123
185
  defaultLocale: string;
124
186
  translations: Record<string, Record<string, string>>;
125
187
  theme?: string | undefined;
188
+ designSystemId?: string | undefined;
126
189
  data?: {
127
190
  name: string;
128
191
  label?: string | undefined;
129
- source: "app" | "table";
192
+ source: "app" | "appSource" | "table";
130
193
  shape: "list" | "object";
131
194
  fields: import("@visual-platform/contracts").DataField[];
132
195
  sample?: unknown;
@@ -143,7 +206,81 @@ export declare function createVisualNext(config: VisualNextConfig): {
143
206
  locale?: string | undefined;
144
207
  } | undefined;
145
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;
146
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;
147
284
  disabledLocales?: string[] | undefined;
148
285
  childrenSlot?: {
149
286
  nodeId: string;
@@ -164,6 +301,76 @@ export declare function createVisualNext(config: VisualNextConfig): {
164
301
  unicodeRange?: string | undefined;
165
302
  }[];
166
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;
332
+ systems?: Record<string, {
333
+ vars: Record<string, string>;
334
+ themes: Record<string, Record<string, string>>;
335
+ fonts: {
336
+ family: string;
337
+ faces: {
338
+ weight: number;
339
+ style: "italic" | "normal";
340
+ url: string;
341
+ format: "opentype" | "truetype" | "woff" | "woff2";
342
+ unicodeRange?: string | undefined;
343
+ }[];
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;
373
+ }> | undefined;
167
374
  } | null | undefined;
168
375
  styles?: string | null | undefined;
169
376
  locales?: Record<string, {
@@ -172,6 +379,34 @@ export declare function createVisualNext(config: VisualNextConfig): {
172
379
  dir: "ltr" | "rtl";
173
380
  }> | null | undefined;
174
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;
175
410
  } | null>;
176
411
  VisualPage: (props: {
177
412
  locale: string;
@@ -179,7 +414,7 @@ export declare function createVisualNext(config: VisualNextConfig): {
179
414
  mode?: "production" | "preview";
180
415
  data?: Record<string, unknown>;
181
416
  handlers?: VisualServerHandlers;
182
- } & 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)>;
183
418
  VisualComponent: (props: {
184
419
  id: string;
185
420
  locale?: string;
@@ -188,12 +423,28 @@ export declare function createVisualNext(config: VisualNextConfig): {
188
423
  theme?: string;
189
424
  fallback?: ReactNode;
190
425
  handlers?: VisualServerHandlers;
191
- } & RenderingOptions) => Promise<import("react").JSX.Element>;
426
+ } & RenderingOptions & SourceRouteProps) => Promise<string | number | bigint | boolean | import("react").JSX.Element | Iterable<ReactNode> | null | undefined>;
192
427
  generateMetadata: (locale: string, slug: string | string[] | undefined, opts?: {
193
428
  titleTemplate?: string;
194
429
  baseUrl?: string;
195
430
  } & RenderingOptions) => Promise<Metadata>;
196
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>;
197
448
  locales: () => Promise<{
198
449
  code: string;
199
450
  name: string;
@@ -236,5 +487,7 @@ export declare function createVisualNext(config: VisualNextConfig): {
236
487
  }>;
237
488
  };
238
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";
239
492
  export type { VisualRegistry, VisualNodeProps, VisualEvent, VisualEventData, EventKind } from "@visual-platform/runtime-core";
240
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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"}