@odigos/ui-kit 0.0.64 → 0.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.65](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.64...ui-kit-v0.0.65) (2025-07-21)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * close on save ([9579c54](https://github.com/odigos-io/ui-kit/commit/9579c5474b5bf960828a83286455523a9a0deaa1))
9
+ * props, and exports for system settings ([#263](https://github.com/odigos-io/ui-kit/issues/263)) ([7279e3c](https://github.com/odigos-io/ui-kit/commit/7279e3ca043de51a4e7cf659427284e563d810ec))
10
+
3
11
  ## [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
12
 
5
13
 
package/lib/components.js CHANGED
@@ -1,16 +1,16 @@
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';
1
+ import { B as Button } from './index-f2da9ad4.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-f2da9ad4.js';
3
+ export { C as CancelWarning, D as DeleteWarning } from './index-7074fb24.js';
4
4
  import React, { createContext, Component, createElement } from 'react';
5
- import { T as Theme } from './index-8dad36e5.js';
5
+ import { T as Theme } from './index-bd48e6e2.js';
6
6
  import 'styled-components';
7
- import './index-b44c0701.js';
7
+ import './index-391844c6.js';
8
8
  import './types.js';
9
9
  import './index-5e5f7bda.js';
10
- import './index-23b2865d.js';
11
- import './index-4e685db0.js';
10
+ import './index-58440c5c.js';
11
+ import './index-50101bec.js';
12
12
  import 'react-dom';
13
- import './useTransition-985cc4a8.js';
13
+ import './useTransition-c2aef0e4.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-8dad36e5.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-bd48e6e2.js';
2
2
  export { D as DESTINATION_CATEGORIES } from './index-1cb4f9e2.js';
3
3
  import 'react';
4
4
  import './types.js';
@@ -34,6 +34,7 @@ export * from './source-modal';
34
34
  export * from './source-selection-form';
35
35
  export * from './source-table';
36
36
  export * from './system-overview';
37
+ export * from './system-settings';
37
38
  export * from './table-cell-conditions';
38
39
  export * from './toast-list';
39
40
  export * from './toggle-dark-mode';
@@ -1,8 +1,8 @@
1
1
  import { type FC } from 'react';
2
2
  import type { OdigosConfig } from '@/types';
3
3
  interface SystemSettingsProps {
4
- settings: OdigosConfig;
5
- onSave: (payload: OdigosConfig) => void;
4
+ fetchSettings: () => Promise<OdigosConfig | undefined>;
5
+ onSave: (payload: OdigosConfig) => Promise<void>;
6
6
  }
7
7
  declare const SystemSettings: FC<SystemSettingsProps>;
8
8
  export { SystemSettings, type SystemSettingsProps };
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, k as ImageErrorIcon, a0 as useDarkMode } from './index-8dad36e5.js';
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-13d8ebb2.js';
3
+ import { b as DISPLAY_TITLES, T as Theme, U as usePendingStore, V as useNotificationStore, O as useDrawerStore, B as BUTTON_TEXTS, W as useEntityStore, A as ACTION_OPTIONS, g as getActionIcon, z as useModalStore, F as FORM_ALERTS, X as useFilterStore, D as DISPLAY_LANGUAGES, M as MONITORS_OPTIONS, d as getInstrumentationRuleIcon, Y as useDataStreamStore, Z as useInstrumentStore, c as getEntityId, S as STORAGE_KEYS, a as DEFAULT_DATA_STREAM_NAME, _ as useSetupStore, e as getProgrammingLanguageIcon, I as INSTRUMENTATION_RULE_OPTIONS, $ as useSelectedStore, j as ImageErrorIcon, a0 as useDarkMode } from './index-bd48e6e2.js';
4
+ import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, EdgeTypes, AddNodeTypes, SignalType, HeadersCollectionKeyTypes, CustomInstrumentationsKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType, K8sResourceKind, UiMode, ProgrammingLanguages, MountMethod, AgentEnvVarsInjectionMethod, Profile } 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-f2da9ad4.js';
6
6
  import { i as isEmpty, s as safeJsonParse, d as deepClone } from './index-5e5f7bda.js';
7
- import { C as CheckCircledIcon, O as OdigosLogo } from './index-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';
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, A as ArrowIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon, G as GearIcon } from './index-c1df4281.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-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';
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-c2aef0e4.js';
11
+ import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, P as PlusIcon, a as CopyIcon } from './index-391844c6.js';
12
+ import { D as DeleteWarning, C as CancelWarning } from './index-7074fb24.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, 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-42f40e7c.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, a3 as SourcesIcon, a5 as ActionsIcon, a4 as DestinationsIcon } from './index-ff8fcc81.js';
18
+ import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-acc7c7dd.js';
19
19
  import 'react-dom';
20
20
 
21
21
  const buildCard$3 = (action) => {
@@ -677,7 +677,7 @@ const FormContainer$4 = styled.div `
677
677
  overflow: overlay;
678
678
  overflow-y: auto;
679
679
  `;
680
- const DataContainer$3 = styled.div `
680
+ const DataContainer$4 = styled.div `
681
681
  display: flex;
682
682
  flex-direction: column;
683
683
  gap: 12px;
@@ -732,7 +732,7 @@ const ActionDrawer = ({ updateAction, deleteAction }) => {
732
732
  React.createElement(ActionForm, { isUpdate: true, action: thisOptionType, formData: formData, formErrors: formErrors, handleFormChange: (...params) => {
733
733
  setIsFormDirty(true);
734
734
  handleFormChange(...params);
735
- } }))) : (React.createElement(DataContainer$3, null,
735
+ } }))) : (React.createElement(DataContainer$4, null,
736
736
  React.createElement(ConditionDetails, { conditions: thisItem.conditions || [] }),
737
737
  React.createElement(DataCard, { title: DISPLAY_TITLES.ACTION_DETAILS, data: !!thisItem ? buildCard$3(thisItem) : [] })))));
738
738
  };
@@ -2508,7 +2508,7 @@ const FormContainer$2 = styled.div `
2508
2508
  overflow: overlay;
2509
2509
  overflow-y: auto;
2510
2510
  `;
2511
- const DataContainer$2 = styled.div `
2511
+ const DataContainer$3 = styled.div `
2512
2512
  display: flex;
2513
2513
  flex-direction: column;
2514
2514
  gap: 12px;
