@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.
Files changed (54) hide show
  1. package/dist/auth/index.js +1 -2
  2. package/dist/charts/index.js +7 -9
  3. package/dist/{chunk-FW4S3Z5I.js → chunk-2DSYC52I.js} +3 -3
  4. package/dist/{chunk-ZWY3A6ZU.js → chunk-CTU2JO57.js} +31 -31
  5. package/dist/{chunk-QJ2S46NI.js → chunk-DT3QYZVU.js} +2 -2
  6. package/dist/{chunk-QTD5HPKD.js → chunk-EIHG5JZN.js} +1 -1
  7. package/dist/{chunk-JHVKGZ2P.js → chunk-KFICYU6S.js} +3 -4
  8. package/dist/{chunk-R2BQITMQ.js → chunk-MELNDAZY.js} +20 -110
  9. package/dist/{chunk-RWQIFKMJ.js → chunk-MTJ43R2E.js} +10 -2
  10. package/dist/{chunk-45MS3IAW.js → chunk-MZPVNRPL.js} +136 -28
  11. package/dist/{chunk-NNKKBSJN.js → chunk-NYBEU5TE.js} +1 -1
  12. package/dist/{chunk-2IJCM3VQ.js → chunk-OCP2MBTY.js} +134 -118
  13. package/dist/{chunk-KP6LNTMH.js → chunk-OKKGD3S6.js} +3 -3
  14. package/dist/{chunk-BYZ7VTSH.js → chunk-PRLXFMNP.js} +2 -2
  15. package/dist/{chunk-T2X3WHQS.js → chunk-QRHLV74B.js} +23 -18
  16. package/dist/{chunk-5COLSYBE.js → chunk-RX4UWZZR.js} +1 -1
  17. package/dist/{chunk-C27LLJM6.js → chunk-SMJLS23U.js} +2 -2
  18. package/dist/{chunk-F2J7675J.js → chunk-TQ3HK7ZR.js} +633 -7
  19. package/dist/{chunk-EINVPEHK.js → chunk-TZOGB3X4.js} +2 -2
  20. package/dist/{chunk-TXPUIHX2.js → chunk-X7CHQ3RE.js} +1 -1
  21. package/dist/{chunk-MCA6LOGM.js → chunk-Y3D3WFJG.js} +54 -5
  22. package/dist/{chunk-YYBM5LNJ.js → chunk-YEX4MQSY.js} +1 -1
  23. package/dist/components/index.d.ts +24 -16
  24. package/dist/components/index.js +102 -271
  25. package/dist/features/auth/index.js +3 -4
  26. package/dist/features/dashboard/index.d.ts +15 -4
  27. package/dist/features/dashboard/index.js +15 -18
  28. package/dist/features/monitoring/index.css +127 -127
  29. package/dist/features/monitoring/index.d.ts +1 -0
  30. package/dist/features/monitoring/index.js +17 -19
  31. package/dist/features/operations/index.d.ts +173 -56
  32. package/dist/features/operations/index.js +19 -20
  33. package/dist/features/settings/index.d.ts +1 -0
  34. package/dist/features/settings/index.js +15 -17
  35. package/dist/hooks/index.css +127 -127
  36. package/dist/hooks/index.js +12 -9
  37. package/dist/hooks/published.css +127 -127
  38. package/dist/hooks/published.js +11 -8
  39. package/dist/index.css +118 -118
  40. package/dist/index.d.ts +14 -2
  41. package/dist/index.js +13 -12
  42. package/dist/layout/index.d.ts +20 -44
  43. package/dist/layout/index.js +6 -6
  44. package/dist/provider/index.css +127 -59
  45. package/dist/provider/index.d.ts +14 -2
  46. package/dist/provider/index.js +10 -6
  47. package/dist/provider/published.css +126 -0
  48. package/dist/provider/published.d.ts +14 -2
  49. package/dist/provider/published.js +8 -3
  50. package/dist/theme/index.js +2 -2
  51. package/package.json +3 -3
  52. package/dist/chunk-ALA56RGZ.js +0 -13
  53. package/dist/chunk-JQ4AKYUD.js +0 -635
  54. package/dist/chunk-SZHARWKU.js +0 -15
@@ -1,56 +1,53 @@
1
1
  import { useBreadcrumbs } from '../chunk-MG3NF7QL.js';
