@elevasis/ui 2.10.2 → 2.12.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.
- package/dist/app/index.js +2 -2
- package/dist/{chunk-YQLE5HR5.js → chunk-235RO24Z.js} +2 -2
- package/dist/chunk-3ZMAGTWF.js +18 -0
- package/dist/{chunk-AT5XCBTU.js → chunk-7PLBPEBW.js} +2 -2
- package/dist/chunk-BRXELOHC.js +47 -0
- package/dist/{chunk-KYOF6NYW.js → chunk-ETWKPFOO.js} +1 -1
- package/dist/{chunk-M6ZZ2FW5.js → chunk-F6SMVMFC.js} +3 -3
- package/dist/{chunk-GJVGV7QZ.js → chunk-GHCYUZZE.js} +276 -5
- package/dist/{chunk-XA34RETF.js → chunk-GHIPBT5V.js} +1 -14
- package/dist/{chunk-TSX4I3NW.js → chunk-ISVFJCPP.js} +1 -1
- package/dist/{chunk-WHQXDETX.js → chunk-MISBW6WW.js} +124 -5
- package/dist/{chunk-LPSBID5V.js → chunk-PXFV47B3.js} +1 -1
- package/dist/{chunk-CLXMNMIS.js → chunk-TXZXMTZB.js} +652 -110
- package/dist/{chunk-6PNHW4X2.js → chunk-TYWZABTP.js} +115 -137
- package/dist/{chunk-E3IFHX6A.js → chunk-WM7JTTPX.js} +494 -311
- package/dist/{chunk-CYT4PORT.js → chunk-ZKCQEHEJ.js} +7 -51
- package/dist/components/index.d.ts +241 -3
- package/dist/components/index.js +20 -18
- package/dist/execution/index.js +2 -1
- package/dist/features/auth/index.d.ts +85 -0
- package/dist/features/crm/index.d.ts +94 -2
- package/dist/features/crm/index.js +6 -4
- package/dist/features/dashboard/index.js +7 -5
- package/dist/features/delivery/index.d.ts +132 -13
- package/dist/features/delivery/index.js +6 -4
- package/dist/features/lead-gen/index.js +10 -8
- package/dist/features/monitoring/index.js +8 -6
- package/dist/features/operations/index.js +9 -7
- package/dist/features/settings/index.d.ts +85 -0
- package/dist/features/settings/index.js +7 -5
- package/dist/hooks/index.d.ts +426 -52
- package/dist/hooks/index.js +5 -3
- package/dist/hooks/published.d.ts +426 -52
- package/dist/hooks/published.js +5 -3
- package/dist/index.d.ts +387 -23
- package/dist/index.js +7 -5
- package/dist/initialization/index.d.ts +85 -0
- package/dist/profile/index.d.ts +85 -0
- package/dist/provider/index.js +2 -2
- package/dist/supabase/index.d.ts +166 -0
- package/dist/supabase/index.js +2 -47
- package/dist/theme/index.js +2 -2
- package/dist/types/index.d.ts +86 -1
- package/dist/zustand/index.d.ts +0 -4
- package/dist/zustand/index.js +0 -10
- package/package.json +4 -4
package/dist/app/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ElevasisUIProvider } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
import { ElevasisUIProvider } from '../chunk-PXFV47B3.js';
|
|
2
|
+
import '../chunk-TYWZABTP.js';
|
|
3
3
|
import '../chunk-F4TPY6YL.js';
|
|
4
4
|
import '../chunk-R7WLWGPO.js';
|
|
5
5
|
import '../chunk-SZHARWKU.js';
|
|
@@ -2,8 +2,8 @@ import { FilterBar } from './chunk-PDHTXPSF.js';
|
|
|
2
2
|
import { CustomModal } from './chunk-GBMNCNHX.js';
|
|
3
3
|
import { CyberAreaChart, CostTrendChart, ActivityTrendChart } from './chunk-STZJ7SY5.js';
|
|
4
4
|
import { AppShellLoader } from './chunk-YEX4MQSY.js';
|
|
5
|
-
import { formatDuration } from './chunk-
|
|
6
|
-
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-
|
|
5
|
+
import { formatDuration } from './chunk-GHIPBT5V.js';
|
|
6
|
+
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-WM7JTTPX.js';
|
|
7
7
|
import { formatBucketTime, getTimeRangeDates } from './chunk-LXHZYSMQ.js';
|
|
8
8
|
import { CenteredErrorState, CardHeader, StatsCardSkeleton, TrendIndicator, DetailCardSkeleton, EmptyState, PageTitleCaption, JsonViewer } from './chunk-SQQGLGHW.js';
|
|
9
9
|
import { PAGE_SIZE_DEFAULT } from './chunk-IOKL7BKE.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
// src/execution/hooks/useMergedExecution.ts
|
|
4
|
+
function useMergedExecution(fetchedExecution, streamingLogs) {
|
|
5
|
+
return useMemo(() => {
|
|
6
|
+
if (!fetchedExecution) return void 0;
|
|
7
|
+
if (!streamingLogs || streamingLogs.length === 0) return fetchedExecution;
|
|
8
|
+
const existingKeys = new Set(fetchedExecution.executionLogs.map((log) => `${log.timestamp}:${log.message}`));
|
|
9
|
+
const newLogs = streamingLogs.filter((log) => !existingKeys.has(`${log.timestamp}:${log.message}`));
|
|
10
|
+
if (newLogs.length === 0) return fetchedExecution;
|
|
11
|
+
return {
|
|
12
|
+
...fetchedExecution,
|
|
13
|
+
executionLogs: [...fetchedExecution.executionLogs, ...newLogs].sort((a, b) => a.timestamp - b.timestamp)
|
|
14
|
+
};
|
|
15
|
+
}, [fetchedExecution, streamingLogs]);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { useMergedExecution };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ResourceExecuteDialog } from './chunk-
|
|
1
|
+
import { ResourceExecuteDialog } from './chunk-ZKCQEHEJ.js';
|
|
2
2
|
import { TableSelectionToolbar, SortableHeader } from './chunk-TUMSNGTX.js';
|
|
3
3
|
import { PageContainer } from './chunk-BZZCNLT6.js';
|
|
4
4
|
import { SubshellNavItem } from './chunk-CEWTOKE7.js';
|
|
5
5
|
import { SubshellSidebarSection } from './chunk-IIMU5YAJ.js';
|
|
6
6
|
import { FilterBar } from './chunk-PDHTXPSF.js';
|
|
7
7
|
import { CustomModal } from './chunk-GBMNCNHX.js';
|
|
8
|
-
import { showApiErrorNotification, acquisitionListKeys, showSuccessNotification, useListsTelemetry, useLists, useCreateList, useTableSort, sortData, usePaginationState, useTableSelection, useList, useListProgress, useListExecutions, useResourceDefinition, useCompanies, useDeleteCompanies, useContacts, useDeleteContacts } from './chunk-
|
|
8
|
+
import { showApiErrorNotification, acquisitionListKeys, showSuccessNotification, useListsTelemetry, useLists, useCreateList, useTableSort, sortData, usePaginationState, useTableSelection, useList, useListProgress, useListExecutions, useResourceDefinition, useCompanies, useDeleteCompanies, useContacts, useDeleteContacts } from './chunk-WM7JTTPX.js';
|
|
9
9
|
import { SubshellContentContainer } from './chunk-RX4UWZZR.js';
|
|
10
10
|
import { PageTitleCaption, CenteredErrorState, StatCard, EmptyState } from './chunk-SQQGLGHW.js';
|
|
11
11
|
import { useElevasisServices } from './chunk-QEPXAWE2.js';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useAuthContext } from './chunk-BRJ3QZ4E.js';
|
|
2
|
+
import { createClient } from '@supabase/supabase-js';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
|
|
5
|
+
function getSupabaseConfig() {
|
|
6
|
+
const url = import.meta.env?.VITE_SUPABASE_URL;
|
|
7
|
+
const anonKey = import.meta.env?.VITE_SUPABASE_ANON_KEY;
|
|
8
|
+
if (!url || !anonKey) {
|
|
9
|
+
throw new Error("Missing Supabase environment variables (VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY)");
|
|
10
|
+
}
|
|
11
|
+
return { url, anonKey };
|
|
12
|
+
}
|
|
13
|
+
var _supabase = null;
|
|
14
|
+
function getSupabaseClient() {
|
|
15
|
+
if (!_supabase) {
|
|
16
|
+
const { url, anonKey } = getSupabaseConfig();
|
|
17
|
+
_supabase = createClient(url, anonKey);
|
|
18
|
+
}
|
|
19
|
+
return _supabase;
|
|
20
|
+
}
|
|
21
|
+
var useSupabase = () => {
|
|
22
|
+
const { getAccessToken } = useAuthContext();
|
|
23
|
+
const { url, anonKey } = getSupabaseConfig();
|
|
24
|
+
return useMemo(
|
|
25
|
+
() => createClient(url, anonKey, {
|
|
26
|
+
global: {
|
|
27
|
+
headers: {
|
|
28
|
+
// Additional headers if needed
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
accessToken: async () => {
|
|
32
|
+
try {
|
|
33
|
+
const token = await getAccessToken();
|
|
34
|
+
if (!token) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return token;
|
|
38
|
+
} catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}),
|
|
43
|
+
[getAccessToken, url, anonKey]
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export { getSupabaseClient, useSupabase };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FilterBar } from './chunk-PDHTXPSF.js';
|
|
2
2
|
import { CustomModal } from './chunk-GBMNCNHX.js';
|
|
3
3
|
import { AppShellLoader } from './chunk-YEX4MQSY.js';
|
|
4
|
-
import { useAvailablePresets } from './chunk-
|
|
5
|
-
import { useDeleteCredential, useCreateCredential, useCredentials, MEMBERSHIP_STATUS_COLORS, transformMembershipToTableRow, useUserMemberships, useUpdateWebhookEndpoint, useResources, useDeleteWebhookEndpoint, useCreateWebhookEndpoint, useListWebhookEndpoints, useUpdateMemberConfig, useOrganizationMembers, useUpdateCredential, CredentialSchemas, showErrorNotification } from './chunk-
|
|
4
|
+
import { useAvailablePresets } from './chunk-ETWKPFOO.js';
|
|
5
|
+
import { useDeleteCredential, useCreateCredential, useCredentials, MEMBERSHIP_STATUS_COLORS, transformMembershipToTableRow, useUserMemberships, useUpdateWebhookEndpoint, useResources, useDeleteWebhookEndpoint, useCreateWebhookEndpoint, useListWebhookEndpoints, useUpdateMemberConfig, useOrganizationMembers, useUpdateCredential, CredentialSchemas, showErrorNotification } from './chunk-WM7JTTPX.js';
|
|
6
6
|
import { ListSkeleton, EmptyState, PageTitleCaption, CardHeader, APIErrorAlert, StatCard } from './chunk-SQQGLGHW.js';
|
|
7
7
|
import { formatDateTime, OAUTH_POPUP_CHECK_INTERVAL, OAUTH_FLOW_TIMEOUT } from './chunk-IOKL7BKE.js';
|
|
8
8
|
import { useInitialization } from './chunk-TUXTSEAF.js';
|
|
@@ -1444,7 +1444,7 @@ function WebhookEndpointSettings({ apiUrl }) {
|
|
|
1444
1444
|
};
|
|
1445
1445
|
const activeCount = endpoints.filter((e) => e.status === "active").length;
|
|
1446
1446
|
const totalRequests = endpoints.reduce((sum, e) => sum + e.requestCount, 0);
|
|
1447
|
-
return /* @__PURE__ */ jsxs(
|
|
1447
|
+
return /* @__PURE__ */ jsxs(Stack, { children: [
|
|
1448
1448
|
/* @__PURE__ */ jsx(
|
|
1449
1449
|
PageTitleCaption,
|
|
1450
1450
|
{
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import { ResourceHealthChart } from './chunk-LGKLC5MG.js';
|
|
2
2
|
import { useCyberColors, HeroStatsRow } from './chunk-STZJ7SY5.js';
|
|
3
3
|
import { AppShellCenteredContainer, AppShellLoader } from './chunk-YEX4MQSY.js';
|
|
4
|
-
import { STATUS_COLORS, getStatusIcon, formatDuration, getStatusColors, AGENT_CONSTANTS, shouldAnimateEdge, TIMELINE_CONSTANTS, calculateBarPosition, CONTAINER_CONSTANTS, useExecutionPath, useUnifiedWorkflowLayout, WORKFLOW_CONSTANTS, useReactFlowAgent } from './chunk-
|
|
5
|
-
import { useDashboardMetrics, useResources, useTimeRangeDates, useUnresolvedErrors, useRecentExecutionsByResource, useCommandQueue, useScheduledTasks, useResourcesHealth } from './chunk-
|
|
4
|
+
import { STATUS_COLORS, getStatusIcon, formatDuration, getStatusColors, AGENT_CONSTANTS, shouldAnimateEdge, TIMELINE_CONSTANTS, calculateBarPosition, CONTAINER_CONSTANTS, useExecutionPath, useUnifiedWorkflowLayout, WORKFLOW_CONSTANTS, useReactFlowAgent } from './chunk-GHIPBT5V.js';
|
|
5
|
+
import { useExecuteResource, useDashboardMetrics, useResources, useTimeRangeDates, useUnresolvedErrors, useRecentExecutionsByResource, useCommandQueue, useScheduledTasks, useResourcesHealth } from './chunk-WM7JTTPX.js';
|
|
6
6
|
import { getTimeRangeDates } from './chunk-LXHZYSMQ.js';
|
|
7
7
|
import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, useFitViewTrigger } from './chunk-22UVE3RA.js';
|
|
8
|
-
import { glassBase } from './chunk-
|
|
8
|
+
import { glassBase } from './chunk-TYWZABTP.js';
|
|
9
9
|
import { GlowDot, CardHeader, EmptyState, PageTitleCaption, TabCountBadge } from './chunk-SQQGLGHW.js';
|
|
10
10
|
import { ResourceStatusColors } from './chunk-ELJIFLCB.js';
|
|
11
11
|
import { formatTimeAgo, formatRelativeTime } from './chunk-IOKL7BKE.js';
|
|
12
12
|
import { useInitialization } from './chunk-TUXTSEAF.js';
|
|
13
13
|
import { memo, useMemo, useEffect, useState, useCallback, Fragment } from 'react';
|
|
14
|
-
import { Paper, Stack, Text, Group, Badge, Box, useComputedColorScheme, Card, ActionIcon, Loader, SegmentedControl, Center, SimpleGrid, Title, Tabs, Grid, ThemeIcon } from '@mantine/core';
|
|
14
|
+
import { Paper, Stack, Text, Group, Badge, Box, useComputedColorScheme, Card, ActionIcon, Loader, SegmentedControl, TextInput, Textarea, Radio, Checkbox, Select, NumberInput, Button, Modal, Center, SimpleGrid, Title, Tabs, Grid, ThemeIcon } from '@mantine/core';
|
|
15
15
|
import { jsxs, jsx, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
16
16
|
import { Position, Handle, getSmoothStepPath, BaseEdge as BaseEdge$1, EdgeLabelRenderer, Panel, useReactFlow, Controls, ReactFlowProvider, ReactFlow } from '@xyflow/react';
|
|
17
17
|
import { IconPlayerPlay, IconPlayerStop, IconArrowsSplit, IconSquare, IconFocus2, IconArrowUpRight, IconLayoutDashboard, IconActivity, IconAlertTriangle, IconHandStop, IconCalendarEvent, IconCircleCheck, IconBrain, IconGitBranch } from '@tabler/icons-react';
|
|
18
18
|
import '@xyflow/react/dist/style.css';
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
import { notifications } from '@mantine/notifications';
|
|
21
|
+
import { useForm } from '@mantine/form';
|
|
19
22
|
import '@mantine/charts/styles.css';
|
|
20
23
|
|
|
21
24
|
var DOMAIN_COLORS = {
|
|
@@ -1192,6 +1195,274 @@ function AgentExecutionTimeline({ iterationData, selectedIterationId }) {
|
|
|
1192
1195
|
)
|
|
1193
1196
|
] });
|
|
1194
1197
|
}
|
|
1198
|
+
function FormFieldRenderer({ field, form, richTextRenderer }) {
|
|
1199
|
+
const commonProps = {
|
|
1200
|
+
label: field.label,
|
|
1201
|
+
description: field.description,
|
|
1202
|
+
placeholder: field.placeholder,
|
|
1203
|
+
required: field.required,
|
|
1204
|
+
...form.getInputProps(field.name)
|
|
1205
|
+
};
|
|
1206
|
+
switch (field.type) {
|
|
1207
|
+
case "text":
|
|
1208
|
+
return /* @__PURE__ */ jsx(TextInput, { ...commonProps });
|
|
1209
|
+
case "textarea":
|
|
1210
|
+
return /* @__PURE__ */ jsx(Textarea, { ...commonProps, minRows: 3, autosize: true });
|
|
1211
|
+
case "number":
|
|
1212
|
+
return /* @__PURE__ */ jsx(NumberInput, { ...commonProps, min: field.min, max: field.max });
|
|
1213
|
+
case "select":
|
|
1214
|
+
return /* @__PURE__ */ jsx(
|
|
1215
|
+
Select,
|
|
1216
|
+
{
|
|
1217
|
+
...commonProps,
|
|
1218
|
+
data: field.options?.map((opt) => ({
|
|
1219
|
+
label: opt.label,
|
|
1220
|
+
value: String(opt.value)
|
|
1221
|
+
})) || []
|
|
1222
|
+
}
|
|
1223
|
+
);
|
|
1224
|
+
case "checkbox":
|
|
1225
|
+
return /* @__PURE__ */ jsx(Checkbox, { ...commonProps, ...form.getInputProps(field.name, { type: "checkbox" }) });
|
|
1226
|
+
case "radio":
|
|
1227
|
+
return /* @__PURE__ */ jsx(Radio.Group, { ...commonProps, children: /* @__PURE__ */ jsx(Stack, { gap: "xs", children: field.options?.map((opt) => /* @__PURE__ */ jsx(Radio, { value: String(opt.value), label: opt.label }, opt.value)) }) });
|
|
1228
|
+
case "richtext": {
|
|
1229
|
+
const inputProps = form.getInputProps(field.name);
|
|
1230
|
+
if (richTextRenderer) {
|
|
1231
|
+
return richTextRenderer({
|
|
1232
|
+
content: inputProps.value || "",
|
|
1233
|
+
onChange: (content) => form.setFieldValue(field.name, content),
|
|
1234
|
+
placeholder: field.placeholder
|
|
1235
|
+
});
|
|
1236
|
+
}
|
|
1237
|
+
return /* @__PURE__ */ jsx(Textarea, { ...commonProps, minRows: 5, autosize: true });
|
|
1238
|
+
}
|
|
1239
|
+
default:
|
|
1240
|
+
return /* @__PURE__ */ jsx(TextInput, { ...commonProps });
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
function getTypeName(schema) {
|
|
1244
|
+
return schema._def.typeName;
|
|
1245
|
+
}
|
|
1246
|
+
function unwrapOptionalOrNullable(schema) {
|
|
1247
|
+
const name = getTypeName(schema);
|
|
1248
|
+
if (name === "ZodOptional" || name === "ZodNullable") {
|
|
1249
|
+
return unwrapOptionalOrNullable(schema._def.innerType);
|
|
1250
|
+
}
|
|
1251
|
+
if (name === "ZodDefault") {
|
|
1252
|
+
return unwrapOptionalOrNullable(schema._def.innerType);
|
|
1253
|
+
}
|
|
1254
|
+
return schema;
|
|
1255
|
+
}
|
|
1256
|
+
function getDefaultValue(schema) {
|
|
1257
|
+
const name = getTypeName(schema);
|
|
1258
|
+
if (name === "ZodDefault") {
|
|
1259
|
+
const def = schema._def;
|
|
1260
|
+
return def.defaultValue();
|
|
1261
|
+
}
|
|
1262
|
+
if (name === "ZodOptional" || name === "ZodNullable") {
|
|
1263
|
+
return getDefaultValue(schema._def.innerType);
|
|
1264
|
+
}
|
|
1265
|
+
return void 0;
|
|
1266
|
+
}
|
|
1267
|
+
function zodTypeToFormField(name, fieldSchema, required) {
|
|
1268
|
+
const inner = unwrapOptionalOrNullable(fieldSchema);
|
|
1269
|
+
const typeName = getTypeName(inner);
|
|
1270
|
+
const label = name.replace(/([A-Z])/g, " $1").replace(/^./, (s) => s.toUpperCase());
|
|
1271
|
+
switch (typeName) {
|
|
1272
|
+
case "ZodString": {
|
|
1273
|
+
const checks = inner._def.checks ?? [];
|
|
1274
|
+
const maxCheck = checks.find((c) => c.kind === "max");
|
|
1275
|
+
const isLong = maxCheck ? (maxCheck.value ?? 0) > 200 : false;
|
|
1276
|
+
return {
|
|
1277
|
+
name,
|
|
1278
|
+
label,
|
|
1279
|
+
type: isLong ? "textarea" : "text",
|
|
1280
|
+
required,
|
|
1281
|
+
placeholder: "",
|
|
1282
|
+
description: "",
|
|
1283
|
+
defaultValue: ""
|
|
1284
|
+
};
|
|
1285
|
+
}
|
|
1286
|
+
case "ZodNumber":
|
|
1287
|
+
return {
|
|
1288
|
+
name,
|
|
1289
|
+
label,
|
|
1290
|
+
type: "number",
|
|
1291
|
+
required,
|
|
1292
|
+
placeholder: "",
|
|
1293
|
+
description: "",
|
|
1294
|
+
defaultValue: 0
|
|
1295
|
+
};
|
|
1296
|
+
case "ZodBoolean":
|
|
1297
|
+
return {
|
|
1298
|
+
name,
|
|
1299
|
+
label,
|
|
1300
|
+
type: "checkbox",
|
|
1301
|
+
required,
|
|
1302
|
+
placeholder: "",
|
|
1303
|
+
description: "",
|
|
1304
|
+
defaultValue: false
|
|
1305
|
+
};
|
|
1306
|
+
case "ZodEnum": {
|
|
1307
|
+
const values = inner._def.values;
|
|
1308
|
+
return {
|
|
1309
|
+
name,
|
|
1310
|
+
label,
|
|
1311
|
+
type: "select",
|
|
1312
|
+
required,
|
|
1313
|
+
placeholder: "",
|
|
1314
|
+
description: "",
|
|
1315
|
+
options: values.map((v) => ({ label: v, value: v })),
|
|
1316
|
+
defaultValue: values[0] ?? ""
|
|
1317
|
+
};
|
|
1318
|
+
}
|
|
1319
|
+
default:
|
|
1320
|
+
return null;
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
function ZodFormRenderer({
|
|
1324
|
+
schema,
|
|
1325
|
+
defaults,
|
|
1326
|
+
onSubmit,
|
|
1327
|
+
submitLabel = "Submit",
|
|
1328
|
+
isPending = false
|
|
1329
|
+
}) {
|
|
1330
|
+
const typeName = getTypeName(schema);
|
|
1331
|
+
const fields = [];
|
|
1332
|
+
const initialValues = {};
|
|
1333
|
+
if (typeName === "ZodObject") {
|
|
1334
|
+
const shape = schema.shape;
|
|
1335
|
+
for (const [fieldName, fieldSchema] of Object.entries(shape)) {
|
|
1336
|
+
const isRequired = getTypeName(fieldSchema) !== "ZodOptional" && getTypeName(fieldSchema) !== "ZodNullable";
|
|
1337
|
+
const formField = zodTypeToFormField(fieldName, fieldSchema, isRequired);
|
|
1338
|
+
const defaultForField = defaults?.[fieldName];
|
|
1339
|
+
const fieldDefault = defaultForField ?? getDefaultValue(fieldSchema);
|
|
1340
|
+
if (formField) {
|
|
1341
|
+
fields.push(formField);
|
|
1342
|
+
initialValues[fieldName] = fieldDefault ?? formField.defaultValue;
|
|
1343
|
+
} else {
|
|
1344
|
+
const raw = fieldDefault !== void 0 ? JSON.stringify(fieldDefault, null, 2) : "";
|
|
1345
|
+
fields.push({ name: fieldName, label: fieldName, fallback: true });
|
|
1346
|
+
initialValues[fieldName] = raw;
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
} else {
|
|
1350
|
+
const raw = defaults !== void 0 ? JSON.stringify(defaults, null, 2) : "";
|
|
1351
|
+
fields.push({ name: "__input__", label: "Input (JSON)", fallback: true });
|
|
1352
|
+
initialValues["__input__"] = raw;
|
|
1353
|
+
}
|
|
1354
|
+
const form = useForm({ initialValues });
|
|
1355
|
+
const handleSubmit = (values) => {
|
|
1356
|
+
const coerced = {};
|
|
1357
|
+
for (const field of fields) {
|
|
1358
|
+
const raw = values[field.name];
|
|
1359
|
+
if ("fallback" in field) {
|
|
1360
|
+
try {
|
|
1361
|
+
coerced[field.name] = raw !== "" && raw !== void 0 ? JSON.parse(raw) : void 0;
|
|
1362
|
+
} catch {
|
|
1363
|
+
coerced[field.name] = raw;
|
|
1364
|
+
}
|
|
1365
|
+
} else {
|
|
1366
|
+
coerced[field.name] = raw;
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
const payload = typeName === "ZodObject" ? coerced : coerced["__input__"] ?? coerced;
|
|
1370
|
+
const parsed = schema.safeParse(payload);
|
|
1371
|
+
if (!parsed.success) {
|
|
1372
|
+
for (const issue of parsed.error.issues) {
|
|
1373
|
+
const path = issue.path.join(".");
|
|
1374
|
+
if (path) form.setFieldError(path, issue.message);
|
|
1375
|
+
}
|
|
1376
|
+
return;
|
|
1377
|
+
}
|
|
1378
|
+
void onSubmit(parsed.data);
|
|
1379
|
+
};
|
|
1380
|
+
return /* @__PURE__ */ jsx("form", { onSubmit: form.onSubmit(handleSubmit), children: /* @__PURE__ */ jsxs(Stack, { children: [
|
|
1381
|
+
fields.map((field) => {
|
|
1382
|
+
if ("fallback" in field) {
|
|
1383
|
+
const label = field.label.replace(/([A-Z])/g, " $1").replace(/^./, (s) => s.toUpperCase());
|
|
1384
|
+
return /* @__PURE__ */ jsx(
|
|
1385
|
+
Textarea,
|
|
1386
|
+
{
|
|
1387
|
+
label,
|
|
1388
|
+
placeholder: "Enter JSON value",
|
|
1389
|
+
minRows: 3,
|
|
1390
|
+
autosize: true,
|
|
1391
|
+
...form.getInputProps(field.name),
|
|
1392
|
+
error: form.errors[field.name]
|
|
1393
|
+
},
|
|
1394
|
+
field.name
|
|
1395
|
+
);
|
|
1396
|
+
}
|
|
1397
|
+
return /* @__PURE__ */ jsx(FormFieldRenderer, { field, form }, field.name);
|
|
1398
|
+
}),
|
|
1399
|
+
/* @__PURE__ */ jsx(Button, { type: "submit", loading: isPending, fullWidth: true, children: submitLabel })
|
|
1400
|
+
] }) });
|
|
1401
|
+
}
|
|
1402
|
+
var isZodSchema = (value) => value instanceof z.ZodType;
|
|
1403
|
+
function RunResourceButton({
|
|
1404
|
+
resourceId,
|
|
1405
|
+
resourceType,
|
|
1406
|
+
getInput,
|
|
1407
|
+
label,
|
|
1408
|
+
icon,
|
|
1409
|
+
color,
|
|
1410
|
+
organizationModel,
|
|
1411
|
+
onSuccess,
|
|
1412
|
+
onError
|
|
1413
|
+
}) {
|
|
1414
|
+
const [modalState, setModalState] = useState(null);
|
|
1415
|
+
const { execute, isPending } = useExecuteResource({ resourceId, resourceType });
|
|
1416
|
+
const mapping = organizationModel?.resourceMappings?.find((m) => m.resourceId === resourceId);
|
|
1417
|
+
const resolvedLabel = label ?? mapping?.label ?? "Run";
|
|
1418
|
+
const resolvedColor = color ?? mapping?.color ?? void 0;
|
|
1419
|
+
const handleExecute = useCallback(
|
|
1420
|
+
async (input) => {
|
|
1421
|
+
try {
|
|
1422
|
+
const result = await execute(input);
|
|
1423
|
+
setModalState(null);
|
|
1424
|
+
notifications.show({
|
|
1425
|
+
title: "Execution started",
|
|
1426
|
+
message: `Execution ${result.executionId} started`,
|
|
1427
|
+
color: "green"
|
|
1428
|
+
});
|
|
1429
|
+
onSuccess?.(result);
|
|
1430
|
+
} catch (err) {
|
|
1431
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
1432
|
+
notifications.show({
|
|
1433
|
+
title: "Execution failed",
|
|
1434
|
+
message: error.message,
|
|
1435
|
+
color: "red"
|
|
1436
|
+
});
|
|
1437
|
+
onError?.(error);
|
|
1438
|
+
}
|
|
1439
|
+
},
|
|
1440
|
+
[execute, onSuccess, onError]
|
|
1441
|
+
);
|
|
1442
|
+
const handleClick = useCallback(() => {
|
|
1443
|
+
const result = getInput();
|
|
1444
|
+
const maybeSchema = result.schema;
|
|
1445
|
+
if (isZodSchema(maybeSchema)) {
|
|
1446
|
+
const defaults = result.defaults;
|
|
1447
|
+
setModalState({ schema: maybeSchema, defaults });
|
|
1448
|
+
} else {
|
|
1449
|
+
void handleExecute(result);
|
|
1450
|
+
}
|
|
1451
|
+
}, [getInput, handleExecute]);
|
|
1452
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
1453
|
+
/* @__PURE__ */ jsx(Button, { leftSection: icon, color: resolvedColor, loading: isPending, onClick: handleClick, children: resolvedLabel }),
|
|
1454
|
+
/* @__PURE__ */ jsx(Modal, { opened: modalState !== null, onClose: () => setModalState(null), children: modalState !== null && /* @__PURE__ */ jsx(
|
|
1455
|
+
ZodFormRenderer,
|
|
1456
|
+
{
|
|
1457
|
+
schema: modalState.schema,
|
|
1458
|
+
defaults: modalState.defaults,
|
|
1459
|
+
isPending,
|
|
1460
|
+
submitLabel: resolvedLabel,
|
|
1461
|
+
onSubmit: (data) => handleExecute(data)
|
|
1462
|
+
}
|
|
1463
|
+
) })
|
|
1464
|
+
] });
|
|
1465
|
+
}
|
|
1195
1466
|
var DEFAULT_LIMIT = 6;
|
|
1196
1467
|
var typeIcons = {
|
|
1197
1468
|
workflow: IconGitBranch,
|
|
@@ -1801,4 +2072,4 @@ function UnresolvedErrorsTeaser({ timeRange, onNavigateToAllErrors }) {
|
|
|
1801
2072
|
);
|
|
1802
2073
|
}
|
|
1803
2074
|
|
|
1804
|
-
export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, Dashboard, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, OperationsOverview, RecentExecutionsByResource, ResourceOverview, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, UnresolvedErrorsTeaser, VisualizerContainer, WorkflowExecutionTimeline, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme };
|
|
2075
|
+
export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, Dashboard, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, FormFieldRenderer, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, OperationsOverview, RecentExecutionsByResource, ResourceOverview, RunResourceButton, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, UnresolvedErrorsTeaser, VisualizerContainer, WorkflowExecutionTimeline, ZodFormRenderer, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme };
|
|
@@ -4,19 +4,6 @@ import dagre from '@dagrejs/dagre';
|
|
|
4
4
|
import { IconCircleDot, IconLoader, IconAlertTriangle, IconX, IconCheck } from '@tabler/icons-react';
|
|
5
5
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
|
-
function useMergedExecution(fetchedExecution, streamingLogs) {
|
|
8
|
-
return useMemo(() => {
|
|
9
|
-
if (!fetchedExecution) return void 0;
|
|
10
|
-
if (!streamingLogs || streamingLogs.length === 0) return fetchedExecution;
|
|
11
|
-
const existingKeys = new Set(fetchedExecution.executionLogs.map((log) => `${log.timestamp}:${log.message}`));
|
|
12
|
-
const newLogs = streamingLogs.filter((log) => !existingKeys.has(`${log.timestamp}:${log.message}`));
|
|
13
|
-
if (newLogs.length === 0) return fetchedExecution;
|
|
14
|
-
return {
|
|
15
|
-
...fetchedExecution,
|
|
16
|
-
executionLogs: [...fetchedExecution.executionLogs, ...newLogs].sort((a, b) => a.timestamp - b.timestamp)
|
|
17
|
-
};
|
|
18
|
-
}, [fetchedExecution, streamingLogs]);
|
|
19
|
-
}
|
|
20
7
|
function useExecutionPath(executionLogs, workflowDefinition) {
|
|
21
8
|
return useMemo(() => {
|
|
22
9
|
if (!executionLogs || executionLogs.length === 0) {
|
|
@@ -818,4 +805,4 @@ function calculateBarPosition(startTime, endTime, executionStart, executionEnd)
|
|
|
818
805
|
};
|
|
819
806
|
}
|
|
820
807
|
|
|
821
|
-
export { AGENT_CONSTANTS, CONTAINER_CONSTANTS, SHARED_VIZ_CONSTANTS, STATUS_COLORS, TIMELINE_CONSTANTS, WORKFLOW_CONSTANTS, calculateBarPosition, formatDuration, getEdgeColor, getEdgeOpacity, getResourceStatusColor, getStatusColors, getStatusIcon, shouldAnimateEdge, useAgentIterationData, useExecutionPath,
|
|
808
|
+
export { AGENT_CONSTANTS, CONTAINER_CONSTANTS, SHARED_VIZ_CONSTANTS, STATUS_COLORS, TIMELINE_CONSTANTS, WORKFLOW_CONSTANTS, calculateBarPosition, formatDuration, getEdgeColor, getEdgeOpacity, getResourceStatusColor, getStatusColors, getStatusIcon, shouldAnimateEdge, useAgentIterationData, useExecutionPath, useReactFlowAgent, useTimelineData, useUnifiedWorkflowLayout, useWorkflowStepsLayout };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCyberColors, CyberLegendItem, CyberAreaChart } from './chunk-STZJ7SY5.js';
|
|
2
|
-
import { useResourcesHealth } from './chunk-
|
|
2
|
+
import { useResourcesHealth } from './chunk-WM7JTTPX.js';
|
|
3
3
|
import { getTimeRangeDates, formatBucketTime } from './chunk-LXHZYSMQ.js';
|
|
4
4
|
import { CardHeader, EmptyState } from './chunk-SQQGLGHW.js';
|
|
5
5
|
import { Paper, Center, Loader, Group } from '@mantine/core';
|
|
@@ -4,14 +4,14 @@ import { SubshellNavItem } from './chunk-CEWTOKE7.js';
|
|
|
4
4
|
import { SubshellSidebarSection } from './chunk-IIMU5YAJ.js';
|
|
5
5
|
import { FilterBar } from './chunk-PDHTXPSF.js';
|
|
6
6
|
import { CustomModal } from './chunk-GBMNCNHX.js';
|
|
7
|
-
import { useDealTasksDue, useDeals, useCreateDealTask, useDeleteDeal, useTableSort, sortData, usePaginationState, useTableSelection, useDealDetail } from './chunk-
|
|
7
|
+
import { useDealTasksDue, useDeals, useCreateDealTask, useDeleteDeal, useTableSort, sortData, usePaginationState, useTableSelection, useDealDetail, useCompany } from './chunk-WM7JTTPX.js';
|
|
8
8
|
import { SubshellContentContainer } from './chunk-RX4UWZZR.js';
|
|
9
9
|
import { CenteredErrorState, CardHeader, PageTitleCaption, EmptyState, ActivityTimeline } from './chunk-SQQGLGHW.js';
|
|
10
10
|
import { PAGE_SIZE_DEFAULT, formatTimeAgo } from './chunk-IOKL7BKE.js';
|
|
11
11
|
import { useElevasisServices } from './chunk-QEPXAWE2.js';
|
|
12
12
|
import { useRouterContext } from './chunk-Q7DJKLEN.js';
|
|
13
|
-
import { Box, Stack, Group, Text, Badge, Center, Loader, UnstyledButton, Button, Modal, Select, TextInput, Textarea, Paper, Alert, SimpleGrid, Table, Checkbox, Pagination,
|
|
14
|
-
import { IconLayoutGrid, IconColumns, IconFileInvoice, IconAddressBook, IconTrophy, IconClockExclamation, IconUser, IconPlus, IconChecklist, IconAlertCircle, IconHistory, IconSearch, IconTargetArrow, IconAlertTriangle, IconArrowLeft, IconFileText, IconTrash, IconX, IconCheckbox, IconCalendar, IconMail, IconPhone, IconArrowRight, IconNote } from '@tabler/icons-react';
|
|
13
|
+
import { Box, Stack, Group, Text, Badge, Center, Loader, UnstyledButton, Button, Modal, Title, Select, TextInput, Textarea, Paper, Alert, SimpleGrid, Table, Checkbox, Pagination, ActionIcon, Tabs, Card, Code, Divider, Anchor } from '@mantine/core';
|
|
14
|
+
import { IconLayoutGrid, IconColumns, IconFileInvoice, IconAddressBook, IconTrophy, IconClockExclamation, IconUser, IconPlus, IconChecklist, IconAlertCircle, IconHistory, IconSearch, IconTargetArrow, IconAlertTriangle, IconArrowLeft, IconFileText, IconTrash, IconX, IconBuilding, IconCheckbox, IconCalendar, IconMail, IconPhone, IconArrowRight, IconNote } from '@tabler/icons-react';
|
|
15
15
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
16
16
|
import { useState, useMemo, useEffect } from 'react';
|
|
17
17
|
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
@@ -209,8 +209,9 @@ function QuickCreateActions({ showSectionLabel = true }) {
|
|
|
209
209
|
showSectionLabel && /* @__PURE__ */ jsx(Text, { fz: "xs", tt: "uppercase", c: "dimmed", fw: 600, children: "TASKS" }),
|
|
210
210
|
/* @__PURE__ */ jsx(Button, { variant: "light", size: "xs", leftSection: /* @__PURE__ */ jsx(IconPlus, { size: 14 }), fullWidth: true, onClick: () => setOpen(true), children: "New Task" })
|
|
211
211
|
] }),
|
|
212
|
-
/* @__PURE__ */ jsxs(Modal, { opened: open, onClose: handleClose,
|
|
212
|
+
/* @__PURE__ */ jsxs(Modal, { opened: open, onClose: handleClose, size: "md", children: [
|
|
213
213
|
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
214
|
+
/* @__PURE__ */ jsx(Title, { order: 3, children: "New Task" }),
|
|
214
215
|
/* @__PURE__ */ jsx(
|
|
215
216
|
Select,
|
|
216
217
|
{
|
|
@@ -1108,5 +1109,123 @@ function DealDetailPage({ dealId, renderActions, onDealLoaded }) {
|
|
|
1108
1109
|
] }) })
|
|
1109
1110
|
] }) });
|
|
1110
1111
|
}
|
|
1112
|
+
function CompanyDetailPage({ companyId }) {
|
|
1113
|
+
const navigate = useNavigate();
|
|
1114
|
+
const { data: company, isLoading, error } = useCompany(companyId);
|
|
1115
|
+
const title = company ? company.name : "Company Detail";
|
|
1116
|
+
const headerActions = /* @__PURE__ */ jsx(
|
|
1117
|
+
Button,
|
|
1118
|
+
{
|
|
1119
|
+
variant: "light",
|
|
1120
|
+
size: "sm",
|
|
1121
|
+
leftSection: /* @__PURE__ */ jsx(IconArrowLeft, { size: 16 }),
|
|
1122
|
+
onClick: () => navigate({ to: "/crm" }),
|
|
1123
|
+
children: "CRM"
|
|
1124
|
+
}
|
|
1125
|
+
);
|
|
1126
|
+
if (isLoading) {
|
|
1127
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsxs(PageContainer, { children: [
|
|
1128
|
+
/* @__PURE__ */ jsx(Stack, { children: /* @__PURE__ */ jsx(PageTitleCaption, { title, caption: "Loading company details...", rightSection: headerActions }) }),
|
|
1129
|
+
/* @__PURE__ */ jsx(Paper, { withBorder: true, children: /* @__PURE__ */ jsx(Center, { p: "xl", children: /* @__PURE__ */ jsx(Loader, {}) }) })
|
|
1130
|
+
] }) });
|
|
1131
|
+
}
|
|
1132
|
+
if (error) {
|
|
1133
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsxs(PageContainer, { children: [
|
|
1134
|
+
/* @__PURE__ */ jsx(Stack, { children: /* @__PURE__ */ jsx(PageTitleCaption, { title, caption: "Unable to load company details", rightSection: headerActions }) }),
|
|
1135
|
+
/* @__PURE__ */ jsx(Paper, { withBorder: true, children: /* @__PURE__ */ jsx(CenteredErrorState, { error, title: "Failed to load company" }) })
|
|
1136
|
+
] }) });
|
|
1137
|
+
}
|
|
1138
|
+
if (!company) {
|
|
1139
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsxs(PageContainer, { children: [
|
|
1140
|
+
/* @__PURE__ */ jsx(Stack, { children: /* @__PURE__ */ jsx(PageTitleCaption, { title, caption: "Company not found", rightSection: headerActions }) }),
|
|
1141
|
+
/* @__PURE__ */ jsx(Paper, { withBorder: true, children: /* @__PURE__ */ jsx(
|
|
1142
|
+
EmptyState,
|
|
1143
|
+
{
|
|
1144
|
+
icon: IconBuilding,
|
|
1145
|
+
title: "Company not found",
|
|
1146
|
+
description: "The selected company no longer exists."
|
|
1147
|
+
}
|
|
1148
|
+
) })
|
|
1149
|
+
] }) });
|
|
1150
|
+
}
|
|
1151
|
+
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsxs(PageContainer, { children: [
|
|
1152
|
+
/* @__PURE__ */ jsx(Stack, { children: /* @__PURE__ */ jsx(
|
|
1153
|
+
PageTitleCaption,
|
|
1154
|
+
{
|
|
1155
|
+
title: company.name,
|
|
1156
|
+
caption: [company.domain, company.locationCity, company.locationState].filter(Boolean).join(" \xB7 ") || "Company",
|
|
1157
|
+
rightSection: headerActions
|
|
1158
|
+
}
|
|
1159
|
+
) }),
|
|
1160
|
+
/* @__PURE__ */ jsx(Paper, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "md", p: "md", children: [
|
|
1161
|
+
/* @__PURE__ */ jsx(Card, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1162
|
+
/* @__PURE__ */ jsx(Title, { order: 4, children: "Overview" }),
|
|
1163
|
+
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: [
|
|
1164
|
+
/* @__PURE__ */ jsxs(Group, { children: [
|
|
1165
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "Name:" }),
|
|
1166
|
+
/* @__PURE__ */ jsx(Text, { children: company.name })
|
|
1167
|
+
] }),
|
|
1168
|
+
/* @__PURE__ */ jsxs(Group, { children: [
|
|
1169
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "Status:" }),
|
|
1170
|
+
/* @__PURE__ */ jsx(Badge, { variant: "light", color: "blue", children: company.status })
|
|
1171
|
+
] }),
|
|
1172
|
+
company.domain && /* @__PURE__ */ jsxs(Group, { children: [
|
|
1173
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "Domain:" }),
|
|
1174
|
+
/* @__PURE__ */ jsx(Text, { children: company.domain })
|
|
1175
|
+
] }),
|
|
1176
|
+
company.website && /* @__PURE__ */ jsxs(Group, { children: [
|
|
1177
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "Website:" }),
|
|
1178
|
+
/* @__PURE__ */ jsx(Text, { component: "a", href: company.website, target: "_blank", c: "blue", children: company.website })
|
|
1179
|
+
] }),
|
|
1180
|
+
company.numEmployees != null && /* @__PURE__ */ jsxs(Group, { children: [
|
|
1181
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "Employees:" }),
|
|
1182
|
+
/* @__PURE__ */ jsx(Text, { children: company.numEmployees.toLocaleString() })
|
|
1183
|
+
] }),
|
|
1184
|
+
company.foundedYear != null && /* @__PURE__ */ jsxs(Group, { children: [
|
|
1185
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "Founded:" }),
|
|
1186
|
+
/* @__PURE__ */ jsx(Text, { children: company.foundedYear })
|
|
1187
|
+
] })
|
|
1188
|
+
] })
|
|
1189
|
+
] }) }),
|
|
1190
|
+
(company.locationCity || company.locationState) && /* @__PURE__ */ jsx(Card, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1191
|
+
/* @__PURE__ */ jsx(Title, { order: 4, children: "Location" }),
|
|
1192
|
+
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: [
|
|
1193
|
+
company.locationCity && /* @__PURE__ */ jsxs(Group, { children: [
|
|
1194
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "City:" }),
|
|
1195
|
+
/* @__PURE__ */ jsx(Text, { children: company.locationCity })
|
|
1196
|
+
] }),
|
|
1197
|
+
company.locationState && /* @__PURE__ */ jsxs(Group, { children: [
|
|
1198
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "State:" }),
|
|
1199
|
+
/* @__PURE__ */ jsx(Text, { children: company.locationState })
|
|
1200
|
+
] })
|
|
1201
|
+
] })
|
|
1202
|
+
] }) }),
|
|
1203
|
+
company.linkedinUrl && /* @__PURE__ */ jsx(Card, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1204
|
+
/* @__PURE__ */ jsx(Title, { order: 4, children: "Social" }),
|
|
1205
|
+
/* @__PURE__ */ jsxs(Group, { children: [
|
|
1206
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "LinkedIn:" }),
|
|
1207
|
+
/* @__PURE__ */ jsx(Text, { component: "a", href: company.linkedinUrl, target: "_blank", c: "blue", children: "View Profile" })
|
|
1208
|
+
] })
|
|
1209
|
+
] }) }),
|
|
1210
|
+
(company.segment || company.category) && /* @__PURE__ */ jsx(Card, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1211
|
+
/* @__PURE__ */ jsx(Title, { order: 4, children: "Classification" }),
|
|
1212
|
+
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: [
|
|
1213
|
+
company.segment && /* @__PURE__ */ jsxs(Group, { children: [
|
|
1214
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "Segment:" }),
|
|
1215
|
+
/* @__PURE__ */ jsx(Text, { children: company.segment })
|
|
1216
|
+
] }),
|
|
1217
|
+
company.category && /* @__PURE__ */ jsxs(Group, { children: [
|
|
1218
|
+
/* @__PURE__ */ jsx(Text, { fw: 500, children: "Category:" }),
|
|
1219
|
+
/* @__PURE__ */ jsx(Text, { children: company.category })
|
|
1220
|
+
] })
|
|
1221
|
+
] })
|
|
1222
|
+
] }) }),
|
|
1223
|
+
company.verticalResearch && /* @__PURE__ */ jsx(Card, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1224
|
+
/* @__PURE__ */ jsx(Title, { order: 4, children: "Vertical Research" }),
|
|
1225
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", style: { whiteSpace: "pre-wrap" }, children: company.verticalResearch })
|
|
1226
|
+
] }) })
|
|
1227
|
+
] }) })
|
|
1228
|
+
] }) });
|
|
1229
|
+
}
|
|
1111
1230
|
|
|
1112
|
-
export { ActivityFeedWidget, CRM_ITEMS, CrmOverview, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, DEAL_STAGE_COLORS, DEAL_STAGE_OPTIONS, DealDetailPage, DealsListPage, MetricsStrip, MyTasksPanel, PIPELINE_FUNNEL_ORDER, PipelineFunnelWidget, QuickCreateActions, SAVED_VIEW_PRESETS, SavedViewsPanel, TasksDueWidget, crmManifest, formatDealStageLabel, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity };
|
|
1231
|
+
export { ActivityFeedWidget, CRM_ITEMS, CompanyDetailPage, CrmOverview, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, DEAL_STAGE_COLORS, DEAL_STAGE_OPTIONS, DealDetailPage, DealsListPage, MetricsStrip, MyTasksPanel, PIPELINE_FUNNEL_ORDER, PipelineFunnelWidget, QuickCreateActions, SAVED_VIEW_PRESETS, SavedViewsPanel, TasksDueWidget, crmManifest, formatDealStageLabel, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-
|
|
1
|
+
import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-TYWZABTP.js';
|
|
2
2
|
import { AppBackground } from './chunk-F4TPY6YL.js';
|
|
3
3
|
import { ElevasisCoreProvider } from './chunk-R7WLWGPO.js';
|
|
4
4
|
import { ElevasisLoader } from './chunk-SZHARWKU.js';
|