@odigos/ui-kit 0.0.77 → 0.0.79

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,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.79](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.78...ui-kit-v0.0.79) (2025-08-06)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * general fixes ([#303](https://github.com/odigos-io/ui-kit/issues/303)) ([abd1e7e](https://github.com/odigos-io/ui-kit/commit/abd1e7e8e64f97536c5d99593a1c77f19e22a4ce))
9
+
10
+ ## [0.0.78](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.77...ui-kit-v0.0.78) (2025-08-06)
11
+
12
+
13
+ ### Features
14
+
15
+ * display loaders when namespaces are fetching ([#302](https://github.com/odigos-io/ui-kit/issues/302)) ([9916914](https://github.com/odigos-io/ui-kit/commit/99169143ae04bb479c7837b1f3b40c0af37146c4))
16
+ * show destination boolean in data flow nodes ([#300](https://github.com/odigos-io/ui-kit/issues/300)) ([7bb56be](https://github.com/odigos-io/ui-kit/commit/7bb56bedad94985e1333a980b66bead1e8321e51))
17
+
3
18
  ## [0.0.77](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.76...ui-kit-v0.0.77) (2025-08-06)
4
19
 
5
20
 
package/lib/components.js CHANGED
@@ -1,16 +1,16 @@
1
- import { B as Button } from './index-a1b59a38.js';
2
- export { A as AutocompleteInput, a as Badge, a6 as CenterThis, C as Checkbox, b as Code, c as ConditionDetails, D as DataCard, e as DataCardFieldTypes, d as DataCardFields, f as DataFinger, g as DataTab, h as DescribeRow, 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, a5 as FlexColumn, a4 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, a9 as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, a8 as Overlay, P as Popup, O as PopupForm, S as ScrollX, Q as SectionTitle, R as Segment, U as SelectionButton, V as SkeletonLoader, W as Status, X as Stepper, Y as TabList, aa as TableContainer, ab as TableTitleWrap, ac as TableWrap, Z as Tag, _ as Text, $ as TextArea, a0 as Toggle, T as ToggleCodeComponent, a1 as Tooltip, a2 as TraceLoader, a7 as VerticalScroll, a3 as WarningModal } from './index-a1b59a38.js';
3
- export { C as CancelWarning, D as DeleteWarning } from './index-45ee08be.js';
1
+ import { B as Button } from './index-b674f184.js';
2
+ export { A as AutocompleteInput, a as Badge, a6 as CenterThis, C as Checkbox, b as Code, c as ConditionDetails, D as DataCard, e as DataCardFieldTypes, d as DataCardFields, f as DataFinger, g as DataTab, h as DescribeRow, 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, a5 as FlexColumn, a4 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, a9 as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, a8 as Overlay, P as Popup, O as PopupForm, S as ScrollX, Q as SectionTitle, R as Segment, U as SelectionButton, V as SkeletonLoader, W as Status, X as Stepper, Y as TabList, aa as TableContainer, ab as TableTitleWrap, ac as TableWrap, Z as Tag, _ as Text, $ as TextArea, a0 as Toggle, T as ToggleCodeComponent, a1 as Tooltip, a2 as TraceLoader, a7 as VerticalScroll, a3 as WarningModal } from './index-b674f184.js';
3
+ export { C as CancelWarning, D as DeleteWarning } from './index-845f2100.js';
4
4
  import React, { createContext, Component, createElement } from 'react';
5
- import { T as Theme } from './index-fdf3a268.js';
5
+ import { T as Theme } from './index-90ccd949.js';
6
6
  import 'styled-components';
7
- import './index-ba84d272.js';
7
+ import './index-19b8f8bc.js';
8
8
  import './types.js';
9
9
  import './index-5e5f7bda.js';
10
- import './index-0d93b2b4.js';
11
- import './index-1d5c06a0.js';
10
+ import './index-a067d6e9.js';
11
+ import './index-6034549d.js';
12
12
  import 'react-dom';
13
- import './useTransition-ba7b6d8a.js';
13
+ import './useTransition-807be8bc.js';
14
14
 
15
15
  const ErrorBoundaryContext = createContext(null);
16
16
 
@@ -101,6 +101,10 @@ export declare const DISPLAY_TITLES: {
101
101
  OVERIDDEN: string;
102
102
  OVERRIDE_RUNTIME_DETAILS: string;
103
103
  OVERRIDE_RUNTIME_WARNING: string;
104
+ ACTIVE: string;
105
+ INACTIVE: string;
106
+ ENABLED: string;
107
+ DISABLED: string;
104
108
  };
105
109
  export declare const BUTTON_TEXTS: {
106
110
  ADD: string;
package/lib/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, a as DEFAULT_DATA_STREAM_NAME, D as DISPLAY_LANGUAGES, b as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, L as LANGUAGE_OPTIONS, M as MONITORS_OPTIONS, S as STORAGE_KEYS } from './index-fdf3a268.js';
1
+ export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, a as DEFAULT_DATA_STREAM_NAME, D as DISPLAY_LANGUAGES, b as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, L as LANGUAGE_OPTIONS, M as MONITORS_OPTIONS, S as STORAGE_KEYS } from './index-90ccd949.js';
2
2
  export { D as DESTINATION_CATEGORIES } from './index-1cb4f9e2.js';
3
3
  import 'react';
4
4
  import './types.js';
package/lib/containers.js CHANGED
@@ -1,21 +1,21 @@
1
1
  import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle, useMemo, Fragment, useCallback, Children } from 'react';
2
2
  import styled, { css } from 'styled-components';
3
- import { b as DISPLAY_TITLES, T as Theme, U as usePendingStore, V as useNotificationStore, O as useDrawerStore, B as BUTTON_TEXTS, W as useEntityStore, A as ACTION_OPTIONS, g as getActionIcon, z as useModalStore, F as FORM_ALERTS, X as useFilterStore, D as DISPLAY_LANGUAGES, M as MONITORS_OPTIONS, d as getInstrumentationRuleIcon, Y as useDataStreamStore, Z as useInstrumentStore, c as getEntityId, S as STORAGE_KEYS, a as DEFAULT_DATA_STREAM_NAME, _ as useSetupStore, e as getProgrammingLanguageIcon, I as INSTRUMENTATION_RULE_OPTIONS, $ as useSelectedStore, j as ImageErrorIcon, a0 as useDarkMode } from './index-fdf3a268.js';
3
+ import { b as DISPLAY_TITLES, T as Theme, U as usePendingStore, V as useNotificationStore, O as useDrawerStore, B as BUTTON_TEXTS, W as useEntityStore, A as ACTION_OPTIONS, g as getActionIcon, z as useModalStore, F as FORM_ALERTS, X as useFilterStore, D as DISPLAY_LANGUAGES, M as MONITORS_OPTIONS, d as getInstrumentationRuleIcon, Y as useDataStreamStore, Z as useInstrumentStore, c as getEntityId, S as STORAGE_KEYS, a as DEFAULT_DATA_STREAM_NAME, _ as useSetupStore, e as getProgrammingLanguageIcon, I as INSTRUMENTATION_RULE_OPTIONS, $ as useSelectedStore, j as ImageErrorIcon, a0 as useDarkMode } from './index-90ccd949.js';
4
4
  import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, EdgeTypes, AddNodeTypes, SignalType, HeadersCollectionKeyTypes, CustomInstrumentationsKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType, K8sResourceKind, ProgrammingLanguages, MountMethod, AgentEnvVarsInjectionMethod, Profile, InstallationMethod } from './types.js';
5
- import { e as DataCardFieldTypes, p as FieldLabel, C as Checkbox, o as FieldError, v as Input, x as InputTable, K as KeyValueInputsList, w as InputList, _ as Text, R as Segment, Q as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, $ as TextArea, k as Drawer, c as ConditionDetails, D as DataCard, a5 as FlexColumn, M as Modal, N as NavigationButtons, a9 as ModalBody, L as NotificationNote, A as AutocompleteInput, i as Divider, W as Status, a4 as FlexRow, a1 as Tooltip, s as IconWrapped, G as MonitorsIcons, aa as TableContainer, ab as TableTitleWrap, r as IconTitleBadge, ac as TableWrap, y as InteractiveTable, a6 as CenterThis, J as NoDataFound, a2 as TraceLoader, a as Badge, E as ExtendArrow, a7 as VerticalScroll, U as SelectionButton, B as Button, n as Dropdown, ad as nodeConfig, ae as useNodesState, af as useEdgesState, ag as Flow, ah as applyNodeChanges, P as Popup, a0 as Toggle, I as IconButton, ai as AddButton, F as FadeLoader, g as DataTab, X as Stepper, d as DataCardFields, Z as Tag, aj as MarkerType, t as IconsNav, ak as CopyText, h as DescribeRow, al as PodContainer, am as SourceContainer, q as IconGroup, O as PopupForm } from './index-a1b59a38.js';
5
+ import { e as DataCardFieldTypes, p as FieldLabel, C as Checkbox, o as FieldError, v as Input, x as InputTable, K as KeyValueInputsList, w as InputList, _ as Text, R as Segment, Q as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, $ as TextArea, k as Drawer, c as ConditionDetails, D as DataCard, a5 as FlexColumn, M as Modal, N as NavigationButtons, a9 as ModalBody, L as NotificationNote, A as AutocompleteInput, i as Divider, W as Status, a4 as FlexRow, a1 as Tooltip, s as IconWrapped, G as MonitorsIcons, aa as TableContainer, ab as TableTitleWrap, r as IconTitleBadge, ac as TableWrap, y as InteractiveTable, a6 as CenterThis, J as NoDataFound, a2 as TraceLoader, a as Badge, E as ExtendArrow, a7 as VerticalScroll, U as SelectionButton, B as Button, n as Dropdown, ad as nodeConfig, ae as useNodesState, af as useEdgesState, ag as Flow, ah as applyNodeChanges, P as Popup, a0 as Toggle, I as IconButton, ai as AddButton, F as FadeLoader, g as DataTab, X as Stepper, d as DataCardFields, Z as Tag, aj as MarkerType, t as IconsNav, ak as CopyText, h as DescribeRow, al as PodContainer, am as SourceContainer, q as IconGroup, O as PopupForm } from './index-b674f184.js';
6
6
  import { i as isEmpty, s as safeJsonParse, d as deepClone } from './index-5e5f7bda.js';
7
- import { C as CheckCircledIcon, O as OdigosLogo } from './index-1d5c06a0.js';
8
- import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, A as ArrowIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon, G as GearIcon } from './index-b5b322ad.js';
7
+ import { C as CheckCircledIcon, O as OdigosLogo } from './index-6034549d.js';
8
+ import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, A as ArrowIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon, G as GearIcon } from './index-c8aab9c4.js';
9
9
  import { useActionFormData, useSessionStorage, useDataStreamFormData, useDestinationFormData, useClickNotification, useSourceFormData, useSourceSelectionFormData } from './hooks.js';
10
- import { u as useKeyDown, a as useOnClickOutside, b as useContainerSize, c as useClickNode, d as usePopup, e as useInstrumentationRuleFormData, f as useTransition, g as useTimeAgo, h as useCopy, i as useGenericForm } from './useTransition-ba7b6d8a.js';
11
- import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, P as PlusIcon, a as CopyIcon } from './index-ba84d272.js';
12
- import { D as DeleteWarning, C as CancelWarning } from './index-45ee08be.js';
13
- import { g as getConditionsBooleans, m as mapConditions, b as getStatusIcon, h as splitCamelString, c as capitalizeFirstLetter, i as isStringABoolean, p as parseBooleanFromString } from './index-0d93b2b4.js';
14
- import { f as filterActions, l as getEntityLabel, k as getEntityIcon, v as sleep, n as getPlatformIcon, o as getPlatformLabel, g as formatBytes, i as getContainersIcons, p as getValueForRange, j as getDestinationIcon, e as filterSourcesByStream, d as filterSources, b as filterDestinationsByStream, a as filterDestinations, u as mapDestinationFieldsForDisplay, c as compareCondition, r as getYamlFieldsForDestination, m as getMetricForEntity, q as getWorkloadId, s as hasUnhealthyInstances, h as getContainersInstrumentedCount, t as isOverTime } from './index-c51fc6a4.js';
10
+ import { u as useKeyDown, a as useOnClickOutside, b as useContainerSize, c as useClickNode, d as usePopup, e as useInstrumentationRuleFormData, f as useTransition, g as useTimeAgo, h as useCopy, i as useGenericForm } from './useTransition-807be8bc.js';
11
+ import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, P as PlusIcon, a as CopyIcon } from './index-19b8f8bc.js';
12
+ import { D as DeleteWarning, C as CancelWarning } from './index-845f2100.js';
13
+ import { g as getConditionsBooleans, m as mapConditions, b as getStatusIcon, h as splitCamelString, c as capitalizeFirstLetter, i as isStringABoolean, p as parseBooleanFromString } from './index-a067d6e9.js';
14
+ import { f as filterActions, l as getEntityLabel, k as getEntityIcon, v as sleep, n as getPlatformIcon, o as getPlatformLabel, g as formatBytes, i as getContainersIcons, p as getValueForRange, j as getDestinationIcon, e as filterSourcesByStream, d as filterSources, b as filterDestinationsByStream, a as filterDestinations, u as mapDestinationFieldsForDisplay, c as compareCondition, r as getYamlFieldsForDestination, m as getMetricForEntity, q as getWorkloadId, s as hasUnhealthyInstances, h as getContainersInstrumentedCount, t as isOverTime } from './index-ba4f9a19.js';
15
15
  import { m as mapExportedSignals } from './index-6a6bea6e.js';
