@elevasis/ui 2.16.0 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/api/index.js +3 -2
  2. package/dist/app/index.js +9 -7
  3. package/dist/auth/index.js +4 -3
  4. package/dist/charts/index.js +11 -10
  5. package/dist/{chunk-DT7ETYBT.js → chunk-2TDZBYXI.js} +3 -3
  6. package/dist/{chunk-5IBTTMWX.js → chunk-34NQLV2W.js} +2 -2
  7. package/dist/{chunk-FL67C3WY.js → chunk-6IA2OMAE.js} +1 -1
  8. package/dist/{chunk-L4XXM55J.js → chunk-7YQKVWSD.js} +1 -1
  9. package/dist/{chunk-7MBONWZZ.js → chunk-ABUDMATM.js} +7 -8
  10. package/dist/{chunk-TUXTSEAF.js → chunk-DK2HVHCY.js} +1 -1
  11. package/dist/{chunk-GHIPBT5V.js → chunk-E4WQGJNS.js} +1 -1
  12. package/dist/{chunk-6SHOLCSV.js → chunk-FNWWVX5N.js} +5 -4
  13. package/dist/{chunk-IOKL7BKE.js → chunk-GCBWGGI6.js} +133 -1
  14. package/dist/chunk-GRGRBWIO.js +383 -0
  15. package/dist/{chunk-SLVC5OJ2.js → chunk-HQ7M6PBW.js} +1 -1
  16. package/dist/chunk-IRW7JMQ4.js +28 -0
  17. package/dist/{chunk-C3INGWGK.js → chunk-JU6UB4YA.js} +4 -4
  18. package/dist/{chunk-M2RM3CC4.js → chunk-MDO4UCEJ.js} +4 -4
  19. package/dist/{chunk-STZJ7SY5.js → chunk-MJ6YV2B5.js} +3 -2
  20. package/dist/{chunk-LKU4JCPR.js → chunk-MUZIYL5Q.js} +5 -4
  21. package/dist/{chunk-BKSSVQM6.js → chunk-OCCZRPER.js} +1 -1
  22. package/dist/{chunk-XNEYUG4B.js → chunk-OXWQQCDR.js} +13 -32
  23. package/dist/{chunk-ZB5GAV7J.js → chunk-P3TFNFZS.js} +6 -5
  24. package/dist/{chunk-QEPXAWE2.js → chunk-QHSW4WHM.js} +3 -26
  25. package/dist/{chunk-LXHZYSMQ.js → chunk-QSTH6T77.js} +2 -52
  26. package/dist/{chunk-F4VHHW4O.js → chunk-R7GKX4HW.js} +9 -409
  27. package/dist/{chunk-5UQKR27N.js → chunk-S6CYH4RI.js} +7 -6
  28. package/dist/{chunk-MTJ43R2E.js → chunk-SLH2QLKV.js} +1 -1
  29. package/dist/{chunk-RWFT46RK.js → chunk-TP5NMF6K.js} +6 -7
  30. package/dist/{chunk-SQQGLGHW.js → chunk-TTP62HWW.js} +3 -3
  31. package/dist/{chunk-NVOCKXUQ.js → chunk-VDM6DQES.js} +1 -1
  32. package/dist/chunk-ZTWA5H77.js +94 -0
  33. package/dist/components/index.d.ts +2640 -2640
  34. package/dist/components/index.js +38 -35
  35. package/dist/execution/index.js +2 -2
  36. package/dist/features/auth/index.js +5 -4
  37. package/dist/features/crm/index.d.ts +51 -51
  38. package/dist/features/crm/index.js +21 -19
  39. package/dist/features/dashboard/index.js +23 -21
  40. package/dist/features/delivery/index.d.ts +2604 -2604
  41. package/dist/features/delivery/index.js +21 -19
  42. package/dist/features/lead-gen/index.js +29 -26
  43. package/dist/features/monitoring/index.js +26 -24
  44. package/dist/features/monitoring/requests/index.d.ts +26 -26
  45. package/dist/features/monitoring/requests/index.js +20 -18
  46. package/dist/features/operations/index.d.ts +10 -10
  47. package/dist/features/operations/index.js +28 -25
  48. package/dist/features/seo/index.js +1 -1
  49. package/dist/features/settings/index.d.ts +34 -34
  50. package/dist/features/settings/index.js +22 -20
  51. package/dist/hooks/delivery/index.css +589 -0
  52. package/dist/hooks/delivery/index.d.ts +3044 -0
  53. package/dist/hooks/delivery/index.js +4 -0
  54. package/dist/hooks/index.d.ts +3095 -3095
  55. package/dist/hooks/index.js +20 -18
  56. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +506 -0
  57. package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +1 -0
  58. package/dist/hooks/published.d.ts +3095 -3095
  59. package/dist/hooks/published.js +20 -18
  60. package/dist/index.d.ts +3396 -3335
  61. package/dist/index.js +21 -19
  62. package/dist/initialization/index.js +4 -3
  63. package/dist/layout/index.js +3 -3
  64. package/dist/organization/index.js +4 -3
  65. package/dist/profile/index.js +2 -1
  66. package/dist/provider/ElevasisServiceContext.d.ts +54 -0
  67. package/dist/provider/ElevasisServiceContext.js +1 -0
  68. package/dist/provider/index.d.ts +239 -239
  69. package/dist/provider/index.js +17 -16
  70. package/dist/provider/published.d.ts +239 -239
  71. package/dist/provider/published.js +15 -14
  72. package/dist/types/index.d.ts +2349 -2332
  73. package/dist/utils/index.d.ts +73 -1
  74. package/dist/utils/index.js +2 -1
  75. package/dist/zustand/index.d.ts +7 -7
  76. package/package.json +3 -3
  77. package/dist/{chunk-4BF74JVD.js → chunk-6GUW5GGF.js} +1 -1
  78. package/dist/{chunk-ELJIFLCB.js → chunk-KRWALB24.js} +6 -6
