@fayz-ai/plugin-marketing 0.1.6 → 0.2.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.
Files changed (76) hide show
  1. package/dist/MarketingContext.d.ts +1 -0
  2. package/dist/MarketingContext.d.ts.map +1 -1
  3. package/dist/MarketingPage.d.ts +5 -1
  4. package/dist/MarketingPage.d.ts.map +1 -1
  5. package/dist/components/icons.d.ts +4 -0
  6. package/dist/components/icons.d.ts.map +1 -1
  7. package/dist/data/contentMedia.d.ts +3 -0
  8. package/dist/data/contentMedia.d.ts.map +1 -0
  9. package/dist/data/contentMock.d.ts +3 -0
  10. package/dist/data/contentMock.d.ts.map +1 -0
  11. package/dist/data/contentSupabase.d.ts +3 -0
  12. package/dist/data/contentSupabase.d.ts.map +1 -0
  13. package/dist/data/contentTypes.d.ts +111 -0
  14. package/dist/data/contentTypes.d.ts.map +1 -0
  15. package/dist/index.cjs +2780 -130
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.ts +11 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2782 -134
  20. package/dist/index.js.map +1 -1
  21. package/dist/locales/en.d.ts.map +1 -1
  22. package/dist/locales/pt-BR.d.ts.map +1 -1
  23. package/dist/migrations/index.d.ts +4 -0
  24. package/dist/migrations/index.d.ts.map +1 -0
  25. package/dist/presets.d.ts +2 -0
  26. package/dist/presets.d.ts.map +1 -1
  27. package/dist/schema/index.d.ts +717 -0
  28. package/dist/schema/index.d.ts.map +1 -0
  29. package/dist/schema.cjs +65 -0
  30. package/dist/schema.cjs.map +1 -0
  31. package/dist/schema.js +61 -0
  32. package/dist/schema.js.map +1 -0
  33. package/dist/views/content/ContentPlannerContext.d.ts +13 -0
  34. package/dist/views/content/ContentPlannerContext.d.ts.map +1 -0
  35. package/dist/views/content/ContentView.d.ts +5 -0
  36. package/dist/views/content/ContentView.d.ts.map +1 -0
  37. package/dist/views/content/PlanBriefView.d.ts +12 -0
  38. package/dist/views/content/PlanBriefView.d.ts.map +1 -0
  39. package/dist/views/content/PostPage.d.ts +6 -0
  40. package/dist/views/content/PostPage.d.ts.map +1 -0
  41. package/dist/views/content/PostSocialPreview.d.ts +11 -0
  42. package/dist/views/content/PostSocialPreview.d.ts.map +1 -0
  43. package/dist/views/content/RecordingChecklist.d.ts +6 -0
  44. package/dist/views/content/RecordingChecklist.d.ts.map +1 -0
  45. package/dist/views/content/contentBits.d.ts +28 -0
  46. package/dist/views/content/contentBits.d.ts.map +1 -0
  47. package/dist/views/content/contentStore.d.ts +28 -0
  48. package/dist/views/content/contentStore.d.ts.map +1 -0
  49. package/dist/views/content/templates.d.ts +3 -0
  50. package/dist/views/content/templates.d.ts.map +1 -0
  51. package/package.json +11 -4
  52. package/src/MarketingContext.tsx +1 -0
  53. package/src/MarketingPage.tsx +23 -3
  54. package/src/components/icons.tsx +19 -0
  55. package/src/data/contentMedia.ts +25 -0
  56. package/src/data/contentMock.ts +253 -0
  57. package/src/data/contentSupabase.ts +262 -0
  58. package/src/data/contentTypes.ts +138 -0
  59. package/src/index.ts +62 -4
  60. package/src/locales/en.ts +95 -0
  61. package/src/locales/pt-BR.ts +95 -0
  62. package/src/migrations/001_content_planner.sql +94 -0
  63. package/src/migrations/002_multi_platform.sql +25 -0
  64. package/src/migrations/003_recording_ops.sql +25 -0
  65. package/src/migrations/index.ts +152 -0
  66. package/src/presets.ts +5 -3
  67. package/src/schema/index.ts +69 -0
  68. package/src/views/content/ContentPlannerContext.tsx +13 -0
  69. package/src/views/content/ContentView.tsx +901 -0
  70. package/src/views/content/PlanBriefView.tsx +268 -0
  71. package/src/views/content/PostPage.tsx +370 -0
  72. package/src/views/content/PostSocialPreview.tsx +212 -0
  73. package/src/views/content/RecordingChecklist.tsx +145 -0
  74. package/src/views/content/contentBits.tsx +114 -0
  75. package/src/views/content/contentStore.ts +160 -0
  76. package/src/views/content/templates.ts +172 -0
@@ -12,6 +12,7 @@ export interface MarketingLabels {
12
12
  campaigns: string;
13
13
  funnel: string;
14
14
  landingPages: string;
15
+ content: string;
15
16
  settings: string;
16
17
  }
