@contractspec/example.crm-pipeline 0.0.0-canary-20260113170453

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 (206) hide show
  1. package/.turbo/turbo-build$colon$bundle.log +172 -0
  2. package/.turbo/turbo-build.log +173 -0
  3. package/CHANGELOG.md +436 -0
  4. package/LICENSE +21 -0
  5. package/README.md +139 -0
  6. package/dist/crm-pipeline.feature.d.ts +12 -0
  7. package/dist/crm-pipeline.feature.d.ts.map +1 -0
  8. package/dist/crm-pipeline.feature.js +166 -0
  9. package/dist/crm-pipeline.feature.js.map +1 -0
  10. package/dist/deal/deal.enum.d.ts +14 -0
  11. package/dist/deal/deal.enum.d.ts.map +1 -0
  12. package/dist/deal/deal.enum.js +25 -0
  13. package/dist/deal/deal.enum.js.map +1 -0
  14. package/dist/deal/deal.operation.d.ts +513 -0
  15. package/dist/deal/deal.operation.d.ts.map +1 -0
  16. package/dist/deal/deal.operation.js +270 -0
  17. package/dist/deal/deal.operation.js.map +1 -0
  18. package/dist/deal/deal.schema.d.ts +300 -0
  19. package/dist/deal/deal.schema.d.ts.map +1 -0
  20. package/dist/deal/deal.schema.js +286 -0
  21. package/dist/deal/deal.schema.js.map +1 -0
  22. package/dist/deal/deal.test-spec.d.ts +8 -0
  23. package/dist/deal/deal.test-spec.d.ts.map +1 -0
  24. package/dist/deal/deal.test-spec.js +65 -0
  25. package/dist/deal/deal.test-spec.js.map +1 -0
  26. package/dist/deal/index.d.ts +4 -0
  27. package/dist/deal/index.js +5 -0
  28. package/dist/docs/crm-pipeline.docblock.d.ts +1 -0
  29. package/dist/docs/crm-pipeline.docblock.js +100 -0
  30. package/dist/docs/crm-pipeline.docblock.js.map +1 -0
  31. package/dist/docs/index.d.ts +1 -0
  32. package/dist/docs/index.js +1 -0
  33. package/dist/entities/company.entity.d.ts +40 -0
  34. package/dist/entities/company.entity.d.ts.map +1 -0
  35. package/dist/entities/company.entity.js +63 -0
  36. package/dist/entities/company.entity.js.map +1 -0
  37. package/dist/entities/contact.entity.d.ts +44 -0
  38. package/dist/entities/contact.entity.d.ts.map +1 -0
  39. package/dist/entities/contact.entity.js +78 -0
  40. package/dist/entities/contact.entity.js.map +1 -0
  41. package/dist/entities/deal.entity.d.ts +73 -0
  42. package/dist/entities/deal.entity.d.ts.map +1 -0
  43. package/dist/entities/deal.entity.js +120 -0
  44. package/dist/entities/deal.entity.js.map +1 -0
  45. package/dist/entities/index.d.ts +15 -0
  46. package/dist/entities/index.d.ts.map +1 -0
  47. package/dist/entities/index.js +33 -0
  48. package/dist/entities/index.js.map +1 -0
  49. package/dist/entities/task.entity.d.ts +65 -0
  50. package/dist/entities/task.entity.d.ts.map +1 -0
  51. package/dist/entities/task.entity.js +129 -0
  52. package/dist/entities/task.entity.js.map +1 -0
  53. package/dist/events/contact.event.d.ts +29 -0
  54. package/dist/events/contact.event.d.ts.map +1 -0
  55. package/dist/events/contact.event.js +45 -0
  56. package/dist/events/contact.event.js.map +1 -0
  57. package/dist/events/deal.event.d.ts +111 -0
  58. package/dist/events/deal.event.d.ts.map +1 -0
  59. package/dist/events/deal.event.js +172 -0
  60. package/dist/events/deal.event.js.map +1 -0
  61. package/dist/events/index.d.ts +4 -0
  62. package/dist/events/index.js +5 -0
  63. package/dist/events/task.event.d.ts +29 -0
  64. package/dist/events/task.event.d.ts.map +1 -0
  65. package/dist/events/task.event.js +45 -0
  66. package/dist/events/task.event.js.map +1 -0
  67. package/dist/example.d.ts +7 -0
  68. package/dist/example.d.ts.map +1 -0
  69. package/dist/example.js +53 -0
  70. package/dist/example.js.map +1 -0
  71. package/dist/handlers/crm.handlers.d.ts +89 -0
  72. package/dist/handlers/crm.handlers.d.ts.map +1 -0
  73. package/dist/handlers/crm.handlers.js +172 -0
  74. package/dist/handlers/crm.handlers.js.map +1 -0
  75. package/dist/handlers/deal.handlers.d.ts +94 -0
  76. package/dist/handlers/deal.handlers.d.ts.map +1 -0
  77. package/dist/handlers/deal.handlers.js +120 -0
  78. package/dist/handlers/deal.handlers.js.map +1 -0
  79. package/dist/handlers/index.d.ts +4 -0
  80. package/dist/handlers/index.js +5 -0
  81. package/dist/handlers/mock-data.d.ts +49 -0
  82. package/dist/handlers/mock-data.d.ts.map +1 -0
  83. package/dist/handlers/mock-data.js +188 -0
  84. package/dist/handlers/mock-data.js.map +1 -0
  85. package/dist/index.d.ts +47 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +56 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/operations/index.d.ts +5 -0
  90. package/dist/operations/index.js +6 -0
  91. package/dist/presentations/dashboard.presentation.d.ts +14 -0
  92. package/dist/presentations/dashboard.presentation.d.ts.map +1 -0
  93. package/dist/presentations/dashboard.presentation.js +62 -0
  94. package/dist/presentations/dashboard.presentation.js.map +1 -0
  95. package/dist/presentations/index.d.ts +3 -0
  96. package/dist/presentations/index.js +4 -0
  97. package/dist/presentations/pipeline.presentation.d.ts +22 -0
  98. package/dist/presentations/pipeline.presentation.d.ts.map +1 -0
  99. package/dist/presentations/pipeline.presentation.js +122 -0
  100. package/dist/presentations/pipeline.presentation.js.map +1 -0
  101. package/dist/seeders/index.d.ts +10 -0
  102. package/dist/seeders/index.d.ts.map +1 -0
  103. package/dist/seeders/index.js +47 -0
  104. package/dist/seeders/index.js.map +1 -0
  105. package/dist/shared/overlay-types.d.ts +34 -0
  106. package/dist/shared/overlay-types.d.ts.map +1 -0
  107. package/dist/shared/overlay-types.js +0 -0
  108. package/dist/ui/CrmDashboard.d.ts +7 -0
  109. package/dist/ui/CrmDashboard.d.ts.map +1 -0
  110. package/dist/ui/CrmDashboard.js +304 -0
  111. package/dist/ui/CrmDashboard.js.map +1 -0
  112. package/dist/ui/CrmDealCard.d.ts +15 -0
  113. package/dist/ui/CrmDealCard.d.ts.map +1 -0
  114. package/dist/ui/CrmDealCard.js +49 -0
  115. package/dist/ui/CrmDealCard.js.map +1 -0
  116. package/dist/ui/CrmPipelineBoard.d.ts +23 -0
  117. package/dist/ui/CrmPipelineBoard.d.ts.map +1 -0
  118. package/dist/ui/CrmPipelineBoard.js +98 -0
  119. package/dist/ui/CrmPipelineBoard.js.map +1 -0
  120. package/dist/ui/hooks/index.d.ts +3 -0
  121. package/dist/ui/hooks/index.js +6 -0
  122. package/dist/ui/hooks/useDealList.d.ts +35 -0
  123. package/dist/ui/hooks/useDealList.d.ts.map +1 -0
  124. package/dist/ui/hooks/useDealList.js +94 -0
  125. package/dist/ui/hooks/useDealList.js.map +1 -0
  126. package/dist/ui/hooks/useDealMutations.d.ts +26 -0
  127. package/dist/ui/hooks/useDealMutations.d.ts.map +1 -0
  128. package/dist/ui/hooks/useDealMutations.js +159 -0
  129. package/dist/ui/hooks/useDealMutations.js.map +1 -0
  130. package/dist/ui/index.d.ts +14 -0
  131. package/dist/ui/index.js +15 -0
  132. package/dist/ui/modals/CreateDealModal.d.ts +33 -0
  133. package/dist/ui/modals/CreateDealModal.d.ts.map +1 -0
  134. package/dist/ui/modals/CreateDealModal.js +183 -0
  135. package/dist/ui/modals/CreateDealModal.js.map +1 -0
  136. package/dist/ui/modals/DealActionsModal.d.ts +51 -0
  137. package/dist/ui/modals/DealActionsModal.d.ts.map +1 -0
  138. package/dist/ui/modals/DealActionsModal.js +372 -0
  139. package/dist/ui/modals/DealActionsModal.js.map +1 -0
  140. package/dist/ui/modals/index.d.ts +3 -0
  141. package/dist/ui/modals/index.js +4 -0
  142. package/dist/ui/overlays/demo-overlays.d.ts +19 -0
  143. package/dist/ui/overlays/demo-overlays.d.ts.map +1 -0
  144. package/dist/ui/overlays/demo-overlays.js +68 -0
  145. package/dist/ui/overlays/demo-overlays.js.map +1 -0
  146. package/dist/ui/overlays/index.d.ts +2 -0
  147. package/dist/ui/overlays/index.js +3 -0
  148. package/dist/ui/renderers/index.d.ts +3 -0
  149. package/dist/ui/renderers/index.js +4 -0
  150. package/dist/ui/renderers/pipeline.markdown.d.ts +23 -0
  151. package/dist/ui/renderers/pipeline.markdown.d.ts.map +1 -0
  152. package/dist/ui/renderers/pipeline.markdown.js +118 -0
  153. package/dist/ui/renderers/pipeline.markdown.js.map +1 -0
  154. package/dist/ui/renderers/pipeline.renderer.d.ts +9 -0
  155. package/dist/ui/renderers/pipeline.renderer.d.ts.map +1 -0
  156. package/dist/ui/renderers/pipeline.renderer.js +28 -0
  157. package/dist/ui/renderers/pipeline.renderer.js.map +1 -0
  158. package/example.ts +1 -0
  159. package/package.json +127 -0
  160. package/src/crm-pipeline.feature.ts +100 -0
  161. package/src/deal/deal.enum.ts +21 -0
  162. package/src/deal/deal.operation.ts +291 -0
  163. package/src/deal/deal.schema.ts +154 -0
  164. package/src/deal/deal.test-spec.ts +55 -0
  165. package/src/deal/index.ts +26 -0
  166. package/src/docs/crm-pipeline.docblock.ts +98 -0
  167. package/src/docs/index.ts +1 -0
  168. package/src/entities/company.entity.ts +77 -0
  169. package/src/entities/contact.entity.ts +93 -0
  170. package/src/entities/deal.entity.ts +160 -0
  171. package/src/entities/index.ts +45 -0
  172. package/src/entities/task.entity.ts +137 -0
  173. package/src/events/contact.event.ts +31 -0
  174. package/src/events/deal.event.ts +104 -0
  175. package/src/events/index.ts +3 -0
  176. package/src/events/task.event.ts +28 -0
  177. package/src/example.ts +38 -0
  178. package/src/handlers/crm.handlers.ts +415 -0
  179. package/src/handlers/deal.handlers.ts +253 -0
  180. package/src/handlers/index.ts +30 -0
  181. package/src/handlers/mock-data.ts +198 -0
  182. package/src/index.ts +32 -0
  183. package/src/operations/index.ts +20 -0
  184. package/src/presentations/dashboard.presentation.ts +59 -0
  185. package/src/presentations/index.ts +2 -0
  186. package/src/presentations/pipeline.presentation.ts +117 -0
  187. package/src/seeders/index.ts +35 -0
  188. package/src/shared/overlay-types.ts +39 -0
  189. package/src/ui/CrmDashboard.tsx +311 -0
  190. package/src/ui/CrmDealCard.tsx +83 -0
  191. package/src/ui/CrmPipelineBoard.tsx +136 -0
  192. package/src/ui/hooks/index.ts +10 -0
  193. package/src/ui/hooks/useDealList.ts +113 -0
  194. package/src/ui/hooks/useDealMutations.ts +174 -0
  195. package/src/ui/index.ts +18 -0
  196. package/src/ui/modals/CreateDealModal.tsx +239 -0
  197. package/src/ui/modals/DealActionsModal.tsx +424 -0
  198. package/src/ui/modals/index.ts +2 -0
  199. package/src/ui/overlays/demo-overlays.ts +68 -0
  200. package/src/ui/overlays/index.ts +1 -0
  201. package/src/ui/renderers/index.ts +6 -0
  202. package/src/ui/renderers/pipeline.markdown.ts +198 -0
  203. package/src/ui/renderers/pipeline.renderer.tsx +35 -0
  204. package/tsconfig.json +10 -0
  205. package/tsconfig.tsbuildinfo +1 -0
  206. package/tsdown.config.js +7 -0