package/dist/api/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import '../chunk-XCYKC6OZ.js';
2
- export { ApiClientProvider, useApiClient, useApiClientContext } from '../chunk-NVOCKXUQ.js';
3
- import '../chunk-IOKL7BKE.js';
2
+ export { ApiClientProvider, useApiClient, useApiClientContext } from '../chunk-VDM6DQES.js';
3
+ import '../chunk-GCBWGGI6.js';
4
+ import '../chunk-KRWALB24.js';
4
5
  import '../chunk-DD3CCMCZ.js';
package/dist/app/index.js CHANGED
@@ -1,15 +1,17 @@
1
- import { ElevasisUIProvider } from '../chunk-5IBTTMWX.js';
1
+ import { ElevasisUIProvider } from '../chunk-34NQLV2W.js';
2
2
  import '../chunk-R73EHHPN.js';
3
3
  import '../chunk-WLOQ4IBG.js';
4
- import '../chunk-ZB5GAV7J.js';
4
+ import '../chunk-P3TFNFZS.js';
5
5
  import '../chunk-SZHARWKU.js';
6
- import '../chunk-NVOCKXUQ.js';
7
- import '../chunk-FL67C3WY.js';
6
+ import '../chunk-VDM6DQES.js';
7
+ import '../chunk-6IA2OMAE.js';
8
8
  import '../chunk-QJ2KCHKX.js';
9
- import '../chunk-IOKL7BKE.js';
10
- import { useInitialization } from '../chunk-TUXTSEAF.js';
9
+ import '../chunk-GCBWGGI6.js';
10
+ import '../chunk-KRWALB24.js';
11
+ import { useInitialization } from '../chunk-DK2HVHCY.js';
11
12
  import '../chunk-DD3CCMCZ.js';
12
- import '../chunk-QEPXAWE2.js';
13
+ import '../chunk-QHSW4WHM.js';
14
+ import '../chunk-IRW7JMQ4.js';
13
15
  import '../chunk-BRJ3QZ4E.js';
14
16
  import { useCallback, useEffect } from 'react';
15
17
  import { RouterProvider } from '@tanstack/react-router';
@@ -1,5 +1,6 @@
1
- export { AdminGuard, ProtectedRoute, useSessionCheck as useRefocusSessionCheck, useSessionCheck, useStableAccessToken } from '../chunk-MTJ43R2E.js';
2
- import '../chunk-TUXTSEAF.js';
1
+ export { AdminGuard, ProtectedRoute, useSessionCheck as useRefocusSessionCheck, useSessionCheck, useStableAccessToken } from '../chunk-SLH2QLKV.js';
2
+ import '../chunk-DK2HVHCY.js';
3
3
  import '../chunk-DD3CCMCZ.js';
4
- import '../chunk-QEPXAWE2.js';
4
+ import '../chunk-QHSW4WHM.js';
5
+ import '../chunk-IRW7JMQ4.js';
5
6
  export { AuthProvider, useAuthContext } from '../chunk-BRJ3QZ4E.js';