@@ -2573,7 +2573,7 @@ const DestinationDrawer = ({ categories, updateDestination, deleteDestination, t
2573
2573
  }, dynamicFields: dynamicFields, setDynamicFields: (...params) => {
2574
2574
  setIsFormDirty(true);
2575
2575
  setDynamicFields(...params);
2576
- }, validateForm: validateForm, testConnection: testConnection }))) : (React.createElement(DataContainer$2, null,
2576
+ }, validateForm: validateForm, testConnection: testConnection }))) : (React.createElement(DataContainer$3, null,
2577
2577
  thisItem.conditions?.length ? React.createElement(ConditionDetails, { conditions: thisItem.conditions }) : null,
2578
2578
  React.createElement(DataCard, { title: DISPLAY_TITLES.DESTINATION_DETAILS, data: !!thisItem ? buildCard$2(thisItem, yamlFields) : [] })))));
2579
2579
  };
@@ -4286,7 +4286,7 @@ const FormContainer = styled.div `
4286
4286
  overflow: overlay;
4287
4287
  overflow-y: auto;
4288
4288
  `;
4289
- const DataContainer$1 = styled.div `
4289
+ const DataContainer$2 = styled.div `
4290
4290
  display: flex;
4291
4291
  flex-direction: column;
4292
4292
  gap: 12px;
@@ -4375,7 +4375,7 @@ const SourceDrawer = ({ persistSources, updateSource, fetchDescribeSource, resta
4375
4375
  setIsFormDirty(true);
4376
4376
  handleFormChange(...params);
4377
4377
  handleFormChange('currentStreamName', selectedStreamName);
4378
- } }))) : (React.createElement(DataContainer$1, null,
4378
+ } }))) : (React.createElement(DataContainer$2, null,
4379
4379
  React.createElement(ConditionDetails, { conditions: thisItem.conditions || [] }),
4380
4380
  React.createElement(DataCard, { title: DISPLAY_TITLES.SOURCE_DETAILS, data: !!thisItem ? buildCard(thisItem) : [] }),
4381
4381
  React.createElement(DataCard, { title: DISPLAY_TITLES.DETECTED_CONTAINERS, titleBadge: containersData.isLoading ? OtherStatus.Loading : containersData.containers.length, description: containersData.description || DISPLAY_TITLES.DETECTED_CONTAINERS_DESCRIPTION }, containersData.containers.map((container) => (React.createElement(SourceContainer, { key: `source-container-${container.containerName}`, ...container, callbackRuntimeOverride: async (payload) => await updateSource(drawerEntityId, payload) }))))))) : (React.createElement(Describe$1, { source: thisItem, fetchDescribeSource: fetchDescribeSource }))));
@@ -4699,30 +4699,285 @@ const Describe = ({ fetchDescribeOdigos }) => {
4699
4699
  React.createElement(DataCard, { title: 'Node Collector', withExtend: true }, Object.values(describe?.nodeCollector || {}).map(mapObjectToCardChildren))));
4700
4700
  };
4701
4701
 
4702
- const DataContainer = styled.div `
4702
+ const DataContainer$1 = styled.div `
4703
4703
  display: flex;
4704
4704
  flex-direction: column;
4705
4705
  gap: 12px;
