@elevasis/ui 2.0.0 → 2.0.2
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/auth/index.js +1 -2
- package/dist/charts/index.js +7 -9
- package/dist/{chunk-FW4S3Z5I.js → chunk-2DSYC52I.js} +3 -3
- package/dist/{chunk-ZWY3A6ZU.js → chunk-CTU2JO57.js} +31 -31
- package/dist/{chunk-QJ2S46NI.js → chunk-DT3QYZVU.js} +2 -2
- package/dist/{chunk-QTD5HPKD.js → chunk-EIHG5JZN.js} +1 -1
- package/dist/{chunk-JHVKGZ2P.js → chunk-KFICYU6S.js} +3 -4
- package/dist/{chunk-R2BQITMQ.js → chunk-MELNDAZY.js} +20 -110
- package/dist/{chunk-RWQIFKMJ.js → chunk-MTJ43R2E.js} +10 -2
- package/dist/{chunk-45MS3IAW.js → chunk-MZPVNRPL.js} +136 -28
- package/dist/{chunk-NNKKBSJN.js → chunk-NYBEU5TE.js} +1 -1
- package/dist/{chunk-2IJCM3VQ.js → chunk-OCP2MBTY.js} +134 -118
- package/dist/{chunk-KP6LNTMH.js → chunk-OKKGD3S6.js} +3 -3
- package/dist/{chunk-BYZ7VTSH.js → chunk-PRLXFMNP.js} +2 -2
- package/dist/{chunk-T2X3WHQS.js → chunk-QRHLV74B.js} +23 -18
- package/dist/{chunk-5COLSYBE.js → chunk-RX4UWZZR.js} +1 -1
- package/dist/{chunk-C27LLJM6.js → chunk-SMJLS23U.js} +2 -2
- package/dist/{chunk-F2J7675J.js → chunk-TQ3HK7ZR.js} +633 -7
- package/dist/{chunk-EINVPEHK.js → chunk-TZOGB3X4.js} +2 -2
- package/dist/{chunk-TXPUIHX2.js → chunk-X7CHQ3RE.js} +1 -1
- package/dist/{chunk-MCA6LOGM.js → chunk-Y3D3WFJG.js} +54 -5
- package/dist/{chunk-YYBM5LNJ.js → chunk-YEX4MQSY.js} +1 -1
- package/dist/components/index.d.ts +24 -16
- package/dist/components/index.js +102 -271
- package/dist/features/auth/index.js +3 -4
- package/dist/features/dashboard/index.d.ts +15 -4
- package/dist/features/dashboard/index.js +15 -18
- package/dist/features/monitoring/index.css +127 -127
- package/dist/features/monitoring/index.d.ts +1 -0
- package/dist/features/monitoring/index.js +17 -19
- package/dist/features/operations/index.d.ts +173 -56
- package/dist/features/operations/index.js +19 -20
- package/dist/features/settings/index.d.ts +1 -0
- package/dist/features/settings/index.js +15 -17
- package/dist/hooks/index.css +127 -127
- package/dist/hooks/index.js +12 -9
- package/dist/hooks/published.css +127 -127
- package/dist/hooks/published.js +11 -8
- package/dist/index.css +118 -118
- package/dist/index.d.ts +14 -2
- package/dist/index.js +13 -12
- package/dist/layout/index.d.ts +20 -44
- package/dist/layout/index.js +6 -6
- package/dist/provider/index.css +127 -59
- package/dist/provider/index.d.ts +14 -2
- package/dist/provider/index.js +10 -6
- package/dist/provider/published.css +126 -0
- package/dist/provider/published.d.ts +14 -2
- package/dist/provider/published.js +8 -3
- package/dist/theme/index.js +2 -2
- package/package.json +3 -3
- package/dist/chunk-ALA56RGZ.js +0 -13
- package/dist/chunk-JQ4AKYUD.js +0 -635
- package/dist/chunk-SZHARWKU.js +0 -15
package/dist/components/index.js
CHANGED
|
@@ -1,56 +1,53 @@
|
|
|
1
1
|
import { useBreadcrumbs } from '../chunk-MG3NF7QL.js';
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import { NotificationList } from '../chunk-
|
|
4
|
-
export { ActivityCard, ActivityFilters as ActivityFiltersBar, ActivityTable, BusinessImpactCard, CostBreakdownCard, CostByModelTable, CostMetricsCard, ErrorAnalysisCard, ErrorBreakdownTable, ExecutionBreakdownTable, ExecutionHealthCard, ExecutionLogsFilters as ExecutionLogsFilterBar, ExecutionLogsTable, NotificationItem, NotificationList, monitoringManifest } from '../chunk-
|
|
5
|
-
export { CreateCredentialModal, CredentialList, CredentialSettings, MembershipFeaturePanel, MembershipStatusBadge, OAuthConnectModal, OrganizationMembershipsList, WebhookUrlDisplayModal, settingsManifest } from '../chunk-
|
|
2
|
+
import '../chunk-SMJLS23U.js';
|
|
3
|
+
import { NotificationList } from '../chunk-QRHLV74B.js';
|
|
4
|
+
export { ActivityCard, ActivityFilters as ActivityFiltersBar, ActivityTable, BusinessImpactCard, CostBreakdownCard, CostByModelTable, CostMetricsCard, ErrorAnalysisCard, ErrorBreakdownTable, ExecutionBreakdownTable, ExecutionHealthCard, ExecutionLogsFilters as ExecutionLogsFilterBar, ExecutionLogsTable, NotificationItem, NotificationList, monitoringManifest } from '../chunk-QRHLV74B.js';
|
|
5
|
+
export { CreateCredentialModal, CredentialList, CredentialSettings, MembershipFeaturePanel, MembershipStatusBadge, OAuthConnectModal, OrganizationMembershipsList, WebhookUrlDisplayModal, settingsManifest } from '../chunk-MELNDAZY.js';
|
|
6
6
|
import { FilterBar } from '../chunk-PDHTXPSF.js';
|
|
7
7
|
export { FilterBar } from '../chunk-PDHTXPSF.js';
|
|
8
|
-
export {
|
|
9
|
-
export { ResourceHealthChart, getHealthColor } from '../chunk-LGKLC5MG.js';
|
|
10
|
-
export { ActionModal, AgentDefinitionDisplay, AgentExecutionLogs, BaseExecutionLogs, BaseExecutionLogsHeader, BaseExecutionLogsStates, CheckpointGroup, CollapsibleJsonSection, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, CommandQueueTaskRow, CommandViewEdge, CommandViewGraph, CommandViewNode, ConfigCard, ContentSections, ContextUsageBadge, ContractDisplay, ExecutionErrorSection, FormFieldRenderer, LogEntry, LogGroup, NewKnowledgeMapEdge, NewKnowledgeMapGraph, NewKnowledgeMapNode, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, ResourceDefinitionSection, ResourceErrorState, ResourceFilter, ResourceHeader, ResourceNotFoundState, SessionMemory, ToolsListDisplay, WorkflowDefinitionDisplay, WorkflowExecutionLogs, getExecutionStatusConfig, getIcon, getLogLevelConfig, iconMap, operationsManifest, useNewKnowledgeMapLayout } from '../chunk-ZWY3A6ZU.js';
|
|
8
|
+
export { ActionModal, AgentDefinitionDisplay, AgentExecutionLogs, BaseExecutionLogs, BaseExecutionLogsHeader, BaseExecutionLogsStates, CheckpointGroup, CollapsibleJsonSection, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, CommandQueueTaskRow, CommandViewEdge, CommandViewGraph, CommandViewNode, ConfigCard, ContentSections, ContextUsageBadge, ContractDisplay, ExecutionErrorSection, FormFieldRenderer, LogEntry, LogGroup, NewKnowledgeMapEdge, NewKnowledgeMapGraph, NewKnowledgeMapNode, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, ResourceDefinitionSection, ResourceErrorState, ResourceFilter, ResourceHeader, ResourceNotFoundState, SessionMemory, ToolsListDisplay, WorkflowDefinitionDisplay, WorkflowExecutionLogs, getExecutionStatusConfig, getIcon, getLogLevelConfig, iconMap, operationsManifest, useNewKnowledgeMapLayout } from '../chunk-CTU2JO57.js';
|
|
11
9
|
import '../chunk-ROSMICXG.js';
|
|
12
|
-
import { SubshellLoader, PageContainer, SubshellSidebarSection,
|
|
13
|
-
export { ResourceHealthPanel } from '../chunk-
|
|
10
|
+
import { SubshellLoader, PageContainer, SubshellSidebarSection, SubshellNavItem, CollapsibleSidebarGroup } from '../chunk-OCP2MBTY.js';
|
|
11
|
+
export { ResourceHealthPanel } from '../chunk-OKKGD3S6.js';
|
|
14
12
|
import { CustomModal } from '../chunk-GBMNCNHX.js';
|
|
15
13
|
export { ConfirmationInputModal, ConfirmationModal, CustomModal } from '../chunk-GBMNCNHX.js';
|
|
16
|
-
export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, VisualizerContainer, WorkflowExecutionTimeline, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme } from '../chunk-
|
|
17
|
-
|
|
18
|
-
import
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
import {
|
|
23
|
-
|
|
24
|
-
import { useUpdateApiKey, useDeleteApiKey, useCreateApiKey, useListApiKeys, useActivateDeployment, useDeactivateDeployment, useDeleteDeployment, useListDeployments, useTasks, useProjects, useMilestones } from '../chunk-BYZ7VTSH.js';
|
|
25
|
-
import { usePaginationState, useDeploymentDocs, useResources, useCreateSchedule, useListSchedules, usePauseSchedule, useResumeSchedule, useCancelSchedule, useDeleteSchedule, useDealNotes, useCreateDealNote, useDeals, useSyncDealStage, dealKeys, useDealTasksDue, useCreateDealTask, useMarkAllAsRead, useNotifications, showErrorNotification, showSuccessNotification, showApiErrorNotification } from '../chunk-EINVPEHK.js';
|
|
26
|
-
export { showApiErrorNotification, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification } from '../chunk-EINVPEHK.js';
|
|
14
|
+
export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, VisualizerContainer, WorkflowExecutionTimeline, dashboardManifest, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme } from '../chunk-TQ3HK7ZR.js';
|
|
15
|
+
export { ResourceHealthChart, getHealthColor } from '../chunk-LGKLC5MG.js';
|
|
16
|
+
import '../chunk-KFICYU6S.js';
|
|
17
|
+
import { AppShellLoader } from '../chunk-YEX4MQSY.js';
|
|
18
|
+
import '../chunk-EIHG5JZN.js';
|
|
19
|
+
import { useUpdateApiKey, useDeleteApiKey, useCreateApiKey, useListApiKeys, useActivateDeployment, useDeactivateDeployment, useDeleteDeployment, useListDeployments } from '../chunk-PRLXFMNP.js';
|
|
20
|
+
import { usePaginationState, useDeploymentDocs, useResources, useCreateSchedule, useListSchedules, usePauseSchedule, useResumeSchedule, useCancelSchedule, useDeleteSchedule, useDealNotes, useCreateDealNote, useDeals, useSyncDealStage, dealKeys, useDealTasksDue, useCreateDealTask, useMarkAllAsRead, useNotifications, showErrorNotification, showSuccessNotification, showApiErrorNotification } from '../chunk-TZOGB3X4.js';
|
|
21
|
+
export { showApiErrorNotification, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification } from '../chunk-TZOGB3X4.js';
|
|
27
22
|
import '../chunk-LXHZYSMQ.js';
|
|
28
23
|
export { Graph_module_css_default as graphStyles } from '../chunk-F6RBK7NJ.js';
|
|
29
24
|
export { CONTAINER_CONSTANTS, SHARED_VIZ_CONSTANTS } from '../chunk-XA34RETF.js';
|
|
30
|
-
import '../chunk-
|
|
31
|
-
import '../chunk-
|
|
32
|
-
export { ElevasisLoader } from '../chunk-SZHARWKU.js';
|
|
33
|
-
import '../chunk-TXPUIHX2.js';
|
|
25
|
+
import '../chunk-2DSYC52I.js';
|
|
26
|
+
import '../chunk-X7CHQ3RE.js';
|
|
34
27
|
import '../chunk-CYXZHBP4.js';
|
|
35
|
-
import '../chunk-
|
|
36
|
-
import { SubshellContainer, SubshellSidebar, SubshellRightSideContainer, SubshellContentContainer } from '../chunk-
|
|
28
|
+
import '../chunk-MZPVNRPL.js';
|
|
29
|
+
import { SubshellContainer, SubshellSidebar, SubshellRightSideContainer, SubshellContentContainer } from '../chunk-RX4UWZZR.js';
|
|
30
|
+
import { ListSkeleton, EmptyState, PageTitleCaption, StatCard, CenteredErrorState, CardHeader, ActivityTimeline, StatusBadge } from '../chunk-Y3D3WFJG.js';
|
|
31
|
+
export { APIErrorAlert, ActivityTimeline, CardHeader, CenteredErrorState, CollapsibleSection, ContextViewer, CustomSelector, DetailCardSkeleton, ElevasisLoader, EmptyState, FeatureUnavailableState, GlowDot, JsonViewer, ListSkeleton, PageNotFound, PageTitleCaption, ResourceCard, StatCard, StatCardSkeleton, StatsCardSkeleton, StatusBadge, TabCountBadge, TimeRangeSelector, TrendIndicator, catalogItemToResourceDefinition } from '../chunk-Y3D3WFJG.js';
|
|
32
|
+
export { StyledMarkdown } from '../chunk-3KMDHCAR.js';
|
|
33
|
+
export { NavigationButton } from '../chunk-NYBEU5TE.js';
|
|
37
34
|
import '../chunk-NVOCKXUQ.js';
|
|
38
35
|
import '../chunk-2IFYDILW.js';
|
|
36
|
+
import '../chunk-ELJIFLCB.js';
|
|
39
37
|
import '../chunk-W4VYXIN7.js';
|
|
40
38
|
import { useAppearance } from '../chunk-QJ2KCHKX.js';
|
|
41
|
-
import '../chunk-
|
|
39
|
+
import '../chunk-DT3QYZVU.js';
|
|
42
40
|
import '../chunk-SLVC5OJ2.js';
|
|
43
41
|
import '../chunk-RNP5R5I3.js';
|
|
44
42
|
import { formatDateTime, PAGE_SIZE_DEFAULT, formatTimeAgo } from '../chunk-IOKL7BKE.js';
|
|
45
|
-
import '../chunk-
|
|
46
|
-
import '../chunk-ALA56RGZ.js';
|
|
43
|
+
import '../chunk-MTJ43R2E.js';
|
|
47
44
|
import { useInitialization } from '../chunk-TUXTSEAF.js';
|
|
48
45
|
import '../chunk-DD3CCMCZ.js';
|
|
49
46
|
import { useElevasisServices } from '../chunk-QEPXAWE2.js';
|
|
50
47
|
import '../chunk-BRJ3QZ4E.js';
|
|
51
48
|
import { useRouterContext } from '../chunk-Q7DJKLEN.js';
|
|
52
49
|
import { Table, Group, Text, Button, Stack, Title, TextInput, Alert, Tooltip, ActionIcon, Paper, Code, CopyButton, SimpleGrid, Badge, Loader, Pagination, useMantineTheme, Box, ScrollArea, Select, Center, Card, SegmentedControl, Switch, Textarea, Divider, Menu, Timeline, ThemeIcon, Tabs, Anchor, Breadcrumbs as Breadcrumbs$1, Drawer, UnstyledButton, Modal, RingProgress, Collapse, Popover, Indicator } from '@mantine/core';
|
|
53
|
-
import { IconBriefcase, IconChevronUp, IconChevronDown, IconSelector, IconTrash, IconPencil, IconAlertCircle, IconKey, IconCalendar, IconClock, IconAlertTriangle, IconExclamationMark, IconShieldLock, IconCheck, IconCopy, IconPlus, IconRocket, IconRefresh, IconPower, IconPlayerPlay, IconCircleCheck, IconTag, IconBook2, IconFileOff, IconList, IconCalendarRepeat, IconCalendarEvent, IconCalendarTime, IconRobot, IconGitBranch, IconSettings, IconExternalLink, IconDotsVertical, IconPlayerPause, IconPlayerStop, IconCalendarDue, IconCalendarStats, IconCalendarOff, IconListCheck,
|
|
50
|
+
import { IconAddressBook, IconBriefcase, IconTarget, IconChevronUp, IconChevronDown, IconSelector, IconTrash, IconPencil, IconAlertCircle, IconKey, IconCalendar, IconClock, IconAlertTriangle, IconExclamationMark, IconShieldLock, IconCheck, IconCopy, IconPlus, IconRocket, IconRefresh, IconPower, IconPlayerPlay, IconCircleCheck, IconTag, IconBook2, IconFileOff, IconList, IconCalendarRepeat, IconCalendarEvent, IconCalendarTime, IconRobot, IconGitBranch, IconSettings, IconExternalLink, IconDotsVertical, IconPlayerPause, IconPlayerStop, IconCalendarDue, IconCalendarStats, IconCalendarOff, IconListCheck, IconTrophy, IconClockExclamation, IconUser, IconLayoutGrid, IconColumns, IconFileInvoice, IconChecklist, IconHistory, IconBuilding, IconMailCheck, IconSearch, IconChartBar, IconTrendingUp, IconHeartbeat, IconFlag, IconFileText, IconInbox, IconLock, IconChevronRight, IconDownload, IconMessageCircle, IconBell, IconNotes, IconFolderOpen, IconFolder, IconCheckbox, IconMail, IconPhone, IconArrowRight, IconNote } from '@tabler/icons-react';
|
|
54
51
|
import * as runtime from 'react/jsx-runtime';
|
|
55
52
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
56
53
|
import { useDisclosure } from '@mantine/hooks';
|
|
@@ -858,7 +855,7 @@ function TreeNodeItem({
|
|
|
858
855
|
);
|
|
859
856
|
}
|
|
860
857
|
return /* @__PURE__ */ jsx(
|
|
861
|
-
|
|
858
|
+
SubshellNavItem,
|
|
862
859
|
{
|
|
863
860
|
icon: IconFileText,
|
|
864
861
|
label: node.label,
|
|
@@ -3037,9 +3034,9 @@ var Breadcrumbs = ({ navItems }) => {
|
|
|
3037
3034
|
size: "sm",
|
|
3038
3035
|
style: {
|
|
3039
3036
|
color: "var(--color-text-subtle)",
|
|
3040
|
-
textDecoration: "none"
|
|
3037
|
+
textDecoration: "none",
|
|
3038
|
+
fontWeight: 500
|
|
3041
3039
|
},
|
|
3042
|
-
c: "dimmed",
|
|
3043
3040
|
children: item.label
|
|
3044
3041
|
},
|
|
3045
3042
|
item.path
|
|
@@ -3411,13 +3408,7 @@ var SAVED_VIEW_PRESETS = [
|
|
|
3411
3408
|
label: "Won this month",
|
|
3412
3409
|
iconName: "IconTrophy",
|
|
3413
3410
|
target: "/crm/deals",
|
|
3414
|
-
urlFilters: { stage: "closed_won" }
|
|
3415
|
-
predicate: (deal) => {
|
|
3416
|
-
if (deal.cached_stage !== "closed_won") return false;
|
|
3417
|
-
const updated = new Date(deal.updated_at);
|
|
3418
|
-
const now = /* @__PURE__ */ new Date();
|
|
3419
|
-
return updated.getMonth() === now.getMonth() && updated.getFullYear() === now.getFullYear();
|
|
3420
|
-
}
|
|
3411
|
+
urlFilters: { stage: "closed_won" }
|
|
3421
3412
|
}
|
|
3422
3413
|
];
|
|
3423
3414
|
var KIND_ICONS = {
|
|
@@ -3468,13 +3459,18 @@ function TaskRow({ task, onClick }) {
|
|
|
3468
3459
|
}
|
|
3469
3460
|
);
|
|
3470
3461
|
}
|
|
3471
|
-
function MyTasksPanel({
|
|
3462
|
+
function MyTasksPanel({
|
|
3463
|
+
onTaskClick,
|
|
3464
|
+
onSeeAll,
|
|
3465
|
+
footer,
|
|
3466
|
+
showSectionLabel = true
|
|
3467
|
+
}) {
|
|
3472
3468
|
const { data, isLoading, isError } = useDealTasksDue({ window: "today_and_overdue" });
|
|
3473
3469
|
const tasks = data ?? [];
|
|
3474
3470
|
const total = tasks.length;
|
|
3475
3471
|
const visible = tasks.slice(0, 5);
|
|
3476
3472
|
return /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
3477
|
-
/* @__PURE__ */ jsxs(Group, { justify: "space-between", mb: 4, children: [
|
|
3473
|
+
showSectionLabel && /* @__PURE__ */ jsxs(Group, { justify: "space-between", mb: 4, children: [
|
|
3478
3474
|
/* @__PURE__ */ jsx(Text, { fz: "xs", tt: "uppercase", c: "dimmed", fw: 600, children: "My Tasks" }),
|
|
3479
3475
|
total > 0 && /* @__PURE__ */ jsx(Badge, { size: "xs", variant: "light", children: total })
|
|
3480
3476
|
] }),
|
|
@@ -3486,7 +3482,8 @@ function MyTasksPanel({ onTaskClick, onSeeAll }) {
|
|
|
3486
3482
|
"See all (",
|
|
3487
3483
|
total,
|
|
3488
3484
|
")"
|
|
3489
|
-
] }) })
|
|
3485
|
+
] }) }),
|
|
3486
|
+
footer
|
|
3490
3487
|
] }) });
|
|
3491
3488
|
}
|
|
3492
3489
|
var ICON_MAP = {
|
|
@@ -3494,40 +3491,37 @@ var ICON_MAP = {
|
|
|
3494
3491
|
IconClockExclamation,
|
|
3495
3492
|
IconTrophy
|
|
3496
3493
|
};
|
|
3497
|
-
function SavedViewsPanel({ onViewClick }) {
|
|
3498
|
-
return /* @__PURE__ */
|
|
3499
|
-
/* @__PURE__ */ jsx(
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
{
|
|
3507
|
-
|
|
3508
|
-
|
|
3509
|
-
|
|
3510
|
-
|
|
3511
|
-
|
|
3512
|
-
borderRadius: "var(--mantine-radius-sm)",
|
|
3513
|
-
transition: `background-color var(--duration-fast) var(--easing)`
|
|
3514
|
-
},
|
|
3515
|
-
onMouseEnter: (e) => {
|
|
3516
|
-
e.currentTarget.style.backgroundColor = "var(--color-surface-hover)";
|
|
3517
|
-
},
|
|
3518
|
-
onMouseLeave: (e) => {
|
|
3519
|
-
e.currentTarget.style.backgroundColor = "transparent";
|
|
3520
|
-
},
|
|
3521
|
-
children: /* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", children: [
|
|
3522
|
-
/* @__PURE__ */ jsx(Icon, { size: 14, style: { color: "var(--color-text-dimmed)", flexShrink: 0 } }),
|
|
3523
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", children: preset.label })
|
|
3524
|
-
] })
|
|
3494
|
+
function SavedViewsPanel({ onViewClick, showSectionLabel = true }) {
|
|
3495
|
+
return /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
3496
|
+
showSectionLabel && /* @__PURE__ */ jsx(Text, { fz: "xs", tt: "uppercase", c: "dimmed", fw: 600, mb: 4, children: "Saved Views" }),
|
|
3497
|
+
SAVED_VIEW_PRESETS.map((preset) => {
|
|
3498
|
+
const Icon = ICON_MAP[preset.iconName];
|
|
3499
|
+
return /* @__PURE__ */ jsx(
|
|
3500
|
+
UnstyledButton,
|
|
3501
|
+
{
|
|
3502
|
+
onClick: () => onViewClick(preset),
|
|
3503
|
+
style: {
|
|
3504
|
+
display: "block",
|
|
3505
|
+
width: "100%",
|
|
3506
|
+
padding: "4px 6px",
|
|
3507
|
+
borderRadius: "var(--mantine-radius-sm)",
|
|
3508
|
+
transition: `background-color var(--duration-fast) var(--easing)`
|
|
3525
3509
|
},
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
|
|
3530
|
-
|
|
3510
|
+
onMouseEnter: (e) => {
|
|
3511
|
+
e.currentTarget.style.backgroundColor = "var(--color-surface-hover)";
|
|
3512
|
+
},
|
|
3513
|
+
onMouseLeave: (e) => {
|
|
3514
|
+
e.currentTarget.style.backgroundColor = "transparent";
|
|
3515
|
+
},
|
|
3516
|
+
children: /* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", children: [
|
|
3517
|
+
/* @__PURE__ */ jsx(Icon, { size: 14, style: { color: "var(--color-text-dimmed)", flexShrink: 0 } }),
|
|
3518
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", children: preset.label })
|
|
3519
|
+
] })
|
|
3520
|
+
},
|
|
3521
|
+
preset.id
|
|
3522
|
+
);
|
|
3523
|
+
})
|
|
3524
|
+
] }) });
|
|
3531
3525
|
}
|
|
3532
3526
|
var KIND_OPTIONS = [
|
|
3533
3527
|
{ value: "call", label: "Call" },
|
|
@@ -3542,7 +3536,7 @@ function buildDealLabel(deal) {
|
|
|
3542
3536
|
const company = contact.company?.name ?? "\u2014";
|
|
3543
3537
|
return name ? `${name} \u2013 ${company}` : `Deal ${deal.id.slice(0, 8)}`;
|
|
3544
3538
|
}
|
|
3545
|
-
function QuickCreateActions({
|
|
3539
|
+
function QuickCreateActions({ showSectionLabel = true }) {
|
|
3546
3540
|
const [open, setOpen] = useState(false);
|
|
3547
3541
|
const [dealId, setDealId] = useState(null);
|
|
3548
3542
|
const [title, setTitle] = useState("");
|
|
@@ -3580,21 +3574,8 @@ function QuickCreateActions({ onNewDeal }) {
|
|
|
3580
3574
|
const isSubmitDisabled = !dealId || !title || createTask.isPending;
|
|
3581
3575
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3582
3576
|
/* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
3583
|
-
/* @__PURE__ */ jsx(Text, { fz: "xs", tt: "uppercase", c: "dimmed", fw: 600, children: "
|
|
3584
|
-
/* @__PURE__ */
|
|
3585
|
-
/* @__PURE__ */ jsx(Button, { variant: "light", size: "xs", leftSection: /* @__PURE__ */ jsx(IconPlus, { size: 14 }), fullWidth: true, onClick: onNewDeal, children: "New Deal" }),
|
|
3586
|
-
/* @__PURE__ */ jsx(
|
|
3587
|
-
Button,
|
|
3588
|
-
{
|
|
3589
|
-
variant: "light",
|
|
3590
|
-
size: "xs",
|
|
3591
|
-
leftSection: /* @__PURE__ */ jsx(IconPlus, { size: 14 }),
|
|
3592
|
-
fullWidth: true,
|
|
3593
|
-
onClick: () => setOpen(true),
|
|
3594
|
-
children: "New Task"
|
|
3595
|
-
}
|
|
3596
|
-
)
|
|
3597
|
-
] })
|
|
3577
|
+
showSectionLabel && /* @__PURE__ */ jsx(Text, { fz: "xs", tt: "uppercase", c: "dimmed", fw: 600, children: "TASKS" }),
|
|
3578
|
+
/* @__PURE__ */ jsx(Button, { variant: "light", size: "xs", leftSection: /* @__PURE__ */ jsx(IconPlus, { size: 14 }), fullWidth: true, onClick: () => setOpen(true), children: "New Task" })
|
|
3598
3579
|
] }),
|
|
3599
3580
|
/* @__PURE__ */ jsxs(Modal, { opened: open, onClose: handleClose, title: "New Task", size: "md", children: [
|
|
3600
3581
|
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
@@ -3663,21 +3644,13 @@ var CRM_ITEMS = [
|
|
|
3663
3644
|
{ label: "Pipeline", to: "/crm/pipeline", icon: IconColumns, exact: false },
|
|
3664
3645
|
{ label: "Deals", to: "/crm/deals", icon: IconFileInvoice, exact: false }
|
|
3665
3646
|
];
|
|
3666
|
-
function toSearchString(filters) {
|
|
3667
|
-
if (!filters) return "";
|
|
3668
|
-
const params = new URLSearchParams();
|
|
3669
|
-
if (filters.stage) params.set("stage", filters.stage);
|
|
3670
|
-
if (filters.search) params.set("search", filters.search);
|
|
3671
|
-
const query = params.toString();
|
|
3672
|
-
return query ? `?${query}` : "";
|
|
3673
|
-
}
|
|
3674
3647
|
var CrmSidebarMiddle = () => {
|
|
3675
3648
|
const { currentPath, navigate } = useRouterContext();
|
|
3676
3649
|
return /* @__PURE__ */ jsxs(Stack, { gap: 0, style: { flex: 1, overflowY: "auto" }, children: [
|
|
3677
3650
|
/* @__PURE__ */ jsx(Stack, { gap: 0, p: "sm", children: CRM_ITEMS.map((item) => {
|
|
3678
3651
|
const isActive = item.exact ? currentPath === item.to || currentPath === `${item.to}/` : currentPath.startsWith(item.to);
|
|
3679
3652
|
return /* @__PURE__ */ jsx(
|
|
3680
|
-
|
|
3653
|
+
SubshellNavItem,
|
|
3681
3654
|
{
|
|
3682
3655
|
icon: item.icon,
|
|
3683
3656
|
label: item.label,
|
|
@@ -3687,26 +3660,16 @@ var CrmSidebarMiddle = () => {
|
|
|
3687
3660
|
item.to
|
|
3688
3661
|
);
|
|
3689
3662
|
}) }),
|
|
3690
|
-
/* @__PURE__ */ jsx(
|
|
3691
|
-
/* @__PURE__ */
|
|
3692
|
-
|
|
3693
|
-
|
|
3694
|
-
{
|
|
3695
|
-
|
|
3696
|
-
|
|
3697
|
-
}
|
|
3698
|
-
|
|
3699
|
-
|
|
3700
|
-
SavedViewsPanel,
|
|
3701
|
-
{
|
|
3702
|
-
onViewClick: (preset) => {
|
|
3703
|
-
const search = toSearchString(preset.urlFilters);
|
|
3704
|
-
navigate(`${preset.target}${search}`);
|
|
3705
|
-
}
|
|
3706
|
-
}
|
|
3707
|
-
),
|
|
3708
|
-
/* @__PURE__ */ jsx(QuickCreateActions, { onNewDeal: () => navigate("/crm/deals") })
|
|
3709
|
-
] })
|
|
3663
|
+
/* @__PURE__ */ jsx(SubshellSidebarSection, { icon: IconChecklist, label: "My Tasks", withTopBorder: true }),
|
|
3664
|
+
/* @__PURE__ */ jsx(Stack, { gap: 0, p: "sm", children: /* @__PURE__ */ jsx(
|
|
3665
|
+
MyTasksPanel,
|
|
3666
|
+
{
|
|
3667
|
+
onTaskClick: (dealId) => navigate(`/crm/deals/${dealId}`),
|
|
3668
|
+
onSeeAll: () => navigate("/crm/deals"),
|
|
3669
|
+
showSectionLabel: false,
|
|
3670
|
+
footer: /* @__PURE__ */ jsx(QuickCreateActions, { showSectionLabel: false })
|
|
3671
|
+
}
|
|
3672
|
+
) })
|
|
3710
3673
|
] });
|
|
3711
3674
|
};
|
|
3712
3675
|
var CrmSidebar = () => {
|
|
@@ -4097,20 +4060,23 @@ function CrmOverview({
|
|
|
4097
4060
|
] })
|
|
4098
4061
|
] });
|
|
4099
4062
|
}
|
|
4100
|
-
|
|
4101
|
-
// src/features/crm/manifest.ts
|
|
4102
4063
|
var crmManifest = {
|
|
4103
4064
|
key: "crm",
|
|
4104
4065
|
label: "CRM",
|
|
4105
4066
|
sidebar: CrmSidebar,
|
|
4106
|
-
subshellRoutes: ["/crm"]
|
|
4067
|
+
subshellRoutes: ["/crm"],
|
|
4068
|
+
navEntry: {
|
|
4069
|
+
label: "CRM",
|
|
4070
|
+
icon: IconAddressBook,
|
|
4071
|
+
link: "/crm",
|
|
4072
|
+
featureKey: "acquisition"
|
|
4073
|
+
}
|
|
4107
4074
|
};
|
|
4108
4075
|
var LeadGenSidebarTop = () => {
|
|
4109
4076
|
return /* @__PURE__ */ jsx(SubshellSidebarSection, { icon: IconTarget, label: "Lead Gen" });
|
|
4110
4077
|
};
|
|
4111
4078
|
var LEAD_GEN_ITEMS = [
|
|
4112
4079
|
{ label: "Overview", to: "/lead-gen", icon: IconLayoutGrid, exact: true },
|
|
4113
|
-
{ label: "Legacy Redirect", to: "/lead-gen/batches", icon: IconListDetails, exact: false },
|
|
4114
4080
|
{ label: "Lists", to: "/lead-gen/lists", icon: IconList, exact: false },
|
|
4115
4081
|
{ label: "Companies", to: "/lead-gen/companies", icon: IconBuilding, exact: false },
|
|
4116
4082
|
{ label: "Contacts", to: "/lead-gen/contacts", icon: IconAddressBook, exact: false },
|
|
@@ -4121,7 +4087,7 @@ var LeadGenSidebarMiddle = () => {
|
|
|
4121
4087
|
return /* @__PURE__ */ jsx(Stack, { gap: 0, style: { flex: 1, overflowY: "auto" }, children: /* @__PURE__ */ jsx(Stack, { gap: 0, p: "sm", children: LEAD_GEN_ITEMS.map((item) => {
|
|
4122
4088
|
const isActive = item.exact ? currentPath === item.to || currentPath === `${item.to}/` : currentPath.startsWith(item.to);
|
|
4123
4089
|
return /* @__PURE__ */ jsx(
|
|
4124
|
-
|
|
4090
|
+
SubshellNavItem,
|
|
4125
4091
|
{
|
|
4126
4092
|
icon: item.icon,
|
|
4127
4093
|
label: item.label,
|
|
@@ -4138,13 +4104,17 @@ var LeadGenSidebar = () => {
|
|
|
4138
4104
|
/* @__PURE__ */ jsx(LeadGenSidebarMiddle, {})
|
|
4139
4105
|
] });
|
|
4140
4106
|
};
|
|
4141
|
-
|
|
4142
|
-
// src/features/lead-gen/manifest.ts
|
|
4143
4107
|
var leadGenManifest = {
|
|
4144
4108
|
key: "lead-gen",
|
|
4145
4109
|
label: "Lead Gen",
|
|
4146
4110
|
sidebar: LeadGenSidebar,
|
|
4147
|
-
subshellRoutes: ["/lead-gen"]
|
|
4111
|
+
subshellRoutes: ["/lead-gen"],
|
|
4112
|
+
navEntry: {
|
|
4113
|
+
label: "Lead Gen",
|
|
4114
|
+
icon: IconTarget,
|
|
4115
|
+
link: "/lead-gen",
|
|
4116
|
+
featureKey: "acquisition"
|
|
4117
|
+
}
|
|
4148
4118
|
};
|
|
4149
4119
|
var SEOSidebarTop = () => {
|
|
4150
4120
|
return /* @__PURE__ */ jsx(SubshellSidebarSection, { icon: IconSearch, label: "SEO" });
|
|
@@ -4158,7 +4128,7 @@ var SEOSidebarMiddle = () => {
|
|
|
4158
4128
|
return /* @__PURE__ */ jsx(Stack, { gap: "xs", p: "sm", style: { flex: 1, overflowY: "auto" }, children: NAV_ITEMS.map((item) => {
|
|
4159
4129
|
const isActive = item.exact ? currentPath === item.to || currentPath === `${item.to}/` : currentPath.startsWith(item.to);
|
|
4160
4130
|
return /* @__PURE__ */ jsx(
|
|
4161
|
-
|
|
4131
|
+
SubshellNavItem,
|
|
4162
4132
|
{
|
|
4163
4133
|
icon: item.icon,
|
|
4164
4134
|
label: item.label,
|
|
@@ -4339,10 +4309,6 @@ var noteTypeColors = {
|
|
|
4339
4309
|
function formatStatusLabel(status) {
|
|
4340
4310
|
return status.split("_").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
4341
4311
|
}
|
|
4342
|
-
function formatDate3(dateString) {
|
|
4343
|
-
if (!dateString) return "-";
|
|
4344
|
-
return new Date(dateString).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" });
|
|
4345
|
-
}
|
|
4346
4312
|
function calculateProgress(completed, total) {
|
|
4347
4313
|
if (total === 0) return 0;
|
|
4348
4314
|
return Math.round(completed / total * 100);
|
|
@@ -4463,7 +4429,7 @@ var ProjectsSidebarMiddle = ({ currentPath, onNavigate } = {}) => {
|
|
|
4463
4429
|
const renderItems = (items) => items.map((item) => {
|
|
4464
4430
|
const isActive = item.exact ? resolvedCurrentPath === item.to || resolvedCurrentPath === `${item.to}/` : resolvedCurrentPath.startsWith(item.to);
|
|
4465
4431
|
return /* @__PURE__ */ jsx(
|
|
4466
|
-
|
|
4432
|
+
SubshellNavItem,
|
|
4467
4433
|
{
|
|
4468
4434
|
icon: item.icon,
|
|
4469
4435
|
label: item.label,
|
|
@@ -4491,141 +4457,6 @@ var ProjectsSidebar = () => {
|
|
|
4491
4457
|
/* @__PURE__ */ jsx(ProjectsSidebarMiddle, {})
|
|
4492
4458
|
] });
|
|
4493
4459
|
};
|
|
4494
|
-
var taskStatusOptions = [
|
|
4495
|
-
{ value: "planned", label: "Planned" },
|
|
4496
|
-
{ value: "in_progress", label: "In Progress" },
|
|
4497
|
-
{ value: "blocked", label: "Blocked" },
|
|
4498
|
-
{ value: "completed", label: "Completed" },
|
|
4499
|
-
{ value: "cancelled", label: "Cancelled" },
|
|
4500
|
-
{ value: "submitted", label: "Submitted" },
|
|
4501
|
-
{ value: "approved", label: "Approved" },
|
|
4502
|
-
{ value: "rejected", label: "Rejected" },
|
|
4503
|
-
{ value: "revision_requested", label: "Revision Requested" }
|
|
4504
|
-
];
|
|
4505
|
-
var taskTypeOptions = [
|
|
4506
|
-
{ value: "documentation", label: "Documentation" },
|
|
4507
|
-
{ value: "code", label: "Code" },
|
|
4508
|
-
{ value: "report", label: "Report" },
|
|
4509
|
-
{ value: "design", label: "Design" },
|
|
4510
|
-
{ value: "other", label: "Other" }
|
|
4511
|
-
];
|
|
4512
|
-
function AllTasksPage() {
|
|
4513
|
-
const [statusFilter, setStatusFilter] = useState(null);
|
|
4514
|
-
const [typeFilter, setTypeFilter] = useState(null);
|
|
4515
|
-
const { data: tasks, isLoading } = useTasks({
|
|
4516
|
-
status: statusFilter || void 0,
|
|
4517
|
-
type: typeFilter || void 0
|
|
4518
|
-
});
|
|
4519
|
-
const { data: projects } = useProjects();
|
|
4520
|
-
const projectNameById = useMemo(() => new Map(projects?.map((p) => [p.id, p.name]) ?? []), [projects]);
|
|
4521
|
-
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsxs(PageContainer, { children: [
|
|
4522
|
-
/* @__PURE__ */ jsx(Stack, { children: /* @__PURE__ */ jsx(PageTitleCaption, { title: "All Tasks", caption: "Tasks across all projects, filterable by status and type" }) }),
|
|
4523
|
-
/* @__PURE__ */ jsx(Paper, { children: /* @__PURE__ */ jsxs(Stack, { children: [
|
|
4524
|
-
/* @__PURE__ */ jsxs(Group, { m: "sm", children: [
|
|
4525
|
-
/* @__PURE__ */ jsx(
|
|
4526
|
-
Select,
|
|
4527
|
-
{
|
|
4528
|
-
placeholder: "All Statuses",
|
|
4529
|
-
data: taskStatusOptions,
|
|
4530
|
-
style: { minWidth: 180, maxWidth: 220 },
|
|
4531
|
-
size: "sm",
|
|
4532
|
-
clearable: true,
|
|
4533
|
-
value: statusFilter,
|
|
4534
|
-
onChange: setStatusFilter
|
|
4535
|
-
}
|
|
4536
|
-
),
|
|
4537
|
-
/* @__PURE__ */ jsx(
|
|
4538
|
-
Select,
|
|
4539
|
-
{
|
|
4540
|
-
placeholder: "All Types",
|
|
4541
|
-
data: taskTypeOptions,
|
|
4542
|
-
style: { minWidth: 180, maxWidth: 220 },
|
|
4543
|
-
size: "sm",
|
|
4544
|
-
clearable: true,
|
|
4545
|
-
value: typeFilter,
|
|
4546
|
-
onChange: setTypeFilter
|
|
4547
|
-
}
|
|
4548
|
-
)
|
|
4549
|
-
] }),
|
|
4550
|
-
isLoading ? /* @__PURE__ */ jsx(Center, { p: "xl", children: /* @__PURE__ */ jsx(Loader, {}) }) : !tasks?.length ? /* @__PURE__ */ jsx(EmptyState, { icon: IconChecklist, title: "No tasks found" }) : /* @__PURE__ */ jsxs(Table, { children: [
|
|
4551
|
-
/* @__PURE__ */ jsx(Table.Thead, { children: /* @__PURE__ */ jsxs(Table.Tr, { children: [
|
|
4552
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Status" }),
|
|
4553
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Type" }),
|
|
4554
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Name" }),
|
|
4555
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Project" }),
|
|
4556
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Milestone" }),
|
|
4557
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Created" })
|
|
4558
|
-
] }) }),
|
|
4559
|
-
/* @__PURE__ */ jsx(Table.Tbody, { children: tasks.map((task) => /* @__PURE__ */ jsxs(Table.Tr, { children: [
|
|
4560
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Badge, { variant: "light", color: taskStatusColors[task.status] || "gray", size: "sm", children: formatStatusLabel(task.status) }) }),
|
|
4561
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Badge, { variant: "light", color: taskTypeColors[task.type] || "gray", size: "sm", children: formatStatusLabel(task.type) }) }),
|
|
4562
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", children: task.name }) }),
|
|
4563
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: projectNameById.get(task.project_id) || "-" }) }),
|
|
4564
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "-" }) }),
|
|
4565
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: formatTimeAgo(task.created_at) }) })
|
|
4566
|
-
] }, task.id)) })
|
|
4567
|
-
] })
|
|
4568
|
-
] }) })
|
|
4569
|
-
] }) });
|
|
4570
|
-
}
|
|
4571
|
-
var milestoneStatusOptions = [
|
|
4572
|
-
{ value: "upcoming", label: "Upcoming" },
|
|
4573
|
-
{ value: "in_progress", label: "In Progress" },
|
|
4574
|
-
{ value: "overdue", label: "Overdue" },
|
|
4575
|
-
{ value: "blocked", label: "Blocked" }
|
|
4576
|
-
];
|
|
4577
|
-
function UpcomingMilestonesPage() {
|
|
4578
|
-
const [statusFilter, setStatusFilter] = useState(null);
|
|
4579
|
-
const { data: milestonesRaw, isLoading } = useMilestones({
|
|
4580
|
-
status: statusFilter || void 0
|
|
4581
|
-
});
|
|
4582
|
-
const { data: projects } = useProjects();
|
|
4583
|
-
const projectNameById = useMemo(() => new Map(projects?.map((p) => [p.id, p.name]) ?? []), [projects]);
|
|
4584
|
-
const milestones = useMemo(() => {
|
|
4585
|
-
const list = milestonesRaw ?? [];
|
|
4586
|
-
const filtered = statusFilter ? list : list.filter((m) => m.status !== "completed");
|
|
4587
|
-
return [...filtered].sort((a, b) => {
|
|
4588
|
-
if (!a.due_date && !b.due_date) return 0;
|
|
4589
|
-
if (!a.due_date) return 1;
|
|
4590
|
-
if (!b.due_date) return -1;
|
|
4591
|
-
return a.due_date < b.due_date ? -1 : a.due_date > b.due_date ? 1 : 0;
|
|
4592
|
-
});
|
|
4593
|
-
}, [milestonesRaw, statusFilter]);
|
|
4594
|
-
return /* @__PURE__ */ jsx(SubshellContentContainer, { children: /* @__PURE__ */ jsxs(PageContainer, { children: [
|
|
4595
|
-
/* @__PURE__ */ jsx(Stack, { children: /* @__PURE__ */ jsx(PageTitleCaption, { title: "Upcoming Milestones", caption: "Milestones across all projects sorted by due date" }) }),
|
|
4596
|
-
/* @__PURE__ */ jsx(Paper, { children: /* @__PURE__ */ jsxs(Stack, { children: [
|
|
4597
|
-
/* @__PURE__ */ jsx(
|
|
4598
|
-
Select,
|
|
4599
|
-
{
|
|
4600
|
-
placeholder: "All Statuses",
|
|
4601
|
-
data: milestoneStatusOptions,
|
|
4602
|
-
style: { minWidth: 180, maxWidth: 220 },
|
|
4603
|
-
size: "sm",
|
|
4604
|
-
clearable: true,
|
|
4605
|
-
value: statusFilter,
|
|
4606
|
-
onChange: setStatusFilter,
|
|
4607
|
-
m: "sm"
|
|
4608
|
-
}
|
|
4609
|
-
),
|
|
4610
|
-
isLoading ? /* @__PURE__ */ jsx(Center, { p: "xl", children: /* @__PURE__ */ jsx(Loader, {}) }) : !milestones.length ? /* @__PURE__ */ jsx(EmptyState, { icon: IconFlag, title: "No upcoming milestones" }) : /* @__PURE__ */ jsxs(Table, { children: [
|
|
4611
|
-
/* @__PURE__ */ jsx(Table.Thead, { children: /* @__PURE__ */ jsxs(Table.Tr, { children: [
|
|
4612
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Status" }),
|
|
4613
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Name" }),
|
|
4614
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Project" }),
|
|
4615
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Due" }),
|
|
4616
|
-
/* @__PURE__ */ jsx(Table.Th, { children: "Progress" })
|
|
4617
|
-
] }) }),
|
|
4618
|
-
/* @__PURE__ */ jsx(Table.Tbody, { children: milestones.map((milestone) => /* @__PURE__ */ jsxs(Table.Tr, { children: [
|
|
4619
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Badge, { variant: "light", color: milestoneStatusColors[milestone.status] || "gray", size: "sm", children: formatStatusLabel(milestone.status) }) }),
|
|
4620
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", children: milestone.name }) }),
|
|
4621
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: projectNameById.get(milestone.project_id) || "-" }) }),
|
|
4622
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: formatDate3(milestone.due_date) }) }),
|
|
4623
|
-
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "-" }) })
|
|
4624
|
-
] }, milestone.id)) })
|
|
4625
|
-
] })
|
|
4626
|
-
] }) })
|
|
4627
|
-
] }) });
|
|
4628
|
-
}
|
|
4629
4460
|
var deliveryManifest = {
|
|
4630
4461
|
key: "delivery",
|
|
4631
4462
|
label: "Projects",
|
|
@@ -4690,4 +4521,4 @@ function NotificationBell({ unreadCount, onNavigate }) {
|
|
|
4690
4521
|
] });
|
|
4691
4522
|
}
|
|
4692
4523
|
|
|
4693
|
-
export { AbsoluteScheduleForm, ActivityFeedWidget,
|
|
4524
|
+
export { AbsoluteScheduleForm, ActivityFeedWidget, ApiKeyDisplayModal, ApiKeyList, ApiKeySettings, Breadcrumbs, CrashErrorFallback, CreateApiKeyModal, CreateScheduleModal, CrmOverview, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, DEAL_STAGES, DEFAULT_KANBAN_CONFIG, DealDrawer, DealKanbanCard, DeleteScheduleModal, DeploymentDetailModal, DeploymentList, DeploymentSettings, DeploymentStatusBadge, DocTreeNav, EditApiKeyModal, ErrorReportCard, HealthStatusCard, KanbanBoard, KnowledgeBasePage, LeadGenSidebar, LeadGenSidebarMiddle, LeadGenSidebarTop, MdxRenderer, MetricsStrip, MilestoneTimeline, MyTasksPanel, NotificationBell, NotificationPanel, PIPELINE_FUNNEL_ORDER, PipelineFunnelWidget, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, QuickCreateActions, RecurringScheduleForm, RelativeScheduleForm, RichTextEditor, SAVED_VIEW_PRESETS, SEOSidebar, SEOSidebarMiddle, SEOSidebarTop, SavedViewsPanel, ScheduleCard, ScheduleDetailModal, ScheduleTypeSelector, SortableHeader, TableSelectionToolbar, TaskCard, TaskScheduler, TasksDueWidget, buildErrorReport, calculateProgress, crmManifest, deliveryManifest, formatStatusLabel, leadGenManifest, mdxComponents, milestoneStatusColors, noteTypeColors, projectStatusColors, seoManifest, taskStatusColors, taskTypeColors, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity };
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { AppShellLoader, AppShellError } from '../../chunk-
|
|
1
|
+
import { AppShellLoader, AppShellError } from '../../chunk-YEX4MQSY.js';
|
|
2
2
|
import { useAppearance } from '../../chunk-QJ2KCHKX.js';
|
|
3
|
-
import '../../chunk-
|
|
3
|
+
import '../../chunk-DT3QYZVU.js';
|
|
4
4
|
import '../../chunk-SLVC5OJ2.js';
|
|
5
5
|
import '../../chunk-RNP5R5I3.js';
|
|
6
|
-
import { ProtectedRoute, AdminGuard } from '../../chunk-
|
|
7
|
-
import '../../chunk-ALA56RGZ.js';
|
|
6
|
+
import { ProtectedRoute, AdminGuard } from '../../chunk-MTJ43R2E.js';
|
|
8
7
|
import { useInitialization } from '../../chunk-TUXTSEAF.js';
|
|
9
8
|
import '../../chunk-DD3CCMCZ.js';
|
|
10
9
|
export { useUserProfile } from '../../chunk-QEPXAWE2.js';
|
|
@@ -150,7 +150,7 @@ declare const DOMAINS: {
|
|
|
150
150
|
*/
|
|
151
151
|
type ResourceDomain = (typeof DOMAINS)[keyof typeof DOMAINS];
|
|
152
152
|
|
|
153
|
-
interface
|
|
153
|
+
interface OperationsOverviewProps {
|
|
154
154
|
/**
|
|
155
155
|
* Active time range for all metrics queries.
|
|
156
156
|
*/
|
|
@@ -202,7 +202,13 @@ interface DashboardProps {
|
|
|
202
202
|
*/
|
|
203
203
|
renderTrendChart?: (data: DashboardMetrics['executionHealth'] | undefined, isLoading: boolean, error?: Error) => ReactNode;
|
|
204
204
|
}
|
|
205
|
-
declare function
|
|
205
|
+
declare function OperationsOverview({ timeRange, onResourceClick, onErrorsNavigate, onCommandQueueNavigate, onScheduledTasksNavigate, renderTrendChart }: OperationsOverviewProps): react_jsx_runtime.JSX.Element;
|
|
206
|
+
type DashboardProps = OperationsOverviewProps;
|
|
207
|
+
/**
|
|
208
|
+
* @deprecated Use `OperationsOverview` instead. `Dashboard` remains as a
|
|
209
|
+
* compatibility export while consumer apps migrate route ownership.
|
|
210
|
+
*/
|
|
211
|
+
declare const Dashboard: typeof OperationsOverview;
|
|
206
212
|
|
|
207
213
|
interface DisplayResource {
|
|
208
214
|
resourceId: string;
|
|
@@ -245,6 +251,7 @@ interface FeatureNavLink {
|
|
|
245
251
|
link: string;
|
|
246
252
|
featureKey?: string;
|
|
247
253
|
onClick?: () => void;
|
|
254
|
+
links?: FeatureNavLink[];
|
|
248
255
|
}
|
|
249
256
|
interface FeatureNavEntry {
|
|
250
257
|
label: string;
|
|
@@ -264,7 +271,11 @@ interface FeatureModule {
|
|
|
264
271
|
subshellRoutes?: string[];
|
|
265
272
|
}
|
|
266
273
|
|
|
274
|
+
/**
|
|
275
|
+
* Compatibility manifest for existing consumers that still register a
|
|
276
|
+
* top-level dashboard nav entry. Host apps should eventually own this nav item.
|
|
277
|
+
*/
|
|
267
278
|
declare const dashboardManifest: FeatureModule;
|
|
268
279
|
|
|
269
|
-
export { Dashboard, RecentExecutionsByResource, ResourceOverview, UnresolvedErrorsTeaser, dashboardManifest };
|
|
270
|
-
export type { DashboardProps, DisplayResource, RecentExecutionsByResourceProps, ResourceOverviewProps, UnresolvedErrorsTeaserProps };
|
|
280
|
+
export { Dashboard, OperationsOverview, RecentExecutionsByResource, ResourceOverview, UnresolvedErrorsTeaser, dashboardManifest };
|
|
281
|
+
export type { DashboardProps, DisplayResource, OperationsOverviewProps, RecentExecutionsByResourceProps, ResourceOverviewProps, UnresolvedErrorsTeaserProps };
|