@elevasis/ui 2.28.0 → 2.29.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 (72) hide show
  1. package/dist/api/index.js +2 -2
  2. package/dist/app/index.d.ts +6 -12
  3. package/dist/app/index.js +4 -4
  4. package/dist/charts/index.js +3 -3
  5. package/dist/{chunk-OHXU5WWK.js → chunk-3DUOPXOJ.js} +146 -9
  6. package/dist/{chunk-LWKZ3BCC.js → chunk-5CW2HXQA.js} +4 -4
  7. package/dist/{chunk-JKBGDFX2.js → chunk-65RQE3XF.js} +378 -254
  8. package/dist/{chunk-XZSEPJZQ.js → chunk-6NHCE7JM.js} +49 -28
  9. package/dist/{chunk-RIFTUOPE.js → chunk-6WXDE5LZ.js} +1 -1
  10. package/dist/{chunk-SGS4CQ2B.js → chunk-7E3FUTND.js} +1 -1
  11. package/dist/{chunk-UPMX5GJI.js → chunk-A7R2URMV.js} +88 -26
  12. package/dist/{chunk-UY5I2KOZ.js → chunk-AK5E6ILJ.js} +9 -8
  13. package/dist/{chunk-G26INIF3.js → chunk-CEHUFNAL.js} +1 -1
  14. package/dist/{chunk-ONFKASZI.js → chunk-CLUP5H3C.js} +7 -10
  15. package/dist/{chunk-MYEOTM7D.js → chunk-CN2HC4D4.js} +5 -1
  16. package/dist/chunk-FFDAE2QI.js +330 -0
  17. package/dist/{chunk-WUVR4QY6.js → chunk-FGDUK74A.js} +4 -4
  18. package/dist/{chunk-YHBPR67D.js → chunk-HNFQCOD2.js} +4 -4
  19. package/dist/{chunk-QD4X4H5A.js → chunk-HXZQWMKE.js} +2 -3
  20. package/dist/{chunk-KEFWANZY.js → chunk-JCGD4GM6.js} +5 -1
  21. package/dist/{chunk-YO2YORW4.js → chunk-OHGNCWJP.js} +3 -3
  22. package/dist/{chunk-JPGX3533.js → chunk-OIMPGKDB.js} +2 -2
  23. package/dist/{chunk-W2ZTLH7Y.js → chunk-OWESKPTJ.js} +85 -26
  24. package/dist/{chunk-G66QFZXD.js → chunk-QNL7UI5G.js} +15 -9
  25. package/dist/{chunk-OGXKOMUT.js → chunk-SZWXQHKO.js} +2 -2
  26. package/dist/{chunk-ZFLM2YVW.js → chunk-Y3YJKKEB.js} +1 -1
  27. package/dist/components/index.d.ts +16 -14
  28. package/dist/components/index.js +26 -26
  29. package/dist/features/auth/index.d.ts +6 -12
  30. package/dist/features/auth/index.js +1 -0
  31. package/dist/features/crm/index.d.ts +16 -14
  32. package/dist/features/crm/index.js +9 -9
  33. package/dist/features/dashboard/index.d.ts +16 -3
  34. package/dist/features/dashboard/index.js +10 -10
  35. package/dist/features/delivery/index.d.ts +6 -12
  36. package/dist/features/delivery/index.js +9 -9
  37. package/dist/features/knowledge/index.js +42 -20
  38. package/dist/features/lead-gen/index.d.ts +187 -24
  39. package/dist/features/lead-gen/index.js +10 -10
  40. package/dist/features/monitoring/index.js +11 -11
  41. package/dist/features/monitoring/requests/index.js +8 -8
  42. package/dist/features/operations/index.d.ts +16 -3
  43. package/dist/features/operations/index.js +15 -15
  44. package/dist/features/settings/index.d.ts +6 -12
  45. package/dist/features/settings/index.js +9 -9
  46. package/dist/hooks/delivery/index.d.ts +6 -12
  47. package/dist/hooks/delivery/index.js +2 -2
  48. package/dist/hooks/index.d.ts +110 -28
  49. package/dist/hooks/index.js +8 -8
  50. package/dist/hooks/published.d.ts +110 -28
  51. package/dist/hooks/published.js +8 -8
  52. package/dist/index.d.ts +149 -31
  53. package/dist/index.js +8 -8
  54. package/dist/initialization/index.d.ts +6 -12
  55. package/dist/knowledge/index.d.ts +44 -1
  56. package/dist/knowledge/index.js +149 -12
  57. package/dist/profile/index.d.ts +6 -12
  58. package/dist/provider/index.d.ts +44 -12
  59. package/dist/provider/index.js +6 -6
  60. package/dist/provider/published.d.ts +44 -12
  61. package/dist/provider/published.js +5 -5
  62. package/dist/supabase/index.d.ts +12 -24
  63. package/dist/test-utils/index.js +2 -2
  64. package/dist/typeform/index.d.ts +5 -1
  65. package/dist/typeform/index.js +52 -7
  66. package/dist/types/index.d.ts +7 -13
  67. package/dist/utils/index.d.ts +1 -3
  68. package/dist/utils/index.js +1 -1
  69. package/dist/vite/index.js +2 -2
  70. package/dist/vite-plugin-knowledge/index.js +1 -1
  71. package/package.json +5 -5
  72. package/dist/chunk-4KTLOK7K.js +0 -230