@@ -1,16 +1,17 @@
1
- export { ActivityTrendChart, ChartFrame, CombinedTrendChart, CostTrendChart, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, HeroStatsRow, getSeriesColor, useCyberColors } from '../chunk-STZJ7SY5.js';
2
- import '../chunk-LXHZYSMQ.js';
3
- import '../chunk-SQQGLGHW.js';
1
+ export { ActivityTrendChart, ChartFrame, CombinedTrendChart, CostTrendChart, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, HeroStatsRow, getSeriesColor, useCyberColors } from '../chunk-MJ6YV2B5.js';
2
+ import '../chunk-QSTH6T77.js';
3
+ import '../chunk-TTP62HWW.js';
4
+ import '../chunk-SZHARWKU.js';
4
5
  import '../chunk-3KMDHCAR.js';
5
6
  import '../chunk-NYBEU5TE.js';
6
- import '../chunk-SZHARWKU.js';
7
7
  import '../chunk-2IFYDILW.js';
8
- import '../chunk-ELJIFLCB.js';
8
+ import '../chunk-Q7DJKLEN.js';
9
9
  import '../chunk-DT3QYZVU.js';
10
- import '../chunk-IOKL7BKE.js';
11
- import '../chunk-MTJ43R2E.js';
12
- import '../chunk-TUXTSEAF.js';
10
+ import '../chunk-GCBWGGI6.js';
11
+ import '../chunk-KRWALB24.js';
12
+ import '../chunk-SLH2QLKV.js';
13
+ import '../chunk-DK2HVHCY.js';
13
14
  import '../chunk-DD3CCMCZ.js';
14
- import '../chunk-QEPXAWE2.js';
15
+ import '../chunk-QHSW4WHM.js';
16
+ import '../chunk-IRW7JMQ4.js';
15
17
  import '../chunk-BRJ3QZ4E.js';
16
- import '../chunk-Q7DJKLEN.js';
@@ -1,8 +1,8 @@
1
1
  import { SubshellContainer, SubshellSidebar, SubshellRightSideContainer } from './chunk-RX4UWZZR.js';
2
- import { FeatureUnavailableState } from './chunk-SQQGLGHW.js';
3
- import { useInitialization } from './chunk-TUXTSEAF.js';
4
- import { useOrganization } from './chunk-DD3CCMCZ.js';
2
+ import { FeatureUnavailableState } from './chunk-TTP62HWW.js';
5
3
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
4
+ import { useInitialization } from './chunk-DK2HVHCY.js';
5
+ import { useOrganization } from './chunk-DD3CCMCZ.js';
6
6
  import { createContext, useMemo, useCallback, useContext } from 'react';
7
7
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
8
8
 
@@ -1,9 +1,9 @@
1
1
  import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-R73EHHPN.js';
2
2
  import { AppBackground } from './chunk-WLOQ4IBG.js';
3
- import { ElevasisCoreProvider } from './chunk-ZB5GAV7J.js';
3
+ import { ElevasisCoreProvider } from './chunk-P3TFNFZS.js';
4
4
  import { ElevasisLoader } from './chunk-SZHARWKU.js';
5
5
  import { AppearanceProvider } from './chunk-QJ2KCHKX.js';
6
- import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-IOKL7BKE.js';
6
+ import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-GCBWGGI6.js';
7
7
  import { useMemo, useEffect } from 'react';
8
8
  import { Loader, mergeThemeOverrides, MantineProvider } from '@mantine/core';
9
9
  import '@mantine/core/styles.css';
@@ -1,5 +1,5 @@
1
1
  import { OrganizationContext } from './chunk-DD3CCMCZ.js';
2
- import { useProfile } from './chunk-QEPXAWE2.js';
2
+ import { useProfile } from './chunk-QHSW4WHM.js';
3
3
  import { useAuthContext } from './chunk-BRJ3QZ4E.js';
4
4
  import { useState, useRef, useEffect, useCallback, createElement } from 'react';
5
5
  import { useQueryClient } from '@tanstack/react-query';
@@ -1,4 +1,4 @@
1
- import { useUserProfile } from './chunk-QEPXAWE2.js';
1
+ import { useUserProfile } from './chunk-QHSW4WHM.js';
2
2
  import { useAuthContext } from './chunk-BRJ3QZ4E.js';
