@kubuild/renderer 0.8.1 → 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.
Files changed (133) hide show
  1. package/dist/action-dispatcher.d.cts +42 -0
  2. package/dist/action-dispatcher.d.cts.map +1 -0
  3. package/dist/action-dispatcher.d.ts +2 -2
  4. package/dist/action-dispatcher.d.ts.map +1 -1
  5. package/dist/action-runners/api-request.d.cts +89 -0
  6. package/dist/action-runners/api-request.d.cts.map +1 -0
  7. package/dist/action-runners/index.d.cts +25 -0
  8. package/dist/action-runners/index.d.cts.map +1 -0
  9. package/dist/action-runners/index.d.ts +8 -8
  10. package/dist/action-runners/index.d.ts.map +1 -1
  11. package/dist/action-runners/modal-manager.d.cts +73 -0
  12. package/dist/action-runners/modal-manager.d.cts.map +1 -0
  13. package/dist/action-runners/navigation-utils.d.cts +62 -0
  14. package/dist/action-runners/navigation-utils.d.cts.map +1 -0
  15. package/dist/action-runners/toast-container.d.cts +20 -0
  16. package/dist/action-runners/toast-container.d.cts.map +1 -0
  17. package/dist/action-runners/toast-container.d.ts +1 -1
  18. package/dist/action-runners/toast-container.d.ts.map +1 -1
  19. package/dist/action-runners/toast-manager.d.cts +74 -0
  20. package/dist/action-runners/toast-manager.d.cts.map +1 -0
  21. package/dist/action-runners/tracking.d.cts +25 -0
  22. package/dist/action-runners/tracking.d.cts.map +1 -0
  23. package/dist/action-runners/ui-feedback.d.cts +37 -0
  24. package/dist/action-runners/ui-feedback.d.cts.map +1 -0
  25. package/dist/action-runners/ui-feedback.d.ts +1 -1
  26. package/dist/action-runners/ui-feedback.d.ts.map +1 -1
  27. package/dist/animation.d.cts +26 -0
  28. package/dist/animation.d.cts.map +1 -0
  29. package/dist/artboard-portal-host.d.cts +70 -0
  30. package/dist/artboard-portal-host.d.cts.map +1 -0
  31. package/dist/artboard-portal-host.d.ts +4 -4
  32. package/dist/artboard-portal-host.d.ts.map +1 -1
  33. package/dist/code-generator.d.cts +51 -0
  34. package/dist/code-generator.d.cts.map +1 -0
  35. package/dist/error-boundary.d.cts +22 -0
  36. package/dist/error-boundary.d.cts.map +1 -0
  37. package/dist/error-boundary.d.ts +1 -1
  38. package/dist/error-boundary.d.ts.map +1 -1
  39. package/dist/form-context.d.cts +114 -0
  40. package/dist/form-context.d.cts.map +1 -0
  41. package/dist/index.d.cts +17 -0
  42. package/dist/index.d.cts.map +1 -0
  43. package/dist/index.d.ts +16 -16
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/legacy-actions.d.cts +19 -0
  46. package/dist/legacy-actions.d.cts.map +1 -0
  47. package/dist/nodes/editable-text.d.cts +15 -0
  48. package/dist/nodes/editable-text.d.cts.map +1 -0
  49. package/dist/nodes/extended-form-nodes.d.cts +118 -0
  50. package/dist/nodes/extended-form-nodes.d.cts.map +1 -0
  51. package/dist/nodes/extended-form-nodes.d.ts +1 -1
  52. package/dist/nodes/extended-form-nodes.d.ts.map +1 -1
  53. package/dist/nodes/form-nodes.d.cts +186 -0
  54. package/dist/nodes/form-nodes.d.cts.map +1 -0
  55. package/dist/nodes/form-nodes.d.ts +2 -2
  56. package/dist/nodes/form-nodes.d.ts.map +1 -1
  57. package/dist/nodes/html-embed.d.cts +15 -0
  58. package/dist/nodes/html-embed.d.cts.map +1 -0
  59. package/dist/nodes/index.d.cts +7 -0
  60. package/dist/nodes/index.d.cts.map +1 -0
  61. package/dist/nodes/index.d.ts +6 -6
  62. package/dist/nodes/index.d.ts.map +1 -1
  63. package/dist/nodes/media-utils.d.cts +17 -0
  64. package/dist/nodes/media-utils.d.cts.map +1 -0
  65. package/dist/nodes/radio-group-context.d.cts +12 -0
  66. package/dist/nodes/radio-group-context.d.cts.map +1 -0
  67. package/dist/preview-adapter.d.cts +128 -0
  68. package/dist/preview-adapter.d.cts.map +1 -0
  69. package/dist/preview-adapter.d.ts +1 -1
  70. package/dist/preview-adapter.d.ts.map +1 -1
  71. package/dist/prop-resolution.d.cts +16 -0
  72. package/dist/prop-resolution.d.cts.map +1 -0
  73. package/dist/render-context.d.cts +117 -0
  74. package/dist/render-context.d.cts.map +1 -0
  75. package/dist/renderer.d.cts +77 -0
  76. package/dist/renderer.d.cts.map +1 -0
  77. package/dist/renderer.d.ts +4 -4
  78. package/dist/renderer.d.ts.map +1 -1
  79. package/dist/renderers/conversion/accordion.d.cts +20 -0
  80. package/dist/renderers/conversion/accordion.d.cts.map +1 -0
  81. package/dist/renderers/conversion/accordion.d.ts +1 -1
  82. package/dist/renderers/conversion/accordion.d.ts.map +1 -1
  83. package/dist/renderers/conversion/carousel.d.cts +13 -0
  84. package/dist/renderers/conversion/carousel.d.cts.map +1 -0
  85. package/dist/renderers/conversion/carousel.d.ts +1 -1
  86. package/dist/renderers/conversion/carousel.d.ts.map +1 -1
  87. package/dist/renderers/conversion/countdown.d.cts +50 -0
  88. package/dist/renderers/conversion/countdown.d.cts.map +1 -0
  89. package/dist/renderers/conversion/countdown.d.ts +1 -1
  90. package/dist/renderers/conversion/countdown.d.ts.map +1 -1
  91. package/dist/renderers/conversion/divider.d.cts +9 -0
  92. package/dist/renderers/conversion/divider.d.cts.map +1 -0
  93. package/dist/renderers/conversion/divider.d.ts +1 -1
  94. package/dist/renderers/conversion/divider.d.ts.map +1 -1
  95. package/dist/renderers/conversion/index.d.cts +13 -0
  96. package/dist/renderers/conversion/index.d.cts.map +1 -0
  97. package/dist/renderers/conversion/index.d.ts +6 -6
  98. package/dist/renderers/conversion/index.d.ts.map +1 -1
  99. package/dist/renderers/conversion/rating.d.cts +14 -0
  100. package/dist/renderers/conversion/rating.d.cts.map +1 -0
  101. package/dist/renderers/conversion/rating.d.ts +1 -1
  102. package/dist/renderers/conversion/rating.d.ts.map +1 -1
  103. package/dist/renderers/conversion/shared.d.cts +17 -0
  104. package/dist/renderers/conversion/shared.d.cts.map +1 -0
  105. package/dist/renderers/conversion/shared.d.ts +1 -1
  106. package/dist/renderers/conversion/shared.d.ts.map +1 -1
  107. package/dist/renderers/conversion/tabs.d.cts +7 -0
  108. package/dist/renderers/conversion/tabs.d.cts.map +1 -0
  109. package/dist/renderers/conversion/tabs.d.ts +1 -1
  110. package/dist/renderers/conversion/tabs.d.ts.map +1 -1
  111. package/dist/renderers/extended-form-renderers.d.cts +8 -0
  112. package/dist/renderers/extended-form-renderers.d.cts.map +1 -0
  113. package/dist/renderers/extended-form-renderers.d.ts +1 -1
  114. package/dist/renderers/extended-form-renderers.d.ts.map +1 -1
  115. package/dist/renderers/index.d.cts +5 -0
  116. package/dist/renderers/index.d.cts.map +1 -0
  117. package/dist/renderers/index.d.ts +4 -4
  118. package/dist/renderers/index.d.ts.map +1 -1
  119. package/dist/renderers/interactive-renderers.d.cts +7 -0
  120. package/dist/renderers/interactive-renderers.d.cts.map +1 -0
  121. package/dist/renderers/interactive-renderers.d.ts +1 -1
  122. package/dist/renderers/interactive-renderers.d.ts.map +1 -1
  123. package/dist/renderers/render-node-content.d.cts +74 -0
  124. package/dist/renderers/render-node-content.d.cts.map +1 -0
  125. package/dist/renderers/render-node-content.d.ts +1 -1
  126. package/dist/renderers/render-node-content.d.ts.map +1 -1
  127. package/dist/styles.d.cts +95 -0
  128. package/dist/styles.d.cts.map +1 -0
  129. package/dist/theme.d.cts +20 -0
  130. package/dist/theme.d.cts.map +1 -0
  131. package/dist/tracking/tracking-manager.d.cts +40 -0
  132. package/dist/tracking/tracking-manager.d.cts.map +1 -0
  133. package/package.json +13 -8