@@ -0,0 +1,330 @@
1
+ import { DisplayMetadataSchema, ModelIdSchema, DescriptionSchema, LEAD_GEN_STAGE_CATALOG } from './chunk-OWESKPTJ.js';
2
+ import { z } from 'zod';
3
+
4
+ var ProspectingLifecycleStageSchema = DisplayMetadataSchema.extend({
5
+ id: ModelIdSchema,
6
+ order: z.number().int().min(0)
7
+ });
8
+ var ProspectingBuildTemplateStepSchema = DisplayMetadataSchema.extend({
9
+ id: ModelIdSchema,
10
+ primaryEntity: z.enum(["company", "contact"]),
11
+ outputs: z.array(z.enum(["company", "contact", "export"])).min(1),
12
+ stageKey: ModelIdSchema,
13
+ dependsOn: z.array(ModelIdSchema).optional(),
14
+ dependencyMode: z.literal("per-record-eligibility"),
15
+ capabilityKey: ModelIdSchema,
16
+ defaultBatchSize: z.number().int().positive(),
17
+ maxBatchSize: z.number().int().positive()
18
+ }).refine((step) => step.defaultBatchSize <= step.maxBatchSize, {
19
+ message: "defaultBatchSize must be less than or equal to maxBatchSize",
20
+ path: ["defaultBatchSize"]
21
+ });
22
+ var ProspectingBuildTemplateSchema = DisplayMetadataSchema.extend({
23
+ id: ModelIdSchema,
24
+ steps: z.array(ProspectingBuildTemplateStepSchema).min(1)
25
+ });
26
+ z.object({
27
+ id: ModelIdSchema,
28
+ label: z.string(),
29
+ description: z.string(),
30
+ resourceId: ModelIdSchema
31
+ });
32
+ var CAPABILITY_REGISTRY = [
33
+ {
34
+ id: "lead-gen.company.source",
35
+ label: "Source companies",
36
+ description: "Import source companies from a list provider.",
37
+ resourceId: "lgn-import-workflow"
38
+ },
39
+ {
40
+ id: "lead-gen.company.apollo-import",
41
+ label: "Import from Apollo",
42
+ description: "Pull companies and seed contact data from an Apollo search or list.",
43
+ resourceId: "lgn-01c-apollo-import-workflow"
44
+ },
45
+ {
46
+ id: "lead-gen.contact.discover",
47
+ label: "Discover contact emails",
48
+ description: "Find email addresses for contacts at qualified companies.",
49
+ resourceId: "lgn-04-email-discovery-workflow"
50
+ },
51
+ {
52
+ id: "lead-gen.contact.verify-email",
53
+ label: "Verify emails",
54
+ description: "Check email deliverability before outreach.",
55
+ resourceId: "lgn-05-email-verification-workflow"
56
+ },
57
+ {
58
+ id: "lead-gen.company.website-extract",
59
+ label: "Extract website signals",
60
+ description: "Scrape and analyze company websites for qualification signals.",
61
+ resourceId: "lgn-02-website-extract-workflow"
62
+ },
63
+ {
64
+ id: "lead-gen.company.qualify",
65
+ label: "Qualify companies",
66
+ description: "Score and filter companies against the ICP rubric.",
67
+ resourceId: "lgn-03-company-qualification-workflow"
68
+ },
69
+ {
70
+ id: "lead-gen.company.dtc-subscription-qualify",
71
+ label: "Qualify DTC subscription fit",
72
+ description: "Classify subscription potential and consumable-product fit for DTC brands.",
73
+ resourceId: "lgn-03b-dtc-subscription-score-workflow"
74
+ },
75
+ {
76
+ id: "lead-gen.contact.apollo-decision-maker-enrich",
77
+ label: "Enrich decision-makers",
78
+ description: "Find and enrich qualified contacts at qualified companies via Apollo.",
79
+ resourceId: "lgn-04b-apollo-decision-maker-enrich-workflow"
80
+ },
81
+ {
82
+ id: "lead-gen.contact.personalize",
83
+ label: "Personalize outreach",
84
+ description: "Generate personalized opening lines for each contact.",
85
+ resourceId: "ist-personalization-workflow"
86
+ },
87
+ {
88
+ id: "lead-gen.review.outreach-ready",
89
+ label: "Upload to outreach",
90
+ description: "Upload approved contacts to the outreach sequence after QC review.",
91
+ resourceId: "ist-upload-contacts-workflow"
92
+ },
93
+ {
94
+ id: "lead-gen.export.list",
95
+ label: "Export lead list",
96
+ description: "Export approved leads as a downloadable lead list.",
97
+ resourceId: "lgn-06-export-list-workflow"
98
+ },
99
+ {
100
+ id: "lead-gen.company.cleanup",
101
+ label: "Clean up companies",
102
+ description: "Remove disqualified or duplicate companies from the list.",
103
+ resourceId: "lgn-company-cleanup-workflow"
104
+ }
105
+ ];
106
+ var PROSPECTING_STEPS = {
107
+ localServices: {
108
+ sourceCompanies: {
109
+ id: "source-companies",
110
+ label: "Companies found",
111
+ primaryEntity: "company",
112
+ outputs: ["company"],
113
+ stageKey: "populated",
114
+ dependencyMode: "per-record-eligibility",
115
+ capabilityKey: "lead-gen.company.source",
116
+ defaultBatchSize: 100,
117
+ maxBatchSize: 250
118
+ },
119
+ analyzeWebsites: {
120
+ id: "analyze-websites",
121
+ label: "Websites analyzed",
122
+ primaryEntity: "company",
123
+ outputs: ["company"],
124
+ stageKey: "extracted",
125
+ dependsOn: ["source-companies"],
126
+ dependencyMode: "per-record-eligibility",
127
+ capabilityKey: "lead-gen.company.website-extract",
128
+ defaultBatchSize: 50,
129
+ maxBatchSize: 100
130
+ },
131
+ qualifyCompanies: {
132
+ id: "qualify-companies",
133
+ label: "Companies qualified",
134
+ primaryEntity: "company",
135
+ outputs: ["company"],
136
+ stageKey: "qualified",
137
+ dependsOn: ["analyze-websites"],
138
+ dependencyMode: "per-record-eligibility",
139
+ capabilityKey: "lead-gen.company.qualify",
140
+ defaultBatchSize: 100,
141
+ maxBatchSize: 250
142
+ },
143
+ findContacts: {
144
+ id: "find-contacts",
145
+ label: "Decision-makers found",
146
+ primaryEntity: "contact",
147
+ outputs: ["contact"],
148
+ stageKey: "discovered",
149
+ dependsOn: ["qualify-companies"],
150
+ dependencyMode: "per-record-eligibility",
151
+ capabilityKey: "lead-gen.contact.discover",
152
+ defaultBatchSize: 50,
153
+ maxBatchSize: 100
154
+ },
155
+ verifyEmails: {
156
+ id: "verify-emails",
157
+ label: "Emails verified",
158
+ primaryEntity: "contact",
159
+ outputs: ["contact"],
160
+ stageKey: "verified",
161
+ dependsOn: ["find-contacts"],
162
+ dependencyMode: "per-record-eligibility",
163
+ capabilityKey: "lead-gen.contact.verify-email",
164
+ defaultBatchSize: 100,
165
+ maxBatchSize: 500
166
+ },
167
+ personalize: {
168
+ id: "personalize",
169
+ label: "Personalize",
170
+ primaryEntity: "contact",
171
+ outputs: ["contact"],
172
+ stageKey: "personalized",
173
+ dependsOn: ["verify-emails"],
174
+ dependencyMode: "per-record-eligibility",
175
+ capabilityKey: "lead-gen.contact.personalize",
176
+ defaultBatchSize: 25,
177
+ maxBatchSize: 100
178
+ },
179
+ review: {
180
+ id: "review",
181
+ label: "Reviewed and exported",
182
+ primaryEntity: "contact",
183
+ outputs: ["export"],
184
+ stageKey: "uploaded",
185
+ dependsOn: ["personalize"],
186
+ dependencyMode: "per-record-eligibility",
187
+ capabilityKey: "lead-gen.review.outreach-ready",
188
+ defaultBatchSize: 25,
189
+ maxBatchSize: 100
190
+ }
191
+ },
192
+ dtcApolloClickup: {
193
+ importApolloSearch: {
194
+ id: "import-apollo-search",
195
+ label: "Companies found",
196
+ description: "Pull companies and seed contact data from a predefined Apollo search or list.",
197
+ primaryEntity: "company",
198
+ outputs: ["company", "contact"],
199
+ stageKey: "populated",
200
+ dependencyMode: "per-record-eligibility",
201
+ capabilityKey: "lead-gen.company.apollo-import",
202
+ defaultBatchSize: 250,
203
+ maxBatchSize: 1e3
204
+ },
205
+ analyzeWebsites: {
206
+ id: "analyze-websites",
207
+ label: "Websites analyzed",
208
+ description: "Extract subscription, product, retention, and tech-stack signals from each brand website.",
209
+ primaryEntity: "company",
210
+ outputs: ["company"],
211
+ stageKey: "extracted",
212
+ dependsOn: ["import-apollo-search"],
213
+ dependencyMode: "per-record-eligibility",
214
+ capabilityKey: "lead-gen.company.website-extract",
215
+ defaultBatchSize: 50,
216
+ maxBatchSize: 100
217
+ },
218
+ scoreDtcFit: {
219
+ id: "score-dtc-fit",
220
+ label: "Companies qualified",
221
+ description: "Classify subscription potential, consumable-product fit, retention maturity, and disqualifiers.",
222
+ primaryEntity: "company",
223
+ outputs: ["company"],
224
+ stageKey: "qualified",
225
+ dependsOn: ["analyze-websites"],
226
+ dependencyMode: "per-record-eligibility",
227
+ capabilityKey: "lead-gen.company.dtc-subscription-qualify",
228
+ defaultBatchSize: 100,
229
+ maxBatchSize: 250
230
+ },
231
+ enrichDecisionMakers: {
232
+ id: "enrich-decision-makers",
233
+ label: "Decision-makers found",
234
+ description: "Use Apollo to find qualified contacts at qualified companies - founders, retention leads, lifecycle leads, and marketing owners.",
235
+ primaryEntity: "company",
236
+ outputs: ["contact"],
237
+ stageKey: "decision-makers-enriched",
238
+ dependsOn: ["score-dtc-fit"],
239
+ dependencyMode: "per-record-eligibility",
240
+ capabilityKey: "lead-gen.contact.apollo-decision-maker-enrich",
241
+ defaultBatchSize: 100,
242
+ maxBatchSize: 250
243
+ },
244
+ verifyEmails: {
245
+ id: "verify-emails",
246
+ label: "Emails verified",
247
+ description: "Verify deliverability before the QC and handoff step.",
248
+ primaryEntity: "contact",
249
+ outputs: ["contact"],
250
+ stageKey: "verified",
251
+ dependsOn: ["enrich-decision-makers"],
252
+ dependencyMode: "per-record-eligibility",
253
+ capabilityKey: "lead-gen.contact.verify-email",
254
+ defaultBatchSize: 250,
255
+ maxBatchSize: 500
256
+ },
257
+ reviewAndExport: {
258
+ id: "review-and-export",
259
+ label: "Reviewed and exported",
260
+ description: "Operator QC approves or rejects leads, then approved records are exported as a lead list.",
261
+ primaryEntity: "company",
262
+ outputs: ["export"],
263
+ stageKey: "uploaded",
264
+ dependsOn: ["verify-emails"],
265
+ dependencyMode: "per-record-eligibility",
266
+ capabilityKey: "lead-gen.export.list",
267
+ defaultBatchSize: 100,
268
+ maxBatchSize: 250
269
+ }
270
+ }
271
+ };
272
+ var OrganizationModelProspectingSchema = z.object({
273
+ listEntityId: ModelIdSchema,
274
+ companyEntityId: ModelIdSchema,
275
+ contactEntityId: ModelIdSchema,
276
+ description: DescriptionSchema.optional(),
277
+ companyStages: z.array(ProspectingLifecycleStageSchema).min(1),
278
+ contactStages: z.array(ProspectingLifecycleStageSchema).min(1),
279
+ defaultBuildTemplateId: ModelIdSchema,
280
+ buildTemplates: z.array(ProspectingBuildTemplateSchema).min(1)
281
+ });
282
+ function toProspectingLifecycleStage(stage) {
283
+ return {
284
+ id: stage.key,
285
+ label: stage.label,
286
+ order: stage.order
287
+ };
288
+ }
289
+ function leadGenStagesForEntity(entity) {
290
+ return Object.values(LEAD_GEN_STAGE_CATALOG).filter((stage) => stage.entity === entity).sort((a, b) => a.order - b.order).map(toProspectingLifecycleStage);
291
+ }
292
+ var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
293
+ listEntityId: "leadgen.list",
294
+ companyEntityId: "leadgen.company",
295
+ contactEntityId: "leadgen.contact",
296
+ companyStages: leadGenStagesForEntity("company"),
297
+ contactStages: leadGenStagesForEntity("contact"),
298
+ defaultBuildTemplateId: "local-services",
299
+ buildTemplates: [
300
+ {
301
+ id: "local-services",
302
+ label: "Local Services Prospecting",
303
+ description: "Curated local-services list build using company sourcing, website analysis, qualification, contact discovery, verification, personalization, and review.",
304
+ steps: [
305
+ PROSPECTING_STEPS.localServices.sourceCompanies,
306
+ PROSPECTING_STEPS.localServices.analyzeWebsites,
307
+ PROSPECTING_STEPS.localServices.qualifyCompanies,
308
+ PROSPECTING_STEPS.localServices.findContacts,
309
+ PROSPECTING_STEPS.localServices.verifyEmails,
310
+ PROSPECTING_STEPS.localServices.personalize,
311
+ PROSPECTING_STEPS.localServices.review
312
+ ]
313
+ },
314
+ {
315
+ id: "dtc-subscription-apollo-clickup",
316
+ label: "DTC Subscription Apollo Export",
317
+ 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.",
318
+ steps: [
319
+ PROSPECTING_STEPS.dtcApolloClickup.importApolloSearch,
320
+ PROSPECTING_STEPS.dtcApolloClickup.analyzeWebsites,
321
+ PROSPECTING_STEPS.dtcApolloClickup.scoreDtcFit,
322
+ PROSPECTING_STEPS.dtcApolloClickup.enrichDecisionMakers,
323
+ PROSPECTING_STEPS.dtcApolloClickup.verifyEmails,
324
+ PROSPECTING_STEPS.dtcApolloClickup.reviewAndExport
325
+ ]
326
+ }
327
+ ]
328
+ };
329
+
330
+ export { CAPABILITY_REGISTRY, DEFAULT_ORGANIZATION_MODEL_PROSPECTING, OrganizationModelProspectingSchema, PROSPECTING_STEPS };
@@ -5,12 +5,12 @@ import { SubshellNavItem } from './chunk-X4WBGKJQ.js';
5
5
  import { SubshellSidebarSection } from './chunk-IIMU5YAJ.js';