3
3
  import { useState, useRef, useEffect, useCallback } from 'react';
4
4
  import { Button, Loader, Menu, Text, Badge } from '@mantine/core';
@@ -1,15 +1,14 @@
1
1
  import { ResourceHealthChart } from './chunk-LGKLC5MG.js';
2
- import { useCyberColors, HeroStatsRow } from './chunk-STZJ7SY5.js';
2
+ import { useCyberColors, HeroStatsRow } from './chunk-MJ6YV2B5.js';
3
3
  import { AppShellCenteredContainer, AppShellLoader } from './chunk-M25JL54Z.js';
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-F4VHHW4O.js';
6
- import { getTimeRangeDates } from './chunk-LXHZYSMQ.js';
4
+ import { STATUS_COLORS, getStatusIcon, formatDuration, getStatusColors, AGENT_CONSTANTS, shouldAnimateEdge, TIMELINE_CONSTANTS, calculateBarPosition, CONTAINER_CONSTANTS, useExecutionPath, useUnifiedWorkflowLayout, WORKFLOW_CONSTANTS, useReactFlowAgent } from './chunk-E4WQGJNS.js';
5
+ import { useExecuteResource, useDashboardMetrics, useResources, useTimeRangeDates, useUnresolvedErrors, useRecentExecutionsByResource, useCommandQueue, useScheduledTasks, useResourcesHealth } from './chunk-R7GKX4HW.js';
7
6
  import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, useFitViewTrigger } from './chunk-22UVE3RA.js';
8
7
  import { glassBase } from './chunk-R73EHHPN.js';
9
- import { GlowDot, CardHeader, EmptyState, PageTitleCaption, TabCountBadge } from './chunk-SQQGLGHW.js';
10
- import { ResourceStatusColors } from './chunk-ELJIFLCB.js';
11
- import { formatTimeAgo, formatRelativeTime } from './chunk-IOKL7BKE.js';
12
- import { useInitialization } from './chunk-TUXTSEAF.js';
8
+ import { GlowDot, CardHeader, EmptyState, PageTitleCaption, TabCountBadge } from './chunk-TTP62HWW.js';
9
+ import { formatTimeAgo, getTimeRangeDates, formatRelativeTime } from './chunk-GCBWGGI6.js';
10
+ import { ResourceStatusColors } from './chunk-KRWALB24.js';
11
+ import { useInitialization } from './chunk-DK2HVHCY.js';
13
12
  import { memo, useMemo, useEffect, useState, useCallback, Fragment } from 'react';
14
13
  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
14
  import { jsxs, jsx, Fragment as Fragment$1 } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { useOrganization } from './chunk-DD3CCMCZ.js';
2
- import { useProfile } from './chunk-QEPXAWE2.js';
2
+ import { useProfile } from './chunk-QHSW4WHM.js';
3
3
  import { useAuthContext } from './chunk-BRJ3QZ4E.js';
4
4
  import { createContext, useContext, useMemo, useCallback, createElement } from 'react';
5
5
 
@@ -1,4 +1,4 @@
1
- import { isStepStartedContext, isConditionalRouteContext, isStepCompletedContext, isStepFailedContext, isLifecycleEvent, isIterationEvent, isToolCallEvent, toWorkflowLogMessage } from './chunk-ELJIFLCB.js';
1
+ import { isStepStartedContext, isConditionalRouteContext, isStepCompletedContext, isStepFailedContext, isLifecycleEvent, isIterationEvent, isToolCallEvent, toWorkflowLogMessage } from './chunk-KRWALB24.js';
2
2
  import { useMemo } from 'react';
3
3
  import dagre from '@dagrejs/dagre';
4
4
  import { IconCircleDot, IconLoader, IconAlertTriangle, IconX, IconCheck } from '@tabler/icons-react';
@@ -5,12 +5,13 @@ 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 { useCreateTask, useCreateMilestone, useProjectMilestones, useUpdateTask, useProjectRealtime, useProjects, useDeleteProject, useTableSort, sortData, usePaginationState, useTableSelection, useProject, useProjectNotes, useUpdateMilestone, useProjectActivities, useCreateNote, showApiErrorNotification, projectKeys } from './chunk-F4VHHW4O.js';
8
+ import { useProjectRealtime, useTableSort, sortData, usePaginationState, useTableSelection, useProjectActivities } from './chunk-R7GKX4HW.js';
9
+ import { useCreateTask, useCreateMilestone, useProjectMilestones, useUpdateTask, useProjects, useDeleteProject, useProject, useProjectNotes, useUpdateMilestone, useCreateNote, showApiErrorNotification, projectKeys } from './chunk-GRGRBWIO.js';
9
10
  import { SubshellContentContainer } from './chunk-RX4UWZZR.js';