2
- import '../chunk-C27LLJM6.js';
3
- import { NotificationList } from '../chunk-T2X3WHQS.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-T2X3WHQS.js';
5
- export { CreateCredentialModal, CredentialList, CredentialSettings, MembershipFeaturePanel, MembershipStatusBadge, OAuthConnectModal, OrganizationMembershipsList, WebhookUrlDisplayModal, settingsManifest } from '../chunk-R2BQITMQ.js';
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 { dashboardManifest } from '../chunk-JQ4AKYUD.js';
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, SidebarListItem, CollapsibleSidebarGroup } from '../chunk-2IJCM3VQ.js';
13
- export { ResourceHealthPanel } from '../chunk-KP6LNTMH.js';
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-F2J7675J.js';
17
- import '../chunk-JHVKGZ2P.js';
18
- import { ListSkeleton, EmptyState, PageTitleCaption, StatCard, CenteredErrorState, CardHeader, ActivityTimeline, StatusBadge } from '../chunk-MCA6LOGM.js';
19
- export { APIErrorAlert, ActivityTimeline, CardHeader, CenteredErrorState, CollapsibleSection, ContextViewer, CustomSelector, DetailCardSkeleton, EmptyState, GlowDot, JsonViewer, ListSkeleton, PageNotFound, PageTitleCaption, ResourceCard, StatCard, StatCardSkeleton, StatsCardSkeleton, StatusBadge, TabCountBadge, TimeRangeSelector, TrendIndicator, catalogItemToResourceDefinition } from '../chunk-MCA6LOGM.js';
20
- export { StyledMarkdown } from '../chunk-3KMDHCAR.js';
21
- export { NavigationButton } from '../chunk-NNKKBSJN.js';
22
- import { AppShellLoader } from '../chunk-YYBM5LNJ.js';
23
- import '../chunk-QTD5HPKD.js';
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-ELJIFLCB.js';
31
- import '../chunk-FW4S3Z5I.js';
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-45MS3IAW.js';
36
- import { SubshellContainer, SubshellSidebar, SubshellRightSideContainer, SubshellContentContainer } from '../chunk-5COLSYBE.js';
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-QJ2S46NI.js';
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-RWQIFKMJ.js';
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, IconAddressBook, IconTrophy, IconClockExclamation, IconUser, IconLayoutGrid, IconColumns, IconFileInvoice, IconChecklist, IconHistory, IconTarget, IconListDetails, 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';
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
- SidebarListItem,
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({ onTaskClick, onSeeAll }) {
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__ */ jsxs(Box, { children: [
3499
- /* @__PURE__ */ jsx(Divider, { mb: "xs" }),
3500
- /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
3501
- /* @__PURE__ */ jsx(Text, { fz: "xs", tt: "uppercase", c: "dimmed", fw: 600, mb: 4, children: "Saved Views" }),
3502
- SAVED_VIEW_PRESETS.map((preset) => {
3503
- const Icon = ICON_MAP[preset.iconName];
3504
- return /* @__PURE__ */ jsx(
3505
- UnstyledButton,
3506
- {
3507
- onClick: () => onViewClick(preset),
3508
- style: {
3509
- display: "block",
3510
- width: "100%",
3511
- padding: "4px 6px",
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
- preset.id
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({ onNewDeal }) {
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: "QUICK CREATE" }),
3584
- /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
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
- SidebarListItem,
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(Divider, { my: "xs" }),
3691
- /* @__PURE__ */ jsxs(Stack, { gap: "md", p: "sm", children: [
3692
- /* @__PURE__ */ jsx(
3693
- MyTasksPanel,
3694
- {
3695
- onTaskClick: (dealId) => navigate(`/crm/deals/${dealId}`),
3696
- onSeeAll: () => navigate("/crm/deals")
3697
- }
3698
- ),
3699
- /* @__PURE__ */ jsx(
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
- SidebarListItem,
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
- SidebarListItem,
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
- SidebarListItem,
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, AllTasksPage, 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, UpcomingMilestonesPage, buildErrorReport, calculateProgress, crmManifest, deliveryManifest, formatStatusLabel, leadGenManifest, mdxComponents, milestoneStatusColors, noteTypeColors, projectStatusColors, seoManifest, taskStatusColors, taskTypeColors, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity };
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-YYBM5LNJ.js';
1
+ import { AppShellLoader, AppShellError } from '../../chunk-YEX4MQSY.js';
2
2
  import { useAppearance } from '../../chunk-QJ2KCHKX.js';
3
- import '../../chunk-QJ2S46NI.js';
3
+ import '../../chunk-DT3QYZVU.js';
4
4
  import '../../chunk-SLVC5OJ2.js';
5
5
  import '../../chunk-RNP5R5I3.js';
6
- import { ProtectedRoute, AdminGuard } from '../../chunk-RWQIFKMJ.js';
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 DashboardProps {
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 Dashboard({ timeRange, onResourceClick, onErrorsNavigate, onCommandQueueNavigate, onScheduledTasksNavigate, renderTrendChart }: DashboardProps): react_jsx_runtime.JSX.Element;
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 };