16
16
  import { NoteBackToSummary, EditButton } from './snippets.js';
17
17
  import { D as DESTINATION_CATEGORIES } from './index-1cb4f9e2.js';
18
- import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-59aacfd1.js';
18
+ import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-b9d7a992.js';
19
19
  import 'react-dom';
20
20
 
21
21
  const buildCard$3 = (action) => {
@@ -518,8 +518,8 @@ const ActionForm = ({ isUpdate, action, formData, formErrors, handleFormChange }
518
518
  isUpdate && (React.createElement("div", null,
519
519
  React.createElement(FieldTitle$2, null, "Status"),
520
520
  React.createElement(Segment, { options: [
521
- { icon: CheckCircledIcon, label: 'active', value: false, selectedBgColor: theme.text.success + Theme.opacity.hex['050'] },
522
- { icon: CrossCircledIcon, label: 'inactive', value: true, selectedBgColor: theme.text.error + Theme.opacity.hex['050'] },
521
+ { icon: CheckCircledIcon, label: DISPLAY_TITLES.ENABLED, value: false, selectedBgColor: theme.text.success + Theme.opacity.hex['050'] },
522
+ { icon: CrossCircledIcon, label: DISPLAY_TITLES.DISABLED, value: true, selectedBgColor: theme.text.error + Theme.opacity.hex['050'] },
523
523
  ], selected: formData.disabled, setSelected: (bool) => handleFormChange('disabled', bool) }))),
524
524
  !isUpdate && React.createElement(SectionTitle, { title: '', description: action.docsDescription, actionButton: React.createElement(DocsButton, { endpoint: action.docsEndpoint }) }),
525
525
  React.createElement(MonitorsCheckboxes, { title: 'Signals for Processing', required: true, allowedSignals: action.allowedSignals, selectedSignals: formData['signals'], setSelectedSignals: (value) => handleFormChange('signals', value), errorMessage: formErrors['signals'] }),
@@ -937,7 +937,7 @@ const ActionTable = ({ maxHeight, maxWidth }) => {
937
937
  {
938
938
  columnKey: 'active-status',
939
939
  component: () => (React.createElement("div", { style: { lineHeight: 1 } },
940
- React.createElement(Status, { status: act.spec.disabled ? StatusType.Error : StatusType.Success, title: act.spec.disabled ? 'Inactive' : 'Active', withIcon: true, withBorder: true }))),
940
+ React.createElement(Status, { status: act.spec.disabled ? StatusType.Error : StatusType.Success, title: act.spec.disabled ? DISPLAY_TITLES.DISABLED : DISPLAY_TITLES.ENABLED, withIcon: true, withBorder: true }))),
941
941
  },
942
942
  ],
943
943
  };