6
6
  import { FilterBar } from './chunk-PDHTXPSF.js';
7
7
  import { CustomModal } from './chunk-KVJ3LFH2.js';
8
- import { useProjectRealtime, useTableSort, sortData, usePaginationState, useTableSelection, useProjectActivities } from './chunk-YHBPR67D.js';
9
- import { useCreateTask, useCreateMilestone, useProjectMilestones, useUpdateTask, useProjects, useDeleteProject, useProject, useProjectNotes, useUpdateMilestone, useCreateNote, showApiErrorNotification, projectKeys } from './chunk-G26INIF3.js';
10
- import { StatusBadge, EmptyState, PageTitleCaption, CenteredErrorState, StatCard, CardHeader } from './chunk-RIFTUOPE.js';
8
+ import { useProjectRealtime, useTableSort, sortData, usePaginationState, useTableSelection, useProjectActivities } from './chunk-HNFQCOD2.js';
9
+ import { useCreateTask, useCreateMilestone, useProjectMilestones, useUpdateTask, useProjects, useDeleteProject, useProject, useProjectNotes, useUpdateMilestone, useCreateNote, showApiErrorNotification, projectKeys } from './chunk-CEHUFNAL.js';
10
+ import { StatusBadge, EmptyState, PageTitleCaption, CenteredErrorState, StatCard, CardHeader } from './chunk-6WXDE5LZ.js';
11
11
  import { SubshellContentContainer } from './chunk-TKAYX2SP.js';
