@elevasis/ui 2.28.0 → 2.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) 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-YO2YORW4.js → chunk-3HCTCMAS.js} +3 -3
  6. package/dist/{chunk-LWKZ3BCC.js → chunk-5R27NFOI.js} +4 -4
  7. package/dist/{chunk-JPGX3533.js → chunk-AYSO5A3R.js} +2 -2
  8. package/dist/{chunk-ONFKASZI.js → chunk-CT5IR4ZA.js} +1 -1
  9. package/dist/{chunk-RIFTUOPE.js → chunk-GJXAAYZ3.js} +1 -1
  10. package/dist/{chunk-OGXKOMUT.js → chunk-HNN3QALL.js} +2 -2
  11. package/dist/{chunk-KEFWANZY.js → chunk-JCGD4GM6.js} +5 -1
  12. package/dist/chunk-JS7VBTC4.js +250 -0
  13. package/dist/{chunk-G66QFZXD.js → chunk-K4Q5QUHZ.js} +15 -9
  14. package/dist/{chunk-UPMX5GJI.js → chunk-M6OJ43NL.js} +32 -5
  15. package/dist/{chunk-WUVR4QY6.js → chunk-MCRKFDKB.js} +4 -4
  16. package/dist/{chunk-ZFLM2YVW.js → chunk-MJMFIWEB.js} +1 -1
  17. package/dist/{chunk-G26INIF3.js → chunk-MZCDRBSI.js} +1 -1
  18. package/dist/{chunk-YHBPR67D.js → chunk-N63RKL3L.js} +4 -4
  19. package/dist/{chunk-W2ZTLH7Y.js → chunk-NU5FNTOB.js} +29 -21
  20. package/dist/{chunk-OHXU5WWK.js → chunk-PBNIW7KV.js} +12 -6
  21. package/dist/{chunk-QD4X4H5A.js → chunk-SRNIHB7Y.js} +1 -1
  22. package/dist/{chunk-XZSEPJZQ.js → chunk-TVJROM2V.js} +5 -5
  23. package/dist/{chunk-JKBGDFX2.js → chunk-UOHOKDKL.js} +378 -254
  24. package/dist/{chunk-UY5I2KOZ.js → chunk-YNYGUVGW.js} +8 -8
  25. package/dist/{chunk-SGS4CQ2B.js → chunk-ZPXV5KI3.js} +1 -1
  26. package/dist/components/index.d.ts +16 -14
  27. package/dist/components/index.js +25 -25
  28. package/dist/features/auth/index.d.ts +6 -12
  29. package/dist/features/auth/index.js +1 -0
  30. package/dist/features/crm/index.d.ts +16 -14
  31. package/dist/features/crm/index.js +9 -9
  32. package/dist/features/dashboard/index.d.ts +16 -3
  33. package/dist/features/dashboard/index.js +10 -10
  34. package/dist/features/delivery/index.d.ts +6 -12
  35. package/dist/features/delivery/index.js +9 -9
  36. package/dist/features/knowledge/index.js +20 -12
  37. package/dist/features/lead-gen/index.d.ts +171 -24
  38. package/dist/features/lead-gen/index.js +10 -10
  39. package/dist/features/monitoring/index.js +11 -11
  40. package/dist/features/monitoring/requests/index.js +8 -8
  41. package/dist/features/operations/index.d.ts +16 -3
  42. package/dist/features/operations/index.js +15 -15
  43. package/dist/features/settings/index.d.ts +6 -12
  44. package/dist/features/settings/index.js +9 -9
  45. package/dist/hooks/delivery/index.d.ts +6 -12
  46. package/dist/hooks/delivery/index.js +2 -2
  47. package/dist/hooks/index.d.ts +110 -28
  48. package/dist/hooks/index.js +8 -8
  49. package/dist/hooks/published.d.ts +110 -28
  50. package/dist/hooks/published.js +8 -8
  51. package/dist/index.d.ts +148 -28
  52. package/dist/index.js +8 -8
  53. package/dist/initialization/index.d.ts +6 -12
  54. package/dist/knowledge/index.d.ts +43 -0
  55. package/dist/knowledge/index.js +49 -12
  56. package/dist/profile/index.d.ts +6 -12
  57. package/dist/provider/index.d.ts +44 -12
  58. package/dist/provider/index.js +6 -6
  59. package/dist/provider/published.d.ts +44 -12
  60. package/dist/provider/published.js +5 -5
  61. package/dist/supabase/index.d.ts +12 -24
  62. package/dist/test-utils/index.js +2 -2
  63. package/dist/typeform/index.d.ts +5 -1
  64. package/dist/typeform/index.js +52 -7
  65. package/dist/types/index.d.ts +7 -13
  66. package/dist/utils/index.js +1 -1
  67. package/package.json +4 -4
  68. package/dist/chunk-4KTLOK7K.js +0 -230