17
18
  export interface ResolvedMarketingConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"MarketingContext.d.ts","sourceRoot":"","sources":["../src/MarketingContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,eAAe,CAAA;IAC3B,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,OAAO,EAAE,sBAAsB,CAAA;IAC/B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,eAAe,CAAA;CACxB;AAID,eAAO,MAAM,wBAAwB;;;;;EAAsB,CAAA;AAC3D,eAAO,MAAM,kBAAkB,+BAAgB,CAAA;AAC/C,eAAO,MAAM,oBAAoB,6BAAkB,CAAA;AACnD,eAAO,MAAM,iBAAiB,oDAAe,CAAA;AAE7C,uDAAuD;AACvD,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAGlE"}
1
+ {"version":3,"file":"MarketingContext.d.ts","sourceRoot":"","sources":["../src/MarketingContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,eAAe,CAAA;IAC3B,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,OAAO,EAAE,sBAAsB,CAAA;IAC/B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,eAAe,CAAA;CACxB;AAID,eAAO,MAAM,wBAAwB;;;;;EAAsB,CAAA;AAC3D,eAAO,MAAM,kBAAkB,+BAAgB,CAAA;AAC/C,eAAO,MAAM,oBAAoB,6BAAkB,CAAA;AACnD,eAAO,MAAM,iBAAiB,oDAAe,CAAA;AAE7C,uDAAuD;AACvD,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAGlE"}
@@ -2,10 +2,14 @@ import React from 'react';
2
2
  import type { StoreApi } from 'zustand/vanilla';
3
3
  import { type ResolvedMarketingConfig } from './MarketingContext';
4
4
  import type { MarketingDataProvider } from './data/types';
5
+ import type { ContentPlannerProvider } from './data/contentTypes';
5
6
  import type { MarketingUIState } from './store';
6
- export declare function MarketingPage({ config, provider, store }: {
7
+ import type { ContentPlannerUIState } from './views/content/contentStore';
8
+ export declare function MarketingPage({ config, provider, store, contentProvider, contentStore }: {
7
9
  config: ResolvedMarketingConfig;
8
10
  provider: MarketingDataProvider;
9
11
  store: StoreApi<MarketingUIState>;
12
+ contentProvider: ContentPlannerProvider;
13
+ contentStore: StoreApi<ContentPlannerUIState>;
10
14
  }): React.JSX.Element;
11
15
  //# sourceMappingURL=MarketingPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarketingPage.d.ts","sourceRoot":"","sources":["../src/MarketingPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAK/C,OAAO,EAA4B,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAmC/C,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IACzD,MAAM,EAAE,uBAAuB,CAAA;IAC/B,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;CAClC,qBA8CA"}
1
+ {"version":3,"file":"MarketingPage.d.ts","sourceRoot":"","sources":["../src/MarketingPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAK/C,OAAO,EAA4B,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAQ/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAuCzE,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE;IACxF,MAAM,EAAE,uBAAuB,CAAA;IAC/B,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IACjC,eAAe,EAAE,sBAAsB,CAAA;IACvC,YAAY,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAA;CAC9C,qBAmDA"}
@@ -3,4 +3,8 @@ export declare function ChannelIcon({ name, className }: {
3
3
  name: string;
4
4
  className?: string;
5
5
  }): React.JSX.Element;
6
+ export declare function PlatformIcon({ platform, className }: {
7
+ platform: string;
8
+ className?: string;
9
+ }): React.JSX.Element;
6
10
  //# sourceMappingURL=icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/components/icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,qBAGpF"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/components/icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAczB,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,qBAGpF;AAeD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,qBAG7F"}
@@ -0,0 +1,3 @@
1
+ export declare function canUploadMedia(): boolean;
2
+ export declare function uploadPostMedia(postId: string, file: File): Promise<string>;
3
+ //# sourceMappingURL=contentMedia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentMedia.d.ts","sourceRoot":"","sources":["../../src/data/contentMedia.ts"],"names":[],"mappings":"AAQA,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAYjF"}
@@ -0,0 +1,3 @@
1
+ import type { ContentPlannerProvider } from './contentTypes';
2
+ export declare function createMockContentPlannerProvider(): ContentPlannerProvider;
3
+ //# sourceMappingURL=contentMock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentMock.d.ts","sourceRoot":"","sources":["../../src/data/contentMock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EAGvB,MAAM,gBAAgB,CAAA;AAmGvB,wBAAgB,gCAAgC,IAAI,sBAAsB,CAoJzE"}
@@ -0,0 +1,3 @@
1
+ import type { ContentPlannerProvider } from './contentTypes';
2
+ export declare function createSupabaseContentPlannerProvider(): ContentPlannerProvider;
3
+ //# sourceMappingURL=contentSupabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentSupabase.d.ts","sourceRoot":"","sources":["../../src/data/contentSupabase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,sBAAsB,EAGvB,MAAM,gBAAgB,CAAA;AAmDvB,wBAAgB,oCAAoC,IAAI,sBAAsB,CA4M7E"}
@@ -0,0 +1,111 @@
1
+ export type PostFormat = 'reel' | 'static' | 'carousel' | 'story' | 'video' | 'live' | 'article';
2
+ /** Platforms an account can publish to. UI-driven list (the DB stores plain
3
+ * text[]), so growing it is a one-line change here. */
4
+ export declare const PLATFORMS: readonly ["instagram", "tiktok", "youtube", "facebook", "linkedin", "x", "pinterest", "threads"];
5
+ export type Platform = (typeof PLATFORMS)[number];
6
+ export type PostStatus = 'idea' | 'script' | 'recording' | 'editing' | 'scheduled' | 'published';
7
+ export declare const POST_STATUS_ORDER: PostStatus[];
8
+ export interface SocialAccount {
9
+ id: string;
10
+ name: string;
11
+ handle?: string;
12
+ /** Platforms this account/brand publishes to (one account, many connections). */
13
+ platforms: string[];
14
+ isActive: boolean;
15
+ }
16
+ export interface ContentPlan {
17
+ id: string;
18
+ accountId: string;
19
+ name: string;
20
+ status: 'draft' | 'active' | 'archived';
21
+ weeksCount: number;
22
+ startDate?: string;
23
+ /** Structured "what we want" config — feeds chips + future AI drafting. */
24
+ objective?: string;
25
+ tone?: string;
26
+ pillars: string[];
27
+ formats: PostFormat[];
28
+ weeklyFrequency: number;
29
+ /** Free-form brief/strategy document (markdown). */
30
+ briefMd: string;
31
+ }
32
+ /** Recording-day checklist item (on-set companion). */
33
+ export interface ChecklistItem {
34
+ id: string;
35
+ text: string;
36
+ done: boolean;
37
+ }
38
+ export interface ContentPost {
39
+ id: string;
40
+ planId: string;
41
+ weekNumber: number;
42
+ position: number;
43
+ title: string;
44
+ format: PostFormat;
45
+ status: PostStatus;
46
+ scheduledDate?: string;
47
+ /** Target platforms for this post; empty = inherit the account's platforms. */
48
+ platforms: string[];
49
+ /** Recording-day checklist — persisted as the crew checks items off. */
50
+ checklist: ChecklistItem[];
51
+ /** Uploaded asset URL (static posts: caption + final art instead of a script). */
52
+ mediaUrl?: string;
53
+ hook?: string;
54
+ cta?: string;
55
+ /** The Notion-style page body — the script/plan in markdown. */
56
+ contentMd: string;
57
+ updatedAt?: string;
58
+ }
59
+ export interface SaveSocialAccountInput {
60
+ id?: string;
61
+ name: string;
62
+ handle?: string;
63
+ platforms?: string[];
64
+ isActive?: boolean;
65
+ }
66
+ export interface SaveContentPlanInput {
67
+ id?: string;
68
+ accountId?: string;
69
+ name?: string;
70
+ status?: ContentPlan['status'];
71
+ weeksCount?: number;
72
+ startDate?: string | null;
73
+ objective?: string;
74
+ tone?: string;
75
+ pillars?: string[];
76
+ formats?: PostFormat[];
77
+ weeklyFrequency?: number;
78
+ briefMd?: string;
79
+ }
80
+ export interface SaveContentPostInput {
81
+ id?: string;
82
+ planId?: string;
83
+ weekNumber?: number;
84
+ position?: number;
85
+ title?: string;
86
+ format?: PostFormat;
87
+ status?: PostStatus;
88
+ scheduledDate?: string | null;
89
+ platforms?: string[];
90
+ checklist?: ChecklistItem[];
91
+ mediaUrl?: string | null;
92
+ hook?: string;
93
+ cta?: string;
94
+ contentMd?: string;
95
+ }
96
+ export interface ContentPlannerProvider {
97
+ listAccounts(): Promise<SocialAccount[]>;
98
+ saveAccount(input: SaveSocialAccountInput): Promise<SocialAccount>;
99
+ /** Hard delete — plans and posts cascade with the account. */
100
+ deleteAccount(id: string): Promise<void>;
101
+ listPlans(accountId: string): Promise<ContentPlan[]>;
102
+ getPlan(id: string): Promise<ContentPlan | null>;
103
+ savePlan(input: SaveContentPlanInput): Promise<ContentPlan>;
104
+ deletePlan(id: string): Promise<void>;
105
+ /** Ordered by week_number then position. */
106
+ listPosts(planId: string): Promise<ContentPost[]>;
107
+ getPost(id: string): Promise<ContentPost | null>;
108
+ savePost(input: SaveContentPostInput): Promise<ContentPost>;
109
+ deletePost(id: string): Promise<void>;
110
+ }
111
+ //# sourceMappingURL=contentTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentTypes.d.ts","sourceRoot":"","sources":["../../src/data/contentTypes.ts"],"names":[],"mappings":"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"}