4706
4706
  `;
4707
- const DRAWER_WIDTH = '750px';
4708
- const TITLE_TEXT = 'System Overview';
4707
+ const DRAWER_WIDTH$1 = '750px';
4708
+ const TITLE_TEXT$1 = 'System Overview';
4709
4709
  const SystemOverview = ({ tokens, saveToken, fetchDescribeOdigos }) => {
4710
4710
  const [isOpen, setIsOpen] = useState(false);
4711
4711
  const toggleOpen = () => setIsOpen((prev) => !prev);
4712
4712
  return (React.createElement(React.Fragment, null,
4713
- React.createElement(IconButton, { key: TITLE_TEXT, onClick: toggleOpen, tooltip: TITLE_TEXT },
4713
+ React.createElement(IconButton, { key: TITLE_TEXT$1, onClick: toggleOpen, tooltip: TITLE_TEXT$1 },
4714
4714
  React.createElement(TerminalIcon, { size: 18 })),
4715
- React.createElement(Drawer, { width: DRAWER_WIDTH, isOpen: isOpen, onClose: toggleOpen, header: {
4715
+ React.createElement(Drawer, { width: DRAWER_WIDTH$1, isOpen: isOpen, onClose: toggleOpen, header: {
4716
4716
  icons: [TerminalIcon],
4717
- title: TITLE_TEXT,
4717
+ title: TITLE_TEXT$1,
4718
4718
  }, footer: {
4719
4719
  isOpen: false,
4720
4720
  } },
4721
- React.createElement(DataContainer, null,
4721
+ React.createElement(DataContainer$1, null,
4722
4722
  !!tokens?.length && React.createElement(Tokens, { tokens: tokens, saveToken: saveToken }),
4723
4723
  React.createElement(Describe, { fetchDescribeOdigos: fetchDescribeOdigos })))));
4724
4724
  };
4725
4725
 
4726
+ const Card = styled.div `
4727
+ align-self: stretch;
4728
+ display: flex;
4729
+ flex-direction: column;
4730
+ align-items: flex-start;
4731
+ gap: 16px;
4732
+ padding: 16px;
4733
+ border-radius: 24px;
4734
+ background: ${({ theme }) => theme.colors.secondary + Theme.opacity.hex['004']};
4735
+ `;
4736
+ const CardTitle = styled(Text) `
4737
+ color: ${({ theme }) => theme.text.secondary};
4738
+ font-size: 18px;
4739
+ font-weight: 600;
4740
+ line-height: 20px;
4741
+ `;
4742
+
4743
+ const UI_MODE_OPTIONS = [
4744
+ { id: UiMode.Default, value: 'Default' },
4745
+ { id: UiMode.ReadOnly, value: 'Read Only' },
4746
+ ];
4747
+ const INSTRUMENTATION_LANG_OPTIONS = [
4748
+ {
4749
+ id: ProgrammingLanguages.Go,
4750
+ value: DISPLAY_LANGUAGES[ProgrammingLanguages.Go],
4751
+ icon: getProgrammingLanguageIcon(ProgrammingLanguages.Go),
4752
+ },
4753
+ {
4754
+ id: ProgrammingLanguages.JavaScript,
4755
+ value: DISPLAY_LANGUAGES[ProgrammingLanguages.JavaScript],
4756
+ icon: getProgrammingLanguageIcon(ProgrammingLanguages.JavaScript),
4757
+ },
4758
+ {
4759
+ id: ProgrammingLanguages.Python,
4760
+ value: DISPLAY_LANGUAGES[ProgrammingLanguages.Python],
4761
+ icon: getProgrammingLanguageIcon(ProgrammingLanguages.Python),
4762
+ },
4763
+ {
4764
+ id: ProgrammingLanguages.Java,
4765
+ value: DISPLAY_LANGUAGES[ProgrammingLanguages.Java],
4766
+ icon: getProgrammingLanguageIcon(ProgrammingLanguages.Java),
4767
+ },
4768
+ {
4769
+ id: ProgrammingLanguages.Php,
4770
+ value: DISPLAY_LANGUAGES[ProgrammingLanguages.Php],
4771
+ icon: getProgrammingLanguageIcon(ProgrammingLanguages.Php),
4772
+ },
4773
+ {
4774
+ id: ProgrammingLanguages.Ruby,
4775
+ value: DISPLAY_LANGUAGES[ProgrammingLanguages.Ruby],
4776
+ icon: getProgrammingLanguageIcon(ProgrammingLanguages.Ruby),
4777
+ },
4778
+ {
4779
+ id: ProgrammingLanguages.DotNet,
4780
+ value: DISPLAY_LANGUAGES[ProgrammingLanguages.DotNet],
4781
+ icon: getProgrammingLanguageIcon(ProgrammingLanguages.DotNet),
4782
+ },
4783
+ ];
4784
+ const MOUNT_METHOD_OPTIONS = [
4785
+ { id: MountMethod.VirtualDevice, value: 'Virtual Device' },
4786
+ { id: MountMethod.HostPath, value: 'Host Path' },
4787
+ // { id: MountMethod.InitContainer, value: 'Init Container' },
4788
+ ];
4789
+ const AGENT_ENV_VARS_INJECTION_METHOD_OPTIONS = [
4790
+ { id: AgentEnvVarsInjectionMethod.Loader, value: 'Loader' },
4791
+ { id: AgentEnvVarsInjectionMethod.PodManifest, value: 'Pod Manifest' },
4792
+ { id: AgentEnvVarsInjectionMethod.LoaderFallbackToPodManifest, value: 'Loader Fallback to Pod Manifest' },
4793
+ ];
4794
+ const PROFILE_OPTIONS = [
4795
+ // { id: Profile.CategoryAttributes, value: 'Category Attributes' },
4796
+ { id: Profile.CodeAttributes, value: 'Code Attributes' },
4797
+ // { id: Profile.CopyScope, value: 'Copy Scope' },
4798
+ // { id: Profile.HostnameAsPodname, value: 'Hostname as Podname' },
4799
+ { id: Profile.FullPayloadCollection, value: 'Full Payload Collection' },
4800
+ { id: Profile.DbPayloadCollection, value: 'DB Payload Collection' },
4801
+ { id: Profile.QueryOperationDetector, value: 'Query Operation Detector' },
4802
+ // { id: Profile.Semconv, value: 'Semconv' },
4803
+ // { id: Profile.ReduceSpanNameCardinality, value: 'Reduce Span Name Cardinality' },
4804
+ { id: Profile.AllowConcurrentAgents, value: 'Allow Concurrent Agents' },
4805
+ { id: Profile.JavaEbpfInstrumentations, value: 'Java EBPF Instrumentations' },
4806
+ { id: Profile.JavaNativeInstrumentations, value: 'Java Native Instrumentations' },
4807
+ // { id: Profile.LegacyDotnetInstrumentation, value: 'Legacy .NET Instrumentation' },
4808
+ // { id: Profile.MountMethodK8sHostPath, value: 'Mount Method K8s Host Path' },
4809
+ // { id: Profile.MountMethodK8sVirtualDevice, value: 'Mount Method K8s Virtual Device' },
4810
+ // { id: Profile.PodManifestEnvVarInjection, value: 'Pod Manifest Env Var Injection' },
4811
+ // { id: Profile.DisableGin, value: 'Disable Gin' },
4812
+ // { id: Profile.SmallBatches, value: 'Small Batches' },
4813
+ { id: Profile.SizeS, value: 'Size S' },
4814
+ { id: Profile.SizeM, value: 'Size M' },
4815
+ { id: Profile.SizeL, value: 'Size L' },
4816
+ ];
4817
+
4818
+ const UiSettings = ({ formData, handleFormChange }) => {
4819
+ return (React.createElement(Card, null,
4820
+ React.createElement(CardTitle, null, "UI"),
4821
+ React.createElement(Dropdown, { title: 'UI Mode', tooltip: 'Mode of the UI - default or readonly', options: UI_MODE_OPTIONS, value: UI_MODE_OPTIONS.find((option) => option.id === formData.uiMode), onSelect: (option) => handleFormChange('uiMode', option.id) }),
4822
+ React.createElement(Input, { title: 'UI Pagination Limit', tooltip: 'Pagination limit for UI paginated fetching', type: 'number', value: formData.uiPaginationLimit.toString(), onChange: (e) => handleFormChange('uiPaginationLimit', Number(e.target.value)) }),
4823
+ React.createElement(Input, { title: 'Central Backend URL', tooltip: 'URL of the central backend', value: formData.centralBackendURL, onChange: (e) => handleFormChange('centralBackendURL', e.target.value) }),
4824
+ React.createElement(Input, { title: 'OIDC Tenant URL', tooltip: 'URL of the OIDC tenant', value: formData.oidc?.tenantUrl, onChange: (e) => handleFormChange('oidc.tenantUrl', e.target.value) }),
4825
+ React.createElement(Input, { title: 'OIDC Client ID', tooltip: 'Client ID of the OIDC application', value: formData.oidc?.clientId, onChange: (e) => handleFormChange('oidc.clientId', e.target.value) }),
4826
+ React.createElement(Input, { title: 'OIDC Client Secret', tooltip: 'Client Secret of the OIDC application', type: 'password', value: formData.oidc?.clientSecret, onChange: (e) => handleFormChange('oidc.clientSecret', e.target.value) })));
4827
+ };
4828
+
4829
+ const OtherSettings = ({ formData, handleFormChange }) => {
4830
+ return (React.createElement(Card, null,
4831
+ React.createElement(CardTitle, null, "Other"),
4832
+ React.createElement(Toggle, { title: 'Telemetry Enabled', tooltip: 'Enable anonymous telemetry collection', initialValue: formData.telemetryEnabled, onChange: (bool) => handleFormChange('telemetryEnabled', bool) }),
4833
+ React.createElement(Toggle, { title: 'OpenShift Enabled', tooltip: 'Enable OpenShift-specific features', initialValue: formData.openshiftEnabled, onChange: (bool) => handleFormChange('openshiftEnabled', bool) }),
4834
+ React.createElement(Toggle, { title: 'Karpenter Enabled', tooltip: 'Enable Karpenter support', initialValue: formData.karpenterEnabled, onChange: (bool) => handleFormChange('karpenterEnabled', bool) }),
4835
+ React.createElement(Toggle, { title: 'PSP Enabled', tooltip: 'Enable Pod Security Policy support', initialValue: formData.psp, onChange: (bool) => handleFormChange('psp', bool) }),
4836
+ React.createElement(Toggle, { title: 'Allow Concurrent Agents', tooltip: 'Allow concurrent running agents', initialValue: formData.allowConcurrentAgents, onChange: (bool) => handleFormChange('allowConcurrentAgents', bool) }),
4837
+ React.createElement(Toggle, { title: 'Skip Webhook Issuer Creation', tooltip: 'Skip creation of the webhook issuer', initialValue: formData.skipWebhookIssuerCreation, onChange: (bool) => handleFormChange('skipWebhookIssuerCreation', bool) }),
4838
+ React.createElement(Toggle, { title: 'Automatic Rollout Disabled', tooltip: 'Disable automatic rollout of pods after instrumentation', initialValue: formData.rollout?.automaticRolloutDisabled, onChange: (bool) => handleFormChange('rollout.automaticRolloutDisabled', bool) }),
4839
+ React.createElement(Input, { title: 'Cluster Name', tooltip: 'Name of the cluster', value: formData.clusterName, onChange: (e) => handleFormChange('clusterName', e.target.value) }),
4840
+ React.createElement(Input, { title: 'Image Prefix', tooltip: 'Image prefix for all Odigos components', value: formData.imagePrefix, onChange: (e) => handleFormChange('imagePrefix', e.target.value) }),
4841
+ React.createElement(InputList, { title: 'Ignored Namespaces', tooltip: 'List of namespaces to exclude from instrumentation', value: formData.ignoredNamespaces, onChange: (arr) => handleFormChange('ignoredNamespaces', arr) }),
4842
+ React.createElement(InputList, { title: 'Ignored Containers', tooltip: 'List of container names to exclude from instrumentation', value: formData.ignoredContainers, onChange: (arr) => handleFormChange('ignoredContainers', arr) }),
4843
+ React.createElement(Dropdown, { title: 'Profiles', tooltip: 'Profiles to enable', isMulti: true, options: PROFILE_OPTIONS, value: PROFILE_OPTIONS.filter((option) => formData.profiles.includes(option.id)), onSelect: (option) => handleFormChange('profiles', [...formData.profiles, option.id]), onDeselect: (option) => handleFormChange('profiles', formData.profiles.filter((p) => p !== option.id)) }),
4844
+ React.createElement(Dropdown, { title: 'Mount Method', tooltip: 'Method used to mount volume', options: MOUNT_METHOD_OPTIONS, value: MOUNT_METHOD_OPTIONS.find((option) => option.id === formData.mountMethod), onSelect: (option) => handleFormChange('mountMethod', option.id) }),
4845
+ React.createElement(Dropdown, { title: 'Agent Env Vars Injection Method', tooltip: 'How to inject env vars into agents', options: AGENT_ENV_VARS_INJECTION_METHOD_OPTIONS, value: AGENT_ENV_VARS_INJECTION_METHOD_OPTIONS.find((option) => option.id === formData.agentEnvVarsInjectionMethod), onSelect: (option) => handleFormChange('agentEnvVarsInjectionMethod', option.id) }),
4846
+ React.createElement(Input, { title: 'Custom Container Runtime Socket Path', tooltip: 'Path to the custom container runtime socket', value: formData.customContainerRuntimeSocketPath, onChange: (e) => handleFormChange('customContainerRuntimeSocketPath', e.target.value) }),
4847
+ React.createElement(Input, { title: 'Odiglet Health Probe Bind Port', tooltip: 'Port to bind the health probe', value: formData.odigletHealthProbeBindPort.toString(), onChange: (e) => handleFormChange('odigletHealthProbeBindPort', Number(e.target.value)) }),
4848
+ React.createElement(Toggle, { title: 'Rollback Disabled', tooltip: 'Disable rollback', initialValue: formData.rollbackDisabled, onChange: (bool) => handleFormChange('rollbackDisabled', bool) }),
4849
+ React.createElement(Input, { title: 'Rollback Grace Time', tooltip: 'Grace time for rollback', value: formData.rollbackGraceTime, onChange: (e) => handleFormChange('rollbackGraceTime', e.target.value) }),
4850
+ React.createElement(Input, { title: 'Rollback Stability Window', tooltip: 'Stability window for rollback', value: formData.rollbackStabilityWindow, onChange: (e) => handleFormChange('rollbackStabilityWindow', e.target.value) }),
4851
+ React.createElement(KeyValueInputsList, { title: 'Node Selector', value: Object.entries(formData.nodeSelector || {}).map(([key, value]) => ({
4852
+ key,
4853
+ value,
4854
+ })), onChange: (arr) => handleFormChange('nodeSelector', arr.reduce((acc, { key, value }) => ({
4855
+ ...acc,
4856
+ [key]: value,
4857
+ }), {})) })));
4858
+ };
4859
+
4860
+ const CollectorNodeSettings = ({ formData, handleFormChange }) => {
4861
+ return (React.createElement(Card, null,
4862
+ React.createElement(CardTitle, null, "Collector Node"),
4863
+ React.createElement(Input, { title: 'Collector Own Metrics Port', tooltip: "Port for the collector's own Prometheus metrics", type: 'number', value: formData.collectorNode?.collectorOwnMetricsPort?.toString() || '', onChange: (e) => handleFormChange('collectorNode.collectorOwnMetricsPort', Number(e.target.value)) }),
4864
+ React.createElement(Input, { title: 'Request Memory (MB)', tooltip: 'Request memory for the collector node in Megabytes', type: 'number', value: formData.collectorNode?.requestMemoryMiB?.toString() || '', onChange: (e) => handleFormChange('collectorNode.requestMemoryMiB', Number(e.target.value)) }),
4865
+ React.createElement(Input, { title: 'Limit Memory (MB)', tooltip: 'Limit memory for the collector node in Megabytes', type: 'number', value: formData.collectorNode?.limitMemoryMiB?.toString() || '', onChange: (e) => handleFormChange('collectorNode.limitMemoryMiB', Number(e.target.value)) }),
4866
+ React.createElement(Input, { title: 'Request CPU (Millicores)', tooltip: 'Request CPU for the collector node in Millicores', type: 'number', value: formData.collectorNode?.requestCPUm?.toString() || '', onChange: (e) => handleFormChange('collectorNode.requestCPUm', Number(e.target.value)) }),
4867
+ React.createElement(Input, { title: 'Limit CPU (Millicores)', tooltip: 'Limit CPU for the collector node in Millicores', type: 'number', value: formData.collectorNode?.limitCPUm?.toString() || '', onChange: (e) => handleFormChange('collectorNode.limitCPUm', Number(e.target.value)) }),
4868
+ React.createElement(Input, { title: 'Memory Limiter Limit (MB)', tooltip: 'Memory limiter limit for the collector node in Megabytes', type: 'number', value: formData.collectorNode?.memoryLimiterLimitMiB?.toString() || '', onChange: (e) => handleFormChange('collectorNode.memoryLimiterLimitMiB', Number(e.target.value)) }),
4869
+ React.createElement(Input, { title: 'Memory Limiter Spike Limit (MB)', tooltip: 'Memory limiter spike limit for the collector node in Megabytes', type: 'number', value: formData.collectorNode?.memoryLimiterSpikeLimitMiB?.toString() || '', onChange: (e) => handleFormChange('collectorNode.memoryLimiterSpikeLimitMiB', Number(e.target.value)) }),
4870
+ React.createElement(Input, { title: 'Go Memory Limit (MB)', tooltip: 'Go memory limit for the collector node in Megabytes', type: 'number', value: formData.collectorNode?.goMemLimitMiB?.toString() || '', onChange: (e) => handleFormChange('collectorNode.goMemLimitMiB', Number(e.target.value)) }),
4871
+ React.createElement(Input, { title: 'K8s Node Logs Directory', tooltip: 'Target directory for K8s logs if `/var/log` is a symlink', value: formData.collectorNode?.k8sNodeLogsDirectory || '', onChange: (e) => handleFormChange('collectorNode.k8sNodeLogsDirectory', e.target.value) })));
4872
+ };
4873
+
4874
+ const CollectorGatewaySettings = ({ formData, handleFormChange }) => {
4875
+ return (React.createElement(Card, null,
4876
+ React.createElement(CardTitle, null, "Collector Gateway"),
4877
+ React.createElement(Input, { title: 'Min. Replicas', tooltip: 'Minimum number of replicas for the collector gateway', type: 'number', value: formData.collectorGateway?.minReplicas?.toString() || '', onChange: (e) => handleFormChange('collectorGateway.minReplicas', Number(e.target.value)) }),
4878
+ React.createElement(Input, { title: 'Max. Replicas', tooltip: 'Maximum number of replicas for the collector gateway', type: 'number', value: formData.collectorGateway?.maxReplicas?.toString() || '', onChange: (e) => handleFormChange('collectorGateway.maxReplicas', Number(e.target.value)) }),
4879
+ React.createElement(Input, { title: 'Request Memory (MB)', tooltip: 'Request memory for the collector gateway in Megabytes', type: 'number', value: formData.collectorGateway?.requestMemoryMiB?.toString() || '', onChange: (e) => handleFormChange('collectorGateway.requestMemoryMiB', Number(e.target.value)) }),
4880
+ React.createElement(Input, { title: 'Limit Memory (MB)', tooltip: 'Limit memory for the collector gateway in Megabytes', type: 'number', value: formData.collectorGateway?.limitMemoryMiB?.toString() || '', onChange: (e) => handleFormChange('collectorGateway.limitMemoryMiB', Number(e.target.value)) }),
4881
+ React.createElement(Input, { title: 'Request CPU (Millicores)', tooltip: 'Request CPU for the collector gateway in Millicores', type: 'number', value: formData.collectorGateway?.requestCPUm?.toString() || '', onChange: (e) => handleFormChange('collectorGateway.requestCPUm', Number(e.target.value)) }),
4882
+ React.createElement(Input, { title: 'Limit CPU (Millicores)', tooltip: 'Limit CPU for the collector gateway in Millicores', type: 'number', value: formData.collectorGateway?.limitCPUm?.toString() || '', onChange: (e) => handleFormChange('collectorGateway.limitCPUm', Number(e.target.value)) }),
4883
+ React.createElement(Input, { title: 'Memory Limiter Limit (MB)', tooltip: 'Memory limiter limit for the collector gateway in Megabytes', type: 'number', value: formData.collectorGateway?.memoryLimiterLimitMiB?.toString() || '', onChange: (e) => handleFormChange('collectorGateway.memoryLimiterLimitMiB', Number(e.target.value)) }),
4884
+ React.createElement(Input, { title: 'Memory Limiter Spike Limit (MB)', tooltip: 'Memory limiter spike limit for the collector gateway in Megabytes', type: 'number', value: formData.collectorGateway?.memoryLimiterSpikeLimitMiB?.toString() || '', onChange: (e) => handleFormChange('collectorGateway.memoryLimiterSpikeLimitMiB', Number(e.target.value)) }),
4885
+ React.createElement(Input, { title: 'Go Memory Limit (MB)', tooltip: 'Go memory limit for the collector gateway in Megabytes', type: 'number', value: formData.collectorGateway?.goMemLimitMiB?.toString() || '', onChange: (e) => handleFormChange('collectorGateway.goMemLimitMiB', Number(e.target.value)) })));
4886
+ };
4887
+
4888
+ const UserInstrumentationEnvsSettings = ({ formData, handleFormChange }) => {
4889
+ return (React.createElement(Card, null,
4890
+ React.createElement(CardTitle, null, "User Instrumentation Environment Variables"),
4891
+ INSTRUMENTATION_LANG_OPTIONS.map(({ id, value, icon }) => (React.createElement(Card, { key: `${id}-card` },
4892
+ React.createElement(FlexRow, { "$gap": 8, "$alignItems": 'flex-start' },
4893
+ React.createElement(FlexRow, { "$gap": 8 },
4894
+ React.createElement(FlexRow, { "$gap": 8, style: { minWidth: '100px' } },
4895
+ React.createElement(IconWrapped, { icon: icon }),
4896
+ React.createElement(Text, { size: 14 }, value)),
4897
+ React.createElement(Tooltip, { text: 'enable/disable user instrumentation for this language' },
4898
+ React.createElement(Toggle, { initialValue: formData.userInstrumentationEnvs?.languages[id]?.enabled, onChange: (bool) => handleFormChange(`userInstrumentationEnvs.languages.${id}.enabled`, bool) }))),
4899
+ React.createElement(KeyValueInputsList, { inputMaxWidth: 220, disabled: !formData.userInstrumentationEnvs?.languages[id]?.enabled, value: Object.entries(formData.userInstrumentationEnvs?.languages[id]?.env || {}).map(([k, v]) => ({
4900
+ key: k,
4901
+ value: v,
4902
+ })), onChange: (rows) => {
4903
+ handleFormChange(`userInstrumentationEnvs.languages.${id}.env`, rows.reduce((acc, { key, value }) => ({
4904
+ ...acc,
4905
+ [key]: value,
4906
+ }), {}));
4907
+ } })))))));
4908
+ };
4909
+
4910
+ const DataContainer = styled.div `
4911
+ display: flex;
4912
+ flex-direction: column;
4913
+ gap: 12px;
4914
+ `;
4915
+ const DRAWER_WIDTH = '750px';
4916
+ const TITLE_TEXT = 'System Settings';
4917
+ const SystemSettings = ({ fetchSettings, onSave }) => {
4918
+ const [settings, setSettings] = useState(undefined);
4919
+ const { formData, handleFormChange, resetFormData, isFormDirty } = useGenericForm(settings);
4920
+ useEffect(() => {
4921
+ fetchSettings().then(setSettings);
4922
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4923
+ }, []);
4924
+ const [isSaving, setIsSaving] = useState(false);
4925
+ const [isOpen, setIsOpen] = useState(false);
4926
+ const toggleOpen = () => setIsOpen((prev) => !prev);
4927
+ const [cancelWarningOpen, setCancelWarningOpen] = useState(false);
4928
+ const [cancelApproveCallback, setCancelApproveCallback] = useState(null);
4929
+ const handleWithCancelWarning = (callback) => {
4930
+ if (isFormDirty) {
4931
+ setCancelWarningOpen(true);
4932
+ setCancelApproveCallback(() => callback);
4933
+ }
4934
+ else {
4935
+ callback();
4936
+ }
4937
+ };
4938
+ return (React.createElement(React.Fragment, null,
4939
+ React.createElement(IconButton, { key: TITLE_TEXT, onClick: toggleOpen, tooltip: TITLE_TEXT },
4940
+ React.createElement(GearIcon, { size: 18 })),
4941
+ React.createElement(Drawer, { width: DRAWER_WIDTH, isOpen: isOpen, onClose: () => handleWithCancelWarning(toggleOpen), header: {
4942
+ icons: [GearIcon],
4943
+ title: TITLE_TEXT,
4944
+ }, footer: {
4945
+ isOpen: isFormDirty,
4946
+ centerButtons: [
4947
+ {
4948
+ 'data-id': 'drawer-cancel',
4949
+ variant: 'secondary',
4950
+ onClick: () => handleWithCancelWarning(resetFormData),
4951
+ children: BUTTON_TEXTS.CANCEL,
4952
+ },
4953
+ {
4954
+ 'data-id': 'drawer-save',
4955
+ variant: 'primary',
4956
+ onClick: async () => {
4957
+ setIsSaving(true);
4958
+ await onSave(formData);
4959
+ setSettings(await fetchSettings());
4960
+ setIsSaving(false);
4961
+ toggleOpen();
4962
+ },
4963
+ children: BUTTON_TEXTS.SAVE,
4964
+ },
4965
+ ],
4966
+ } }, formData?.imagePrefix !== undefined && !isSaving ? (React.createElement(DataContainer, null,
4967
+ React.createElement(UserInstrumentationEnvsSettings, { formData: formData, handleFormChange: handleFormChange }),
4968
+ React.createElement(UiSettings, { formData: formData, handleFormChange: handleFormChange }),
4969
+ React.createElement(CollectorNodeSettings, { formData: formData, handleFormChange: handleFormChange }),
4970
+ React.createElement(CollectorGatewaySettings, { formData: formData, handleFormChange: handleFormChange }),
4971
+ React.createElement(OtherSettings, { formData: formData, handleFormChange: handleFormChange }))) : (React.createElement(CenterThis, null,
4972
+ React.createElement(FadeLoader, { scale: 1.2 })))),
4973
+ React.createElement(CancelWarning, { isOpen: cancelWarningOpen, name: TITLE_TEXT, onApprove: () => {
4974
+ cancelApproveCallback?.();
4975
+ setCancelWarningOpen(false);
4976
+ }, onDeny: () => {
4977
+ setCancelWarningOpen(false);
4978
+ } })));
4979
+ };
4980
+
4726
4981
  const Container$1 = styled.div `