10
- import { StatusBadge, EmptyState, PageTitleCaption, CenteredErrorState, StatCard } from './chunk-SQQGLGHW.js';
11
- import { PAGE_SIZE_DEFAULT, formatTimeAgo, formatDate, formatRelativeTime } from './chunk-IOKL7BKE.js';
12
- import { useElevasisServices } from './chunk-QEPXAWE2.js';
11
+ import { StatusBadge, EmptyState, PageTitleCaption, CenteredErrorState, StatCard } from './chunk-TTP62HWW.js';
13
12
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
13
+ import { PAGE_SIZE_DEFAULT, formatTimeAgo, formatDate, formatRelativeTime } from './chunk-GCBWGGI6.js';
14
+ import { useElevasisServices } from './chunk-IRW7JMQ4.js';
14
15
  import { useState, useMemo, useCallback } from 'react';
15
16
  import { Stack, Text, Group, Checkbox, ActionIcon, TextInput, Button, Modal, Title, Textarea, Select, SimpleGrid, Card, ThemeIcon, RingProgress, Paper, Timeline, Badge, Collapse, Center, Loader, Table, Pagination, Alert, CopyButton, Tooltip, Divider, Tabs, Anchor, Chip } from '@mantine/core';
16
17
  import { IconNotes, IconBriefcase, IconChecklist, IconFlag, IconX, IconPlus, IconHeartbeat, IconFileText, IconCalendar, IconInbox, IconLock, IconAlertTriangle, IconCircleCheck, IconClock, IconChevronDown, IconChevronRight, IconDownload, IconListCheck, IconMessageCircle, IconSearch, IconArrowLeft, IconCheck, IconCopy, IconTerminal2, IconCurrencyDollar, IconBuilding } from '@tabler/icons-react';
@@ -1,5 +1,6 @@
1
1
  import { formatDistanceToNow } from 'date-fns';
2
2
  import { IconUser, IconExternalLink, IconPlug, IconBolt, IconGitBranch, IconBrain } from '@tabler/icons-react';
3
+ import { z } from 'zod';
3
4
 
4
5
  // src/utils/dateFormatters.ts
