@sonordev/site-kit 1.2.7
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/README.md +376 -0
- package/dist/SetupWizard-Cki06kB0.d.mts +12 -0
- package/dist/SetupWizard-Cki06kB0.d.ts +12 -0
- package/dist/analytics/index.d.mts +93 -0
- package/dist/analytics/index.d.ts +93 -0
- package/dist/analytics/index.js +89 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/index.mjs +71 -0
- package/dist/analytics/index.mjs.map +1 -0
- package/dist/api-CWtoFJCO.d.mts +137 -0
- package/dist/api-CWtoFJCO.d.ts +137 -0
- package/dist/blog/index.d.mts +305 -0
- package/dist/blog/index.d.ts +305 -0
- package/dist/blog/index.js +1578 -0
- package/dist/blog/index.js.map +1 -0
- package/dist/blog/index.mjs +1562 -0
- package/dist/blog/index.mjs.map +1 -0
- package/dist/blog/server.d.mts +229 -0
- package/dist/blog/server.d.ts +229 -0
- package/dist/blog/server.js +692 -0
- package/dist/blog/server.js.map +1 -0
- package/dist/blog/server.mjs +666 -0
- package/dist/blog/server.mjs.map +1 -0
- package/dist/chunk-24277A3Q.mjs +968 -0
- package/dist/chunk-24277A3Q.mjs.map +1 -0
- package/dist/chunk-373TK6TZ.js +321 -0
- package/dist/chunk-373TK6TZ.js.map +1 -0
- package/dist/chunk-3MYZS6PD.js +30 -0
- package/dist/chunk-3MYZS6PD.js.map +1 -0
- package/dist/chunk-43GBM4SX.js +283 -0
- package/dist/chunk-43GBM4SX.js.map +1 -0
- package/dist/chunk-4XPGGLVP.mjs +53 -0
- package/dist/chunk-4XPGGLVP.mjs.map +1 -0
- package/dist/chunk-622GAQP5.js +2008 -0
- package/dist/chunk-622GAQP5.js.map +1 -0
- package/dist/chunk-6BIPAKL4.mjs +28 -0
- package/dist/chunk-6BIPAKL4.mjs.map +1 -0
- package/dist/chunk-6ZCISNAB.mjs +343 -0
- package/dist/chunk-6ZCISNAB.mjs.map +1 -0
- package/dist/chunk-72MQFHYJ.js +1429 -0
- package/dist/chunk-72MQFHYJ.js.map +1 -0
- package/dist/chunk-7557OTHW.js +62 -0
- package/dist/chunk-7557OTHW.js.map +1 -0
- package/dist/chunk-7FUV73JZ.js +981 -0
- package/dist/chunk-7FUV73JZ.js.map +1 -0
- package/dist/chunk-7RF6PVHA.mjs +324 -0
- package/dist/chunk-7RF6PVHA.mjs.map +1 -0
- package/dist/chunk-7RYCHO6D.mjs +134 -0
- package/dist/chunk-7RYCHO6D.mjs.map +1 -0
- package/dist/chunk-7UKPRW25.mjs +1999 -0
- package/dist/chunk-7UKPRW25.mjs.map +1 -0
- package/dist/chunk-7URAOG2M.js +14864 -0
- package/dist/chunk-7URAOG2M.js.map +1 -0
- package/dist/chunk-AFAO3TGS.mjs +810 -0
- package/dist/chunk-AFAO3TGS.mjs.map +1 -0
- package/dist/chunk-BYLIU6XG.js +343 -0
- package/dist/chunk-BYLIU6XG.js.map +1 -0
- package/dist/chunk-D63MUKZ6.mjs +4423 -0
- package/dist/chunk-D63MUKZ6.mjs.map +1 -0
- package/dist/chunk-DDKW2FNA.js +390 -0
- package/dist/chunk-DDKW2FNA.js.map +1 -0
- package/dist/chunk-DQYMKR27.mjs +341 -0
- package/dist/chunk-DQYMKR27.mjs.map +1 -0
- package/dist/chunk-DW5UJKHH.js +221 -0
- package/dist/chunk-DW5UJKHH.js.map +1 -0
- package/dist/chunk-EEZCR6E6.js +50 -0
- package/dist/chunk-EEZCR6E6.js.map +1 -0
- package/dist/chunk-GCJXQ4AG.mjs +59 -0
- package/dist/chunk-GCJXQ4AG.mjs.map +1 -0
- package/dist/chunk-JGNQK2G6.mjs +14845 -0
- package/dist/chunk-JGNQK2G6.mjs.map +1 -0
- package/dist/chunk-JTLOJLWQ.mjs +563 -0
- package/dist/chunk-JTLOJLWQ.mjs.map +1 -0
- package/dist/chunk-K23A4G76.mjs +202 -0
- package/dist/chunk-K23A4G76.mjs.map +1 -0
- package/dist/chunk-KKU3K7RG.js +336 -0
- package/dist/chunk-KKU3K7RG.js.map +1 -0
- package/dist/chunk-KUGMH4ZF.js +571 -0
- package/dist/chunk-KUGMH4ZF.js.map +1 -0
- package/dist/chunk-LBVWVP72.js +110 -0
- package/dist/chunk-LBVWVP72.js.map +1 -0
- package/dist/chunk-LIVWLY2P.js +138 -0
- package/dist/chunk-LIVWLY2P.js.map +1 -0
- package/dist/chunk-M2T6R7BA.mjs +1003 -0
- package/dist/chunk-M2T6R7BA.mjs.map +1 -0
- package/dist/chunk-MV3QN7PW.mjs +47 -0
- package/dist/chunk-MV3QN7PW.mjs.map +1 -0
- package/dist/chunk-OB7E654K.js +72 -0
- package/dist/chunk-OB7E654K.js.map +1 -0
- package/dist/chunk-OIIKTGRL.mjs +380 -0
- package/dist/chunk-OIIKTGRL.mjs.map +1 -0
- package/dist/chunk-P3UWIUJS.mjs +1427 -0
- package/dist/chunk-P3UWIUJS.mjs.map +1 -0
- package/dist/chunk-PKN27UMH.mjs +136 -0
- package/dist/chunk-PKN27UMH.mjs.map +1 -0
- package/dist/chunk-QXV4667R.mjs +105 -0
- package/dist/chunk-QXV4667R.mjs.map +1 -0
- package/dist/chunk-S7FRYNSU.mjs +315 -0
- package/dist/chunk-S7FRYNSU.mjs.map +1 -0
- package/dist/chunk-TFLQX7K7.mjs +68 -0
- package/dist/chunk-TFLQX7K7.mjs.map +1 -0
- package/dist/chunk-UWE5PCYJ.mjs +279 -0
- package/dist/chunk-UWE5PCYJ.mjs.map +1 -0
- package/dist/chunk-UYFDNX2F.js +4469 -0
- package/dist/chunk-UYFDNX2F.js.map +1 -0
- package/dist/chunk-W4PALSGM.js +350 -0
- package/dist/chunk-W4PALSGM.js.map +1 -0
- package/dist/chunk-WECQ6KOB.js +1008 -0
- package/dist/chunk-WECQ6KOB.js.map +1 -0
- package/dist/chunk-XQQWI6WB.js +814 -0
- package/dist/chunk-XQQWI6WB.js.map +1 -0
- package/dist/chunk-XZJOZJB6.js +140 -0
- package/dist/chunk-XZJOZJB6.js.map +1 -0
- package/dist/chunk-ZSMWDLMK.js +63 -0
- package/dist/chunk-ZSMWDLMK.js.map +1 -0
- package/dist/cli/index.js +37243 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/index.mjs +37209 -0
- package/dist/cli/index.mjs.map +1 -0
- package/dist/commerce/index.d.mts +170 -0
- package/dist/commerce/index.d.ts +170 -0
- package/dist/commerce/index.js +174 -0
- package/dist/commerce/index.js.map +1 -0
- package/dist/commerce/index.mjs +5 -0
- package/dist/commerce/index.mjs.map +1 -0
- package/dist/commerce/server.d.mts +107 -0
- package/dist/commerce/server.d.ts +107 -0
- package/dist/commerce/server.js +187 -0
- package/dist/commerce/server.js.map +1 -0
- package/dist/commerce/server.mjs +177 -0
- package/dist/commerce/server.mjs.map +1 -0
- package/dist/config/index.d.mts +43 -0
- package/dist/config/index.d.ts +43 -0
- package/dist/config/index.js +66 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/index.mjs +64 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/engage/index.d.mts +33 -0
- package/dist/engage/index.d.ts +33 -0
- package/dist/engage/index.js +22 -0
- package/dist/engage/index.js.map +1 -0
- package/dist/engage/index.mjs +5 -0
- package/dist/engage/index.mjs.map +1 -0
- package/dist/forms/index.d.mts +437 -0
- package/dist/forms/index.d.ts +437 -0
- package/dist/forms/index.js +1168 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/index.mjs +1142 -0
- package/dist/forms/index.mjs.map +1 -0
- package/dist/generators-2XKQMPKH.mjs +4 -0
- package/dist/generators-2XKQMPKH.mjs.map +1 -0
- package/dist/generators-DTMO36DV.js +33 -0
- package/dist/generators-DTMO36DV.js.map +1 -0
- package/dist/images/index.d.mts +4 -0
- package/dist/images/index.d.ts +4 -0
- package/dist/images/index.js +46 -0
- package/dist/images/index.js.map +1 -0
- package/dist/images/index.mjs +5 -0
- package/dist/images/index.mjs.map +1 -0
- package/dist/images/server.d.mts +69 -0
- package/dist/images/server.d.ts +69 -0
- package/dist/images/server.js +21 -0
- package/dist/images/server.js.map +1 -0
- package/dist/images/server.mjs +4 -0
- package/dist/images/server.mjs.map +1 -0
- package/dist/index.d.mts +846 -0
- package/dist/index.d.ts +846 -0
- package/dist/index.js +2623 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2416 -0
- package/dist/index.mjs.map +1 -0
- package/dist/layout/index.d.mts +53 -0
- package/dist/layout/index.d.ts +53 -0
- package/dist/layout/index.js +187 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/index.mjs +185 -0
- package/dist/layout/index.mjs.map +1 -0
- package/dist/llms/index.d.mts +448 -0
- package/dist/llms/index.d.ts +448 -0
- package/dist/llms/index.js +581 -0
- package/dist/llms/index.js.map +1 -0
- package/dist/llms/index.mjs +529 -0
- package/dist/llms/index.mjs.map +1 -0
- package/dist/manifest/index.d.mts +62 -0
- package/dist/manifest/index.d.ts +62 -0
- package/dist/manifest/index.js +85 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/index.mjs +83 -0
- package/dist/manifest/index.mjs.map +1 -0
- package/dist/middleware/index.d.mts +63 -0
- package/dist/middleware/index.d.ts +63 -0
- package/dist/middleware/index.js +54 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/index.mjs +51 -0
- package/dist/middleware/index.mjs.map +1 -0
- package/dist/migrator-2MQHOFDQ.mjs +4 -0
- package/dist/migrator-2MQHOFDQ.mjs.map +1 -0
- package/dist/migrator-THJCF6MZ.js +37 -0
- package/dist/migrator-THJCF6MZ.js.map +1 -0
- package/dist/redirects/index.d.mts +78 -0
- package/dist/redirects/index.d.ts +78 -0
- package/dist/redirects/index.js +26 -0
- package/dist/redirects/index.js.map +1 -0
- package/dist/redirects/index.mjs +5 -0
- package/dist/redirects/index.mjs.map +1 -0
- package/dist/reputation/index.d.mts +57 -0
- package/dist/reputation/index.d.ts +57 -0
- package/dist/reputation/index.js +21 -0
- package/dist/reputation/index.js.map +1 -0
- package/dist/reputation/index.mjs +4 -0
- package/dist/reputation/index.mjs.map +1 -0
- package/dist/robots/index.d.mts +38 -0
- package/dist/robots/index.d.ts +38 -0
- package/dist/robots/index.js +52 -0
- package/dist/robots/index.js.map +1 -0
- package/dist/robots/index.mjs +50 -0
- package/dist/robots/index.mjs.map +1 -0
- package/dist/routing-B5XS-6_W.d.mts +118 -0
- package/dist/routing-DZYzyDHw.d.ts +118 -0
- package/dist/scanner-GAF5PO5F.js +53 -0
- package/dist/scanner-GAF5PO5F.js.map +1 -0
- package/dist/scanner-LKJKW7IT.mjs +4 -0
- package/dist/scanner-LKJKW7IT.mjs.map +1 -0
- package/dist/securityHeaders-nwZ6nP4g.d.mts +24 -0
- package/dist/securityHeaders-nwZ6nP4g.d.ts +24 -0
- package/dist/seo/index.d.mts +600 -0
- package/dist/seo/index.d.ts +600 -0
- package/dist/seo/index.js +883 -0
- package/dist/seo/index.js.map +1 -0
- package/dist/seo/index.mjs +773 -0
- package/dist/seo/index.mjs.map +1 -0
- package/dist/seo/register-sitemap-cli.js +151 -0
- package/dist/seo/register-sitemap-cli.js.map +1 -0
- package/dist/seo/register-sitemap-cli.mjs +144 -0
- package/dist/seo/register-sitemap-cli.mjs.map +1 -0
- package/dist/seo/server.d.mts +107 -0
- package/dist/seo/server.d.ts +107 -0
- package/dist/seo/server.js +207 -0
- package/dist/seo/server.js.map +1 -0
- package/dist/seo/server.mjs +186 -0
- package/dist/seo/server.mjs.map +1 -0
- package/dist/server-api-EWXKOQZA.mjs +4 -0
- package/dist/server-api-EWXKOQZA.mjs.map +1 -0
- package/dist/server-api-GJPNRYUP.js +81 -0
- package/dist/server-api-GJPNRYUP.js.map +1 -0
- package/dist/setup/client.d.mts +60 -0
- package/dist/setup/client.d.ts +60 -0
- package/dist/setup/client.js +31 -0
- package/dist/setup/client.js.map +1 -0
- package/dist/setup/client.mjs +6 -0
- package/dist/setup/client.mjs.map +1 -0
- package/dist/setup/index.d.mts +5 -0
- package/dist/setup/index.d.ts +5 -0
- package/dist/setup/index.js +35 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/index.mjs +6 -0
- package/dist/setup/index.mjs.map +1 -0
- package/dist/setup/server.d.mts +14 -0
- package/dist/setup/server.d.ts +14 -0
- package/dist/setup/server.js +13 -0
- package/dist/setup/server.js.map +1 -0
- package/dist/setup/server.mjs +4 -0
- package/dist/setup/server.mjs.map +1 -0
- package/dist/site-config/index.d.mts +24 -0
- package/dist/site-config/index.d.ts +24 -0
- package/dist/site-config/index.js +17 -0
- package/dist/site-config/index.js.map +1 -0
- package/dist/site-config/index.mjs +4 -0
- package/dist/site-config/index.mjs.map +1 -0
- package/dist/sitemap/index.d.mts +96 -0
- package/dist/sitemap/index.d.ts +96 -0
- package/dist/sitemap/index.js +288 -0
- package/dist/sitemap/index.js.map +1 -0
- package/dist/sitemap/index.mjs +285 -0
- package/dist/sitemap/index.mjs.map +1 -0
- package/dist/socket-loader-J26QHHOB.js +16 -0
- package/dist/socket-loader-J26QHHOB.js.map +1 -0
- package/dist/socket-loader-R7S2YJ2J.mjs +14 -0
- package/dist/socket-loader-R7S2YJ2J.mjs.map +1 -0
- package/dist/types-0dmq3k20.d.mts +168 -0
- package/dist/types-0dmq3k20.d.ts +168 -0
- package/dist/types-Blb2QNkV.d.mts +263 -0
- package/dist/types-Blb2QNkV.d.ts +263 -0
- package/dist/types-BnCwwUX3.d.mts +250 -0
- package/dist/types-BnCwwUX3.d.ts +250 -0
- package/dist/types-CGlnp43R.d.mts +312 -0
- package/dist/types-CGlnp43R.d.ts +312 -0
- package/dist/types-D08004rU.d.mts +179 -0
- package/dist/types-D08004rU.d.ts +179 -0
- package/dist/types-DNSYU7qI.d.mts +127 -0
- package/dist/types-DNSYU7qI.d.ts +127 -0
- package/dist/types-KZP_VWZp.d.mts +266 -0
- package/dist/types-KZP_VWZp.d.ts +266 -0
- package/dist/useEventModal-BVTx69XE.d.mts +274 -0
- package/dist/useEventModal-Dx1dItTJ.d.ts +274 -0
- package/dist/web-vitals-444RLW3B.js +252 -0
- package/dist/web-vitals-444RLW3B.js.map +1 -0
- package/dist/web-vitals-KPICZIEF.mjs +241 -0
- package/dist/web-vitals-KPICZIEF.mjs.map +1 -0
- package/package.json +192 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import React__default, { CSSProperties } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @sonordev/site-kit/engage - Design Renderer
|
|
5
|
+
*
|
|
6
|
+
* Renders design_json from Engage Studio as React components.
|
|
7
|
+
* This is the runtime renderer that converts the visual builder's
|
|
8
|
+
* JSON structure into actual React elements.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
interface DesignNode {
|
|
12
|
+
id: string;
|
|
13
|
+
type: string;
|
|
14
|
+
name: string;
|
|
15
|
+
children?: DesignNode[];
|
|
16
|
+
props?: Record<string, any>;
|
|
17
|
+
style?: CSSProperties;
|
|
18
|
+
}
|
|
19
|
+
interface DesignDocument {
|
|
20
|
+
id: string;
|
|
21
|
+
type: string;
|
|
22
|
+
name: string;
|
|
23
|
+
children: DesignNode[];
|
|
24
|
+
style?: CSSProperties;
|
|
25
|
+
props?: Record<string, any>;
|
|
26
|
+
}
|
|
27
|
+
interface DesignRendererProps {
|
|
28
|
+
design: DesignDocument;
|
|
29
|
+
onClose?: () => void;
|
|
30
|
+
onAction?: (action: ActionConfig, node: DesignNode) => void;
|
|
31
|
+
context?: EngageContext;
|
|
32
|
+
}
|
|
33
|
+
interface ActionConfig {
|
|
34
|
+
action: string;
|
|
35
|
+
url?: string;
|
|
36
|
+
newTab?: boolean;
|
|
37
|
+
target?: string;
|
|
38
|
+
text?: string;
|
|
39
|
+
productId?: string;
|
|
40
|
+
formId?: string;
|
|
41
|
+
}
|
|
42
|
+
interface EngageContext {
|
|
43
|
+
user?: {
|
|
44
|
+
name?: string;
|
|
45
|
+
email?: string;
|
|
46
|
+
isLoggedIn?: boolean;
|
|
47
|
+
};
|
|
48
|
+
cart?: {
|
|
49
|
+
itemCount?: number;
|
|
50
|
+
total?: number;
|
|
51
|
+
};
|
|
52
|
+
page?: {
|
|
53
|
+
url?: string;
|
|
54
|
+
title?: string;
|
|
55
|
+
};
|
|
56
|
+
[key: string]: any;
|
|
57
|
+
}
|
|
58
|
+
declare function DesignRenderer({ design, onClose, onAction, context, }: DesignRendererProps): React__default.ReactElement;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @sonordev/site-kit/engage - Type definitions
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
type WidgetType = 'popup' | 'nudge' | 'bar' | 'chat' | 'slide-in';
|
|
65
|
+
interface EngageElement {
|
|
66
|
+
id: string;
|
|
67
|
+
project_id: string;
|
|
68
|
+
name: string;
|
|
69
|
+
type: WidgetType;
|
|
70
|
+
config: WidgetConfig;
|
|
71
|
+
targeting: TargetingRules;
|
|
72
|
+
trigger: TriggerConfig;
|
|
73
|
+
is_active: boolean;
|
|
74
|
+
priority: number;
|
|
75
|
+
created_at: string;
|
|
76
|
+
updated_at: string;
|
|
77
|
+
design_json?: DesignDocument;
|
|
78
|
+
compiled_bundle_url?: string;
|
|
79
|
+
status?: 'draft' | 'published' | 'archived' | 'paused';
|
|
80
|
+
}
|
|
81
|
+
interface WidgetConfig {
|
|
82
|
+
/** Visual style */
|
|
83
|
+
theme?: 'light' | 'dark' | 'custom';
|
|
84
|
+
position?: 'center' | 'top' | 'bottom' | 'left' | 'right' | 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
|
|
85
|
+
/** Content */
|
|
86
|
+
title?: string;
|
|
87
|
+
message?: string;
|
|
88
|
+
imageUrl?: string;
|
|
89
|
+
/** CTA */
|
|
90
|
+
ctaText?: string;
|
|
91
|
+
ctaUrl?: string;
|
|
92
|
+
ctaAction?: 'link' | 'close' | 'form' | 'chat';
|
|
93
|
+
/** Form (if ctaAction is 'form') */
|
|
94
|
+
formId?: string;
|
|
95
|
+
/** Styling */
|
|
96
|
+
backgroundColor?: string;
|
|
97
|
+
textColor?: string;
|
|
98
|
+
ctaBackgroundColor?: string;
|
|
99
|
+
ctaTextColor?: string;
|
|
100
|
+
borderRadius?: number;
|
|
101
|
+
/** Behavior */
|
|
102
|
+
closable?: boolean;
|
|
103
|
+
showOverlay?: boolean;
|
|
104
|
+
overlayOpacity?: number;
|
|
105
|
+
}
|
|
106
|
+
interface TargetingRules {
|
|
107
|
+
/** Page targeting */
|
|
108
|
+
pages?: {
|
|
109
|
+
include?: string[];
|
|
110
|
+
exclude?: string[];
|
|
111
|
+
};
|
|
112
|
+
/** Device targeting */
|
|
113
|
+
devices?: ('desktop' | 'mobile' | 'tablet')[];
|
|
114
|
+
/** Visitor targeting */
|
|
115
|
+
visitor?: {
|
|
116
|
+
type?: 'new' | 'returning' | 'all';
|
|
117
|
+
minSessions?: number;
|
|
118
|
+
maxSessions?: number;
|
|
119
|
+
};
|
|
120
|
+
/** Source targeting */
|
|
121
|
+
source?: {
|
|
122
|
+
utm_source?: string[];
|
|
123
|
+
utm_medium?: string[];
|
|
124
|
+
utm_campaign?: string[];
|
|
125
|
+
referrer?: string[];
|
|
126
|
+
};
|
|
127
|
+
/** Time targeting */
|
|
128
|
+
schedule?: {
|
|
129
|
+
startDate?: string;
|
|
130
|
+
endDate?: string;
|
|
131
|
+
daysOfWeek?: number[];
|
|
132
|
+
startTime?: string;
|
|
133
|
+
endTime?: string;
|
|
134
|
+
timezone?: string;
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
interface TriggerConfig {
|
|
138
|
+
type: 'immediate' | 'delay' | 'scroll' | 'exit-intent' | 'click' | 'custom';
|
|
139
|
+
/** Delay in seconds (for 'delay' type) */
|
|
140
|
+
delay?: number;
|
|
141
|
+
/** Scroll percentage (for 'scroll' type) */
|
|
142
|
+
scrollPercentage?: number;
|
|
143
|
+
/** CSS selector (for 'click' type) */
|
|
144
|
+
clickSelector?: string;
|
|
145
|
+
/** Custom event name (for 'custom' type) */
|
|
146
|
+
customEvent?: string;
|
|
147
|
+
/** Frequency capping */
|
|
148
|
+
frequency?: {
|
|
149
|
+
type: 'always' | 'once' | 'once-per-session' | 'every-n-days';
|
|
150
|
+
days?: number;
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
interface ChatConfig {
|
|
154
|
+
/** Widget position */
|
|
155
|
+
position: 'bottom-right' | 'bottom-left';
|
|
156
|
+
/** Widget appearance */
|
|
157
|
+
buttonIcon?: 'chat' | 'help' | 'custom';
|
|
158
|
+
buttonColor?: string;
|
|
159
|
+
buttonText?: string;
|
|
160
|
+
/** Brand primary color */
|
|
161
|
+
brandPrimary?: string;
|
|
162
|
+
/** Welcome message */
|
|
163
|
+
welcomeMessage?: string;
|
|
164
|
+
/** Operating hours */
|
|
165
|
+
operatingHours?: {
|
|
166
|
+
enabled: boolean;
|
|
167
|
+
timezone: string;
|
|
168
|
+
hours: {
|
|
169
|
+
[day: number]: {
|
|
170
|
+
start: string;
|
|
171
|
+
end: string;
|
|
172
|
+
} | null;
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
/** AI vs Live Chat */
|
|
176
|
+
mode: 'ai' | 'live' | 'hybrid';
|
|
177
|
+
/** AI settings (if mode is 'ai' or 'hybrid') */
|
|
178
|
+
aiSettings?: {
|
|
179
|
+
skillId?: string;
|
|
180
|
+
handoffToLive?: boolean;
|
|
181
|
+
handoffKeywords?: string[];
|
|
182
|
+
/** When AI should suggest handoff based on sentiment or keywords */
|
|
183
|
+
handoffTriggers?: {
|
|
184
|
+
negativesentiment?: boolean;
|
|
185
|
+
keywords?: string[];
|
|
186
|
+
afterMessages?: number;
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
/** Offline mode settings (when no agents available) */
|
|
190
|
+
offlineMode?: 'form' | 'ai' | 'message';
|
|
191
|
+
/** Form slug to show when offline (defaults to 'contact') */
|
|
192
|
+
offlineFormSlug?: string;
|
|
193
|
+
/** AI fallback when no agents online (hybrid mode) */
|
|
194
|
+
aiFallbackEnabled?: boolean;
|
|
195
|
+
/** Custom offline message */
|
|
196
|
+
offlineMessage?: string;
|
|
197
|
+
}
|
|
198
|
+
interface ChatMessage {
|
|
199
|
+
id: string;
|
|
200
|
+
conversation_id: string;
|
|
201
|
+
role: 'user' | 'assistant' | 'agent' | 'system';
|
|
202
|
+
content: string;
|
|
203
|
+
metadata?: Record<string, unknown>;
|
|
204
|
+
created_at: string;
|
|
205
|
+
/** Name of the agent (for agent messages) */
|
|
206
|
+
sender_name?: string;
|
|
207
|
+
/** Avatar URL of the agent */
|
|
208
|
+
sender_avatar?: string;
|
|
209
|
+
}
|
|
210
|
+
interface ChatConversation {
|
|
211
|
+
id: string;
|
|
212
|
+
project_id: string;
|
|
213
|
+
visitor_id: string;
|
|
214
|
+
status: 'active' | 'ai' | 'pending_handoff' | 'human' | 'closed';
|
|
215
|
+
assigned_to?: string;
|
|
216
|
+
last_message_at: string;
|
|
217
|
+
created_at: string;
|
|
218
|
+
/** AI summary of the conversation */
|
|
219
|
+
ai_summary?: string;
|
|
220
|
+
/** Visitor info */
|
|
221
|
+
visitor_name?: string;
|
|
222
|
+
visitor_email?: string;
|
|
223
|
+
}
|
|
224
|
+
/** Availability status returned by the widget API */
|
|
225
|
+
interface ChatAvailability {
|
|
226
|
+
available: boolean;
|
|
227
|
+
mode: 'live' | 'ai' | 'offline';
|
|
228
|
+
agentsOnline: number;
|
|
229
|
+
operatingHoursActive: boolean;
|
|
230
|
+
}
|
|
231
|
+
interface EngageConfig {
|
|
232
|
+
projectId: string;
|
|
233
|
+
/** Widget position */
|
|
234
|
+
position?: 'bottom-right' | 'bottom-left';
|
|
235
|
+
/** Z-index for widgets */
|
|
236
|
+
zIndex?: number;
|
|
237
|
+
/** Enable chat */
|
|
238
|
+
chatEnabled?: boolean;
|
|
239
|
+
/** Debug mode */
|
|
240
|
+
debug?: boolean;
|
|
241
|
+
}
|
|
242
|
+
interface EngageAnalytics {
|
|
243
|
+
element_id: string;
|
|
244
|
+
event_type: 'impression' | 'click' | 'close' | 'submit' | 'dismiss';
|
|
245
|
+
session_id: string;
|
|
246
|
+
metadata?: Record<string, unknown>;
|
|
247
|
+
created_at: string;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export { type ActionConfig as A, type ChatConfig as C, DesignRenderer as D, type EngageContext as E, type TargetingRules as T, type WidgetType as W, type DesignDocument as a, type DesignNode as b, type EngageElement as c, type WidgetConfig as d, type TriggerConfig as e, type ChatMessage as f, type ChatConversation as g, type ChatAvailability as h, type EngageConfig as i, type EngageAnalytics as j };
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import React__default, { CSSProperties } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @sonordev/site-kit/engage - Design Renderer
|
|
5
|
+
*
|
|
6
|
+
* Renders design_json from Engage Studio as React components.
|
|
7
|
+
* This is the runtime renderer that converts the visual builder's
|
|
8
|
+
* JSON structure into actual React elements.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
interface DesignNode {
|
|
12
|
+
id: string;
|
|
13
|
+
type: string;
|
|
14
|
+
name: string;
|
|
15
|
+
children?: DesignNode[];
|
|
16
|
+
props?: Record<string, any>;
|
|
17
|
+
style?: CSSProperties;
|
|
18
|
+
}
|
|
19
|
+
interface DesignDocument {
|
|
20
|
+
id: string;
|
|
21
|
+
type: string;
|
|
22
|
+
name: string;
|
|
23
|
+
children: DesignNode[];
|
|
24
|
+
style?: CSSProperties;
|
|
25
|
+
props?: Record<string, any>;
|
|
26
|
+
}
|
|
27
|
+
interface DesignRendererProps {
|
|
28
|
+
design: DesignDocument;
|
|
29
|
+
onClose?: () => void;
|
|
30
|
+
onAction?: (action: ActionConfig, node: DesignNode) => void;
|
|
31
|
+
context?: EngageContext;
|
|
32
|
+
}
|
|
33
|
+
interface ActionConfig {
|
|
34
|
+
action: string;
|
|
35
|
+
url?: string;
|
|
36
|
+
newTab?: boolean;
|
|
37
|
+
target?: string;
|
|
38
|
+
text?: string;
|
|
39
|
+
productId?: string;
|
|
40
|
+
formId?: string;
|
|
41
|
+
}
|
|
42
|
+
interface EngageContext {
|
|
43
|
+
user?: {
|
|
44
|
+
name?: string;
|
|
45
|
+
email?: string;
|
|
46
|
+
isLoggedIn?: boolean;
|
|
47
|
+
};
|
|
48
|
+
cart?: {
|
|
49
|
+
itemCount?: number;
|
|
50
|
+
total?: number;
|
|
51
|
+
};
|
|
52
|
+
page?: {
|
|
53
|
+
url?: string;
|
|
54
|
+
title?: string;
|
|
55
|
+
};
|
|
56
|
+
[key: string]: any;
|
|
57
|
+
}
|
|
58
|
+
declare function DesignRenderer({ design, onClose, onAction, context, }: DesignRendererProps): React__default.ReactElement;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @sonordev/site-kit/engage - Type definitions
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
type WidgetType = 'popup' | 'nudge' | 'bar' | 'chat' | 'slide-in';
|
|
65
|
+
interface EngageElement {
|
|
66
|
+
id: string;
|
|
67
|
+
project_id: string;
|
|
68
|
+
name: string;
|
|
69
|
+
type: WidgetType;
|
|
70
|
+
config: WidgetConfig;
|
|
71
|
+
targeting: TargetingRules;
|
|
72
|
+
trigger: TriggerConfig;
|
|
73
|
+
is_active: boolean;
|
|
74
|
+
priority: number;
|
|
75
|
+
created_at: string;
|
|
76
|
+
updated_at: string;
|
|
77
|
+
design_json?: DesignDocument;
|
|
78
|
+
compiled_bundle_url?: string;
|
|
79
|
+
status?: 'draft' | 'published' | 'archived' | 'paused';
|
|
80
|
+
}
|
|
81
|
+
interface WidgetConfig {
|
|
82
|
+
/** Visual style */
|
|
83
|
+
theme?: 'light' | 'dark' | 'custom';
|
|
84
|
+
position?: 'center' | 'top' | 'bottom' | 'left' | 'right' | 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
|
|
85
|
+
/** Content */
|
|
86
|
+
title?: string;
|
|
87
|
+
message?: string;
|
|
88
|
+
imageUrl?: string;
|
|
89
|
+
/** CTA */
|
|
90
|
+
ctaText?: string;
|
|
91
|
+
ctaUrl?: string;
|
|
92
|
+
ctaAction?: 'link' | 'close' | 'form' | 'chat';
|
|
93
|
+
/** Form (if ctaAction is 'form') */
|
|
94
|
+
formId?: string;
|
|
95
|
+
/** Styling */
|
|
96
|
+
backgroundColor?: string;
|
|
97
|
+
textColor?: string;
|
|
98
|
+
ctaBackgroundColor?: string;
|
|
99
|
+
ctaTextColor?: string;
|
|
100
|
+
borderRadius?: number;
|
|
101
|
+
/** Behavior */
|
|
102
|
+
closable?: boolean;
|
|
103
|
+
showOverlay?: boolean;
|
|
104
|
+
overlayOpacity?: number;
|
|
105
|
+
}
|
|
106
|
+
interface TargetingRules {
|
|
107
|
+
/** Page targeting */
|
|
108
|
+
pages?: {
|
|
109
|
+
include?: string[];
|
|
110
|
+
exclude?: string[];
|
|
111
|
+
};
|
|
112
|
+
/** Device targeting */
|
|
113
|
+
devices?: ('desktop' | 'mobile' | 'tablet')[];
|
|
114
|
+
/** Visitor targeting */
|
|
115
|
+
visitor?: {
|
|
116
|
+
type?: 'new' | 'returning' | 'all';
|
|
117
|
+
minSessions?: number;
|
|
118
|
+
maxSessions?: number;
|
|
119
|
+
};
|
|
120
|
+
/** Source targeting */
|
|
121
|
+
source?: {
|
|
122
|
+
utm_source?: string[];
|
|
123
|
+
utm_medium?: string[];
|
|
124
|
+
utm_campaign?: string[];
|
|
125
|
+
referrer?: string[];
|
|
126
|
+
};
|
|
127
|
+
/** Time targeting */
|
|
128
|
+
schedule?: {
|
|
129
|
+
startDate?: string;
|
|
130
|
+
endDate?: string;
|
|
131
|
+
daysOfWeek?: number[];
|
|
132
|
+
startTime?: string;
|
|
133
|
+
endTime?: string;
|
|
134
|
+
timezone?: string;
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
interface TriggerConfig {
|
|
138
|
+
type: 'immediate' | 'delay' | 'scroll' | 'exit-intent' | 'click' | 'custom';
|
|
139
|
+
/** Delay in seconds (for 'delay' type) */
|
|
140
|
+
delay?: number;
|
|
141
|
+
/** Scroll percentage (for 'scroll' type) */
|
|
142
|
+
scrollPercentage?: number;
|
|
143
|
+
/** CSS selector (for 'click' type) */
|
|
144
|
+
clickSelector?: string;
|
|
145
|
+
/** Custom event name (for 'custom' type) */
|
|
146
|
+
customEvent?: string;
|
|
147
|
+
/** Frequency capping */
|
|
148
|
+
frequency?: {
|
|
149
|
+
type: 'always' | 'once' | 'once-per-session' | 'every-n-days';
|
|
150
|
+
days?: number;
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
interface ChatConfig {
|
|
154
|
+
/** Widget position */
|
|
155
|
+
position: 'bottom-right' | 'bottom-left';
|
|
156
|
+
/** Widget appearance */
|
|
157
|
+
buttonIcon?: 'chat' | 'help' | 'custom';
|
|
158
|
+
buttonColor?: string;
|
|
159
|
+
buttonText?: string;
|
|
160
|
+
/** Brand primary color */
|
|
161
|
+
brandPrimary?: string;
|
|
162
|
+
/** Welcome message */
|
|
163
|
+
welcomeMessage?: string;
|
|
164
|
+
/** Operating hours */
|
|
165
|
+
operatingHours?: {
|
|
166
|
+
enabled: boolean;
|
|
167
|
+
timezone: string;
|
|
168
|
+
hours: {
|
|
169
|
+
[day: number]: {
|
|
170
|
+
start: string;
|
|
171
|
+
end: string;
|
|
172
|
+
} | null;
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
/** AI vs Live Chat */
|
|
176
|
+
mode: 'ai' | 'live' | 'hybrid';
|
|
177
|
+
/** AI settings (if mode is 'ai' or 'hybrid') */
|
|
178
|
+
aiSettings?: {
|
|
179
|
+
skillId?: string;
|
|
180
|
+
handoffToLive?: boolean;
|
|
181
|
+
handoffKeywords?: string[];
|
|
182
|
+
/** When AI should suggest handoff based on sentiment or keywords */
|
|
183
|
+
handoffTriggers?: {
|
|
184
|
+
negativesentiment?: boolean;
|
|
185
|
+
keywords?: string[];
|
|
186
|
+
afterMessages?: number;
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
/** Offline mode settings (when no agents available) */
|
|
190
|
+
offlineMode?: 'form' | 'ai' | 'message';
|
|
191
|
+
/** Form slug to show when offline (defaults to 'contact') */
|
|
192
|
+
offlineFormSlug?: string;
|
|
193
|
+
/** AI fallback when no agents online (hybrid mode) */
|
|
194
|
+
aiFallbackEnabled?: boolean;
|
|
195
|
+
/** Custom offline message */
|
|
196
|
+
offlineMessage?: string;
|
|
197
|
+
}
|
|
198
|
+
interface ChatMessage {
|
|
199
|
+
id: string;
|
|
200
|
+
conversation_id: string;
|
|
201
|
+
role: 'user' | 'assistant' | 'agent' | 'system';
|
|
202
|
+
content: string;
|
|
203
|
+
metadata?: Record<string, unknown>;
|
|
204
|
+
created_at: string;
|
|
205
|
+
/** Name of the agent (for agent messages) */
|
|
206
|
+
sender_name?: string;
|
|
207
|
+
/** Avatar URL of the agent */
|
|
208
|
+
sender_avatar?: string;
|
|
209
|
+
}
|
|
210
|
+
interface ChatConversation {
|
|
211
|
+
id: string;
|
|
212
|
+
project_id: string;
|
|
213
|
+
visitor_id: string;
|
|
214
|
+
status: 'active' | 'ai' | 'pending_handoff' | 'human' | 'closed';
|
|
215
|
+
assigned_to?: string;
|
|
216
|
+
last_message_at: string;
|
|
217
|
+
created_at: string;
|
|
218
|
+
/** AI summary of the conversation */
|
|
219
|
+
ai_summary?: string;
|
|
220
|
+
/** Visitor info */
|
|
221
|
+
visitor_name?: string;
|
|
222
|
+
visitor_email?: string;
|
|
223
|
+
}
|
|
224
|
+
/** Availability status returned by the widget API */
|
|
225
|
+
interface ChatAvailability {
|
|
226
|
+
available: boolean;
|
|
227
|
+
mode: 'live' | 'ai' | 'offline';
|
|
228
|
+
agentsOnline: number;
|
|
229
|
+
operatingHoursActive: boolean;
|
|
230
|
+
}
|
|
231
|
+
interface EngageConfig {
|
|
232
|
+
projectId: string;
|
|
233
|
+
/** Widget position */
|
|
234
|
+
position?: 'bottom-right' | 'bottom-left';
|
|
235
|
+
/** Z-index for widgets */
|
|
236
|
+
zIndex?: number;
|
|
237
|
+
/** Enable chat */
|
|
238
|
+
chatEnabled?: boolean;
|
|
239
|
+
/** Debug mode */
|
|
240
|
+
debug?: boolean;
|
|
241
|
+
}
|
|
242
|
+
interface EngageAnalytics {
|
|
243
|
+
element_id: string;
|
|
244
|
+
event_type: 'impression' | 'click' | 'close' | 'submit' | 'dismiss';
|
|
245
|
+
session_id: string;
|
|
246
|
+
metadata?: Record<string, unknown>;
|
|
247
|
+
created_at: string;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export { type ActionConfig as A, type ChatConfig as C, DesignRenderer as D, type EngageContext as E, type TargetingRules as T, type WidgetType as W, type DesignDocument as a, type DesignNode as b, type EngageElement as c, type WidgetConfig as d, type TriggerConfig as e, type ChatMessage as f, type ChatConversation as g, type ChatAvailability as h, type EngageConfig as i, type EngageAnalytics as j };
|