12
12
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
13
- import { PAGE_SIZE_DEFAULT, formatTimeAgo, formatDate, formatRelativeTime } from './chunk-QD4X4H5A.js';
13
+ import { PAGE_SIZE_DEFAULT, formatTimeAgo, formatDate, formatRelativeTime } from './chunk-HXZQWMKE.js';
14
14
  import { useElevasisServices } from './chunk-5WWZXCS5.js';
15
15
  import { useState, useMemo, useCallback } from 'react';
16
16
  import { Stack, Text, Group, Checkbox, ActionIcon, TextInput, Button, Modal, Title, Textarea, Select, SimpleGrid, Card, ThemeIcon, RingProgress, Paper, Timeline, Badge, Collapse, Center, Loader, Table, Pagination, Alert, CopyButton, Tooltip, Space, Tabs, Divider, Anchor, Chip } from '@mantine/core';
@@ -1,10 +1,10 @@
1
1
  import { observabilityKeys } from './chunk-VKMNWHTL.js';
2
- import { showApiErrorNotification, showSuccessNotification, projectKeys, noteKeys, taskKeys, milestoneKeys } from './chunk-G26INIF3.js';
2
+ import { showApiErrorNotification, showSuccessNotification, projectKeys, noteKeys, taskKeys, milestoneKeys } from './chunk-CEHUFNAL.js';
3
3
  import { useSupabase } from './chunk-BRXELOHC.js';
