@elevasis/ui 2.31.0 → 2.33.0

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 (169) hide show
  1. package/dist/{CoreAuthKitInner-KSEGSB67.js → CoreAuthKitInner-QC62UHTZ.js} +1 -1
  2. package/dist/api/index.js +3 -3
  3. package/dist/app/index.css +38 -0
  4. package/dist/app/index.d.ts +69 -9
  5. package/dist/app/index.js +7 -6
  6. package/dist/auth/context.js +1 -1
  7. package/dist/auth/index.js +1 -1
  8. package/dist/charts/index.js +5 -6
  9. package/dist/{chunk-JKSUN5GN.js → chunk-2GMF5IRF.js} +81 -746
  10. package/dist/{chunk-XQHZBA65.js → chunk-2RJMVWFJ.js} +1 -6
  11. package/dist/{chunk-CW3UNAF2.js → chunk-4DYOXEH6.js} +410 -5
  12. package/dist/{chunk-HQGF4ATG.js → chunk-52NLZN6Z.js} +118 -141
  13. package/dist/chunk-AHCKOU2M.js +13 -0
  14. package/dist/chunk-CLDCYJQT.js +1 -0
  15. package/dist/chunk-DWXDNT7P.js +145 -0
  16. package/dist/chunk-E4T2N7P7.js +124 -0
  17. package/dist/{chunk-HYNYEBHM.js → chunk-E7C4XEWH.js} +3 -3
  18. package/dist/{chunk-L3BVJWML.js → chunk-EPTHX4VZ.js} +1 -1
  19. package/dist/{chunk-QDEETKYT.js → chunk-FFPHJBJC.js} +9 -9
  20. package/dist/chunk-GNRMB6DC.js +5126 -0
  21. package/dist/{chunk-DZTG5IAC.js → chunk-I2KLQ2HA.js} +1 -7
  22. package/dist/{chunk-Q6OYNEGR.js → chunk-IUKFNASA.js} +5 -6
  23. package/dist/{chunk-QHEWXU7I.js → chunk-JFL3GRD4.js} +1 -1
  24. package/dist/{chunk-T3IPHEYJ.js → chunk-JHT5JIJ3.js} +4410 -566
  25. package/dist/{chunk-L2NVFLXU.js → chunk-MHLZ4F4N.js} +4 -4
  26. package/dist/{chunk-XQQEKWTL.js → chunk-N55DVMAG.js} +6 -2
  27. package/dist/{chunk-TOIXUWR6.js → chunk-ND5TDV2J.js} +1 -1
  28. package/dist/{chunk-5LJAEZMA.js → chunk-NOIRGGW2.js} +5 -6
  29. package/dist/{chunk-7KC4P3AU.js → chunk-QNOVUCSV.js} +2 -12
  30. package/dist/{chunk-3BAPR3KA.js → chunk-RQA2EVN3.js} +5 -15
  31. package/dist/{chunk-ND42LPY4.js → chunk-TKF5S4XP.js} +6 -6
  32. package/dist/{chunk-DWK2QIAK.js → chunk-TYRUKGGD.js} +1 -1
  33. package/dist/{chunk-Y4FWCG7Y.js → chunk-UVFOURXR.js} +8 -7
  34. package/dist/chunk-UW7IV2Y3.js +447 -0
  35. package/dist/{chunk-P55BJZZW.js → chunk-V6SZ4ECN.js} +20 -5
  36. package/dist/{chunk-6YT4IKJ7.js → chunk-VNAZTCHA.js} +15 -0
  37. package/dist/chunk-XG57WXOL.js +85 -0
  38. package/dist/{chunk-SHQXMW4F.js → chunk-XOFSMJLF.js} +46 -28
  39. package/dist/{chunk-7HMCB26R.js → chunk-XZGSCABI.js} +1 -1
  40. package/dist/chunk-YAQ25UNM.js +2126 -0
  41. package/dist/chunk-ZGTDKH3P.js +467 -0
  42. package/dist/components/chat/index.js +1 -1
  43. package/dist/components/index.css +38 -0
  44. package/dist/components/index.d.ts +262 -51
  45. package/dist/components/index.js +37 -39
  46. package/dist/components/navigation/index.css +38 -0
  47. package/dist/components/navigation/index.js +5 -3
  48. package/dist/execution/index.d.ts +11 -2
  49. package/dist/execution/index.js +1 -1
  50. package/dist/features/auth/index.css +38 -0
  51. package/dist/features/auth/index.d.ts +91 -14
  52. package/dist/features/auth/index.js +42 -10
  53. package/dist/features/clients/index.css +38 -0
  54. package/dist/features/clients/index.d.ts +1 -1
  55. package/dist/features/clients/index.js +17 -15
  56. package/dist/features/crm/index.css +38 -0
  57. package/dist/features/crm/index.d.ts +80 -18
  58. package/dist/features/crm/index.js +17 -15
  59. package/dist/features/dashboard/index.css +38 -0
  60. package/dist/features/dashboard/index.d.ts +174 -25
  61. package/dist/features/dashboard/index.js +17 -16
  62. package/dist/features/delivery/index.css +38 -0
  63. package/dist/features/delivery/index.d.ts +80 -18
  64. package/dist/features/delivery/index.js +16 -15
  65. package/dist/features/knowledge/index.css +38 -0
  66. package/dist/features/knowledge/index.d.ts +20 -18
  67. package/dist/features/knowledge/index.js +114 -609
  68. package/dist/features/lead-gen/index.css +38 -0
  69. package/dist/features/lead-gen/index.d.ts +45 -43
  70. package/dist/features/lead-gen/index.js +17 -16
  71. package/dist/features/monitoring/index.css +38 -0
  72. package/dist/features/monitoring/index.d.ts +20 -18
  73. package/dist/features/monitoring/index.js +18 -17
  74. package/dist/features/monitoring/requests/index.css +38 -0
  75. package/dist/features/monitoring/requests/index.d.ts +23 -21
  76. package/dist/features/monitoring/requests/index.js +16 -14
  77. package/dist/features/operations/index.css +38 -0
  78. package/dist/features/operations/index.d.ts +1299 -66
  79. package/dist/features/operations/index.js +22 -24
  80. package/dist/features/seo/index.d.ts +20 -18
  81. package/dist/features/seo/index.js +2 -2
  82. package/dist/features/settings/index.css +38 -0
  83. package/dist/features/settings/index.d.ts +80 -18
  84. package/dist/features/settings/index.js +17 -15
  85. package/dist/graph/index.js +1 -1
  86. package/dist/hooks/delivery/index.css +38 -0
  87. package/dist/hooks/delivery/index.d.ts +60 -0
  88. package/dist/hooks/delivery/index.js +3 -3
  89. package/dist/hooks/index.css +38 -0
  90. package/dist/hooks/index.d.ts +492 -89
  91. package/dist/hooks/index.js +15 -13
  92. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +332 -33
  93. package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +1 -1
  94. package/dist/hooks/published.css +38 -0
  95. package/dist/hooks/published.d.ts +492 -89
  96. package/dist/hooks/published.js +15 -13
  97. package/dist/index.css +38 -0
  98. package/dist/index.d.ts +1353 -1349
  99. package/dist/index.js +16 -14
  100. package/dist/initialization/index.d.ts +60 -0
  101. package/dist/initialization/index.js +1 -1
  102. package/dist/knowledge/index.d.ts +1217 -1292
  103. package/dist/knowledge/index.js +6538 -2198
  104. package/dist/knowledge-search-index-P7PR626V.js +1514 -0
  105. package/dist/layout/index.js +3 -4
  106. package/dist/organization/index.css +38 -0
  107. package/dist/organization/index.js +1 -1
  108. package/dist/profile/index.d.ts +60 -0
  109. package/dist/profile/index.js +1 -1
  110. package/dist/provider/ElevasisServiceContext.js +1 -1
  111. package/dist/provider/index.css +38 -0
  112. package/dist/provider/index.d.ts +1068 -1246
  113. package/dist/provider/index.js +12 -10
  114. package/dist/provider/published.css +38 -0
  115. package/dist/provider/published.d.ts +1065 -1243
  116. package/dist/provider/published.js +9 -7
  117. package/dist/router/context.js +1 -1
  118. package/dist/router/index.js +1 -1
  119. package/dist/sse/index.js +1 -1
  120. package/dist/supabase/index.d.ts +117 -0
  121. package/dist/supabase/index.js +1 -1
  122. package/dist/test-utils/index.d.ts +16 -9
  123. package/dist/test-utils/index.js +40 -33
  124. package/dist/test-utils/setup-integration.js +1 -1
  125. package/dist/test-utils/setup.js +1 -1
  126. package/dist/theme/index.js +3 -3
  127. package/dist/theme/presets/index.js +1 -1
  128. package/dist/typeform/index.js +1 -1
  129. package/dist/typeform/schemas.js +1 -1
  130. package/dist/types/index.d.ts +394 -35
  131. package/dist/utils/index.d.ts +174 -25
  132. package/dist/utils/index.js +2 -2
  133. package/dist/vite/index.js +1 -1
  134. package/dist/vite-plugin-knowledge/index.js +1 -1
  135. package/dist/zustand/index.js +1 -1
  136. package/package.json +10 -9
  137. package/src/README.md +29 -29
  138. package/src/api/README.md +18 -18
  139. package/src/app/README.md +24 -24
  140. package/src/auth/README.md +18 -18
  141. package/src/components/README.md +24 -24
  142. package/src/execution/README.md +16 -16
  143. package/src/features/README.md +28 -28
  144. package/src/graph/README.md +16 -16
  145. package/src/hooks/README.md +23 -23
  146. package/src/initialization/README.md +19 -19
  147. package/src/knowledge/README.md +31 -31
  148. package/src/organization/README.md +18 -18
  149. package/src/profile/README.md +19 -19
  150. package/src/provider/README.md +32 -32
  151. package/src/router/README.md +18 -18
  152. package/src/sse/README.md +13 -13
  153. package/src/test-utils/README.md +7 -7
  154. package/src/theme/README.md +23 -23
  155. package/src/theme/presets/README.md +19 -19
  156. package/src/types/README.md +16 -16
  157. package/src/utils/README.md +18 -18
  158. package/src/zustand/README.md +18 -18
  159. package/dist/chunk-542WPQU2.js +0 -413
  160. package/dist/chunk-6IXOKUBC.js +0 -347
  161. package/dist/chunk-CQZ3DNQY.js +0 -740
  162. package/dist/chunk-ECNNI3NT.js +0 -6
  163. package/dist/chunk-GRDLB6LM.js +0 -160
  164. package/dist/chunk-JDNEWB5F.js +0 -10
  165. package/dist/chunk-MVFCLZSK.js +0 -4337
  166. package/dist/chunk-O2QOPJI5.js +0 -2235
  167. package/dist/chunk-OAVTMITG.js +0 -13
  168. package/dist/chunk-TVRQ6AQI.js +0 -476
  169. package/dist/chunk-WF227UBV.js +0 -48