@@ -0,0 +1,188 @@
1
+ //#region src/handlers/mock-data.ts
2
+ const MOCK_STAGES = [
3
+ {
4
+ id: "stage-1",
5
+ name: "Lead",
6
+ position: 1,
7
+ pipelineId: "pipeline-1"
8
+ },
9
+ {
10
+ id: "stage-2",
11
+ name: "Qualified",
12
+ position: 2,
13
+ pipelineId: "pipeline-1"
14
+ },
15
+ {
16
+ id: "stage-3",
17
+ name: "Proposal",
18
+ position: 3,
19
+ pipelineId: "pipeline-1"
20
+ },
21
+ {
22
+ id: "stage-4",
23
+ name: "Negotiation",
24
+ position: 4,
25
+ pipelineId: "pipeline-1"
26
+ },
27
+ {
28
+ id: "stage-5",
29
+ name: "Closed",
30
+ position: 5,
31
+ pipelineId: "pipeline-1"
32
+ }
33
+ ];
34
+ const MOCK_DEALS = [
35
+ {
36
+ id: "deal-1",
37
+ name: "Enterprise License - Acme Corp",
38
+ value: 75e3,
39
+ currency: "USD",
40
+ pipelineId: "pipeline-1",
41
+ stageId: "stage-3",
42
+ status: "OPEN",
43
+ contactId: "contact-1",
44
+ companyId: "company-1",
45
+ ownerId: "user-1",
46
+ expectedCloseDate: /* @__PURE__ */ new Date("2024-05-15T00:00:00Z"),
47
+ createdAt: /* @__PURE__ */ new Date("2024-02-01T10:00:00Z"),
48
+ updatedAt: /* @__PURE__ */ new Date("2024-04-10T14:30:00Z")
49
+ },
50
+ {
51
+ id: "deal-2",
52
+ name: "Startup Plan - TechStart Inc",
53
+ value: 12e3,
54
+ currency: "USD",
55
+ pipelineId: "pipeline-1",
56
+ stageId: "stage-2",
57
+ status: "OPEN",
58
+ contactId: "contact-2",
59
+ companyId: "company-2",
60
+ ownerId: "user-2",
61
+ expectedCloseDate: /* @__PURE__ */ new Date("2024-04-30T00:00:00Z"),
62
+ createdAt: /* @__PURE__ */ new Date("2024-03-15T09:00:00Z"),
63
+ updatedAt: /* @__PURE__ */ new Date("2024-04-08T11:15:00Z")
64
+ },
65
+ {
66
+ id: "deal-3",
67
+ name: "Professional Services - Global Ltd",
68
+ value: 45e3,
69
+ currency: "USD",
70
+ pipelineId: "pipeline-1",
71
+ stageId: "stage-4",
72
+ status: "OPEN",
73
+ contactId: "contact-3",
74
+ companyId: "company-3",
75
+ ownerId: "user-1",
76
+ expectedCloseDate: /* @__PURE__ */ new Date("2024-04-20T00:00:00Z"),
77
+ createdAt: /* @__PURE__ */ new Date("2024-01-20T08:00:00Z"),
78
+ updatedAt: /* @__PURE__ */ new Date("2024-04-12T16:45:00Z")
79
+ },
80
+ {
81
+ id: "deal-4",
82
+ name: "Annual Contract - SmallBiz Co",
83
+ value: 8500,
84
+ currency: "USD",
85
+ pipelineId: "pipeline-1",
86
+ stageId: "stage-1",
87
+ status: "OPEN",
88
+ contactId: "contact-4",
89
+ companyId: "company-4",
90
+ ownerId: "user-3",
91
+ createdAt: /* @__PURE__ */ new Date("2024-04-05T12:00:00Z"),
92
+ updatedAt: /* @__PURE__ */ new Date("2024-04-05T12:00:00Z")
93
+ },
94
+ {
95
+ id: "deal-5",
96
+ name: "Custom Integration - MegaCorp",
97
+ value: 125e3,
98
+ currency: "USD",
99
+ pipelineId: "pipeline-1",
100
+ stageId: "stage-5",
101
+ status: "WON",
102
+ contactId: "contact-5",
103
+ companyId: "company-5",
104
+ ownerId: "user-1",
105
+ expectedCloseDate: /* @__PURE__ */ new Date("2024-03-31T00:00:00Z"),
106
+ createdAt: /* @__PURE__ */ new Date("2023-11-10T10:00:00Z"),
107
+ updatedAt: /* @__PURE__ */ new Date("2024-03-28T09:00:00Z")
108
+ },
109
+ {
110
+ id: "deal-6",
111
+ name: "Pilot Project - NewCo",
112
+ value: 5e3,
113
+ currency: "USD",
114
+ pipelineId: "pipeline-1",
115
+ stageId: "stage-2",
116
+ status: "LOST",
117
+ contactId: "contact-6",
118
+ companyId: "company-6",
119
+ ownerId: "user-2",
120
+ createdAt: /* @__PURE__ */ new Date("2024-01-15T14:00:00Z"),
121
+ updatedAt: /* @__PURE__ */ new Date("2024-02-28T10:30:00Z")
122
+ }
123
+ ];
124
+ const MOCK_COMPANIES = [
125
+ {
126
+ id: "company-1",
127
+ name: "Acme Corporation",
128
+ domain: "acme.com",
129
+ industry: "Technology",
130
+ size: "1000-5000",
131
+ website: "https://acme.com",
132
+ createdAt: /* @__PURE__ */ new Date("2024-01-01T00:00:00Z")
133
+ },
134
+ {
135
+ id: "company-2",
136
+ name: "TechStart Inc",
137
+ domain: "techstart.io",
138
+ industry: "Software",
139
+ size: "10-50",
140
+ website: "https://techstart.io",
141
+ createdAt: /* @__PURE__ */ new Date("2024-02-15T00:00:00Z")
142
+ },
143
+ {
144
+ id: "company-3",
145
+ name: "Global Ltd",
146
+ domain: "global.com",
147
+ industry: "Consulting",
148
+ size: "500-1000",
149
+ website: "https://global.com",
150
+ createdAt: /* @__PURE__ */ new Date("2023-12-01T00:00:00Z")
151
+ }
152
+ ];
153
+ const MOCK_CONTACTS = [
154
+ {
155
+ id: "contact-1",
156
+ firstName: "John",
157
+ lastName: "Smith",
158
+ email: "john.smith@acme.com",
159
+ phone: "+1-555-0101",
160
+ title: "VP of Engineering",
161
+ companyId: "company-1",
162
+ createdAt: /* @__PURE__ */ new Date("2024-01-05T00:00:00Z")
163
+ },
164
+ {
165
+ id: "contact-2",
166
+ firstName: "Sarah",
167
+ lastName: "Johnson",
168
+ email: "sarah@techstart.io",
169
+ phone: "+1-555-0102",
170
+ title: "CEO",
171
+ companyId: "company-2",
172
+ createdAt: /* @__PURE__ */ new Date("2024-02-20T00:00:00Z")
173
+ },
174
+ {
175
+ id: "contact-3",
176
+ firstName: "Michael",
177
+ lastName: "Brown",
178
+ email: "michael.brown@global.com",
179
+ phone: "+1-555-0103",
180
+ title: "CTO",
181
+ companyId: "company-3",
182
+ createdAt: /* @__PURE__ */ new Date("2023-12-10T00:00:00Z")
183
+ }
184
+ ];
185
+
186
+ //#endregion
187
+ export { MOCK_COMPANIES, MOCK_CONTACTS, MOCK_DEALS, MOCK_STAGES };
188
+ //# sourceMappingURL=mock-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-data.js","names":[],"sources":["../../src/handlers/mock-data.ts"],"sourcesContent":["/**\n * Mock data for crm-pipeline handlers\n */\n\n// ============ Types for Mock Data ============\n\nexport interface MockDeal {\n id: string;\n name: string;\n value: number;\n currency: string;\n pipelineId: string;\n stageId: string;\n status: 'OPEN' | 'WON' | 'LOST' | 'STALE';\n contactId?: string;\n companyId?: string;\n ownerId: string;\n expectedCloseDate?: Date;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface MockStage {\n id: string;\n name: string;\n position: number;\n pipelineId: string;\n}\n\n// ============ Pipeline Stages Mock Data ============\n\nexport const MOCK_STAGES: MockStage[] = [\n { id: 'stage-1', name: 'Lead', position: 1, pipelineId: 'pipeline-1' },\n { id: 'stage-2', name: 'Qualified', position: 2, pipelineId: 'pipeline-1' },\n { id: 'stage-3', name: 'Proposal', position: 3, pipelineId: 'pipeline-1' },\n { id: 'stage-4', name: 'Negotiation', position: 4, pipelineId: 'pipeline-1' },\n { id: 'stage-5', name: 'Closed', position: 5, pipelineId: 'pipeline-1' },\n];\n\n// ============ Deal Mock Data ============\n\nexport const MOCK_DEALS: MockDeal[] = [\n {\n id: 'deal-1',\n name: 'Enterprise License - Acme Corp',\n value: 75000,\n currency: 'USD',\n pipelineId: 'pipeline-1',\n stageId: 'stage-3',\n status: 'OPEN',\n contactId: 'contact-1',\n companyId: 'company-1',\n ownerId: 'user-1',\n expectedCloseDate: new Date('2024-05-15T00:00:00Z'),\n createdAt: new Date('2024-02-01T10:00:00Z'),\n updatedAt: new Date('2024-04-10T14:30:00Z'),\n },\n {\n id: 'deal-2',\n name: 'Startup Plan - TechStart Inc',\n value: 12000,\n currency: 'USD',\n pipelineId: 'pipeline-1',\n stageId: 'stage-2',\n status: 'OPEN',\n contactId: 'contact-2',\n companyId: 'company-2',\n ownerId: 'user-2',\n expectedCloseDate: new Date('2024-04-30T00:00:00Z'),\n createdAt: new Date('2024-03-15T09:00:00Z'),\n updatedAt: new Date('2024-04-08T11:15:00Z'),\n },\n {\n id: 'deal-3',\n name: 'Professional Services - Global Ltd',\n value: 45000,\n currency: 'USD',\n pipelineId: 'pipeline-1',\n stageId: 'stage-4',\n status: 'OPEN',\n contactId: 'contact-3',\n companyId: 'company-3',\n ownerId: 'user-1',\n expectedCloseDate: new Date('2024-04-20T00:00:00Z'),\n createdAt: new Date('2024-01-20T08:00:00Z'),\n updatedAt: new Date('2024-04-12T16:45:00Z'),\n },\n {\n id: 'deal-4',\n name: 'Annual Contract - SmallBiz Co',\n value: 8500,\n currency: 'USD',\n pipelineId: 'pipeline-1',\n stageId: 'stage-1',\n status: 'OPEN',\n contactId: 'contact-4',\n companyId: 'company-4',\n ownerId: 'user-3',\n createdAt: new Date('2024-04-05T12:00:00Z'),\n updatedAt: new Date('2024-04-05T12:00:00Z'),\n },\n {\n id: 'deal-5',\n name: 'Custom Integration - MegaCorp',\n value: 125000,\n currency: 'USD',\n pipelineId: 'pipeline-1',\n stageId: 'stage-5',\n status: 'WON',\n contactId: 'contact-5',\n companyId: 'company-5',\n ownerId: 'user-1',\n expectedCloseDate: new Date('2024-03-31T00:00:00Z'),\n createdAt: new Date('2023-11-10T10:00:00Z'),\n updatedAt: new Date('2024-03-28T09:00:00Z'),\n },\n {\n id: 'deal-6',\n name: 'Pilot Project - NewCo',\n value: 5000,\n currency: 'USD',\n pipelineId: 'pipeline-1',\n stageId: 'stage-2',\n status: 'LOST',\n contactId: 'contact-6',\n companyId: 'company-6',\n ownerId: 'user-2',\n createdAt: new Date('2024-01-15T14:00:00Z'),\n updatedAt: new Date('2024-02-28T10:30:00Z'),\n },\n];\n\n// ============ Company Mock Data ============\n\nexport const MOCK_COMPANIES = [\n {\n id: 'company-1',\n name: 'Acme Corporation',\n domain: 'acme.com',\n industry: 'Technology',\n size: '1000-5000',\n website: 'https://acme.com',\n createdAt: new Date('2024-01-01T00:00:00Z'),\n },\n {\n id: 'company-2',\n name: 'TechStart Inc',\n domain: 'techstart.io',\n industry: 'Software',\n size: '10-50',\n website: 'https://techstart.io',\n createdAt: new Date('2024-02-15T00:00:00Z'),\n },\n {\n id: 'company-3',\n name: 'Global Ltd',\n domain: 'global.com',\n industry: 'Consulting',\n size: '500-1000',\n website: 'https://global.com',\n createdAt: new Date('2023-12-01T00:00:00Z'),\n },\n];\n\n// ============ Contact Mock Data ============\n\nexport const MOCK_CONTACTS = [\n {\n id: 'contact-1',\n firstName: 'John',\n lastName: 'Smith',\n email: 'john.smith@acme.com',\n phone: '+1-555-0101',\n title: 'VP of Engineering',\n companyId: 'company-1',\n createdAt: new Date('2024-01-05T00:00:00Z'),\n },\n {\n id: 'contact-2',\n firstName: 'Sarah',\n lastName: 'Johnson',\n email: 'sarah@techstart.io',\n phone: '+1-555-0102',\n title: 'CEO',\n companyId: 'company-2',\n createdAt: new Date('2024-02-20T00:00:00Z'),\n },\n {\n id: 'contact-3',\n firstName: 'Michael',\n lastName: 'Brown',\n email: 'michael.brown@global.com',\n phone: '+1-555-0103',\n title: 'CTO',\n companyId: 'company-3',\n createdAt: new Date('2023-12-10T00:00:00Z'),\n },\n];\n"],"mappings":";AA+BA,MAAa,cAA2B;CACtC;EAAE,IAAI;EAAW,MAAM;EAAQ,UAAU;EAAG,YAAY;EAAc;CACtE;EAAE,IAAI;EAAW,MAAM;EAAa,UAAU;EAAG,YAAY;EAAc;CAC3E;EAAE,IAAI;EAAW,MAAM;EAAY,UAAU;EAAG,YAAY;EAAc;CAC1E;EAAE,IAAI;EAAW,MAAM;EAAe,UAAU;EAAG,YAAY;EAAc;CAC7E;EAAE,IAAI;EAAW,MAAM;EAAU,UAAU;EAAG,YAAY;EAAc;CACzE;AAID,MAAa,aAAyB;CACpC;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,UAAU;EACV,YAAY;EACZ,SAAS;EACT,QAAQ;EACR,WAAW;EACX,WAAW;EACX,SAAS;EACT,mCAAmB,IAAI,KAAK,uBAAuB;EACnD,2BAAW,IAAI,KAAK,uBAAuB;EAC3C,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACD;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,UAAU;EACV,YAAY;EACZ,SAAS;EACT,QAAQ;EACR,WAAW;EACX,WAAW;EACX,SAAS;EACT,mCAAmB,IAAI,KAAK,uBAAuB;EACnD,2BAAW,IAAI,KAAK,uBAAuB;EAC3C,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACD;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,UAAU;EACV,YAAY;EACZ,SAAS;EACT,QAAQ;EACR,WAAW;EACX,WAAW;EACX,SAAS;EACT,mCAAmB,IAAI,KAAK,uBAAuB;EACnD,2BAAW,IAAI,KAAK,uBAAuB;EAC3C,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACD;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,UAAU;EACV,YAAY;EACZ,SAAS;EACT,QAAQ;EACR,WAAW;EACX,WAAW;EACX,SAAS;EACT,2BAAW,IAAI,KAAK,uBAAuB;EAC3C,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACD;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,UAAU;EACV,YAAY;EACZ,SAAS;EACT,QAAQ;EACR,WAAW;EACX,WAAW;EACX,SAAS;EACT,mCAAmB,IAAI,KAAK,uBAAuB;EACnD,2BAAW,IAAI,KAAK,uBAAuB;EAC3C,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACD;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,UAAU;EACV,YAAY;EACZ,SAAS;EACT,QAAQ;EACR,WAAW;EACX,WAAW;EACX,SAAS;EACT,2BAAW,IAAI,KAAK,uBAAuB;EAC3C,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACF;AAID,MAAa,iBAAiB;CAC5B;EACE,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,UAAU;EACV,MAAM;EACN,SAAS;EACT,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACD;EACE,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,UAAU;EACV,MAAM;EACN,SAAS;EACT,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACD;EACE,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,UAAU;EACV,MAAM;EACN,SAAS;EACT,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACF;AAID,MAAa,gBAAgB;CAC3B;EACE,IAAI;EACJ,WAAW;EACX,UAAU;EACV,OAAO;EACP,OAAO;EACP,OAAO;EACP,WAAW;EACX,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACD;EACE,IAAI;EACJ,WAAW;EACX,UAAU;EACV,OAAO;EACP,OAAO;EACP,OAAO;EACP,WAAW;EACX,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACD;EACE,IAAI;EACJ,WAAW;EACX,UAAU;EACV,OAAO;EACP,OAAO;EACP,OAAO;EACP,WAAW;EACX,2BAAW,IAAI,KAAK,uBAAuB;EAC5C;CACF"}
@@ -0,0 +1,47 @@
1
+ import { CrmPipelineFeature } from "./crm-pipeline.feature.js";
2
+ import { DealStatusFilterEnum } from "./deal/deal.enum.js";
3
+ import { CreateDealContract, ListDealsContract, LoseDealContract, MoveDealContract, WinDealContract } from "./deal/deal.operation.js";
4
+ import { CreateDealInputModel, DealLostPayloadModel, DealModel, DealMovedPayloadModel, DealWonPayloadModel, ListDealsInputModel, ListDealsOutputModel, LoseDealInputModel, MoveDealInputModel, WinDealInputModel } from "./deal/deal.schema.js";
5
+ import { CompanyEntity, CompanySizeEnum } from "./entities/company.entity.js";
6
+ import { ContactEntity, ContactStatusEnum } from "./entities/contact.entity.js";
7
+ import { DealEntity, DealStatusEnum, PipelineEntity, StageEntity } from "./entities/deal.entity.js";
8
+ import { ActivityEntity, TaskEntity, TaskPriorityEnum, TaskStatusEnum, TaskTypeEnum } from "./entities/task.entity.js";
9
+ import { crmPipelineSchemaContribution } from "./entities/index.js";
10
+ import { ContactCreatedEvent } from "./events/contact.event.js";
11
+ import { DealCreatedEvent, DealLostEvent, DealMovedEvent, DealWonEvent } from "./events/deal.event.js";
12
+ import { TaskCompletedEvent } from "./events/task.event.js";
13
+ import "./events/index.js";
14
+ import example from "./example.js";
15
+ import { CrmHandlers, Stage, createCrmHandlers } from "./handlers/crm.handlers.js";
16
+ import { MOCK_COMPANIES, MOCK_CONTACTS, MOCK_DEALS, MOCK_STAGES, MockDeal, MockStage } from "./handlers/mock-data.js";
17
+ import { CreateDealInput, Deal, ListDealsInput, ListDealsOutput, LoseDealInput, MoveDealInput, WinDealInput, mockCreateDealHandler, mockGetDealsByStageHandler, mockGetPipelineStagesHandler, mockListDealsHandler, mockLoseDealHandler, mockMoveDealHandler, mockWinDealHandler } from "./handlers/deal.handlers.js";
18
+ import "./handlers/index.js";
19
+ import "./operations/index.js";
20
+ import { CrmDashboardPresentation, PipelineMetricsPresentation } from "./presentations/dashboard.presentation.js";
21
+ import { DealCardPresentation, DealDetailPresentation, DealListPresentation, PipelineKanbanPresentation } from "./presentations/pipeline.presentation.js";
22
+ import "./presentations/index.js";
23
+ import { CrmDashboard } from "./ui/CrmDashboard.js";
24
+ import { UseDealListOptions, useDealList } from "./ui/hooks/useDealList.js";
25
+ import { CrmPipelineBoard } from "./ui/CrmPipelineBoard.js";
26
+ import { CrmDealCard } from "./ui/CrmDealCard.js";
27
+ import { CreateDealModal } from "./ui/modals/CreateDealModal.js";
28
+ import { DealActionsModal } from "./ui/modals/DealActionsModal.js";
29
+ import { UseDealMutationsOptions, useDealMutations } from "./ui/hooks/useDealMutations.js";
30
+ import { crmPipelineReactRenderer } from "./ui/renderers/pipeline.renderer.js";
31
+ import { crmDashboardMarkdownRenderer, crmPipelineMarkdownRenderer } from "./ui/renderers/pipeline.markdown.js";
32
+ import { crmDemoOverlay, crmOverlays, crmSalesRepOverlay } from "./ui/overlays/demo-overlays.js";
33
+ import "./ui/index.js";
34
+ import * as _contractspec_lib_schema195 from "@contractspec/lib.schema";
35
+
36
+ //#region src/index.d.ts
37
+ /**
38
+ * Complete schema composition for CRM Pipeline.
39
+ */
40
+ declare const schemaComposition: {
41
+ modules: _contractspec_lib_schema195.ModuleSchemaContribution[];
42
+ provider: "postgresql";
43
+ outputPath: string;
44
+ };
45
+ //#endregion
46
+ export { ActivityEntity, CompanyEntity, CompanySizeEnum, ContactCreatedEvent, ContactEntity, ContactStatusEnum, CreateDealContract, CreateDealInput, CreateDealInputModel, CreateDealModal, CrmDashboard, CrmDashboardPresentation, CrmDealCard, CrmHandlers, CrmPipelineBoard, CrmPipelineFeature, Deal, DealActionsModal, DealCardPresentation, DealCreatedEvent, DealDetailPresentation, DealEntity, DealListPresentation, DealLostEvent, DealLostPayloadModel, DealModel, DealMovedEvent, DealMovedPayloadModel, DealStatusEnum, DealStatusFilterEnum, DealWonEvent, DealWonPayloadModel, ListDealsContract, ListDealsInput, ListDealsInputModel, ListDealsOutput, ListDealsOutputModel, LoseDealContract, LoseDealInput, LoseDealInputModel, MOCK_COMPANIES, MOCK_CONTACTS, MOCK_DEALS, MOCK_STAGES, MockDeal, MockStage, MoveDealContract, MoveDealInput, MoveDealInputModel, PipelineEntity, PipelineKanbanPresentation, PipelineMetricsPresentation, Stage, StageEntity, TaskCompletedEvent, TaskEntity, TaskPriorityEnum, TaskStatusEnum, TaskTypeEnum, UseDealListOptions, UseDealMutationsOptions, WinDealContract, WinDealInput, WinDealInputModel, createCrmHandlers, crmDashboardMarkdownRenderer, crmDemoOverlay, crmOverlays, crmPipelineMarkdownRenderer, crmPipelineReactRenderer, crmPipelineSchemaContribution, crmSalesRepOverlay, example, mockCreateDealHandler, mockGetDealsByStageHandler, mockGetPipelineStagesHandler, mockListDealsHandler, mockLoseDealHandler, mockMoveDealHandler, mockWinDealHandler, schemaComposition, useDealList, useDealMutations };
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsBa;WASZ,2BAAA,CAAA,wBAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,56 @@
1
+ import { CrmPipelineFeature } from "./crm-pipeline.feature.js";
2
+ import example_default from "./example.js";
3
+ import { CompanyEntity, CompanySizeEnum } from "./entities/company.entity.js";
4
+ import { ContactEntity, ContactStatusEnum } from "./entities/contact.entity.js";
5
+ import { DealEntity, DealStatusEnum, PipelineEntity, StageEntity } from "./entities/deal.entity.js";
6
+ import { ActivityEntity, TaskEntity, TaskPriorityEnum, TaskStatusEnum, TaskTypeEnum } from "./entities/task.entity.js";
7
+ import { crmPipelineSchemaContribution } from "./entities/index.js";
8
+ import { DealStatusFilterEnum } from "./deal/deal.enum.js";
9
+ import { CreateDealInputModel, DealLostPayloadModel, DealModel, DealMovedPayloadModel, DealWonPayloadModel, ListDealsInputModel, ListDealsOutputModel, LoseDealInputModel, MoveDealInputModel, WinDealInputModel } from "./deal/deal.schema.js";
10
+ import { CreateDealContract, ListDealsContract, LoseDealContract, MoveDealContract, WinDealContract } from "./deal/deal.operation.js";
11
+ import "./operations/index.js";
12
+ import { ContactCreatedEvent } from "./events/contact.event.js";
13
+ import { DealCreatedEvent, DealLostEvent, DealMovedEvent, DealWonEvent } from "./events/deal.event.js";
14
+ import { TaskCompletedEvent } from "./events/task.event.js";
15
+ import "./events/index.js";
16
+ import { MOCK_COMPANIES, MOCK_CONTACTS, MOCK_DEALS, MOCK_STAGES } from "./handlers/mock-data.js";
17
+ import { mockCreateDealHandler, mockGetDealsByStageHandler, mockGetPipelineStagesHandler, mockListDealsHandler, mockLoseDealHandler, mockMoveDealHandler, mockWinDealHandler } from "./handlers/deal.handlers.js";
18
+ import { createCrmHandlers } from "./handlers/crm.handlers.js";
19
+ import "./handlers/index.js";
20
+ import { CrmDashboardPresentation, PipelineMetricsPresentation } from "./presentations/dashboard.presentation.js";
21
+ import { DealCardPresentation, DealDetailPresentation, DealListPresentation, PipelineKanbanPresentation } from "./presentations/pipeline.presentation.js";
22
+ import "./presentations/index.js";
23
+ import { useDealList } from "./ui/hooks/useDealList.js";
24
+ import { useDealMutations } from "./ui/hooks/useDealMutations.js";
25
+ import { CrmDealCard } from "./ui/CrmDealCard.js";
26
+ import { CrmPipelineBoard } from "./ui/CrmPipelineBoard.js";
27
+ import { CreateDealModal } from "./ui/modals/CreateDealModal.js";
28
+ import { DealActionsModal } from "./ui/modals/DealActionsModal.js";
29
+ import { CrmDashboard } from "./ui/CrmDashboard.js";
30
+ import { crmPipelineReactRenderer } from "./ui/renderers/pipeline.renderer.js";
31
+ import { crmDashboardMarkdownRenderer, crmPipelineMarkdownRenderer } from "./ui/renderers/pipeline.markdown.js";
32
+ import { crmDemoOverlay, crmOverlays, crmSalesRepOverlay } from "./ui/overlays/demo-overlays.js";
33
+ import "./ui/index.js";
34
+ import "./docs/index.js";
35
+ import { identityRbacSchemaContribution } from "@contractspec/lib.identity-rbac";
36
+ import { auditTrailSchemaContribution } from "@contractspec/module.audit-trail";
37
+ import { notificationsSchemaContribution } from "@contractspec/module.notifications";
38
+
39
+ //#region src/index.ts
40
+ /**
41
+ * Complete schema composition for CRM Pipeline.
42
+ */
43
+ const schemaComposition = {
44
+ modules: [
45
+ identityRbacSchemaContribution,
46
+ auditTrailSchemaContribution,
47
+ notificationsSchemaContribution,
48
+ crmPipelineSchemaContribution
49
+ ],
50
+ provider: "postgresql",
51
+ outputPath: "./prisma/schema/generated.prisma"
52
+ };
53
+
54
+ //#endregion
55
+ export { ActivityEntity, CompanyEntity, CompanySizeEnum, ContactCreatedEvent, ContactEntity, ContactStatusEnum, CreateDealContract, CreateDealInputModel, CreateDealModal, CrmDashboard, CrmDashboardPresentation, CrmDealCard, CrmPipelineBoard, CrmPipelineFeature, DealActionsModal, DealCardPresentation, DealCreatedEvent, DealDetailPresentation, DealEntity, DealListPresentation, DealLostEvent, DealLostPayloadModel, DealModel, DealMovedEvent, DealMovedPayloadModel, DealStatusEnum, DealStatusFilterEnum, DealWonEvent, DealWonPayloadModel, ListDealsContract, ListDealsInputModel, ListDealsOutputModel, LoseDealContract, LoseDealInputModel, MOCK_COMPANIES, MOCK_CONTACTS, MOCK_DEALS, MOCK_STAGES, MoveDealContract, MoveDealInputModel, PipelineEntity, PipelineKanbanPresentation, PipelineMetricsPresentation, StageEntity, TaskCompletedEvent, TaskEntity, TaskPriorityEnum, TaskStatusEnum, TaskTypeEnum, WinDealContract, WinDealInputModel, createCrmHandlers, crmDashboardMarkdownRenderer, crmDemoOverlay, crmOverlays, crmPipelineMarkdownRenderer, crmPipelineReactRenderer, crmPipelineSchemaContribution, crmSalesRepOverlay, example_default as example, mockCreateDealHandler, mockGetDealsByStageHandler, mockGetPipelineStagesHandler, mockListDealsHandler, mockLoseDealHandler, mockMoveDealHandler, mockWinDealHandler, schemaComposition, useDealList, useDealMutations };
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["// CRM Pipeline Example\n// Demonstrates ContractSpec principles for a CRM application\n\nexport * from './entities';\nexport * from './operations';\nexport * from './events';\nexport * from './handlers';\nexport * from './presentations';\nexport * from './ui';\nexport * from './crm-pipeline.feature';\nexport { default as example } from './example';\nimport './docs';\n\n// Schema composition configuration\nimport { identityRbacSchemaContribution } from '@contractspec/lib.identity-rbac';\nimport { auditTrailSchemaContribution } from '@contractspec/module.audit-trail';\nimport { notificationsSchemaContribution } from '@contractspec/module.notifications';\nimport { crmPipelineSchemaContribution } from './entities';\n\n/**\n * Complete schema composition for CRM Pipeline.\n */\nexport const schemaComposition = {\n modules: [\n identityRbacSchemaContribution,\n auditTrailSchemaContribution,\n notificationsSchemaContribution,\n crmPipelineSchemaContribution,\n ],\n provider: 'postgresql' as const,\n outputPath: './prisma/schema/generated.prisma',\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAa,oBAAoB;CAC/B,SAAS;EACP;EACA;EACA;EACA;EACD;CACD,UAAU;CACV,YAAY;CACb"}
@@ -0,0 +1,5 @@
1
+ import { DealStatusFilterEnum } from "../deal/deal.enum.js";
2
+ import { CreateDealContract, ListDealsContract, LoseDealContract, MoveDealContract, WinDealContract } from "../deal/deal.operation.js";
3
+ import { CreateDealInputModel, DealLostPayloadModel, DealModel, DealMovedPayloadModel, DealWonPayloadModel, ListDealsInputModel, ListDealsOutputModel, LoseDealInputModel, MoveDealInputModel, WinDealInputModel } from "../deal/deal.schema.js";
4
+ import "../deal/index.js";
5
+ export { CreateDealContract, CreateDealInputModel, DealLostPayloadModel, DealModel, DealMovedPayloadModel, DealStatusFilterEnum, DealWonPayloadModel, ListDealsContract, ListDealsInputModel, ListDealsOutputModel, LoseDealContract, LoseDealInputModel, MoveDealContract, MoveDealInputModel, WinDealContract, WinDealInputModel };
@@ -0,0 +1,6 @@
1
+ import { DealStatusFilterEnum } from "../deal/deal.enum.js";
2
+ import { CreateDealInputModel, DealLostPayloadModel, DealModel, DealMovedPayloadModel, DealWonPayloadModel, ListDealsInputModel, ListDealsOutputModel, LoseDealInputModel, MoveDealInputModel, WinDealInputModel } from "../deal/deal.schema.js";
3
+ import { CreateDealContract, ListDealsContract, LoseDealContract, MoveDealContract, WinDealContract } from "../deal/deal.operation.js";
4
+ import "../deal/index.js";
5
+
6
+ export { CreateDealContract, CreateDealInputModel, DealLostPayloadModel, DealModel, DealMovedPayloadModel, DealStatusFilterEnum, DealWonPayloadModel, ListDealsContract, ListDealsInputModel, ListDealsOutputModel, LoseDealContract, LoseDealInputModel, MoveDealContract, MoveDealInputModel, WinDealContract, WinDealInputModel };
@@ -0,0 +1,14 @@
1
+ import * as _contractspec_lib_contracts13 from "@contractspec/lib.contracts";
2
+
3
+ //#region src/presentations/dashboard.presentation.d.ts
4
+ /**
5
+ * Main CRM dashboard presentation.
6
+ */
7
+ declare const CrmDashboardPresentation: _contractspec_lib_contracts13.PresentationSpec;
8
+ /**
9
+ * Pipeline metrics presentation.
10
+ */
11
+ declare const PipelineMetricsPresentation: _contractspec_lib_contracts13.PresentationSpec;
12
+ //#endregion
13
+ export { CrmDashboardPresentation, PipelineMetricsPresentation };
14
+ //# sourceMappingURL=dashboard.presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.presentation.d.ts","names":[],"sources":["../../src/presentations/dashboard.presentation.ts"],"sourcesContent":[],"mappings":";;;;;;AAQa,cAAA,wBAuBX,EAAA,6BAAA,CAvBmC,gBAuBnC;AAKF;;;cAAa,6BAsBX,6BAAA,CAtBsC"}
@@ -0,0 +1,62 @@
1
+ import { StabilityEnum, definePresentation } from "@contractspec/lib.contracts";
2
+
3
+ //#region src/presentations/dashboard.presentation.ts
4
+ /**
5
+ * CRM Dashboard Presentation Descriptor
6
+ */
7
+ /**
8
+ * Main CRM dashboard presentation.
9
+ */
10
+ const CrmDashboardPresentation = definePresentation({
11
+ meta: {
12
+ key: "crm.dashboard",
13
+ version: "1.0.0",
14
+ title: "CRM Dashboard",
15
+ description: "Main CRM dashboard with pipeline overview, deal stats, and activities",
16
+ domain: "crm-pipeline",
17
+ owners: ["@crm-team"],
18
+ tags: ["dashboard", "overview"],
19
+ stability: StabilityEnum.Experimental,
20
+ goal: "Provide a high-level overview of CRM performance and active deals.",
21
+ context: "The landing page for CRM users."
22
+ },
23
+ source: {
24
+ type: "component",
25
+ framework: "react",
26
+ componentKey: "CrmDashboard"
27
+ },
28
+ targets: ["react", "markdown"],
29
+ policy: { flags: ["crm.enabled"] }
30
+ });
31
+ /**
32
+ * Pipeline metrics presentation.
33
+ */
34
+ const PipelineMetricsPresentation = definePresentation({
35
+ meta: {
36
+ key: "crm.pipeline.metrics",
37
+ version: "1.0.0",
38
+ title: "Pipeline Metrics",
39
+ description: "Pipeline metrics and forecasting view",
40
+ domain: "crm-pipeline",
41
+ owners: ["@crm-team"],
42
+ tags: [
43
+ "pipeline",
44
+ "metrics",
45
+ "forecast"
46
+ ],
47
+ stability: StabilityEnum.Experimental,
48
+ goal: "Track pipeline health and sales forecasts.",
49
+ context: "Data-intensive widget for sales managers."
50
+ },
51
+ source: {
52
+ type: "component",
53
+ framework: "react",
54
+ componentKey: "PipelineMetricsView"
55
+ },
56
+ targets: ["react", "markdown"],
57
+ policy: { flags: ["crm.metrics.enabled"] }
58
+ });
59
+
60
+ //#endregion
61
+ export { CrmDashboardPresentation, PipelineMetricsPresentation };
62
+ //# sourceMappingURL=dashboard.presentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.presentation.js","names":[],"sources":["../../src/presentations/dashboard.presentation.ts"],"sourcesContent":["/**\n * CRM Dashboard Presentation Descriptor\n */\nimport { definePresentation, StabilityEnum } from '@contractspec/lib.contracts';\n\n/**\n * Main CRM dashboard presentation.\n */\nexport const CrmDashboardPresentation = definePresentation({\n meta: {\n key: 'crm.dashboard',\n version: '1.0.0',\n title: 'CRM Dashboard',\n description:\n 'Main CRM dashboard with pipeline overview, deal stats, and activities',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['dashboard', 'overview'],\n stability: StabilityEnum.Experimental,\n goal: 'Provide a high-level overview of CRM performance and active deals.',\n context: 'The landing page for CRM users.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'CrmDashboard',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.enabled'],\n },\n});\n\n/**\n * Pipeline metrics presentation.\n */\nexport const PipelineMetricsPresentation = definePresentation({\n meta: {\n key: 'crm.pipeline.metrics',\n version: '1.0.0',\n title: 'Pipeline Metrics',\n description: 'Pipeline metrics and forecasting view',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['pipeline', 'metrics', 'forecast'],\n stability: StabilityEnum.Experimental,\n goal: 'Track pipeline health and sales forecasts.',\n context: 'Data-intensive widget for sales managers.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'PipelineMetricsView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.metrics.enabled'],\n },\n});\n"],"mappings":";;;;;;;;;AAQA,MAAa,2BAA2B,mBAAmB;CACzD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,aAAa,WAAW;EAC/B,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,cAAc,EACvB;CACF,CAAC;;;;AAKF,MAAa,8BAA8B,mBAAmB;CAC5D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAY;GAAW;GAAW;EACzC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,sBAAsB,EAC/B;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { CrmDashboardPresentation, PipelineMetricsPresentation } from "./dashboard.presentation.js";
2
+ import { DealCardPresentation, DealDetailPresentation, DealListPresentation, PipelineKanbanPresentation } from "./pipeline.presentation.js";
3
+ export { CrmDashboardPresentation, DealCardPresentation, DealDetailPresentation, DealListPresentation, PipelineKanbanPresentation, PipelineMetricsPresentation };
@@ -0,0 +1,4 @@
1
+ import { CrmDashboardPresentation, PipelineMetricsPresentation } from "./dashboard.presentation.js";
2
+ import { DealCardPresentation, DealDetailPresentation, DealListPresentation, PipelineKanbanPresentation } from "./pipeline.presentation.js";
3
+
4
+ export { CrmDashboardPresentation, DealCardPresentation, DealDetailPresentation, DealListPresentation, PipelineKanbanPresentation, PipelineMetricsPresentation };
@@ -0,0 +1,22 @@
1
+ import * as _contractspec_lib_contracts15 from "@contractspec/lib.contracts";
2
+
3
+ //#region src/presentations/pipeline.presentation.d.ts
4
+ /**
5
+ * Kanban board presentation for the sales pipeline.
6
+ */
7
+ declare const PipelineKanbanPresentation: _contractspec_lib_contracts15.PresentationSpec;
8
+ /**
9
+ * List view of deals with filtering.
10
+ */
11
+ declare const DealListPresentation: _contractspec_lib_contracts15.PresentationSpec;
12
+ /**
13
+ * Deal detail presentation.
14
+ */
15
+ declare const DealDetailPresentation: _contractspec_lib_contracts15.PresentationSpec;
16
+ /**
17
+ * Deal card for kanban board.
18
+ */
19
+ declare const DealCardPresentation: _contractspec_lib_contracts15.PresentationSpec;
20
+ //#endregion
21
+ export { DealCardPresentation, DealDetailPresentation, DealListPresentation, PipelineKanbanPresentation };
22
+ //# sourceMappingURL=pipeline.presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.presentation.d.ts","names":[],"sources":["../../src/presentations/pipeline.presentation.ts"],"sourcesContent":[],"mappings":";;;;;;AASa,cAAA,0BAuBX,EAAA,6BAAA,CAvBqC,gBAuBrC;AAKF;AA4BA;AA4BA;cAxDa,sBAuBX,6BAAA,CAvB+B;;;;cA4BpB,wBAuBX,6BAAA,CAvBiC;;;;cA4BtB,sBAuBX,6BAAA,CAvB+B"}
@@ -0,0 +1,122 @@
1
+ import { DealModel } from "../deal/deal.schema.js";
2
+ import { StabilityEnum, definePresentation } from "@contractspec/lib.contracts";
3
+
4
+ //#region src/presentations/pipeline.presentation.ts
5
+ /**
6
+ * Pipeline Presentation Descriptors
7
+ */
8
+ /**
9
+ * Kanban board presentation for the sales pipeline.
10
+ */
11
+ const PipelineKanbanPresentation = definePresentation({
12
+ meta: {
13
+ key: "crm.pipeline.kanban",
14
+ version: "1.0.0",
15
+ title: "Pipeline Kanban",
16
+ description: "Kanban board view of deals organized by stage",
17
+ domain: "crm-pipeline",
18
+ owners: ["@crm-team"],
19
+ tags: [
20
+ "pipeline",
21
+ "kanban",
22
+ "deals"
23
+ ],
24
+ stability: StabilityEnum.Experimental,
25
+ goal: "Visualize the sales pipeline status and deal distribution across stages.",
26
+ context: "Used in the sales dashboard and management reports."
27
+ },
28
+ source: {
29
+ type: "component",
30
+ framework: "react",
31
+ componentKey: "PipelineKanbanView",
32
+ props: DealModel
33
+ },
34
+ targets: ["react", "markdown"],
35
+ policy: { flags: ["crm.pipeline.enabled"] }
36
+ });
37
+ /**
38
+ * List view of deals with filtering.
39
+ */
40
+ const DealListPresentation = definePresentation({
41
+ meta: {
42
+ key: "crm.deal.list",
43
+ version: "1.0.0",
44
+ title: "Deal List",
45
+ description: "List view of deals with value, status, and owner info",
46
+ domain: "crm-pipeline",
47
+ owners: ["@crm-team"],
48
+ tags: ["deal", "list"],
49
+ stability: StabilityEnum.Experimental,
50
+ goal: "Search, filter, and review deal lists.",
51
+ context: "Standard view for deal management and bulk actions."
52
+ },
53
+ source: {
54
+ type: "component",
55
+ framework: "react",
56
+ componentKey: "DealListView",
57
+ props: DealModel
58
+ },
59
+ targets: [
60
+ "react",
61
+ "markdown",
62
+ "application/json"
63
+ ],
64
+ policy: { flags: ["crm.deals.enabled"] }
65
+ });
66
+ /**
67
+ * Deal detail presentation.
68
+ */
69
+ const DealDetailPresentation = definePresentation({
70
+ meta: {
71
+ key: "crm.deal.detail",
72
+ version: "1.0.0",
73
+ title: "Deal Details",
74
+ description: "Detailed view of a deal with activities, contacts, and history",
75
+ domain: "crm-pipeline",
76
+ owners: ["@crm-team"],
77
+ tags: ["deal", "detail"],
78
+ stability: StabilityEnum.Experimental,
79
+ goal: "Deep dive into deal details and historical activities.",
80
+ context: "The main workspace for managing a single deal execution."
81
+ },
82
+ source: {
83
+ type: "component",
84
+ framework: "react",
85
+ componentKey: "DealDetailView"
86
+ },
87
+ targets: ["react", "markdown"],
88
+ policy: { flags: ["crm.deals.enabled"] }
89
+ });
90
+ /**
91
+ * Deal card for kanban board.
92
+ */
93
+ const DealCardPresentation = definePresentation({
94
+ meta: {
95
+ key: "crm.deal.card",
96
+ version: "1.0.0",
97
+ title: "Deal Card",
98
+ description: "Compact deal card for kanban board display",
99
+ domain: "crm-pipeline",
100
+ owners: ["@crm-team"],
101
+ tags: [
102
+ "deal",
103
+ "card",
104
+ "kanban"
105
+ ],
106
+ stability: StabilityEnum.Experimental,
107
+ goal: "Provide a quick overview of deal status in the pipeline view.",
108
+ context: "Condensed representation used within the Pipeline Kanban board."
109
+ },
110
+ source: {
111
+ type: "component",
112
+ framework: "react",
113
+ componentKey: "DealCard",
114
+ props: DealModel
115
+ },
116
+ targets: ["react"],
117
+ policy: { flags: ["crm.deals.enabled"] }
118
+ });
119
+
120
+ //#endregion
121
+ export { DealCardPresentation, DealDetailPresentation, DealListPresentation, PipelineKanbanPresentation };
122
+ //# sourceMappingURL=pipeline.presentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.presentation.js","names":[],"sources":["../../src/presentations/pipeline.presentation.ts"],"sourcesContent":["/**\n * Pipeline Presentation Descriptors\n */\nimport { definePresentation, StabilityEnum } from '@contractspec/lib.contracts';\nimport { DealModel } from '../deal/deal.schema';\n\n/**\n * Kanban board presentation for the sales pipeline.\n */\nexport const PipelineKanbanPresentation = definePresentation({\n meta: {\n key: 'crm.pipeline.kanban',\n version: '1.0.0',\n title: 'Pipeline Kanban',\n description: 'Kanban board view of deals organized by stage',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['pipeline', 'kanban', 'deals'],\n stability: StabilityEnum.Experimental,\n goal: 'Visualize the sales pipeline status and deal distribution across stages.',\n context: 'Used in the sales dashboard and management reports.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'PipelineKanbanView',\n props: DealModel,\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.pipeline.enabled'],\n },\n});\n\n/**\n * List view of deals with filtering.\n */\nexport const DealListPresentation = definePresentation({\n meta: {\n key: 'crm.deal.list',\n version: '1.0.0',\n title: 'Deal List',\n description: 'List view of deals with value, status, and owner info',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['deal', 'list'],\n stability: StabilityEnum.Experimental,\n goal: 'Search, filter, and review deal lists.',\n context: 'Standard view for deal management and bulk actions.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'DealListView',\n props: DealModel,\n },\n targets: ['react', 'markdown', 'application/json'],\n policy: {\n flags: ['crm.deals.enabled'],\n },\n});\n\n/**\n * Deal detail presentation.\n */\nexport const DealDetailPresentation = definePresentation({\n meta: {\n key: 'crm.deal.detail',\n version: '1.0.0',\n title: 'Deal Details',\n description:\n 'Detailed view of a deal with activities, contacts, and history',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['deal', 'detail'],\n stability: StabilityEnum.Experimental,\n goal: 'Deep dive into deal details and historical activities.',\n context: 'The main workspace for managing a single deal execution.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'DealDetailView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.deals.enabled'],\n },\n});\n\n/**\n * Deal card for kanban board.\n */\nexport const DealCardPresentation = definePresentation({\n meta: {\n key: 'crm.deal.card',\n version: '1.0.0',\n title: 'Deal Card',\n description: 'Compact deal card for kanban board display',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['deal', 'card', 'kanban'],\n stability: StabilityEnum.Experimental,\n goal: 'Provide a quick overview of deal status in the pipeline view.',\n context: 'Condensed representation used within the Pipeline Kanban board.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'DealCard',\n props: DealModel,\n },\n targets: ['react'],\n policy: {\n flags: ['crm.deals.enabled'],\n },\n});\n"],"mappings":";;;;;;;;;;AASA,MAAa,6BAA6B,mBAAmB;CAC3D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAY;GAAU;GAAQ;EACrC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,uBAAuB,EAChC;CACF,CAAC;;;;AAKF,MAAa,uBAAuB,mBAAmB;CACrD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,OAAO;EACtB,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS;EAAC;EAAS;EAAY;EAAmB;CAClD,QAAQ,EACN,OAAO,CAAC,oBAAoB,EAC7B;CACF,CAAC;;;;AAKF,MAAa,yBAAyB,mBAAmB;CACvD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,SAAS;EACxB,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,oBAAoB,EAC7B;CACF,CAAC;;;;AAKF,MAAa,uBAAuB,mBAAmB;CACrD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAQ;GAAQ;GAAS;EAChC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS,CAAC,QAAQ;CAClB,QAAQ,EACN,OAAO,CAAC,oBAAoB,EAC7B;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { DatabasePort } from "@contractspec/lib.runtime-sandbox";
2
+
3
+ //#region src/seeders/index.d.ts
4
+ declare function seedCrmPipeline(params: {
5
+ projectId: string;
6
+ db: DatabasePort;
7
+ }): Promise<void>;
8
+ //#endregion
9
+ export { seedCrmPipeline };
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/seeders/index.ts"],"sourcesContent":[],"mappings":";;;iBAEsB,eAAA;;EAAA,EAAA,EAEhB,YAFgB;IAGrB"}