5
6
  function formatDateTime(dateString) {
@@ -146,6 +147,50 @@ Request ID: ${requestId}`;
146
147
  return formatted;
147
148
  }
148
149
 
150
+ // ../core/src/platform/utils/debounce.ts
151
+ function debounce(fn, wait) {
152
+ let timeoutId = null;
153
+ const debounced = (...args) => {
154
+ if (timeoutId !== null) {
155
+ clearTimeout(timeoutId);
156
+ }
157
+ timeoutId = setTimeout(() => {
158
+ fn(...args);
159
+ timeoutId = null;
160
+ }, wait);
161
+ };
162
+ debounced.cancel = () => {
163
+ if (timeoutId !== null) {
164
+ clearTimeout(timeoutId);
165
+ timeoutId = null;
166
+ }
167
+ };
168
+ return debounced;
169
+ }
170
+ var UuidSchema = z.string().uuid();
171
+ var NonEmptyStringSchema = z.string().trim().min(1).max(1e3);
172
+ var ResourceTypeSchema = z.enum(["agent", "workflow"]);
173
+ var OriginResourceTypeSchema = z.enum(["agent", "workflow", "scheduler", "api"]);
174
+ var CredentialNameSchema = z.string().trim().toLowerCase().min(1, "Credential name required").max(100, "Credential name too long (max 100 chars)").regex(
175
+ /^[a-z0-9]+(-[a-z0-9]+)+$/,
176
+ "Credential name must be lowercase letters, numbers, and hyphens in format: service-environment (e.g., gmail-prod, attio-dev)"
177
+ );
178
+ z.enum(["google-sheets", "dropbox"]);
179
+ z.string().min(10, "Authorization code too short").max(1e3, "Authorization code too long");
180
+ z.string().min(10, "State parameter too short").max(2048, "State parameter too long");
181
+ z.string().trim().transform((str) => str.replace(/[<>'"]/g, ""));
182
+ z.string().email();
183
+ z.string().url();
184
+ z.object({
185
+ limit: z.coerce.number().int().min(1).max(100).default(20),
186
+ offset: z.coerce.number().int().min(0).default(0)
187
+ });
188
+ z.string().datetime();
189
+ z.object({
190
+ startDate: z.string().datetime(),
191
+ endDate: z.string().datetime()
192
+ });
193
+
149
194
  // ../core/src/platform/registry/domains.ts
150
195
  var DOMAINS = {
151
196
  // Business domains
@@ -295,6 +340,56 @@ function getResourceColor(type) {
295
340
  return resourceTypeColors[type];
296
341
  }
297
342
 
343
+ // ../core/src/operations/observability/utils.ts
344
+ function getTimeRangeDates(range) {
345
+ const end = /* @__PURE__ */ new Date();
346
+ const start = /* @__PURE__ */ new Date();
347
+ switch (range) {
348
+ case "1h":
349
+ start.setHours(start.getHours() - 1);
350
+ break;
351
+ case "24h":
352
+ start.setHours(start.getHours() - 24);
353
+ break;
354
+ case "7d":
355
+ start.setDate(start.getDate() - 7);
356
+ break;
357
+ case "30d":
358
+ start.setDate(start.getDate() - 30);
359
+ break;
360
+ }
361
+ return {
362
+ startDate: start.toISOString(),
363
+ endDate: end.toISOString()
364
+ };
365
+ }
366
+ function getTimeRangeLabel(range) {
367
+ switch (range) {
368
+ case "1h":
369
+ return "Last 1 hour";
370
+ case "24h":
371
+ return "Last 24 hours";
372
+ case "7d":
373
+ return "Last 7 days";
374
+ case "30d":
375
+ return "Last 30 days";
376
+ }
377
+ }
378
+ function formatBucketTime(timestamp, granularity) {
379
+ const date = new Date(timestamp);
380
+ if (granularity === "hour") {
381
+ return date.toLocaleTimeString("en-US", {
382
+ hour: "2-digit",
383
+ minute: "2-digit",
384
+ hour12: false
385
+ });
386
+ }
387
+ return date.toLocaleDateString("en-US", {
388
+ month: "short",
389
+ day: "numeric"
390
+ });
391
+ }
392
+
298
393
  // src/utils/resource-icons.tsx
299
394
  var iconNameToComponent = {
300
395
  IconBrain,
@@ -372,4 +467,41 @@ function restoreConsole() {
372
467
  console.warn = originalConsoleWarn;
373
468
  }
374
469
 
375
- export { APIClientError, API_URL, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, DOMAIN_MAP, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, OAUTH_FLOW_TIMEOUT, OAUTH_POPUP_CHECK_INTERVAL, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getNodeId, getResourceColor, getResourceIcon, isAPIClientError, restoreConsole, suppressKnownWarnings, validateEmail };
470
+ // src/utils/browser-mocks.ts
471
+ function setupMatchMedia() {
472
+ const win = globalThis.window;
473
+ if (typeof win === "undefined") return;
474
+ Object.defineProperty(win, "matchMedia", {
475
+ writable: true,
476
+ value: (query) => ({
477
+ matches: false,
478
+ media: query,
479
+ onchange: null,
480
+ addListener: () => {
481
+ },
482
+ removeListener: () => {
483
+ },
484
+ addEventListener: () => {
485
+ },
486
+ removeEventListener: () => {
487
+ },
488
+ dispatchEvent: () => true
489
+ })
490
+ });
491
+ }
492
+ function setupResizeObserver() {
493
+ globalThis.ResizeObserver = class ResizeObserver {
494
+ observe() {
495
+ }
496
+ unobserve() {
497
+ }
498
+ disconnect() {
499
+ }
500
+ };
501
+ }
502
+ function setupBrowserMocks() {
503
+ setupMatchMedia();
504
+ setupResizeObserver();
505
+ }
506
+
507
+ export { APIClientError, API_URL, CredentialNameSchema, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, DOMAIN_MAP, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, NonEmptyStringSchema, OAUTH_FLOW_TIMEOUT, OAUTH_POPUP_CHECK_INTERVAL, OriginResourceTypeSchema, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, ResourceTypeSchema, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, UuidSchema, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, debounce, formatBucketTime, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getNodeId, getResourceColor, getResourceIcon, getTimeRangeDates, getTimeRangeLabel, isAPIClientError, restoreConsole, setupBrowserMocks, suppressKnownWarnings, validateEmail };