@@ -0,0 +1,74 @@
1
+ import React from 'react';
2
+ import { PageDocument, Node } from '@kubuild/schema';
3
+ import type { ComponentRegistry, ComponentDefinition } from '@kubuild/components';
4
+ import { RenderContext, Diagnostic } from '../render-context.cjs';
5
+ export interface RenderNodeContentOptions {
6
+ node: Node;
7
+ document: PageDocument;
8
+ registry: ComponentRegistry;
9
+ context: RenderContext;
10
+ viewport: 'desktop' | 'tablet' | 'mobile';
11
+ mode: 'editor' | 'runtime';
12
+ styles: React.CSSProperties;
13
+ props: Record<string, unknown>;
14
+ resolvedProps: Record<string, unknown>;
15
+ definition?: ComponentDefinition;
16
+ domId: string;
17
+ childrenElements?: React.ReactNode;
18
+ handleClick: (e: React.MouseEvent) => void;
19
+ onNodeClick?: (nodeId: string, event: React.MouseEvent) => void;
20
+ onDiagnostic?: (diagnostic: Diagnostic) => void;
21
+ onActionDispatch?: (actionType: string, payload: Record<string, unknown> | undefined, nodeId: string) => void;
22
+ onNodePropChange?: (nodeId: string, propName: string, value: unknown, isBlur?: boolean) => void;
23
+ selectedNodeId?: string | null;
24
+ instanceSuffix?: string;
25
+ isModalOpen?: boolean;
26
+ renderChildNode: (child: Node, instanceSuffix?: string, itemContext?: RenderContext) => React.ReactElement;
27
+ }
28
+ /**
29
+ * Renders custom component if registered in ComponentRegistry.
30
+ */
31
+ export declare function renderCustomComponent(options: RenderNodeContentOptions): React.ReactElement | null;
32
+ /**
33
+ * Layout nodes: page, section, container, columns
34
+ */
35
+ export declare function renderLayoutNode(options: RenderNodeContentOptions): React.ReactElement | null;
36
+ /**
37
+ * Typography nodes: heading, text, paragraph, link, blockquote, badge, code-block
38
+ */
39
+ export declare function renderTypographyNode(options: RenderNodeContentOptions): React.ReactElement | null;
40
+ /**
41
+ * List nodes: list, list-item
42
+ */
43
+ export declare function renderListNode(options: RenderNodeContentOptions): React.ReactElement | null;
44
+ /**
45
+ * Table nodes: table, table-row, table-cell
46
+ */
47
+ export declare function renderTableNode(options: RenderNodeContentOptions): React.ReactElement | null;
48
+ /**
49
+ * Creates an inline SVG data-URI placeholder for image nodes when no image URL
50
+ * is available (e.g. in editor mode when bound to a variable with an empty sample value).
51
+ * Renders an accessible, non-broken visual box on canvas and ensures <img> keeps a valid src.
52
+ */
53
+ export declare function createPlaceholderImage(label?: string): string;
54
+ /**
55
+ * Media nodes: image, video, icon, html-embed
56
+ */
57
+ export declare function renderMediaNode(options: RenderNodeContentOptions): React.ReactElement | null;
58
+ /**
59
+ * Form nodes: button, form, input, textarea, select, checkbox, radio
60
+ */
61
+ export declare function renderFormNode(options: RenderNodeContentOptions): React.ReactElement | null;
62
+ /**
63
+ * Collection node: collection
64
+ */
65
+ export declare function renderCollectionNode(options: RenderNodeContentOptions): React.ReactElement | null;
66
+ /**
67
+ * Fallback node for unregistered / unknown types.
68
+ */
69
+ export declare function renderFallbackNode(options: RenderNodeContentOptions): React.ReactElement;
70
+ /**
71
+ * Master dispatcher function for rendering node content based on node type.
72
+ */
73
+ export declare function renderNodeContent(options: RenderNodeContentOptions): React.ReactElement;
74
+ //# sourceMappingURL=render-node-content.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-node-content.d.cts","sourceRoot":"","sources":["../../src/renderers/render-node-content.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { PageDocument, Node } from '@kubuild/schema';
3
3
  import type { ComponentRegistry, ComponentDefinition } from '@kubuild/components';
