@odigos/ui-kit 0.0.62 → 0.0.64

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 (40) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/lib/components/key-value-input-list/index.d.ts +2 -0
  3. package/lib/components/toggle/index.d.ts +1 -1
  4. package/lib/components.js +10 -10
  5. package/lib/constants.js +1 -1
  6. package/lib/containers/system-settings/index.d.ts +8 -0
  7. package/lib/containers/system-settings/settings/collector-gateway-settings.d.ts +4 -0
  8. package/lib/containers/system-settings/settings/collector-node-settings.d.ts +4 -0
  9. package/lib/containers/system-settings/settings/options.d.ts +7 -0
  10. package/lib/containers/system-settings/settings/other-settings.d.ts +4 -0
  11. package/lib/containers/system-settings/settings/styled.d.ts +2 -0
  12. package/lib/containers/system-settings/settings/types.d.ts +5 -0
  13. package/lib/containers/system-settings/settings/ui-settings.d.ts +4 -0
  14. package/lib/containers/system-settings/settings/user-instrumnetation-envs-settings.d.ts +4 -0
  15. package/lib/containers.js +15 -13
  16. package/lib/functions.js +6 -6
  17. package/lib/hooks.js +4 -4
  18. package/lib/icons/common/gear-icon/index.d.ts +2 -0
  19. package/lib/icons/common/index.d.ts +1 -0
  20. package/lib/icons.js +15 -7
  21. package/lib/{index-61caa474.js → index-13d8ebb2.js} +71 -75
  22. package/lib/{index-58440c5c.js → index-23b2865d.js} +2 -2
  23. package/lib/{index-50101bec.js → index-4e685db0.js} +1 -1
  24. package/lib/{index-eb03f43f.js → index-53f817d1.js} +2 -2
  25. package/lib/{index-ec555530.js → index-5e5f7bda.js} +6 -1
  26. package/lib/{index-bd48e6e2.js → index-8dad36e5.js} +1 -1
  27. package/lib/{index-1fcb0269.js → index-b44c0701.js} +2 -9
  28. package/lib/{index-9e56485b.js → index-cfdd4195.js} +5 -10
  29. package/lib/{index-56ab40b8.js → index-d78c60e1.js} +9 -2
  30. package/lib/{index-acc7c7dd.js → index-ff8fcc81.js} +2 -2
  31. package/lib/mock-data/config/index.d.ts +2 -0
  32. package/lib/mock-data/index.d.ts +1 -0
  33. package/lib/snippets.js +8 -8
  34. package/lib/store.js +1 -1
  35. package/lib/theme.js +1 -1
  36. package/lib/types/config/index.d.ts +89 -0
  37. package/lib/types/index.d.ts +1 -0
  38. package/lib/types.js +43 -1
  39. package/lib/{useTransition-750816e0.js → useTransition-985cc4a8.js} +23 -10
  40. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.64](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.63...ui-kit-v0.0.64) (2025-07-21)
4
+
5
+
6
+ ### Features
7
+
8
+ * add drawer for "system settings" ([#261](https://github.com/odigos-io/ui-kit/issues/261)) ([cd3eb2e](https://github.com/odigos-io/ui-kit/commit/cd3eb2e986ffdf4796c4d98423405cfa7f1bfc2c))
9
+
10
+ ## [0.0.63](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.62...ui-kit-v0.0.63) (2025-07-21)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * temporary remove `CustomInstrumentation` rule option ([#259](https://github.com/odigos-io/ui-kit/issues/259)) ([0fda043](https://github.com/odigos-io/ui-kit/commit/0fda043bed655b20aefd5da43e80c46114fafb5f))
16
+
3
17
  ## [0.0.62](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.61...ui-kit-v0.0.62) (2025-07-20)
4
18
 
5
19
 
@@ -9,10 +9,12 @@ interface KeyValueInputsListProps {
9
9
  onChange?: (validKeyValuePairs: Row[]) => void;
10
10
  title?: string;
11
11
  tooltip?: string;
12
+ disabled?: boolean;
12
13
  required?: boolean;
13
14
  errorMessage?: string;
14
15
  keyPlaceholder?: string;
15
16
  valuePlaceholder?: string;
17
+ inputMaxWidth?: number;
16
18
  }
17
19
  declare const KeyValueInputsList: FC<KeyValueInputsListProps>;
18
20
  export { KeyValueInputsList, type KeyValueInputsListProps };
@@ -1,6 +1,6 @@
1
1
  import { type FC } from 'react';
2
2
  interface ToggleProps {
3
- title: string;
3
+ title?: string;
4
4
  tooltip?: string;
5
5
  initialValue?: boolean;
6
6
  onChange?: (value: boolean) => void;
package/lib/components.js CHANGED
@@ -1,16 +1,16 @@
1
- import { B as Button } from './index-61caa474.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-61caa474.js';
3
- export { C as CancelWarning, D as DeleteWarning } from './index-eb03f43f.js';
1
+ import { B as Button } from './index-13d8ebb2.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-13d8ebb2.js';
3
+ export { C as CancelWarning, D as DeleteWarning } from './index-53f817d1.js';
4
4
  import React, { createContext, Component, createElement } from 'react';
5
- import { T as Theme } from './index-bd48e6e2.js';
6
- import './types.js';
7
- import './index-1fcb0269.js';
8
- import './index-58440c5c.js';
5
+ import { T as Theme } from './index-8dad36e5.js';
9
6
  import 'styled-components';
10
- import './index-50101bec.js';
11
- import './index-ec555530.js';
7
+ import './index-b44c0701.js';
8
+ import './types.js';
9
+ import './index-5e5f7bda.js';
10
+ import './index-23b2865d.js';
11
+ import './index-4e685db0.js';
12
12
  import 'react-dom';
13
- import './useTransition-750816e0.js';
13
+ import './useTransition-985cc4a8.js';
14
14
 
15
15
  const ErrorBoundaryContext = createContext(null);
16
16
 
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-bd48e6e2.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-8dad36e5.js';
2
2
  export { D as DESTINATION_CATEGORIES } from './index-1cb4f9e2.js';
3
3
  import 'react';
4
4
  import './types.js';
@@ -0,0 +1,8 @@
1
+ import { type FC } from 'react';
2
+ import type { OdigosConfig } from '@/types';
3
+ interface SystemSettingsProps {
4
+ settings: OdigosConfig;
5
+ onSave: (payload: OdigosConfig) => void;
6
+ }
7
+ declare const SystemSettings: FC<SystemSettingsProps>;
8
+ export { SystemSettings, type SystemSettingsProps };
@@ -0,0 +1,4 @@
1
+ import { type FC } from 'react';
2
+ import type { SettingsProps } from './types';
3
+ declare const CollectorGatewaySettings: FC<SettingsProps>;
4
+ export { CollectorGatewaySettings };
@@ -0,0 +1,4 @@
1
+ import { type FC } from 'react';
2
+ import type { SettingsProps } from './types';
3
+ declare const CollectorNodeSettings: FC<SettingsProps>;
4
+ export { CollectorNodeSettings };
@@ -0,0 +1,7 @@
1
+ import type { DropdownOption } from '@/components';
2
+ import { AgentEnvVarsInjectionMethod, MountMethod, Profile, ProgrammingLanguages, UiMode } from '@/types';
3
+ export declare const UI_MODE_OPTIONS: DropdownOption<UiMode>[];
4
+ export declare const INSTRUMENTATION_LANG_OPTIONS: DropdownOption<ProgrammingLanguages>[];
5
+ export declare const MOUNT_METHOD_OPTIONS: DropdownOption<MountMethod>[];
6
+ export declare const AGENT_ENV_VARS_INJECTION_METHOD_OPTIONS: DropdownOption<AgentEnvVarsInjectionMethod>[];
7
+ export declare const PROFILE_OPTIONS: DropdownOption<Profile>[];
@@ -0,0 +1,4 @@
1
+ import { type FC } from 'react';
2
+ import type { SettingsProps } from './types';
3
+ declare const OtherSettings: FC<SettingsProps>;
4
+ export { OtherSettings };
@@ -0,0 +1,2 @@
1
+ export declare const Card: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
2
+ export declare const CardTitle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("@/components").TextProps, never>> & string & Omit<import("react").FC<import("@/components").TextProps>, keyof import("react").Component<any, {}, any>>;
@@ -0,0 +1,5 @@
1
+ import type { OdigosConfig } from '@/types';
2
+ export interface SettingsProps {
3
+ formData: OdigosConfig;
4
+ handleFormChange: (key: keyof OdigosConfig | string, value: any) => void;
5
+ }
@@ -0,0 +1,4 @@
1
+ import { type FC } from 'react';
2
+ import type { SettingsProps } from './types';
3
+ declare const UiSettings: FC<SettingsProps>;
4
+ export { UiSettings };
@@ -0,0 +1,4 @@
1
+ import { type FC } from 'react';
2
+ import type { SettingsProps } from './types';
3
+ declare const UserInstrumentationEnvsSettings: FC<SettingsProps>;
4
+ export { UserInstrumentationEnvsSettings };
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-bd48e6e2.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, k as ImageErrorIcon, a0 as useDarkMode } from './index-8dad36e5.js';
4
4
  import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, EdgeTypes, AddNodeTypes, SignalType, HeadersCollectionKeyTypes, CustomInstrumentationsKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType, K8sResourceKind } from './types.js';
5
- import { 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-61caa474.js';
6
- import { i as isEmpty, s as safeJsonParse } from './index-ec555530.js';
7
- import { C as CheckCircledIcon, O as OdigosLogo } from './index-50101bec.js';
8
- import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-56ab40b8.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-13d8ebb2.js';
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-4e685db0.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 } from './index-d78c60e1.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-750816e0.js';
11
- import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, A as ArrowIcon, P as PlusIcon, a as CopyIcon } from './index-1fcb0269.js';
12
- import { D as DeleteWarning, C as CancelWarning } from './index-eb03f43f.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-58440c5c.js';
14
- import { f as filterActions, m as getEntityLabel, l as getEntityIcon, w as sleep, o as getPlatformIcon, p as getPlatformLabel, h as formatBytes, j as getContainersIcons, q as getValueForRange, k as getDestinationIcon, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, v as mapDestinationFieldsForDisplay, c as compareCondition, s as getYamlFieldsForDestination, d as deepClone, n as getMetricForEntity, r as getWorkloadId, t as hasUnhealthyInstances, i as getContainersInstrumentedCount, u as isOverTime } from './index-9e56485b.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-985cc4a8.js';
11
+ import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, P as PlusIcon, a as CopyIcon } from './index-b44c0701.js';
12
+ import { D as DeleteWarning, C as CancelWarning } from './index-53f817d1.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-23b2865d.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-cfdd4195.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-acc7c7dd.js';
18
+ import { a6 as RulesIcon, a3 as SourcesIcon, a5 as ActionsIcon, a4 as DestinationsIcon } from './index-ff8fcc81.js';
19
19
  import 'react-dom';
