@odigos/ui-kit 0.0.41 → 0.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/lib/components/data-card/data-card-fields/index.d.ts +1 -0
  3. package/lib/components/data-card/data-card-fields/override-runtime.d.ts +9 -0
  4. package/lib/components/dropdown/index.d.ts +4 -2
  5. package/lib/components.js +8 -8
  6. package/lib/constants/index.d.ts +1 -0
  7. package/lib/constants/sources/index.d.ts +4 -0
  8. package/lib/constants/strings/index.d.ts +3 -0
  9. package/lib/constants.js +1 -1
  10. package/lib/containers.js +15 -15
  11. package/lib/functions/index.d.ts +1 -0
  12. package/lib/functions/is-valid-version/index.d.ts +1 -0
  13. package/lib/functions.js +5 -5
  14. package/lib/hooks.js +3 -3
  15. package/lib/icons.js +6 -7
  16. package/lib/{index-DLH1IvyS.js → index-BJn6pgjP.js} +2 -2
  17. package/lib/{index-B1h5g0Hl.js → index-BMkvXaM3.js} +7 -32
  18. package/lib/{index-C-84NaCL.js → index-Biu8ddMV.js} +78 -16
  19. package/lib/{index-BeVb1H9n.js → index-BvZgTeSU.js} +1369 -36
  20. package/lib/{index-BrriZrlp.js → index-CN-rJ_ZV.js} +3 -4
  21. package/lib/{index-zXCdgpRU.js → index-CQ2z02Y8.js} +1 -1
  22. package/lib/{index-Cau7bWmr.js → index-CS6xAoTK.js} +9 -2
  23. package/lib/{index-CBgnxpkW.js → index-CmGKwhgi.js} +1 -1
  24. package/lib/index-DtSbC1Cl.js +62 -0
  25. package/lib/{index-Cph4pNkb.js → index-VLuOq8HF.js} +4 -4
  26. package/lib/snippets.js +7 -8
  27. package/lib/store.js +1 -1
  28. package/lib/theme.js +1 -1
  29. package/lib/types/sources/index.d.ts +8 -2
  30. package/lib/{useSourceSelectionFormData-CrtSxE3G.js → useSourceSelectionFormData-xhTNmN-P.js} +2 -2
  31. package/lib/{useTransition-BumZECD3.js → useTransition-BOwXSp5e.js} +1 -1
  32. package/package.json +1 -1
  33. package/lib/index-BdZq2vdJ.js +0 -1297
  34. package/lib/index-CDHYBh8C.js +0 -11
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.42](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.41...ui-kit-v0.0.42) (2025-06-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * override runtime ([#183](https://github.com/odigos-io/ui-kit/issues/183)) ([37b183b](https://github.com/odigos-io/ui-kit/commit/37b183b08e56d08faf5107585ab5919aeab2057c))
9
+
3
10
  ## [0.0.41](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.40...ui-kit-v0.0.41) (2025-06-15)
4
11
 
5
12
 
@@ -17,6 +17,7 @@ interface DataCardField {
17
17
  title?: string;
18
18
  tooltip?: string;
19
19
  value?: string | Record<string, any>;
20
+ callback?: (payload: any) => void | Promise<void>;
20
21
  }
21
22
  interface DataCardFieldsProps {
22
23
  data?: DataCardField[];
@@ -0,0 +1,9 @@
1
+ import { type FC } from 'react';
2
+ import { SourceFormData } from '@/types';
3
+ interface OverrideRuntimeProps {
4
+ defaultLanguage?: SourceFormData['language'];
5
+ defaultVersion?: SourceFormData['version'];
6
+ handleSave: (payload: Pick<SourceFormData, 'language' | 'version'>) => void;
7
+ }
8
+ declare const OverrideRuntime: FC<OverrideRuntimeProps>;
9
+ export { OverrideRuntime, type OverrideRuntimeProps };
@@ -1,7 +1,9 @@
1
1
  import { type FC } from 'react';
2
- interface DropdownOption {
3
- id?: string | null;
2
+ import type { SVG } from '@/types';
3
+ interface DropdownOption<T = string> {
4
+ id?: T | null;
4
5
  value?: string | null;
6
+ icon?: SVG | null;
5
7
  }
6
8
  interface DropdownProps {
7
9
  title?: string;
package/lib/components.js CHANGED
@@ -1,15 +1,15 @@
1
- import { B as Button } from './index-C-84NaCL.js';
2
- export { a as AutocompleteInput, b as Badge, a1 as CenterThis, C as Checkbox, c as Code, d as ConditionDetails, D as DataCard, f as DataCardFieldTypes, e as DataCardFields, g as DataTab, h as Divider, i as DocsButton, j as Drawer, l as DrawerFooter, k as DrawerHeader, m as Dropdown, E as ExtendArrow, F as FadeLoader, n as FieldError, o as FieldLabel, a0 as FlexColumn, $ as FlexRow, H as Header, I as IconButton, p as IconGroup, q as IconTitleBadge, r as IconWrapped, s as IconsNav, t as ImageControlled, u as Input, v as InputList, w as InputTable, x as InteractiveTable, K as KeyValueInputsList, M as Modal, a4 as ModalBody, y as MonitorsCheckboxes, z as MonitorsIcons, N as NavigationButtons, G as NoDataFound, J as NotificationNote, a3 as Overlay, S as ScrollX, L as SectionTitle, O as Segment, P as SelectionButton, Q as SkeletonLoader, R as Status, U as Stepper, a5 as TableContainer, a6 as TableTitleWrap, a7 as TableWrap, V as Text, W as TextArea, X as Toggle, T as ToggleCodeComponent, Y as Tooltip, Z as TraceLoader, a2 as VerticalScroll, _ as WarningModal } from './index-C-84NaCL.js';
3
- export { C as CancelWarning, D as DeleteWarning } from './index-DLH1IvyS.js';
1
+ import { B as Button } from './index-Biu8ddMV.js';
2
+ export { a as AutocompleteInput, b as Badge, a1 as CenterThis, C as Checkbox, c as Code, d as ConditionDetails, D as DataCard, f as DataCardFieldTypes, e as DataCardFields, g as DataTab, h as Divider, i as DocsButton, j as Drawer, l as DrawerFooter, k as DrawerHeader, m as Dropdown, E as ExtendArrow, F as FadeLoader, n as FieldError, o as FieldLabel, a0 as FlexColumn, $ as FlexRow, H as Header, I as IconButton, p as IconGroup, q as IconTitleBadge, r as IconWrapped, s as IconsNav, t as ImageControlled, u as Input, v as InputList, w as InputTable, x as InteractiveTable, K as KeyValueInputsList, M as Modal, a4 as ModalBody, y as MonitorsCheckboxes, z as MonitorsIcons, N as NavigationButtons, G as NoDataFound, J as NotificationNote, a3 as Overlay, S as ScrollX, L as SectionTitle, O as Segment, P as SelectionButton, Q as SkeletonLoader, R as Status, U as Stepper, a5 as TableContainer, a6 as TableTitleWrap, a7 as TableWrap, V as Text, W as TextArea, X as Toggle, T as ToggleCodeComponent, Y as Tooltip, Z as TraceLoader, a2 as VerticalScroll, _ as WarningModal } from './index-Biu8ddMV.js';
3
+ export { C as CancelWarning, D as DeleteWarning } from './index-BJn6pgjP.js';
4
4
  import React, { Component, createElement, createContext } from 'react';
5
- import { T as Theme } from './index-BdZq2vdJ.js';
5
+ import { T as Theme } from './index-BvZgTeSU.js';
6
6
  import './types.js';
7
- import './index-Cau7bWmr.js';
8
- import './index-B1h5g0Hl.js';
7
+ import './index-CS6xAoTK.js';
8
+ import './index-BMkvXaM3.js';
9
9
  import 'styled-components';
10
- import './index-BeVb1H9n.js';
10
+ import './index-DtSbC1Cl.js';
11
11
  import './index-BV85P9UP.js';
12
- import './useTransition-BumZECD3.js';
12
+ import './useTransition-BOwXSp5e.js';
13
13
  import 'react-dom';
14
14
 
15
15
  const ErrorBoundaryContext = createContext(null);
@@ -2,5 +2,6 @@ export * from './actions';
2
2
  export * from './destinations';
3
3
  export * from './instrumentation-rules';
4
4
  export * from './signals';
5
+ export * from './sources';
5
6
  export * from './strings';
6
7
  export * from './tokens';
@@ -0,0 +1,4 @@
1
+ import { ProgrammingLanguages } from '@/types';
2
+ import type { DropdownOption } from '@/components';
3
+ export declare const DISPLAY_LANGUAGES: Record<ProgrammingLanguages, string>;
4
+ export declare const LANGUAGE_OPTIONS: DropdownOption<ProgrammingLanguages>[];
@@ -16,6 +16,7 @@ export declare const FORM_ALERTS: {
16
16
  LATENCY_HTTP_ROUTE: string;
17
17
  READONLY_WARNING: string;
18
18
  ILLEGAL_K8S_LABEL: string;
19
+ INVALID_VERSION: string;
19
20
  };
20
21
  export declare const DISPLAY_TITLES: {
21
22
  NAMESPACE: string;
@@ -65,6 +66,8 @@ export declare const DISPLAY_TITLES: {
65
66
  STATUS: string;
66
67
  READONLY: string;
67
68
  LANGUAGE: string;
69
+ VERSION: string;
70
+ VERSION_PLACEHOLDER: string;
68
71
  MONITORS: string;
69
72
  SIGNALS_FOR_PROCESSING: string;
70
73
  MANAGED_BY_PROFILE: string;
package/lib/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, D as DEFAULT_DATA_STREAM_NAME, k as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, M as MONITORS_OPTIONS, S as STORAGE_KEYS } from './index-BdZq2vdJ.js';
1
+ export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, k as DEFAULT_DATA_STREAM_NAME, D as DISPLAY_LANGUAGES, l 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-BvZgTeSU.js';
2
2
  export { D as DESTINATION_CATEGORIES } from './index-Dqief9td.js';
3
3
  import 'react';
4
4
  import './types.js';
package/lib/containers.js CHANGED
@@ -1,23 +1,22 @@
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 { k as DISPLAY_TITLES, T as Theme, h as usePendingStore, g as useNotificationStore, b as useDrawerStore, B as BUTTON_TEXTS, c as useEntityStore, A as ACTION_OPTIONS, l as getActionIcon, f as useModalStore, F as FORM_ALERTS, d as useFilterStore, M as MONITORS_OPTIONS, t as styleInject, i as useSelectedStore, e as useInstrumentStore, n as getInstrumentationRuleIcon, a as useDataStreamStore, m as getEntityId, S as STORAGE_KEYS, j as useSetupStore, I as INSTRUMENTATION_RULE_OPTIONS, u as useDarkMode } from './index-BdZq2vdJ.js';
3
+ import { l as DISPLAY_TITLES, T as Theme, h as usePendingStore, g as useNotificationStore, b as useDrawerStore, B as BUTTON_TEXTS, c as useEntityStore, A as ACTION_OPTIONS, m as getActionIcon, f as useModalStore, F as FORM_ALERTS, d as useFilterStore, M as MONITORS_OPTIONS, $ as styleInject, i as useSelectedStore, e as useInstrumentStore, o as getInstrumentationRuleIcon, a as useDataStreamStore, n as getEntityId, S as STORAGE_KEYS, j as useSetupStore, I as INSTRUMENTATION_RULE_OPTIONS, u as useDarkMode } from './index-BvZgTeSU.js';
4
4
  import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, AddNodeTypes, EdgeTypes, SignalType, HeadersCollectionKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType } from './types.js';
5
- import { f as DataCardFieldTypes, o as FieldLabel, C as Checkbox, n as FieldError, u as Input, w as InputTable, K as KeyValueInputsList, v as InputList, V as Text, O as Segment, L as SectionTitle, i as DocsButton, y as MonitorsCheckboxes, W as TextArea, j as Drawer, d as ConditionDetails, D as DataCard, a0 as FlexColumn, M as Modal, N as NavigationButtons, a4 as ModalBody, J as NotificationNote, a as AutocompleteInput, h as Divider, R as Status, $ as FlexRow, Y as Tooltip, r as IconWrapped, z as MonitorsIcons, a5 as TableContainer, a6 as TableTitleWrap, q as IconTitleBadge, a7 as TableWrap, x as InteractiveTable, a1 as CenterThis, G as NoDataFound, Z as TraceLoader, b as Badge, E as ExtendArrow, a2 as VerticalScroll, P as SelectionButton, B as Button, m as Dropdown, a8 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, Q as SkeletonLoader, X as Toggle, A as AddButton$1, U as Stepper, I as IconButton, e as DataCardFields, s as IconsNav, p as IconGroup } from './index-C-84NaCL.js';
5
+ import { f as DataCardFieldTypes, o as FieldLabel, C as Checkbox, n as FieldError, u as Input, w as InputTable, K as KeyValueInputsList, v as InputList, V as Text, O as Segment, L as SectionTitle, i as DocsButton, y as MonitorsCheckboxes, W as TextArea, j as Drawer, d as ConditionDetails, D as DataCard, a0 as FlexColumn, M as Modal, N as NavigationButtons, a4 as ModalBody, J as NotificationNote, a as AutocompleteInput, h as Divider, R as Status, $ as FlexRow, Y as Tooltip, r as IconWrapped, z as MonitorsIcons, a5 as TableContainer, a6 as TableTitleWrap, q as IconTitleBadge, a7 as TableWrap, x as InteractiveTable, a1 as CenterThis, G as NoDataFound, Z as TraceLoader, b as Badge, E as ExtendArrow, a2 as VerticalScroll, P as SelectionButton, B as Button, m as Dropdown, a8 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, Q as SkeletonLoader, X as Toggle, A as AddButton$1, U as Stepper, I as IconButton, e as DataCardFields, s as IconsNav, p as IconGroup } from './index-Biu8ddMV.js';
6
6
  import { i as isEmpty, s as safeJsonParse } from './index-BV85P9UP.js';
7
- import { i as CheckCircledIcon, O as OdigosLogo } from './index-BeVb1H9n.js';
8
- import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, R as RetryIcon, N as NotificationIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-zXCdgpRU.js';
9
- import { u as useActionFormData, a as useClickNode, e as useSessionStorage, c as useDataStreamFormData, d as useDestinationFormData, b as useClickNotification, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-CrtSxE3G.js';
10
- import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-BumZECD3.js';
11
- import { E as EditIcon } from './index-CDHYBh8C.js';
12
- import { T as TrashIcon, S as SearchIcon, P as PlusIcon$1, f as CheckIcon, A as ArrowIcon, a as CopyIcon, g as CrossIcon } from './index-Cau7bWmr.js';
13
- import { D as DeleteWarning, C as CancelWarning } from './index-DLH1IvyS.js';
14
- import { m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-B1h5g0Hl.js';
15
- import { f as filterActions, i as getConditionsBooleans, n as getEntityLabel, m as getEntityIcon, w as sleep$1, p as getPlatformIcon, q as getPlatformLabel, h as formatBytes, k as getContainersIcons, r as getValueForRange, l as getDestinationIcon, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, v as mapDestinationFieldsForDisplay, c as compareCondition, t as getYamlFieldsForDestination, d as deepClone, o as getMetricForEntity, s as getWorkloadId, j as getContainersInstrumentedCount, u as isOverTime } from './index-BrriZrlp.js';
7
+ import { C as CheckCircledIcon, O as OdigosLogo } from './index-DtSbC1Cl.js';
8
+ import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, R as RetryIcon, N as NotificationIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-CQ2z02Y8.js';
9
+ import { u as useActionFormData, a as useClickNode, e as useSessionStorage, c as useDataStreamFormData, d as useDestinationFormData, b as useClickNotification, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-xhTNmN-P.js';
10
+ import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-BOwXSp5e.js';
11
+ import { E as EditIcon, T as TrashIcon, S as SearchIcon, P as PlusIcon$1, g as CheckIcon, A as ArrowIcon, a as CopyIcon, h as CrossIcon } from './index-CS6xAoTK.js';
12
+ import { D as DeleteWarning, C as CancelWarning } from './index-BJn6pgjP.js';
13
+ import { m as mapConditions, a as getStatusIcon, c as capitalizeFirstLetter } from './index-BMkvXaM3.js';
14
+ import { f as filterActions, i as getConditionsBooleans, n as getEntityLabel, m as getEntityIcon, w as sleep$1, p as getPlatformIcon, q as getPlatformLabel, h as formatBytes, k as getContainersIcons, r as getValueForRange, l as getDestinationIcon, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, v as mapDestinationFieldsForDisplay, c as compareCondition, t as getYamlFieldsForDestination, d as deepClone, o as getMetricForEntity, s as getWorkloadId, j as getContainersInstrumentedCount, u as isOverTime } from './index-CN-rJ_ZV.js';
16
15
  import { createPortal } from 'react-dom';
17
16
  import { m as mapExportedSignals } from './index-BlZKWuxe.js';
18
- import { N as NoteBackToSummary, E as EditButton } from './index-Cph4pNkb.js';
17
+ import { N as NoteBackToSummary, E as EditButton } from './index-VLuOq8HF.js';
19
18
  import { D as DESTINATION_CATEGORIES } from './index-Dqief9td.js';
20
- import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-CBgnxpkW.js';
19
+ import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-CmGKwhgi.js';
21
20
 
22
21
  const buildCard$3 = (action) => {
23
22
  const { type, spec: { actionName, notes, signals, disabled, collectContainerAttributes, collectReplicaSetAttributes, collectWorkloadId, collectClusterId, labelsAttributes, annotationsAttributes, clusterAttributes, attributeNamesToDelete, renames, piiCategories, fallbackSamplingRatio, samplingPercentage, endpointsFilters, servicesNameFilters, attributeFilters, }, } = action;
@@ -16192,7 +16191,7 @@ const SourceDrawer = ({ persistSources, updateSource, fetchDescribeSource, resta
16192
16191
  const containersData = useMemo(() => {
16193
16192
  const isDisabled = thisItem?.conditions?.some(({ status }) => status === OtherStatus.Disabled);
16194
16193
  const runtimeCondition = thisItem?.conditions?.find(({ type }) => type === 'RuntimeDetection');
16195
- const mappedContainers = thisItem?.containers?.map((container) => {
16194
+ const mappedContainers = (thisItem?.containers?.length ? thisItem.containers : thisItem?.containersOverrides)?.map((container) => {
16196
16195
  const value = {
16197
16196
  ...container,
16198
16197
  isDisabled,
@@ -16200,6 +16199,7 @@ const SourceDrawer = ({ persistSources, updateSource, fetchDescribeSource, resta
16200
16199
  return {
16201
16200
  type: DataCardFieldTypes.SourceContainer,
16202
16201
  value: JSON.stringify(value),
16202
+ callback: async (payload) => await updateSource(drawerEntityId, payload),
16203
16203
  };
16204
16204
  }) || [];
16205
16205
  return {
@@ -16207,7 +16207,7 @@ const SourceDrawer = ({ persistSources, updateSource, fetchDescribeSource, resta
16207
16207
  isLoading: runtimeCondition?.status === OtherStatus.Loading,
16208
16208
  items: mappedContainers,
16209
16209
  };
16210
- }, [thisItem]);
16210
+ }, [thisItem, drawerEntityId]);
16211
16211
  if (!thisItem)
16212
16212
  return null;
16213
16213
  const handleEdit = (bool) => {
@@ -33,6 +33,7 @@ export * from './is-emtpy';
33
33
  export * from './is-legal-k8s-label';
34
34
  export * from './is-over-time';
35
35
  export * from './is-time-elapsed';
36
+ export * from './is-valid-version';
36
37
  export * from './map-conditions';
37
38
  export * from './map-destination-fields-for-display';
38
39
  export * from './map-exported-signals';
@@ -0,0 +1 @@
1
+ export declare const isValidVersion: (version: string) => boolean;
package/lib/functions.js CHANGED
@@ -1,13 +1,13 @@
1
- export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getProgrammingLanguageIcon, b as getStatusIcon, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, d as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, e as splitCamelString } from './index-B1h5g0Hl.js';
2
- export { c as compareCondition, d as deepClone, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, e as filterSources, g as filterSourcesByStream, h as formatBytes, i as getConditionsBooleans, k as getContainersIcons, j as getContainersInstrumentedCount, l as getDestinationIcon, m as getEntityIcon, n as getEntityLabel, o as getMetricForEntity, p as getPlatformIcon, q as getPlatformLabel, r as getValueForRange, s as getWorkloadId, t as getYamlFieldsForDestination, u as isOverTime, v as mapDestinationFieldsForDisplay, w as sleep } from './index-BrriZrlp.js';
3
- export { l as getActionIcon, m as getEntityId, n as getInstrumentationRuleIcon } from './index-BdZq2vdJ.js';
1
+ export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getStatusIcon, i as isValidVersion, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, b as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, d as splitCamelString } from './index-BMkvXaM3.js';
2
+ export { c as compareCondition, d as deepClone, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, e as filterSources, g as filterSourcesByStream, h as formatBytes, i as getConditionsBooleans, k as getContainersIcons, j as getContainersInstrumentedCount, l as getDestinationIcon, m as getEntityIcon, n as getEntityLabel, o as getMetricForEntity, p as getPlatformIcon, q as getPlatformLabel, r as getValueForRange, s as getWorkloadId, t as getYamlFieldsForDestination, u as isOverTime, v as mapDestinationFieldsForDisplay, w as sleep } from './index-CN-rJ_ZV.js';
3
+ export { m as getActionIcon, n as getEntityId, o as getInstrumentationRuleIcon, p as getProgrammingLanguageIcon } from './index-BvZgTeSU.js';
4
4
  export { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-BlZKWuxe.js';
5
5
  import { EntityTypes } from './types.js';
6
6
  export { i as isEmpty, s as safeJsonParse } from './index-BV85P9UP.js';
7
7
  import 'react';
8
8
  import 'styled-components';
9
- import './index-BeVb1H9n.js';
10
- import './index-CBgnxpkW.js';
9
+ import './index-DtSbC1Cl.js';
10
+ import './index-CmGKwhgi.js';
11
11
 
12
12
  const cleanObjectEmptyStringsValues = (obj) => {
13
13
  const cleanArray = (arr) => arr.filter((item) => {
package/lib/hooks.js CHANGED
@@ -1,7 +1,7 @@
1
- export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDataStreamFormData, d as useDestinationFormData, e as useSessionStorage, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-CrtSxE3G.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-BumZECD3.js';
1
+ export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDataStreamFormData, d as useDestinationFormData, e as useSessionStorage, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-xhTNmN-P.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-BOwXSp5e.js';
3
3
  import './types.js';
4
- import './index-BdZq2vdJ.js';
4
+ import './index-BvZgTeSU.js';
5
5
  import 'react';
6
6
  import 'styled-components';
7
7
  import './index-BV85P9UP.js';
package/lib/icons.js CHANGED
@@ -1,11 +1,10 @@
1
- import { T as Theme } from './index-BdZq2vdJ.js';
2
- export { p as AddClusterInfoIcon, C as CodeAttributesIcon, q as DeleteAttributeIcon, H as HeadersCollectionIcon, o as ImageErrorIcon, K as K8sLogo, s as PayloadCollectionIcon, P as PiiMaskingIcon, R as RenameAttributeIcon, r as SamplerIcon } from './index-BdZq2vdJ.js';
3
- export { C as CPlusPlusLogo, d as CSharpLogo, i as CheckCircledIcon, D as DotnetLogo, E as ElixirLogo, h as ErrorTriangleIcon, G as GoLogo, I as InfoIcon, J as JavaLogo, K as KafkaLogo, L as LogsIcon, g as MetricsIcon, M as MysqlLogo, N as NginxLogo, f as NodejsLogo, O as OdigosLogo, c as PhpLogo, P as PostgresLogo, e as PythonLogo, R as RedisLogo, b as RubyLogo, a as RustLogo, S as SwiftLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-BeVb1H9n.js';
4
- export { C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RetryIcon, S as SlackLogo, T as TerminalIcon } from './index-zXCdgpRU.js';
5
- export { A as ArrowIcon, f as CheckIcon, C as CodeIcon, a as CopyIcon, g as CrossIcon, E as ExtendArrowIcon, d as EyeClosedIcon, e as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, b as NotebookIcon, P as PlusIcon, S as SearchIcon, c as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-Cau7bWmr.js';
1
+ import { T as Theme } from './index-BvZgTeSU.js';
2
+ export { q as AddClusterInfoIcon, x as CPlusPlusLogo, y as CSharpLogo, C as CodeAttributesIcon, r as DeleteAttributeIcon, z as DotnetLogo, E as ElixirLogo, G as GoLogo, H as HeadersCollectionIcon, t as ImageErrorIcon, J as JavaLogo, K as K8sLogo, v as KafkaLogo, N as MysqlLogo, O as NginxLogo, Q as NodejsLogo, w as PayloadCollectionIcon, U as PhpLogo, P as PiiMaskingIcon, V as PostgresLogo, W as PythonLogo, X as RedisLogo, R as RenameAttributeIcon, Y as RubyLogo, Z as RustLogo, s as SamplerIcon, _ as SwiftLogo } from './index-BvZgTeSU.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-DtSbC1Cl.js';
4
+ export { C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RetryIcon, S as SlackLogo, T as TerminalIcon } from './index-CQ2z02Y8.js';
5
+ export { A as ArrowIcon, g as CheckIcon, C as CodeIcon, a as CopyIcon, h as CrossIcon, E as EditIcon, b as ExtendArrowIcon, e as EyeClosedIcon, f as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, c as NotebookIcon, P as PlusIcon, S as SearchIcon, d as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-CS6xAoTK.js';
6
6
  import React from 'react';
7
- export { E as EditIcon } from './index-CDHYBh8C.js';
8
- 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-CBgnxpkW.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-CmGKwhgi.js';
9
8
  import './types.js';
10
9
  import 'styled-components';
11
10
 
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { _ as WarningModal } from './index-C-84NaCL.js';
2
+ import { _ as WarningModal } from './index-Biu8ddMV.js';
3
3
  import { StatusType, EntityTypes } from './types.js';
4
- import './index-BdZq2vdJ.js';
4
+ import './index-BvZgTeSU.js';
5
5
  import 'styled-components';
6
6
 
7
7
  const CancelWarning = ({ isOpen, noOverlay, name, onApprove, onDeny }) => {
@@ -1,8 +1,8 @@
1
- import { ProgrammingLanguages, SignalType, StatusType } from './types.js';
1
+ import { SignalType, StatusType } from './types.js';
2
2
  import 'react';
3
- import { o as ImageErrorIcon } from './index-BdZq2vdJ.js';
3
+ import './index-BvZgTeSU.js';
4
4
  import 'styled-components';
5
- 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-BeVb1H9n.js';
5
+ import { T as TracesIcon, M as MetricsIcon, L as LogsIcon, O as OdigosLogo, I as InfoIcon, W as WarningTriangleIcon, E as ErrorTriangleIcon, C as CheckCircledIcon } from './index-DtSbC1Cl.js';
6
6
 
7
7
  const capitalizeFirstLetter = (string) => {
8
8
  return string.charAt(0).toUpperCase() + string.slice(1);
@@ -70,34 +70,6 @@ const flattenObjectKeys = (obj, prefix = '', result = {}) => {
70
70
  return result;
71
71
  };
72
72
 
73
- const getProgrammingLanguageIcon = (language) => {
74
- const LOGOS = {
75
- [ProgrammingLanguages.Java]: JavaLogo,
76
- [ProgrammingLanguages.Go]: GoLogo,
77
- [ProgrammingLanguages.JavaScript]: NodejsLogo,
78
- [ProgrammingLanguages.Python]: PythonLogo,
79
- [ProgrammingLanguages.DotNet]: DotnetLogo,
80
- [ProgrammingLanguages.CSharp]: CSharpLogo,
81
- [ProgrammingLanguages.CPlusPlus]: CPlusPlusLogo,
82
- [ProgrammingLanguages.Php]: PhpLogo,
83
- [ProgrammingLanguages.Ruby]: RubyLogo,
84
- [ProgrammingLanguages.Rust]: RustLogo,
85
- [ProgrammingLanguages.Swift]: SwiftLogo,
86
- [ProgrammingLanguages.Elixir]: ElixirLogo,
87
- [ProgrammingLanguages.MySql]: MysqlLogo,
88
- [ProgrammingLanguages.Nginx]: NginxLogo,
89
- [ProgrammingLanguages.Postgres]: PostgresLogo,
90
- [ProgrammingLanguages.Redis]: RedisLogo,
91
- [ProgrammingLanguages.Kafka]: KafkaLogo,
92
- [ProgrammingLanguages.Ignored]: ImageErrorIcon, // TODO: good icon
93
- [ProgrammingLanguages.Unknown]: ImageErrorIcon, // TODO: good icon
94
- [ProgrammingLanguages.Processing]: ImageErrorIcon, // TODO: good icon
95
- [ProgrammingLanguages.NoContainers]: ImageErrorIcon, // TODO: good icon
96
- [ProgrammingLanguages.NoRunningPods]: ImageErrorIcon, // TODO: good icon
97
- };
98
- return LOGOS[language] || ImageErrorIcon;
99
- };
100
-
101
73
  const getMonitorIcon = (type) => {
102
74
  const LOGOS = {
103
75
  [SignalType.Logs]: LogsIcon,
@@ -118,6 +90,9 @@ const getStatusIcon = (type, theme) => {
118
90
  return LOGOS[type];
119
91
  };
120
92
 
93
+ const SEMVER_REGEX = /^(\d+\.)?(\d+\.)?(\*|\d+)$/;
94
+ const isValidVersion = (version) => SEMVER_REGEX.test(version);
95
+
121
96
  // Example: splitCamelString('LoremIpsumDolorSitAmet')
122
97
  // > 'Lorem Ipsum Dolor Sit Amet'
123
98
  const splitCamelString = (str) => {
@@ -217,4 +192,4 @@ const safeJsonStringify = (obj, indent = 2) => {
217
192
  return JSON.stringify(obj || {}, null, indent);
218
193
  };
219
194
 
220
- export { getProgrammingLanguageIcon as a, getStatusIcon as b, capitalizeFirstLetter as c, parseJsonStringToPrettyString as d, splitCamelString as e, flattenObjectKeys as f, getMonitorIcon as g, mapConditions as m, numbersOnly as n, parseBooleanFromString as p, removeEmptyValuesFromObject as r, safeJsonStringify as s };
195
+ export { getStatusIcon as a, parseJsonStringToPrettyString as b, capitalizeFirstLetter as c, splitCamelString as d, flattenObjectKeys as f, getMonitorIcon as g, isValidVersion as i, mapConditions as m, numbersOnly as n, parseBooleanFromString as p, removeEmptyValuesFromObject as r, safeJsonStringify as s };
@@ -1,13 +1,13 @@
1
1
  import React, { useState, useEffect, useRef, forwardRef, createElement, useCallback, useMemo, Fragment } from 'react';
2
- import { T as Theme, o as ImageErrorIcon, M as MONITORS_OPTIONS, B as BUTTON_TEXTS } from './index-BdZq2vdJ.js';
3
- import { StatusType, OtherStatus, SortDirection, ProgrammingLanguages, IntrumentationStatus, InputTypes, FieldTypes } from './types.js';
4
- 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, P as PlusIcon, T as TrashIcon, A as ArrowIcon } from './index-Cau7bWmr.js';
5
- import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, c as capitalizeFirstLetter, g as getMonitorIcon, d as parseJsonStringToPrettyString, a as getProgrammingLanguageIcon, e as splitCamelString, p as parseBooleanFromString, n as numbersOnly } from './index-B1h5g0Hl.js';
2
+ import { T as Theme, t as ImageErrorIcon, M as MONITORS_OPTIONS, g as useNotificationStore, L as LANGUAGE_OPTIONS, l as DISPLAY_TITLES, F as FORM_ALERTS, p as getProgrammingLanguageIcon, D as DISPLAY_LANGUAGES, B as BUTTON_TEXTS } from './index-BvZgTeSU.js';
3
+ import { StatusType, OtherStatus, ProgrammingLanguages, SortDirection, IntrumentationStatus, InputTypes, FieldTypes } from './types.js';
4
+ import { M as MinusIcon, g as CheckIcon, L as ListIcon, C as CodeIcon, b as ExtendArrowIcon, E as EditIcon, h as CrossIcon, d as SortArrowsIcon, a as CopyIcon, c as NotebookIcon, X as XIcon, e as EyeClosedIcon, f as EyeOpenIcon, N as NoDataIcon, S as SearchIcon, P as PlusIcon, T as TrashIcon, A as ArrowIcon } from './index-CS6xAoTK.js';
5
+ import { a as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, c as capitalizeFirstLetter, g as getMonitorIcon, i as isValidVersion, b as parseJsonStringToPrettyString, d as splitCamelString, p as parseBooleanFromString, n as numbersOnly } from './index-BMkvXaM3.js';
6
6
  import styled, { css } from 'styled-components';
7
7
  import { s as safeJsonParse, i as isEmpty } from './index-BV85P9UP.js';
8
- import { u as useContainerSize, a as useCopy, g as useTransition, d as useKeyDown, e as useOnClickOutside } from './useTransition-BumZECD3.js';
8
+ import { b as useGenericForm, e as useOnClickOutside, d as useKeyDown, u as useContainerSize, a as useCopy, g as useTransition } from './useTransition-BOwXSp5e.js';
9
9
  import ReactDOM from 'react-dom';
10
- import { I as InfoIcon } from './index-BeVb1H9n.js';
10
+ import { I as InfoIcon } from './index-DtSbC1Cl.js';
11
11
 
12
12
  const TextWrapper$2 = styled.div `
13
13
  color: ${({ $color, theme }) => $color || theme.text.secondary};
@@ -4336,7 +4336,7 @@ const DataTab = ({ title, subTitle, hoverText, onClick, renderActions, iconProps
4336
4336
  monitors && monitors.length > 0 && (React.createElement(FlexRow, { "$gap": 4, ref: monitorsRef },
4337
4337
  subTitle && React.createElement(SubText, null, "\u2022"),
4338
4338
  React.createElement(MonitorsIcons, { monitors: monitors, withLabels: monitorsWithLabels, size: 10 })))),
4339
- componentsUnderTitles && (React.createElement(FlexRow, { "$gap": 4 }, componentsUnderTitles?.map((component, i) => (React.createElement(Fragment, { key: `componentsUnderTitles-${i}` }, component)))))),
4339
+ componentsUnderTitles && componentsUnderTitles.length > 0 ? (React.createElement(FlexRow, { "$gap": 4 }, componentsUnderTitles?.map((component, i) => (React.createElement(Fragment, { key: `componentsUnderTitles-${i}` }, component))))) : null),
4340
4340
  React.createElement(ActionsWrapper, { ref: actionsRef },
4341
4341
  !!hoverText && (React.createElement(ControlledVisibility, null,
4342
4342
  React.createElement(HoverText, { size: 14, family: 'secondary' }, hoverText))),
@@ -4381,6 +4381,66 @@ const DescribeRow = ({ title, subTitle, tooltip, value }) => {
4381
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 || '-')))));
4382
4382
  };
4383
4383
 
4384
+ const Relative = styled.div `
4385
+ position: relative;
4386
+ `;
4387
+ const Form = styled(FlexColumn) `
4388
+ position: absolute;
4389
+ bottom: 32px;
4390
+ right: 0;
4391
+ z-index: 1;
4392
+ gap: 8px;
4393
+ padding: 24px;
4394
+ background-color: ${({ theme }) => theme.colors.info};
4395
+ border: 1px solid ${({ theme }) => theme.colors.border};
4396
+ border-radius: 24px;
4397
+ `;
4398
+ const PopoverFormWrapper = styled(FlexRow) `
4399
+ width: 100%;
4400
+ gap: 12px;
4401
+ `;
4402
+ const PopoverFormButton = styled(Button$4) `
4403
+ width: 36px;
4404
+ padding: 0;
4405
+ `;
4406
+ const OverrideRuntime = ({ defaultLanguage = ProgrammingLanguages.Unknown, defaultVersion = '', handleSave }) => {
4407
+ const theme = Theme.useTheme();
4408
+ const { addNotification } = useNotificationStore();
4409
+ const { formData, handleFormChange, resetFormData } = useGenericForm({ language: defaultLanguage, version: defaultVersion });
4410
+ const [isOpen, setIsOpen] = useState(false);
4411
+ const onOpen = () => {
4412
+ setIsOpen(true);
4413
+ };
4414
+ const onClose = () => {
4415
+ setIsOpen(false);
4416
+ resetFormData();
4417
+ };
4418
+ const onSave = () => {
4419
+ if (!isValidVersion(formData.version)) {
4420
+ addNotification({ type: StatusType.Warning, message: FORM_ALERTS.INVALID_VERSION, hideFromHistory: true });
4421
+ return;
4422
+ }
4423
+ handleSave(formData);
4424
+ onClose();
4425
+ };
4426
+ const popupRef = useRef(null);
4427
+ useOnClickOutside(popupRef, onClose);
4428
+ useKeyDown({ key: 'Enter', active: isOpen }, onSave);
4429
+ return (React.createElement(Relative, null,
4430
+ React.createElement(IconButton, { tooltip: 'Override Runtime Details', size: 32, onClick: onOpen },
4431
+ React.createElement(EditIcon, null)),
4432
+ isOpen && (React.createElement(Form, { ref: popupRef },
4433
+ React.createElement(Text, { size: 14, style: { lineHeight: '20px', display: 'flex' } }, "Override Runtime Details:"),
4434
+ React.createElement(PopoverFormWrapper, null,
4435
+ React.createElement(Dropdown, { title: DISPLAY_TITLES.LANGUAGE, options: LANGUAGE_OPTIONS, value: LANGUAGE_OPTIONS.find((opt) => opt.id === formData.language), onSelect: (opt) => handleFormChange('language', opt.id), required: true }),
4436
+ React.createElement(Input, { title: DISPLAY_TITLES.VERSION, placeholder: DISPLAY_TITLES.VERSION_PLACEHOLDER, value: formData.version, onChange: (e) => handleFormChange('version', e.target.value), required: true }),
4437
+ React.createElement(FlexRow, null,
4438
+ React.createElement(PopoverFormButton, { variant: 'secondary', onClick: onClose },
4439
+ React.createElement(CrossIcon, null)),
4440
+ React.createElement(PopoverFormButton, { variant: 'primary', onClick: onSave },
4441
+ React.createElement(CheckIcon, { fill: theme.text.primary }))))))));
4442
+ };
4443
+
4384
4444
  const Tr = styled.tr `
4385
4445
  cursor: ${({ $withHover }) => ($withHover ? 'pointer' : 'default')};
4386
4446
  opacity: ${({ $faded }) => ($faded ? 0.5 : 1)};
@@ -4579,7 +4639,7 @@ const CopyWrapper = styled(FlexRow) `
4579
4639
  }
4580
4640
  `;
4581
4641
  const DataCardFields = ({ data }) => {
4582
- return (React.createElement(ListContainer$3, null, data?.map(({ type, title, tooltip, value }, idx) => (React.createElement(ListItem, { key: `data-field-${title || (!!value ? JSON.stringify(value) : idx)}`, "$width": !!type && [DataCardFieldTypes.Code, DataCardFieldTypes.Table].includes(type)
4642
+ return (React.createElement(ListContainer$3, null, data?.map(({ type, title, tooltip, value, callback }, idx) => (React.createElement(ListItem, { key: `data-field-${title || (!!value ? JSON.stringify(value) : idx)}`, "$width": !!type && [DataCardFieldTypes.Code, DataCardFieldTypes.Table].includes(type)
4583
4643
  ? 'inherit'
4584
4644
  : !!type &&
4585
4645
  [
@@ -4593,10 +4653,10 @@ const DataCardFields = ({ data }) => {
4593
4653
  ? '100%'
4594
4654
  : 'unset' },
4595
4655
  React.createElement(Tooltip, { text: tooltip, withIcon: true }, !!title && React.createElement(ItemTitle, null, title)),
4596
- React.createElement(RenderValue, { type: type, value: value }))))));
4656
+ React.createElement(RenderValue, { type: type, value: value, callback: callback }))))));
4597
4657
  };
4598
4658
  // We need to maintain this with new components every time we add a new type to "DataCardFieldTypes"
4599
- const RenderValue = ({ type, value }) => {
4659
+ const RenderValue = ({ type, value, callback }) => {
4600
4660
  const theme = Theme.useTheme();
4601
4661
  const { clickCopy, isCopied } = useCopy();
4602
4662
  switch (type) {
@@ -4656,9 +4716,7 @@ const RenderValue = ({ type, value }) => {
4656
4716
  if (ready?.title) {
4657
4717
  componentsUnderTitles.push(React.createElement(Status, { status: parseBooleanFromString(ready.subTitle) ? StatusType.Success : StatusType.Error, title: ready.title, withIcon: true, withBorder: true, size: 8 }));
4658
4718
  }
4659
- return (React.createElement(DataTab, { title: containerName, subTitle: processes.length ? `${processes.length} Instrumented Processes` : undefined, visualProps: {
4660
- componentsUnderTitles: componentsUnderTitles.length ? componentsUnderTitles : undefined,
4661
- }, renderActions: () => {
4719
+ return (React.createElement(DataTab, { title: containerName, subTitle: processes.length ? `${processes.length} Instrumented Processes` : undefined, visualProps: { componentsUnderTitles }, renderActions: () => {
4662
4720
  return React.createElement(Status, { status: StatusType.Info, title: 'Instrumentation Device', subtitle: !actualDevice.subTitle || actualDevice.subTitle === '[]' ? 'none' : actualDevice.subTitle, withBorder: true });
4663
4721
  }, extendableProps: {
4664
4722
  isExtended: !!processes.length,
@@ -4691,11 +4749,13 @@ const RenderValue = ({ type, value }) => {
4691
4749
  : awaitingInstrumentation
4692
4750
  ? `${IntrumentationStatus.INSTRUMENTING}...`
4693
4751
  : IntrumentationStatus.UNINSTRUMENTED;
4694
- return (React.createElement(DataTab, { title: containerName, subTitle: `${language === ProgrammingLanguages.JavaScript ? 'Node.js' : capitalizeFirstLetter(language)}` + (runtimeVersion ? ` • Runtime Version: ${runtimeVersion}` : ''), iconProps: { icon: getProgrammingLanguageIcon(language) }, extendableProps: {
4752
+ return (React.createElement(DataTab, { title: containerName, subTitle: `${DISPLAY_LANGUAGES[language]}` + (runtimeVersion ? ` • Runtime Version: ${runtimeVersion}` : ''), iconProps: { icon: getProgrammingLanguageIcon(language) }, extendableProps: {
4695
4753
  isExtended: !!instrumentationMessage,
4696
4754
  renderExtended: () => (React.createElement(AlignCenter, null,
4697
4755
  React.createElement(Status, { status: StatusType.Info, title: splitCamelString(instrumentationMessage) }))),
4698
- }, renderActions: () => React.createElement(Status, { status: statusType, title: statusTitle, subtitle: otelDistroName, withIcon: true, withBorder: true }) }));
4756
+ }, renderActions: () => (React.createElement(React.Fragment, null,
4757
+ React.createElement(Status, { status: statusType, title: statusTitle, subtitle: otelDistroName, withIcon: true, withBorder: true }),
4758
+ callback && React.createElement(OverrideRuntime, { defaultLanguage: language, defaultVersion: runtimeVersion, handleSave: (payload) => callback({ ...payload, containerName }) }))) }));
4699
4759
  }
4700
4760
  default: {
4701
4761
  return React.createElement(PreWrap, null, parseJsonStringToPrettyString(typeof value === 'string' ? value || '-' : ''));
@@ -5237,7 +5297,9 @@ const DropdownListItem = ({ option, value, isMulti, onSelect, onDeselect }) => {
5237
5297
  React.createElement(Checkbox, { title: option.value || '', titleColor: theme.text.secondary, value: isSelected, onChange: handleChange, style: { width: '100%' } })));
5238
5298
  }
5239
5299
  return (React.createElement(DropdownItem, { className: isSelected ? 'selected' : '', onClick: () => (isSelected ? onDeselect?.(option) : onSelect?.(option)) },
5240
- React.createElement(Text, { size: 14 }, option.value),
5300
+ React.createElement(FlexRow, { "$gap": 8 },
5301
+ option.icon && React.createElement(option.icon, null),
5302
+ React.createElement(Text, { size: 14 }, option.value)),
5241
5303
  isSelected && React.createElement(CheckIcon, null)));
5242
5304
  };
5243
5305