4
- import { useNotificationAdapter, deriveActions } from './chunk-W2ZTLH7Y.js';
4
+ import { useNotificationAdapter, deriveActions } from './chunk-OWESKPTJ.js';
5
5
  import { useOptionalElevasisFeatures } from './chunk-V3HUIZJX.js';
6
- import { HTTP_HEADERS } from './chunk-SGS4CQ2B.js';
7
- import { ResourceTypeSchema, NonEmptyStringSchema, OriginResourceTypeSchema, UuidSchema, CredentialNameSchema, STALE_TIME_DEFAULT, REFETCH_INTERVAL_DASHBOARD, STALE_TIME_MONITORING, getTimeRangeDates, REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, STALE_TIME_ADMIN, APIClientError, GC_TIME_MEDIUM, GC_TIME_SHORT } from './chunk-QD4X4H5A.js';
6
+ import { HTTP_HEADERS } from './chunk-7E3FUTND.js';
7
+ import { ResourceTypeSchema, NonEmptyStringSchema, OriginResourceTypeSchema, UuidSchema, CredentialNameSchema, STALE_TIME_DEFAULT, REFETCH_INTERVAL_DASHBOARD, STALE_TIME_MONITORING, getTimeRangeDates, REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, STALE_TIME_ADMIN, APIClientError, GC_TIME_MEDIUM, GC_TIME_SHORT } from './chunk-HXZQWMKE.js';
8
8
  import { useStableAccessToken } from './chunk-WFTNY755.js';
9
9
  import { useInitialization } from './chunk-WKJ47GIW.js';
10
10
  import { useOrganization } from './chunk-DD3CCMCZ.js';
@@ -175,7 +175,7 @@ var CredentialNameSchema = z.string().trim().toLowerCase().min(1, "Credential na
175
175
  /^[a-z0-9]+(-[a-z0-9]+)+$/,
176
176
  "Credential name must be lowercase letters, numbers, and hyphens in format: service-environment (e.g., gmail-prod, attio-dev)"
177
177
  );
178
- z.enum(["google-sheets", "dropbox"]);
178
+ z.enum(["google-sheets", "google-calendar", "dropbox"]);
179
179
  z.string().min(10, "Authorization code too short").max(1e3, "Authorization code too long");
180
180
  z.string().min(10, "State parameter too short").max(2048, "State parameter too long");