20
20
 
21
21
  const buildCard$3 = (action) => {
@@ -3394,6 +3394,8 @@ const GapAndMargin = styled(FlexColumn) `
3394
3394
  margin-top: 24px;
3395
3395
  gap: 12px;
3396
3396
  `;
3397
+ // temporary until we support 'custom instrumentation' again
3398
+ const filteredOptions = INSTRUMENTATION_RULE_OPTIONS.filter(({ type }) => type !== InstrumentationRuleType.CustomInstrumentation);
3397
3399
  const InstrumentationRuleModal = ({ isEnterprise, createInstrumentationRule }) => {
3398
3400
  const { currentModal, setCurrentModal } = useModalStore();
3399
3401
  const isOpen = currentModal === EntityTypes.InstrumentationRule;
@@ -3429,7 +3431,7 @@ const InstrumentationRuleModal = ({ isEnterprise, createInstrumentationRule }) =
3429
3431
  React.createElement(SectionTitle, { title: 'Select Instrumentation Rule', description: 'Define how telemetry is recorded from your application. Choose a rule type and configure the details.' }),
3430
3432
  React.createElement(GapAndMargin, null,
3431
3433
  !isEnterprise ? (React.createElement(NotificationNote, { type: StatusType.Default, message: FORM_ALERTS.ENTERPRISE_ONLY(DISPLAY_TITLES.INSTRUMENTATION_RULES) })) : (React.createElement(NotificationNote, { type: StatusType.Warning, message: FORM_ALERTS.DEFINED_FOR_ALL_STREAMS(DISPLAY_TITLES.INSTRUMENTATION_RULES) })),
3432
- React.createElement(AutocompleteInput, { options: INSTRUMENTATION_RULE_OPTIONS, selectedOption: selectedItem, onOptionSelect: (opt) => handleSelect(opt), autoFocus: !selectedItem?.type })),
3434
+ React.createElement(AutocompleteInput, { options: filteredOptions, selectedOption: selectedItem, onOptionSelect: (opt) => handleSelect(opt), autoFocus: !selectedItem?.type })),
3433
3435
  !!selectedItem?.type ? (React.createElement("div", null,
3434
3436
  React.createElement(Divider, { margin: '16px 0' }),
3435
3437
  React.createElement(InstrumentationRuleForm, { rule: selectedItem, formData: formData, formErrors: formErrors, handleFormChange: handleFormChange }))) : null)));