4727
4982
  position: fixed;
4728
4983
  bottom: 12px;
@@ -4800,4 +5055,4 @@ const ToggleDarkMode = () => {
4800
5055
  React.createElement(Background, { "$darkMode": darkMode })));
4801
5056
  };
4802
5057
 
4803
- export { ActionDrawer, ActionForm, ActionModal, ActionTable, AwaitPipeline, ComputePlatformSelect, ComputePlatforms, ComputePlatformsActionsMenu, ConditionDropdown, ConnectionStatusDropdown, ConnectionTypeDropdown, DataFlow, DataFlowActionsMenu, DataStreamDrawer, DataStreamForm, DataStreamSelectionForm, DestinationDrawer, DestinationForm, DestinationModal, DestinationSelectionForm, DestinationTable, ErrorDropdown, InstrumentationRuleDrawer, InstrumentationRuleForm, InstrumentationRuleModal, InstrumentationRuleTable, KindDropdown, LanguageDropdown, MonitorDropdown, MultiSourceControl, NamespaceDropdown, NavIconIds, NotificationManager, OverviewDrawer, ServiceMap, SetupSummary, SideNav, SlackInvite, SourceDrawer, SourceForm, SourceModal, SourceSelectionForm, SourceTable, SystemOverview, TableCellConditions, ToastList, ToggleDarkMode };
5058
+ export { ActionDrawer, ActionForm, ActionModal, ActionTable, AwaitPipeline, ComputePlatformSelect, ComputePlatforms, ComputePlatformsActionsMenu, ConditionDropdown, ConnectionStatusDropdown, ConnectionTypeDropdown, DataFlow, DataFlowActionsMenu, DataStreamDrawer, DataStreamForm, DataStreamSelectionForm, DestinationDrawer, DestinationForm, DestinationModal, DestinationSelectionForm, DestinationTable, ErrorDropdown, InstrumentationRuleDrawer, InstrumentationRuleForm, InstrumentationRuleModal, InstrumentationRuleTable, KindDropdown, LanguageDropdown, MonitorDropdown, MultiSourceControl, NamespaceDropdown, NavIconIds, NotificationManager, OverviewDrawer, ServiceMap, SetupSummary, SideNav, SlackInvite, SourceDrawer, SourceForm, SourceModal, SourceSelectionForm, SourceTable, SystemOverview, SystemSettings, TableCellConditions, ToastList, ToggleDarkMode };
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-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';
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, 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-42f40e7c.js';
3
3
  export { d as deepClone, i as isEmpty, s as safeJsonParse } from './index-5e5f7bda.js';
