@odigos/ui-kit 0.0.18 → 0.0.19

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,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.19](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.18...ui-kit-v0.0.19) (2025-03-27)
4
+
5
+
6
+ ### Features
7
+
8
+ * support test-connection in destination drawer ([#62](https://github.com/odigos-io/ui-kit/issues/62)) ([ae1cd19](https://github.com/odigos-io/ui-kit/commit/ae1cd19e20b9d87e5e98c0d16c8374ed89af5ed1))
9
+ * x-scroll in data-tabs/base-nodes ([#61](https://github.com/odigos-io/ui-kit/issues/61)) ([58fe6cf](https://github.com/odigos-io/ui-kit/commit/58fe6cff9bfd5e1f9216bd315416f20452e1ea14))
10
+
3
11
  ## [0.0.18](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.17...ui-kit-v0.0.18) (2025-03-26)
4
12
 
5
13
 
@@ -35,6 +35,7 @@ export * from './monitors-icons/index';
35
35
  export * from './navigation-buttons/index';
36
36
  export * from './no-data-found/index';
37
37
  export * from './notification-note/index';
38
+ export * from './scroll-x/index';
38
39
  export * from './section-title/index';
39
40
  export * from './segment/index';
40
41
  export * from './skeleton-loader/index';
@@ -0,0 +1,10 @@
1
+ import { type FC } from 'react';
2
+ import { type TextProps } from '../text';
3
+ interface ScrollXProps {
4
+ maxWidth: number;
5
+ text: string;
6
+ textSize?: TextProps['size'];
7
+ textColor?: TextProps['color'];
8
+ }
9
+ declare const ScrollX: FC<ScrollXProps>;
10
+ export { ScrollX, type ScrollXProps };
package/lib/components.js CHANGED
@@ -1,18 +1,18 @@
1
- import { B as Button } from './index-Bb7VdYPG.js';
2
- export { A as AutocompleteInput, a as Badge, C as CancelWarning, a0 as CenterThis, b as Checkbox, c as Code, d as ConditionDetails, D as DataCard, f as DataCardFieldTypes, e as DataCardFields, g as DataTab, h as DeleteWarning, i as Divider, j as DocsButton, k as Drawer, m as DrawerFooter, l as DrawerHeader, n as Dropdown, E as ExtendArrow, F as FadeLoader, o as FieldError, p as FieldLabel, $ as FlexColumn, _ as FlexRow, H as Header, I as IconButton, q as IconGroup, r as IconTitleBadge, s as IconWrapped, t as IconsNav, u as ImageControlled, v as Input, w as InputList, x as InputTable, y as InteractiveTable, K as KeyValueInputsList, M as Modal, a2 as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, a1 as Overlay, S as SectionTitle, O as Segment, P as SkeletonLoader, Q as Status, R as Stepper, a3 as TableContainer, a4 as TableTitleWrap, a5 as TableWrap, U as Text, V as TextArea, W as Toggle, T as ToggleCodeComponent, X as Tooltip, Y as TraceLoader, Z as WarningModal } from './index-Bb7VdYPG.js';
1
+ import { B as Button } from './index-CvuVOtkr.js';
2
+ export { A as AutocompleteInput, a as Badge, C as CancelWarning, a1 as CenterThis, b as Checkbox, c as Code, d as ConditionDetails, D as DataCard, f as DataCardFieldTypes, e as DataCardFields, g as DataTab, h as DeleteWarning, i as Divider, j as DocsButton, k as Drawer, m as DrawerFooter, l as DrawerHeader, n as Dropdown, E as ExtendArrow, F as FadeLoader, o as FieldError, p as FieldLabel, a0 as FlexColumn, $ as FlexRow, H as Header, I as IconButton, q as IconGroup, r as IconTitleBadge, s as IconWrapped, t as IconsNav, u as ImageControlled, v as Input, w as InputList, x as InputTable, y as InteractiveTable, K as KeyValueInputsList, M as Modal, a3 as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, a2 as Overlay, S as ScrollX, O as SectionTitle, P as Segment, Q as SkeletonLoader, R as Status, U as Stepper, a4 as TableContainer, a5 as TableTitleWrap, a6 as TableWrap, V as Text, W as TextArea, X as Toggle, T as ToggleCodeComponent, Y as Tooltip, Z as TraceLoader, _ as WarningModal } from './index-CvuVOtkr.js';
3
3
  import React, { Component, createElement, createContext } from 'react';
4
4
  import Theme from './theme.js';
5
5
  import './types.js';
6
- import './index-Bdimyacn.js';
6
+ import './index-BazfJyRh.js';
7
7
  import 'styled-components';
8
- import './index-CVs2NNg9.js';
8
+ import './index-WSle42rz.js';
9
9
  import './index-DGel4E-Z.js';
10
10
  import './index-BsH_egEe.js';
11
11
  import './index-BZS1ijMm.js';
12
12
  import './index-BJxaoI0G.js';
13
- import './index-jPxFCX-5.js';
14
- import './index-BlJU2fGe.js';
15
- import './useTransition-WRhgkuG2.js';
13
+ import './index-BFRz3l_w.js';
14
+ import './index-CD_BQJCD.js';
15
+ import './useTransition-bXMKBfST.js';
16
16
  import 'react-dom';
17
17
  import 'babel-runtime/helpers/extends';
18
18
  import 'babel-runtime/core-js/object/get-prototype-of';
package/lib/constants.js CHANGED
@@ -1,11 +1,11 @@
1
- export { A as ACTION_OPTIONS, I as INSTRUMENTATION_RULE_OPTIONS, M as MONITORS_OPTIONS } from './index-jPxFCX-5.js';
1
+ export { A as ACTION_OPTIONS, I as INSTRUMENTATION_RULE_OPTIONS, M as MONITORS_OPTIONS } from './index-BFRz3l_w.js';
2
2
  export { D as DISPLAY_TITLES, F as FORM_ALERTS } from './index-C_0J5P9M.js';
3
3
  import './types.js';
4
- import './index-BlJU2fGe.js';
4
+ import './index-CD_BQJCD.js';
5
5
  import './index-DGel4E-Z.js';
6
6
  import 'react';
7
7
  import './theme.js';
8
- import './index-Bdimyacn.js';
8
+ import './index-BazfJyRh.js';
9
9
  import 'styled-components';
10
10
 
11
11
  const TOKEN_ABOUT_TO_EXPIRE = 604800000; // 7 days in milliseconds
@@ -1,21 +1,10 @@
1
1
  import React from 'react';
2
+ import { NodeTypes } from '@/types';
2
3
  import type { Node, NodeProps } from '@xyflow/react';
3
- import { EntityTypes, NodeTypes, StatusType, type Source, type SVG, type WorkloadId } from '@/types';
4
+ import { BaseNodeProps } from './base-node';
4
5
  export interface ScrollNodeProps extends NodeProps<Node<{
5
- nodeWidth: number;
6
6
  nodeHeight: number;
7
- items: NodeProps<Node<{
8
- nodeWidth: number;
9
- framePadding: number;
10
- id: WorkloadId;
11
- type: EntityTypes;
12
- status?: StatusType;
13
- title: string;
14
- subTitle: string;
15
- icon?: SVG;
16
- iconSrc?: string;
17
- raw: Source;
18
- }, NodeTypes.Base>>[];
7
+ items: BaseNodeProps[];
19
8
  onScroll: (params: {
20
9
  clientHeight: number;
21
10
  scrollHeight: number;
package/lib/containers.js CHANGED
@@ -1,20 +1,20 @@
1
1
  import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle, useMemo, memo, useContext, createContext, useCallback, useLayoutEffect, Fragment } from 'react';
2
2
  import styled, { css } from 'styled-components';
3
- import { A as ACTION_OPTIONS, M as MONITORS_OPTIONS, I as INSTRUMENTATION_RULE_OPTIONS } from './index-jPxFCX-5.js';
3
+ import { A as ACTION_OPTIONS, M as MONITORS_OPTIONS, I as INSTRUMENTATION_RULE_OPTIONS } from './index-BFRz3l_w.js';
4
4
  import { D as DISPLAY_TITLES, F as FORM_ALERTS } from './index-C_0J5P9M.js';
5
5
  import { ActionType, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, AddNodeTypes, EdgeTypes, FieldTypes, SignalType, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType } from './types.js';
6
- import { f as DataCardFieldTypes, p as FieldLabel, b as Checkbox, o as FieldError, v as Input, x as InputTable, K as KeyValueInputsList, w as InputList, U as Text, O as Segment, S as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, V as TextArea, k as Drawer, h as DeleteWarning, C as CancelWarning, d as ConditionDetails, D as DataCard, M as Modal, N as NavigationButtons, a2 as ModalBody, A as AutocompleteInput, i as Divider, Q as Status, _ as FlexRow, X as Tooltip, s as IconWrapped, G as MonitorsIcons, a3 as TableContainer, a4 as TableTitleWrap, r as IconTitleBadge, a5 as TableWrap, y as InteractiveTable, a0 as CenterThis, J as NoDataFound, $ as FlexColumn, Y as TraceLoader, a as Badge, B as Button, E as ExtendArrow, n as Dropdown, a6 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, P as SkeletonLoader, W as Toggle, L as NotificationNote, R as Stepper, I as IconButton, e as DataCardFields, t as IconsNav, q as IconGroup } from './index-Bb7VdYPG.js';
7
- import { g as usePendingStore, f as useNotificationStore, a as useDrawerStore, b as useEntityStore, e as useModalStore, c as useFilterStore, s as styleInject, h as useSelectedStore, d as useInstrumentStore, j as getEntityId, i as useSetupStore, u as useDarkMode } from './index-Bdimyacn.js';
6
+ import { f as DataCardFieldTypes, p as FieldLabel, b as Checkbox, o as FieldError, v as Input, x as InputTable, K as KeyValueInputsList, w as InputList, V as Text, P as Segment, O as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, W as TextArea, k as Drawer, h as DeleteWarning, C as CancelWarning, d as ConditionDetails, D as DataCard, M as Modal, N as NavigationButtons, a3 as ModalBody, A as AutocompleteInput, i as Divider, R as Status, $ as FlexRow, Y as Tooltip, s as IconWrapped, G as MonitorsIcons, a4 as TableContainer, a5 as TableTitleWrap, r as IconTitleBadge, a6 as TableWrap, y as InteractiveTable, a1 as CenterThis, J as NoDataFound, a0 as FlexColumn, Z as TraceLoader, a as Badge, B as Button, E as ExtendArrow, n as Dropdown, a7 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, Q as SkeletonLoader, X as Toggle, L as NotificationNote, U as Stepper, I as IconButton, e as DataCardFields, t as IconsNav, q as IconGroup } from './index-CvuVOtkr.js';
7
+ import { g as usePendingStore, f as useNotificationStore, a as useDrawerStore, b as useEntityStore, e as useModalStore, c as useFilterStore, s as styleInject, h as useSelectedStore, d as useInstrumentStore, j as getEntityId, i as useSetupStore, u as useDarkMode } from './index-BazfJyRh.js';
8
8
  import Theme from './theme.js';
9
9
  import { i as isEmpty, s as safeJsonParse } from './index-BZS1ijMm.js';
10
10
  import { i as CheckCircledIcon, O as OdigosLogo } from './index-BsH_egEe.js';
11
11
  import { C as CrossCircledIcon, E as EditIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, N as NotificationIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-KOMAv-TS.js';
12
- import { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-BlJU2fGe.js';
13
- import { u as useActionFormData, a as useClickNode, c as useDestinationFormData, b as useClickNotification, d as useSourceFormData, e as useSourceSelectionFormData } from './useSourceSelectionFormData-LmLZzJyk.js';
14
- import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-WRhgkuG2.js';
12
+ import { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-CD_BQJCD.js';
13
+ import { u as useActionFormData, a as useClickNode, c as useDestinationFormData, b as useClickNotification, d as useSourceFormData, e as useSourceSelectionFormData } from './useSourceSelectionFormData-_2PggiXn.js';
14
+ import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-bXMKBfST.js';
15
15
  import { T as TrashIcon, S as SearchIcon, P as PlusIcon$1, A as ArrowIcon, a as CopyIcon, f as CheckIcon, g as CrossIcon } from './index-BJxaoI0G.js';
16
- import { m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-CVs2NNg9.js';
17
- import { f as filterActions, g as getConditionsBooleans, k as getEntityLabel, j as getEntityIcon, s as sleep$1, m as getPlatformIcon, n as getPlatformLabel, d as formatBytes, h as getContainersIcons, o as getValueForRange, i as getDestinationIcon, b as filterSources, a as filterDestinations, c as compareCondition, l as getMetricForEntity, p as getWorkloadId, e as getContainersInstrumentedCount, q as isOverTime } from './index-CT0qszYw.js';
16
+ import { m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-WSle42rz.js';
17
+ import { f as filterActions, g as getConditionsBooleans, k as getEntityLabel, j as getEntityIcon, s as sleep$1, m as getPlatformIcon, n as getPlatformLabel, d as formatBytes, h as getContainersIcons, o as getValueForRange, i as getDestinationIcon, b as filterSources, a as filterDestinations, c as compareCondition, l as getMetricForEntity, p as getWorkloadId, e as getContainersInstrumentedCount, q as isOverTime } from './index-DSzybApb.js';
18
18
  import require$$1 from 'use-sync-external-store/shim';
19
19
  import { createPortal } from 'react-dom';
20
20
  import { R as RulesIcon, W as SourcesIcon, y as ActionsIcon, z as DestinationsIcon } from './index-DB8Djrsy.js';
@@ -12739,7 +12739,7 @@ const BaseNode = memo(({ id: nodeId, data }) => {
12739
12739
  }, visualProps: {
12740
12740
  status: status,
12741
12741
  faded: faded || (hasActiveBoolean && !isActive),
12742
- monitors: monitors,
12742
+ monitors,
12743
12743
  }, checkboxProps: {
12744
12744
  withCheckbox: isSource,
12745
12745
  isChecked: sourceIndex !== -1,
@@ -12776,19 +12776,30 @@ const FrameNode = memo(({ data }) => {
12776
12776
  React.createElement(Handle, { type: 'target', position: Position.Left, style: { visibility: 'hidden' } })));
12777
12777
  });
12778
12778
 
12779
+ // These are not the actual sizes of a base node,
12780
+ // but these are used to help calculate the actual sizes of various nodes and their positions.
12781
+ // It is important to not delete or edit this file, unless you re-define the maths for all node size and position calculations.
12782
+ const nodeConfig = {
12783
+ nodeWidth: 295,
12784
+ nodeHeight: 80,
12785
+ framePadding: 12,
12786
+ };
12787
+
12788
+ const { framePadding: framePadding$3 } = nodeConfig;
12779
12789
  const Container$e = styled.div `
12780
12790
  position: relative;
12781
12791
  z-index: 1;
12782
- width: ${({ $nodeWidth }) => $nodeWidth}px;
12792
+ width: fit-content;
12783
12793
  height: ${({ $nodeHeight }) => $nodeHeight}px;
12784
12794
  background: transparent;
12785
12795
  border: none;
12786
12796
  overflow-y: auto;
12797
+ overflow-x: hidden;
12787
12798
  `;
12788
12799
  const BaseNodeWrapper = styled.div `
12789
- margin: ${({ $framePadding }) => $framePadding}px 0;
12800
+ margin: ${framePadding$3}px 0;
12790
12801
  `;
12791
- const LoadMoreWrapper = styled.div `
12802
+ const BottomOverlay = styled.div `
12792
12803
  position: fixed;
12793
12804
  bottom: 0;
12794
12805
  left: 50%;
@@ -12805,14 +12816,8 @@ const LoadMoreWrapper = styled.div `
12805
12816
 
12806
12817
  pointer-events: none;
12807
12818
  `;
12808
- // const LoadMoreButton = styled(Button)`
12809
- // background: ${({ theme }) => theme.colors.primary} !important;
12810
- // &:hover {
12811
- // background: ${({ theme }) => theme.colors.dropdown_bg_2} !important;
12812
- // }
12813
- // `;
12814
12819
  const ScrollNode = memo(({ data, ...rest }) => {
12815
- const { nodeWidth, nodeHeight, items, onScroll } = data;
12820
+ const { nodeHeight, items, onScroll } = data;
12816
12821
  const { onClickNode } = useClickNode();
12817
12822
  const containerRef = useRef(null);
12818
12823
  const [isBottomOfList, setIsBottomOfList] = useState(false);
@@ -12821,30 +12826,22 @@ const ScrollNode = memo(({ data, ...rest }) => {
12821
12826
  e.stopPropagation();
12822
12827
  // @ts-ignore - these properties are available on the EventTarget, TS is not aware of it
12823
12828
  const { clientHeight, scrollHeight, scrollTop } = e.target || { clientHeight: 0, scrollHeight: 0, scrollTop: 0 };
12824
- if (!!onScroll)
12829
+ if (onScroll)
12825
12830
  onScroll({ clientHeight, scrollHeight, scrollTop });
12826
- // TODO: Use the following if we have to handle paginated API requests using scroll:
12827
- // const isTop = scrollTop === 0;
12828
- const isBottom = scrollHeight - scrollTop <= clientHeight;
12829
- // if (isTop) {
12830
- // console.log('Reached top of scroll-node');
12831
- // } else if (isBottom) {
12832
- // console.log('Reached bottom of scroll-node');
12833
- // }
12834
- setIsBottomOfList(isBottom);
12831
+ setIsBottomOfList(scrollHeight - scrollTop <= clientHeight);
12835
12832
  };
12836
12833
  const { current } = containerRef;
12837
12834
  current?.addEventListener('scroll', handleScroll);
12838
12835
  return () => current?.removeEventListener('scroll', handleScroll);
12839
12836
  }, [onScroll]);
12840
- return (React.createElement(Container$e, { ref: containerRef, "$nodeWidth": nodeWidth, "$nodeHeight": nodeHeight, className: 'nowheel nodrag' },
12841
- items.map((item) => (React.createElement(BaseNodeWrapper, { key: item.id, "$framePadding": item.data.framePadding, onClick: (e) => {
12837
+ return (React.createElement(Container$e, { ref: containerRef, "$nodeHeight": nodeHeight, className: 'nowheel nodrag' },
12838
+ items.map((item) => (React.createElement(BaseNodeWrapper, { key: item.id, onClick: (e) => {
12842
12839
  e.stopPropagation();
12843
12840
  // @ts-ignore
12844
12841
  onClickNode(e, item);
12845
12842
  } },
12846
12843
  React.createElement(BaseNode, { ...rest, type: NodeTypes.Base, id: item.id, data: item.data })))),
12847
- React.createElement(LoadMoreWrapper, { "$hide": isBottomOfList })));
12844
+ React.createElement(BottomOverlay, { "$hide": isBottomOfList })));
12848
12845
  });
12849
12846
 
12850
12847
  const Container$d = styled.div `
@@ -13032,15 +13029,6 @@ const Flow = ({ nodes, edges, onNodesChange, onEdgesChange }) => {
13032
13029
  } })))));
13033
13030
  };
13034
13031
 
13035
- // These are not the actual sizes of a base node,
13036
- // but these are used to help calculate the actual sizes of various nodes and their positions.
13037
- // It is important to not delete or edit this file, unless you re-define the maths for all node size and position calculations.
13038
- const nodeConfig = {
13039
- nodeWidth: 295,
13040
- nodeHeight: 80,
13041
- framePadding: 12,
13042
- };
13043
-
13044
13032
  const { nodeHeight: nodeHeight$3, framePadding: framePadding$2 } = nodeConfig;
13045
13033
  const createEdge = (edgeId, params) => {
13046
13034
  const { theme, label, isMultiTarget, isError, animated } = params || {};
@@ -13264,8 +13252,7 @@ const mapToNodeData$1 = (entity) => {
13264
13252
  const { priorotizedStatus, hasDisableds } = getConditionsBooleans(entity.conditions || []);
13265
13253
  return {
13266
13254
  nodeWidth: nodeWidth$2,
13267
- nodeHeight: nodeHeight$1,
13268
- framePadding,
13255
+ nodeHeight: nodeHeight$1, // for edged node
13269
13256
  id: {
13270
13257
  namespace: entity.namespace,
13271
13258
  name: entity.name,
@@ -13923,10 +13910,8 @@ const TestConnection = ({ destination, disabled, status, onError, onSuccess, val
13923
13910
  React.createElement(Text, { family: 'secondary', decoration: 'underline', size: 14, color: !!status ? theme.text[status] : undefined }, testLoading ? 'Checking' : status === 'success' ? 'Connection OK' : status === 'error' ? 'Connection Failed' : 'Test Connection')));
13924
13911
  };
13925
13912
 
13926
- const Container$9 = styled.div `
13927
- display: flex;
13928
- flex-direction: column;
13929
- gap: 24px;
13913
+ const Container$9 = styled(FlexColumn) `
13914
+ align-items: unset;
13930
13915
  padding: 0 4px;
13931
13916
  `;
13932
13917
  const NotesWrapper = styled.div `
@@ -13993,20 +13978,20 @@ const DestinationForm = ({ isUpdate, categoryItem, formData, formErrors, validat
13993
13978
  traces: signals.includes(SignalType.Traces),
13994
13979
  });
13995
13980
  };
13996
- return (React.createElement(Container$9, null,
13997
- !isUpdate && (React.createElement(React.Fragment, null,
13998
- React.createElement(SectionTitle, { title: 'Create connection', description: `Connect ${displayName} with Odigos.`, actionButton: testConnectionSupported && (React.createElement(TestConnection, { destination: formData, disabled: !isFormDirty, validateForm: validateForm, status: connectionStatus, testConnection: testConnection, testLoading: testLoading, testResult: testResult, onError: () => {
13981
+ return (React.createElement(Container$9, { "$gap": 24 },
13982
+ React.createElement(Container$9, { "$gap": 12 },
13983
+ React.createElement(SectionTitle, { title: isUpdate ? 'Update destination' : 'Create destination', description: `Connect ${displayName} with Odigos.`, actionButton: testConnectionSupported && (React.createElement(TestConnection, { destination: formData, disabled: !isFormDirty, validateForm: validateForm, status: connectionStatus, testConnection: testConnection, testLoading: testLoading, testResult: testResult, onError: () => {
13999
13984
  setIsFormDirty(false);
14000
13985
  setConnectionStatus(StatusType.Error);
14001
13986
  }, onSuccess: () => {
14002
13987
  setIsFormDirty(false);
14003
13988
  setConnectionStatus(StatusType.Success);
14004
13989
  } })) }),
14005
- (testConnectionSupported || autoFilled) && (React.createElement(NotesWrapper, null,
13990
+ React.createElement(NotesWrapper, null,
14006
13991
  testConnectionSupported && connectionStatus === StatusType.Error && React.createElement(NotificationNote, { type: StatusType.Error, message: 'Connection failed. Please check your input and try again.' }),
14007
13992
  testConnectionSupported && connectionStatus === StatusType.Success && React.createElement(NotificationNote, { type: StatusType.Success, message: 'Connection succeeded.' }),
14008
- autoFilled && React.createElement(NotificationNote, { type: StatusType.Default, message: `Odigos autocompleted ${displayName} connection details.` }))),
14009
- React.createElement(Divider, null))),
13993
+ autoFilled && !connectionStatus && !isUpdate && React.createElement(NotificationNote, { type: StatusType.Default, message: `Odigos autocompleted ${displayName} destination details.` })),
13994
+ React.createElement(Divider, null)),
14010
13995
  React.createElement(MonitorsCheckboxes, { title: isUpdate ? '' : 'This connection will monitor:', required: true, allowedSignals: supportedMonitors, selectedSignals: selectedMonitors, setSelectedSignals: handleSelectedSignals, errorMessage: formErrors['exportedSignals'] }),
14011
13996
  !isUpdate && (React.createElement(Input, { title: 'Destination name', placeholder: 'Enter destination name', value: formData['name'], onChange: (e) => {
14012
13997
  dirtyForm();
package/lib/functions.js CHANGED
@@ -1,7 +1,7 @@
1
- export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getProgrammingLanguageIcon, b as getStatusIcon, m as mapConditions, p as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, d as splitCamelString } from './index-CVs2NNg9.js';
2
- export { c as compareCondition, f as filterActions, a as filterDestinations, b as filterSources, d as formatBytes, g as getConditionsBooleans, h as getContainersIcons, e as getContainersInstrumentedCount, i as getDestinationIcon, j as getEntityIcon, k as getEntityLabel, l as getMetricForEntity, m as getPlatformIcon, n as getPlatformLabel, o as getValueForRange, p as getWorkloadId, q as isOverTime, s as sleep } from './index-CT0qszYw.js';
3
- export { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-BlJU2fGe.js';
4
- export { j as getEntityId, k as isTimeElapsed } from './index-Bdimyacn.js';
1
+ export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getProgrammingLanguageIcon, b as getStatusIcon, m as mapConditions, p as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, d as splitCamelString } from './index-WSle42rz.js';
2
+ export { c as compareCondition, f as filterActions, a as filterDestinations, b as filterSources, d as formatBytes, g as getConditionsBooleans, h as getContainersIcons, e as getContainersInstrumentedCount, i as getDestinationIcon, j as getEntityIcon, k as getEntityLabel, l as getMetricForEntity, m as getPlatformIcon, n as getPlatformLabel, o as getValueForRange, p as getWorkloadId, q as isOverTime, s as sleep } from './index-DSzybApb.js';
3
+ export { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-CD_BQJCD.js';
4
+ export { j as getEntityId, k as isTimeElapsed } from './index-BazfJyRh.js';
5
5
  export { g as getIdFromSseTarget } from './index-7-KCQK-x.js';
6
6
  import { EntityTypes } from './types.js';
7
7
  export { i as isEmpty, s as safeJsonParse } from './index-BZS1ijMm.js';
package/lib/hooks.js CHANGED
@@ -1,12 +1,12 @@
1
- export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDestinationFormData, d as useSourceFormData, e as useSourceSelectionFormData } from './useSourceSelectionFormData-LmLZzJyk.js';
2
- export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-WRhgkuG2.js';
1
+ export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDestinationFormData, d as useSourceFormData, e as useSourceSelectionFormData } from './useSourceSelectionFormData-_2PggiXn.js';
2
+ export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-bXMKBfST.js';
3
3
  import './types.js';
4
4
  import 'react';
5
- import './index-Bdimyacn.js';
5
+ import './index-BazfJyRh.js';
6
6
  import 'styled-components';
7
7
  import './index-BZS1ijMm.js';
8
- import './index-jPxFCX-5.js';
9
- import './index-BlJU2fGe.js';
8
+ import './index-BFRz3l_w.js';
9
+ import './index-CD_BQJCD.js';
10
10
  import './index-DGel4E-Z.js';
11
11
  import './theme.js';
12
12
  import './index-C_0J5P9M.js';
package/lib/icons.js CHANGED
@@ -5,7 +5,7 @@ export { A as ArrowIcon, f as CheckIcon, C as CodeIcon, a as CopyIcon, g as Cros
5
5
  import React from 'react';
6
6
  import Theme from './theme.js';
7
7
  export { y as ActionsIcon, A as AppDynamicsLogo, a as AwsCloudwatchLogo, b as AwsS3Logo, c as AwsXrayLogo, d as AxiomLogo, B as BetterStackLogo, e as BlobStorageLogo, C as CauselyLogo, f as ChronosphereLogo, g as ClickhouseLogo, h as CoralogixLogo, D as Dash0Logo, i as DatadogLogo, z as DestinationsIcon, j as DynatraceLogo, E as ElasticApmLogo, k as ElasticSearchLogo, G as GigapipeLogo, l as GoogleCloudPlatformLogo, m as GrafanaLogo, n as GroundcoverLogo, H as HoneycombLogo, o as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, p as LightstepLogo, q as LogzioLogo, r as LokiLogo, s as LumigoLogo, M as MiddlewareLogo, F as NamespacesIcon, N as NewRelicLogo, O as OpenTelemetryLogo, t as OpsVerseLogo, P as PrometheusLogo, Q as QrynLogo, u as QuickwitLogo, R as RulesIcon, S as SignozLogo, W as SourcesIcon, v as SplunkLogo, w as SumoLogicLogo, T as TempoLogo, x as TraceloopLogo, U as UptraceLogo, V as VmLogo } from './index-DB8Djrsy.js';
8
- import './index-Bdimyacn.js';
8
+ import './index-BazfJyRh.js';
9
9
  import './types.js';
10
10
  import 'styled-components';
11
11
 
@@ -1,7 +1,7 @@
1
1
  import { SignalType, ActionType, InstrumentationRuleType } from './types.js';
2
- import { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-BlJU2fGe.js';
2
+ import { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-CD_BQJCD.js';
3
3
  import 'react';
4
- import './index-Bdimyacn.js';
4
+ import './index-BazfJyRh.js';
5
5
  import 'styled-components';
6
6
 
7
7
  const ACTION_OPTIONS = [
@@ -598,7 +598,7 @@ function styleInject(css, ref) {
598
598
  }
599
599
  }
600
600
 
601
- var css_248z = "/* Preload key fonts in your global CSS */\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=Kode+Mono:wght@100;200;300;400;500;600;700&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;700&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap');\n\n* {\n scrollbar-color: black transparent;\n scrollbar-width: thin;\n}\n\nsvg {\n transition: all 0.3s;\n}\n\n/*\n The input styles below are to override the browser \":-webkit-autofill\" default style declarations.\n The issue is when someone autocompletes an input field, the browser will apply its own styles (and the browser applies \"!important\" preventing direct overrides).\n With the following, we're able to delay the browser styles to be applied for 50000s (13.8 hours), so the user will not see the browser styles applied.\n*/\n\ninput {\n all: unset;\n}\n\ninput:-webkit-autofill,\ninput:-webkit-autofill:hover,\ninput:-webkit-autofill:focus,\ninput:-webkit-autofill:active {\n -webkit-transition: all 50000s ease-in-out 0s;\n transition: all 50000s ease-in-out 0s;\n}\n";
601
+ var css_248z = "/* Preload key fonts in your global CSS */\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=Kode+Mono:wght@100;200;300;400;500;600;700&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;700&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap');\n\n* {\n -ms-overflow-style: none; /* IE, Edge */\n scrollbar-width: none; /* Firefox */\n}\n*::-webkit-scrollbar {\n display: none; /* Chrome, Safari, Opera */\n}\n\nsvg {\n transition: all 0.3s;\n}\n\n/*\n The input styles below are to override the browser \":-webkit-autofill\" default style declarations.\n The issue is when someone autocompletes an input field, the browser will apply its own styles (and the browser applies \"!important\" preventing direct overrides).\n With the following, we're able to delay the browser styles to be applied for 50000s (13.8 hours), so the user will not see the browser styles applied.\n*/\n\ninput {\n all: unset;\n}\n\ninput:-webkit-autofill,\ninput:-webkit-autofill:hover,\ninput:-webkit-autofill:focus,\ninput:-webkit-autofill:active {\n -webkit-transition: all 50000s ease-in-out 0s;\n transition: all 50000s ease-in-out 0s;\n}\n";
602
602
  styleInject(css_248z);
603
603
 
604
604
  const slide = {
@@ -1,7 +1,7 @@
1
1
  import { ActionType, InstrumentationRuleType } from './types.js';
2
2
  import { S as SamplerIcon, P as PiiMaskingIcon, R as RenameAttributeIcon, D as DeleteAttributeIcon, A as AddClusterInfoIcon, K as K8sLogo, I as ImageErrorIcon, C as CodeAttributesIcon, a as PayloadCollectionIcon } from './index-DGel4E-Z.js';
3
3
  import 'react';
4
- import './index-Bdimyacn.js';
4
+ import './index-BazfJyRh.js';
5
5
  import 'styled-components';
6
6
 
7
7
  const getActionIcon = (type) => {
@@ -1,13 +1,13 @@
1
1
  import React, { useState, useRef, forwardRef, useEffect, createElement, useCallback, useMemo, Fragment } from 'react';
2
2
  import { StatusType, OtherStatus, SortDirection, ProgrammingLanguages, EntityTypes } from './types.js';
3
- import './index-Bdimyacn.js';
3
+ import './index-BazfJyRh.js';
4
4
  import styled, { css } from 'styled-components';
5
5
  import Theme from './theme.js';
6
- import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, c as capitalizeFirstLetter, g as getMonitorIcon, p as parseJsonStringToPrettyString, a as getProgrammingLanguageIcon, d as splitCamelString } from './index-CVs2NNg9.js';
6
+ import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, c as capitalizeFirstLetter, g as getMonitorIcon, p as parseJsonStringToPrettyString, a as getProgrammingLanguageIcon, d as splitCamelString } from './index-WSle42rz.js';
7
7
  import { s as safeJsonParse, i as isEmpty } from './index-BZS1ijMm.js';
8
8
  import { M as MinusIcon, f as CheckIcon, L as ListIcon, C as CodeIcon, E as ExtendArrowIcon, c as SortArrowsIcon, a as CopyIcon, b as NotebookIcon, X as XIcon, d as EyeClosedIcon, e as EyeOpenIcon, N as NoDataIcon, g as CrossIcon, S as SearchIcon, T as TrashIcon, P as PlusIcon, A as ArrowIcon } from './index-BJxaoI0G.js';
9
- import { M as MONITORS_OPTIONS } from './index-jPxFCX-5.js';
10
- import { u as useContainerSize, a as useCopy, g as useTransition, d as useKeyDown, e as useOnClickOutside } from './useTransition-WRhgkuG2.js';
9
+ import { M as MONITORS_OPTIONS } from './index-BFRz3l_w.js';
10
+ import { u as useContainerSize, a as useCopy, g as useTransition, d as useKeyDown, e as useOnClickOutside } from './useTransition-bXMKBfST.js';
11
11
  import ReactDOM from 'react-dom';
12
12
  import { I as ImageErrorIcon } from './index-DGel4E-Z.js';
13
13
  import require$$0 from 'babel-runtime/helpers/extends';
@@ -3676,7 +3676,7 @@ const TableData = styled.td `
3676
3676
  vertical-align: top;
3677
3677
  padding: 4px 6px;
3678
3678
  `;
3679
- const Title$c = styled(Text) `
3679
+ const Title$b = styled(Text) `
3680
3680
  white-space: nowrap;
3681
3681
  `;
3682
3682
  const CodeLineToken = styled.span `
@@ -3765,7 +3765,7 @@ const PrettyJsonCode = ({ darkMode, str }) => {
3765
3765
  renderEmptyRows(2, i),
3766
3766
  React.createElement(TableRow$1, { ...lineProps },
3767
3767
  React.createElement(TableData, null,
3768
- React.createElement(Title$c, null, formattedLine[0].content)),
3768
+ React.createElement(Title$b, null, formattedLine[0].content)),
3769
3769
  React.createElement(TableData, null))));
3770
3770
  }
3771
3771
  else if (formattedLine.length === 2) {
@@ -4091,6 +4091,36 @@ const Status = ({ title, subtitle, size = 12, family = 'secondary', status = Sta
4091
4091
  !!subtitle && (React.createElement(Text, { size: size - 2, family: family, color: theme.text[`${statusType}_secondary`] }, subtitle))))));
4092
4092
  };
4093
4093
 
4094
+ const LimitedText = styled(Text) `
4095
+ max-width: ${({ $maxWidth }) => `${$maxWidth}px` || 'unset'};
4096
+ white-space: nowrap;
4097
+ overflow-x: auto;
4098
+
4099
+ &::after {
4100
+ // This is to prevent the "browser default tooltip" from appearing when the title is too long
4101
+ content: '';
4102
+ display: block;
4103
+ }
4104
+ `;
4105
+ const ELIPSIS_WIDTH = 12;
4106
+ const ScrollX = ({ maxWidth, text, textSize, textColor }) => {
4107
+ const [isOverflowed, setIsOverflowed] = useState(false);
4108
+ const ref = useRef(null);
4109
+ // Check if text is overflowed from maximum width
4110
+ useEffect(() => {
4111
+ if (ref.current) {
4112
+ const { clientWidth } = ref.current;
4113
+ const marginUp = (maxWidth - ELIPSIS_WIDTH) * 1.05; // add 5%
4114
+ const marginDown = (maxWidth - ELIPSIS_WIDTH) * 0.95; // subtract 5%
4115
+ setIsOverflowed(clientWidth < marginUp && clientWidth > marginDown);
4116
+ }
4117
+ }, [maxWidth, text]);
4118
+ return (React.createElement(FlexRow, { "$gap": 0 },
4119
+ text && (React.createElement(Tooltip, { text: isOverflowed ? text : undefined },
4120
+ React.createElement(LimitedText, { ref: ref, "$maxWidth": maxWidth - ELIPSIS_WIDTH, size: textSize, color: textColor }, text))),
4121
+ isOverflowed && (React.createElement(LimitedText, { "$maxWidth": ELIPSIS_WIDTH, size: textSize, color: textColor }, "..."))));
4122
+ };
4123
+
4094
4124
  const ImageControlled = ({ src = '', alt = '', size = 16 }) => {
4095
4125
  const [hasError, setHasError] = useState(false);
4096
4126
  if (!!src && !hasError) {
@@ -4214,6 +4244,25 @@ const IconButton = ({ children, onClick, tooltip, size = 36, withPing, pingColor
4214
4244
  children)));
4215
4245
  };
4216
4246
 
4247
+ const defaultMonitors = MONITORS_OPTIONS.map(({ id }) => id);
4248
+ const MonitorsIcons = ({ monitors = defaultMonitors, withTooltips, withLabels, size = 12, color: clr }) => {
4249
+ const theme = Theme.useTheme();
4250
+ const color = clr || theme.text.grey;
4251
+ return (React.createElement(FlexRow, { "$gap": withLabels ? size : size / 2 }, monitors
4252
+ .filter((str) => !!str)
4253
+ .map((str) => {
4254
+ const signal = str.toLowerCase();
4255
+ const displayName = capitalizeFirstLetter(signal);
4256
+ const Icon = getMonitorIcon(signal);
4257
+ if (!Icon)
4258
+ return null;
4259
+ return (React.createElement(Tooltip, { key: signal, text: withTooltips ? displayName : '' },
4260
+ React.createElement(FlexRow, { "$gap": size / 3 },
4261
+ React.createElement(Icon, { size: withLabels ? size + 2 : size, fill: color }),
4262
+ withLabels && (React.createElement(Text, { size: size, color: color }, displayName)))));
4263
+ })));
4264
+ };
4265
+
4217
4266
  const ControlledVisibility = styled.div `
4218
4267
  visibility: hidden;
4219
4268
  `;
@@ -4245,28 +4294,6 @@ const Container$m = styled.div `
4245
4294
  }
4246
4295
  `}
4247
4296
  `;
4248
- const Title$b = styled(Text) `
4249
- max-width: ${({ $maxWidth }) => $maxWidth}px;
4250
- overflow: hidden;
4251
- white-space: nowrap;
4252
- text-overflow: ellipsis;
4253
-
4254
- font-size: 14px;
4255
- &::after {
4256
- // This is to prevent the browser "default tooltip" from appearing when the title is too long
4257
- content: '';
4258
- display: block;
4259
- }
4260
- `;
4261
- const SubTitle$2 = styled(Text) `
4262
- max-width: ${({ $maxWidth }) => $maxWidth}px;
4263
- overflow: hidden;
4264
- white-space: nowrap;
4265
- text-overflow: ellipsis;
4266
-
4267
- color: ${({ theme }) => theme.text.grey};
4268
- font-size: 10px;
4269
- `;
4270
4297
  const ActionsWrapper = styled.div `
4271
4298
  display: flex;
4272
4299
  align-items: center;
@@ -4276,47 +4303,40 @@ const ActionsWrapper = styled.div `
4276
4303
  const HoverText = styled(Text) `
4277
4304
  margin-right: 16px;
4278
4305
  `;
4306
+ const SubText = styled(Text) `
4307
+ font-size: 10px;
4308
+ color: ${({ theme }) => theme.text.grey};
4309
+ `;
4279
4310
  const DataTab = ({ title, subTitle, hoverText, onClick, renderActions, iconProps: { icon, icons, iconSrc, iconSrcs } = {}, visualProps: { status, faded, bgColor, bgColorHover, monitors, monitorsWithLabels } = {}, checkboxProps: { withCheckbox, isCheckboxDisabled, isChecked, onCheckboxChange } = {}, extendableProps: { withExtend, isExtended, renderExtended } = {}, ...props }) => {
4311
+ const theme = Theme.useTheme();
4280
4312
  const [extend, setExtend] = useState(isExtended || false);
4281
- const [maxWidth, setMaxWidth] = useState(0);
4282
- const [isTitleOverflowed, setIsTitleOverflowed] = useState(false);
4283
- const [isSubTitleOverflowed, setSubIsTitleOverflowed] = useState(false);
4313
+ const [textMaxWidth, setTextMaxWidth] = useState(0);
4284
4314
  const containerRef = useRef(null);
4285
4315
  const actionsRef = useRef(null);
4286
- const titleRef = useRef(null);
4287
- const subTitleRef = useRef(null);
4316
+ const monitorsRef = useRef(null);
4317
+ // Dynamically define maximim width for title and subtitle
4288
4318
  useEffect(() => {
4289
- if (containerRef.current && actionsRef.current) {
4319
+ if (containerRef.current) {
4290
4320
  const containerWidth = containerRef.current.clientWidth;
4291
- const actionsWidth = actionsRef.current.clientWidth;
4292
- // 85 is the sum of the container-padding, icon width, and flex-row-gap.
4293
- // we round it to 120, to consider cases with actions.
4294
- const widthOfInnerContents = 120;
4295
- setMaxWidth(containerWidth - actionsWidth - widthOfInnerContents);
4296
- }
4297
- }, []);
4298
- useEffect(() => {
4299
- const marginUp = maxWidth * 1.05; // add 5%
4300
- const marginDown = maxWidth * 0.95; // subtract 5%
4301
- if (titleRef.current) {
4302
- const { clientWidth } = titleRef.current;
4303
- setIsTitleOverflowed(clientWidth < marginUp && clientWidth > marginDown);
4304
- }
4305
- if (subTitleRef.current) {
4306
- const { clientWidth } = subTitleRef.current;
4307
- setSubIsTitleOverflowed(clientWidth < marginUp && clientWidth > marginDown);
4321
+ const actionsWidth = actionsRef.current?.clientWidth || 0;
4322
+ // 85 is the sum of the container-padding, icon-width, and flex-row-gap.
4323
+ // 125 is the sum of the above, plus checkboxes.
4324
+ const widthOfNonTextContents = (withCheckbox ? 125 : 85) + actionsWidth;
4325
+ setTextMaxWidth(containerWidth - widthOfNonTextContents);
4308
4326
  }
4309
- }, [title, subTitle, maxWidth]);
4327
+ }, [withCheckbox]);
4310
4328
  return (React.createElement(Container$m, { ref: containerRef, "$status": status, "$faded": faded, "$bgColor": bgColor, "$bgColorHover": bgColorHover, "$withClick": !!onClick, onClick: onClick, ...props },
4311
4329
  React.createElement(FlexRow, { "$gap": 8 },
4312
4330
  React.createElement(FlexRow, { "$gap": 16 },
4313
4331
  withCheckbox && React.createElement(Checkbox, { value: isChecked, onChange: onCheckboxChange, disabled: isCheckboxDisabled }),
4314
4332
  !!icons?.length || !!iconSrcs?.length ? (React.createElement(IconGroup, { icons: icons, iconSrcs: iconSrcs, status: status, id: `${title}-${subTitle}` })) : !!icon || !!iconSrc ? (React.createElement(IconWrapped, { icon: icon, src: iconSrc, status: status })) : null),
4315
4333
  React.createElement(FlexColumn, { "$gap": 4 },
4316
- React.createElement(Tooltip, { text: isTitleOverflowed ? title : undefined, withIcon: false },
4317
- React.createElement(Title$b, { ref: titleRef, "$maxWidth": maxWidth }, title)),
4318
- subTitle && (React.createElement(Tooltip, { text: isSubTitleOverflowed ? subTitle : undefined, withIcon: false },
4319
- React.createElement(SubTitle$2, { ref: subTitleRef, "$maxWidth": maxWidth }, subTitle)))),
4334
+ subTitle && React.createElement(ScrollX, { maxWidth: textMaxWidth, text: title, textSize: 14 }),
4335
+ React.createElement(FlexRow, { "$gap": 4 },
4336
+ subTitle && React.createElement(ScrollX, { maxWidth: textMaxWidth - (monitorsRef.current?.clientWidth || 0), text: subTitle, textSize: 10, textColor: theme.text.grey }),
4337
+ monitors && monitors.length > 0 && (React.createElement(FlexRow, { "$gap": 4, ref: monitorsRef },
4338
+ subTitle && React.createElement(SubText, null, "\u2022"),
4339
+ React.createElement(MonitorsIcons, { monitors: monitors, withLabels: monitorsWithLabels, size: 10 }))))),
4320
4340
  React.createElement(ActionsWrapper, { ref: actionsRef },
4321
4341
  !!hoverText && (React.createElement(ControlledVisibility, null,
4322
4342
  React.createElement(HoverText, { size: 14, family: 'secondary' }, hoverText))),
@@ -4361,25 +4381,6 @@ const DescribeRow = ({ title, subTitle, tooltip, value }) => {
4361
4381
  React.createElement(ValueWrapper, null, !!value?.status ? (React.createElement(Status, { status: value.status === 'transitioning' ? OtherStatus.Loading : value.status, title: value.text || value.status, withBorder: true, withIcon: true })) : (React.createElement(ValueText, null, value?.text || '-')))));
4362
4382
  };
4363
4383
 
4364
- const defaultMonitors = MONITORS_OPTIONS.map(({ id }) => id);
4365
- const MonitorsIcons = ({ monitors = defaultMonitors, withTooltips, withLabels, size = 12, color: clr }) => {
4366
- const theme = Theme.useTheme();
4367
- const color = clr || theme.text.grey;
4368
- return (React.createElement(FlexRow, { "$gap": withLabels ? size : size / 2 }, monitors
4369
- .filter((str) => !!str)
4370
- .map((str) => {
4371
- const signal = str.toLowerCase();
4372
- const displayName = capitalizeFirstLetter(signal);
4373
- const Icon = getMonitorIcon(signal);
4374
- if (!Icon)
4375
- return null;
4376
- return (React.createElement(Tooltip, { key: signal, text: withTooltips ? displayName : '' },
4377
- React.createElement(FlexRow, { "$gap": size / 3 },
4378
- React.createElement(Icon, { size: withLabels ? size + 2 : size, fill: color }),
4379
- withLabels && (React.createElement(Text, { size: size, color: color }, displayName)))));
4380
- })));
4381
- };
4382
-
4383
4384
  const Tr = styled.tr `
4384
4385
  cursor: ${({ $withHover }) => ($withHover ? 'pointer' : 'default')};
4385
4386
  opacity: ${({ $faded }) => ($faded ? 0.5 : 1)};
@@ -4397,8 +4398,11 @@ const RowText = styled(Text) `
4397
4398
  font-size: 14px;
4398
4399
  color: ${({ $color, theme }) => $color ?? theme.text.secondary};
4399
4400
  line-height: 16px;
4400
- text-wrap: wrap;
4401
+
4401
4402
  overflow: hidden;
4403
+ overflow-wrap: break-word;
4404
+ white-space: wrap;
4405
+ text-wrap: wrap;
4402
4406
  text-overflow: ellipsis;
4403
4407
  display: -webkit-box;
4404
4408
  -webkit-line-clamp: 2;
@@ -29607,4 +29611,4 @@ const WarningModal = ({ isOpen, noOverlay, title = '', description = '', note, a
29607
29611
  React.createElement(FooterButton, { "data-id": 'deny', variant: denyButton.variant || 'secondary', onClick: onDeny }, denyButton.text)))));
29608
29612
  };
29609
29613
 
29610
- export { FlexColumn as $, AutocompleteInput as A, Button$4 as B, CancelWarning as C, DataCard as D, ExtendArrow as E, FadeLoader as F, MonitorsIcons as G, Header as H, IconButton as I, NoDataFound as J, KeyValueInputsList as K, NotificationNote as L, Modal as M, NavigationButtons as N, Segment as O, SkeletonLoader as P, Status as Q, Stepper as R, SectionTitle as S, ToggleCodeComponent as T, Text as U, TextArea as V, Toggle as W, Tooltip as X, TraceLoader as Y, WarningModal as Z, FlexRow as _, Badge as a, CenterThis as a0, Overlay as a1, ModalBody as a2, TableContainer as a3, TableTitleWrap as a4, TableWrap as a5, getDefaultExportFromCjs as a6, Checkbox as b, Code as c, ConditionDetails as d, DataCardFields as e, DataCardFieldTypes as f, DataTab as g, DeleteWarning as h, Divider as i, DocsButton as j, Drawer as k, DrawerHeader as l, DrawerFooter as m, Dropdown as n, FieldError as o, FieldLabel as p, IconGroup as q, IconTitleBadge as r, IconWrapped as s, IconsNav as t, ImageControlled as u, Input as v, InputList as w, InputTable as x, InteractiveTable as y, MonitorsCheckboxes as z };
29614
+ export { FlexRow as $, AutocompleteInput as A, Button$4 as B, CancelWarning as C, DataCard as D, ExtendArrow as E, FadeLoader as F, MonitorsIcons as G, Header as H, IconButton as I, NoDataFound as J, KeyValueInputsList as K, NotificationNote as L, Modal as M, NavigationButtons as N, SectionTitle as O, Segment as P, SkeletonLoader as Q, Status as R, ScrollX as S, ToggleCodeComponent as T, Stepper as U, Text as V, TextArea as W, Toggle as X, Tooltip as Y, TraceLoader as Z, WarningModal as _, Badge as a, FlexColumn as a0, CenterThis as a1, Overlay as a2, ModalBody as a3, TableContainer as a4, TableTitleWrap as a5, TableWrap as a6, getDefaultExportFromCjs as a7, Checkbox as b, Code as c, ConditionDetails as d, DataCardFields as e, DataCardFieldTypes as f, DataTab as g, DeleteWarning as h, Divider as i, DocsButton as j, Drawer as k, DrawerHeader as l, DrawerFooter as m, Dropdown as n, FieldError as o, FieldLabel as p, IconGroup as q, IconTitleBadge as r, IconWrapped as s, IconsNav as t, ImageControlled as u, Input as v, InputList as w, InputTable as x, InteractiveTable as y, MonitorsCheckboxes as z };
@@ -1,7 +1,7 @@
1
1
  import { StatusType, OtherStatus, DestinationTypes, EntityTypes, PlatformType } from './types.js';
2
- import { a as getProgrammingLanguageIcon } from './index-CVs2NNg9.js';
2
+ import { a as getProgrammingLanguageIcon } from './index-WSle42rz.js';
3
3
  import 'react';
4
- import './index-Bdimyacn.js';
4
+ import './index-BazfJyRh.js';
5
5
  import 'styled-components';
6
6
  import { c as AwsXrayLogo, U as UptraceLogo, x as TraceloopLogo, T as TempoLogo, w as SumoLogicLogo, v as SplunkLogo, S as SignozLogo, b as AwsS3Logo, u as QuickwitLogo, G as GigapipeLogo, Q as QrynLogo, P as PrometheusLogo, O as OpenTelemetryLogo, t as OpsVerseLogo, N as NewRelicLogo, M as MiddlewareLogo, s as LumigoLogo, r as LokiLogo, q as LogzioLogo, p as LightstepLogo, L as Last9Logo, K as KloudmateLogo, J as JaegerLogo, I as InstanaLogo, o as HyperDxLogo, H as HoneycombLogo, n as GroundcoverLogo, m as GrafanaLogo, l as GoogleCloudPlatformLogo, k as ElasticSearchLogo, E as ElasticApmLogo, j as DynatraceLogo, i as DatadogLogo, D as Dash0Logo, h as CoralogixLogo, a as AwsCloudwatchLogo, g as ClickhouseLogo, f as ChronosphereLogo, C as CauselyLogo, B as BetterStackLogo, e as BlobStorageLogo, d as AxiomLogo, A as AppDynamicsLogo, R as RulesIcon, y as ActionsIcon, z as DestinationsIcon, W as SourcesIcon, F as NamespacesIcon, V as VmLogo } from './index-DB8Djrsy.js';
7
7
  import { K as KafkaLogo, O as OdigosLogo } from './index-BsH_egEe.js';
@@ -1,6 +1,6 @@
1
1
  import { ProgrammingLanguages, SignalType, StatusType } from './types.js';
2
2
  import 'react';
3
- import './index-Bdimyacn.js';
3
+ import './index-BazfJyRh.js';
4
4
  import 'styled-components';
5
5
  import { I as ImageErrorIcon } from './index-DGel4E-Z.js';
6
6
  import { K as KafkaLogo, R as RedisLogo, P as PostgresLogo, N as NginxLogo, M as MysqlLogo, E as ElixirLogo, S as SwiftLogo, a as RustLogo, b as RubyLogo, c as PhpLogo, C as CPlusPlusLogo, d as CSharpLogo, D as DotnetLogo, e as PythonLogo, f as NodejsLogo, G as GoLogo, J as JavaLogo, T as TracesIcon, g as MetricsIcon, L as LogsIcon, O as OdigosLogo, I as InfoIcon, W as WarningTriangleIcon, h as ErrorTriangleIcon, i as CheckCircledIcon } from './index-BsH_egEe.js';
package/lib/store.js CHANGED
@@ -1,4 +1,4 @@
1
- export { u as useDarkMode, a as useDrawerStore, b as useEntityStore, c as useFilterStore, d as useInstrumentStore, e as useModalStore, f as useNotificationStore, g as usePendingStore, h as useSelectedStore, i as useSetupStore } from './index-Bdimyacn.js';
1
+ export { u as useDarkMode, a as useDrawerStore, b as useEntityStore, c as useFilterStore, d as useInstrumentStore, e as useModalStore, f as useNotificationStore, g as usePendingStore, h as useSelectedStore, i as useSetupStore } from './index-BazfJyRh.js';
2
2
  import './types.js';
3
3
  import 'react';
4
4
  import 'styled-components';
package/lib/theme.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { u as useDarkMode, l as animations } from './index-Bdimyacn.js';
2
+ import { u as useDarkMode, l as animations } from './index-BazfJyRh.js';
3
3
  import { ThemeProvider, useTheme } from 'styled-components';
4
4
  import './types.js';
5
5
 
@@ -1,11 +1,11 @@
1
1
  import { ActionType, StatusType, AddNodeTypes, EntityTypes, FieldTypes } from './types.js';
2
2
  import { useState, useEffect, useCallback } from 'react';
3
- import { f as useNotificationStore, e as useModalStore, a as useDrawerStore, b as useEntityStore, i as useSetupStore } from './index-Bdimyacn.js';
3
+ import { f as useNotificationStore, e as useModalStore, a as useDrawerStore, b as useEntityStore, i as useSetupStore } from './index-BazfJyRh.js';
4
4
  import 'styled-components';
5
5
  import { i as isEmpty, s as safeJsonParse } from './index-BZS1ijMm.js';
6
- import './index-jPxFCX-5.js';
6
+ import './index-BFRz3l_w.js';
7
7
  import { F as FORM_ALERTS } from './index-C_0J5P9M.js';
8
- import { b as useGenericForm } from './useTransition-WRhgkuG2.js';
8
+ import { b as useGenericForm } from './useTransition-bXMKBfST.js';
9
9
  import { g as getIdFromSseTarget } from './index-7-KCQK-x.js';
10
10
 
11
11
  const INITIAL$2 = {
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useRef, useEffect, useCallback } from 'react';
2
- import './index-jPxFCX-5.js';
3
- import { f as useNotificationStore } from './index-Bdimyacn.js';
2
+ import './index-BFRz3l_w.js';
3
+ import { f as useNotificationStore } from './index-BazfJyRh.js';
4
4
  import { CodeAttributesKeyTypes, PayloadCollectionKeyTypes } from './types.js';
5
5
  import styled from 'styled-components';
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odigos/ui-kit",
3
- "version": "0.0.18",
3
+ "version": "0.0.19",
4
4
  "author": "Odigos",
5
5
  "repository": {
6
6
  "type": "git",