@kubuild/renderer 0.2.0 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/action-runners/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;AAIvB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,CAAC,EAAE,0BAA0B,GACnC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAerC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,sBAAsB,EAChC,OAAO,CAAC,EAAE,0BAA0B,GACnC,sBAAsB,CAQxB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/action-runners/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;AAIvB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,CAAC,EAAE,0BAA0B,GACnC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAgBrC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,sBAAsB,EAChC,OAAO,CAAC,EAAE,0BAA0B,GACnC,sBAAsB,CAQxB"}
@@ -23,6 +23,11 @@ export declare class ModalManager {
23
23
  * Checks whether a modal is currently open.
24
24
  */
25
25
  isModalOpen(modalId: string): boolean;
26
+ /**
27
+ * Checks whether a modal id has ever been explicitly opened/closed,
28
+ * distinguishing "never touched" from "explicitly closed".
29
+ */
30
+ hasState(modalId: string): boolean;
26
31
  /**
27
32
  * Returns a snapshot map of all modal states.
28
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"modal-manager.d.ts","sourceRoot":"","sources":["../../src/action-runners/modal-manager.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;AAEzD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,SAAS,CAA4B;IAE7C;;OAEG;IACI,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAwBvC;;OAEG;IACI,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IA4CzC;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW5C;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAK5C;;OAEG;IACI,QAAQ,IAAI,UAAU;IAQ7B;;OAEG;IACI,eAAe,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;IAOrD,OAAO,CAAC,MAAM;CAUf;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C;;GAEG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAA2B,GACnC;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC;CACvB,CAeA;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,YAA2B,GAAG;IAC/D,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3C,CAkBA"}
1
+ {"version":3,"file":"modal-manager.d.ts","sourceRoot":"","sources":["../../src/action-runners/modal-manager.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;AAEzD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,SAAS,CAA4B;IAE7C;;OAEG;IACI,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAwBvC;;OAEG;IACI,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IA4CzC;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW5C;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAK5C;;;OAGG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKzC;;OAEG;IACI,QAAQ,IAAI,UAAU;IAQ7B;;OAEG;IACI,eAAe,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;IAOrD,OAAO,CAAC,MAAM;CAUf;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C;;GAEG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAA2B,GACnC;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC;CACvB,CAwBA;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,YAA2B,GAAG;IAC/D,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3C,CAkBA"}
@@ -26,6 +26,10 @@ export declare const showToastRunner: PipelineStepHandler;
26
26
  * Action Runner for `open_modal`.
27
27
  */
28
28
  export declare const openModalRunner: PipelineStepHandler;
29
+ /**
30
+ * Action Runner for `toggle_modal`.
31
+ */
32
+ export declare const toggleModalRunner: PipelineStepHandler;
29
33
  /**
30
34
  * Action Runner for `close_modal`.
31
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ui-feedback.d.ts","sourceRoot":"","sources":["../../src/action-runners/ui-feedback.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAmC,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGtG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,mBAqC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,mBAkC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBAqC9B,CAAC"}
1
+ {"version":3,"file":"ui-feedback.d.ts","sourceRoot":"","sources":["../../src/action-runners/ui-feedback.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAmC,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGtG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,mBAqC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,mBAmC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,mBAc/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBAqC9B,CAAC"}
@@ -0,0 +1,67 @@
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';
5
+ import { type ModalManager } from './action-runners';
6
+ import { type KubuildRendererProps } from './renderer';
7
+ export interface ArtboardPortalHostProps {
8
+ /**
9
+ * Component artboards eligible for portal rendering. Defaults to
10
+ * `context.componentArtboards` when omitted.
11
+ */
12
+ artboards?: readonly Artboard[];
13
+ registry?: ComponentRegistry;
14
+ context?: RenderContext;
15
+ viewport?: 'desktop' | 'tablet' | 'mobile';
16
+ /**
17
+ * Editor mode renders nothing: while authoring, a component artboard is shown as its own
18
+ * canvas surface instead, which is precisely what keeps it from covering the page being
19
+ * edited. Portals exist only for runtime/preview.
20
+ */
21
+ mode?: 'editor' | 'runtime';
22
+ modalManager?: ModalManager;
23
+ /** Portal target; defaults to `document.body`. */
24
+ container?: Element | null;
25
+ onDiagnostic?: (diagnostic: Diagnostic) => void;
26
+ onActionDispatch?: (actionType: string, payload: Record<string, unknown> | undefined, nodeId: string) => void;
27
+ }
28
+ /**
29
+ * Returns the node a component artboard actually represents: its synthetic `page` root
30
+ * holds the detached subtree as its only child.
31
+ */
32
+ export declare function getArtboardContentNode(artboard: Artboard): Node | undefined;
33
+ /**
34
+ * Pick the component artboards that should currently be on screen, given ModalManager's
35
+ * state snapshot. Kept as a pure function so the open/closed decision is testable without
36
+ * a DOM, and so the portal component itself stays a thin shell around it.
37
+ */
38
+ export declare function selectOpenComponentArtboards(artboards: readonly Artboard[], modalState: Record<string, boolean>): Artboard[];
39
+ /**
40
+ * Renders every open component artboard into a portal.
41
+ *
42
+ * Detaching a modal/drawer into its own artboard means its content is no longer part of the
43
+ * page's own node tree, so at runtime something has to put it back on screen when a trigger
44
+ * fires. ModalManager is a plain string-keyed singleton, so a trigger in one artboard already
45
+ * addresses content in another with no extra wiring — this host just watches that state and
46
+ * renders whichever component artboards are currently open.
47
+ */
48
+ export declare const ArtboardPortalHost: React.FC<ArtboardPortalHostProps>;
49
+ export interface KubuildProjectRendererProps extends KubuildRendererProps {
50
+ /**
51
+ * Component artboards belonging to the same project as `document`. Their content is
52
+ * portal-rendered on top of the page whenever a trigger opens them (runtime only).
53
+ * Defaults to `context.componentArtboards`.
54
+ */
55
+ componentArtboards?: readonly Artboard[];
56
+ modalManager?: ModalManager;
57
+ portalContainer?: Element | null;
58
+ }
59
+ /**
60
+ * Renders one page artboard plus the portal host for its project's component artboards.
61
+ *
62
+ * Use this instead of KubuildRenderer wherever a published page must be able to open
63
+ * detached modals/drawers. Dependency direction stays one-way (this composes the renderer;
64
+ * the renderer knows nothing about projects), so single-document rendering is unaffected.
65
+ */
66
+ export declare const KubuildProjectRenderer: React.FC<KubuildProjectRendererProps>;
67
+ //# sourceMappingURL=artboard-portal-host.d.ts.map
@@ -0,0 +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,kBAAkB,CAAC;AACrF,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAiC,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEtF,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;;;;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,CA6EhE,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,CAsBxE,CAAC"}