4
- import { RenderContext, Diagnostic } from '../render-context';
4
+ import { RenderContext, Diagnostic } from '../render-context.js';
5
5
  export interface RenderNodeContentOptions {
6
6
  node: Node;
7
7
  document: PageDocument;
@@ -1 +1 @@
1
- {"version":3,"file":"render-node-content.d.ts","sourceRoot":"","sources":["../../src/renderers/render-node-content.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-node-content.d.ts","sourceRoot":"","sources":["../../src/renderers/render-node-content.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { PageDocument, Node, ResponsiveStyles, type BreakpointName } from '@kubuild/schema';
2
+ import React from 'react';
3
+ /**
4
+ * Normalizes CSS and Kubuild style properties into standard, valid React.CSSProperties.
5
+ * Resolves:
6
+ * - CSS Grid properties: gridTemplateColumns, gridTemplateRows, gridAutoFlow, gridColumn, gridRow, colSpan, rowSpan
7
+ * - Auto Layout flex properties: flexDirection, flexWrap, justifyContent, alignItems, gap, etc.
8
+ * - Child sizing modes: 'fit-content' (hug), 'fill' (flex: 1 1 0%, width: 100%)
9
+ * - 4-corner border radius: borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius
10
+ * - Backdrop blur: backdropFilter, backdropBlur, WebkitBackdropFilter
11
+ * - Linear and radial gradients: gradient, backgroundGradient, backgroundImage
12
+ */
13
+ export declare function normalizeStyleObject(raw: Record<string, unknown> | undefined): React.CSSProperties;
14
+ /**
15
+ * How the renderer applies `styles.desktop` / `styles.tablet` / `styles.mobile` (STORA-540).
16
+ *
17
+ * - `'viewport'`: merge `base` with the single layer named by the `viewport` prop into the
18
+ * inline style. Used by the editor canvas, where each device frame previews one viewport
19
+ * regardless of the real browser width.
20
+ * - `'css'`: inline style is `base` only; breakpoint layers are emitted as `@media` rules
21
+ * scoped to `[data-kubuild-node="…"]`, so the real browser width picks the layer. Output
22
+ * depends only on the document, so server and client render identical markup.
23
+ */
24
+ export type ResponsiveMode = 'css' | 'viewport';
25
+ export declare function resolveNodeStyles(styles?: ResponsiveStyles, viewport?: BreakpointName): React.CSSProperties;
26
+ /** Normalized `base` layer only — the inline style used by `responsive: 'css'`. */
27
+ export declare function resolveBaseNodeStyles(styles?: ResponsiveStyles): React.CSSProperties;
28
+ /**
29
+ * Split a node's responsive styles into the always-on `base` style plus, per breakpoint,
30
+ * only the declarations that differ from it.
31
+ *
32
+ * Each override is computed on the *normalized* merge (`base` + layer), i.e. exactly what
33
+ * `resolveNodeStyles(styles, breakpoint)` returns, so CSS output reproduces the
34
+ * `viewport`-mode result at every width. A property present in `base` but dropped by the
35
+ * merge (e.g. the implicit `flex` that `width: 'fill'` adds) is reset with `unset`.
36
+ */
37
+ export declare function resolveResponsiveStyleLayers(styles?: ResponsiveStyles): {
38
+ base: Record<string, unknown>;
39
+ overrides: Partial<Record<BreakpointName, Record<string, unknown>>>;
40
+ };
41
+ export interface ResponsiveCssRule {
42
+ nodeId: string;
43
+ declarations: string;
44
+ }
45
+ /**
46
+ * Walk a node tree and collect per-breakpoint override declarations in tree order.
47
+ * Shared by the runtime renderer (`collectResponsiveStylesCss`) and the static code
48
+ * generator, so both emit the same overrides under the same media queries (STORA-542).
49
+ */
50
+ export declare function collectResponsiveCssRules(root: Node | undefined | null, options?: {
51
+ important?: boolean;
52
+ }): Record<BreakpointName, ResponsiveCssRule[]>;
53
+ /** Scoped attribute selector matching the element the renderer tags with a node id. */
54
+ export declare function nodeAttributeSelector(nodeId: string): string;
55
+ /**
56
+ * Produce the `@media` stylesheet for `responsive: 'css'` (STORA-540), e.g.
57
+ *
58
+ * @media (max-width: 767.98px) {
59
+ * [data-kubuild-node="grid-1"] { grid-template-columns: 1fr !important; }
60
+ * }
61
+ *
62
+ * Declarations use `!important` because the `base` layer (and component defaults) are
63
+ * inline styles, which otherwise beat any stylesheet rule. Pseudo-state rules from
64
+ * `collectStateStylesCss` still win while active since `[…]:hover` is more specific.
65
+ * The output is a pure function of the document (no `window`/`matchMedia` access), so
66
+ * SSR and hydration produce byte-identical `<style>` content.
67
+ */
68
+ export declare function collectResponsiveStylesCss(document: PageDocument | undefined | null, options?: {
69
+ important?: boolean;
70
+ }): string;
71
+ /**
72
+ * Serialize a style definition object into CSS declarations.
73
+ * camelCase keys are converted to kebab-case CSS properties.
74
+ */
75
+ export declare function styleDefinitionToCssDeclarations(styleDefinition: Record<string, unknown> | undefined, options?: {
76
+ important?: boolean;
77
+ }): string;
78
+ /**
79
+ * Walk the document tree and produce scoped CSS rules for pseudo-state
80
+ * style layers (STORA-222). Each node with `styles.states` gets rules like:
81
+ *
82
+ * [data-kubuild-node="node-1"]:hover { background-color: #1d4ed8 !important; }
83
+ *
84
+ * Scoped via the canonical `data-kubuild-node` attribute so styles never leak
85
+ * between nodes and work identically in editor canvas and runtime preview.
86
+ * Uses `!important` to reliably override the component's inline base style attributes.
87
+ */
88
+ export declare function collectStateStylesCss(document: PageDocument | undefined | null, options?: {
89
+ important?: boolean;
90
+ }): string;
91
+ /**
92
+ * Modern baseline CSS Reset for consistent rendering across viewports and browsers.
93
+ */
94
+ export declare const DEFAULT_CSS_RESET: string;
95
+ //# sourceMappingURL=styles.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.cts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,gBAAgB,EAGhB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACvC,KAAK,CAAC,aAAa,CAuHrB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,UAAU,CAAC;AAEhD,wBAAgB,iBAAiB,CAC/B,MAAM,CAAC,EAAE,gBAAgB,EACzB,QAAQ,GAAE,cAA0B,GACnC,KAAK,CAAC,aAAa,CAMrB;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAGpF;AAMD;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG;IACvE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACrE,CAsBA;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,EAC7B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,MAAM,CAAC,cAAc,EAAE,iBAAiB,EAAE,CAAC,CAuB7C;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,EACzC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAwB,GACrD,MAAM,CAeR;AAkFD;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACpD,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,MAAM,CAMR;AA2BD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,EACzC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAwB,GACrD,MAAM,CAwBR;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,QA0BtB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type React from 'react';
2
+ import { type PageDocument, type Theme } from '@kubuild/schema';
3
+ import type { RenderContext } from '@kubuild/core';
4
+ /**
5
+ * Document theme (STORA-551) with the host's runtime override (`RenderContext.theme`, e.g. a
6
+ * per-tenant brand color) layered on top. Neither input is mutated.
7
+ */
8
+ export declare function resolveRuntimeTheme(document: Pick<PageDocument, 'theme'> | undefined | null, context?: Pick<RenderContext, 'theme'> | null): Theme;
9
+ /**
10
+ * Theme tokens as a React inline-style object of CSS custom properties
11
+ * (`{ '--kb-color-primary': '#2563eb' }`). Unsafe keys/values are dropped, so this is safe
12
+ * to call on an unvalidated host override.
13
+ */
14
+ export declare function themeToCssProperties(theme: Partial<Theme> | undefined | null): React.CSSProperties;
15
+ /**
16
+ * Theme tokens as CSS declarations (`--kb-color-primary: #2563eb;`) for a stylesheet rule,
17
+ * e.g. `:root { ... }` in generated/exported HTML.
18
+ */
19
+ export declare function themeToCssDeclarations(theme: Partial<Theme> | undefined | null): string;
20
+ //# sourceMappingURL=theme.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.cts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAoC,KAAK,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,EACxD,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,IAAI,GAC5C,KAAK,CAEP;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,IAAI,GACvC,KAAK,CAAC,aAAa,CAMrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAIvF"}
@@ -0,0 +1,40 @@
1
+ import type { TrackingConfig } from '@kubuild/schema';
2
+ declare global {
3
+ interface Window {
4
+ fbq?: (...args: unknown[]) => void;
5
+ _fbq?: unknown;
6
+ gtag?: (...args: unknown[]) => void;
7
+ dataLayer?: unknown[];
8
+ ttq?: {
9
+ track: (event: string, params?: Record<string, unknown>, options?: Record<string, unknown>) => void;
10
+ page: () => void;
11
+ load: (pixelId: string) => void;
12
+ [key: string]: unknown;
13
+ };
14
+ }
15
+ }
16
+ /**
17
+ * Injects official client-side tracking scripts (Meta Pixel, Google Analytics 4, TikTok Pixel).
18
+ * Returns a cleanup function that removes injected scripts when component unmounts or tracking is disabled.
19
+ */
20
+ export declare function injectTrackingScripts(config?: TrackingConfig): () => void;
21
+ /**
22
+ * Removes all injected tracking scripts from the document head.
23
+ */
24
+ export declare function removeTrackingScripts(): void;
25
+ /**
26
+ * Official Meta Pixel Standard Events.
27
+ * Any other event name should be dispatched using `fbq('trackCustom', ...)`
28
+ */
29
+ export declare const META_STANDARD_EVENTS: Set<string>;
30
+ export interface FireBrowserPixelOptions {
31
+ eventId?: string;
32
+ config?: TrackingConfig;
33
+ provider?: 'all' | 'meta' | 'google' | 'gtm' | 'tiktok' | 'custom' | string;
34
+ eventType?: 'standard' | 'custom';
35
+ }
36
+ /**
37
+ * Dispatches an event to the browser pixel scripts if installed and active.
38
+ */
39
+ export declare function fireBrowserPixel(eventName: string, params?: Record<string, unknown>, options?: FireBrowserPixelOptions): void;
40
+ //# sourceMappingURL=tracking-manager.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking-manager.d.cts","sourceRoot":"","sources":["../../src/tracking/tracking-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QACnC,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QACpC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;QACtB,GAAG,CAAC,EAAE;YACJ,KAAK,EAAE,CACL,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,IAAI,CAAC;YACV,IAAI,EAAE,MAAM,IAAI,CAAC;YACjB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;YAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;KACH;CACF;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,IAAI,CA4JzE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAM5C;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,aAmB/B,CAAC;AAEH,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5E,SAAS,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,uBAAuB,GAChC,IAAI,CA0EN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubuild/renderer",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "Pure recursive React renderer for KUBUILD page documents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -8,9 +8,14 @@
8
8
  "types": "./dist/index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.js",
13
- "require": "./dist/index.cjs"
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "default": "./dist/index.cjs"
18
+ }
14
19
  }
15
20
  },
16
21
  "files": [
@@ -41,9 +46,9 @@
41
46
  "homepage": "https://github.com/kustora/kubuild#readme",
42
47
  "dependencies": {
43
48
  "lucide-react": "^1.33.0",
44
- "@kubuild/core": "0.8.1",
45
- "@kubuild/schema": "0.8.1",
46
- "@kubuild/components": "0.8.1"
49
+ "@kubuild/components": "0.8.2",
50
+ "@kubuild/schema": "0.8.2",
51
+ "@kubuild/core": "0.8.2"
47
52
  },
48
53
  "peerDependencies": {
49
54
  "react": ">=18.0.0",
@@ -59,7 +64,7 @@
59
64
  "vitest": "^3.0.5"
60
65
  },
61
66
  "scripts": {
62
- "build": "tsup && tsc --emitDeclarationOnly",
67
+ "build": "tsup && tsc --emitDeclarationOnly && node ../../scripts/emit-cjs-dts.mjs",
63
68
  "dev": "tsup --watch",
64
69
  "typecheck": "tsc --noEmit",
65
70
  "lint": "eslint src",