@@ -1,13 +0,0 @@
1
- import { ElevasisFeaturesProvider } from './chunk-6IXOKUBC.js';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- function createTestFeaturesProvider({
5
- organizationModel,
6
- features = []
7
- } = {}) {
8
- return function TestFeaturesProvider({ children }) {
9
- return /* @__PURE__ */ jsx(ElevasisFeaturesProvider, { features, organizationModel, children });
10
- };
11
- }
12
-
13
- export { createTestFeaturesProvider };
@@ -1,476 +0,0 @@
1
- import { DisplayMetadataSchema, ModelIdSchema, DescriptionSchema, LEAD_GEN_STAGE_CATALOG } from './chunk-CQZ3DNQY.js';
2
- import { z } from 'zod';
3
-
4
- var ProspectingLifecycleStageSchema = DisplayMetadataSchema.extend({
5
- id: ModelIdSchema,
6
- order: z.number().min(0)
7
- });
8
- var RecordColumnConfigSchema = z.object({
9
- key: ModelIdSchema,
10
- label: z.string().trim().min(1).max(120),
11
- path: z.string().trim().min(1).max(500),
12
- width: z.union([z.number().positive(), z.string().trim().min(1).max(100)]).optional(),
13
- renderType: z.enum(["text", "badge", "datetime", "count", "json"]).optional(),
14
- badgeColor: z.string().trim().min(1).max(40).optional()
15
- });
16
- var RecordColumnsConfigSchema = z.object({
17
- company: z.array(RecordColumnConfigSchema).optional(),
18
- contact: z.array(RecordColumnConfigSchema).optional()
19
- }).refine((columns) => Boolean(columns.company?.length || columns.contact?.length), {
20
- message: "recordColumns must include at least one entity column set"
21
- });
22
- var CredentialRequirementSchema = z.object({
23
- key: ModelIdSchema,
24
- provider: ModelIdSchema,
25
- credentialType: z.enum(["api-key", "api-key-secret", "oauth", "webhook-secret"]),
26
- label: z.string().trim().min(1).max(120),
27
- required: z.boolean(),
28
- selectionMode: z.enum(["single", "multiple"]).optional(),
29
- inputPath: z.string().trim().min(1).max(500),
30
- verifyOnRun: z.boolean().optional()
31
- });
32
- var ProspectingBuildTemplateStepSchema = DisplayMetadataSchema.extend({
33
- id: ModelIdSchema,
34
- primaryEntity: z.enum(["company", "contact"]),
35
- outputs: z.array(z.enum(["company", "contact", "export"])).min(1),
36
- stageKey: ModelIdSchema,
37
- recordEntity: z.enum(["company", "contact"]).optional(),
38
- recordsStageKey: ModelIdSchema.optional(),
39
- recordSourceStageKey: ModelIdSchema.optional(),
40
- dependsOn: z.array(ModelIdSchema).optional(),
41
- dependencyMode: z.literal("per-record-eligibility"),
42
- capabilityKey: ModelIdSchema,
43
- defaultBatchSize: z.number().int().positive(),
44
- maxBatchSize: z.number().int().positive(),
45
- recordColumns: RecordColumnsConfigSchema.optional(),
46
- credentialRequirements: z.array(CredentialRequirementSchema).optional()
47
- }).refine((step) => step.defaultBatchSize <= step.maxBatchSize, {
48
- message: "defaultBatchSize must be less than or equal to maxBatchSize",
49
- path: ["defaultBatchSize"]
50
- });
51
- var ProspectingBuildTemplateSchema = DisplayMetadataSchema.extend({
52
- id: ModelIdSchema,
53
- steps: z.array(ProspectingBuildTemplateStepSchema).min(1)
54
- });
55
- var DTC_RECORD_COLUMNS = {
56
- populated: {
57
- company: [
58
- { key: "name", label: "Company", path: "company.name" },
59
- { key: "domain", label: "Domain", path: "company.domain" },
60
- { key: "employee-count", label: "Employees", path: "company.numEmployees", renderType: "count" },
61
- { key: "apollo-industry", label: "Apollo industry", path: "company.category" },
62
- { key: "location", label: "Location", path: "company.locationState" }
63
- ]
64
- },
65
- crawled: {
66
- company: [
67
- { key: "name", label: "Company", path: "company.name" },
68
- { key: "domain", label: "Domain", path: "company.domain" },
69
- { key: "page-count", label: "Pages", path: "company.enrichmentData.websiteCrawl.pageCount", renderType: "count" },
70
- { key: "crawl-status", label: "Crawl status", path: "processingState.crawled.status", renderType: "badge" }
71
- ]
72
- },
73
- extracted: {
74
- company: [
75
- { key: "name", label: "Company", path: "company.name" },
76
- { key: "domain", label: "Domain", path: "company.domain" },
77
- { key: "description", label: "Description", path: "company.enrichmentData.websiteCrawl.companyDescription" },
78
- { key: "services", label: "Services", path: "company.enrichmentData.websiteCrawl.services", renderType: "json" },
79
- { key: "automation-gaps", label: "Automation gaps", path: "company.enrichmentData.websiteCrawl.automationGaps", renderType: "json" },
80
- { key: "contact-count", label: "Contacts", path: "company.enrichmentData.websiteCrawl.emailCount", renderType: "count" }
81
- ]
82
- },
83
- qualified: {
84
- company: [
85
- { key: "name", label: "Company", path: "company.name" },
86
- { key: "domain", label: "Domain", path: "company.domain" },
87
- { key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
88
- { key: "signals", label: "Signals", path: "company.qualificationSignals", renderType: "json" },
89
- { key: "disqualified-reason", label: "Disqualified reason", path: "processingState.qualified.data.disqualifiedReason" }
90
- ]
91
- },
92
- decisionMakers: {
93
- contact: [
94
- { key: "name", label: "Name", path: "contact.name" },
95
- { key: "title", label: "Title", path: "contact.title" },
96
- { key: "email", label: "Email", path: "contact.email" },
97
- { key: "linkedin", label: "LinkedIn", path: "contact.linkedinUrl" },
98
- { key: "priority-score", label: "Priority", path: "contact.enrichmentData.apollo.priorityScore", renderType: "badge" }
99
- ]
100
- },
101
- uploaded: {
102
- company: [
103
- { key: "name", label: "Company", path: "company.name" },
104
- { key: "domain", label: "Domain", path: "company.domain" },
105
- { key: "contacts", label: "Contacts", path: "company.enrichmentData.approvedLeadListExport.contacts", renderType: "json" },
106
- { key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
107
- { key: "approval", label: "Approval", path: "company.enrichmentData.approvedLeadListExport.approvalStatus", renderType: "badge" }
108
- ]
109
- }
110
- };
111
- z.object({
112
- id: ModelIdSchema,
113
- label: z.string(),
114
- description: z.string(),
115
- resourceId: ModelIdSchema
116
- });
117
- var CAPABILITY_REGISTRY = [
118
- {
119
- id: "lead-gen.company.source",
120
- label: "Source companies",
121
- description: "Import source companies from a list provider.",
122
- resourceId: "lgn-import-workflow"
123
- },
124
- {
125
- id: "lead-gen.company.apollo-import",
126
- label: "Import from Apollo",
127
- description: "Pull companies and seed contact data from an Apollo search or list.",
128
- resourceId: "lgn-01c-apollo-import-workflow"
129
- },
130
- {
131
- id: "lead-gen.contact.discover",
132
- label: "Discover contact emails",
133
- description: "Find email addresses for contacts at qualified companies.",
134
- resourceId: "lgn-04-email-discovery-workflow"
135
- },
136
- {
137
- id: "lead-gen.contact.verify-email",
138
- label: "Verify emails",
139
- description: "Check email deliverability before outreach.",
140
- resourceId: "lgn-05-email-verification-workflow"
141
- },
142
- {
143
- id: "lead-gen.company.apify-crawl",
144
- label: "Crawl websites",
145
- description: "Crawl company websites via Apify and store raw page markdown in enrichmentData.websiteCrawl.pages for downstream LLM analysis.",
146
- resourceId: "lgn-02a-apify-website-crawl-workflow"
147
- },
148
- {
149
- id: "lead-gen.company.website-extract",
150
- label: "Extract website signals",
151
- description: "Scrape and analyze company websites for qualification signals.",
152
- resourceId: "lgn-02-website-extract-workflow"
153
- },
154
- {
155
- id: "lead-gen.company.qualify",
156
- label: "Qualify companies",
157
- description: "Score and filter companies against the ICP rubric.",
158
- resourceId: "lgn-03-company-qualification-workflow"
159
- },
160
- {
161
- id: "lead-gen.company.dtc-subscription-qualify",
162
- label: "Qualify DTC subscription fit",
163
- description: "Classify subscription potential and consumable-product fit for DTC brands.",
164
- resourceId: "lgn-03b-dtc-subscription-score-workflow"
165
- },
166
- {
167
- id: "lead-gen.contact.apollo-decision-maker-enrich",
168
- label: "Enrich decision-makers",
169
- description: "Find and enrich qualified contacts at qualified companies via Apollo.",
170
- resourceId: "lgn-04b-apollo-decision-maker-enrich-workflow"
171
- },
172
- {
173
- id: "lead-gen.contact.personalize",
174
- label: "Personalize outreach",
175
- description: "Generate personalized opening lines for each contact.",
176
- resourceId: "ist-personalization-workflow"
177
- },
178
- {
179
- id: "lead-gen.review.outreach-ready",
180
- label: "Upload to outreach",
181
- description: "Upload approved contacts to the outreach sequence after QC review.",
182
- resourceId: "ist-upload-contacts-workflow"
183
- },
184
- {
185
- id: "lead-gen.export.list",
186
- label: "Export lead list",
187
- description: "Export approved leads as a downloadable lead list.",
188
- resourceId: "lgn-06-export-list-workflow"
189
- },
190
- {
191
- id: "lead-gen.company.cleanup",
192
- label: "Clean up companies",
193
- description: "Remove disqualified or duplicate companies from the list.",
194
- resourceId: "lgn-company-cleanup-workflow"
195
- }
196
- ];
197
- var PROSPECTING_STEPS = {
198
- localServices: {
199
- sourceCompanies: {
200
- id: "source-companies",
201
- label: "Companies found",
202
- primaryEntity: "company",
203
- outputs: ["company"],
204
- stageKey: "populated",
205
- dependencyMode: "per-record-eligibility",
206
- capabilityKey: "lead-gen.company.source",
207
- defaultBatchSize: 100,
208
- maxBatchSize: 250
209
- },
210
- analyzeWebsites: {
211
- id: "analyze-websites",
212
- label: "Websites analyzed",
213
- primaryEntity: "company",
214
- outputs: ["company"],
215
- stageKey: "extracted",
216
- dependsOn: ["source-companies"],
217
- dependencyMode: "per-record-eligibility",
218
- capabilityKey: "lead-gen.company.website-extract",
219
- defaultBatchSize: 50,
220
- maxBatchSize: 100
221
- },
222
- qualifyCompanies: {
223
- id: "qualify-companies",
224
- label: "Companies qualified",
225
- primaryEntity: "company",
226
- outputs: ["company"],
227
- stageKey: "qualified",
228
- dependsOn: ["analyze-websites"],
229
- dependencyMode: "per-record-eligibility",
230
- capabilityKey: "lead-gen.company.qualify",
231
- defaultBatchSize: 100,
232
- maxBatchSize: 250
233
- },
234
- findContacts: {
235
- id: "find-contacts",
236
- label: "Decision-makers found",
237
- primaryEntity: "contact",
238
- outputs: ["contact"],
239
- stageKey: "discovered",
240
- dependsOn: ["qualify-companies"],
241
- dependencyMode: "per-record-eligibility",
242
- capabilityKey: "lead-gen.contact.discover",
243
- defaultBatchSize: 50,
244
- maxBatchSize: 100
245
- },
246
- verifyEmails: {
247
- id: "verify-emails",
248
- label: "Emails verified",
249
- primaryEntity: "contact",
250
- outputs: ["contact"],
251
- stageKey: "verified",
252
- dependsOn: ["find-contacts"],
253
- dependencyMode: "per-record-eligibility",
254
- capabilityKey: "lead-gen.contact.verify-email",
255
- defaultBatchSize: 100,
256
- maxBatchSize: 500
257
- },
258
- personalize: {
259
- id: "personalize",
260
- label: "Personalize",
261
- primaryEntity: "contact",
262
- outputs: ["contact"],
263
- stageKey: "personalized",
264
- dependsOn: ["verify-emails"],
265
- dependencyMode: "per-record-eligibility",
266
- capabilityKey: "lead-gen.contact.personalize",
267
- defaultBatchSize: 25,
268
- maxBatchSize: 100
269
- },
270
- review: {
271
- id: "review",
272
- label: "Reviewed and exported",
273
- primaryEntity: "contact",
274
- outputs: ["export"],
275
- stageKey: "uploaded",
276
- dependsOn: ["personalize"],
277
- dependencyMode: "per-record-eligibility",
278
- capabilityKey: "lead-gen.review.outreach-ready",
279
- defaultBatchSize: 25,
280
- maxBatchSize: 100
281
- }
282
- },
283
- dtcApolloClickup: {
284
- importApolloSearch: {
285
- id: "import-apollo-search",
286
- label: "Companies found",
287
- description: "Pull companies and seed contact data from a predefined Apollo search or list.",
288
- primaryEntity: "company",
289
- outputs: ["company", "contact"],
290
- stageKey: "populated",
291
- dependencyMode: "per-record-eligibility",
292
- capabilityKey: "lead-gen.company.apollo-import",
293
- defaultBatchSize: 250,
294
- maxBatchSize: 1e3,
295
- recordColumns: DTC_RECORD_COLUMNS.populated,
296
- credentialRequirements: [
297
- {
298
- key: "apollo",
299
- provider: "apollo",
300
- credentialType: "api-key-secret",
301
- label: "Apollo API key",
302
- required: true,
303
- selectionMode: "single",
304
- inputPath: "credential"
305
- }
306
- ]
307
- },
308
- apifyCrawl: {
309
- id: "apify-crawl",
310
- label: "Websites crawled",
311
- description: "Crawl company websites via Apify and store raw page markdown in enrichmentData.websiteCrawl.pages for downstream LLM analysis. Overwrites the synthetic seed Apollo Import wrote with real page content.",
312
- primaryEntity: "company",
313
- outputs: ["company"],
314
- stageKey: "crawled",
315
- dependsOn: ["import-apollo-search"],
316
- dependencyMode: "per-record-eligibility",
317
- capabilityKey: "lead-gen.company.apify-crawl",
318
- defaultBatchSize: 50,
319
- maxBatchSize: 100,
320
- recordColumns: DTC_RECORD_COLUMNS.crawled,
321
- credentialRequirements: [
322
- {
323
- key: "apify",
324
- provider: "apify",
325
- credentialType: "api-key-secret",
326
- label: "Apify API token",
327
- required: true,
328
- selectionMode: "single",
329
- inputPath: "credential",
330
- verifyOnRun: true
331
- }
332
- ]
333
- },
334
- analyzeWebsites: {
335
- id: "analyze-websites",
336
- label: "Websites analyzed",
337
- description: "Extract subscription, product, retention, and tech-stack signals from each brand website.",
338
- primaryEntity: "company",
339
- outputs: ["company"],
340
- stageKey: "extracted",
341
- dependsOn: ["apify-crawl"],
342
- dependencyMode: "per-record-eligibility",
343
- capabilityKey: "lead-gen.company.website-extract",
344
- defaultBatchSize: 50,
345
- maxBatchSize: 100,
346
- recordColumns: DTC_RECORD_COLUMNS.extracted
347
- },
348
- scoreDtcFit: {
349
- id: "score-dtc-fit",
350
- label: "Companies qualified",
351
- description: "Classify subscription potential, consumable-product fit, retention maturity, and disqualifiers.",
352
- primaryEntity: "company",
353
- outputs: ["company"],
354
- stageKey: "qualified",
355
- dependsOn: ["analyze-websites"],
356
- dependencyMode: "per-record-eligibility",
357
- capabilityKey: "lead-gen.company.dtc-subscription-qualify",
358
- defaultBatchSize: 100,
359
- maxBatchSize: 250,
360
- recordColumns: DTC_RECORD_COLUMNS.qualified
361
- },
362
- enrichDecisionMakers: {
363
- id: "enrich-decision-makers",
364
- label: "Decision-makers found",
365
- description: "Use Apollo to find qualified contacts at qualified companies - founders, retention leads, lifecycle leads, and marketing owners.",
366
- primaryEntity: "company",
367
- outputs: ["contact"],
368
- stageKey: "decision-makers-enriched",
369
- recordEntity: "contact",
370
- dependsOn: ["score-dtc-fit"],
371
- dependencyMode: "per-record-eligibility",
372
- capabilityKey: "lead-gen.contact.apollo-decision-maker-enrich",
373
- defaultBatchSize: 100,
374
- maxBatchSize: 250,
375
- recordColumns: DTC_RECORD_COLUMNS.decisionMakers,
376
- credentialRequirements: [
377
- {
378
- key: "apollo",
379
- provider: "apollo",
380
- credentialType: "api-key-secret",
381
- label: "Apollo API key",
382
- required: true,
383
- selectionMode: "single",
384
- inputPath: "credential"
385
- }
386
- ]
387
- },
388
- reviewAndExport: {
389
- id: "review-and-export",
390
- label: "Reviewed and exported",
391
- description: "Operator QC approves or rejects qualified companies, then approved records are exported as a lead list with unverified emails.",
392
- primaryEntity: "company",
393
- outputs: ["export"],
394
- stageKey: "uploaded",
395
- recordsStageKey: "uploaded",
396
- recordSourceStageKey: "qualified",
397
- dependsOn: ["enrich-decision-makers"],
398
- dependencyMode: "per-record-eligibility",
399
- capabilityKey: "lead-gen.export.list",
400
- defaultBatchSize: 100,
401
- maxBatchSize: 250,
402
- recordColumns: DTC_RECORD_COLUMNS.uploaded,
403
- credentialRequirements: [
404
- {
405
- key: "clickup",
406
- provider: "clickup",
407
- credentialType: "api-key-secret",
408
- label: "ClickUp API token",
409
- required: true,
410
- selectionMode: "single",
411
- inputPath: "clickupCredential",
412
- verifyOnRun: true
413
- }
414
- ]
415
- }
416
- }
417
- };
418
- var OrganizationModelProspectingSchema = z.object({
419
- listEntityId: ModelIdSchema,
420
- companyEntityId: ModelIdSchema,
421
- contactEntityId: ModelIdSchema,
422
- description: DescriptionSchema.optional(),
423
- companyStages: z.array(ProspectingLifecycleStageSchema).min(1),
424
- contactStages: z.array(ProspectingLifecycleStageSchema).min(1),
425
- defaultBuildTemplateId: ModelIdSchema,
426
- buildTemplates: z.array(ProspectingBuildTemplateSchema).min(1)
427
- });
428
- function toProspectingLifecycleStage(stage) {
429
- return {
430
- id: stage.key,
431
- label: stage.label,
432
- order: stage.order
433
- };
434
- }
435
- function leadGenStagesForEntity(entity) {
436
- return Object.values(LEAD_GEN_STAGE_CATALOG).filter((stage) => stage.entity === entity || stage.additionalEntities?.includes(entity)).sort((a, b) => a.order - b.order).map(toProspectingLifecycleStage);
437
- }
438
- var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
439
- listEntityId: "leadgen.list",
440
- companyEntityId: "leadgen.company",
441
- contactEntityId: "leadgen.contact",
442
- companyStages: leadGenStagesForEntity("company"),
443
- contactStages: leadGenStagesForEntity("contact"),
444
- defaultBuildTemplateId: "local-services",
445
- buildTemplates: [
446
- {
447
- id: "local-services",
448
- label: "Local Services Prospecting",
449
- description: "Curated local-services list build using company sourcing, website analysis, qualification, contact discovery, verification, personalization, and review.",
450
- steps: [
451
- PROSPECTING_STEPS.localServices.sourceCompanies,
452
- PROSPECTING_STEPS.localServices.analyzeWebsites,
453
- PROSPECTING_STEPS.localServices.qualifyCompanies,
454
- PROSPECTING_STEPS.localServices.findContacts,
455
- PROSPECTING_STEPS.localServices.verifyEmails,
456
- PROSPECTING_STEPS.localServices.personalize,
457
- PROSPECTING_STEPS.localServices.review
458
- ]
459
- },
460
- {
461
- id: "dtc-subscription-apollo-clickup",
462
- label: "DTC Subscription Apollo Export",
463
- description: "Prospecting pipeline for DTC subscription or subscription-ready brands where Apollo is the source and contact-enrichment layer, Elevasis handles company research and fit scoring, and approved leads export as an approved lead list.",
464
- steps: [
465
- PROSPECTING_STEPS.dtcApolloClickup.importApolloSearch,
466
- PROSPECTING_STEPS.dtcApolloClickup.apifyCrawl,
467
- PROSPECTING_STEPS.dtcApolloClickup.analyzeWebsites,
468
- PROSPECTING_STEPS.dtcApolloClickup.scoreDtcFit,
469
- PROSPECTING_STEPS.dtcApolloClickup.enrichDecisionMakers,
470
- PROSPECTING_STEPS.dtcApolloClickup.reviewAndExport
471
- ]
472
- }
473
- ]
474
- };
475
-
476
- export { CAPABILITY_REGISTRY, DEFAULT_ORGANIZATION_MODEL_PROSPECTING, OrganizationModelProspectingSchema, PROSPECTING_STEPS };
@@ -1,48 +0,0 @@
1
- import { useOptionalElevasisFeatures } from './chunk-6IXOKUBC.js';
2
- import { useRouterContext } from './chunk-Q7DJKLEN.js';
3
- import { useMemo } from 'react';
4
-
5
- var useBreadcrumbs = (options = {}) => {
6
- const { currentPath } = useRouterContext();
7
- const featureContext = useOptionalElevasisFeatures();
8
- const { labelsByPath = {} } = options;
9
- return useMemo(() => {
10
- const shellModel = featureContext?.shellModel;
11
- const overriddenLabel = labelsByPath[currentPath];
12
- if (overriddenLabel) {
13
- return [{ label: overriddenLabel, isActive: true }];
14
- }
15
- if (shellModel) {
16
- const matchedNode = shellModel.findByPath(currentPath);
17
- if (matchedNode) {
18
- return shellModel.ancestorsOf(matchedNode.id).map((node, index, items) => ({
19
- label: labelsByPath[node.path ?? ""] ?? node.label,
20
- path: index === items.length - 1 ? void 0 : node.path,
21
- isActive: index === items.length - 1
22
- }));
23
- }
24
- }
25
- const segments = currentPath.split("/").filter(Boolean);
26
- if (segments.length === 0) {
27
- return [{ label: "Dashboard", isActive: true }];
28
- }
29
- const breadcrumbs = [{ label: "Dashboard", path: "/" }];
30
- let currentSegmentPath = "";
31
- for (let i = 0; i < segments.length; i++) {
32
- currentSegmentPath += `/${segments[i]}`;
33
- const isLast = i === segments.length - 1;
34
- const label = labelsByPath[currentSegmentPath] ?? formatSegmentLabel(segments[i]);
35
- breadcrumbs.push({
36
- label,
37
- path: isLast ? void 0 : currentSegmentPath,
38
- isActive: isLast
39
- });
40
- }
41
- return breadcrumbs;
42
- }, [currentPath, featureContext, labelsByPath]);
43
- };
44
- function formatSegmentLabel(segment) {
45
- return segment.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
46
- }
47
-
48
- export { useBreadcrumbs };