181
181
  z.string().trim().transform((str) => str.replace(/[<>'"]/g, ""));
@@ -313,7 +313,6 @@ var PAGE_SIZE_DEFAULT = 20;
313
313
  var LIMIT_ACTIVITY_FEED = 50;
314
314
  var DEBOUNCE_FILTER = 150;
315
315
  var DEBOUNCE_SLIDER = 500;
316
- var OAUTH_POPUP_CHECK_INTERVAL = 500;
317
316
  var OAUTH_FLOW_TIMEOUT = 3e5;
318
317
 
319
318
  // src/utils/suppress-warnings.ts
@@ -384,4 +383,4 @@ function setupBrowserMocks() {
384
383
  setupResizeObserver();
385
384
  }
386
385
 
387
- export { APIClientError, API_URL, CredentialNameSchema, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, NonEmptyStringSchema, OAUTH_FLOW_TIMEOUT, OAUTH_POPUP_CHECK_INTERVAL, OriginResourceTypeSchema, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, ResourceTypeSchema, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, UuidSchema, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, debounce, formatBucketTime, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getNodeId, getResourceColor, getResourceIcon, getTimeRangeDates, getTimeRangeLabel, isAPIClientError, restoreConsole, setupBrowserMocks, suppressKnownWarnings, validateEmail };
386
+ export { APIClientError, API_URL, CredentialNameSchema, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, NonEmptyStringSchema, OAUTH_FLOW_TIMEOUT, OriginResourceTypeSchema, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, ResourceTypeSchema, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, UuidSchema, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, debounce, formatBucketTime, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getNodeId, getResourceColor, getResourceIcon, getTimeRangeDates, getTimeRangeLabel, isAPIClientError, restoreConsole, setupBrowserMocks, suppressKnownWarnings, validateEmail };
@@ -1,9 +1,10 @@
1
- import { IconMail, IconSend, IconFileText, IconClock, IconArrowUp, IconMessageCircle, IconRocket, IconEye, IconEdit, IconAlertTriangle, IconRefresh, IconX, IconCheck, IconArchive, IconShieldLock, IconSettings, IconBrain, IconChartBar, IconTool, IconBriefcase, IconLayoutGrid, IconTargetArrow, IconBuildingStore, IconDashboard, IconInfoCircle, IconDatabase, IconGitBranch, IconTopologyStar3, IconUsers, IconUser, IconPlug, IconBook } from '@tabler/icons-react';
1
+ import { IconMail, IconSend, IconFileText, IconClock, IconArrowUp, IconMessageCircle, IconRocket, IconEye, IconEdit, IconAlertTriangle, IconRefresh, IconX, IconCheck, IconArchive, IconShieldLock, IconSettings, IconBrain, IconChartBar, IconTool, IconBriefcase, IconLayoutGrid, IconTargetArrow, IconBuildingStore, IconCalendar, IconDashboard, IconInfoCircle, IconDatabase, IconGitBranch, IconTopologyStar3, IconUsers, IconUser, IconPlug, IconBook } from '@tabler/icons-react';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
 
4
4
  // src/icons/registry.tsx
5
5
  var DEFAULT_SEMANTIC_ICON_REGISTRY = {
6
6
  "nav.dashboard": IconDashboard,
7
+ "nav.calendar": IconCalendar,
7
8
  "nav.sales": IconChartBar,
8
9
  "nav.crm": IconBuildingStore,
9
10
  "nav.lead-gen": IconTargetArrow,
@@ -15,6 +16,7 @@ var DEFAULT_SEMANTIC_ICON_REGISTRY = {
15
16
  "nav.admin": IconShieldLock,
16
17
  "nav.archive": IconArchive,
17
18
  "feature.dashboard": IconDashboard,
19
+ "feature.calendar": IconCalendar,
18
20
  "feature.sales": IconChartBar,
19
21
  "feature.crm": IconBuildingStore,
20
22
  "feature.finance": IconChartBar,
@@ -41,6 +43,7 @@ var DEFAULT_SEMANTIC_ICON_REGISTRY = {
41
43
  "integration.google-sheets": IconDatabase,
42
44
  "integration.attio": IconBuildingStore,
43
45
  "surface.dashboard": IconDashboard,
46
+ "surface.calendar": IconCalendar,
44
47
  "surface.overview": IconDashboard,
45
48
  "surface.command-view": IconTopologyStar3,
46
49
  "surface.command-queue": IconSend,
@@ -66,6 +69,7 @@ var DEFAULT_SEMANTIC_ICON_REGISTRY = {
66
69
  "status.info": IconInfoCircle,
67
70
  // Compatibility aliases for pre-semantic template/navigation payloads.
68
71
  dashboard: IconDashboard,
72
+ calendar: IconCalendar,
69
73
  sales: IconChartBar,
70
74
  crm: IconBuildingStore,
71
75
  finance: IconChartBar,
@@ -1,7 +1,7 @@
1
1
  import { useCyberColors, CyberLegendItem, CyberAreaChart } from './chunk-CW3UNAF2.js';
2
- import { useResourcesHealth } from './chunk-YHBPR67D.js';
3
- import { CardHeader, EmptyState } from './chunk-RIFTUOPE.js';
4
- import { getTimeRangeDates, formatBucketTime } from './chunk-QD4X4H5A.js';
2
+ import { useResourcesHealth } from './chunk-HNFQCOD2.js';
3
+ import { CardHeader, EmptyState } from './chunk-6WXDE5LZ.js';
4
+ import { getTimeRangeDates, formatBucketTime } from './chunk-HXZQWMKE.js';
5
5
  import { Paper, Center, Loader, Group } from '@mantine/core';
6
6
  import { IconActivity, IconChartBar } from '@tabler/icons-react';
7
7
  import { useMemo } from 'react';
@@ -1,10 +1,10 @@
1
1
  import { mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-LH4GPYDX.js';
2
2
  import { PRESETS, getPreset, generateShades } from './chunk-HLFFKKT3.js';
3
3
  import { AppBackground } from './chunk-WLOQ4IBG.js';
4
- import { ElevasisCoreProvider } from './chunk-W2ZTLH7Y.js';
4
+ import { ElevasisCoreProvider } from './chunk-OWESKPTJ.js';
5
5
  import { ElevasisLoader } from './chunk-SZHARWKU.js';
6
6
  import { AppearanceProvider } from './chunk-E565XMTQ.js';
7
- import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-QD4X4H5A.js';
7
+ import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-HXZQWMKE.js';
8
8
  import { useMemo, useEffect } from 'react';
9
9
  import { Loader, mergeThemeOverrides, MantineProvider } from '@mantine/core';
10
10
  import '@mantine/core/styles.css';
@@ -1,6 +1,6 @@
1
- import { ApiClientProvider, useApiClient } from './chunk-SGS4CQ2B.js';
1
+ import { ApiClientProvider, useApiClient } from './chunk-7E3FUTND.js';
2
2
  import { OrganizationProvider } from './chunk-HOIT677G.js';
3
- import { getErrorInfo, getErrorTitle, formatErrorMessage } from './chunk-QD4X4H5A.js';
3
+ import { getErrorInfo, getErrorTitle, formatErrorMessage } from './chunk-HXZQWMKE.js';
4
4
  import { InitializationProvider } from './chunk-WKJ47GIW.js';
5
5
  import { useOrganization } from './chunk-DD3CCMCZ.js';
6
6
  import { ProfileProvider } from './chunk-XTVZFT7U.js';
@@ -40,6 +40,7 @@ function useNotificationAdapter() {
40
40
  }
41
41
  var ORGANIZATION_MODEL_ICON_TOKENS = [
42
42
  "nav.dashboard",
43
+ "nav.calendar",
43
44
  "nav.sales",
44
45
  "nav.crm",
45
46
  "nav.lead-gen",
@@ -54,6 +55,7 @@ var ORGANIZATION_MODEL_ICON_TOKENS = [
54
55
  "knowledge.strategy",
55
56
  "knowledge.reference",
56
57
  "feature.dashboard",
58
+ "feature.calendar",
57
59
  "feature.sales",
58
60
  "feature.crm",
59
61
  "feature.finance",
@@ -77,6 +79,7 @@ var ORGANIZATION_MODEL_ICON_TOKENS = [
77
79
  "integration.google-sheets",
78
80
  "integration.attio",
79
81
  "surface.dashboard",
82
+ "surface.calendar",
80
83
  "surface.overview",
81
84
  "surface.command-view",
82
85
  "surface.command-queue",
@@ -243,13 +246,64 @@ function findPipeline(definitions, pipelineKey) {
243
246
  return definitions.find((def) => def.pipelineKey === pipelineKey);
244
247
  }
245
248
  var CRM_DISCOVERY_REPLIED_STATE = {
246
- stateKey: "discovery_replied"};
249
+ stateKey: "discovery_replied",
250
+ label: "Discovery Replied"
251
+ };
247
252
  var CRM_DISCOVERY_LINK_SENT_STATE = {
248
- stateKey: "discovery_link_sent"};
253
+ stateKey: "discovery_link_sent",
254
+ label: "Discovery Link Sent"
255
+ };
249
256
  var CRM_DISCOVERY_NUDGING_STATE = {
250
- stateKey: "discovery_nudging"};
257
+ stateKey: "discovery_nudging",
258
+ label: "Discovery Nudging"
259
+ };
251
260
  var CRM_DISCOVERY_BOOKING_CANCELLED_STATE = {
252
- stateKey: "discovery_booking_cancelled"};
261
+ stateKey: "discovery_booking_cancelled",
262
+ label: "Discovery Booking Cancelled"
263
+ };
264
+ var CRM_REPLY_SENT_STATE = {
265
+ stateKey: "reply_sent",
266
+ label: "Reply Sent"
267
+ };
268
+ var CRM_FOLLOWUP_1_SENT_STATE = {
269
+ stateKey: "followup_1_sent",
270
+ label: "Follow-up 1 Sent"
271
+ };
272
+ var CRM_FOLLOWUP_2_SENT_STATE = {
273
+ stateKey: "followup_2_sent",
274
+ label: "Follow-up 2 Sent"
275
+ };
276
+ var CRM_FOLLOWUP_3_SENT_STATE = {
277
+ stateKey: "followup_3_sent",
278
+ label: "Follow-up 3 Sent"
279
+ };
280
+ var CRM_PIPELINE_DEFINITION = {
281
+ pipelineKey: "crm",
282
+ label: "CRM",
283
+ entityKey: "crm.deal",
284
+ stages: [
285
+ {
286
+ stageKey: "interested",
287
+ label: "Interested",
288
+ color: "blue",
289
+ states: [
290
+ CRM_DISCOVERY_REPLIED_STATE,
291
+ CRM_DISCOVERY_LINK_SENT_STATE,
292
+ CRM_DISCOVERY_NUDGING_STATE,
293
+ CRM_DISCOVERY_BOOKING_CANCELLED_STATE,
294
+ CRM_REPLY_SENT_STATE,
295
+ CRM_FOLLOWUP_1_SENT_STATE,
296
+ CRM_FOLLOWUP_2_SENT_STATE,
297
+ CRM_FOLLOWUP_3_SENT_STATE
298
+ ]
299
+ },
300
+ { stageKey: "proposal", label: "Proposal", color: "yellow", states: [] },
301
+ { stageKey: "closing", label: "Closing", color: "orange", states: [] },
302
+ { stageKey: "closed_won", label: "Closed Won", color: "green", states: [] },
303
+ { stageKey: "closed_lost", label: "Closed Lost", color: "red", states: [] },
304
+ { stageKey: "nurturing", label: "Nurturing", color: "grape", states: [] }
305
+ ]
306
+ };
253
307
  var CRM_PRIORITY_BUCKETS = [
254
308
  { bucketKey: "needs_response", label: "Needs Response", rank: 10, color: "red" },
255
309
  { bucketKey: "follow_up_due", label: "Follow-up Due", rank: 20, color: "orange" },
@@ -343,15 +397,15 @@ var LEAD_GEN_STAGE_CATALOG = {
343
397
  },
344
398
  populated: {
345
399
  key: "populated",
346
- label: "Populated",
347
- description: "Company record populated with structured data from scrape results.",
400
+ label: "Companies found",
401
+ description: "Companies have been found and added to the lead-gen list.",
348
402
  order: 2,
349
403
  entity: "company"
350
404
  },
351
405
  extracted: {
352
406
  key: "extracted",
353
- label: "Extracted",
354
- description: "Website content extracted and parsed for company intelligence.",
407
+ label: "Websites analyzed",
408
+ description: "Company websites have been analyzed for business signals.",
355
409
  order: 3,
356
410
  entity: "company"
357
411
  },
@@ -362,27 +416,34 @@ var LEAD_GEN_STAGE_CATALOG = {
362
416
  order: 4,
363
417
  entity: "company"
364
418
  },
419
+ "decision-makers-enriched": {
420
+ key: "decision-makers-enriched",
421
+ label: "Decision-makers found",
422
+ description: "Decision-maker contacts discovered and attached to a qualified company.",
423
+ order: 6,
424
+ entity: "company"
425
+ },
365
426
  // Prospecting — contact discovery
366
427
  discovered: {
367
428
  key: "discovered",
368
- label: "Discovered",
369
- description: "Contact email address discovered via an email-discovery workflow.",
429
+ label: "Decision-makers found",
430
+ description: "Decision-maker contact details have been found.",
370
431
  order: 5,
371
432
  entity: "contact"
372
433
  },
373
434
  verified: {
374
435
  key: "verified",
375
- label: "Verified",
376
- description: "Contact email address verified as deliverable (email verification workflow).",
377
- order: 6,
436
+ label: "Emails verified",
437
+ description: "Contact email addresses have been checked for deliverability.",
438
+ order: 7,
378
439
  entity: "contact"
379
440
  },
380
441
  // Qualification
381
442
  qualified: {
382
443
  key: "qualified",
383
- label: "Qualified",
384
- description: "Company passed the ICP qualification rubric (company-qualification workflow).",
385
- order: 7,
444
+ label: "Companies qualified",
445
+ description: "Companies have been scored against the qualification criteria.",
446
+ order: 8,
386
447
  entity: "company"
387
448
  },
388
449
  // Outreach
@@ -390,21 +451,21 @@ var LEAD_GEN_STAGE_CATALOG = {
390
451
  key: "personalized",
391
452
  label: "Personalized",
392
453
  description: "Outreach message personalized for the contact (Instantly personalization workflow).",
393
- order: 8,
454
+ order: 9,
394
455
  entity: "contact"
395
456
  },
396
457
  uploaded: {
397
458
  key: "uploaded",
398
- label: "Uploaded",
399
- description: "Contact uploaded to an Instantly campaign for outreach.",
400
- order: 9,
459
+ label: "Reviewed and exported",
460
+ description: "Approved records have been reviewed and exported for handoff.",
461
+ order: 10,
401
462
  entity: "contact"
402
463
  },
403
464
  interested: {
404
465
  key: "interested",
405
466
  label: "Interested",
406
467
  description: "Contact replied with a positive signal (Instantly reply-handler transition).",
407
- order: 10,
468
+ order: 11,
408
469
  entity: "contact"
409
470
  }
410
471
  };
@@ -464,8 +525,6 @@ function parseMs(value) {
464
525
  const ms = new Date(value).getTime();
465
526
  return Number.isNaN(ms) ? null : ms;
466
527
  }
467
-
468
- // ../core/src/business/acquisition/derive-actions.ts
469
528
  var SendReplyActionPayloadSchema = z.object({
470
529
  replyBody: z.string().trim().min(1).max(1e4)
471
530
  }).strict();
@@ -659,4 +718,4 @@ function OrgServiceBridge({
659
718
  return /* @__PURE__ */ jsx(ElevasisServiceProvider, { apiRequest, organizationId: currentWorkOSOrganizationId, isReady, children: /* @__PURE__ */ jsx(NotificationProvider, { adapter: notifications, children: /* @__PURE__ */ jsx(InitializationProvider, { children }) }) });
660
719
  }
661
720
 
662
- export { CRM_PRIORITY_BUCKETS, ColorTokenSchema, CrmActionsProvider, DEFAULT_CRM_PRIORITY_RULE_CONFIG, DEFAULT_ORGANIZATION_MODEL_SALES, DescriptionSchema, DisplayMetadataSchema, EMPTY_LIST_ACTIONS, ElevasisCoreProvider, IconNameSchema, LEAD_GEN_PIPELINE_DEFINITIONS, LEAD_GEN_STAGE_CATALOG, LabelSchema, ListActionsProvider, ModelIdSchema, NotificationProvider, OrganizationModelSalesSchema, PathSchema, ReferenceIdsSchema, deriveActions, findListActionByCapability, findPipeline, getListActionWorkflowId, useCrmActions, useListActions, useNotificationAdapter };
721
+ export { CRM_PIPELINE_DEFINITION, CRM_PRIORITY_BUCKETS, ColorTokenSchema, CrmActionsProvider, DEFAULT_CRM_PRIORITY_RULE_CONFIG, DEFAULT_ORGANIZATION_MODEL_SALES, DescriptionSchema, DisplayMetadataSchema, EMPTY_LIST_ACTIONS, ElevasisCoreProvider, IconNameSchema, LEAD_GEN_PIPELINE_DEFINITIONS, LEAD_GEN_STAGE_CATALOG, LabelSchema, ListActionsProvider, ModelIdSchema, NotificationProvider, OrganizationModelSalesSchema, PathSchema, ReferenceIdsSchema, deriveActions, findListActionByCapability, findPipeline, getListActionWorkflowId, useCrmActions, useListActions, useNotificationAdapter };