4
- export { g as getActionIcon, c as getEntityId, d as getInstrumentationRuleIcon, e as getProgrammingLanguageIcon } from './index-8dad36e5.js';
4
+ export { g as getActionIcon, c as getEntityId, d as getInstrumentationRuleIcon, e as getProgrammingLanguageIcon } from './index-bd48e6e2.js';
5
5
  export { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
6
6
  import { ProgrammingLanguages, EntityTypes } from './types.js';
7
7
  import 'react';
8
8
  import 'styled-components';
9
- import './index-4e685db0.js';
10
- import './index-ff8fcc81.js';
9
+ import './index-50101bec.js';
10
+ import './index-acc7c7dd.js';
11
11
 
12
12
  const cleanObjectEmptyStringsValues = (obj) => {
13
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -1,5 +1,5 @@
1
1
  import type { AnyObj } from '@/types';
2
- export declare const useGenericForm: <Form extends AnyObj>(initialFormData: Form) => {
2
+ export declare const useGenericForm: <Form extends AnyObj>(initialFormData: Form | undefined) => {
3
3
  formData: Form;
4
4
  formErrors: Partial<Record<keyof Form, string>>;
5
5
  isFormDirty: boolean;
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-8dad36e5.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';
3
3
  import { useState, useEffect, useMemo } from 'react';
4
4
  import 'styled-components';
5
5
  import { i as isEmpty, s as safeJsonParse } from './index-5e5f7bda.js';
6
- import { i as useGenericForm } from './useTransition-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';
6
+ import { i as useGenericForm } from './useTransition-c2aef0e4.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-c2aef0e4.js';
8
8
  import { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
9
9
 
10
10
  const INITIAL$2 = {
package/lib/icons.js CHANGED
@@ -1,10 +1,10 @@
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';
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 { A as ArrowIcon, C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, G as GearIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RefreshLeftArrowIcon, S as SlackLogo, T as TerminalIcon, U as UserIcon } from './index-c1df4281.js';
5
5
  import React from 'react';
6
- export { h as CheckIcon, C as CodeIcon, a as CopyIcon, i as CrossIcon, E as EditIcon, b as EditedIcon, c as ExtendArrowIcon, f as EyeClosedIcon, g as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, d as NotebookIcon, P as PlusIcon, S as SearchIcon, e as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-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';
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-391844c6.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-acc7c7dd.js';
8
8
  import './types.js';
9
9
  import 'styled-components';
10
10
 
@@ -36,14 +36,6 @@ 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
-
47
39
  const RefreshArrowsIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
48
40
  const theme = Theme.useTheme();
49
41
  const fill = f || theme.text.secondary;
@@ -175,4 +167,4 @@ const ErrorRoundIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth =
175
167
  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' })));
176
168
  };
177
169
 
178
- export { AvatarIcon, CodeBracketsIcon, CommandIcon, ConnectionsIcon, ErrorRoundIcon, FolderIcon, GearIcon, GoogleCloudStorageLogo, LightOffIcon, LightOnIcon, MinusCircledIcon, MoonIcon, PlusCircledIcon, RefreshArrowsIcon, RefreshRightArrowIcon, RotateArrowsIcon, SentryLogo, ServiceMapIcon, SunIcon, TraceViewIcon, UserGroupIcon, UserSettingsIcon };
170
+ export { AvatarIcon, CodeBracketsIcon, CommandIcon, ConnectionsIcon, ErrorRoundIcon, FolderIcon, GoogleCloudStorageLogo, LightOffIcon, LightOnIcon, MinusCircledIcon, MoonIcon, PlusCircledIcon, RefreshArrowsIcon, RefreshRightArrowIcon, RotateArrowsIcon, SentryLogo, ServiceMapIcon, SunIcon, TraceViewIcon, UserGroupIcon, UserSettingsIcon };
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-8dad36e5.js';
2
+ import { T as Theme } from './index-bd48e6e2.js';
3
3
 
4
4
  const CodeIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
5
5
  const theme = Theme.useTheme();
@@ -1,9 +1,9 @@
1
1
  import { StatusType, DestinationTypes, EntityTypes, PlatformType } from './types.js';
2
- import { a as DEFAULT_DATA_STREAM_NAME, e as getProgrammingLanguageIcon, K as KafkaLogo, f as K8sLogo } from './index-8dad36e5.js';
2
+ import { a as DEFAULT_DATA_STREAM_NAME, e as getProgrammingLanguageIcon, k as KafkaLogo, K as K8sLogo } from './index-bd48e6e2.js';
3
3
  import 'react';
4
4
  import 'styled-components';
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';
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
7
  import { s as safeJsonParse } from './index-5e5f7bda.js';
8
8
 
9
9
  const compareCondition = (renderCondition, fields) => {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-8dad36e5.js';
2
+ import { T as Theme } from './index-bd48e6e2.js';
3
3
 
4
4
  const OdigosLogo = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
@@ -1,8 +1,8 @@
1
1
  import { StatusType, OtherStatus, SignalType } from './types.js';
2
2
  import 'react';
3
- import './index-8dad36e5.js';
3
+ import './index-bd48e6e2.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-4e685db0.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-50101bec.js';
6
6
 
7
7
  const capitalizeFirstLetter = (string) => {
8
8
  return string.charAt(0).toUpperCase() + string.slice(1);
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { a3 as WarningModal } from './index-13d8ebb2.js';
2
+ import { a3 as WarningModal } from './index-f2da9ad4.js';
3
3
  import { StatusType, EntityTypes } from './types.js';
4
- import './index-8dad36e5.js';
4
+ import './index-bd48e6e2.js';
5
5
  import 'styled-components';
6
6
 
7
7
  const CancelWarning = ({ isOpen, noOverlay, name, onApprove, onDeny }) => {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-8dad36e5.js';
2
+ import { T as Theme } from './index-bd48e6e2.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 { 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 };
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 };
@@ -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, 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 };
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 };
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-8dad36e5.js';
2
+ import { T as Theme } from './index-bd48e6e2.js';
3
3
 
4
4
  const OdigosLogoText = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
@@ -35,6 +35,14 @@ const FilterIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }
35
35
  React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M5.33341 8H10.6667M7.33341 12H8.66675M2.66675 4H13.3334' })));
36
36
  };
37
37
 
38
+ const GearIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
39
+ const theme = Theme.useTheme();
40
+ const fill = f || theme.text.secondary;
41
+ 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 },
42
+ 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' }),
43
+ 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' })));
44
+ };
45
+
38
46
  const KeyIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
39
47
  const theme = Theme.useTheme();
40
48
  const fill = f || theme.text.secondary;
@@ -104,4 +112,4 @@ const CrossCircledIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth
104
112
  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' })));
105
113
  };
106
114
 
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 };
115
+ export { ArrowIcon as A, CrossCircledIcon as C, DataStreamsIcon as D, FilterIcon as F, GearIcon as G, 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,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, 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';
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
3
  import styled, { css } from 'styled-components';
4
- import { M as MinusIcon$1, h as CheckIcon, L as ListIcon, C as CodeIcon, c as ExtendArrowIcon, P as PlusIcon$1, a as CopyIcon, E as EditIcon, b as EditedIcon, e as SortArrowsIcon, d as NotebookIcon, X as XIcon, f as EyeClosedIcon, g as EyeOpenIcon, N as NoDataIcon, i as CrossIcon, S as SearchIcon, T as TrashIcon } from './index-b44c0701.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-391844c6.js';
5
5
  import { StatusType, OtherStatus, EntityTypes, NodeTypes, AddNodeTypes, EdgeTypes, ProgrammingLanguages, IntrumentationStatus, SortDirection, InputTypes, FieldTypes } from './types.js';
6
6
  import { s as safeJsonParse, i as isEmpty } from './index-5e5f7bda.js';
7
- import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, g as getConditionsBooleans, c as capitalizeFirstLetter, a as getMonitorIcon, i as isStringABoolean, p as parseBooleanFromString, d as isValidVersion, h as splitCamelString, e as parseJsonStringToPrettyString, n as numbersOnly } from './index-23b2865d.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-58440c5c.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-985cc4a8.js';
10
- import { I as InfoIcon } from './index-4e685db0.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-c2aef0e4.js';
10
+ import { I as InfoIcon } from './index-50101bec.js';
11
11
 
