@odigos/ui-kit 0.0.50 → 0.0.51

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.51](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.50...ui-kit-v0.0.51) (2025-07-10)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * 'no data' fixes in service map ([#218](https://github.com/odigos-io/ui-kit/issues/218)) ([8c5da1a](https://github.com/odigos-io/ui-kit/commit/8c5da1a130e45e09983f439892bf60e84d80315b))
9
+
3
10
  ## [0.0.50](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.49...ui-kit-v0.0.50) (2025-07-10)
4
11
 
5
12
 
package/lib/components.js CHANGED
@@ -1,6 +1,6 @@
1
- import { e as Button } from './index-CgdNGqvh.js';
2
- export { f as AutocompleteInput, g as Badge, al as CenterThis, h as Checkbox, i as Code, j as ConditionDetails, D as DataCard, l as DataCardFieldTypes, k as DataCardFields, m as DataFinger, o as DataTab, p as DescribeRow, q as Divider, r as DocsButton, s as Drawer, u as DrawerFooter, t as DrawerHeader, v as Dropdown, w as ExtendArrow, x as FadeLoader, y as FieldError, z as FieldLabel, ak as FlexColumn, aj as FlexRow, G as Header, I as IconButton, J as IconGroup, K as IconTitleBadge, O as IconWrapped, Q as IconsNav, R as ImageControlled, U as Input, V as InputList, W as InputTable, X as InteractiveTable, Y as KeyValueInputsList, Z as Modal, ao as ModalBody, _ as MonitorsCheckboxes, $ as MonitorsIcons, a0 as NavigationButtons, a1 as NoDataFound, a2 as NotificationNote, an as Overlay, a3 as Popup, a4 as PopupForm, a5 as ScrollX, a6 as SectionTitle, a7 as Segment, a8 as SelectionButton, a9 as SkeletonLoader, aa as Status, ab as Stepper, ap as TableContainer, aq as TableTitleWrap, ar as TableWrap, ac as Tag, ad as Text, ae as TextArea, af as Toggle, T as ToggleCodeComponent, ag as Tooltip, ah as TraceLoader, am as VerticalScroll, ai as WarningModal } from './index-CgdNGqvh.js';
3
- export { C as CancelWarning, D as DeleteWarning } from './index-DnhO-nLH.js';
1
+ import { e as Button } from './index-1-F2f04H.js';
2
+ export { f as AutocompleteInput, g as Badge, al as CenterThis, h as Checkbox, i as Code, j as ConditionDetails, D as DataCard, l as DataCardFieldTypes, k as DataCardFields, m as DataFinger, o as DataTab, p as DescribeRow, q as Divider, r as DocsButton, s as Drawer, u as DrawerFooter, t as DrawerHeader, v as Dropdown, w as ExtendArrow, x as FadeLoader, y as FieldError, z as FieldLabel, ak as FlexColumn, aj as FlexRow, G as Header, I as IconButton, J as IconGroup, K as IconTitleBadge, O as IconWrapped, Q as IconsNav, R as ImageControlled, U as Input, V as InputList, W as InputTable, X as InteractiveTable, Y as KeyValueInputsList, Z as Modal, ao as ModalBody, _ as MonitorsCheckboxes, $ as MonitorsIcons, a0 as NavigationButtons, a1 as NoDataFound, a2 as NotificationNote, an as Overlay, a3 as Popup, a4 as PopupForm, a5 as ScrollX, a6 as SectionTitle, a7 as Segment, a8 as SelectionButton, a9 as SkeletonLoader, aa as Status, ab as Stepper, ap as TableContainer, aq as TableTitleWrap, ar as TableWrap, ac as Tag, ad as Text, ae as TextArea, af as Toggle, T as ToggleCodeComponent, ag as Tooltip, ah as TraceLoader, am as VerticalScroll, ai as WarningModal } from './index-1-F2f04H.js';
3
+ export { C as CancelWarning, D as DeleteWarning } from './index-Coq_Nro0.js';
4
4
  import React, { Component, createElement, createContext } from 'react';
5
5
  import { T as Theme } from './index-BC03UmY5.js';
6
6
  import './types.js';
@@ -1,5 +1,5 @@
1
1
  import React, { type CSSProperties } from 'react';
2
- import type { ServiceMapSources } from '@/types';
2
+ import { type ServiceMapSources } from '@/types';
3
3
  interface ServiceMapProps {
4
4
  heightToRemove: CSSProperties['height'];
5
5
  serviceMap: ServiceMapSources;
package/lib/containers.js CHANGED
@@ -2,18 +2,18 @@ import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle, us
2
2
  import styled, { css } from 'styled-components';
3
3
  import { m as DISPLAY_TITLES, T as Theme, i as usePendingStore, h as useNotificationStore, c as useDrawerStore, B as BUTTON_TEXTS, d as useEntityStore, A as ACTION_OPTIONS, n as getActionIcon, g as useModalStore, F as FORM_ALERTS, e as useFilterStore, M as MONITORS_OPTIONS, p as getInstrumentationRuleIcon, b as useDataStreamStore, f as useInstrumentStore, o as getEntityId, S as STORAGE_KEYS, l as DEFAULT_DATA_STREAM_NAME, k as useSetupStore, I as INSTRUMENTATION_RULE_OPTIONS, j as useSelectedStore, v as ImageErrorIcon, a as useDarkMode } from './index-BC03UmY5.js';
4
4
  import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, EdgeTypes, AddNodeTypes, SignalType, HeadersCollectionKeyTypes, CustomInstrumentationsKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType, K8sResourceKind } from './types.js';
5
- import { l as DataCardFieldTypes, z as FieldLabel, h as Checkbox, y as FieldError, U as Input, W as InputTable, Y as KeyValueInputsList, V as InputList, ad as Text, a7 as Segment, a6 as SectionTitle, r as DocsButton, _ as MonitorsCheckboxes, ae as TextArea, s as Drawer, j as ConditionDetails, D as DataCard, ak as FlexColumn, Z as Modal, a0 as NavigationButtons, ao as ModalBody, a2 as NotificationNote, f as AutocompleteInput, q as Divider, aa as Status, aj as FlexRow, ag as Tooltip, O as IconWrapped, $ as MonitorsIcons, ap as TableContainer, aq as TableTitleWrap, K as IconTitleBadge, ar as TableWrap, X as InteractiveTable, al as CenterThis, a1 as NoDataFound, ah as TraceLoader, g as Badge, w as ExtendArrow, am as VerticalScroll, a8 as SelectionButton, e as Button, v as Dropdown, n as nodeConfig, as as useNodesState, at as useEdgesState, F as Flow, au as applyNodeChanges, a3 as Popup, af as Toggle, I as IconButton, A as AddButton, x as FadeLoader, o as DataTab, ab as Stepper, k as DataCardFields, av as MarkerType, Q as IconsNav, C as CopyText, p as DescribeRow, P as PodContainer, d as SourceContainer, J as IconGroup, a4 as PopupForm } from './index-CgdNGqvh.js';
5
+ import { l as DataCardFieldTypes, z as FieldLabel, h as Checkbox, y as FieldError, U as Input, W as InputTable, Y as KeyValueInputsList, V as InputList, ad as Text, a7 as Segment, a6 as SectionTitle, r as DocsButton, _ as MonitorsCheckboxes, ae as TextArea, s as Drawer, j as ConditionDetails, D as DataCard, ak as FlexColumn, Z as Modal, a0 as NavigationButtons, ao as ModalBody, a2 as NotificationNote, f as AutocompleteInput, q as Divider, aa as Status, aj as FlexRow, ag as Tooltip, O as IconWrapped, $ as MonitorsIcons, ap as TableContainer, aq as TableTitleWrap, K as IconTitleBadge, ar as TableWrap, X as InteractiveTable, al as CenterThis, a1 as NoDataFound, ah as TraceLoader, g as Badge, w as ExtendArrow, am as VerticalScroll, a8 as SelectionButton, e as Button, v as Dropdown, n as nodeConfig, as as useNodesState, at as useEdgesState, F as Flow, au as applyNodeChanges, a3 as Popup, af as Toggle, I as IconButton, A as AddButton, x as FadeLoader, o as DataTab, ab as Stepper, k as DataCardFields, av as MarkerType, Q as IconsNav, C as CopyText, p as DescribeRow, P as PodContainer, d as SourceContainer, J as IconGroup, a4 as PopupForm } from './index-1-F2f04H.js';
6
6
  import { i as isEmpty, s as safeJsonParse } from './index-BnvrwbRB.js';
7
7
  import { C as CheckCircledIcon, O as OdigosLogo } from './index-H8TwBQHm.js';
8
8
  import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, R as RetryIcon, N as NotificationIcon, U as UserIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-LgzkJ05H.js';
9
9
  import { u as useActionFormData, d as useSessionStorage, b as useDataStreamFormData, c as useDestinationFormData, a as useClickNotification, e as useSourceFormData, f as useSourceSelectionFormData } from './useSourceSelectionFormData-CwggurLH.js';
10
10
  import { e as useKeyDown, f as useOnClickOutside, a as useContainerSize, u as useClickNode, g as usePopup, d as useInstrumentationRuleFormData, i as useTransition, h as useTimeAgo, b as useCopy, c as useGenericForm } from './useTransition-DmHfJSEP.js';
11
11
  import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, A as ArrowIcon, P as PlusIcon, a as CopyIcon } from './index-CyHOJpMl.js';
12
- import { D as DeleteWarning, C as CancelWarning } from './index-DnhO-nLH.js';
12
+ import { D as DeleteWarning, C as CancelWarning } from './index-Coq_Nro0.js';
13
13
  import { g as getConditionsBooleans, m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter, p as parseBooleanFromString } from './index-Dbs7YARA.js';
14
14
  import { f as filterActions, m as getEntityLabel, l as getEntityIcon, w as sleep, o as getPlatformIcon, p as getPlatformLabel, h as formatBytes, j as getContainersIcons, q as getValueForRange, k as getDestinationIcon, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, v as mapDestinationFieldsForDisplay, c as compareCondition, s as getYamlFieldsForDestination, d as deepClone, n as getMetricForEntity, r as getWorkloadId, t as hasUnhealthyInstances, i as getContainersInstrumentedCount, u as isOverTime } from './index-CPMIZB66.js';
15
15
  import { m as mapExportedSignals } from './index-BlZKWuxe.js';
16
- import { N as NoteBackToSummary, E as EditButton } from './index-r72g3gV5.js';
16
+ import { N as NoteBackToSummary, E as EditButton } from './index-4BmryHdH.js';
17
17
  import { D as DESTINATION_CATEGORIES } from './index-Dqief9td.js';
18
18
  import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-CMsBAVAn.js';
19
19
  import 'react-dom';
@@ -3906,15 +3906,30 @@ const ServiceMap = ({ heightToRemove, serviceMap }) => {
3906
3906
  const [nodes, setNodes, onNodesChange] = useNodesState([]);
3907
3907
  const [edges, setEdges, onEdgesChange] = useEdgesState([]);
3908
3908
  const handleNodesChanged = (currNodes) => {
3909
- setNodes((prevNodes) => applyNodeChanges(currNodes.map((cn) => ({
3910
- id: cn.id,
3911
- item: cn,
3912
- type: prevNodes.find((pn) => pn.id === cn.id) ? 'replace' : 'add',
3913
- })), prevNodes));
3909
+ setNodes((prevNodes) => {
3910
+ const mutatedNodes = currNodes.map((cn) => {
3911
+ const pn = prevNodes.find((pn) => pn.id === cn.id);
3912
+ cn.position = pn?.position || cn.position;
3913
+ return {
3914
+ id: cn.id,
3915
+ item: cn,
3916
+ type: pn ? 'replace' : 'add',
3917
+ };
3918
+ });
3919
+ const noDataNode = prevNodes.find((pn) => pn.id === `${EntityTypes.Source}-${NodeTypes.NoData}`);
3920
+ if (noDataNode) {
3921
+ mutatedNodes.push({
3922
+ id: `${EntityTypes.Source}-${NodeTypes.NoData}`,
3923
+ type: 'remove',
3924
+ });
3925
+ }
3926
+ return applyNodeChanges(mutatedNodes, prevNodes);
3927
+ });
3914
3928
  };
3915
3929
  useEffect(() => {
3916
3930
  const newNodes = buildMapNodes({ serviceMap, sources: [userSource].concat(sources), containerHeight, containerWidth });
3917
- if (nodes.length) {
3931
+ // greater than 1, because at the very least we would have a 'no data' node
3932
+ if (nodes.length > 1) {
3918
3933
  handleNodesChanged(newNodes);
3919
3934
  }
3920
3935
  else {
@@ -16669,8 +16669,8 @@ HeaderNode.displayName = HeaderNode.name;
16669
16669
  Actions.displayName = Actions.name;
16670
16670
 
16671
16671
  const Container$p = styled(FlexColumn) `
16672
- width: 300px;
16673
- height: 100px;
16672
+ max-width: 300px;
16673
+ padding: 12px;
16674
16674
  border-radius: 12px;
16675
16675
  background-color: ${({ theme }) => theme.colors.dropdown_bg};
16676
16676
  justify-content: center;
@@ -17567,13 +17567,13 @@ const TitleWrapper = styled.div `
17567
17567
  `;
17568
17568
  const Title$4 = styled(Text) `
17569
17569
  color: ${({ theme }) => theme.text.darker_grey};
17570
- line-height: 24px;
17571
17570
  `;
17572
17571
  const SubTitle = styled(Text) `
17573
17572
  color: ${({ theme }) => theme.colors.border};
17574
17573
  font-size: 14px;
17575
17574
  font-weight: 200;
17576
17575
  line-height: 20px;
17576
+ text-align: center;
17577
17577
  `;
17578
17578
  const NoDataFound = ({ title = 'No data found', subTitle = 'Check your search phrase and try one more time' }) => {
17579
17579
  const theme = Theme.useTheme();
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { T as Theme, B as BUTTON_TEXTS, m as DISPLAY_TITLES } from './index-BC03UmY5.js';
3
3
  import { E as EditIcon } from './index-CyHOJpMl.js';
4
- import { e as Button, ad as Text, a2 as NotificationNote } from './index-CgdNGqvh.js';
4
+ import { e as Button, ad as Text, a2 as NotificationNote } from './index-1-F2f04H.js';
5
5
  import { StatusType } from './types.js';
6
6
  import 'styled-components';
7
7
  import { I as InfoIcon } from './index-H8TwBQHm.js';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ai as WarningModal } from './index-CgdNGqvh.js';
2
+ import { ai as WarningModal } from './index-1-F2f04H.js';
3
3
  import { StatusType, EntityTypes } from './types.js';
4
4
  import './index-BC03UmY5.js';
5
5
  import 'styled-components';
package/lib/snippets.js CHANGED
@@ -1,5 +1,5 @@
1
- export { A as AddButton, a as AddNode, B as BaseNode, C as CopyText, E as EdgedNode, F as Flow, b as FrameNode, H as HeaderNode, L as LabeledEdge, M as MapItemNode, N as NoDataNode, P as PodContainer, S as ScrollNode, c as SkeletonNode, d as SourceContainer, n as nodeConfig } from './index-CgdNGqvh.js';
2
- export { E as EditButton, N as NoteBackToSummary } from './index-r72g3gV5.js';
1
+ export { A as AddButton, a as AddNode, B as BaseNode, C as CopyText, E as EdgedNode, F as Flow, b as FrameNode, H as HeaderNode, L as LabeledEdge, M as MapItemNode, N as NoDataNode, P as PodContainer, S as ScrollNode, c as SkeletonNode, d as SourceContainer, n as nodeConfig } from './index-1-F2f04H.js';
2
+ export { E as EditButton, N as NoteBackToSummary } from './index-4BmryHdH.js';
3
3
  import 'react';
4
4
  import './index-BC03UmY5.js';
5
5
  import './types.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odigos/ui-kit",
3
- "version": "0.0.50",
3
+ "version": "0.0.51",
4
4
  "author": "Odigos",
5
5
  "repository": {
6
6
  "type": "git",