@@ -1707,6 +1707,7 @@ const mapToNodeData$1 = (entity) => {
1707
1707
  icon,
1708
1708
  iconSrc,
1709
1709
  monitors: mapExportedSignals(entity.exportedSignals),
1710
+ isActive: !entity.disabled,
1710
1711
  raw: entity,
1711
1712
  };
1712
1713
  };
@@ -2276,11 +2277,12 @@ const buildMonitorsList = (exportedSignals) => Object.keys(exportedSignals)
2276
2277
  .filter((key) => exportedSignals[key])
2277
2278
  .join(', ');
2278
2279
  const buildCard$2 = (destination, yamlFields) => {
2279
- const { exportedSignals, destinationType } = destination;
2280
+ const { destinationType, disabled, exportedSignals } = destination;
2280
2281
  const arr = [
2281
- { title: DISPLAY_TITLES.NAME, value: destinationType.displayName },
2282
2282
  { title: DISPLAY_TITLES.TYPE, value: destinationType.type },
2283
+ { type: DataCardFieldTypes.ActiveStatus, title: DISPLAY_TITLES.STATUS, value: String(!disabled) },
2283
2284
  { type: DataCardFieldTypes.Monitors, title: DISPLAY_TITLES.MONITORS, value: buildMonitorsList(exportedSignals) },
2285
+ { title: DISPLAY_TITLES.NAME, value: destinationType.displayName },
2284
2286
  ];
2285
2287
  const mappedFields = mapDestinationFieldsForDisplay(destination, yamlFields);
2286
2288
  const mappedFieldsForConditionCompare = mappedFields.map((field) => ({ name: field.key, value: field.value }));
@@ -2491,8 +2493,8 @@ const DestinationForm = ({ isUpdate, categoryItem, formData, formErrors, validat
2491
2493
  isUpdate && (React.createElement("div", null,
2492
2494
  React.createElement(FieldTitle$1, null, "Status"),
2493
2495
  React.createElement(Segment, { options: [
2494
- { icon: CheckCircledIcon, label: 'active', value: false, selectedBgColor: theme.text.success + Theme.opacity.hex['050'] },
2495
- { icon: CrossCircledIcon, label: 'inactive', value: true, selectedBgColor: theme.text.error + Theme.opacity.hex['050'] },
2496
+ { icon: CheckCircledIcon, label: DISPLAY_TITLES.ENABLED, value: false, selectedBgColor: theme.text.success + Theme.opacity.hex['050'] },
2497
+ { icon: CrossCircledIcon, label: DISPLAY_TITLES.DISABLED, value: true, selectedBgColor: theme.text.error + Theme.opacity.hex['050'] },
2496
2498
  ], selected: formData.disabled, setSelected: (bool) => handleFormChange('disabled', bool) }))),
2497
2499
  !isUpdate && (React.createElement(Input, { title: 'Destination name', placeholder: 'Enter destination name', value: formData['name'], onChange: (e) => {
2498
2500
  dirtyForm();
@@ -2959,6 +2961,7 @@ const columns$2 = [
2959
2961
  { key: 'name', title: DISPLAY_TITLES.NAME, sortable: true },
2960
2962
  { key: 'type', title: DISPLAY_TITLES.TYPE, sortable: true },
2961
2963
  { key: 'signals', title: DISPLAY_TITLES.MONITORS },
2964
+ { key: 'active-status', title: DISPLAY_TITLES.STATUS },
2962
2965
  { key: 'conditions', title: 'Conditions' },
2963
2966
  { key: 'throughput', title: 'Throughput', sortable: true },
2964
2967
  ];
@@ -2999,13 +3002,18 @@ const DestinationTable = ({ metrics, maxHeight, maxWidth }) => {
2999
3002
  value: formatBytes(getMetricForEntity(metrics, EntityTypes.Destination, dest.id).throughput),
3000
3003
  textColor: theme.text.info,
3001
3004
  },
3005
+ {
3006
+ columnKey: 'signals',
3007
+ component: () => React.createElement(MonitorsIcons, { withLabels: true, monitors: mapExportedSignals(dest.exportedSignals) }),
3008
+ },
3002
3009
  {
3003
3010
  columnKey: 'conditions',
3004
3011
  component: () => (dest.conditions?.length ? React.createElement(TableCellConditions, { conditions: dest.conditions, id: dest.id }) : null),
3005
3012
  },
3006
3013
  {
3007
- columnKey: 'signals',
3008
- component: () => React.createElement(MonitorsIcons, { withLabels: true, monitors: mapExportedSignals(dest.exportedSignals) }),
3014
+ columnKey: 'active-status',
3015
+ component: () => (React.createElement("div", { style: { lineHeight: 1 } },
3016
+ React.createElement(Status, { status: dest.disabled ? StatusType.Error : StatusType.Success, title: dest.disabled ? DISPLAY_TITLES.DISABLED : DISPLAY_TITLES.ENABLED, withIcon: true, withBorder: true }))),
3009
3017
  },
3010
3018
  ],
3011
3019
  };
@@ -3309,8 +3317,8 @@ const InstrumentationRuleForm = ({ isUpdate, rule, formData, formErrors, handleF
3309
3317
  isUpdate ? (React.createElement("div", null,
3310
3318
  React.createElement(FieldTitle, null, "Status"),
3311
3319
  React.createElement(Segment, { options: [
3312
- { icon: CheckCircledIcon, label: 'active', value: false, selectedBgColor: theme.text.success + Theme.opacity.hex['050'] },
3313
- { icon: CrossCircledIcon, label: 'inactive', value: true, selectedBgColor: theme.text.error + Theme.opacity.hex['050'] },
3320
+ { icon: CheckCircledIcon, label: DISPLAY_TITLES.ENABLED, value: false, selectedBgColor: theme.text.success + Theme.opacity.hex['050'] },
3321
+ { icon: CrossCircledIcon, label: DISPLAY_TITLES.DISABLED, value: true, selectedBgColor: theme.text.error + Theme.opacity.hex['050'] },
3314
3322
  ], selected: formData.disabled, setSelected: (bool) => handleFormChange('disabled', bool) }))) : (React.createElement(React.Fragment, null,
3315
3323
  React.createElement(SectionTitle, { title: '', description: rule.docsDescription, actionButton: React.createElement(DocsButton, { endpoint: rule.docsEndpoint }) }),
3316
3324
  React.createElement(Input, { title: 'Rule name', placeholder: 'Use a name that describes the rule', value: formData['ruleName'], onChange: ({ target: { value } }) => handleFormChange('ruleName', value), errorMessage: formErrors['ruleName'] }))),
@@ -3532,7 +3540,7 @@ const InstrumentationRuleTable = ({ maxHeight, maxWidth }) => {
3532
3540
  {
3533
3541
  columnKey: 'active-status',
3534
3542
  component: () => (React.createElement("div", { style: { lineHeight: 1 } },
3535
- React.createElement(Status, { status: rule.disabled ? StatusType.Error : StatusType.Success, title: rule.disabled ? 'Inactive' : 'Active', withIcon: true, withBorder: true }))),
3543
+ React.createElement(Status, { status: rule.disabled ? StatusType.Error : StatusType.Success, title: rule.disabled ? DISPLAY_TITLES.DISABLED : DISPLAY_TITLES.ENABLED, withIcon: true, withBorder: true }))),
3536
3544
  },
3537
3545
  {
3538
3546
  columnKey: 'source-count',
@@ -4043,7 +4051,7 @@ const NotSourcesWrapper = styled(CenterThis) `
4043
4051
  const SelectionCount = styled(Text) `
4044
4052
  width: 18px;
4045
4053
  `;
4046
- const SourceList = ({ isModal = false, withInstances = true, filteredNamespacesAndSources, selectedNamespace, onSelectNamespace, selectedSources, onSelectSource, selectedFutureApps, onSelectFutureApps, }) => {
4054
+ const SourceList = ({ isModal = false, withInstances = true, isFetchingEachNamespace, fetchedNamespaces, filteredNamespacesAndSources, selectedNamespace, onSelectNamespace, selectedSources, onSelectSource, selectedFutureApps, onSelectFutureApps, }) => {
4047
4055
  const theme = Theme.useTheme();
4048
4056
  const { namespacesLoading } = useEntityStore();
4049
4057
  const matrix = Object.entries(filteredNamespacesAndSources || {});
@@ -4051,39 +4059,41 @@ const SourceList = ({ isModal = false, withInstances = true, filteredNamespacesA
4051
4059
  return (React.createElement(CenterThis, null, namespacesLoading ? (React.createElement(FadeLoader, null)) : (React.createElement(NoDataFound, { title: DISPLAY_TITLES.NO_SOURCES, subTitle: onSelectNamespace ? DISPLAY_TITLES.PLEASE_MAKE_SURE_UNIGNORED_NAMESPACES : DISPLAY_TITLES.PLEASE_ADD_SOURCE }))));
4052
4060
  }
4053
4061
  const NamespaceIcon = getEntityIcon(EntityTypes.Namespace);
4054
- return (React.createElement(Container$4, { "$isModal": isModal }, matrix.map(([namespace, sources]) => {
4055
- const sourcesForNamespace = selectedSources?.[namespace] || [];
4056
- const futureAppsForNamespace = selectedFutureApps?.[namespace]?.selected || false;
4057
- const onlySelectedSources = sourcesForNamespace.filter(({ selected }) => selected);
4058
- const isNamespaceLoaded = sourcesForNamespace.length > 0;
4059
- const isNamespaceSelected = selectedNamespace === namespace;
4060
- const isNamespaceAllSourcesSelected = onlySelectedSources.length > 0 && onlySelectedSources.length === sources.length;
4061
- const isNamespacePartiallySourcesSelected = onlySelectedSources.length > 0 && onlySelectedSources.length !== sources.length;
4062
- const hasSources = sources.length > 0;
4063
- const onlyOneSource = sources.length === 1;
4064
- if (!onSelectNamespace && !hasSources)
4065
- return null;
4066
- return (React.createElement(Group, { key: `namespace-${namespace}`, "data-id": `namespace-${namespace}`, "$selected": isNamespaceAllSourcesSelected, "$isOpen": isNamespaceSelected },
4067
- React.createElement(NamespaceItem, { "$selected": isNamespaceAllSourcesSelected, "$withClick": !!onSelectNamespace, onClick: () => onSelectNamespace?.(namespace) },
4068
- React.createElement(FlexRow, { "$gap": 12 },
4069
- onSelectNamespace && React.createElement(Checkbox, { partiallyChecked: isNamespacePartiallySourcesSelected, value: isNamespaceAllSourcesSelected, onChange: (bool) => onSelectNamespace(namespace, bool) }),
4070
- React.createElement(NamespaceIcon, null),
4071
- React.createElement(Text, null, namespace)),
4072
- React.createElement(FlexRow, { "$gap": 12 },
4073
- onSelectFutureApps && (React.createElement(React.Fragment, null,
4074
- React.createElement(Toggle, { title: DISPLAY_TITLES.FUTURE_APPS_TITLE, tooltip: DISPLAY_TITLES.FUTURE_APPS_DESCRIPTION, initialValue: futureAppsForNamespace, onChange: (bool) => onSelectFutureApps(bool, namespace), flipHorizontally: true }),
4075
- React.createElement(Divider, { orientation: 'vertical', length: '12px', margin: '0' }))),
4076
- React.createElement(SelectionCount, { size: 10, color: theme.text.grey }, isNamespaceLoaded ? `${onlySelectedSources.length}/${sources.length}` : null),
4077
- onSelectNamespace && React.createElement(ExtendArrow, { extend: isNamespaceSelected }))),
4078
- (isNamespaceSelected || !onSelectNamespace) &&
4079
- (hasSources ? (React.createElement(RelativeWrapper, { "$addPadding": !onSelectSource },
4080
- React.createElement(AbsoluteWrapper, null,
4081
- React.createElement(Divider, { orientation: 'vertical', length: `${onlyOneSource ? 24 : sources.length * 34}px` })),
4082
- sources.map((source) => {
4083
- const isSourceSelected = onlySelectedSources.some(({ name }) => name === source.name);
4084
- return React.createElement(SourceRow, { key: `source-${source.name}`, withInstances: withInstances, source: source, namespace: namespace, isSelected: isSourceSelected, onSelect: onSelectSource });
4085
- }))) : (React.createElement(NotSourcesWrapper, { "$addPadding": !onSelectSource }, namespacesLoading ? React.createElement(FadeLoader, null) : React.createElement(NoDataFound, { title: DISPLAY_TITLES.NO_SOURCES_NAMESPACE, subTitle: DISPLAY_TITLES.TRY_SEARCH_OR_OTHER_NAMESPACE }))))));
4086
- })));
4062
+ return (React.createElement(Container$4, { "$isModal": isModal },
4063
+ matrix.map(([namespace, sources]) => {
4064
+ const sourcesForNamespace = selectedSources?.[namespace] || [];
4065
+ const futureAppsForNamespace = selectedFutureApps?.[namespace]?.selected || false;
4066
+ const onlySelectedSources = sourcesForNamespace.filter(({ selected }) => selected);
4067
+ const isNamespaceLoaded = sourcesForNamespace.length > 0;
4068
+ const isNamespaceSelected = selectedNamespace === namespace;
4069
+ const isNamespaceAllSourcesSelected = onlySelectedSources.length > 0 && onlySelectedSources.length === sources.length;
4070
+ const isNamespacePartiallySourcesSelected = onlySelectedSources.length > 0 && onlySelectedSources.length !== sources.length;
4071
+ const hasSources = sources.length > 0;
4072
+ const onlyOneSource = sources.length === 1;
4073
+ if (!onSelectNamespace && !hasSources)
4074
+ return null;
4075
+ return (React.createElement(Group, { key: `namespace-${namespace}`, "data-id": `namespace-${namespace}`, "$selected": isNamespaceAllSourcesSelected, "$isOpen": isNamespaceSelected },
4076
+ React.createElement(NamespaceItem, { "$selected": isNamespaceAllSourcesSelected, "$withClick": !!onSelectNamespace, onClick: () => onSelectNamespace?.(namespace) },
4077
+ React.createElement(FlexRow, { "$gap": 12 },
4078
+ onSelectNamespace && React.createElement(Checkbox, { partiallyChecked: isNamespacePartiallySourcesSelected, value: isNamespaceAllSourcesSelected, onChange: (bool) => onSelectNamespace(namespace, bool) }),
4079
+ React.createElement(NamespaceIcon, null),
4080
+ React.createElement(Text, null, namespace)),
4081
+ React.createElement(FlexRow, { "$gap": 12 },
4082
+ onSelectFutureApps && (React.createElement(React.Fragment, null,
4083
+ React.createElement(Toggle, { title: DISPLAY_TITLES.FUTURE_APPS_TITLE, tooltip: DISPLAY_TITLES.FUTURE_APPS_DESCRIPTION, initialValue: futureAppsForNamespace, onChange: (bool) => onSelectFutureApps(bool, namespace), flipHorizontally: true }),
4084
+ React.createElement(Divider, { orientation: 'vertical', length: '12px', margin: '0' }))),
4085
+ isFetchingEachNamespace && !fetchedNamespaces?.includes(namespace) ? (React.createElement(FadeLoader, { scale: 0.8 })) : (React.createElement(SelectionCount, { size: 10, color: theme.text.grey }, isNamespaceLoaded ? `${onlySelectedSources.length}/${sources.length}` : null)),
4086
+ onSelectNamespace && React.createElement(ExtendArrow, { extend: isNamespaceSelected }))),
4087
+ (isNamespaceSelected || !onSelectNamespace) &&
4088
+ (hasSources ? (React.createElement(RelativeWrapper, { "$addPadding": !onSelectSource },
4089
+ React.createElement(AbsoluteWrapper, null,
4090
+ React.createElement(Divider, { orientation: 'vertical', length: `${onlyOneSource ? 24 : sources.length * 34}px` })),
4091
+ sources.map((source) => {
4092
+ const isSourceSelected = onlySelectedSources.some(({ name }) => name === source.name);
4093
+ return React.createElement(SourceRow, { key: `source-${source.name}`, withInstances: withInstances, source: source, namespace: namespace, isSelected: isSourceSelected, onSelect: onSelectSource });
4094
+ }))) : (React.createElement(NotSourcesWrapper, { "$addPadding": !onSelectSource }, namespacesLoading || (isFetchingEachNamespace && !fetchedNamespaces?.includes(namespace)) ? (React.createElement(FadeLoader, null)) : (React.createElement(NoDataFound, { title: DISPLAY_TITLES.NO_SOURCES_NAMESPACE, subTitle: DISPLAY_TITLES.TRY_SEARCH_OR_OTHER_NAMESPACE })))))));
4095
+ }),
4096
+ isFetchingEachNamespace && React.createElement(FadeLoader, { scale: 1.2 })));
4087
4097
  };
4088
4098
  const SourceRow = ({ withInstances, source, namespace, isSelected, onSelect, }) => {
4089
4099
  return (React.createElement(SourceItem, { "data-id": `source-${source.name}`, "$selected": isSelected, "$withClick": !!onSelect, onClick: () => onSelect?.(source) },
@@ -4370,20 +4380,20 @@ const SourceDrawer = ({ persistSources, updateSource, restartWorkloads, fetchSou
4370
4380
  const { drawerType, drawerEntityId } = useDrawerStore();
4371
4381
  const sourcesByStream = useMemo(() => filterSourcesByStream(sources, selectedStreamName), [sources, selectedStreamName]);
4372
4382
  const drawerRef = useRef(null);
4373
- const isOpen = drawerType !== EntityTypes.Source;
4383
+ const isOpen = drawerType === EntityTypes.Source;
4374
4384
  const [isEditing, setIsEditing] = useState(false);
4375
4385
  const [isFormDirty, setIsFormDirty] = useState(false);
4376
4386
  const [selectedTab, setSelectedTab] = useState(Tabs.Overview);
4377
4387
  const [fetchedSource, setFetchedSource] = useState(null);
4378
4388
  // this is used to fetch the source on drawer open, so we ensure we have the latest data
4379
4389
  useEffect(() => {
4380
- if (!drawerEntityId)
4390
+ if (!isOpen || !drawerEntityId)
4381
4391
  return;
4382
4392
  fetchSourceById(drawerEntityId).then((source) => setFetchedSource(source || null));
4383
- }, [drawerEntityId]);
4393
+ }, [isOpen, drawerEntityId]);
4384
4394
  const { formData, handleFormChange, resetFormData, loadFormWithDrawerItem } = useSourceFormData();
4385
4395
  const thisItem = useMemo(() => {
4386
- if (isOpen)
4396
+ if (!isOpen)
4387
4397
  return null;
4388
4398
  const found = fetchedSource ||
4389
4399
  sourcesByStream?.find((x) => x.namespace === drawerEntityId.namespace && x.name === drawerEntityId.name && x.kind === drawerEntityId.kind);
package/lib/functions.js CHANGED
@@ -1,13 +1,13 @@
1
- export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getConditionsBooleans, a as getMonitorIcon, b as getStatusIcon, i as isStringABoolean, d as isValidVersion, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, e as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, h as splitCamelString } from './index-0d93b2b4.js';
2
- export { c as compareCondition, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, d as filterSources, e as filterSourcesByStream, g as formatBytes, i as getContainersIcons, h as getContainersInstrumentedCount, j as getDestinationIcon, k as getEntityIcon, l as getEntityLabel, m as getMetricForEntity, n as getPlatformIcon, o as getPlatformLabel, p as getValueForRange, q as getWorkloadId, r as getYamlFieldsForDestination, s as hasUnhealthyInstances, t as isOverTime, u as mapDestinationFieldsForDisplay, v as sleep } from './index-c51fc6a4.js';
1
+ export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getConditionsBooleans, a as getMonitorIcon, b as getStatusIcon, i as isStringABoolean, d as isValidVersion, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, e as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, h as splitCamelString } from './index-a067d6e9.js';
2
+ export { c as compareCondition, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, d as filterSources, e as filterSourcesByStream, g as formatBytes, i as getContainersIcons, h as getContainersInstrumentedCount, j as getDestinationIcon, k as getEntityIcon, l as getEntityLabel, m as getMetricForEntity, n as getPlatformIcon, o as getPlatformLabel, p as getValueForRange, q as getWorkloadId, r as getYamlFieldsForDestination, s as hasUnhealthyInstances, t as isOverTime, u as mapDestinationFieldsForDisplay, v as sleep } from './index-ba4f9a19.js';
3
3
  export { d as deepClone, i as isEmpty, s as safeJsonParse } from './index-5e5f7bda.js';
4
- export { g as getActionIcon, c as getEntityId, d as getInstrumentationRuleIcon, e as getProgrammingLanguageIcon } from './index-fdf3a268.js';
4
+ export { g as getActionIcon, c as getEntityId, d as getInstrumentationRuleIcon, e as getProgrammingLanguageIcon } from './index-90ccd949.js';
5
5
  export { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
6
6
  import { ProgrammingLanguages, EntityTypes } from './types.js';
7
7
  import 'react';
8
8
  import 'styled-components';
9
- import './index-1d5c06a0.js';
10
- import './index-59aacfd1.js';
9
+ import './index-6034549d.js';
10
+ import './index-b9d7a992.js';
11
11
 
12
12
  const cleanObjectEmptyStringsValues = (obj) => {
13
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -6,6 +6,8 @@ interface UseSourceFormDataParams {
6
6
  fetchSingleNamespace: FetchSingleNamespace;
7
7
  }
8
8
  export interface UseSourceSelectionFormData {
9
+ isFetchingEachNamespace: boolean;
10
+ fetchedNamespaces: string[];
9
11
  availableSources: AvailableSourcesByNamespace;
10
12
  filteredNamespacesAndSources: AvailableSourcesByNamespace;
11
13
  getApiSourcesPayload: () => SourceSelectionFormData;
package/lib/hooks.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { ActionKeyTypes, ActionType, StatusType, EntityTypes, FieldTypes } from './types.js';
2
- import { V as useNotificationStore, F as FORM_ALERTS, O as useDrawerStore, W as useEntityStore, Y as useDataStreamStore, _ as useSetupStore } from './index-fdf3a268.js';
2
+ import { V as useNotificationStore, F as FORM_ALERTS, O as useDrawerStore, W as useEntityStore, Y as useDataStreamStore, _ as useSetupStore } from './index-90ccd949.js';
3
3
  import { useState, useEffect, useMemo } from 'react';
4
4
  import 'styled-components';
5
5
  import { i as isEmpty, s as safeJsonParse } from './index-5e5f7bda.js';
6
- import { i as useGenericForm } from './useTransition-ba7b6d8a.js';
7
- export { c as useClickNode, b as useContainerSize, h as useCopy, e as useInstrumentationRuleFormData, u as useKeyDown, a as useOnClickOutside, d as usePopup, g as useTimeAgo, f as useTransition } from './useTransition-ba7b6d8a.js';
6
+ import { i as useGenericForm } from './useTransition-807be8bc.js';
7
+ export { c as useClickNode, b as useContainerSize, h as useCopy, e as useInstrumentationRuleFormData, u as useKeyDown, a as useOnClickOutside, d as usePopup, g as useTimeAgo, f as useTransition } from './useTransition-807be8bc.js';
8
8
  import { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
9
9
 
10
10
  const INITIAL$2 = {
@@ -472,6 +472,8 @@ const useSourceSelectionFormData = (params) => {
472
472
  const { configuredSources, configuredFutureApps, availableSources: availableSourcesFromStore } = useSetupStore();
473
473
  // Keeps intial values fetched from API, so we can later filter the user-specific-selections, therebey minimizing the amount of data sent to the API on "persist sources".
474
474
  const [availableSources, setRecordedInitialSources] = useState(availableSourcesFromStore);
475
+ const [isFetchingEachNamespace, setIsFetchingEachNamespace] = useState(false);
476
+ const [fetchedNamespaces, setFetchedNamespaces] = useState([]);
475
477
  const [selectedNamespace, setSelectedNamespace] = useState('');
476
478
  const [selectedFutureApps, setSelectedFutureApps] = useState(configuredFutureApps);
477
479
  const [selectedSources, setSelectedSources] = useState(mergeAvailableAndSelectedSources(availableSourcesFromStore, configuredSources, selectedStreamName));
@@ -481,6 +483,7 @@ const useSourceSelectionFormData = (params) => {
481
483
  const { name, sources = [] } = data?.computePlatform?.k8sActualNamespace || {};
482
484
  if (!name)
483
485
  return;
486
+ setFetchedNamespaces((prev) => [...prev, name]);
484
487
  setRecordedInitialSources((prev) => ({
485
488
  ...prev,
486
489
  [name]: sources.map((s) => mapToAvailableSource(s, selectedStreamName)),
@@ -510,8 +513,10 @@ const useSourceSelectionFormData = (params) => {
510
513
  return payload;
511
514
  });
512
515
  (async () => {
516
+ setIsFetchingEachNamespace(true);
513
517
  for await (const ns of namespaces)
514
518
  await fetchAndSetThisNamespace(ns);
519
+ setIsFetchingEachNamespace(false);
515
520
  })();
516
521
  }
517
522
  }, [namespaces, selectedStreamName]);
@@ -591,6 +596,8 @@ const useSourceSelectionFormData = (params) => {
591
596
  return payload;
592
597
  };
593
598
  return {
599
+ isFetchingEachNamespace,
600
+ fetchedNamespaces,
594
601
  availableSources,
595
602
  filteredNamespacesAndSources,
596
603
  getApiSourcesPayload,
package/lib/icons.js CHANGED
@@ -1,10 +1,10 @@
1
- import { T as Theme } from './index-fdf3a268.js';
2
- export { f as AddClusterInfoIcon, n as CPlusPlusLogo, o as CSharpLogo, C as CodeAttributesIcon, l as CustomInstrumentationIcon, h as DeleteAttributeIcon, p as DotnetLogo, E as ElixirLogo, G as GoLogo, H as HeadersCollectionIcon, j as ImageErrorIcon, J as JavaLogo, K as K8sLogo, k as KafkaLogo, q as MysqlLogo, N as NginxLogo, r as NodejsLogo, m as PayloadCollectionIcon, s as PhpLogo, P as PiiMaskingIcon, t as PostgresLogo, u as PythonLogo, v as RedisLogo, R as RenameAttributeIcon, w as RubyLogo, x as RustLogo, i as SamplerIcon, y as SwiftLogo } from './index-fdf3a268.js';
3
- export { C as CheckCircledIcon, E as ErrorTriangleIcon, I as InfoIcon, L as LogsIcon, M as MetricsIcon, O as OdigosLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-1d5c06a0.js';
4
- export { A as ArrowIcon, C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, G as GearIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RefreshLeftArrowIcon, S as SlackLogo, T as TerminalIcon, U as UserIcon } from './index-b5b322ad.js';
1
+ import { T as Theme } from './index-90ccd949.js';
2
+ export { f as AddClusterInfoIcon, n as CPlusPlusLogo, o as CSharpLogo, C as CodeAttributesIcon, l as CustomInstrumentationIcon, h as DeleteAttributeIcon, p as DotnetLogo, E as ElixirLogo, G as GoLogo, H as HeadersCollectionIcon, j as ImageErrorIcon, J as JavaLogo, K as K8sLogo, k as KafkaLogo, q as MysqlLogo, N as NginxLogo, r as NodejsLogo, m as PayloadCollectionIcon, s as PhpLogo, P as PiiMaskingIcon, t as PostgresLogo, u as PythonLogo, v as RedisLogo, R as RenameAttributeIcon, w as RubyLogo, x as RustLogo, i as SamplerIcon, y as SwiftLogo } from './index-90ccd949.js';
3
+ export { C as CheckCircledIcon, E as ErrorTriangleIcon, I as InfoIcon, L as LogsIcon, M as MetricsIcon, O as OdigosLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-6034549d.js';
4
+ export { A as ArrowIcon, C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, G as GearIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RefreshLeftArrowIcon, S as SlackLogo, T as TerminalIcon, U as UserIcon } from './index-c8aab9c4.js';
5
5
  import React from 'react';
6
- export { h as CheckIcon, C as CodeIcon, a as CopyIcon, i as CrossIcon, E as EditIcon, b as EditedIcon, c as ExtendArrowIcon, f as EyeClosedIcon, g as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, d as NotebookIcon, P as PlusIcon, S as SearchIcon, e as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-ba84d272.js';
7
- export { a3 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AwsCloudwatchLogo, d as AwsS3Logo, e as AwsXrayLogo, f as AxiomLogo, B as BetterStackLogo, g as BlobStorageLogo, h as BonreeLogo, C as CauselyLogo, i as ChecklyLogo, j as ChronosphereLogo, k as ClickhouseLogo, l as CoralogixLogo, D as Dash0Logo, m as DatadogLogo, a4 as DestinationsIcon, n as DynatraceLogo, E as ElasticApmLogo, o as ElasticSearchLogo, G as GigapipeLogo, p as GoogleCloudPlatformLogo, q as GrafanaLogo, r as GreptimeLogo, s as GroundcoverLogo, H as HoneycombLogo, t as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, u as LightstepLogo, v as LogzioLogo, w as LokiLogo, x as LumigoLogo, M as MiddlewareLogo, a5 as NamespacesIcon, N as NewRelicLogo, O as ObserveLogo, y as OneUptimeLogo, z as OpenObserveLogo, F as OpenTelemetryLogo, P as OpsVerseLogo, Q as OracleLogo, R as PrometheusLogo, S as QrynLogo, T as QuickwitLogo, a6 as RulesIcon, U as SeqLogo, W as SignozLogo, a7 as SourcesIcon, X as SplunkLogo, Y as SumoLogicLogo, Z as TelemetryHubLogo, _ as TempoLogo, $ as TingyunLogo, a0 as TraceloopLogo, a1 as UptraceLogo, a2 as VictoriaMetricsLogo, V as VmLogo } from './index-59aacfd1.js';
6
+ export { h as CheckIcon, C as CodeIcon, a as CopyIcon, i as CrossIcon, E as EditIcon, b as EditedIcon, c as ExtendArrowIcon, f as EyeClosedIcon, g as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, d as NotebookIcon, P as PlusIcon, S as SearchIcon, e as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-19b8f8bc.js';
7
+ export { a3 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AwsCloudwatchLogo, d as AwsS3Logo, e as AwsXrayLogo, f as AxiomLogo, B as BetterStackLogo, g as BlobStorageLogo, h as BonreeLogo, C as CauselyLogo, i as ChecklyLogo, j as ChronosphereLogo, k as ClickhouseLogo, l as CoralogixLogo, D as Dash0Logo, m as DatadogLogo, a4 as DestinationsIcon, n as DynatraceLogo, E as ElasticApmLogo, o as ElasticSearchLogo, G as GigapipeLogo, p as GoogleCloudPlatformLogo, q as GrafanaLogo, r as GreptimeLogo, s as GroundcoverLogo, H as HoneycombLogo, t as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, u as LightstepLogo, v as LogzioLogo, w as LokiLogo, x as LumigoLogo, M as MiddlewareLogo, a5 as NamespacesIcon, N as NewRelicLogo, O as ObserveLogo, y as OneUptimeLogo, z as OpenObserveLogo, F as OpenTelemetryLogo, P as OpsVerseLogo, Q as OracleLogo, R as PrometheusLogo, S as QrynLogo, T as QuickwitLogo, a6 as RulesIcon, U as SeqLogo, W as SignozLogo, a7 as SourcesIcon, X as SplunkLogo, Y as SumoLogicLogo, Z as TelemetryHubLogo, _ as TempoLogo, $ as TingyunLogo, a0 as TraceloopLogo, a1 as UptraceLogo, a2 as VictoriaMetricsLogo, V as VmLogo } from './index-b9d7a992.js';
8
8
  import './types.js';
9
9
  import 'styled-components';
10
10
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-fdf3a268.js';
2
+ import { T as Theme } from './index-90ccd949.js';
3
3
 
4
4
  const CodeIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
5
5
  const theme = Theme.useTheme();
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-fdf3a268.js';
2
+ import { T as Theme } from './index-90ccd949.js';
3
3
 
4
4
  const OdigosLogo = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { a3 as WarningModal } from './index-a1b59a38.js';
2
+ import { a3 as WarningModal } from './index-b674f184.js';
3
3
  import { StatusType, EntityTypes } from './types.js';
4
- import './index-fdf3a268.js';
4
+ import './index-90ccd949.js';
5
5
  import 'styled-components';
6
6
 
7
7
  const CancelWarning = ({ isOpen, noOverlay, name, onApprove, onDeny }) => {
@@ -1017,6 +1017,10 @@ const DISPLAY_TITLES = {
1017
1017
  OVERIDDEN: 'Overridden',
1018
1018
  OVERRIDE_RUNTIME_DETAILS: 'Override Runtime Details',
1019
1019
  OVERRIDE_RUNTIME_WARNING: 'This is an advanced configuration. If the selected programming language is incorrect, data collection may be incomplete or may not occur at all.',
1020
+ ACTIVE: 'Active',
1021
+ INACTIVE: 'Inactive',
1022
+ ENABLED: 'Enabled',
1023
+ DISABLED: 'Disabled',
1020
1024
  };
1021
1025
  const BUTTON_TEXTS = {
1022
1026
  ADD: 'Add',
@@ -1,8 +1,8 @@
1
1
  import { StatusType, OtherStatus, SignalType } from './types.js';
2
2
  import 'react';
3
- import './index-fdf3a268.js';
3
+ import './index-90ccd949.js';
4
4
  import 'styled-components';
5
- import { L as LogsIcon, M as MetricsIcon, T as TracesIcon, C as CheckCircledIcon, E as ErrorTriangleIcon, W as WarningTriangleIcon, I as InfoIcon, O as OdigosLogo } from './index-1d5c06a0.js';
5
+ import { L as LogsIcon, M as MetricsIcon, T as TracesIcon, C as CheckCircledIcon, E as ErrorTriangleIcon, W as WarningTriangleIcon, I as InfoIcon, O as OdigosLogo } from './index-6034549d.js';
6
6
 
7
7
  const capitalizeFirstLetter = (string) => {
8
8
  return string.charAt(0).toUpperCase() + string.slice(1);
@@ -1,13 +1,13 @@
1
1
  import React, { useState, useEffect, useRef, forwardRef, useMemo, Fragment, createElement, useCallback, createContext, memo, useContext, useLayoutEffect } from 'react';
2
- import { T as Theme, B as BUTTON_TEXTS, j as ImageErrorIcon, M as MONITORS_OPTIONS, a1 as styleInject, U as usePendingStore, $ as useSelectedStore, Z as useInstrumentStore, Q as useActiveNodeStore, V as useNotificationStore, b as DISPLAY_TITLES, L as LANGUAGE_OPTIONS, F as FORM_ALERTS, D as DISPLAY_LANGUAGES, e as getProgrammingLanguageIcon } from './index-fdf3a268.js';
2
+ import { T as Theme, B as BUTTON_TEXTS, j as ImageErrorIcon, M as MONITORS_OPTIONS, a1 as styleInject, U as usePendingStore, $ as useSelectedStore, Z as useInstrumentStore, Q as useActiveNodeStore, V as useNotificationStore, b as DISPLAY_TITLES, L as LANGUAGE_OPTIONS, F as FORM_ALERTS, D as DISPLAY_LANGUAGES, e as getProgrammingLanguageIcon } from './index-90ccd949.js';
3
3
  import styled, { css } from 'styled-components';
4
- import { M as MinusIcon$1, h as CheckIcon, L as ListIcon, C as CodeIcon, c as ExtendArrowIcon, P as PlusIcon$1, a as CopyIcon, E as EditIcon, b as EditedIcon, e as SortArrowsIcon, d as NotebookIcon, X as XIcon, f as EyeClosedIcon, g as EyeOpenIcon, N as NoDataIcon, i as CrossIcon, S as SearchIcon, T as TrashIcon } from './index-ba84d272.js';
4
+ import { M as MinusIcon$1, h as CheckIcon, L as ListIcon, C as CodeIcon, c as ExtendArrowIcon, P as PlusIcon$1, a as CopyIcon, E as EditIcon, b as EditedIcon, e as SortArrowsIcon, d as NotebookIcon, X as XIcon, f as EyeClosedIcon, g as EyeOpenIcon, N as NoDataIcon, i as CrossIcon, S as SearchIcon, T as TrashIcon } from './index-19b8f8bc.js';
5
5
  import { StatusType, OtherStatus, EntityTypes, NodeTypes, AddNodeTypes, EdgeTypes, ProgrammingLanguages, IntrumentationStatus, SortDirection, InputTypes, FieldTypes } from './types.js';
6
6
  import { s as safeJsonParse, i as isEmpty } from './index-5e5f7bda.js';
7
- import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, g as getConditionsBooleans, c as capitalizeFirstLetter, a as getMonitorIcon, i as isStringABoolean, p as parseBooleanFromString, d as isValidVersion, h as splitCamelString, e as parseJsonStringToPrettyString, n as numbersOnly } from './index-0d93b2b4.js';
7
+ import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, g as getConditionsBooleans, c as capitalizeFirstLetter, a as getMonitorIcon, i as isStringABoolean, p as parseBooleanFromString, d as isValidVersion, h as splitCamelString, e as parseJsonStringToPrettyString, n as numbersOnly } from './index-a067d6e9.js';
8
8
  import ReactDOM, { createPortal } from 'react-dom';
9
- import { d as usePopup, h as useCopy, c as useClickNode, i as useGenericForm, b as useContainerSize, f as useTransition, u as useKeyDown, a as useOnClickOutside } from './useTransition-ba7b6d8a.js';
10
- import { I as InfoIcon } from './index-1d5c06a0.js';
9
+ import { d as usePopup, h as useCopy, c as useClickNode, i as useGenericForm, b as useContainerSize, f as useTransition, u as useKeyDown, a as useOnClickOutside } from './useTransition-807be8bc.js';
10
+ import { I as InfoIcon } from './index-6034549d.js';
11
11
 
12
12
  const TextWrapper$2 = styled.div `
13
13
  color: ${({ $color, theme }) => $color || theme.text.secondary};
@@ -16522,7 +16522,7 @@ const BaseNode = memo(({ id: nodeId, data }) => {
16522
16522
  const isPending = isThisPending({ entityType, entityId });
16523
16523
  const renderActions = () => {
16524
16524
  const StatusIcon = hasActiveBoolean ? getStatusIcon(isActive ? StatusType.Success : StatusType.Info, theme) : status && getStatusIcon(status, theme);
16525
- const statusTooltipText = hasActiveBoolean ? `${entityType} is ${isActive ? 'active' : 'inactive'}` : undefined;
16525
+ const statusTooltipText = hasActiveBoolean ? `${entityType} is ${isActive ? 'enabled' : 'disabled'}` : undefined;
16526
16526
  const sourceIsInstrumenting = isSource && (!raw.conditions?.length || raw.conditions?.some(({ status }) => status === 'loading'));
16527
16527
  // TODO: handle action/icon to apply instrumentation-rules for individual sources (@Notion GEN-1650)
16528
16528
  return isPending ? (React.createElement(FadeLoader, null)) : StatusIcon ? (React.createElement(Tooltip, { text: statusTooltipText },
@@ -17245,7 +17245,7 @@ const RenderValue = ({ type, value }) => {
17245
17245
  return React.createElement(InteractiveTable, { columns: columns, rows: rows, ...rest });
17246
17246
  }
17247
17247
  case DataCardFieldTypes.ActiveStatus: {
17248
- return React.createElement(Status, { status: value == 'true' ? StatusType.Success : StatusType.Error, title: value == 'true' ? 'Active' : 'Inactive', size: 10, withIcon: true, withBorder: true });
17248
+ return React.createElement(Status, { status: value == 'true' ? StatusType.Success : StatusType.Error, title: value == 'true' ? DISPLAY_TITLES.ENABLED : DISPLAY_TITLES.DISABLED, size: 10, withIcon: true, withBorder: true });
17249
17249
  }
17250
17250
  case DataCardFieldTypes.CopyText: {
17251
17251
  const str = typeof value === 'string' ? value : JSON.stringify(value);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-fdf3a268.js';
2
+ import { T as Theme } from './index-90ccd949.js';
3
3
 
4
4
  const VmLogo = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
5
5
  const theme = Theme.useTheme();
@@ -1,9 +1,9 @@
1
1
  import { StatusType, DestinationTypes, EntityTypes, PlatformType } from './types.js';
2
- import { a as DEFAULT_DATA_STREAM_NAME, e as getProgrammingLanguageIcon, k as KafkaLogo, K as K8sLogo } from './index-fdf3a268.js';
2
+ import { a as DEFAULT_DATA_STREAM_NAME, e as getProgrammingLanguageIcon, k as KafkaLogo, K as K8sLogo } from './index-90ccd949.js';
3
3
  import 'react';
4
4
  import 'styled-components';
5
- import { A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, f as AxiomLogo, g as BlobStorageLogo, B as BetterStackLogo, h as BonreeLogo, C as CauselyLogo, i as ChecklyLogo, j as ChronosphereLogo, k as ClickhouseLogo, c as AwsCloudwatchLogo, l as CoralogixLogo, D as Dash0Logo, m as DatadogLogo, F as OpenTelemetryLogo, n as DynatraceLogo, E as ElasticApmLogo, o as ElasticSearchLogo, p as GoogleCloudPlatformLogo, q as GrafanaLogo, r as GreptimeLogo, s as GroundcoverLogo, H as HoneycombLogo, t as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, u as LightstepLogo, v as LogzioLogo, w as LokiLogo, x as LumigoLogo, M as MiddlewareLogo, N as NewRelicLogo, O as ObserveLogo, y as OneUptimeLogo, z as OpenObserveLogo, P as OpsVerseLogo, Q as OracleLogo, R as PrometheusLogo, S as QrynLogo, G as GigapipeLogo, T as QuickwitLogo, d as AwsS3Logo, U as SeqLogo, W as SignozLogo, X as SplunkLogo, Y as SumoLogicLogo, Z as TelemetryHubLogo, _ as TempoLogo, $ as TingyunLogo, a0 as TraceloopLogo, a1 as UptraceLogo, a2 as VictoriaMetricsLogo, e as AwsXrayLogo, a5 as NamespacesIcon, a7 as SourcesIcon, a4 as DestinationsIcon, a3 as ActionsIcon, a6 as RulesIcon, V as VmLogo } from './index-59aacfd1.js';
6
- import { O as OdigosLogo } from './index-1d5c06a0.js';
5
+ import { A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, f as AxiomLogo, g as BlobStorageLogo, B as BetterStackLogo, h as BonreeLogo, C as CauselyLogo, i as ChecklyLogo, j as ChronosphereLogo, k as ClickhouseLogo, c as AwsCloudwatchLogo, l as CoralogixLogo, D as Dash0Logo, m as DatadogLogo, F as OpenTelemetryLogo, n as DynatraceLogo, E as ElasticApmLogo, o as ElasticSearchLogo, p as GoogleCloudPlatformLogo, q as GrafanaLogo, r as GreptimeLogo, s as GroundcoverLogo, H as HoneycombLogo, t as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, u as LightstepLogo, v as LogzioLogo, w as LokiLogo, x as LumigoLogo, M as MiddlewareLogo, N as NewRelicLogo, O as ObserveLogo, y as OneUptimeLogo, z as OpenObserveLogo, P as OpsVerseLogo, Q as OracleLogo, R as PrometheusLogo, S as QrynLogo, G as GigapipeLogo, T as QuickwitLogo, d as AwsS3Logo, U as SeqLogo, W as SignozLogo, X as SplunkLogo, Y as SumoLogicLogo, Z as TelemetryHubLogo, _ as TempoLogo, $ as TingyunLogo, a0 as TraceloopLogo, a1 as UptraceLogo, a2 as VictoriaMetricsLogo, e as AwsXrayLogo, a5 as NamespacesIcon, a7 as SourcesIcon, a4 as DestinationsIcon, a3 as ActionsIcon, a6 as RulesIcon, V as VmLogo } from './index-b9d7a992.js';
6
+ import { O as OdigosLogo } from './index-6034549d.js';
7
7
  import { s as safeJsonParse } from './index-5e5f7bda.js';
8
8
 
9
9
  const compareCondition = (renderCondition, fields) => {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-fdf3a268.js';
2
+ import { T as Theme } from './index-90ccd949.js';
3
3
 
4
4
  const OdigosLogoText = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
package/lib/snippets.js CHANGED
@@ -1,15 +1,15 @@
1
- import { B as Button, _ as Text, L as NotificationNote } from './index-a1b59a38.js';
2
- export { ai as AddButton, an as AddNode, ao as BaseNode, ak as CopyText, ap as EdgedNode, ag as Flow, aq as FrameNode, ar as HeaderNode, aw as LabeledEdge, as as MapItemNode, at as NoDataNode, al as PodContainer, au as ScrollNode, av as SkeletonNode, am as SourceContainer, ad as nodeConfig } from './index-a1b59a38.js';
1
+ import { B as Button, _ as Text, L as NotificationNote } from './index-b674f184.js';
2
+ export { ai as AddButton, an as AddNode, ao as BaseNode, ak as CopyText, ap as EdgedNode, ag as Flow, aq as FrameNode, ar as HeaderNode, aw as LabeledEdge, as as MapItemNode, at as NoDataNode, al as PodContainer, au as ScrollNode, av as SkeletonNode, am as SourceContainer, ad as nodeConfig } from './index-b674f184.js';
3
3
  import React from 'react';
4
- import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-fdf3a268.js';
5
- import { E as EditIcon } from './index-ba84d272.js';
4
+ import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-90ccd949.js';
5
+ import { E as EditIcon } from './index-19b8f8bc.js';
6
6
  import { StatusType } from './types.js';
7
7
  import 'styled-components';
8
- import { I as InfoIcon } from './index-1d5c06a0.js';
8
+ import { I as InfoIcon } from './index-6034549d.js';
9
9
  import './index-5e5f7bda.js';
10
- import './index-0d93b2b4.js';
10
+ import './index-a067d6e9.js';
11
11
  import 'react-dom';
12
- import './useTransition-ba7b6d8a.js';
12
+ import './useTransition-807be8bc.js';
13
13
 
14
14
  const EditButton = ({ label, onClick, variant = 'tertiary', ...props }) => {
15
15
  const theme = Theme.useTheme();
package/lib/store.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Q as useActiveNodeStore, a0 as useDarkMode, Y as useDataStreamStore, O as useDrawerStore, W as useEntityStore, X as useFilterStore, Z as useInstrumentStore, z as useModalStore, V as useNotificationStore, U as usePendingStore, $ as useSelectedStore, _ as useSetupStore } from './index-fdf3a268.js';
1
+ export { Q as useActiveNodeStore, a0 as useDarkMode, Y as useDataStreamStore, O as useDrawerStore, W as useEntityStore, X as useFilterStore, Z as useInstrumentStore, z as useModalStore, V as useNotificationStore, U as usePendingStore, $ as useSelectedStore, _ as useSetupStore } from './index-90ccd949.js';
2
2
  import 'react';
3
3
  import './types.js';
4
4
  import 'styled-components';
package/lib/theme.js CHANGED
@@ -1,4 +1,4 @@
1
- export { T as default } from './index-fdf3a268.js';
1
+ export { T as default } from './index-90ccd949.js';
2
2
  import 'styled-components';
3
3
  import 'react';
4
4
  import './types.js';
@@ -1,4 +1,4 @@
1
- import { z as useModalStore, O as useDrawerStore, Q as useActiveNodeStore } from './index-fdf3a268.js';
1
+ import { z as useModalStore, O as useDrawerStore, Q as useActiveNodeStore } from './index-90ccd949.js';
2
2
  import { AddNodeTypes, EntityTypes, PayloadCollectionKeyTypes, CodeAttributesKeyTypes, CustomInstrumentationsKeyTypes } from './types.js';
3
3
  import React, { useState, useMemo, useEffect, useRef, useCallback } from 'react';
4
4
  import styled from 'styled-components';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odigos/ui-kit",
3
- "version": "0.0.77",
3
+ "version": "0.0.79",
4
4
  "author": "Odigos",
5
5
  "repository": {
6
6
  "type": "git",