@@ -4708,7 +4710,7 @@ const SystemOverview = ({ tokens, saveToken, fetchDescribeOdigos }) => {
4708
4710
  const [isOpen, setIsOpen] = useState(false);
4709
4711
  const toggleOpen = () => setIsOpen((prev) => !prev);
4710
4712
  return (React.createElement(React.Fragment, null,
4711
- React.createElement(IconButton, { key: 'cli', onClick: toggleOpen, tooltip: TITLE_TEXT },
4713
+ React.createElement(IconButton, { key: TITLE_TEXT, onClick: toggleOpen, tooltip: TITLE_TEXT },
4712
4714
  React.createElement(TerminalIcon, { size: 18 })),
4713
4715
  React.createElement(Drawer, { width: DRAWER_WIDTH, isOpen: isOpen, onClose: toggleOpen, header: {
4714
4716
  icons: [TerminalIcon],
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-58440c5c.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, j as getContainersIcons, i as getContainersInstrumentedCount, k as getDestinationIcon, l as getEntityIcon, m as getEntityLabel, n as getMetricForEntity, o as getPlatformIcon, p as getPlatformLabel, q as getValueForRange, r as getWorkloadId, s as getYamlFieldsForDestination, t as hasUnhealthyInstances, u as isOverTime, v as mapDestinationFieldsForDisplay, w as sleep } from './index-9e56485b.js';
3
- export { g as getActionIcon, c as getEntityId, d as getInstrumentationRuleIcon, e as getProgrammingLanguageIcon } from './index-bd48e6e2.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-23b2865d.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-cfdd4195.js';
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-8dad36e5.js';
4
5
  export { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
5
6
  import { ProgrammingLanguages, EntityTypes } from './types.js';
6
- export { i as isEmpty, s as safeJsonParse } from './index-ec555530.js';
7
7
  import 'react';
8
8
  import 'styled-components';
9
- import './index-50101bec.js';
10
- import './index-acc7c7dd.js';
9
+ import './index-4e685db0.js';
10
+ import './index-ff8fcc81.js';
11
11
 
12
12
  const cleanObjectEmptyStringsValues = (obj) => {
13
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
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-bd48e6e2.js';
2
+ import { V as useNotificationStore, F as FORM_ALERTS, O as useDrawerStore, W as useEntityStore, Y as useDataStreamStore, _ as useSetupStore } from './index-8dad36e5.js';
3
3
  import { useState, useEffect, useMemo } from 'react';
4
4
  import 'styled-components';
5
- import { i as isEmpty, s as safeJsonParse } from './index-ec555530.js';
6
- import { i as useGenericForm } from './useTransition-750816e0.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-750816e0.js';
5
+ import { i as isEmpty, s as safeJsonParse } from './index-5e5f7bda.js';
6
+ import { i as useGenericForm } from './useTransition-985cc4a8.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-985cc4a8.js';
8
8
  import { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
9
9
 
10
10
  const INITIAL$2 = {
@@ -0,0 +1,2 @@
1
+ import type { SVG } from '@/types';
2
+ export declare const GearIcon: SVG;
@@ -9,6 +9,7 @@ export * from './edited-icon';
9
9
  export * from './extend-arrow-icon';
10
10
  export * from './filter-icon';
11
11
  export * from './folder-icon';
12
+ export * from './gear-icon';
12
13
  export * from './image-error-icon';
13
14
  export * from './key-icon';
14
15
  export * from './list-icon';
package/lib/icons.js CHANGED
@@ -1,10 +1,10 @@
1
- import { T as Theme } from './index-bd48e6e2.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-bd48e6e2.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-50101bec.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 RefreshLeftArrowIcon, S as SlackLogo, T as TerminalIcon, U as UserIcon } from './index-56ab40b8.js';
5
- export { A as ArrowIcon, 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-1fcb0269.js';
1
+ import { T as Theme } from './index-8dad36e5.js';
2
+ export { h as AddClusterInfoIcon, n as CPlusPlusLogo, o as CSharpLogo, C as CodeAttributesIcon, l as CustomInstrumentationIcon, i as DeleteAttributeIcon, p as DotnetLogo, E as ElixirLogo, G as GoLogo, H as HeadersCollectionIcon, k as ImageErrorIcon, J as JavaLogo, f 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, j as SamplerIcon, y as SwiftLogo } from './index-8dad36e5.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-4e685db0.js';
4
+ export { A as ArrowIcon, C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, 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-d78c60e1.js';
6
5
  import React from 'react';
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-acc7c7dd.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-b44c0701.js';
7
+ export { a5 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, i as AwsCloudwatchLogo, S as AwsS3Logo, a1 as AwsXrayLogo, c as AxiomLogo, d as BetterStackLogo, B as BlobStorageLogo, e as BonreeLogo, C as CauselyLogo, f as ChecklyLogo, g as ChronosphereLogo, h as ClickhouseLogo, j as CoralogixLogo, D as Dash0Logo, k as DatadogLogo, a4 as DestinationsIcon, l as DynatraceLogo, E as ElasticApmLogo, m as ElasticSearchLogo, F as GigapipeLogo, G as GoogleCloudPlatformLogo, n as GrafanaLogo, o as GreptimeLogo, p as GroundcoverLogo, H as HoneycombLogo, q as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, r as LightstepLogo, s as LogzioLogo, t as LokiLogo, u as LumigoLogo, M as MiddlewareLogo, a2 as NamespacesIcon, N as NewRelicLogo, v as ObserveLogo, w as OneUptimeLogo, x as OpenObserveLogo, O as OpenTelemetryLogo, y as OpsVerseLogo, z as OracleLogo, P as PrometheusLogo, Q as QrynLogo, R as QuickwitLogo, a6 as RulesIcon, T as SeqLogo, U as SignozLogo, a3 as SourcesIcon, V as SplunkLogo, W as SumoLogicLogo, X as TelemetryHubLogo, Y as TempoLogo, Z as TingyunLogo, _ as TraceloopLogo, $ as UptraceLogo, a0 as VictoriaMetricsLogo, a7 as VmLogo } from './index-ff8fcc81.js';
8
8
  import './types.js';
9
9
  import 'styled-components';
10
10
 
@@ -36,6 +36,14 @@ const FolderIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }
36
36
  React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M1.5 7.96504C1.5 6.28488 1.5 5.4448 1.82698 4.80307C2.1146 4.23858 2.57354 3.77964 3.13803 3.49202C3.77976 3.16504 4.61984 3.16504 6.3 3.16504H6.53667C6.88887 3.16504 7.06498 3.16504 7.22483 3.21358C7.36634 3.25656 7.49799 3.32702 7.61225 3.42093C7.74131 3.527 7.83899 3.67353 8.03436 3.96658L8.46564 4.6135C8.66101 4.90655 8.75869 5.05308 8.88775 5.15915C9.00201 5.25306 9.13366 5.32352 9.27517 5.36649C9.43502 5.41504 9.61113 5.41504 9.96333 5.41504H11.7C13.3802 5.41504 14.2202 5.41504 14.862 5.74202C15.4265 6.02964 15.8854 6.48858 16.173 7.05307C16.5 7.6948 16.5 8.53488 16.5 10.215V11.865C16.5 13.5452 16.5 14.3853 16.173 15.027C15.8854 15.5915 15.4265 16.0504 14.862 16.3381C14.2202 16.665 13.3802 16.665 11.7 16.665H6.3C4.61984 16.665 3.77976 16.665 3.13803 16.3381C2.57354 16.0504 2.1146 15.5915 1.82698 15.027C1.5 14.3853 1.5 13.5452 1.5 11.865V7.96504Z' })));
37
37
  };
38
38
 
39
+ const GearIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
40
+ const theme = Theme.useTheme();
41
+ const fill = f || theme.text.secondary;
42
+ return (React.createElement("svg", { width: size, height: size, viewBox: '0 0 24 24', xmlns: 'http://www.w3.org/2000/svg', fill: 'none', style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
43
+ React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M10.3982 4.27916C10.7851 2.57361 13.2149 2.57361 13.6018 4.27916L13.6531 4.50528C13.9038 5.61045 15.1719 6.13573 16.1306 5.53151L16.3268 5.40789C17.8064 4.47545 19.5246 6.19363 18.5921 7.6732L18.4685 7.86935C17.8643 8.82809 18.3895 10.0962 19.4947 10.3469L19.7208 10.3982C21.4264 10.7851 21.4264 13.2149 19.7208 13.6018L19.4947 13.6531C18.3895 13.9038 17.8643 15.1719 18.4685 16.1306L18.5921 16.3268C19.5246 17.8064 17.8064 19.5246 16.3268 18.5921L16.1306 18.4685C15.1719 17.8643 13.9038 18.3895 13.6531 19.4947L13.6018 19.7208C13.2149 21.4264 10.7851 21.4264 10.3982 19.7208L10.3469 19.4947C10.0962 18.3895 8.82809 17.8643 7.86935 18.4685L7.6732 18.5921C6.19363 19.5246 4.47545 17.8064 5.40789 16.3268L5.53151 16.1306C6.13573 15.1719 5.61045 13.9038 4.50528 13.6531L4.27916 13.6018C2.57361 13.2149 2.57361 10.7851 4.27916 10.3982L4.50528 10.3469C5.61045 10.0962 6.13573 8.82809 5.53151 7.86935L5.40789 7.6732C4.47544 6.19363 6.19363 4.47545 7.6732 5.40789L7.86935 5.53151C8.82809 6.13573 10.0962 5.61045 10.3469 4.50528L10.3982 4.27916Z' }),
44
+ React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M10.9909 12C10.9909 11.4477 11.4478 11 12 11C12.5523 11 13.0092 11.4477 13.0092 12C13.0092 12.5523 12.5523 13 12 13C11.4478 13 10.9909 12.5523 10.9909 12Z' })));
45
+ };
46
+
39
47
  const RefreshArrowsIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
40
48
  const theme = Theme.useTheme();
41
49
  const fill = f || theme.text.secondary;
@@ -167,4 +175,4 @@ const ErrorRoundIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth =
167
175
  React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M7 8.33673V6.00339M7 10.3055V10.3061M12.25 7.97266C12.25 10.8722 9.89949 13.2227 7 13.2227C4.1005 13.2227 1.75 10.8721 1.75 7.97265C1.75 5.07316 4.10051 2.72266 7 2.72266C9.8995 2.72266 12.25 5.07316 12.25 7.97266Z' })));
168
176
  };
169
177
 
170
- export { AvatarIcon, CodeBracketsIcon, CommandIcon, ConnectionsIcon, ErrorRoundIcon, FolderIcon, GoogleCloudStorageLogo, LightOffIcon, LightOnIcon, MinusCircledIcon, MoonIcon, PlusCircledIcon, RefreshArrowsIcon, RefreshRightArrowIcon, RotateArrowsIcon, SentryLogo, ServiceMapIcon, SunIcon, TraceViewIcon, UserGroupIcon, UserSettingsIcon };
178
+ export { AvatarIcon, CodeBracketsIcon, CommandIcon, ConnectionsIcon, ErrorRoundIcon, FolderIcon, GearIcon, GoogleCloudStorageLogo, LightOffIcon, LightOnIcon, MinusCircledIcon, MoonIcon, PlusCircledIcon, RefreshArrowsIcon, RefreshRightArrowIcon, RotateArrowsIcon, SentryLogo, ServiceMapIcon, SunIcon, TraceViewIcon, UserGroupIcon, UserSettingsIcon };
@@ -1,13 +1,13 @@
1
1
  import React, { useState, useEffect, useRef, forwardRef, useMemo, createElement, useCallback, Fragment, 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-bd48e6e2.js';
3
- import { StatusType, OtherStatus, EntityTypes, NodeTypes, AddNodeTypes, EdgeTypes, ProgrammingLanguages, IntrumentationStatus, SortDirection, InputTypes, FieldTypes } from './types.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, A as ArrowIcon } from './index-1fcb0269.js';
5
- 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-58440c5c.js';
2
+ import { T as Theme, B as BUTTON_TEXTS, k 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-8dad36e5.js';
6
3
  import styled, { css } from 'styled-components';
7
- import { s as safeJsonParse, i as isEmpty } from './index-ec555530.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-b44c0701.js';
5
+ import { StatusType, OtherStatus, EntityTypes, NodeTypes, AddNodeTypes, EdgeTypes, ProgrammingLanguages, IntrumentationStatus, SortDirection, InputTypes, FieldTypes } from './types.js';
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-23b2865d.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-750816e0.js';
10
- import { I as InfoIcon } from './index-50101bec.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-985cc4a8.js';
10
+ import { I as InfoIcon } from './index-4e685db0.js';
11
11
 
12
12
  const TextWrapper$2 = styled.div `
13
13
  color: ${({ $color, theme }) => $color || theme.text.secondary};
@@ -39,7 +39,7 @@ const AutocompleteContainer = styled.div `
39
39
  position: relative;
40
40
  width: 100%;
41
41
  `;
42
- const InputWrapper$2 = styled.div `
42
+ const InputWrapper$3 = styled.div `
43
43
  width: calc(100% - 16px);
44
44
  display: flex;
45
45
  align-items: center;
@@ -187,7 +187,7 @@ const AutocompleteInput = ({ placeholder = 'Type to search...', options, selecte
187
187
  return;
188
188
  };
189
189
  return (React.createElement(AutocompleteContainer, { style: style },
190
- React.createElement(InputWrapper$2, { "$hasError": !!errorMessage },
190
+ React.createElement(InputWrapper$3, { "$hasError": !!errorMessage },
191
191
  Icon && React.createElement(Icon, null),
192
192
  React.createElement(StyledInput$1, { type: 'text', value: query, placeholder: placeholder, onChange: handleChange, onKeyDown: handleKeyDown, disabled: disabled, onBlur: () => !disabled && setShowOptions(false), onFocus: () => !disabled && setShowOptions(true), ...props })),
193
193
  showOptions && filteredOptions.length ? (React.createElement(OptionsList, null, filteredOptions.map((option) => (React.createElement(OptionItem, { key: option.type || option.label, option: option, onClick: handleOptionClick }))))) : null,
@@ -17391,7 +17391,7 @@ const Title$6 = styled(Text) `
17391
17391
  white-space: nowrap;
17392
17392
  text-overflow: ellipsis;
17393
17393
  `;
17394
- const ActionButton$1 = styled(Button$4) `
17394
+ const ActionButton$3 = styled(Button$4) `
17395
17395
  gap: 8px;
17396
17396
  `;
17397
17397
  const CloseButton = styled(Button$4) ``;
@@ -17412,7 +17412,7 @@ const DrawerHeader = ({ onClose, icons, iconSrcs, title, titleTooltip, replaceTi
17412
17412
  renderReplaceTitleWith() || (React.createElement(Tooltip, { text: titleTooltip, withIcon: true }, title && React.createElement(Title$6, null, title)))),
17413
17413
  React.createElement(SectionItemsWrapper, { "$gap": 2 },
17414
17414
  actions,
17415
- actionButtons.map((btn, i) => (React.createElement(ActionButton$1, { key: `header-action-button-${i}`, ...btn }))),
17415
+ actionButtons.map((btn, i) => (React.createElement(ActionButton$3, { key: `header-action-button-${i}`, ...btn }))),
17416
17416
  React.createElement(CloseButton, { "data-id": 'drawer-close', variant: 'secondary', onClick: onClose },
17417
17417
  React.createElement(XIcon, { size: 12 })))),
17418
17418
  React.createElement(TabList, { tabs: tabs, hideBorder: true })));
@@ -17529,7 +17529,7 @@ const Container$g = styled.div `
17529
17529
  position: relative;
17530
17530
  width: 100%;
17531
17531
  `;
17532
- const InputWrapper$1 = styled.div `
17532
+ const InputWrapper$2 = styled.div `
17533
17533
  width: 100%;
17534
17534
  display: flex;
17535
17535
  align-items: center;
@@ -17540,7 +17540,6 @@ const InputWrapper$1 = styled.div `
17540
17540
  border: 1px solid ${({ theme }) => theme.colors.border};
17541
17541
  ${({ $disabled }) => $disabled &&
17542
17542
  css `
17543
- background-color: ${({ theme }) => theme.colors.border};
17544
17543
  cursor: not-allowed;
17545
17544
  opacity: 0.6;
17546
17545
  `}
@@ -17562,6 +17561,8 @@ const InputWrapper$1 = styled.div `
17562
17561
  const StyledInput = styled.input `
17563
17562
  padding-left: ${({ $hasIcon }) => ($hasIcon ? '0' : '16px')};
17564
17563
  flex: 1;
17564
+ min-width: 150px;
17565
+ width: 100%;
17565
17566
  border: none;
17566
17567
  outline: none;
17567
17568
  background: none;
@@ -17578,8 +17579,8 @@ const StyledInput = styled.input `
17578
17579
  line-height: 22px; /* 157.143% */
17579
17580
  }
17580
17581
  &:disabled {
17581
- background-color: ${({ theme }) => theme.colors.border};
17582
17582
  cursor: not-allowed;
17583
+ opacity: 0.6;
17583
17584
  }
17584
17585
  &::-webkit-inner-spin-button,
17585
17586
  &::-webkit-outer-spin-button {
@@ -17628,7 +17629,7 @@ const Input = ({ icon: Icon, buttonLabel, onButtonClick, hasError, errorMessage,
17628
17629
  };
17629
17630
  return (React.createElement(Container$g, null,
17630
17631
  React.createElement(FieldLabel, { title: title, required: required, tooltip: tooltip }),
17631
- React.createElement(InputWrapper$1, { "$disabled": props.disabled, "$hasError": hasError || !!errorMessage, "$isActive": !!props.autoFocus },
17632
+ React.createElement(InputWrapper$2, { "$disabled": props.disabled, "$hasError": hasError || !!errorMessage, "$isActive": !!props.autoFocus },
17632
17633
  isSecret ? (React.createElement(IconWrapperClickable, { onClick: () => setRevealSecret((prev) => !prev) }, revealSecret ? React.createElement(EyeClosedIcon, { size: 14, fill: theme.text.grey }) : React.createElement(EyeOpenIcon, { size: 14, fill: theme.text.grey }))) : Icon ? (React.createElement(IconWrapper$2, null,
17633
17634
  React.createElement(Icon, { size: 14, fill: theme.text.grey }))) : null,
17634
17635
  React.createElement(StyledInput, { "data-id": name, type: revealSecret ? InputTypes.Text : type === InputTypes.Number ? InputTypes.Text : type, "$hasIcon": !!Icon || isSecret, name: name, value: value, onChange: handleInputChange, onKeyDown: handleKeyDown, ...props }),
@@ -17918,11 +17919,9 @@ const RowWrapper$1 = styled.div `
17918
17919
  align-items: center;
17919
17920
  gap: 16px;
17920
17921
  `;
17921
- const DeleteButton$2 = styled.button `
17922
- background: none;
17923
- border: none;
17924
- cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};
17925
- opacity: ${({ disabled }) => (disabled ? 0.5 : 1)};
17922
+ const ActionButton$2 = styled(IconButton) `
17923
+ cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};
17924
+ opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};
17926
17925
  `;
17927
17926
  const INITIAL_ROW$1 = '';
17928
17927
  const InputList = ({ initialValues = [], value, onChange, title, tooltip, required, errorMessage }) => {
@@ -17943,23 +17942,28 @@ const InputList = ({ initialValues = [], value, onChange, title, tooltip, requir
17943
17942
  onChange(validRows);
17944
17943
  }
17945
17944
  }, [validRows, onChange]);
17946
- const handleAddInput = () => {
17945
+ const handleChange = (val, idx) => {
17947
17946
  setRows((prev) => {
17948
17947
  const payload = [...prev];
17949
- payload.push(INITIAL_ROW$1);
17948
+ payload[idx] = val;
17950
17949
  return payload;
17951
17950
  });
17952
17951
  };
17953
- const handleDeleteInput = (idx) => {
17954
- setRows((prev) => prev.filter((_, i) => i !== idx));
17955
- };
17956
- const handleInputChange = (val, idx) => {
17952
+ const handleAdd = () => {
17957
17953
  setRows((prev) => {
17958
17954
  const payload = [...prev];
17959
- payload[idx] = val;
17955
+ payload.push(INITIAL_ROW$1);
17960
17956
  return payload;
17961
17957
  });
17962
17958
  };
17959
+ const handleDelete = (idx) => {
17960
+ if (isMinRows) {
17961
+ handleChange('', idx);
17962
+ }
17963
+ else {
17964
+ setRows((prev) => prev.filter((_, i) => i !== idx));
17965
+ }
17966
+ };
17963
17967
  // Check if any input field is empty
17964
17968
  const isMinRows = rows.length <= 1;
17965
17969
  const isAddButtonDisabled = rows.some((input) => input.trim() === '');
@@ -17969,19 +17973,13 @@ const InputList = ({ initialValues = [], value, onChange, title, tooltip, requir
17969
17973
  React.createElement(ListContainer$2, null, rows.map((val, idx) => {
17970
17974
  const isLast = idx === rows.length - 1;
17971
17975
  return (React.createElement(RowWrapper$1, { key: `input-list-${idx}` },
17972
- React.createElement(Input, { value: val, onChange: (e) => handleInputChange(e.target.value, idx), hasError: !!errorMessage, autoFocus: isEmpty(val) && !isMinRows && isLast }),
17973
- React.createElement(DeleteButton$2, { disabled: isDelButtonDisabled, onClick: () => {
17974
- if (isMinRows) {
17975
- handleInputChange('', idx);
17976
- }
17977
- else {
17978
- handleDeleteInput(idx);
17979
- }
17980
- } },
17976
+ React.createElement(Input, { value: val, onChange: (e) => handleChange(e.target.value, idx), hasError: !!errorMessage, autoFocus: isEmpty(val) && !isMinRows && isLast }),
17977
+ idx === rows.length - 1 && (React.createElement(ActionButton$2, { withBorder: true, size: 30, "$disabled": isAddButtonDisabled, onClick: isAddButtonDisabled ? undefined : () => handleAdd() },
17978
+ React.createElement(PlusIcon$1, null))),
17979
+ React.createElement(ActionButton$2, { size: 30, "$disabled": isDelButtonDisabled, onClick: isDelButtonDisabled ? undefined : () => handleDelete(idx) },
17981
17980
  React.createElement(TrashIcon, null))));
17982
17981
  })),
17983
- !!errorMessage && React.createElement(FieldError, null, errorMessage),
17984
- React.createElement(AddButton$1, { onClick: handleAddInput, disabled: isAddButtonDisabled })));
17982
+ !!errorMessage && React.createElement(FieldError, null, errorMessage)));
17985
17983
  };
17986
17984
 
17987
17985
  const ColumnsToFields = ({ col, colIdx, row, rowIdx, rowsLength, maxWidth, handleChange, errorMessage, limitFieldsPerRow }) => {
@@ -18010,7 +18008,7 @@ const Container$b = styled.div `
18010
18008
  flex-direction: column;
18011
18009
  width: 100%;
18012
18010
  `;
18013
- const DeleteButton$1 = styled.button `
18011
+ const DeleteButton = styled.button `
18014
18012
  margin-top: ${({ $marginTop }) => $marginTop};
18015
18013
  background: none;
18016
18014
  border: none;
@@ -18110,7 +18108,7 @@ const InputTable = ({ columns, initialValues = [], value, onChange, errorMessage
18110
18108
  matrixColumns.map((cols, colIdx) => (React.createElement("tr", { key: `input-table-matrix-${rowIdx}-${colIdx}` },
18111
18109
  cols.map((obj, colIdx) => (React.createElement(ColumnsToFields, { key: `input-table-row-${rowIdx}-col-${colIdx}`, col: obj, colIdx: colIdx, row: row, rowIdx: rowIdx, rowsLength: rows.length, maxWidth: maxWidth, limitFieldsPerRow: limitFieldsPerRow, errorMessage: errorMessage, handleChange: handleChange }))),
18112
18110
  colIdx === 0 && (React.createElement("td", null,
18113
- React.createElement(DeleteButton$1, { "$marginTop": limitFieldsPerRow ? '24px' : '0', onClick: () => handleDeleteRow(rowIdx) },
18111
+ React.createElement(DeleteButton, { "$marginTop": limitFieldsPerRow ? '24px' : '0', onClick: () => handleDeleteRow(rowIdx) },
18114
18112
  React.createElement(TrashIcon, null)))))))))))),
18115
18113
  !!errorMessage && React.createElement(FieldError, null, errorMessage),
18116
18114
  React.createElement(AddButton$1, { onClick: handleAddRow, disabled: isAddButtonDisabled })));
@@ -18129,21 +18127,21 @@ const ListContainer$1 = styled.div `
18129
18127
  const RowWrapper = styled.div `
18130
18128
  display: flex;
18131
18129
  align-items: center;
18132
- gap: 16px;
18130
+ gap: 8px;
18133
18131
  `;
18134
- const DeleteButton = styled.button `
18135
- background: none;
18136
- border: none;
18137
- cursor: pointer;
18138
- cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};
18139
- opacity: ${({ disabled }) => (disabled ? 0.5 : 1)};
18132
+ const InputWrapper$1 = styled.div `
18133
+ width: 100%;
18134
+ max-width: ${({ $maxWidth }) => ($maxWidth ? `${$maxWidth}px` : 'unset')};
18135
+ `;
18136
+ const ActionButton$1 = styled(IconButton) `
18137
+ cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};
18138
+ opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};
18140
18139
  `;
18141
18140
  const INITIAL_ROW = {
18142
18141
  key: '',
18143
18142
  value: '',
18144
18143
  };
18145
- const KeyValueInputsList = ({ initialKeyValuePairs = [], value, onChange, title, tooltip, required, errorMessage, keyPlaceholder = 'Attribute name', valuePlaceholder = 'Attribute value' }) => {
18146
- const theme = Theme.useTheme();
18144
+ const KeyValueInputsList = ({ initialKeyValuePairs = [], value, onChange, title, tooltip, disabled, required, errorMessage, keyPlaceholder = 'Key', valuePlaceholder = 'Value', inputMaxWidth = 300, }) => {
18147
18145
  const [rows, setRows] = useState(value || initialKeyValuePairs);
18148
18146
  useEffect(() => {
18149
18147
  if (!rows.length)
@@ -18161,46 +18159,45 @@ const KeyValueInputsList = ({ initialKeyValuePairs = [], value, onChange, title,
18161
18159
  onChange(validRows);
18162
18160
  }
18163
18161
  }, [validRows, onChange]);
18164
- const handleAddRow = () => {
18162
+ const handleChange = (key, val, idx) => {
18165
18163
  setRows((prev) => {
18166
18164
  const payload = [...prev];
18167
- payload.push({ ...INITIAL_ROW });
18165
+ payload[idx][key] = val;
18168
18166
  return payload;
18169
18167
  });
18170
18168
  };
18171
- const handleDeleteRow = (idx) => {
18172
- setRows((prev) => prev.filter((_, i) => i !== idx));
18173
- };
18174
- const handleChange = (key, val, idx) => {
18169
+ const handleAddRow = () => {
18175
18170
  setRows((prev) => {
18176
18171
  const payload = [...prev];
18177
- payload[idx][key] = val;
18172
+ payload.push({ ...INITIAL_ROW });
18178
18173
  return payload;
18179
18174
  });
18180
18175
  };
18176
+ const handleDeleteRow = (idx) => {
18177
+ if (isMinRows) {
18178
+ handleChange('key', '', idx);
18179
+ handleChange('value', '', idx);
18180
+ }
18181
+ else {
18182
+ setRows((prev) => prev.filter((_, i) => i !== idx));
18183
+ }
18184
+ };
18181
18185
  // Check if any key or value field is empty
18182
18186
  const isMinRows = rows.length <= 1;
18183
- const isAddButtonDisabled = rows.some(({ key, value }) => key.trim() === '' || value.trim() === '');
18184
- const isDelButtonDisabled = isMinRows && isAddButtonDisabled;
18187
+ const isAddButtonDisabled = disabled || rows.some(({ key, value }) => key.trim() === '' || value.trim() === '');
18188
+ const isDelButtonDisabled = disabled || (isMinRows && isAddButtonDisabled);
18185
18189
  return (React.createElement(Container$a, null,
18186
18190
  React.createElement(FieldLabel, { title: title, required: required, tooltip: tooltip }),
18187
18191
  React.createElement(ListContainer$1, null, rows.map(({ key, value }, idx) => (React.createElement(RowWrapper, { key: `key-value-input-list-${idx}` },
18188
- React.createElement(Input, { placeholder: keyPlaceholder, value: key, onChange: (e) => handleChange('key', e.target.value, idx), hasError: !!errorMessage && (!required || (required && !key)), autoFocus: isEmpty(value) && !isMinRows && idx === rows.length - 1 }),
18189
- React.createElement("div", null,
18190
- React.createElement(ArrowIcon, { rotate: 180, fill: theme.text.darker_grey })),
18191
- React.createElement(Input, { placeholder: valuePlaceholder, value: value, onChange: (e) => handleChange('value', e.target.value, idx), hasError: !!errorMessage && (!required || (required && isEmpty(value))), autoFocus: false }),
18192
- React.createElement(DeleteButton, { disabled: isDelButtonDisabled, onClick: () => {
18193
- if (isMinRows) {
18194
- handleChange('key', '', idx);
18195
- handleChange('value', '', idx);
18196
- }
18197
- else {
18198
- handleDeleteRow(idx);
18199
- }
18200
- } },
18192
+ React.createElement(InputWrapper$1, { "$maxWidth": inputMaxWidth },
18193
+ React.createElement(Input, { placeholder: keyPlaceholder, disabled: disabled, value: key, onChange: (e) => handleChange('key', e.target.value, idx), hasError: !!errorMessage && (!required || (required && !key)), autoFocus: isEmpty(value) && !isMinRows && idx === rows.length - 1 })),
18194
+ React.createElement(InputWrapper$1, { "$maxWidth": idx === rows.length - 1 ? inputMaxWidth - 38 : inputMaxWidth },
18195
+ React.createElement(Input, { placeholder: valuePlaceholder, disabled: disabled, value: value, onChange: (e) => handleChange('value', e.target.value, idx), hasError: !!errorMessage && (!required || (required && isEmpty(value))), autoFocus: false })),
18196
+ idx === rows.length - 1 && (React.createElement(ActionButton$1, { withBorder: true, size: 30, "$disabled": isAddButtonDisabled, onClick: isAddButtonDisabled ? undefined : () => handleAddRow() },
18197
+ React.createElement(PlusIcon$1, null))),
18198
+ React.createElement(ActionButton$1, { size: 30, "$disabled": isDelButtonDisabled, onClick: isDelButtonDisabled ? undefined : () => handleDeleteRow(idx) },
18201
18199
  React.createElement(TrashIcon, null)))))),
18202
- !!errorMessage && React.createElement(FieldError, null, errorMessage),
18203
- React.createElement(AddButton$1, { onClick: handleAddRow, disabled: isAddButtonDisabled })));
18200
+ !!errorMessage && React.createElement(FieldError, null, errorMessage)));
18204
18201
  };
18205
18202
 
18206
18203
  const Container$9 = styled.div `
@@ -18849,8 +18846,7 @@ const Toggle = ({ title, tooltip, initialValue = false, onChange, disabled, allo
18849
18846
  };
18850
18847
  return (React.createElement(Container$2, { "$disabled": disabled, onClick: handleToggle },
18851
18848
  !flipHorizontally && React.createElement(ToggleSwitch, { "$disabled": disabled, "$isActive": isActive }),
18852
- React.createElement(Tooltip, { text: tooltip, withIcon: true },
18853
- React.createElement(Text, { size: 14 }, title)),
18849
+ (title || tooltip) && (React.createElement(Tooltip, { text: tooltip, withIcon: true }, title && React.createElement(Text, { size: 14 }, title))),
18854
18850
  flipHorizontally && React.createElement(ToggleSwitch, { "$disabled": disabled, "$isActive": isActive })));
18855
18851
  };
18856
18852
 
@@ -1,8 +1,8 @@
1
1
  import { StatusType, OtherStatus, SignalType } from './types.js';
2
2
  import 'react';
3
- import './index-bd48e6e2.js';
3
+ import './index-8dad36e5.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-50101bec.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-4e685db0.js';
6
6
 
7
7
  const capitalizeFirstLetter = (string) => {
8
8
  return string.charAt(0).toUpperCase() + string.slice(1);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-bd48e6e2.js';
2
+ import { T as Theme } from './index-8dad36e5.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-61caa474.js';
2
+ import { a3 as WarningModal } from './index-13d8ebb2.js';
3
3
  import { StatusType, EntityTypes } from './types.js';
4
- import './index-bd48e6e2.js';
4
+ import './index-8dad36e5.js';
5
5
  import 'styled-components';
6
6
 
7
7
  const CancelWarning = ({ isOpen, noOverlay, name, onApprove, onDeny }) => {
@@ -1,3 +1,8 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
+ const deepClone = (item) => {
3
+ return JSON.parse(JSON.stringify(item));
4
+ };
5
+
1
6
  function safeJsonParse(val, fallback) {
2
7
  if (!val)
3
8
  return fallback;
@@ -31,4 +36,4 @@ const isEmpty = (val) => {
31
36
  }
32
37
  };
33
38
 
34
- export { isEmpty as i, safeJsonParse as s };
39
+ export { deepClone as d, isEmpty as i, safeJsonParse as s };
@@ -1911,4 +1911,4 @@ var animations = /*#__PURE__*/Object.freeze({
1911
1911
 
1912
1912
  const Theme = { Provider, useTheme, opacity, animations };
1913
1913
 
1914
- export { useSelectedStore as $, ACTION_OPTIONS as A, BUTTON_TEXTS as B, CodeAttributesIcon as C, DISPLAY_LANGUAGES as D, ElixirLogo as E, FORM_ALERTS as F, GoLogo as G, HeadersCollectionIcon as H, INSTRUMENTATION_RULE_OPTIONS as I, JavaLogo as J, K8sLogo as K, LANGUAGE_OPTIONS as L, MONITORS_OPTIONS as M, NginxLogo as N, useDrawerStore as O, PiiMaskingIcon as P, useActiveNodeStore as Q, RenameAttributeIcon as R, STORAGE_KEYS as S, Theme as T, usePendingStore as U, useNotificationStore as V, useEntityStore as W, useFilterStore as X, useDataStreamStore as Y, useInstrumentStore as Z, useSetupStore as _, DEFAULT_DATA_STREAM_NAME as a, useDarkMode as a0, styleInject as a1, DISPLAY_TITLES as b, getEntityId as c, getInstrumentationRuleIcon as d, getProgrammingLanguageIcon as e, AddClusterInfoIcon as f, getActionIcon as g, DeleteAttributeIcon as h, SamplerIcon as i, ImageErrorIcon as j, KafkaLogo as k, CustomInstrumentationIcon as l, PayloadCollectionIcon as m, CPlusPlusLogo as n, CSharpLogo as o, DotnetLogo as p, MysqlLogo as q, NodejsLogo as r, PhpLogo as s, PostgresLogo as t, PythonLogo as u, RedisLogo as v, RubyLogo as w, RustLogo as x, SwiftLogo as y, useModalStore as z };
1914
+ export { useSelectedStore as $, ACTION_OPTIONS as A, BUTTON_TEXTS as B, CodeAttributesIcon as C, DISPLAY_LANGUAGES as D, ElixirLogo as E, FORM_ALERTS as F, GoLogo as G, HeadersCollectionIcon as H, INSTRUMENTATION_RULE_OPTIONS as I, JavaLogo as J, KafkaLogo as K, LANGUAGE_OPTIONS as L, MONITORS_OPTIONS as M, NginxLogo as N, useDrawerStore as O, PiiMaskingIcon as P, useActiveNodeStore as Q, RenameAttributeIcon as R, STORAGE_KEYS as S, Theme as T, usePendingStore as U, useNotificationStore as V, useEntityStore as W, useFilterStore as X, useDataStreamStore as Y, useInstrumentStore as Z, useSetupStore as _, DEFAULT_DATA_STREAM_NAME as a, useDarkMode as a0, styleInject as a1, DISPLAY_TITLES as b, getEntityId as c, getInstrumentationRuleIcon as d, getProgrammingLanguageIcon as e, K8sLogo as f, getActionIcon as g, AddClusterInfoIcon as h, DeleteAttributeIcon as i, SamplerIcon as j, ImageErrorIcon as k, CustomInstrumentationIcon as l, PayloadCollectionIcon as m, CPlusPlusLogo as n, CSharpLogo as o, DotnetLogo as p, MysqlLogo as q, NodejsLogo as r, PhpLogo as s, PostgresLogo as t, PythonLogo as u, RedisLogo as v, RubyLogo as w, RustLogo as x, SwiftLogo as y, useModalStore as z };
@@ -1,12 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-bd48e6e2.js';
3
-
4
- const ArrowIcon = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
- const theme = Theme.useTheme();
6
- const fill = f || theme.text.secondary;
7
- return (React.createElement("svg", { width: size * (9 / 13.5), height: size, viewBox: '0 0 9 13.5', xmlns: 'http://www.w3.org/2000/svg', fill: fill, style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
8
- React.createElement("path", { d: 'M0.616717 8.03169L0.616717 5.70699L16.1519 5.70699L16.1519 8.03169L0.616717 8.03169ZM8.11144 -2.81613L9.7262 -1.10502L1.45534 6.87054L9.7262 14.9097L8.17631 16.6208L-1.19268 7.5802L-1.19268 6.1921L8.11144 -2.81613Z' })));
9
- };
2
+ import { T as Theme } from './index-8dad36e5.js';
10
3
 
11
4
  const CodeIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
12
5
  const theme = Theme.useTheme();
@@ -142,4 +135,4 @@ const CrossIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 })
142
135
  React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M4 12L8 8M8 8L12 4M8 8L4 4M8 8L12 12' })));
143
136
  };
144
137
 
145
- export { ArrowIcon as A, CodeIcon as C, EditIcon as E, ListIcon as L, MinusIcon as M, NoDataIcon as N, PlusIcon as P, SearchIcon as S, TrashIcon as T, XIcon as X, CopyIcon as a, EditedIcon as b, ExtendArrowIcon as c, NotebookIcon as d, SortArrowsIcon as e, EyeClosedIcon as f, EyeOpenIcon as g, CheckIcon as h, CrossIcon as i };
138
+ export { CodeIcon as C, EditIcon as E, ListIcon as L, MinusIcon as M, NoDataIcon as N, PlusIcon as P, SearchIcon as S, TrashIcon as T, XIcon as X, CopyIcon as a, EditedIcon as b, ExtendArrowIcon as c, NotebookIcon as d, SortArrowsIcon as e, EyeClosedIcon as f, EyeOpenIcon as g, CheckIcon as h, CrossIcon as i };
@@ -1,10 +1,10 @@
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-bd48e6e2.js';
2
+ import { a as DEFAULT_DATA_STREAM_NAME, e as getProgrammingLanguageIcon, K as KafkaLogo, f as K8sLogo } from './index-8dad36e5.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-acc7c7dd.js';
6
- import { O as OdigosLogo } from './index-50101bec.js';
7
- import { s as safeJsonParse } from './index-ec555530.js';
5
+ import { A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AxiomLogo, B as BlobStorageLogo, d as BetterStackLogo, e as BonreeLogo, C as CauselyLogo, f as ChecklyLogo, g as ChronosphereLogo, h as ClickhouseLogo, i as AwsCloudwatchLogo, j as CoralogixLogo, D as Dash0Logo, k as DatadogLogo, O as OpenTelemetryLogo, l as DynatraceLogo, E as ElasticApmLogo, m as ElasticSearchLogo, G as GoogleCloudPlatformLogo, n as GrafanaLogo, o as GreptimeLogo, p as GroundcoverLogo, H as HoneycombLogo, q as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, r as LightstepLogo, s as LogzioLogo, t as LokiLogo, u as LumigoLogo, M as MiddlewareLogo, N as NewRelicLogo, v as ObserveLogo, w as OneUptimeLogo, x as OpenObserveLogo, y as OpsVerseLogo, z as OracleLogo, P as PrometheusLogo, Q as QrynLogo, F as GigapipeLogo, R as QuickwitLogo, S as AwsS3Logo, T as SeqLogo, U as SignozLogo, V as SplunkLogo, W as SumoLogicLogo, X as TelemetryHubLogo, Y as TempoLogo, Z as TingyunLogo, _ as TraceloopLogo, $ as UptraceLogo, a0 as VictoriaMetricsLogo, a1 as AwsXrayLogo, a2 as NamespacesIcon, a3 as SourcesIcon, a4 as DestinationsIcon, a5 as ActionsIcon, a6 as RulesIcon, a7 as VmLogo } from './index-ff8fcc81.js';
6
+ import { O as OdigosLogo } from './index-4e685db0.js';
7
+ import { s as safeJsonParse } from './index-5e5f7bda.js';
8
8
 
9
9
  const compareCondition = (renderCondition, fields) => {
10
10
  if (!renderCondition || !renderCondition.length)
@@ -38,11 +38,6 @@ const compareCondition = (renderCondition, fields) => {
38
38
  }
39
39
  };
40
40
 
41
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
- const deepClone = (item) => {
43
- return JSON.parse(JSON.stringify(item));
44
- };
45
-
46
41
  const filterActions = (actions, filters) => {
47
42
  let filtered = [...actions];
48
43
  if (!!filters.monitors?.length)
@@ -327,4 +322,4 @@ const mapDestinationFieldsForDisplay = (destination, yamlFields) => {
327
322
 
328
323
  const sleep = async (ms = 1000) => new Promise((resolve) => setTimeout(resolve, ms));
329
324
 
330
- export { filterDestinations as a, filterDestinationsByStream as b, compareCondition as c, deepClone as d, filterSources as e, filterActions as f, filterSourcesByStream as g, formatBytes as h, getContainersInstrumentedCount as i, getContainersIcons as j, getDestinationIcon as k, getEntityIcon as l, getEntityLabel as m, getMetricForEntity as n, getPlatformIcon as o, getPlatformLabel as p, getValueForRange as q, getWorkloadId as r, getYamlFieldsForDestination as s, hasUnhealthyInstances as t, isOverTime as u, mapDestinationFieldsForDisplay as v, sleep as w };
325
+ export { filterDestinations as a, filterDestinationsByStream as b, compareCondition as c, filterSources as d, filterSourcesByStream as e, filterActions as f, formatBytes as g, getContainersInstrumentedCount as h, getContainersIcons as i, getDestinationIcon as j, getEntityIcon as k, getEntityLabel as l, getMetricForEntity as m, getPlatformIcon as n, getPlatformLabel as o, getValueForRange as p, getWorkloadId as q, getYamlFieldsForDestination as r, hasUnhealthyInstances as s, isOverTime as t, mapDestinationFieldsForDisplay as u, sleep as v };
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-bd48e6e2.js';
2
+ import { T as Theme } from './index-8dad36e5.js';
3
3
 
4
4
  const OdigosLogoText = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
@@ -21,6 +21,13 @@ const OdigosLogoText = ({ size = 16, fill: f, rotate = 0, onClick }) => {
21
21
  React.createElement("path", { d: 'M36.6756 64.0307C43.4071 64.0307 48.8641 58.5737 48.8641 51.8422C48.8641 45.1108 43.4071 39.6538 36.6756 39.6538C29.9441 39.6538 24.4872 45.1108 24.4872 51.8422C24.4872 58.5737 29.9441 64.0307 36.6756 64.0307Z' }))));
22
22
  };
23
23
 
24
+ const ArrowIcon = ({ size = 16, fill: f, rotate = 0, onClick }) => {
25
+ const theme = Theme.useTheme();
26
+ const fill = f || theme.text.secondary;
27
+ return (React.createElement("svg", { width: size * (9 / 13.5), height: size, viewBox: '0 0 9 13.5', xmlns: 'http://www.w3.org/2000/svg', fill: fill, style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
28
+ React.createElement("path", { d: 'M0.616717 8.03169L0.616717 5.70699L16.1519 5.70699L16.1519 8.03169L0.616717 8.03169ZM8.11144 -2.81613L9.7262 -1.10502L1.45534 6.87054L9.7262 14.9097L8.17631 16.6208L-1.19268 7.5802L-1.19268 6.1921L8.11144 -2.81613Z' })));
29
+ };
30
+
24
31
  const FilterIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
25
32
  const theme = Theme.useTheme();
26
33
  const fill = f || theme.text.secondary;
@@ -97,4 +104,4 @@ const CrossCircledIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth
97
104
  React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M6.75049 10.0005L8.75049 8.00049M8.75049 8.00049L10.7505 6.00049M8.75049 8.00049L6.75049 6.00049M8.75049 8.00049L10.7505 10.0005M8.75039 14.1004C5.38145 14.1004 2.65039 11.3693 2.65039 8.00039C2.65039 4.63145 5.38145 1.90039 8.75039 1.90039C12.1193 1.90039 14.8504 4.63145 14.8504 8.00039C14.8504 11.3693 12.1193 14.1004 8.75039 14.1004Z' })));
98
105
  };
99
106
 
100
- export { CrossCircledIcon as C, DataStreamsIcon as D, FilterIcon as F, KeyIcon as K, NotificationIcon as N, OdigosLogoText as O, RefreshLeftArrowIcon as R, SlackLogo as S, TerminalIcon as T, UserIcon as U, OverviewIcon as a };
107
+ export { ArrowIcon as A, CrossCircledIcon as C, DataStreamsIcon as D, FilterIcon as F, KeyIcon as K, NotificationIcon as N, OdigosLogoText as O, RefreshLeftArrowIcon as R, SlackLogo as S, TerminalIcon as T, UserIcon as U, OverviewIcon as a };
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-bd48e6e2.js';
2
+ import { T as Theme } from './index-8dad36e5.js';
3
3
 
4
4
  const VmLogo = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
5
5
  const theme = Theme.useTheme();
@@ -680,4 +680,4 @@ const SourcesIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1
680
680
  React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M13.3332 3.8V8M13.3332 3.8C13.3332 4.79411 10.9454 5.6 7.99984 5.6C5.05432 5.6 2.6665 4.79411 2.6665 3.8M13.3332 3.8C13.3332 2.80589 10.9454 2 7.99984 2C5.05432 2 2.6665 2.80589 2.6665 3.8M13.3332 8V12.0875C13.3332 13.1437 10.9454 14 7.99984 14C5.05432 14 2.6665 13.1437 2.6665 12.0875V8M13.3332 8C13.3332 8.99413 10.9454 9.8 7.99984 9.8C5.05432 9.8 2.6665 8.99413 2.6665 8M2.6665 8V3.8M10.6665 7.33333H10.6732M10.6665 11.3333H10.6732' })));
681
681
  };
682
682
 
683
- export { TingyunLogo as $, AlaudaLogo as A, BetterStackLogo as B, CauselyLogo as C, Dash0Logo as D, ElasticApmLogo as E, OpenTelemetryLogo as F, GigapipeLogo as G, HoneycombLogo as H, InstanaLogo as I, JaegerLogo as J, KloudmateLogo as K, Last9Logo as L, MiddlewareLogo as M, NewRelicLogo as N, ObserveLogo as O, OpsVerseLogo as P, OracleLogo as Q, PrometheusLogo as R, QrynLogo as S, QuickwitLogo as T, SeqLogo as U, VmLogo as V, SignozLogo as W, SplunkLogo as X, SumoLogicLogo as Y, TelemetryHubLogo as Z, TempoLogo as _, AlibabaCloudLogo as a, TraceloopLogo as a0, UptraceLogo as a1, VictoriaMetricsLogo as a2, ActionsIcon as a3, DestinationsIcon as a4, NamespacesIcon as a5, RulesIcon as a6, SourcesIcon as a7, AppDynamicsLogo as b, AwsCloudwatchLogo as c, AwsS3Logo as d, AwsXrayLogo as e, AxiomLogo as f, BlobStorageLogo as g, BonreeLogo as h, ChecklyLogo as i, ChronosphereLogo as j, ClickhouseLogo as k, CoralogixLogo as l, DatadogLogo as m, DynatraceLogo as n, ElasticSearchLogo as o, GoogleCloudPlatformLogo as p, GrafanaLogo as q, GreptimeLogo as r, GroundcoverLogo as s, HyperDxLogo as t, LightstepLogo as u, LogzioLogo as v, LokiLogo as w, LumigoLogo as x, OneUptimeLogo as y, OpenObserveLogo as z };
683
+ export { UptraceLogo as $, AlaudaLogo as A, BlobStorageLogo as B, CauselyLogo as C, Dash0Logo as D, ElasticApmLogo as E, GigapipeLogo as F, GoogleCloudPlatformLogo as G, HoneycombLogo as H, InstanaLogo as I, JaegerLogo as J, KloudmateLogo as K, Last9Logo as L, MiddlewareLogo as M, NewRelicLogo as N, OpenTelemetryLogo as O, PrometheusLogo as P, QrynLogo as Q, QuickwitLogo as R, AwsS3Logo as S, SeqLogo as T, SignozLogo as U, SplunkLogo as V, SumoLogicLogo as W, TelemetryHubLogo as X, TempoLogo as Y, TingyunLogo as Z, TraceloopLogo as _, AlibabaCloudLogo as a, VictoriaMetricsLogo as a0, AwsXrayLogo as a1, NamespacesIcon as a2, SourcesIcon as a3, DestinationsIcon as a4, ActionsIcon as a5, RulesIcon as a6, VmLogo as a7, AppDynamicsLogo as b, AxiomLogo as c, BetterStackLogo as d, BonreeLogo as e, ChecklyLogo as f, ChronosphereLogo as g, ClickhouseLogo as h, AwsCloudwatchLogo as i, CoralogixLogo as j, DatadogLogo as k, DynatraceLogo as l, ElasticSearchLogo as m, GrafanaLogo as n, GreptimeLogo as o, GroundcoverLogo as p, HyperDxLogo as q, LightstepLogo as r, LogzioLogo as s, LokiLogo as t, LumigoLogo as u, ObserveLogo as v, OneUptimeLogo as w, OpenObserveLogo as x, OpsVerseLogo as y, OracleLogo as z };
@@ -0,0 +1,2 @@
1
+ import { type OdigosConfig } from '@/types';
2
+ export declare const MOCK_ODIGOS_CONFIG: OdigosConfig;
@@ -1,4 +1,5 @@
1
1
  export * from './actions';
2
+ export * from './config';
2
3
  export * from './describe';
3
4
  export * from './destinations';
4
5
  export * from './instrumentation-rules';
package/lib/snippets.js CHANGED
@@ -1,15 +1,15 @@
1
- import { B as Button, _ as Text, L as NotificationNote } from './index-61caa474.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-61caa474.js';
1
+ import { B as Button, _ as Text, L as NotificationNote } from './index-13d8ebb2.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-13d8ebb2.js';
3
3
  import React from 'react';
4
- import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-bd48e6e2.js';
5
- import { E as EditIcon } from './index-1fcb0269.js';
4
+ import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-8dad36e5.js';
5
+ import { E as EditIcon } from './index-b44c0701.js';
6
6
  import { StatusType } from './types.js';
7
7
  import 'styled-components';
8
- import { I as InfoIcon } from './index-50101bec.js';
9
- import './index-58440c5c.js';
10
- import './index-ec555530.js';
8
+ import { I as InfoIcon } from './index-4e685db0.js';
9
+ import './index-5e5f7bda.js';
10
+ import './index-23b2865d.js';
11
11
  import 'react-dom';
12
- import './useTransition-750816e0.js';
12
+ import './useTransition-985cc4a8.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-bd48e6e2.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-8dad36e5.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-bd48e6e2.js';
1
+ export { T as default } from './index-8dad36e5.js';
2
2
  import 'styled-components';
3
3
  import 'react';
4
4
  import './types.js';
@@ -0,0 +1,89 @@
1
+ import { ProgrammingLanguages } from '..';
2
+ export declare enum UiMode {
3
+ Default = "default",
4
+ ReadOnly = "readonly"
5
+ }
6
+ export declare enum Profile {
7
+ CodeAttributes = "code-attributes",
8
+ FullPayloadCollection = "full-payload-collection",
9
+ DbPayloadCollection = "db-payload-collection",
10
+ QueryOperationDetector = "query-operation-detector",
11
+ AllowConcurrentAgents = "allow_concurrent_agents",
12
+ JavaEbpfInstrumentations = "java-ebpf-instrumentations",
13
+ JavaNativeInstrumentations = "java-native-instrumentations",
14
+ SizeS = "size_s",
15
+ SizeM = "size_m",
16
+ SizeL = "size_l"
17
+ }
18
+ export declare enum MountMethod {
19
+ VirtualDevice = "VirtualDevice",
20
+ HostPath = "HostPath"
21
+ }
22
+ export declare enum AgentEnvVarsInjectionMethod {
23
+ Loader = "loader",
24
+ PodManifest = "pod-manifest",
25
+ LoaderFallbackToPodManifest = "loader-fallback-to-pod-manifest"
26
+ }
27
+ export interface CollectorNode {
28
+ collectorOwnMetricsPort: number;
29
+ requestMemoryMiB: number;
30
+ limitMemoryMiB: number;
31
+ requestCPUm: number;
32
+ limitCPUm: number;
33
+ memoryLimiterLimitMiB: number;
34
+ memoryLimiterSpikeLimitMiB: number;
35
+ goMemLimitMiB: number;
36
+ k8sNodeLogsDirectory: string;
37
+ }
38
+ export interface CollectorGateway extends Omit<CollectorNode, 'collectorOwnMetricsPort' | 'k8sNodeLogsDirectory'> {
39
+ minReplicas: number;
40
+ maxReplicas: number;
41
+ }
42
+ export interface UserInstrumentationEnvsLanguage {
43
+ enabled: boolean;
44
+ env: {
45
+ [key: string]: string;
46
+ };
47
+ }
48
+ export interface UserInstrumentationEnvs {
49
+ languages: {
50
+ [key in ProgrammingLanguages]?: UserInstrumentationEnvsLanguage;
51
+ };
52
+ }
53
+ export interface RolloutConfiguration {
54
+ automaticRolloutDisabled: boolean;
55
+ }
56
+ export interface OidcConfiguration {
57
+ tenantUrl: string;
58
+ clientId: string;
59
+ clientSecret: string;
60
+ }
61
+ export interface OdigosConfig {
62
+ telemetryEnabled: boolean;
63
+ openshiftEnabled: boolean;
64
+ karpenterEnabled: boolean;
65
+ psp: boolean;
66
+ allowConcurrentAgents: boolean;
67
+ skipWebhookIssuerCreation: boolean;
68
+ uiMode: UiMode;
69
+ uiPaginationLimit: number;
70
+ centralBackendURL: string;
71
+ oidc?: OidcConfiguration;
72
+ clusterName: string;
73
+ imagePrefix: string;
74
+ ignoredNamespaces: string[];
75
+ ignoredContainers: string[];
76
+ profiles: Profile[];
77
+ mountMethod: MountMethod;
78
+ agentEnvVarsInjectionMethod: AgentEnvVarsInjectionMethod;
79
+ customContainerRuntimeSocketPath: string;
80
+ odigletHealthProbeBindPort: number;
81
+ rollbackDisabled: boolean;
82
+ rollbackGraceTime: string;
83
+ rollbackStabilityWindow: string;
84
+ nodeSelector?: Record<string, string>;
85
+ rollout?: RolloutConfiguration;
86
+ collectorNode?: CollectorNode;
87
+ collectorGateway?: CollectorGateway;
88
+ userInstrumentationEnvs?: UserInstrumentationEnvs;
89
+ }
@@ -1,5 +1,6 @@
1
1
  export * from './actions';
2
2
  export * from './common';
3
+ export * from './config';
3
4
  export * from './connection';
4
5
  export * from './data-flow';
5
6
  export * from './data-streams';
package/lib/types.js CHANGED
@@ -178,6 +178,48 @@ var SortDirection;
178
178
  SortDirection["Descending"] = "desc";
179
179
  })(SortDirection || (SortDirection = {}));
180
180
 
181
+ var UiMode;
182
+ (function (UiMode) {
183
+ UiMode["Default"] = "default";
184
+ UiMode["ReadOnly"] = "readonly";
185
+ })(UiMode || (UiMode = {}));
186
+ var Profile;
187
+ (function (Profile) {
188
+ // CategoryAttributes = 'category-attributes',
189
+ Profile["CodeAttributes"] = "code-attributes";
190
+ // CopyScope = 'copy-scope',
191
+ // HostnameAsPodname = 'hostname-as-podname',
192
+ Profile["FullPayloadCollection"] = "full-payload-collection";
193
+ Profile["DbPayloadCollection"] = "db-payload-collection";
194
+ Profile["QueryOperationDetector"] = "query-operation-detector";
195
+ // Semconv = 'semconv',
196
+ // ReduceSpanNameCardinality = 'reduce-span-name-cardinality',
197
+ Profile["AllowConcurrentAgents"] = "allow_concurrent_agents";
198
+ Profile["JavaEbpfInstrumentations"] = "java-ebpf-instrumentations";
199
+ Profile["JavaNativeInstrumentations"] = "java-native-instrumentations";
200
+ // LegacyDotnetInstrumentation = 'legacy-dotnet-instrumentation',
201
+ // MountMethodK8sHostPath = 'mount-method-k8s-host-path',
202
+ // MountMethodK8sVirtualDevice = 'mount-method-k8s-virtual-device',
203
+ // PodManifestEnvVarInjection = 'pod-manifest-env-var-injection',
204
+ // DisableGin = 'disable-gin',
205
+ // SmallBatches = 'small-batches',
206
+ Profile["SizeS"] = "size_s";
207
+ Profile["SizeM"] = "size_m";
208
+ Profile["SizeL"] = "size_l";
209
+ })(Profile || (Profile = {}));
210
+ var MountMethod;
211
+ (function (MountMethod) {
212
+ MountMethod["VirtualDevice"] = "VirtualDevice";
213
+ MountMethod["HostPath"] = "HostPath";
214
+ // InitContainer = 'InitContainer',
215
+ })(MountMethod || (MountMethod = {}));
216
+ var AgentEnvVarsInjectionMethod;
217
+ (function (AgentEnvVarsInjectionMethod) {
218
+ AgentEnvVarsInjectionMethod["Loader"] = "loader";
219
+ AgentEnvVarsInjectionMethod["PodManifest"] = "pod-manifest";
220
+ AgentEnvVarsInjectionMethod["LoaderFallbackToPodManifest"] = "loader-fallback-to-pod-manifest";
221
+ })(AgentEnvVarsInjectionMethod || (AgentEnvVarsInjectionMethod = {}));
222
+
181
223
  var NodeTypes;
182
224
  (function (NodeTypes) {
183
225
  NodeTypes["Header"] = "header";
@@ -321,4 +363,4 @@ var K8sResourceKind;
321
363
  K8sResourceKind["CronJob"] = "CronJob";
322
364
  })(K8sResourceKind || (K8sResourceKind = {}));
323
365
 
324
- export { ActionCategory, ActionKeyTypes, ActionType, AddNodeTypes, BooleanOperation, CodeAttributesKeyTypes, Crud, CustomInstrumentationsKeyTypes, DestinationTypes, EdgeTypes, EntityTypes, FieldTypes, HeadersCollectionKeyTypes, InputTypes, InstrumentationRuleType, IntrumentationStatus, JsonOperation, K8sResourceKind, NodeTypes, NumberOperation, OtherEntityTypes, OtherStatus, PayloadCollectionKeyTypes, PlatformType, ProgrammingLanguages, SignalType, SortDirection, StatusType, StringOperation, Tier };
366
+ export { ActionCategory, ActionKeyTypes, ActionType, AddNodeTypes, AgentEnvVarsInjectionMethod, BooleanOperation, CodeAttributesKeyTypes, Crud, CustomInstrumentationsKeyTypes, DestinationTypes, EdgeTypes, EntityTypes, FieldTypes, HeadersCollectionKeyTypes, InputTypes, InstrumentationRuleType, IntrumentationStatus, JsonOperation, K8sResourceKind, MountMethod, NodeTypes, NumberOperation, OtherEntityTypes, OtherStatus, PayloadCollectionKeyTypes, PlatformType, Profile, ProgrammingLanguages, SignalType, SortDirection, StatusType, StringOperation, Tier, UiMode };
@@ -1,7 +1,8 @@
1
- import { z as useModalStore, O as useDrawerStore, Q as useActiveNodeStore } from './index-bd48e6e2.js';
1
+ import { z as useModalStore, O as useDrawerStore, Q as useActiveNodeStore } from './index-8dad36e5.js';
2
2
  import { AddNodeTypes, EntityTypes, PayloadCollectionKeyTypes, CodeAttributesKeyTypes, CustomInstrumentationsKeyTypes } from './types.js';
3
3
  import React, { useState, useMemo, useRef, useEffect, useCallback } from 'react';
4
4
  import styled from 'styled-components';
5
+ import { d as deepClone } from './index-5e5f7bda.js';
5
6
 
6
7
  const useGenericForm = (initialFormData) => {
7
8
  function copyInitial() {
@@ -17,16 +18,28 @@ const useGenericForm = (initialFormData) => {
17
18
  if (key) {
18
19
  // this is for cases where the form contains objects such as "exportedSignals",
19
20
  // the object's child is targeted with a "." for example: "exportedSignals.logs"
20
- const [parentKey, childKey] = key.toString().split('.');
21
- setFormData((prev) => ({
22
- ...prev,
23
- [parentKey]: childKey
24
- ? {
25
- ...prev[parentKey],
26
- [childKey]: val,
21
+ const splittedKeys = key.toString().split('.');
22
+ if (splittedKeys.length === 1) {
23
+ setFormData((prev) => ({ ...prev, [key]: val }));
24
+ }
25
+ else {
26
+ setFormData((prev) => {
27
+ const payload = deepClone(prev);
28
+ let current = payload;
29
+ // Navigate to the parent of the final key, creating objects as needed
30
+ for (let i = 0; i < splittedKeys.length - 1; i++) {
31
+ const key = splittedKeys[i];
32
+ if (!current[key] || typeof current[key] !== 'object') {
33
+ current[key] = {};
34
+ }
35
+ current = current[key];
27
36
  }
28
- : val,
29
- }));
37
+ // Set the final value
38
+ const finalKey = splittedKeys[splittedKeys.length - 1];
39
+ current[finalKey] = val;
40
+ return payload;
41
+ });
42
+ }
30
43
  }
31
44
  else if (obj) {
32
45
  setFormData({ ...obj });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odigos/ui-kit",
3
- "version": "0.0.62",
3
+ "version": "0.0.64",
4
4
  "author": "Odigos",
5
5
  "repository": {
6
6
  "type": "git",