12
12
  const TextWrapper$2 = styled.div `
13
13
  color: ${({ $color, theme }) => $color || theme.text.secondary};
package/lib/snippets.js CHANGED
@@ -1,15 +1,15 @@
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';
1
+ import { B as Button, _ as Text, L as NotificationNote } from './index-f2da9ad4.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-f2da9ad4.js';
3
3
  import React from 'react';
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';
4
+ import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-bd48e6e2.js';
5
+ import { E as EditIcon } from './index-391844c6.js';
6
6
  import { StatusType } from './types.js';
7
7
  import 'styled-components';
8
- import { I as InfoIcon } from './index-4e685db0.js';
8
+ import { I as InfoIcon } from './index-50101bec.js';
9
9
  import './index-5e5f7bda.js';
10
- import './index-23b2865d.js';
10
+ import './index-58440c5c.js';
11
11
  import 'react-dom';
12
- import './useTransition-985cc4a8.js';
12
+ import './useTransition-c2aef0e4.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-8dad36e5.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-bd48e6e2.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-8dad36e5.js';
1
+ export { T as default } from './index-bd48e6e2.js';
2
2
  import 'styled-components';
3
3
  import 'react';
4
4
  import './types.js';
@@ -1,6 +1,6 @@
1
- import { z as useModalStore, O as useDrawerStore, Q as useActiveNodeStore } from './index-8dad36e5.js';
1
+ import { z as useModalStore, O as useDrawerStore, Q as useActiveNodeStore } from './index-bd48e6e2.js';
2
2
  import { AddNodeTypes, EntityTypes, PayloadCollectionKeyTypes, CodeAttributesKeyTypes, CustomInstrumentationsKeyTypes } from './types.js';
3
- import React, { useState, useMemo, useRef, useEffect, useCallback } from 'react';
3
+ import React, { useState, useMemo, useEffect, useRef, useCallback } from 'react';
4
4
  import styled from 'styled-components';
5
5
  import { d as deepClone } from './index-5e5f7bda.js';
6
6
 
@@ -9,10 +9,20 @@ const useGenericForm = (initialFormData) => {
9
9
  // this is to avoid reference issues with the initial form data,
10
10
  // when an object has arrays or objects as part of it's values, a simple spread operator won't work, the children would act as references,
11
11
  // so we use JSON.parse(JSON.stringify()) to create a deep copy of the object without affecting the original
12
+ if (initialFormData === undefined)
13
+ return {};
12
14
  return JSON.parse(JSON.stringify(initialFormData));
13
15
  }
14
16
  const [formData, setFormData] = useState(copyInitial());
15
17
  const [formErrors, setFormErrors] = useState({});
18
+ const isFormDirty = useMemo(() => {
19
+ return initialFormData !== undefined && JSON.stringify(formData) !== JSON.stringify(initialFormData);
20
+ }, [initialFormData, formData]);
21
+ useEffect(() => {
22
+ if (initialFormData !== undefined && JSON.stringify(formData) === '{}')
23
+ setFormData(copyInitial());
24
+ // eslint-disable-next-line react-hooks/exhaustive-deps
25
+ }, [initialFormData, formData]);
16
26
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
27
  const handleFormChange = (key, val, obj) => {
18
28
  if (key) {
@@ -57,9 +67,6 @@ const useGenericForm = (initialFormData) => {
57
67
  setFormData(copyInitial());
58
68
  setFormErrors({});
59
69
  };
60
- const isFormDirty = useMemo(() => {
61
- return JSON.stringify(formData) !== JSON.stringify(initialFormData);
62
- }, [formData, initialFormData]);
63
70
  return {
64
71
  formData,
65
72
  formErrors,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odigos/ui-kit",
3
- "version": "0.0.64",
3
+ "version": "0.0.65",
4
4
  "author": "Odigos",
5
5
  "repository": {
6
6
  "type": "git",