@fayz-ai/plugin-marketing 0.9.0-next.0 → 0.9.0-next.1
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/data/mock.d.ts.map +1 -1
- package/dist/data/supabase.d.ts +6 -0
- package/dist/data/supabase.d.ts.map +1 -1
- package/dist/data/tables.d.ts +15 -0
- package/dist/data/tables.d.ts.map +1 -1
- package/dist/data/types.d.ts +43 -2
- package/dist/data/types.d.ts.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +782 -104
- package/dist/index.js.map +1 -1
- package/dist/integrations/ranklayer/connectorDef.d.ts.map +1 -1
- package/dist/locales/en.d.ts.map +1 -1
- package/dist/locales/pt-BR.d.ts.map +1 -1
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/registries.d.ts +3 -1
- package/dist/registries.d.ts.map +1 -1
- package/dist/store.d.ts +9 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/types.d.ts +41 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/views/LandingPageComposer.d.ts +8 -0
- package/dist/views/LandingPageComposer.d.ts.map +1 -0
- package/dist/views/LandingPagesView.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/data/mock.ts +83 -8
- package/src/data/supabase.ts +215 -3
- package/src/data/tables.ts +17 -0
- package/src/data/types.ts +41 -1
- package/src/index.ts +12 -2
- package/src/integrations/ranklayer/connectorDef.tsx +4 -0
- package/src/locales/en.ts +24 -1
- package/src/locales/pt-BR.ts +24 -1
- package/src/migrations/008_landing_pages.sql +112 -0
- package/src/migrations/index.ts +116 -1
- package/src/registries.ts +3 -1
- package/src/store.ts +26 -3
- package/src/types.ts +44 -5
- package/src/views/LandingPageComposer.tsx +201 -0
- package/src/views/LandingPagesView.tsx +145 -22
package/dist/data/mock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAA2C,MAAM,SAAS,CAAA;AAC7F,OAAO,KAAK,EACV,kBAAkB,EAIlB,eAAe,EAQhB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AA6BtE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,UAAU,EAAE,eAAe,CAAA;IAC3B,MAAM,EAAE,eAAe,CAAA;CACxB;AAyGD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,mBAAmB,GAAG,qBAAqB,CA0J3F"}
|
package/dist/data/supabase.d.ts
CHANGED
|
@@ -5,6 +5,12 @@ export interface SupabaseMarketingProviderOptions {
|
|
|
5
5
|
conversion: ConversionModel;
|
|
6
6
|
attributionBridge?: AttributionBridge;
|
|
7
7
|
sitesBridge?: SitesPerformanceBridge;
|
|
8
|
+
/** Where the lead-tag catalog is read from (defaults to plugin-crm's). */
|
|
9
|
+
leadTags?: {
|
|
10
|
+
table?: string;
|
|
11
|
+
valueField?: string;
|
|
12
|
+
labelField?: string;
|
|
13
|
+
};
|
|
8
14
|
}
|
|
9
15
|
export declare function createSupabaseMarketingProvider(options: SupabaseMarketingProviderOptions): MarketingDataProvider;
|
|
10
16
|
//# sourceMappingURL=supabase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EAGrB,sBAAsB,EACvB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EACV,kBAAkB,EAGlB,eAAe,EAQhB,MAAM,UAAU,CAAA;AAYjB,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,UAAU,EAAE,eAAe,CAAA;IAC3B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,WAAW,CAAC,EAAE,sBAAsB,CAAA;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACxE;AAgFD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,qBAAqB,CA2evB"}
|
package/dist/data/tables.d.ts
CHANGED
|
@@ -4,10 +4,25 @@ export declare const T: {
|
|
|
4
4
|
readonly contentPosts: "plg_marketing_content_posts";
|
|
5
5
|
readonly channels: "plg_marketing_channels";
|
|
6
6
|
readonly campaigns: "plg_marketing_campaigns";
|
|
7
|
+
readonly landingPages: "plg_marketing_landing_pages";
|
|
8
|
+
};
|
|
9
|
+
/** The tenant's sites are its fayz projects (@fayz-ai/db 020) — the same rows
|
|
10
|
+
* Settings → Sites manages. Marketing only READS them: a landing page points
|
|
11
|
+
* at one and adds a route. */
|
|
12
|
+
export declare const SITES_TABLE = "fayz_projects";
|
|
13
|
+
/** Where the lead-tag catalog lives. Marketing only READS it (to offer the
|
|
14
|
+
* tags in the landing-page form); plugin-crm owns the table. Overridable via
|
|
15
|
+
* the plugin's `leadTags` option for apps that keep tags somewhere else. */
|
|
16
|
+
export declare const LEAD_TAGS_SOURCE: {
|
|
17
|
+
readonly table: "plg_crm_tags";
|
|
18
|
+
readonly valueField: "slug";
|
|
19
|
+
readonly labelField: "name";
|
|
7
20
|
};
|
|
8
21
|
export declare const V: {
|
|
9
22
|
readonly channels: "v_marketing_channels";
|
|
10
23
|
readonly campaigns: "v_marketing_campaigns";
|
|
11
24
|
readonly attribution: "v_marketing_attribution";
|
|
25
|
+
readonly landingPages: "v_marketing_landing_pages";
|
|
26
|
+
readonly leadTagEvents: "v_marketing_lead_tag_events";
|
|
12
27
|
};
|
|
13
28
|
//# sourceMappingURL=tables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/data/tables.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/data/tables.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,CAAC;;;;;;;CAOJ,CAAA;AAEV;;+BAE+B;AAC/B,eAAO,MAAM,WAAW,kBAAkB,CAAA;AAE1C;;6EAE6E;AAC7E,eAAO,MAAM,gBAAgB;;;;CAInB,CAAA;AAGV,eAAO,MAAM,CAAC;;;;;;CAMJ,CAAA"}
|
package/dist/data/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Campaign, CampaignStatus, ChannelPerformance, FunnelStage, LandingPagePerf, MarketingOverview, MarketingQuery } from '../types';
|
|
1
|
+
import type { Campaign, CampaignStatus, ChannelPerformance, DateRangeKey, FunnelStage, LandingPage, LandingPagePerf, LandingPageStatus, MarketingOverview, MarketingQuery, MarketingSite } from '../types';
|
|
2
2
|
export interface SaveCampaignInput {
|
|
3
3
|
id?: string;
|
|
4
4
|
name: string;
|
|
@@ -8,6 +8,16 @@ export interface SaveCampaignInput {
|
|
|
8
8
|
end?: string;
|
|
9
9
|
spend: number;
|
|
10
10
|
}
|
|
11
|
+
export interface SaveLandingPageInput {
|
|
12
|
+
id?: string;
|
|
13
|
+
siteId: string;
|
|
14
|
+
name: string;
|
|
15
|
+
route: string;
|
|
16
|
+
leadTags?: string[];
|
|
17
|
+
status?: LandingPageStatus;
|
|
18
|
+
prompt?: string;
|
|
19
|
+
isActive?: boolean;
|
|
20
|
+
}
|
|
11
21
|
export interface MarketingDataProvider {
|
|
12
22
|
overview(query: MarketingQuery): Promise<MarketingOverview>;
|
|
13
23
|
channelPerformance(query: MarketingQuery): Promise<ChannelPerformance[]>;
|
|
@@ -17,6 +27,15 @@ export interface MarketingDataProvider {
|
|
|
17
27
|
deleteCampaign(id: string): Promise<void>;
|
|
18
28
|
funnel(query: MarketingQuery): Promise<FunnelStage[]>;
|
|
19
29
|
landingPages(query: MarketingQuery): Promise<LandingPagePerf[]>;
|
|
30
|
+
saveLandingPage(input: SaveLandingPageInput): Promise<LandingPage>;
|
|
31
|
+
deleteLandingPage(id: string): Promise<void>;
|
|
32
|
+
/** Sites the tenant owns — the "site" half of a landing page. */
|
|
33
|
+
listSites(): Promise<MarketingSite[]>;
|
|
34
|
+
/** Lead-tag catalog offered in the landing-page form (read-only). */
|
|
35
|
+
listLeadTags(): Promise<Array<{
|
|
36
|
+
slug: string;
|
|
37
|
+
name: string;
|
|
38
|
+
}>>;
|
|
20
39
|
/** Drop any provider-side read cache (external writes, e.g. agent RPCs). */
|
|
21
40
|
invalidateCache?(): void;
|
|
22
41
|
}
|
|
@@ -28,7 +47,29 @@ export interface AttributionBridge {
|
|
|
28
47
|
}>>;
|
|
29
48
|
funnel(query: MarketingQuery): Promise<FunnelStage[]>;
|
|
30
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Visit analytics for landing pages. The pages themselves are rows the tenant
|
|
52
|
+
* owns here; the VISITS live wherever the site is deployed, so this reads them
|
|
53
|
+
* back by (app id, route, period) — the contract the hosting platform's
|
|
54
|
+
* analytics endpoint is expected to take. Nothing implements it yet: without a
|
|
55
|
+
* bridge the surface shows the pages with visits pending ("—") rather than
|
|
56
|
+
* fake zeros.
|
|
57
|
+
*/
|
|
31
58
|
export interface SitesPerformanceBridge {
|
|
32
|
-
|
|
59
|
+
visitsByRoute(query: {
|
|
60
|
+
range: DateRangeKey;
|
|
61
|
+
pages: Array<{
|
|
62
|
+
id: string;
|
|
63
|
+
/** app manifest id of the deploy (fayz_projects.app_id) */
|
|
64
|
+
appId?: string;
|
|
65
|
+
/** platform project id (fayz_projects.fayz_project_id) */
|
|
66
|
+
fayzProjectId?: string;
|
|
67
|
+
siteUrl?: string;
|
|
68
|
+
route: string;
|
|
69
|
+
}>;
|
|
70
|
+
}): Promise<Array<{
|
|
71
|
+
id: string;
|
|
72
|
+
visits: number;
|
|
73
|
+
}>>;
|
|
33
74
|
}
|
|
34
75
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/data/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,cAAc,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -29,8 +29,15 @@ export interface MarketingPluginOptions {
|
|
|
29
29
|
settingsRegistries?: PluginRegistryDef[];
|
|
30
30
|
/** Optional DI to read real conversions (mounted later). */
|
|
31
31
|
attributionBridge?: AttributionBridge;
|
|
32
|
-
/** Optional DI to read real landing-page
|
|
32
|
+
/** Optional DI to read real landing-page visits (mounted later). */
|
|
33
33
|
sitesBridge?: SitesPerformanceBridge;
|
|
34
|
+
/** Where the lead-tag catalog is read from for the landing-page form.
|
|
35
|
+
* Defaults to plugin-crm's plg_crm_tags (slug/name). */
|
|
36
|
+
leadTags?: {
|
|
37
|
+
table?: string;
|
|
38
|
+
valueField?: string;
|
|
39
|
+
labelField?: string;
|
|
40
|
+
};
|
|
34
41
|
}
|
|
35
42
|
export declare function createMarketingPlugin(options?: MarketingPluginOptions): PluginManifest;
|
|
36
43
|
export type { MarketingDataProvider, AttributionBridge, SitesPerformanceBridge, } from './data/types';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAO/F,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAOjE,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,EAAqB,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAChG,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAclE,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,yEAAyE;IACzE,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,6EAA6E;IAC7E,cAAc,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,sBAAsB,CAAA;KAAE,CAAA;IAC1D,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACxC,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAO/F,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAOjE,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,EAAqB,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAChG,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAclE,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,yEAAyE;IACzE,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,6EAA6E;IAC7E,cAAc,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,sBAAsB,CAAA;KAAE,CAAA;IAC1D,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACxC,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,oEAAoE;IACpE,WAAW,CAAC,EAAE,sBAAsB,CAAA;IACpC;6DACyD;IACzD,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACxE;AA8CD,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,cAAc,CAsTtF;AAED,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAA;AACjE,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAA"}
|