package/dist/api/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import '../chunk-XCYKC6OZ.js';
2
- export { ApiClientProvider, useApiClient, useApiClientContext } from '../chunk-SGS4CQ2B.js';
3
- import '../chunk-QD4X4H5A.js';
2
+ export { ApiClientProvider, useApiClient, useApiClientContext } from '../chunk-ZPXV5KI3.js';
3
+ import '../chunk-SRNIHB7Y.js';
4
4
  import '../chunk-KRWALB24.js';
5
5
  import '../chunk-DD3CCMCZ.js';
6
6
  import '../chunk-I2KLQ2HA.js';
@@ -78,7 +78,7 @@ type Database = {
78
78
  name: string;
79
79
  num_employees: number | null;
80
80
  organization_id: string;
81
- pipeline_status: Json;
81
+ processing_state: Json;
82
82
  qualification_rubric_key: string | null;
83
83
  qualification_score: number | null;
84
84
  qualification_signals: Json | null;
@@ -104,7 +104,7 @@ type Database = {
104
104
  name: string;
105
105
  num_employees?: number | null;
106
106
  organization_id: string;
107
- pipeline_status?: Json;
107
+ processing_state?: Json;
108
108
  qualification_rubric_key?: string | null;
109
109
  qualification_score?: number | null;
110
110
  qualification_signals?: Json | null;
@@ -130,7 +130,7 @@ type Database = {
130
130
  name?: string;
131
131
  num_employees?: number | null;
132
132
  organization_id?: string;
133
- pipeline_status?: Json;
133
+ processing_state?: Json;
134
134
  qualification_rubric_key?: string | null;
135
135
  qualification_score?: number | null;
136
136
  qualification_signals?: Json | null;
@@ -169,7 +169,7 @@ type Database = {
169
169
  nurture: boolean;
170
170
  opening_line: string | null;
171
171
  organization_id: string;
172
- pipeline_status: Json;
172
+ processing_state: Json;
173
173
  qualification_rubric_key: string | null;
174
174
  qualification_score: number | null;
175
175
  qualification_signals: Json | null;
@@ -197,7 +197,7 @@ type Database = {
197
197
  nurture?: boolean;
198
198
  opening_line?: string | null;
199
199
  organization_id: string;
200
- pipeline_status?: Json;
200
+ processing_state?: Json;
201
201
  qualification_rubric_key?: string | null;
202
202
  qualification_score?: number | null;
203
203
  qualification_signals?: Json | null;
@@ -225,7 +225,7 @@ type Database = {
225
225
  nurture?: boolean;
226
226
  opening_line?: string | null;
227
227
  organization_id?: string;
228
- pipeline_status?: Json;
228
+ processing_state?: Json;
229
229
  qualification_rubric_key?: string | null;
230
230
  qualification_score?: number | null;
231
231
  qualification_signals?: Json | null;
@@ -621,7 +621,6 @@ type Database = {
621
621
  id: string;
622
622
  list_id: string;
623
623
  pipeline_key: string;
624
- processing_state: Json;
625
624
  source_execution_id: string | null;
626
625
  source_input_hash: string | null;
627
626
  source_resource_id: string | null;
@@ -636,7 +635,6 @@ type Database = {
636
635
  id?: string;
637
636
  list_id: string;
638
637
  pipeline_key?: string;
639
- processing_state?: Json;
640
638
  source_execution_id?: string | null;
641
639
  source_input_hash?: string | null;
642
640
  source_resource_id?: string | null;
@@ -651,7 +649,6 @@ type Database = {
651
649
  id?: string;
652
650
  list_id?: string;
653
651
  pipeline_key?: string;
654
- processing_state?: Json;
655
652
  source_execution_id?: string | null;
656
653
  source_input_hash?: string | null;
657
654
  source_resource_id?: string | null;
@@ -730,7 +727,6 @@ type Database = {
730
727
  id: string;
731
728
  list_id: string;
732
729
  pipeline_key: string;
733
- processing_state: Json;
734
730
  source_execution_id: string | null;
735
731
  source_input_hash: string | null;
736
732
  source_resource_id: string | null;
@@ -745,7 +741,6 @@ type Database = {
745
741
  id?: string;
746
742
  list_id: string;
747
743
  pipeline_key?: string;
748
- processing_state?: Json;
749
744
  source_execution_id?: string | null;
750
745
  source_input_hash?: string | null;
751
746
  source_resource_id?: string | null;
@@ -760,7 +755,6 @@ type Database = {
760
755
  id?: string;
761
756
  list_id?: string;
762
757
  pipeline_key?: string;
763
- processing_state?: Json;
764
758
  source_execution_id?: string | null;
765
759
  source_input_hash?: string | null;
766
760
  source_resource_id?: string | null;
package/dist/app/index.js CHANGED
@@ -1,13 +1,13 @@
1
- import { ElevasisUIProvider } from '../chunk-JPGX3533.js';
1
+ import { ElevasisUIProvider } from '../chunk-AYSO5A3R.js';
2
2
  import '../chunk-LH4GPYDX.js';
3
3
  import '../chunk-HLFFKKT3.js';
4
4
  import '../chunk-WLOQ4IBG.js';
5
- import '../chunk-W2ZTLH7Y.js';
5
+ import '../chunk-NU5FNTOB.js';
6
6
  import '../chunk-SZHARWKU.js';
7
- import '../chunk-SGS4CQ2B.js';
7
+ import '../chunk-ZPXV5KI3.js';
8
8
  import '../chunk-HOIT677G.js';
9
9
  import '../chunk-E565XMTQ.js';
10
- import '../chunk-QD4X4H5A.js';
10
+ import '../chunk-SRNIHB7Y.js';
11
11
  import '../chunk-KRWALB24.js';
12
12
  import { useInitialization } from '../chunk-WKJ47GIW.js';
13
13
  import '../chunk-DD3CCMCZ.js';
@@ -1,14 +1,14 @@
1
- export { ActivityTrendChart, ChartFrame, CombinedTrendChart, CostTrendChart, HeroStatsRow } from '../chunk-OGXKOMUT.js';
1
+ export { ActivityTrendChart, ChartFrame, CombinedTrendChart, CostTrendChart, HeroStatsRow } from '../chunk-HNN3QALL.js';
2
2
  export { CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, getSeriesColor, useCyberColors } from '../chunk-CW3UNAF2.js';
3
3
  import '../chunk-VKMNWHTL.js';
4
- import '../chunk-RIFTUOPE.js';
4
+ import '../chunk-GJXAAYZ3.js';
5
5
  import '../chunk-3KMDHCAR.js';
6
6
  import '../chunk-SZHARWKU.js';
7
7
  import '../chunk-NYBEU5TE.js';
8
8
  import '../chunk-2IFYDILW.js';
9
9
  import '../chunk-Q7DJKLEN.js';
10
10
  import '../chunk-DT3QYZVU.js';
11
- import '../chunk-QD4X4H5A.js';
11
+ import '../chunk-SRNIHB7Y.js';
12
12
  import '../chunk-KRWALB24.js';
13
13
  import '../chunk-WFTNY755.js';
14
14
  import '../chunk-WKJ47GIW.js';
@@ -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-N63RKL3L.js';
3
+ import { CardHeader, EmptyState } from './chunk-GJXAAYZ3.js';
4
+ import { getTimeRangeDates, formatBucketTime } from './chunk-SRNIHB7Y.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,13 +1,13 @@
1
- import { CostTrendChart, ActivityTrendChart } from './chunk-OGXKOMUT.js';
1
+ import { CostTrendChart, ActivityTrendChart } from './chunk-HNN3QALL.js';
2
2
  import { CyberAreaChart } from './chunk-CW3UNAF2.js';
3
3
  import { AppShellLoader } from './chunk-RYTEQBAO.js';
4
4
  import { FilterBar } from './chunk-PDHTXPSF.js';
5
5
  import { CustomModal } from './chunk-KVJ3LFH2.js';
6
6
  import { formatDuration } from './chunk-E4WQGJNS.js';
7
- import { useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useExecutionLogsFilters, useExecutionLogs, useExecutionHealth, useErrorAnalysis, useTimeRangeDates, useErrorDetail, useResolveErrorsByExecution, useResources, useCostTrends, useCostSummary, useCostByModel, useCostBreakdown, useActivityFilters, useActivityTrend, useActivities, useNotifications, useMarkAllAsRead, useTestNotification } from './chunk-YHBPR67D.js';
8
- import { CenteredErrorState, CardHeader, StatsCardSkeleton, TrendIndicator, DetailCardSkeleton, EmptyState, PageTitleCaption, JsonViewer } from './chunk-RIFTUOPE.js';
7
+ import { useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useExecutionLogsFilters, useExecutionLogs, useExecutionHealth, useErrorAnalysis, useTimeRangeDates, useErrorDetail, useResolveErrorsByExecution, useResources, useCostTrends, useCostSummary, useCostByModel, useCostBreakdown, useActivityFilters, useActivityTrend, useActivities, useNotifications, useMarkAllAsRead, useTestNotification } from './chunk-N63RKL3L.js';
8
+ import { CenteredErrorState, CardHeader, StatsCardSkeleton, TrendIndicator, DetailCardSkeleton, EmptyState, PageTitleCaption, JsonViewer } from './chunk-GJXAAYZ3.js';
9
9
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
10
- import { formatBucketTime, PAGE_SIZE_DEFAULT, getTimeRangeDates } from './chunk-QD4X4H5A.js';
10
+ import { formatBucketTime, PAGE_SIZE_DEFAULT, getTimeRangeDates } from './chunk-SRNIHB7Y.js';
11
11
  import { useState, useMemo, useCallback } from 'react';
12
12
  import { Table, Text, Badge, Tooltip, Card, Group, Select, SegmentedControl, Button, TextInput, Stack, Paper, Center, Loader, ActionIcon, NumberFormatter, Box, Alert, Switch, Pagination, UnstyledButton, Title, Divider, Code, CopyButton, Accordion } from '@mantine/core';
13
13
  import { IconActivity, IconFilterOff, IconCircleCheck, IconThumbDown, IconThumbUp, IconClock, IconCircleX, IconSearch, IconArrowUpRight, IconAlertTriangle, IconAlertCircle, IconExternalLink, IconChartPie, IconHeartbeat, IconDownload, IconCpu, IconTrendingUp, IconChartBar, IconCash, IconInfoCircle, IconExclamationCircle, IconBug, IconChecks, IconCircle, IconCircleFilled, IconCheck, IconCopy, IconCircleDashed, IconPlus, IconArrowUp, IconArrowDown, IconFileOff, IconRobot, IconKey, IconUser } from '@tabler/icons-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-NU5FNTOB.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-SRNIHB7Y.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,4 +1,4 @@
1
- import { SemanticIcon } from './chunk-KEFWANZY.js';
1
+ import { SemanticIcon } from './chunk-JCGD4GM6.js';
2
2
  import { Stack, Group, Title, Text, Box, Divider, useTree, Tree, UnstyledButton, TextInput } from '@mantine/core';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
  import { useMemo, useState, useRef, useEffect } from 'react';
@@ -1,6 +1,6 @@
1
1
  import { StyledMarkdown } from './chunk-3KMDHCAR.js';
2
2
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
3
- import { getErrorInfo, getErrorTitle, getResourceIcon, formatTimeAgo } from './chunk-QD4X4H5A.js';
3
+ import { getErrorInfo, getErrorTitle, getResourceIcon, formatTimeAgo } from './chunk-SRNIHB7Y.js';
4
4
  import { ResourceStatusColors } from './chunk-KRWALB24.js';
5
5
  import { useAuthContext } from './chunk-BRJ3QZ4E.js';
6
6
  import { Center, Stack, Title, Text, Button, Box, Loader, Badge, Group, Collapse, ScrollArea, Card, Select, Alert, Code, ThemeIcon, Paper, Grid, Timeline, Space } from '@mantine/core';
@@ -1,7 +1,7 @@
1
1
  import { CyberAreaChart, useCyberColors, CyberLegendItem } from './chunk-CW3UNAF2.js';
2
2
  import { useErrorTrends } from './chunk-VKMNWHTL.js';
3
- import { CardHeader, CenteredErrorState, TrendIndicator, EmptyState, StatCard } from './chunk-RIFTUOPE.js';
4
- import { getTimeRangeLabel, getTimeRangeDates, formatBucketTime } from './chunk-QD4X4H5A.js';
3
+ import { CardHeader, CenteredErrorState, TrendIndicator, EmptyState, StatCard } from './chunk-GJXAAYZ3.js';
4
+ import { getTimeRangeLabel, getTimeRangeDates, formatBucketTime } from './chunk-SRNIHB7Y.js';
5
5
  import { useRef, useState, useLayoutEffect, useEffect, useMemo, useCallback } from 'react';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
7
7
  import { Center, Loader, Paper, Button, Group, Text, NumberFormatter, Badge, Space, Tooltip, SimpleGrid, Alert, SegmentedControl, Box } from '@mantine/core';
@@ -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,
@@ -0,0 +1,250 @@
1
+ import { DisplayMetadataSchema, ModelIdSchema, DescriptionSchema, LEAD_GEN_STAGE_CATALOG } from './chunk-NU5FNTOB.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
+ var PROSPECTING_STEPS = {
27
+ localServices: {
28
+ sourceCompanies: {
29
+ id: "source-companies",
30
+ label: "Companies found",
31
+ primaryEntity: "company",
32
+ outputs: ["company"],
33
+ stageKey: "populated",
34
+ dependencyMode: "per-record-eligibility",
35
+ capabilityKey: "lead-gen.company.source",
36
+ defaultBatchSize: 100,
37
+ maxBatchSize: 250
38
+ },
39
+ analyzeWebsites: {
40
+ id: "analyze-websites",
41
+ label: "Websites analyzed",
42
+ primaryEntity: "company",
43
+ outputs: ["company"],
44
+ stageKey: "extracted",
45
+ dependsOn: ["source-companies"],
46
+ dependencyMode: "per-record-eligibility",
47
+ capabilityKey: "lead-gen.company.website-extract",
48
+ defaultBatchSize: 50,
49
+ maxBatchSize: 100
50
+ },
51
+ qualifyCompanies: {
52
+ id: "qualify-companies",
53
+ label: "Companies qualified",
54
+ primaryEntity: "company",
55
+ outputs: ["company"],
56
+ stageKey: "qualified",
57
+ dependsOn: ["analyze-websites"],
58
+ dependencyMode: "per-record-eligibility",
59
+ capabilityKey: "lead-gen.company.qualify",
60
+ defaultBatchSize: 100,
61
+ maxBatchSize: 250
62
+ },
63
+ findContacts: {
64
+ id: "find-contacts",
65
+ label: "Decision-makers found",
66
+ primaryEntity: "contact",
67
+ outputs: ["contact"],
68
+ stageKey: "discovered",
69
+ dependsOn: ["qualify-companies"],
70
+ dependencyMode: "per-record-eligibility",
71
+ capabilityKey: "lead-gen.contact.discover",
72
+ defaultBatchSize: 50,
73
+ maxBatchSize: 100
74
+ },
75
+ verifyEmails: {
76
+ id: "verify-emails",
77
+ label: "Emails verified",
78
+ primaryEntity: "contact",
79
+ outputs: ["contact"],
80
+ stageKey: "verified",
81
+ dependsOn: ["find-contacts"],
82
+ dependencyMode: "per-record-eligibility",
83
+ capabilityKey: "lead-gen.contact.verify-email",
84
+ defaultBatchSize: 100,
85
+ maxBatchSize: 500
86
+ },
87
+ personalize: {
88
+ id: "personalize",
89
+ label: "Personalize",
90
+ primaryEntity: "contact",
91
+ outputs: ["contact"],
92
+ stageKey: "personalized",
93
+ dependsOn: ["verify-emails"],
94
+ dependencyMode: "per-record-eligibility",
95
+ capabilityKey: "lead-gen.contact.personalize",
96
+ defaultBatchSize: 25,
97
+ maxBatchSize: 100
98
+ },
99
+ review: {
100
+ id: "review",
101
+ label: "Reviewed and exported",
102
+ primaryEntity: "contact",
103
+ outputs: ["export"],
104
+ stageKey: "uploaded",
105
+ dependsOn: ["personalize"],
106
+ dependencyMode: "per-record-eligibility",
107
+ capabilityKey: "lead-gen.review.outreach-ready",
108
+ defaultBatchSize: 25,
109
+ maxBatchSize: 100
110
+ }
111
+ },
112
+ dtcApolloClickup: {
113
+ importApolloSearch: {
114
+ id: "import-apollo-search",
115
+ label: "Companies found",
116
+ description: "Pull companies and seed contact data from a predefined Apollo search or list.",
117
+ primaryEntity: "company",
118
+ outputs: ["company", "contact"],
119
+ stageKey: "populated",
120
+ dependencyMode: "per-record-eligibility",
121
+ capabilityKey: "lead-gen.company.apollo-import",
122
+ defaultBatchSize: 250,
123
+ maxBatchSize: 1e3
124
+ },
125
+ analyzeWebsites: {
126
+ id: "analyze-websites",
127
+ label: "Websites analyzed",
128
+ description: "Extract subscription, product, retention, and tech-stack signals from each brand website.",
129
+ primaryEntity: "company",
130
+ outputs: ["company"],
131
+ stageKey: "extracted",
132
+ dependsOn: ["import-apollo-search"],
133
+ dependencyMode: "per-record-eligibility",
134
+ capabilityKey: "lead-gen.company.website-extract",
135
+ defaultBatchSize: 50,
136
+ maxBatchSize: 100
137
+ },
138
+ scoreDtcFit: {
139
+ id: "score-dtc-fit",
140
+ label: "Companies qualified",
141
+ description: "Classify subscription potential, consumable-product fit, retention maturity, and disqualifiers.",
142
+ primaryEntity: "company",
143
+ outputs: ["company"],
144
+ stageKey: "qualified",
145
+ dependsOn: ["analyze-websites"],
146
+ dependencyMode: "per-record-eligibility",
147
+ capabilityKey: "lead-gen.company.dtc-subscription-qualify",
148
+ defaultBatchSize: 100,
149
+ maxBatchSize: 250
150
+ },
151
+ enrichDecisionMakers: {
152
+ id: "enrich-decision-makers",
153
+ label: "Decision-makers found",
154
+ description: "Use Apollo to find qualified contacts at qualified companies - founders, retention leads, lifecycle leads, and marketing owners.",
155
+ primaryEntity: "company",
156
+ outputs: ["contact"],
157
+ stageKey: "decision-makers-enriched",
158
+ dependsOn: ["score-dtc-fit"],
159
+ dependencyMode: "per-record-eligibility",
160
+ capabilityKey: "lead-gen.contact.apollo-decision-maker-enrich",
161
+ defaultBatchSize: 100,
162
+ maxBatchSize: 250
163
+ },
164
+ verifyEmails: {
165
+ id: "verify-emails",
166
+ label: "Emails verified",
167
+ description: "Verify deliverability before the QC and handoff step.",
168
+ primaryEntity: "contact",
169
+ outputs: ["contact"],
170
+ stageKey: "verified",
171
+ dependsOn: ["enrich-decision-makers"],
172
+ dependencyMode: "per-record-eligibility",
173
+ capabilityKey: "lead-gen.contact.verify-email",
174
+ defaultBatchSize: 250,
175
+ maxBatchSize: 500
176
+ },
177
+ reviewAndExport: {
178
+ id: "review-and-export",
179
+ label: "Reviewed and exported",
180
+ description: "Operator QC approves or rejects leads, then approved records are exported as a lead list.",
181
+ primaryEntity: "company",
182
+ outputs: ["export"],
183
+ stageKey: "uploaded",
184
+ dependsOn: ["verify-emails"],
185
+ dependencyMode: "per-record-eligibility",
186
+ capabilityKey: "lead-gen.export.list",
187
+ defaultBatchSize: 100,
188
+ maxBatchSize: 250
189
+ }
190
+ }
191
+ };
192
+ var OrganizationModelProspectingSchema = z.object({
193
+ listEntityId: ModelIdSchema,
194
+ companyEntityId: ModelIdSchema,
195
+ contactEntityId: ModelIdSchema,
196
+ description: DescriptionSchema.optional(),
197
+ companyStages: z.array(ProspectingLifecycleStageSchema).min(1),
198
+ contactStages: z.array(ProspectingLifecycleStageSchema).min(1),
199
+ defaultBuildTemplateId: ModelIdSchema,
200
+ buildTemplates: z.array(ProspectingBuildTemplateSchema).min(1)
201
+ });
202
+ function toProspectingLifecycleStage(stage) {
203
+ return {
204
+ id: stage.key,
205
+ label: stage.label,
206
+ order: stage.order
207
+ };
208
+ }
209
+ function leadGenStagesForEntity(entity) {
210
+ return Object.values(LEAD_GEN_STAGE_CATALOG).filter((stage) => stage.entity === entity).sort((a, b) => a.order - b.order).map(toProspectingLifecycleStage);
211
+ }
212
+ var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
213
+ listEntityId: "leadgen.list",
214
+ companyEntityId: "leadgen.company",
215
+ contactEntityId: "leadgen.contact",
216
+ companyStages: leadGenStagesForEntity("company"),
217
+ contactStages: leadGenStagesForEntity("contact"),
218
+ defaultBuildTemplateId: "local-services",
219
+ buildTemplates: [
220
+ {
221
+ id: "local-services",
222
+ label: "Local Services Prospecting",
223
+ description: "Curated local-services list build using company sourcing, website analysis, qualification, contact discovery, verification, personalization, and review.",
224
+ steps: [
225
+ PROSPECTING_STEPS.localServices.sourceCompanies,
226
+ PROSPECTING_STEPS.localServices.analyzeWebsites,
227
+ PROSPECTING_STEPS.localServices.qualifyCompanies,
228
+ PROSPECTING_STEPS.localServices.findContacts,
229
+ PROSPECTING_STEPS.localServices.verifyEmails,
230
+ PROSPECTING_STEPS.localServices.personalize,
231
+ PROSPECTING_STEPS.localServices.review
232
+ ]
233
+ },
234
+ {
235
+ id: "dtc-subscription-apollo-clickup",
236
+ label: "DTC Subscription Apollo Export",
237
+ 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.",
238
+ steps: [
239
+ PROSPECTING_STEPS.dtcApolloClickup.importApolloSearch,
240
+ PROSPECTING_STEPS.dtcApolloClickup.analyzeWebsites,
241
+ PROSPECTING_STEPS.dtcApolloClickup.scoreDtcFit,
242
+ PROSPECTING_STEPS.dtcApolloClickup.enrichDecisionMakers,
243
+ PROSPECTING_STEPS.dtcApolloClickup.verifyEmails,
244
+ PROSPECTING_STEPS.dtcApolloClickup.reviewAndExport
245
+ ]
246
+ }
247
+ ]
248
+ };
249
+
250
+ export { DEFAULT_ORGANIZATION_MODEL_PROSPECTING, OrganizationModelProspectingSchema, PROSPECTING_STEPS };
@@ -1,14 +1,14 @@
1
1
  import { ZodFormRenderer } from './chunk-3MEXPLWT.js';
2
2
  import { ResourceHealthChart } from './chunk-LGKLC5MG.js';
3
- import { HeroStatsRow } from './chunk-OGXKOMUT.js';
3
+ import { HeroStatsRow } from './chunk-HNN3QALL.js';
4
4
  import { useCyberColors } from './chunk-CW3UNAF2.js';
5
5
  import { AppShellCenteredContainer, AppShellLoader } from './chunk-RYTEQBAO.js';
6
6
  import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, useFitViewTrigger } from './chunk-22UVE3RA.js';
7
7
  import { STATUS_COLORS, getStatusIcon, formatDuration, getStatusColors, AGENT_CONSTANTS, shouldAnimateEdge, TIMELINE_CONSTANTS, calculateBarPosition, CONTAINER_CONSTANTS, useExecutionPath, useUnifiedWorkflowLayout, WORKFLOW_CONSTANTS, useReactFlowAgent } from './chunk-E4WQGJNS.js';
8
- import { useExecuteResource, useDashboardMetrics, useResources, useTimeRangeDates, useUnresolvedErrors, useRecentExecutionsByResource, useCommandQueue, useScheduledTasks, useResourcesHealth } from './chunk-YHBPR67D.js';
8
+ import { useExecuteResource, useDashboardMetrics, useResources, useTimeRangeDates, useUnresolvedErrors, useRecentExecutionsByResource, useCommandQueue, useScheduledTasks, useResourcesHealth } from './chunk-N63RKL3L.js';
9
9
  import { glassBase } from './chunk-LH4GPYDX.js';
10
- import { GlowDot, CardHeader, EmptyState, PageTitleCaption, TabCountBadge } from './chunk-RIFTUOPE.js';
11
- import { formatTimeAgo, getTimeRangeDates, formatRelativeTime } from './chunk-QD4X4H5A.js';
10
+ import { GlowDot, CardHeader, EmptyState, PageTitleCaption, TabCountBadge } from './chunk-GJXAAYZ3.js';
11
+ import { formatTimeAgo, getTimeRangeDates, formatRelativeTime } from './chunk-SRNIHB7Y.js';
12
12
  import { ResourceStatusColors } from './chunk-KRWALB24.js';
13
13
  import { useInitialization } from './chunk-WKJ47GIW.js';
14
14
  import { memo, useMemo, useEffect, useState, useCallback, Fragment } from 'react';
@@ -1406,7 +1406,8 @@ function OperationsOverview({
1406
1406
  onErrorsNavigate,
1407
1407
  onCommandQueueNavigate,
1408
1408
  onScheduledTasksNavigate,
1409
- renderTrendChart
1409
+ renderTrendChart,
1410
+ renderOperationalOverview
1410
1411
  }) {
1411
1412
  const { organizationReady, error: initError } = useInitialization();
1412
1413
  const { data: dashboardDataRaw, isLoading, error } = useDashboardMetrics(timeRange);
@@ -1454,8 +1455,13 @@ function OperationsOverview({
1454
1455
  }) : void 0
1455
1456
  }
1456
1457
  ),
1457
- /* @__PURE__ */ jsx(
1458
- OperationalOverview,
1458
+ renderOperationalOverview ? renderOperationalOverview({
1459
+ timeRange,
1460
+ onErrorsNavigate,
1461
+ onCommandQueueNavigate,
1462
+ onScheduledTasksNavigate
1463
+ }) : /* @__PURE__ */ jsx(
1464
+ DashboardOperationsOverview,
1459
1465
  {
1460
1466
  timeRange,
1461
1467
  onErrorsNavigate,
@@ -1466,7 +1472,7 @@ function OperationsOverview({
1466
1472
  ] });
1467
1473
  }
1468
1474
  var Dashboard = OperationsOverview;
1469
- function OperationalOverview({
1475
+ function DashboardOperationsOverview({
1470
1476
  timeRange,
1471
1477
  onErrorsNavigate,
1472
1478
  onCommandQueueNavigate,
@@ -1866,4 +1872,4 @@ function UnresolvedErrorsTeaser({ timeRange, onNavigateToAllErrors }) {
1866
1872
  );
1867
1873
  }
1868
1874
 
1869
- export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, Dashboard, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, OperationsOverview, RecentExecutionsByResource, ResourceOverview, RunResourceButton, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, UnresolvedErrorsTeaser, VisualizerContainer, WorkflowExecutionTimeline, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme };
1875
+ export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, Dashboard, DashboardOperationsOverview, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, OperationsOverview, RecentExecutionsByResource, ResourceOverview, RunResourceButton, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, UnresolvedErrorsTeaser, VisualizerContainer, WorkflowExecutionTimeline, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme };
@@ -2,12 +2,13 @@ import { AppShellLoader } from './chunk-RYTEQBAO.js';
2
2
  import { FilterBar } from './chunk-PDHTXPSF.js';
3
3
  import { CustomModal } from './chunk-KVJ3LFH2.js';
4
4
  import { useAvailablePresets } from './chunk-XBMCDGHA.js';
5
- import { useDeleteCredential, useCreateCredential, useCredentials, MEMBERSHIP_STATUS_COLORS, transformMembershipToTableRow, useUserMemberships, useUpdateWebhookEndpoint, useResources, useDeleteWebhookEndpoint, useCreateWebhookEndpoint, useListWebhookEndpoints, useOrgRoles, useAssignRole, useRevokeRole, useHasPermission, useUpdateMemberConfig, useOrganizationMembers, useUpdateCredential, CredentialSchemas } from './chunk-YHBPR67D.js';
6
- import { showApiErrorNotification, showErrorNotification, showSuccessNotification } from './chunk-G26INIF3.js';
7
- import { ListSkeleton, EmptyState, PageTitleCaption, CardHeader, APIErrorAlert, StatCard } from './chunk-RIFTUOPE.js';
5
+ import { useDeleteCredential, useCreateCredential, useCredentials, MEMBERSHIP_STATUS_COLORS, transformMembershipToTableRow, useUserMemberships, useUpdateWebhookEndpoint, useResources, useDeleteWebhookEndpoint, useCreateWebhookEndpoint, useListWebhookEndpoints, useOrgRoles, useAssignRole, useRevokeRole, useHasPermission, useUpdateMemberConfig, useOrganizationMembers, useUpdateCredential, CredentialSchemas } from './chunk-N63RKL3L.js';
6
+ import { showApiErrorNotification, showErrorNotification, showSuccessNotification } from './chunk-MZCDRBSI.js';
7
+ import { ListSkeleton, EmptyState, PageTitleCaption, CardHeader, APIErrorAlert, StatCard } from './chunk-GJXAAYZ3.js';
8
8
  import { RoleBadge } from './chunk-GESXCQWY.js';
9
- import { isAPIClientError, formatDateTime, OAUTH_POPUP_CHECK_INTERVAL, OAUTH_FLOW_TIMEOUT } from './chunk-QD4X4H5A.js';
9
+ import { isAPIClientError, formatDateTime, OAUTH_POPUP_CHECK_INTERVAL, OAUTH_FLOW_TIMEOUT } from './chunk-SRNIHB7Y.js';
10
10
  import { useInitialization } from './chunk-WKJ47GIW.js';
11
+ import { useOrganization } from './chunk-DD3CCMCZ.js';
11
12
  import { useElevasisServices } from './chunk-5WWZXCS5.js';
12
13
  import { createUseExternalEvents, Text, Table, Group, Tooltip, ActionIcon, Stack, Title, Button, Select, TextInput, Alert, PasswordInput, Anchor, Paper, Card, Switch, Badge, Center, Loader, Box, Code, CopyButton, ThemeIcon, SimpleGrid, UnstyledButton, Divider, Textarea, Tabs, MultiSelect } from '@mantine/core';
13
14
  import { IconSettings, IconShieldOff, IconKey, IconCalendar, IconPencil, IconTrash, IconAlertTriangle, IconInfoCircle, IconExclamationMark, IconPlus, IconAlertCircle, IconUsers, IconSearch, IconBuilding, IconWebhook, IconCheck, IconCopy, IconUser, IconMail, IconRefresh, IconPalette, IconEye, IconSparkles, IconTrendingUp, IconClock, IconPlayerPause, IconPlayerPlay, IconActivity, IconShieldLock, IconAdjustments, IconBrandDropbox, IconBrandGoogleDrive, IconPlug, IconEdit, IconUserX, IconUserCheck } from '@tabler/icons-react';
@@ -36,6 +37,20 @@ var OAUTH_PROVIDERS = {
36
37
  tokenExchange: "form-encoded",
37
38
  scopes: ["https://www.googleapis.com/auth/spreadsheets"]
38
39
  },
40
+ "google-calendar": {
41
+ id: "google-calendar",
42
+ name: "Google Calendar",
43
+ authUrl: "https://accounts.google.com/o/oauth2/v2/auth",
44
+ tokenUrl: "https://oauth2.googleapis.com/token",
45
+ authParams: {
46
+ access_type: "offline",
47
+ // Required for refresh token
48
+ prompt: "consent"
49
+ // Force consent to get refresh token on reconnect
50
+ },
51
+ tokenExchange: "form-encoded",
52
+ scopes: ["https://www.googleapis.com/auth/calendar.readonly"]
53
+ },
39
54
  dropbox: {
40
55
  id: "dropbox",
41
56
  name: "Dropbox",
@@ -1862,7 +1877,8 @@ function MemberConfigModal({ opened, onClose, member }) {
1862
1877
  function useOAuthFlow({ apiUrl }) {
1863
1878
  const [isAuthorizing, setIsAuthorizing] = useState(false);
1864
1879
  const [error, setError] = useState(null);
1865
- const { organizationId, isReady } = useElevasisServices();
1880
+ const { isReady } = useElevasisServices();
1881
+ const { currentSupabaseOrganizationId: organizationId } = useOrganization();
1866
1882
  const authorize = useCallback(
1867
1883
  async (provider, credentialName) => {
1868
1884
  if (!isReady || !organizationId) {
@@ -2141,6 +2157,17 @@ function OAuthIntegrationsCard({ apiUrl }) {
2141
2157
  setSelectedProviderId(providerId);
2142
2158
  setModalOpened(true);
2143
2159
  };
2160
+ useEffect(() => {
2161
+ const params = new URLSearchParams(window.location.search);
2162
+ const requested = params.get("connect");
2163
+ if (requested && OAUTH_PROVIDERS[requested]) {
2164
+ handleOpenModal(requested);
2165
+ params.delete("connect");
2166
+ const remaining = params.toString();
2167
+ const newUrl = window.location.pathname + (remaining ? `?${remaining}` : "") + window.location.hash;
2168
+ window.history.replaceState({}, "", newUrl);
2169
+ }
2170
+ }, []);
2144
2171
  const providers = Object.values(OAUTH_PROVIDERS);
2145
2172
  const selectedProvider = selectedProviderId ? OAUTH_PROVIDERS[selectedProviderId] : null;
2146
2173
  return /* @__PURE__ */ jsxs(Fragment, { children: [