@kubuild/renderer 0.8.0 → 0.8.2
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/action-dispatcher.d.cts +42 -0
- package/dist/action-dispatcher.d.cts.map +1 -0
- package/dist/action-dispatcher.d.ts +2 -2
- package/dist/action-dispatcher.d.ts.map +1 -1
- package/dist/action-runners/api-request.d.cts +89 -0
- package/dist/action-runners/api-request.d.cts.map +1 -0
- package/dist/action-runners/index.d.cts +25 -0
- package/dist/action-runners/index.d.cts.map +1 -0
- package/dist/action-runners/index.d.ts +8 -8
- package/dist/action-runners/index.d.ts.map +1 -1
- package/dist/action-runners/modal-manager.d.cts +73 -0
- package/dist/action-runners/modal-manager.d.cts.map +1 -0
- package/dist/action-runners/navigation-utils.d.cts +62 -0
- package/dist/action-runners/navigation-utils.d.cts.map +1 -0
- package/dist/action-runners/toast-container.d.cts +20 -0
- package/dist/action-runners/toast-container.d.cts.map +1 -0
- package/dist/action-runners/toast-container.d.ts +1 -1
- package/dist/action-runners/toast-container.d.ts.map +1 -1
- package/dist/action-runners/toast-manager.d.cts +74 -0
- package/dist/action-runners/toast-manager.d.cts.map +1 -0
- package/dist/action-runners/tracking.d.cts +25 -0
- package/dist/action-runners/tracking.d.cts.map +1 -0
- package/dist/action-runners/ui-feedback.d.cts +37 -0
- package/dist/action-runners/ui-feedback.d.cts.map +1 -0
- package/dist/action-runners/ui-feedback.d.ts +1 -1
- package/dist/action-runners/ui-feedback.d.ts.map +1 -1
- package/dist/animation.d.cts +26 -0
- package/dist/animation.d.cts.map +1 -0
- package/dist/artboard-portal-host.d.cts +70 -0
- package/dist/artboard-portal-host.d.cts.map +1 -0
- package/dist/artboard-portal-host.d.ts +4 -4
- package/dist/artboard-portal-host.d.ts.map +1 -1
- package/dist/code-generator.d.cts +51 -0
- package/dist/code-generator.d.cts.map +1 -0
- package/dist/error-boundary.d.cts +22 -0
- package/dist/error-boundary.d.cts.map +1 -0
- package/dist/error-boundary.d.ts +1 -1
- package/dist/error-boundary.d.ts.map +1 -1
- package/dist/form-context.d.cts +114 -0
- package/dist/form-context.d.cts.map +1 -0
- package/dist/index.cjs +68 -68
- package/dist/index.d.cts +17 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +16 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -61
- package/dist/legacy-actions.d.cts +19 -0
- package/dist/legacy-actions.d.cts.map +1 -0
- package/dist/nodes/editable-text.d.cts +15 -0
- package/dist/nodes/editable-text.d.cts.map +1 -0
- package/dist/nodes/editable-text.d.ts.map +1 -1
- package/dist/nodes/extended-form-nodes.d.cts +118 -0
- package/dist/nodes/extended-form-nodes.d.cts.map +1 -0
- package/dist/nodes/extended-form-nodes.d.ts +1 -1
- package/dist/nodes/extended-form-nodes.d.ts.map +1 -1
- package/dist/nodes/form-nodes.d.cts +186 -0
- package/dist/nodes/form-nodes.d.cts.map +1 -0
- package/dist/nodes/form-nodes.d.ts +2 -2
- package/dist/nodes/form-nodes.d.ts.map +1 -1
- package/dist/nodes/html-embed.d.cts +15 -0
- package/dist/nodes/html-embed.d.cts.map +1 -0
- package/dist/nodes/index.d.cts +7 -0
- package/dist/nodes/index.d.cts.map +1 -0
- package/dist/nodes/index.d.ts +6 -6
- package/dist/nodes/index.d.ts.map +1 -1
- package/dist/nodes/media-utils.d.cts +17 -0
- package/dist/nodes/media-utils.d.cts.map +1 -0
- package/dist/nodes/radio-group-context.d.cts +12 -0
- package/dist/nodes/radio-group-context.d.cts.map +1 -0
- package/dist/preview-adapter.d.cts +128 -0
- package/dist/preview-adapter.d.cts.map +1 -0
- package/dist/preview-adapter.d.ts +1 -1
- package/dist/preview-adapter.d.ts.map +1 -1
- package/dist/prop-resolution.d.cts +16 -0
- package/dist/prop-resolution.d.cts.map +1 -0
- package/dist/render-context.d.cts +117 -0
- package/dist/render-context.d.cts.map +1 -0
- package/dist/renderer.d.cts +77 -0
- package/dist/renderer.d.cts.map +1 -0
- package/dist/renderer.d.ts +4 -4
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderers/conversion/accordion.d.cts +20 -0
- package/dist/renderers/conversion/accordion.d.cts.map +1 -0
- package/dist/renderers/conversion/accordion.d.ts +1 -1
- package/dist/renderers/conversion/accordion.d.ts.map +1 -1
- package/dist/renderers/conversion/carousel.d.cts +13 -0
- package/dist/renderers/conversion/carousel.d.cts.map +1 -0
- package/dist/renderers/conversion/carousel.d.ts +1 -1
- package/dist/renderers/conversion/carousel.d.ts.map +1 -1
- package/dist/renderers/conversion/countdown.d.cts +50 -0
- package/dist/renderers/conversion/countdown.d.cts.map +1 -0
- package/dist/renderers/conversion/countdown.d.ts +1 -1
- package/dist/renderers/conversion/countdown.d.ts.map +1 -1
- package/dist/renderers/conversion/divider.d.cts +9 -0
- package/dist/renderers/conversion/divider.d.cts.map +1 -0
- package/dist/renderers/conversion/divider.d.ts +1 -1
- package/dist/renderers/conversion/divider.d.ts.map +1 -1
- package/dist/renderers/conversion/index.d.cts +13 -0
- package/dist/renderers/conversion/index.d.cts.map +1 -0
- package/dist/renderers/conversion/index.d.ts +6 -6
- package/dist/renderers/conversion/index.d.ts.map +1 -1
- package/dist/renderers/conversion/rating.d.cts +14 -0
- package/dist/renderers/conversion/rating.d.cts.map +1 -0
- package/dist/renderers/conversion/rating.d.ts +1 -1
- package/dist/renderers/conversion/rating.d.ts.map +1 -1
- package/dist/renderers/conversion/shared.d.cts +17 -0
- package/dist/renderers/conversion/shared.d.cts.map +1 -0
- package/dist/renderers/conversion/shared.d.ts +1 -1
- package/dist/renderers/conversion/shared.d.ts.map +1 -1
- package/dist/renderers/conversion/tabs.d.cts +7 -0
- package/dist/renderers/conversion/tabs.d.cts.map +1 -0
- package/dist/renderers/conversion/tabs.d.ts +1 -1
- package/dist/renderers/conversion/tabs.d.ts.map +1 -1
- package/dist/renderers/extended-form-renderers.d.cts +8 -0
- package/dist/renderers/extended-form-renderers.d.cts.map +1 -0
- package/dist/renderers/extended-form-renderers.d.ts +1 -1
- package/dist/renderers/extended-form-renderers.d.ts.map +1 -1
- package/dist/renderers/index.d.cts +5 -0
- package/dist/renderers/index.d.cts.map +1 -0
- package/dist/renderers/index.d.ts +4 -4
- package/dist/renderers/index.d.ts.map +1 -1
- package/dist/renderers/interactive-renderers.d.cts +7 -0
- package/dist/renderers/interactive-renderers.d.cts.map +1 -0
- package/dist/renderers/interactive-renderers.d.ts +1 -1
- package/dist/renderers/interactive-renderers.d.ts.map +1 -1
- package/dist/renderers/render-node-content.d.cts +74 -0
- package/dist/renderers/render-node-content.d.cts.map +1 -0
- package/dist/renderers/render-node-content.d.ts +1 -1
- package/dist/renderers/render-node-content.d.ts.map +1 -1
- package/dist/styles.d.cts +95 -0
- package/dist/styles.d.cts.map +1 -0
- package/dist/theme.d.cts +20 -0
- package/dist/theme.d.cts.map +1 -0
- package/dist/tracking/tracking-manager.d.cts +40 -0
- package/dist/tracking/tracking-manager.d.cts.map +1 -0
- package/package.json +17 -12
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Artboard, Node } from '@kubuild/schema';
|
|
3
|
+
import { type ComponentRegistry } from '@kubuild/components';
|
|
4
|
+
import { RenderContext, Diagnostic } from './render-context.cjs';
|
|
5
|
+
import { type ModalManager } from './action-runners/index.cjs';
|
|
6
|
+
import { type KubuildRendererProps } from './renderer.cjs';
|
|
7
|
+
import { type ResponsiveMode } from './styles.cjs';
|
|
8
|
+
export interface ArtboardPortalHostProps {
|
|
9
|
+
/**
|
|
10
|
+
* Component artboards eligible for portal rendering. Defaults to
|
|
11
|
+
* `context.componentArtboards` when omitted.
|
|
12
|
+
*/
|
|
13
|
+
artboards?: readonly Artboard[];
|
|
14
|
+
registry?: ComponentRegistry;
|
|
15
|
+
context?: RenderContext;
|
|
16
|
+
viewport?: 'desktop' | 'tablet' | 'mobile';
|
|
17
|
+
/** Same semantics and defaulting as `KubuildRenderer`'s `responsive` prop. */
|
|
18
|
+
responsive?: ResponsiveMode;
|
|
19
|
+
/**
|
|
20
|
+
* Editor mode renders nothing: while authoring, a component artboard is shown as its own
|
|
21
|
+
* canvas surface instead, which is precisely what keeps it from covering the page being
|
|
22
|
+
* edited. Portals exist only for runtime/preview.
|
|
23
|
+
*/
|
|
24
|
+
mode?: 'editor' | 'runtime';
|
|
25
|
+
modalManager?: ModalManager;
|
|
26
|
+
/** Portal target; defaults to `document.body`. */
|
|
27
|
+
container?: Element | null;
|
|
28
|
+
onDiagnostic?: (diagnostic: Diagnostic) => void;
|
|
29
|
+
onActionDispatch?: (actionType: string, payload: Record<string, unknown> | undefined, nodeId: string) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns the node a component artboard actually represents: its synthetic `page` root
|
|
33
|
+
* holds the detached subtree as its only child.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getArtboardContentNode(artboard: Artboard): Node | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Pick the component artboards that should currently be on screen, given ModalManager's
|
|
38
|
+
* state snapshot. Kept as a pure function so the open/closed decision is testable without
|
|
39
|
+
* a DOM, and so the portal component itself stays a thin shell around it.
|
|
40
|
+
*/
|
|
41
|
+
export declare function selectOpenComponentArtboards(artboards: readonly Artboard[], modalState: Record<string, boolean>): Artboard[];
|
|
42
|
+
/**
|
|
43
|
+
* Renders every open component artboard into a portal.
|
|
44
|
+
*
|
|
45
|
+
* Detaching a modal/drawer into its own artboard means its content is no longer part of the
|
|
46
|
+
* page's own node tree, so at runtime something has to put it back on screen when a trigger
|
|
47
|
+
* fires. ModalManager is a plain string-keyed singleton, so a trigger in one artboard already
|
|
48
|
+
* addresses content in another with no extra wiring — this host just watches that state and
|
|
49
|
+
* renders whichever component artboards are currently open.
|
|
50
|
+
*/
|
|
51
|
+
export declare const ArtboardPortalHost: React.FC<ArtboardPortalHostProps>;
|
|
52
|
+
export interface KubuildProjectRendererProps extends KubuildRendererProps {
|
|
53
|
+
/**
|
|
54
|
+
* Component artboards belonging to the same project as `document`. Their content is
|
|
55
|
+
* portal-rendered on top of the page whenever a trigger opens them (runtime only).
|
|
56
|
+
* Defaults to `context.componentArtboards`.
|
|
57
|
+
*/
|
|
58
|
+
componentArtboards?: readonly Artboard[];
|
|
59
|
+
modalManager?: ModalManager;
|
|
60
|
+
portalContainer?: Element | null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Renders one page artboard plus the portal host for its project's component artboards.
|
|
64
|
+
*
|
|
65
|
+
* Use this instead of KubuildRenderer wherever a published page must be able to open
|
|
66
|
+
* detached modals/drawers. Dependency direction stays one-way (this composes the renderer;
|
|
67
|
+
* the renderer knows nothing about projects), so single-document rendering is unaffected.
|
|
68
|
+
*/
|
|
69
|
+
export declare const KubuildProjectRenderer: React.FC<KubuildProjectRendererProps>;
|
|
70
|
+
//# sourceMappingURL=artboard-portal-host.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artboard-portal-host.d.cts","sourceRoot":"","sources":["../src/artboard-portal-host.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAA0B,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAA8B,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG9E,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,8EAA8E;IAC9E,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAI3E;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,QAAQ,EAAE,CAQZ;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAuFhE,CAAC;AAEF,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAuBxE,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { Artboard, Node } from '@kubuild/schema';
|
|
3
3
|
import { type ComponentRegistry } from '@kubuild/components';
|
|
4
|
-
import { RenderContext, Diagnostic } from './render-context';
|
|
5
|
-
import { type ModalManager } from './action-runners';
|
|
6
|
-
import { type KubuildRendererProps } from './renderer';
|
|
7
|
-
import { type ResponsiveMode } from './styles';
|
|
4
|
+
import { RenderContext, Diagnostic } from './render-context.js';
|
|
5
|
+
import { type ModalManager } from './action-runners/index.js';
|
|
6
|
+
import { type KubuildRendererProps } from './renderer.js';
|
|
7
|
+
import { type ResponsiveMode } from './styles.js';
|
|
8
8
|
export interface ArtboardPortalHostProps {
|
|
9
9
|
/**
|
|
10
10
|
* Component artboards eligible for portal rendering. Defaults to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artboard-portal-host.d.ts","sourceRoot":"","sources":["../src/artboard-portal-host.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAA0B,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"artboard-portal-host.d.ts","sourceRoot":"","sources":["../src/artboard-portal-host.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAA0B,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAA8B,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG9E,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,8EAA8E;IAC9E,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAI3E;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,QAAQ,EAAE,CAQZ;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAuFhE,CAAC;AAEF,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAuBxE,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { PageDocument, Node } from '@kubuild/schema';
|
|
2
|
+
export interface GenerateHtmlOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Whether to include internal node ID classes (`kb-node-{id}`).
|
|
5
|
+
* Defaults to true so generated CSS matches HTML elements.
|
|
6
|
+
*/
|
|
7
|
+
includeNodeClasses?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Indentation width in spaces. Defaults to 2.
|
|
10
|
+
*/
|
|
11
|
+
indentSize?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Root tag for the page container ('main' | 'div'). Defaults to 'main'.
|
|
14
|
+
*/
|
|
15
|
+
rootTag?: 'main' | 'div';
|
|
16
|
+
}
|
|
17
|
+
export interface GenerateCssOptions {
|
|
18
|
+
/**
|
|
19
|
+
* Whether to include the baseline CSS reset. Defaults to true.
|
|
20
|
+
*/
|
|
21
|
+
includeReset?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Custom CSS class prefix for node selectors. Defaults to 'kb-node-'.
|
|
24
|
+
*/
|
|
25
|
+
classPrefix?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface StandaloneHtmlOptions {
|
|
28
|
+
htmlOptions?: GenerateHtmlOptions;
|
|
29
|
+
cssOptions?: GenerateCssOptions;
|
|
30
|
+
/** Custom language attribute for <html>. Defaults to 'en'. */
|
|
31
|
+
lang?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generates a clean, formatted semantic HTML string for a PageDocument or Node.
|
|
35
|
+
*/
|
|
36
|
+
export declare function generateSemanticHtml(docOrNode: PageDocument | Node, options?: GenerateHtmlOptions): string;
|
|
37
|
+
/**
|
|
38
|
+
* Generates structured, readable CSS for the given document, compiling
|
|
39
|
+
* base styles, responsive breakpoints (desktop/tablet/mobile), and pseudo-classes.
|
|
40
|
+
*
|
|
41
|
+
* Breakpoint layers use the shared `BREAKPOINTS` ranges from `@kubuild/schema` and the same
|
|
42
|
+
* per-layer overrides as the runtime renderer's `responsive: 'css'` mode
|
|
43
|
+
* (`collectResponsiveCssRules`), so exported HTML lays out identically at every width.
|
|
44
|
+
*/
|
|
45
|
+
export declare function generateDocumentCss(docOrNode: PageDocument | Node, options?: GenerateCssOptions): string;
|
|
46
|
+
/**
|
|
47
|
+
* Generates a complete, standalone, production-ready HTML document string
|
|
48
|
+
* with metadata, responsive viewport tags, embedded stylesheet, and semantic body markup.
|
|
49
|
+
*/
|
|
50
|
+
export declare function generateStandaloneHtml(doc: PageDocument, options?: StandaloneHtmlOptions): string;
|
|
51
|
+
//# sourceMappingURL=code-generator.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-generator.d.cts","sourceRoot":"","sources":["../src/code-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,IAAI,EAKL,MAAM,iBAAiB,CAAC;AAUzB,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4ZD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,YAAY,GAAG,IAAI,EAC9B,OAAO,GAAE,mBAAwB,GAChC,MAAM,CAIR;AAuBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,YAAY,GAAG,IAAI,EAC9B,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAoFR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,YAAY,EACjB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CA0BR"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Component, ErrorInfo, ReactNode } from 'react';
|
|
2
|
+
import type { Diagnostic } from './render-context.cjs';
|
|
3
|
+
export interface ComponentErrorBoundaryProps {
|
|
4
|
+
nodeId: string;
|
|
5
|
+
componentType: string;
|
|
6
|
+
mode?: 'editor' | 'runtime';
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
onError?: (error: Error, info: ErrorInfo) => void;
|
|
9
|
+
onDiagnostic?: (diagnostic: Diagnostic) => void;
|
|
10
|
+
}
|
|
11
|
+
interface ComponentErrorBoundaryState {
|
|
12
|
+
hasError: boolean;
|
|
13
|
+
error?: Error;
|
|
14
|
+
}
|
|
15
|
+
export declare class ComponentErrorBoundary extends Component<ComponentErrorBoundaryProps, ComponentErrorBoundaryState> {
|
|
16
|
+
constructor(props: ComponentErrorBoundaryProps);
|
|
17
|
+
static getDerivedStateFromError(error: Error): ComponentErrorBoundaryState;
|
|
18
|
+
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
19
|
+
render(): ReactNode;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=error-boundary.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-boundary.d.cts","sourceRoot":"","sources":["../src/error-boundary.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CACjD;AAED,UAAU,2BAA2B;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,sBAAuB,SAAQ,SAAS,CACnD,2BAA2B,EAC3B,2BAA2B,CAC5B;gBACa,KAAK,EAAE,2BAA2B;IAK9C,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,2BAA2B;IAI1E,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAe3D,MAAM,IAAI,SAAS;CA8CpB"}
|
package/dist/error-boundary.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../src/error-boundary.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../src/error-boundary.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CACjD;AAED,UAAU,2BAA2B;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,sBAAuB,SAAQ,SAAS,CACnD,2BAA2B,EAC3B,2BAA2B,CAC5B;gBACa,KAAK,EAAE,2BAA2B;IAK9C,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,2BAA2B;IAI1E,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAe3D,MAAM,IAAI,SAAS;CA8CpB"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { FormConfig, FormFieldBinding, ActionPipeline, PageDocument, ValidationRule, ValidateOnEvent } from '@kubuild/schema';
|
|
3
|
+
import { type Diagnostic } from '@kubuild/core';
|
|
4
|
+
/**
|
|
5
|
+
* Form Runtime State representation.
|
|
6
|
+
*/
|
|
7
|
+
export interface FormRuntimeState {
|
|
8
|
+
values: Record<string, unknown>;
|
|
9
|
+
errors: Record<string, string>;
|
|
10
|
+
touched: Record<string, boolean>;
|
|
11
|
+
isSubmitting: boolean;
|
|
12
|
+
isValid: boolean;
|
|
13
|
+
dirty: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Partial / input structure for registering a field binding.
|
|
17
|
+
*/
|
|
18
|
+
export interface FormFieldBindingInput {
|
|
19
|
+
name: string;
|
|
20
|
+
label?: string;
|
|
21
|
+
defaultValue?: unknown;
|
|
22
|
+
rules?: ValidationRule[];
|
|
23
|
+
validateOn?: ValidateOnEvent;
|
|
24
|
+
transform?: 'trim' | 'lowercase' | 'uppercase' | 'number';
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
required?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Form Runtime Context Value containing state and mutation callbacks.
|
|
30
|
+
*/
|
|
31
|
+
export interface FormRuntimeContextValue extends FormRuntimeState {
|
|
32
|
+
formId: string;
|
|
33
|
+
formConfig?: FormConfig;
|
|
34
|
+
initialValues: Record<string, unknown>;
|
|
35
|
+
setFieldValue: (name: string, value: unknown, shouldValidate?: boolean) => void;
|
|
36
|
+
setFieldTouched: (name: string, isTouched?: boolean, shouldValidate?: boolean) => void;
|
|
37
|
+
setFieldError: (name: string, error: string | null) => void;
|
|
38
|
+
setErrors: (errors: Record<string, string>) => void;
|
|
39
|
+
setValues: (values: Record<string, unknown>, replace?: boolean) => void;
|
|
40
|
+
setSubmitting: (isSubmitting: boolean) => void;
|
|
41
|
+
resetForm: (nextInitialValues?: Record<string, unknown>) => void;
|
|
42
|
+
validateField: (name: string, value?: unknown) => string | null;
|
|
43
|
+
validateForm: (valuesToValidate?: Record<string, unknown>) => Record<string, string>;
|
|
44
|
+
handleFormSubmit: (e?: React.FormEvent | Event) => Promise<boolean>;
|
|
45
|
+
registerField: (binding: FormFieldBindingInput) => () => void;
|
|
46
|
+
getFieldBinding: (name: string) => FormFieldBinding | undefined;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* FormRuntimeContext for consuming form state across the React tree.
|
|
50
|
+
*/
|
|
51
|
+
export declare const FormRuntimeContext: React.Context<FormRuntimeContextValue | null>;
|
|
52
|
+
/**
|
|
53
|
+
* Props for FormRuntimeProvider.
|
|
54
|
+
*/
|
|
55
|
+
export interface FormRuntimeProviderProps {
|
|
56
|
+
formId?: string;
|
|
57
|
+
formConfig?: FormConfig;
|
|
58
|
+
initialValues?: Record<string, unknown>;
|
|
59
|
+
onSubmit?: (values: Record<string, unknown>, helpers: {
|
|
60
|
+
formId: string;
|
|
61
|
+
setSubmitting: (isSubmitting: boolean) => void;
|
|
62
|
+
resetForm: (nextInitialValues?: Record<string, unknown>) => void;
|
|
63
|
+
setErrors: (errors: Record<string, string>) => void;
|
|
64
|
+
}) => Promise<void> | void;
|
|
65
|
+
onSuccess?: (values: Record<string, unknown>) => void;
|
|
66
|
+
onError?: (errors: Record<string, string>) => void;
|
|
67
|
+
actions?: ActionPipeline[];
|
|
68
|
+
nodeId?: string;
|
|
69
|
+
document?: PageDocument;
|
|
70
|
+
onDiagnostic?: (diagnostic: Diagnostic) => void;
|
|
71
|
+
children: React.ReactNode;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* FormRuntimeProvider manages local reactive form state, field validation,
|
|
75
|
+
* submission handling, and action pipeline execution.
|
|
76
|
+
*/
|
|
77
|
+
export declare const FormRuntimeProvider: React.FC<FormRuntimeProviderProps>;
|
|
78
|
+
/**
|
|
79
|
+
* Hook to access the current FormRuntimeContext.
|
|
80
|
+
* Returns null if invoked outside of a FormRuntimeProvider.
|
|
81
|
+
*/
|
|
82
|
+
export declare function useFormRuntime(): FormRuntimeContextValue | null;
|
|
83
|
+
/**
|
|
84
|
+
* Hook to access the current FormRuntimeContext (alias for useFormRuntime).
|
|
85
|
+
*/
|
|
86
|
+
export declare function useFormContext(): FormRuntimeContextValue | null;
|
|
87
|
+
/**
|
|
88
|
+
* Hook providing status properties of the nearest form context.
|
|
89
|
+
*/
|
|
90
|
+
export declare function useFormStatus(): {
|
|
91
|
+
isSubmitting: boolean;
|
|
92
|
+
isValid: boolean;
|
|
93
|
+
dirty: boolean;
|
|
94
|
+
errors: Record<string, string>;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Result returned by the `useFormField` hook.
|
|
98
|
+
*/
|
|
99
|
+
export interface UseFormFieldReturn<T = unknown> {
|
|
100
|
+
value: T;
|
|
101
|
+
error?: string;
|
|
102
|
+
touched: boolean;
|
|
103
|
+
isInvalid: boolean;
|
|
104
|
+
setValue: (value: T, shouldValidate?: boolean) => void;
|
|
105
|
+
setTouched: (touched?: boolean, shouldValidate?: boolean) => void;
|
|
106
|
+
setError: (error: string | null) => void;
|
|
107
|
+
onChange: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement> | T) => void;
|
|
108
|
+
onBlur: (e?: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => void;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Hook to bind a field component to the nearest FormRuntimeContext.
|
|
112
|
+
*/
|
|
113
|
+
export declare function useFormField<T = unknown>(name: string, binding?: FormFieldBindingInput): UseFormFieldReturn<T>;
|
|
114
|
+
//# sourceMappingURL=form-context.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-context.d.cts","sourceRoot":"","sources":["../src/form-context.tsx"],"names":[],"mappings":"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"}
|