@odigos/ui-kit 0.0.31 → 0.0.33

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 (47) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/lib/components.js +10 -13
  3. package/lib/constants/strings/index.d.ts +1 -0
  4. package/lib/constants.js +3 -6
  5. package/lib/containers/data-stream-drawer/index.d.ts +1 -1
  6. package/lib/containers/data-stream-form/index.d.ts +1 -0
  7. package/lib/containers/destination-selection-form/destination-list/index.d.ts +2 -0
  8. package/lib/containers/instrumentation-rule-form/custom-fields/headers-collection.d.ts +5 -0
  9. package/lib/containers/setup-summary/index.d.ts +2 -0
  10. package/lib/containers.js +73 -76
  11. package/lib/functions/get-yaml-fields-for-destination/index.d.ts +2 -0
  12. package/lib/functions/index.d.ts +3 -0
  13. package/lib/functions/is-legal-k8s-label/index.d.ts +1 -0
  14. package/lib/functions/map-destination-fields-for-display/index.d.ts +6 -0
  15. package/lib/functions.js +8 -10
  16. package/lib/hooks/useInstrumentationRuleFormData.d.ts +1 -1
  17. package/lib/hooks.js +6 -9
  18. package/lib/icons/instrumentation-rules/headers-collection-icon/headers-collection-icon.stories.d.ts +8 -0
  19. package/lib/icons/instrumentation-rules/headers-collection-icon/index.d.ts +2 -0
  20. package/lib/icons/instrumentation-rules/index.d.ts +1 -0
  21. package/lib/icons.js +7 -8
  22. package/lib/{index-BbbCCewR.js → index-1N9wymEq.js} +1 -1
  23. package/lib/{index-CWbxXTof.js → index-BQQZyvRz.js} +1 -1
  24. package/lib/{index-CJs4RDHU.js → index-B_Gl6Qa6.js} +2 -3
  25. package/lib/{index-nltUpkWT.js → index-BedCNcwV.js} +7 -9
  26. package/lib/{index-B46Mcu9H.js → index-BjVl4-os.js} +5 -6
  27. package/lib/{index-BJxaoI0G.js → index-CNfdJ1X8.js} +1 -1
  28. package/lib/index-CVH8Q8Sl.js +1178 -0
  29. package/lib/{index-BGK1nMOD.js → index-CaAOgaiC.js} +2 -2
  30. package/lib/{index-7-KCQK-x.js → index-CnZlllYu.js} +10 -1
  31. package/lib/{index-IKusBlIE.js → index-Do3CYz7N.js} +1 -1
  32. package/lib/{index-DYNMhZMX.js → index-Iq7U_fzb.js} +42 -7
  33. package/lib/{index-CamnKrev.js → index-f8FRaVkE.js} +1 -1
  34. package/lib/index-mOgS3e5E.js +101 -0
  35. package/lib/snippets.js +10 -13
  36. package/lib/store.js +2 -2
  37. package/lib/theme.js +3 -233
  38. package/lib/types/instrumentation-rules/index.d.ts +26 -18
  39. package/lib/types.js +15 -9
  40. package/lib/{useSourceSelectionFormData-BWz8fTJr.js → useSourceSelectionFormData-DiwzViqL.js} +9 -5
  41. package/lib/{useTransition-B65KBqdK.js → useTransition-B0eagOib.js} +1 -2
  42. package/package.json +1 -1
  43. package/lib/index-CFnxjzaW.js +0 -37
  44. package/lib/index-DGel4E-Z.js +0 -67
  45. package/lib/index-DGuOxbBR.js +0 -227
  46. package/lib/index-DMXaEyAB.js +0 -720
  47. package/lib/{index-BZS1ijMm.js → index-BV85P9UP.js} +14 -14
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.33](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.32...ui-kit-v0.0.33) (2025-05-27)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * Data Stream bugs ([#140](https://github.com/odigos-io/ui-kit/issues/140)) ([1af6a2f](https://github.com/odigos-io/ui-kit/commit/1af6a2f66720aca790d6179a3df47585362884c9))
9
+
10
+ ## [0.0.32](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.31...ui-kit-v0.0.32) (2025-05-25)
11
+
12
+
13
+ ### Features
14
+
15
+ * add HTTP Headers instrumentation rule ([#133](https://github.com/odigos-io/ui-kit/issues/133)) ([4caa7d2](https://github.com/odigos-io/ui-kit/commit/4caa7d28615398828ed66514b285bcb9968dda26))
16
+ * enhance filterSourcesByStream to handle default data stream case ([#136](https://github.com/odigos-io/ui-kit/issues/136)) ([b034330](https://github.com/odigos-io/ui-kit/commit/b03433061e72102940075cb9edbe29b2ad145471))
17
+
3
18
  ## [0.0.31](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.30...ui-kit-v0.0.31) (2025-05-20)
4
19
 
5
20
 
package/lib/components.js CHANGED
@@ -1,19 +1,16 @@
1
- import { B as Button } from './index-nltUpkWT.js';
2
- export { a as AutocompleteInput, b as Badge, a1 as CenterThis, C as Checkbox, c as Code, d as ConditionDetails, D as DataCard, f as DataCardFieldTypes, e as DataCardFields, g as DataTab, h as Divider, i as DocsButton, j as Drawer, l as DrawerFooter, k as DrawerHeader, m as Dropdown, E as ExtendArrow, F as FadeLoader, n as FieldError, o as FieldLabel, a0 as FlexColumn, $ as FlexRow, H as Header, I as IconButton, p as IconGroup, q as IconTitleBadge, r as IconWrapped, s as IconsNav, t as ImageControlled, u as Input, v as InputList, w as InputTable, x as InteractiveTable, K as KeyValueInputsList, M as Modal, a4 as ModalBody, y as MonitorsCheckboxes, z as MonitorsIcons, N as NavigationButtons, G as NoDataFound, J as NotificationNote, a3 as Overlay, S as ScrollX, L as SectionTitle, O as Segment, P as SelectionButton, Q as SkeletonLoader, R as Status, U as Stepper, a5 as TableContainer, a6 as TableTitleWrap, a7 as TableWrap, V as Text, W as TextArea, X as Toggle, T as ToggleCodeComponent, Y as Tooltip, Z as TraceLoader, a2 as VerticalScroll, _ as WarningModal } from './index-nltUpkWT.js';
3
- export { C as CancelWarning, D as DeleteWarning } from './index-BGK1nMOD.js';
1
+ import { B as Button } from './index-BedCNcwV.js';
2
+ export { a as AutocompleteInput, b as Badge, a1 as CenterThis, C as Checkbox, c as Code, d as ConditionDetails, D as DataCard, f as DataCardFieldTypes, e as DataCardFields, g as DataTab, h as Divider, i as DocsButton, j as Drawer, l as DrawerFooter, k as DrawerHeader, m as Dropdown, E as ExtendArrow, F as FadeLoader, n as FieldError, o as FieldLabel, a0 as FlexColumn, $ as FlexRow, H as Header, I as IconButton, p as IconGroup, q as IconTitleBadge, r as IconWrapped, s as IconsNav, t as ImageControlled, u as Input, v as InputList, w as InputTable, x as InteractiveTable, K as KeyValueInputsList, M as Modal, a4 as ModalBody, y as MonitorsCheckboxes, z as MonitorsIcons, N as NavigationButtons, G as NoDataFound, J as NotificationNote, a3 as Overlay, S as ScrollX, L as SectionTitle, O as Segment, P as SelectionButton, Q as SkeletonLoader, R as Status, U as Stepper, a5 as TableContainer, a6 as TableTitleWrap, a7 as TableWrap, V as Text, W as TextArea, X as Toggle, T as ToggleCodeComponent, Y as Tooltip, Z as TraceLoader, a2 as VerticalScroll, _ as WarningModal } from './index-BedCNcwV.js';
3
+ export { C as CancelWarning, D as DeleteWarning } from './index-CaAOgaiC.js';
4
4
  import React, { Component, createElement, createContext } from 'react';
5
- import Theme from './theme.js';
5
+ import { T as Theme } from './index-CVH8Q8Sl.js';
6
6
  import 'styled-components';
7
- import './index-BJxaoI0G.js';
7
+ import './index-CNfdJ1X8.js';
8
8
  import './types.js';
9
- import './index-BZS1ijMm.js';
10
- import './index-DGuOxbBR.js';
11
- import './index-CFnxjzaW.js';
12
- import './index-DGel4E-Z.js';
13
- import './index-DMXaEyAB.js';
14
- import './index-CJs4RDHU.js';
15
- import './index-IKusBlIE.js';
16
- import './useTransition-B65KBqdK.js';
9
+ import './index-BV85P9UP.js';
10
+ import './index-mOgS3e5E.js';
11
+ import './index-B_Gl6Qa6.js';
12
+ import './index-Do3CYz7N.js';
13
+ import './useTransition-B0eagOib.js';
17
14
  import 'react-dom';
18
15
 
19
16
  const ErrorBoundaryContext = createContext(null);
@@ -9,6 +9,7 @@ export declare const FORM_ALERTS: {
9
9
  CANNOT_DELETE_RULE: string;
10
10
  LATENCY_HTTP_ROUTE: string;
11
11
  READONLY_WARNING: string;
12
+ ILLEGAL_K8S_LABEL: string;
12
13
  };
13
14
  export declare const DISPLAY_TITLES: {
14
15
  NAMESPACE: string;
package/lib/constants.js CHANGED
@@ -1,11 +1,8 @@
1
- export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, D as DEFAULT_DATA_STREAM_NAME, a as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, M as MONITORS_OPTIONS } from './index-DGuOxbBR.js';
1
+ export { A as ACTION_OPTIONS, I as INSTRUMENTATION_RULE_OPTIONS, M as MONITORS_OPTIONS } from './index-CVH8Q8Sl.js';
2
2
  export { D as DESTINATION_CATEGORIES } from './index-Dqief9td.js';
3
- import './types.js';
4
- import './index-CFnxjzaW.js';
5
- import './index-DGel4E-Z.js';
3
+ export { B as BUTTON_TEXTS, D as DEFAULT_DATA_STREAM_NAME, a as DISPLAY_TITLES, F as FORM_ALERTS } from './index-mOgS3e5E.js';
6
4
  import 'react';
7
- import './theme.js';
8
- import './index-DMXaEyAB.js';
5
+ import './types.js';
9
6
  import 'styled-components';
10
7
 
11
8
  const TOKEN_ABOUT_TO_EXPIRE = 604800000; // 7 days in milliseconds
@@ -1,5 +1,5 @@
1
1
  import { type FC } from 'react';
2
- import type { DataStream } from '@/types';
2
+ import { type DataStream } from '@/types';
3
3
  interface DataStreamDrawerProps {
4
4
  isOpen: boolean;
5
5
  onClose: () => void;
@@ -3,6 +3,7 @@ import type { DataStream } from '@/types';
3
3
  interface DataStreamFormProps {
4
4
  formData: DataStream;
5
5
  handleFormChange: (key: keyof DataStream, val: any) => void;
6
+ formErrors: Partial<Record<'name', string>>;
6
7
  }
7
8
  declare const DataStreamForm: FC<DataStreamFormProps>;
8
9
  export { DataStreamForm, type DataStreamFormProps };
@@ -1,5 +1,7 @@
1
1
  import { type FC } from 'react';
2
+ import { type DestinationCategories } from '@/types';
2
3
  interface DestinationListProps {
4
+ categories: DestinationCategories;
3
5
  withDelete?: boolean;
4
6
  }
5
7
  declare const DestinationList: FC<DestinationListProps>;
@@ -0,0 +1,5 @@
1
+ import { type FC } from 'react';
2
+ import { type CustomFieldProps, type InstrumentationRuleFormData } from '@/types';
3
+ type HeadersCollectionProps = CustomFieldProps<InstrumentationRuleFormData>;
4
+ declare const HeadersCollection: FC<HeadersCollectionProps>;
5
+ export { HeadersCollection, type HeadersCollectionProps };
@@ -1,8 +1,10 @@
1
1
  import { type FC } from 'react';
2
+ import type { DestinationCategories } from '@/types';
2
3
  interface SetupSummaryProps {
3
4
  onEditStream: () => void;
4
5
  onEditSources: () => void;
5
6
  onEditDestinations: () => void;
7
+ categories: DestinationCategories;
6
8
  }
7
9
  declare const SetupSummary: FC<SetupSummaryProps>;
8
10
  export { SetupSummary, type SetupSummaryProps };
package/lib/containers.js CHANGED
@@ -1,27 +1,24 @@
1
1
  import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle, useMemo, memo, useContext, createContext, useCallback, useLayoutEffect, Fragment } from 'react';
2
2
  import styled, { css } from 'styled-components';
3
- import { a as DISPLAY_TITLES, B as BUTTON_TEXTS, A as ACTION_OPTIONS, F as FORM_ALERTS, M as MONITORS_OPTIONS, D as DEFAULT_DATA_STREAM_NAME, I as INSTRUMENTATION_RULE_OPTIONS } from './index-DGuOxbBR.js';
4
- import { ActionType, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, AddNodeTypes, EdgeTypes, FieldTypes, SignalType, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType } from './types.js';
5
- import { f as DataCardFieldTypes, o as FieldLabel, C as Checkbox, n as FieldError, u as Input, w as InputTable, K as KeyValueInputsList, v as InputList, V as Text, O as Segment, L as SectionTitle, i as DocsButton, y as MonitorsCheckboxes, W as TextArea, j as Drawer, d as ConditionDetails, D as DataCard, a0 as FlexColumn, M as Modal, N as NavigationButtons, a4 as ModalBody, J as NotificationNote, a as AutocompleteInput, h as Divider, R as Status, $ as FlexRow, Y as Tooltip, r as IconWrapped, z as MonitorsIcons, a5 as TableContainer, a6 as TableTitleWrap, q as IconTitleBadge, a7 as TableWrap, x as InteractiveTable, a1 as CenterThis, G as NoDataFound, Z as TraceLoader, b as Badge, E as ExtendArrow, a2 as VerticalScroll, P as SelectionButton, B as Button, m as Dropdown, a8 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, Q as SkeletonLoader, X as Toggle, I as IconButton, A as AddButton$1, U as Stepper, e as DataCardFields, s as IconsNav, p as IconGroup } from './index-nltUpkWT.js';
6
- import { h as usePendingStore, g as useNotificationStore, b as useDrawerStore, c as useEntityStore, f as useModalStore, d as useFilterStore, s as styleInject, i as useSelectedStore, e as useInstrumentStore, a as useDataStreamStore, k as getEntityId, j as useSetupStore, u as useDarkMode } from './index-DMXaEyAB.js';
7
- import Theme from './theme.js';
8
- import { i as isEmpty, s as safeJsonParse } from './index-BZS1ijMm.js';
9
- import { i as CheckCircledIcon, O as OdigosLogo } from './index-IKusBlIE.js';
10
- import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, N as NotificationIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-CamnKrev.js';
11
- import { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-CFnxjzaW.js';
12
- import { u as useActionFormData, a as useClickNode, c as useDataStreamFormData, d as useDestinationFormData, b as useClickNotification, e as useSourceFormData, f as useSourceSelectionFormData } from './useSourceSelectionFormData-BWz8fTJr.js';
13
- import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-B65KBqdK.js';
14
- import { E as EditIcon } from './index-CWbxXTof.js';
15
- import { T as TrashIcon, S as SearchIcon, P as PlusIcon$1, f as CheckIcon, A as ArrowIcon, a as CopyIcon, g as CrossIcon } from './index-BJxaoI0G.js';
16
- import { D as DeleteWarning, C as CancelWarning } from './index-BGK1nMOD.js';
17
- import { m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-CJs4RDHU.js';
18
- import { f as filterActions, i as getConditionsBooleans, n as getEntityLabel, m as getEntityIcon, v as sleep$1, p as getPlatformIcon, q as getPlatformLabel, h as formatBytes, k as getContainersIcons, r as getValueForRange, l as getDestinationIcon, u as mapExportedSignals, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, c as compareCondition, d as deepClone, o as getMetricForEntity, s as getWorkloadId, j as getContainersInstrumentedCount, t as isOverTime } from './index-DYNMhZMX.js';
3
+ import { T as Theme, h as usePendingStore, g as useNotificationStore, b as useDrawerStore, c as useEntityStore, A as ACTION_OPTIONS, k as getActionIcon, f as useModalStore, d as useFilterStore, M as MONITORS_OPTIONS, s as styleInject, i as useSelectedStore, e as useInstrumentStore, m as getInstrumentationRuleIcon, a as useDataStreamStore, l as getEntityId, j as useSetupStore, I as INSTRUMENTATION_RULE_OPTIONS, u as useDarkMode } from './index-CVH8Q8Sl.js';
4
+ import { a as DISPLAY_TITLES, B as BUTTON_TEXTS, F as FORM_ALERTS } from './index-mOgS3e5E.js';
5
+ import { ActionType, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, AddNodeTypes, EdgeTypes, FieldTypes, SignalType, CodeAttributesKeyTypes, HeadersCollectionKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType } from './types.js';
6
+ import { f as DataCardFieldTypes, o as FieldLabel, C as Checkbox, n as FieldError, u as Input, w as InputTable, K as KeyValueInputsList, v as InputList, V as Text, O as Segment, L as SectionTitle, i as DocsButton, y as MonitorsCheckboxes, W as TextArea, j as Drawer, d as ConditionDetails, D as DataCard, a0 as FlexColumn, M as Modal, N as NavigationButtons, a4 as ModalBody, J as NotificationNote, a as AutocompleteInput, h as Divider, R as Status, $ as FlexRow, Y as Tooltip, r as IconWrapped, z as MonitorsIcons, a5 as TableContainer, a6 as TableTitleWrap, q as IconTitleBadge, a7 as TableWrap, x as InteractiveTable, a1 as CenterThis, G as NoDataFound, Z as TraceLoader, b as Badge, E as ExtendArrow, a2 as VerticalScroll, P as SelectionButton, B as Button, m as Dropdown, a8 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, Q as SkeletonLoader, X as Toggle, A as AddButton$1, U as Stepper, I as IconButton, e as DataCardFields, s as IconsNav, p as IconGroup } from './index-BedCNcwV.js';
7
+ import { i as isEmpty, s as safeJsonParse } from './index-BV85P9UP.js';
8
+ import { i as CheckCircledIcon, O as OdigosLogo } from './index-Do3CYz7N.js';
9
+ import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, N as NotificationIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-f8FRaVkE.js';
10
+ import { u as useActionFormData, a as useClickNode, c as useDataStreamFormData, d as useDestinationFormData, b as useClickNotification, e as useSourceFormData, f as useSourceSelectionFormData } from './useSourceSelectionFormData-DiwzViqL.js';
11
+ import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-B0eagOib.js';
12
+ import { E as EditIcon } from './index-BQQZyvRz.js';
13
+ import { T as TrashIcon, S as SearchIcon, P as PlusIcon$1, f as CheckIcon, A as ArrowIcon, a as CopyIcon, g as CrossIcon } from './index-CNfdJ1X8.js';
14
+ import { D as DeleteWarning, C as CancelWarning } from './index-CaAOgaiC.js';
15
+ import { m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-B_Gl6Qa6.js';
16
+ import { f as filterActions, i as getConditionsBooleans, n as getEntityLabel, m as getEntityIcon, x as sleep$1, p as getPlatformIcon, q as getPlatformLabel, h as formatBytes, k as getContainersIcons, r as getValueForRange, l as getDestinationIcon, w as mapExportedSignals, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, v as mapDestinationFieldsForDisplay, c as compareCondition, t as getYamlFieldsForDestination, d as deepClone, o as getMetricForEntity, s as getWorkloadId, j as getContainersInstrumentedCount, u as isOverTime } from './index-Iq7U_fzb.js';
19
17
  import { createPortal } from 'react-dom';
20
- import { N as NoteBackToSummary, E as EditButton } from './index-B46Mcu9H.js';
18
+ import { N as NoteBackToSummary, E as EditButton } from './index-BjVl4-os.js';
21
19
  import { D as DESTINATION_CATEGORIES } from './index-Dqief9td.js';
22
- import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-BbbCCewR.js';
23
- import './index-DGel4E-Z.js';
24
- import './index-7-KCQK-x.js';
20
+ import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-1N9wymEq.js';
21
+ import './index-CnZlllYu.js';
25
22
 
26
23
  const buildCard$3 = (action) => {
27
24
  const { type, spec: { actionName, notes, signals, disabled, collectContainerAttributes, collectReplicaSetAttributes, collectWorkloadId, collectClusterId, labelsAttributes, annotationsAttributes, clusterAttributes, attributeNamesToDelete, renames, piiCategories, fallbackSamplingRatio, samplingPercentage, endpointsFilters, }, } = action;
@@ -13943,9 +13940,9 @@ const Container$d = styled.div `
13943
13940
  gap: 24px;
13944
13941
  padding: 4px;
13945
13942
  `;
13946
- const DataStreamForm = ({ formData, handleFormChange }) => {
13943
+ const DataStreamForm = ({ formData, handleFormChange, formErrors }) => {
13947
13944
  return (React.createElement(Container$d, null,
13948
- React.createElement(Input, { name: 'name', title: DISPLAY_TITLES.STREAM_NAME, required: true, value: formData.name, onChange: ({ target: { value } }) => handleFormChange('name', value) })));
13945
+ React.createElement(Input, { name: 'name', title: DISPLAY_TITLES.STREAM_NAME, placeholder: DISPLAY_TITLES.NAME_YOUR_STREAM_PLACEHOLDER, required: true, value: formData.name, onChange: ({ target: { value } }) => handleFormChange('name', value), errorMessage: formErrors['name'] })));
13949
13946
  };
13950
13947
 
13951
13948
  const FormContainer$3 = styled.div `
@@ -13959,7 +13956,7 @@ const DataStreamDrawer = ({ isOpen, onClose, dataStreamName, updateDataStream })
13959
13956
  const { dataStreams } = useDataStreamStore();
13960
13957
  const drawerRef = useRef(null);
13961
13958
  const [isFormDirty, setIsFormDirty] = useState(false);
13962
- const { formData, handleFormChange, resetFormData, loadFormWithDrawerItem } = useDataStreamFormData({ name: dataStreamName });
13959
+ const { formData, handleFormChange, formErrors, validateForm, resetFormData, loadFormWithDrawerItem } = useDataStreamFormData({ name: dataStreamName });
13963
13960
  const thisItem = useMemo(() => {
13964
13961
  if (!isOpen)
13965
13962
  return null;
@@ -13980,13 +13977,15 @@ const DataStreamDrawer = ({ isOpen, onClose, dataStreamName, updateDataStream })
13980
13977
  onClose();
13981
13978
  };
13982
13979
  const handleSave = () => {
13983
- updateDataStream(dataStreamName, formData);
13984
- setIsFormDirty(false);
13985
- onClose();
13980
+ if (validateForm({ withAlert: true, alertTitle: Crud.Update })) {
13981
+ updateDataStream(dataStreamName, formData);
13982
+ setIsFormDirty(false);
13983
+ onClose();
13984
+ }
13986
13985
  };
13987
13986
  return (React.createElement(OverviewDrawer, { ref: drawerRef, title: thisItem.name, icons: [DataStreamsIcon], hideEditTitleFromEdit: true, isEdit: true, isFormDirty: isFormDirty, onSave: handleSave, onCancel: handleCancel },
13988
13987
  React.createElement(FormContainer$3, null,
13989
- React.createElement(DataStreamForm, { formData: formData, handleFormChange: memoizedHandleFormChange }))));
13988
+ React.createElement(DataStreamForm, { formData: formData, handleFormChange: memoizedHandleFormChange, formErrors: formErrors }))));
13990
13989
  };
13991
13990
 
13992
13991
  const RelativeContainer$1 = styled.div `
@@ -14026,7 +14025,9 @@ const SelectionRow = styled(FlexRow) `
14026
14025
  const Stretch = styled.div `
14027
14026
  width: 100%;
14028
14027
  `;
14029
- const DataStreamSelect = ({ onClickNewDataStream, updateDataStream, deleteDataStream }) => {
14028
+ const DataStreamSelect = ({
14029
+ // onClickNewDataStream,
14030
+ updateDataStream, deleteDataStream, }) => {
14030
14031
  const theme = Theme.useTheme();
14031
14032
  const { dataStreams, selectedStreamName, setSelectedStreamName } = useDataStreamStore();
14032
14033
  const [popupOpen, setPopupOpen] = useState(false);
@@ -14041,11 +14042,7 @@ const DataStreamSelect = ({ onClickNewDataStream, updateDataStream, deleteDataSt
14041
14042
  React.createElement(SelectionButton, { label: name, isSelected: selectedStreamName === name, onClick: () => {
14042
14043
  setSelectedStreamName(name);
14043
14044
  setPopupOpen(false);
14044
- }, color: 'transparent', style: { width: '100%', justifyContent: 'flex-start' } })),
14045
- name !== DEFAULT_DATA_STREAM_NAME && (React.createElement(IconButton, { onClick: () => setDeleteOpenForDataStreamName(name), tooltip: BUTTON_TEXTS.DELETE },
14046
- React.createElement(TrashIcon, null))),
14047
- React.createElement(IconButton, { onClick: () => setEditOpenForDataStreamName(name), tooltip: BUTTON_TEXTS.EDIT },
14048
- React.createElement(EditIcon, null))))), [filteredDataStreams, selectedStreamName]);
14045
+ }, color: 'transparent', style: { width: '100%', justifyContent: 'flex-start' } }))))), [filteredDataStreams, selectedStreamName]);
14049
14046
  return (React.createElement(React.Fragment, null,
14050
14047
  React.createElement(RelativeContainer$1, null,
14051
14048
  React.createElement(Container$c, { "$gap": 0 },
@@ -14055,9 +14052,7 @@ const DataStreamSelect = ({ onClickNewDataStream, updateDataStream, deleteDataSt
14055
14052
  "Data Stream: ",
14056
14053
  selectedStreamName),
14057
14054
  React.createElement(ExtendArrow, { extend: popupOpen }),
14058
- React.createElement(Badge, { label: dataStreams.length })),
14059
- React.createElement(Divider, { orientation: 'vertical', length: '32px', thickness: 2, margin: '0' }),
14060
- React.createElement(AddButton$1, { onClick: onClickNewDataStream, label: BUTTON_TEXTS.NEW })),
14055
+ React.createElement(Badge, { label: dataStreams.length }))),
14061
14056
  popupOpen && (React.createElement(AbsoluteContainer$1, { ref: containerRef },
14062
14057
  React.createElement(SelectionMenuHeader, null,
14063
14058
  React.createElement(Input, { placeholder: 'Search...', icon: SearchIcon, value: searchText, onChange: (e) => setSearchText(e.target.value) })),
@@ -14095,8 +14090,7 @@ const DataFlowActionsMenu = ({ addEntity, onClickNewDataStream, updateDataStream
14095
14090
  };
14096
14091
 
14097
14092
  const DataStreamSelectionForm = forwardRef(({ isModal, onClickSummary }, ref) => {
14098
- const { dataStreams, selectedStreamName } = useDataStreamStore();
14099
- const dataStreamOptions = useMemo(() => dataStreams.map(({ name }) => ({ label: name })), [dataStreams]);
14093
+ const { selectedStreamName } = useDataStreamStore();
14100
14094
  const { formData, handleFormChange, formErrors, validateForm } = useDataStreamFormData({ name: selectedStreamName });
14101
14095
  useImperativeHandle(ref, () => ({
14102
14096
  validateForm,
@@ -14106,7 +14100,7 @@ const DataStreamSelectionForm = forwardRef(({ isModal, onClickSummary }, ref) =>
14106
14100
  React.createElement(FlexColumn, { "$gap": 24 },
14107
14101
  onClickSummary && React.createElement(NoteBackToSummary, { onClick: onClickSummary }),
14108
14102
  React.createElement(SectionTitle, { title: DISPLAY_TITLES.NAME_YOUR_STREAM, description: DISPLAY_TITLES.STREAM_DESCRIPTION }),
14109
- React.createElement(AutocompleteInput, { placeholder: DISPLAY_TITLES.NAME_YOUR_STREAM_PLACEHOLDER, required: true, autoFocus: true, options: dataStreamOptions, defaultText: formData['name'], onTextChange: (v) => handleFormChange('name', v), errorMessage: formErrors['name'] }))));
14103
+ React.createElement(DataStreamForm, { formData: formData, handleFormChange: handleFormChange, formErrors: formErrors }))));
14110
14104
  });
14111
14105
 
14112
14106
  const buildMonitorsList = (exportedSignals) => Object.keys(exportedSignals)
@@ -14119,17 +14113,14 @@ const buildCard$2 = (destination, yamlFields) => {
14119
14113
  { title: DISPLAY_TITLES.TYPE, value: destinationType.type },
14120
14114
  { type: DataCardFieldTypes.Monitors, title: DISPLAY_TITLES.MONITORS, value: buildMonitorsList(exportedSignals) },
14121
14115
  ];
14122
- const parsedFields = safeJsonParse(fields, {});
14123
- const sortedParsedFields = yamlFields.map((field) => ({ key: field.name, value: parsedFields[field.name] ?? null })).filter((item) => item.value !== null) ||
14124
- Object.entries(parsedFields).map(([key, value]) => ({ key, value }));
14125
- sortedParsedFields.map(({ key, value }) => {
14126
- const { displayName, secret, componentProperties, hideFromReadData, customReadDataLabels } = yamlFields.find((field) => field.name === key) || {};
14127
- const shouldHide = !!hideFromReadData?.length
14128
- ? compareCondition(hideFromReadData, yamlFields.map((field) => ({ name: field.name, value: parsedFields[field.name] ?? null })))
14129
- : false;
14116
+ const mappedFields = mapDestinationFieldsForDisplay(destination, yamlFields);
14117
+ const mappedFieldsForConditionCompare = mappedFields.map((field) => ({ name: field.key, value: field.value }));
14118
+ mappedFields.map(({ key, name, value }) => {
14119
+ const { secret, componentProperties, hideFromReadData, customReadDataLabels } = yamlFields.find((field) => field.name === key) || {};
14120
+ const shouldHide = !!hideFromReadData?.length ? compareCondition(hideFromReadData, mappedFieldsForConditionCompare) : false;
14130
14121
  if (!shouldHide) {
14131
14122
  const { type } = safeJsonParse(componentProperties, { type: '' });
14132
- const isSecret = (secret || type === 'password') && !!value.length ? new Array(10).fill('•').join('') : '';
14123
+ const secretPlaceholder = (secret || type === 'password') && !!value.length ? new Array(10).fill('•').join('') : '';
14133
14124
  arr.push({ type: DataCardFieldTypes.Divider });
14134
14125
  if (!!customReadDataLabels?.length) {
14135
14126
  customReadDataLabels.forEach(({ condition, ...custom }) => {
@@ -14143,8 +14134,8 @@ const buildCard$2 = (destination, yamlFields) => {
14143
14134
  }
14144
14135
  else {
14145
14136
  arr.push({
14146
- title: displayName || key,
14147
- value: isSecret || value,
14137
+ title: name,
14138
+ value: secretPlaceholder || value,
14148
14139
  });
14149
14140
  }
14150
14141
  }
@@ -14345,7 +14336,6 @@ const DestinationDrawer = ({ categories, updateDestination, deleteDestination, t
14345
14336
  const isOpen = drawerType !== EntityTypes.Destination;
14346
14337
  const [isEditing, setIsEditing] = useState(false);
14347
14338
  const [isFormDirty, setIsFormDirty] = useState(false);
14348
- // const [thisItem, setThisItem] = useState<Destination | undefined>(undefined)
14349
14339
  const { formData, formErrors, handleFormChange, resetFormData, validateForm, loadFormWithDrawerItem, yamlFields, setYamlFields, dynamicFields, setDynamicFields } = useDestinationFormData({
14350
14340
  // preLoadedFields: thisItem?.fields,
14351
14341
  // TODO: supportedSignals: thisDestination?.supportedSignals,
@@ -14357,19 +14347,7 @@ const DestinationDrawer = ({ categories, updateDestination, deleteDestination, t
14357
14347
  const found = destinationsByStream?.find((x) => x.id === drawerEntityId);
14358
14348
  if (!!found) {
14359
14349
  loadFormWithDrawerItem(found);
14360
- const fields = [];
14361
- const parsedCategories = JSON.parse(JSON.stringify(categories));
14362
- for (const category of parsedCategories) {
14363
- const autoFilledFields = safeJsonParse(found.fields, {});
14364
- const idx = category.items.findIndex((item) => item.type === found.destinationType.type);
14365
- if (idx !== -1) {
14366
- fields.push(...category.items[idx].fields.map((field) => ({
14367
- ...field,
14368
- initialValue: autoFilledFields[field.name],
14369
- })));
14370
- }
14371
- }
14372
- setYamlFields(fields);
14350
+ setYamlFields(getYamlFieldsForDestination(categories, found));
14373
14351
  }
14374
14352
  return found;
14375
14353
  }, [isOpen, drawerEntityId, destinationsByStream]);
@@ -14692,21 +14670,21 @@ const Container$7 = styled.div `
14692
14670
  height: fit-content;
14693
14671
  overflow-y: scroll;
14694
14672
  `;
14695
- const DestinationList = ({ withDelete }) => {
14673
+ const DestinationList = ({ categories, withDelete }) => {
14696
14674
  const { configuredDestinations, configuredDestinationsUpdateOnly } = useSetupStore();
14697
14675
  if (!configuredDestinations.length && !configuredDestinationsUpdateOnly.length) {
14698
14676
  return (React.createElement(CenterThis, null,
14699
14677
  React.createElement(NoDataFound, { title: 'No destinations', subTitle: 'Please add a destination' })));
14700
14678
  }
14701
- return (React.createElement(Container$7, null, configuredDestinations.concat(configuredDestinationsUpdateOnly).map((dest, idx) => (React.createElement(ListItem, { key: `configured-destination-${dest.destinationType.type}-${idx}`, "data-id": `configured-destination-${dest.destinationType.type}`, item: dest, isLastItem: configuredDestinations.length + configuredDestinationsUpdateOnly.length === 1, withDelete: withDelete })))));
14679
+ return (React.createElement(Container$7, null, configuredDestinations.concat(configuredDestinationsUpdateOnly).map((dest, idx) => (React.createElement(ListItem, { key: `configured-destination-${dest.destinationType.type}-${idx}`, "data-id": `configured-destination-${dest.destinationType.type}`, item: dest, yamlFields: getYamlFieldsForDestination(categories, dest), isLastItem: configuredDestinations.length + configuredDestinationsUpdateOnly.length === 1, withDelete: withDelete })))));
14702
14680
  };
14703
- const ListItem = ({ item, isLastItem, withDelete }) => {
14681
+ const ListItem = ({ item, yamlFields, isLastItem, withDelete }) => {
14704
14682
  const [deleteWarning, setDeleteWarning] = useState(false);
14705
14683
  const { icon, iconSrc } = getDestinationIcon(item.destinationType.type);
14706
14684
  const { removeConfiguredDestination, removeConfiguredDestinationUpdateOnly } = useSetupStore();
14707
- const mappedFields = useMemo(() => Object.entries(safeJsonParse(item.fields, {})).map(([k, v]) => ({ title: k, value: v })) || [], [item.fields]);
14685
+ const mappedFields = useMemo(() => mapDestinationFieldsForDisplay(item, yamlFields).map((f) => ({ title: f.name, value: f.value })), [item, yamlFields]);
14708
14686
  return (React.createElement(React.Fragment, null,
14709
- React.createElement(DataTab, { title: item.destinationType.displayName || item.name, subTitle: item.destinationType.type, iconProps: { icon, iconSrc }, visualProps: {
14687
+ React.createElement(DataTab, { title: item.name || item.destinationType.displayName, subTitle: item.destinationType.type, iconProps: { icon, iconSrc }, visualProps: {
14710
14688
  monitors: mapExportedSignals(item.exportedSignals),
14711
14689
  monitorsWithLabels: true,
14712
14690
  }, extendableProps: {
@@ -14754,7 +14732,7 @@ const DestinationSelectionForm = ({ isSourcesListEmpty, goToSources, categories,
14754
14732
  React.createElement(LargeAndWideAddButton, { variant: 'secondary', onClick: onOpen },
14755
14733
  React.createElement(PlusIcon$1, null),
14756
14734
  React.createElement(Text, { color: theme.colors.secondary, size: 14, decoration: 'underline', family: 'secondary' }, DISPLAY_TITLES.ADD_DESTINATION))),
14757
- React.createElement(DestinationList, { withDelete: true }))),
14735
+ React.createElement(DestinationList, { categories: categories, withDelete: true }))),
14758
14736
  React.createElement(DestinationModal, { isOnboarding: true, categories: categories, potentialDestinations: potentialDestinations, updateDestination: () => { }, createDestination: () => { }, testConnection: testConnection })));
14759
14737
  };
14760
14738
 
@@ -14954,6 +14932,23 @@ const CodeAttributes = ({ value, setValue, formErrors }) => {
14954
14932
  !!errorMessage && React.createElement(FieldError, null, errorMessage))));
14955
14933
  };
14956
14934
 
14935
+ const ALL_HEADERS = ['*'];
14936
+ const HeadersCollection = ({ value, setValue, formErrors }) => {
14937
+ const errorMessage = formErrors['headersCollection'];
14938
+ const mappedValue = useMemo(() => value?.['headersCollection']?.[HeadersCollectionKeyTypes.HeaderKeys] || [], [value]);
14939
+ const handleChange = (arr) => {
14940
+ const payload = {
14941
+ [HeadersCollectionKeyTypes.HeaderKeys]: arr,
14942
+ };
14943
+ setValue('headersCollection', payload);
14944
+ };
14945
+ useEffect(() => {
14946
+ if (!mappedValue.length)
14947
+ handleChange(ALL_HEADERS);
14948
+ }, [mappedValue]);
14949
+ return (React.createElement("div", null, mappedValue.length > 0 && (React.createElement(InputList, { title: 'Header Keys', tooltip: 'Specify which headers you want to collect, asterisk (*) will collect all headers.', value: mappedValue, onChange: (arr) => handleChange(arr), errorMessage: errorMessage }))));
14950
+ };
14951
+
14957
14952
  const ListContainer = styled.div `
14958
14953
  display: flex;
14959
14954
  flex-direction: column;
@@ -15021,8 +15016,9 @@ const PayloadCollection = ({ value, setValue, formErrors }) => {
15021
15016
  };
15022
15017
 
15023
15018
  const componentsMap = {
15024
- [InstrumentationRuleType.PayloadCollection]: PayloadCollection,
15025
15019
  [InstrumentationRuleType.CodeAttributes]: CodeAttributes,
15020
+ [InstrumentationRuleType.HeadersCollection]: HeadersCollection,
15021
+ [InstrumentationRuleType.PayloadCollection]: PayloadCollection,
15026
15022
  [InstrumentationRuleType.UnknownType]: null,
15027
15023
  };
15028
15024
  const CustomFields = ({ ruleType, value, setValue, formErrors }) => {
@@ -15561,7 +15557,7 @@ const SourceList = ({ isModal = false, withInstances = true, filteredNamespacesA
15561
15557
  (isNamespaceSelected || !onSelectNamespace) &&
15562
15558
  (hasSources ? (React.createElement(RelativeWrapper, { "$addPadding": !onSelectSource },
15563
15559
  React.createElement(AbsoluteWrapper, null,
15564
- React.createElement(Divider, { orientation: 'vertical', length: `${onlyOneSource ? 24 : (sources.length) * 34}px` })),
15560
+ React.createElement(Divider, { orientation: 'vertical', length: `${onlyOneSource ? 24 : sources.length * 34}px` })),
15565
15561
  sources.map((source) => {
15566
15562
  const isSourceSelected = onlySelectedSources.some(({ name }) => name === source.name);
15567
15563
  return React.createElement(SourceRow, { key: `source-${source.name}`, withInstances: withInstances, source: source, namespace: namespace, isSelected: isSourceSelected, onSelect: onSelectSource });
@@ -15589,19 +15585,20 @@ const Container$3 = styled.div `
15589
15585
  height: fit-content;
15590
15586
  overflow-y: scroll;
15591
15587
  `;
15592
- const SetupSummary = ({ onEditStream, onEditSources, onEditDestinations }) => {
15593
- const { selectedStreamName } = useDataStreamStore();
15588
+ const SetupSummary = ({
15589
+ // onEditStream,
15590
+ onEditSources, onEditDestinations, categories, }) => {
15591
+ // const { selectedStreamName } = useDataStreamStore();
15594
15592
  const { configuredSources, configuredDestinations, configuredDestinationsUpdateOnly } = useSetupStore();
15595
15593
  const sourceCount = useMemo(() => Object.values(configuredSources).reduce((total, sourceList) => total + sourceList.filter((s) => s.selected).length, 0), [configuredSources]);
15596
15594
  return (React.createElement(ModalBody, { "$isNotModal": true },
15597
15595
  React.createElement(FlexColumn, { "$gap": 12 },
15598
15596
  React.createElement(SectionTitle, { title: DISPLAY_TITLES.SUMMARY, description: DISPLAY_TITLES.STREAM_CONFIRM }),
15599
15597
  React.createElement(Container$3, null,
15600
- React.createElement(DataCard, { title: DISPLAY_TITLES.STREAM_NAME, action: () => React.createElement(EditButton, { onClick: onEditStream }), data: [{ title: '', value: selectedStreamName }] }),
15601
15598
  React.createElement(DataCard, { title: DISPLAY_TITLES.SELECTED_SOURCES, titleBadge: sourceCount, action: () => React.createElement(EditButton, { onClick: onEditSources }) },
15602
15599
  React.createElement(SourceList, { filteredNamespacesAndSources: configuredSources, withInstances: false })),
15603
15600
  React.createElement(DataCard, { title: DISPLAY_TITLES.SELECTED_DESTINATIONS, titleBadge: configuredDestinations.length + configuredDestinationsUpdateOnly.length, action: () => React.createElement(EditButton, { onClick: onEditDestinations }) },
15604
- React.createElement(DestinationList, null))))));
15601
+ React.createElement(DestinationList, { categories: categories }))))));
15605
15602
  };
15606
15603
 
15607
15604
  var NavIconIds;
@@ -0,0 +1,2 @@
1
+ import { Destination, DestinationCategories, DestinationYamlProperties } from '@/types';
2
+ export declare const getYamlFieldsForDestination: (categories: DestinationCategories, destination: Destination) => DestinationYamlProperties[];
@@ -28,10 +28,13 @@ export * from './get-sse-target-from-id';
28
28
  export * from './get-status-icon';
29
29
  export * from './get-value-for-range';
30
30
  export * from './get-workload-id';
31
+ export * from './get-yaml-fields-for-destination';
31
32
  export * from './is-emtpy';
33
+ export * from './is-legal-k8s-label';
32
34
  export * from './is-over-time';
33
35
  export * from './is-time-elapsed';
34
36
  export * from './map-conditions';
37
+ export * from './map-destination-fields-for-display';
35
38
  export * from './map-exported-signals';
36
39
  export * from './parse-json-string-to-pretty-string';
37
40
  export * from './remove-empty-values-from-object';
@@ -0,0 +1 @@
1
+ export declare const isLegalK8sLabel: (name: string) => boolean;
@@ -0,0 +1,6 @@
1
+ import { Destination, DestinationYamlProperties } from '@/types';
2
+ export declare const mapDestinationFieldsForDisplay: (destination: Destination, yamlFields: DestinationYamlProperties[]) => {
3
+ key: string;
4
+ name: string;
5
+ value: any;
6
+ }[];
package/lib/functions.js CHANGED
@@ -1,16 +1,14 @@
1
- export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getProgrammingLanguageIcon, b as getStatusIcon, m as mapConditions, p as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, d as splitCamelString } from './index-CJs4RDHU.js';
2
- export { c as compareCondition, d as deepClone, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, e as filterSources, g as filterSourcesByStream, h as formatBytes, i as getConditionsBooleans, k as getContainersIcons, j as getContainersInstrumentedCount, l as getDestinationIcon, m as getEntityIcon, n as getEntityLabel, o as getMetricForEntity, p as getPlatformIcon, q as getPlatformLabel, r as getValueForRange, s as getWorkloadId, t as isOverTime, u as mapExportedSignals, v as sleep } from './index-DYNMhZMX.js';
3
- export { g as getActionIcon, a as getInstrumentationRuleIcon } from './index-CFnxjzaW.js';
4
- export { k as getEntityId } from './index-DMXaEyAB.js';
5
- export { g as getIdFromSseTarget } from './index-7-KCQK-x.js';
1
+ export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getProgrammingLanguageIcon, b as getStatusIcon, m as mapConditions, p as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, d as splitCamelString } from './index-B_Gl6Qa6.js';
2
+ export { c as compareCondition, d as deepClone, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, e as filterSources, g as filterSourcesByStream, h as formatBytes, i as getConditionsBooleans, k as getContainersIcons, j as getContainersInstrumentedCount, l as getDestinationIcon, m as getEntityIcon, n as getEntityLabel, o as getMetricForEntity, p as getPlatformIcon, q as getPlatformLabel, r as getValueForRange, s as getWorkloadId, t as getYamlFieldsForDestination, u as isOverTime, v as mapDestinationFieldsForDisplay, w as mapExportedSignals, x as sleep } from './index-Iq7U_fzb.js';
3
+ export { k as getActionIcon, l as getEntityId, m as getInstrumentationRuleIcon } from './index-CVH8Q8Sl.js';
4
+ export { g as getIdFromSseTarget, i as isLegalK8sLabel } from './index-CnZlllYu.js';
6
5
  import { EntityTypes } from './types.js';
7
- export { i as isEmpty, s as safeJsonParse } from './index-BZS1ijMm.js';
6
+ export { i as isEmpty, s as safeJsonParse } from './index-BV85P9UP.js';
8
7
  import 'react';
9
8
  import 'styled-components';
10
- import './index-DGel4E-Z.js';
11
- import './theme.js';
12
- import './index-IKusBlIE.js';
13
- import './index-BbbCCewR.js';
9
+ import './index-Do3CYz7N.js';
10
+ import './index-mOgS3e5E.js';
11
+ import './index-1N9wymEq.js';
14
12
 
15
13
  const cleanObjectEmptyStringsValues = (obj) => {
16
14
  const cleanArray = (arr) => arr.filter((item) => {
@@ -1,7 +1,7 @@
1
1
  import { type InstrumentationRule, type InstrumentationRuleFormData } from '@/types';
2
2
  export declare const useInstrumentationRuleFormData: () => {
3
3
  formData: InstrumentationRuleFormData;
4
- formErrors: Partial<Record<"ruleName" | "notes" | "disabled" | "workloads" | "instrumentationLibraries" | "payloadCollection" | "codeAttributes", string>>;
4
+ formErrors: Partial<Record<"ruleName" | "notes" | "disabled" | "workloads" | "instrumentationLibraries" | "codeAttributes" | "headersCollection" | "payloadCollection", string>>;
5
5
  handleFormChange: (key?: string | undefined, val?: any, obj?: InstrumentationRuleFormData | undefined) => void;
6
6
  resetFormData: () => void;
7
7
  validateForm: (params?: {
package/lib/hooks.js CHANGED
@@ -1,12 +1,9 @@
1
- export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDataStreamFormData, d as useDestinationFormData, e as useSourceFormData, f as useSourceSelectionFormData } from './useSourceSelectionFormData-BWz8fTJr.js';
2
- export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-B65KBqdK.js';
1
+ export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDataStreamFormData, d as useDestinationFormData, e as useSourceFormData, f as useSourceSelectionFormData } from './useSourceSelectionFormData-DiwzViqL.js';
2
+ export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-B0eagOib.js';
3
3
  import './types.js';
4
+ import './index-CVH8Q8Sl.js';
4
5
  import 'react';
5
- import './index-DMXaEyAB.js';
6
6
  import 'styled-components';
7
- import './index-BZS1ijMm.js';
8
- import './index-DGuOxbBR.js';
9
- import './index-CFnxjzaW.js';
10
- import './index-DGel4E-Z.js';
11
- import './theme.js';
12
- import './index-7-KCQK-x.js';
7
+ import './index-mOgS3e5E.js';
8
+ import './index-BV85P9UP.js';
9
+ import './index-CnZlllYu.js';
@@ -0,0 +1,8 @@
1
+ import type { SVG } from '@/types';
2
+ import type { StoryFn } from '@storybook/react';
3
+ declare const _default: {
4
+ title: string;
5
+ component: SVG;
6
+ };
7
+ export default _default;
8
+ export declare const Default: StoryFn<SVG>;
@@ -0,0 +1,2 @@
1
+ import type { SVG } from '@/types';
2
+ export declare const HeadersCollectionIcon: SVG;
@@ -1,2 +1,3 @@
1
1
  export * from './code-attributes-icon/index';
2
+ export * from './headers-collection-icon/index';
2
3
  export * from './payload-collection-icon/index';
package/lib/icons.js CHANGED
@@ -1,12 +1,11 @@
1
- export { A as AddClusterInfoIcon, C as CodeAttributesIcon, D as DeleteAttributeIcon, I as ImageErrorIcon, K as K8sLogo, a as PayloadCollectionIcon, P as PiiMaskingIcon, R as RenameAttributeIcon, S as SamplerIcon } from './index-DGel4E-Z.js';
2
- export { C as CPlusPlusLogo, d as CSharpLogo, i as CheckCircledIcon, D as DotnetLogo, E as ElixirLogo, h as ErrorTriangleIcon, G as GoLogo, I as InfoIcon, J as JavaLogo, K as KafkaLogo, L as LogsIcon, g as MetricsIcon, M as MysqlLogo, N as NginxLogo, f as NodejsLogo, O as OdigosLogo, c as PhpLogo, P as PostgresLogo, e as PythonLogo, R as RedisLogo, b as RubyLogo, a as RustLogo, S as SwiftLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-IKusBlIE.js';
3
- export { C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, S as SlackLogo, T as TerminalIcon } from './index-CamnKrev.js';
4
- export { A as ArrowIcon, f as CheckIcon, C as CodeIcon, a as CopyIcon, g as CrossIcon, E as ExtendArrowIcon, d as EyeClosedIcon, e as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, b as NotebookIcon, P as PlusIcon, S as SearchIcon, c as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-BJxaoI0G.js';
1
+ import { T as Theme } from './index-CVH8Q8Sl.js';
2
+ export { o as AddClusterInfoIcon, C as CodeAttributesIcon, D as DeleteAttributeIcon, H as HeadersCollectionIcon, n as ImageErrorIcon, K as K8sLogo, p as PayloadCollectionIcon, P as PiiMaskingIcon, R as RenameAttributeIcon, S as SamplerIcon } from './index-CVH8Q8Sl.js';
3
+ export { C as CPlusPlusLogo, d as CSharpLogo, i as CheckCircledIcon, D as DotnetLogo, E as ElixirLogo, h as ErrorTriangleIcon, G as GoLogo, I as InfoIcon, J as JavaLogo, K as KafkaLogo, L as LogsIcon, g as MetricsIcon, M as MysqlLogo, N as NginxLogo, f as NodejsLogo, O as OdigosLogo, c as PhpLogo, P as PostgresLogo, e as PythonLogo, R as RedisLogo, b as RubyLogo, a as RustLogo, S as SwiftLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-Do3CYz7N.js';
4
+ export { C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, S as SlackLogo, T as TerminalIcon } from './index-f8FRaVkE.js';
5
+ export { A as ArrowIcon, f as CheckIcon, C as CodeIcon, a as CopyIcon, g as CrossIcon, E as ExtendArrowIcon, d as EyeClosedIcon, e as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, b as NotebookIcon, P as PlusIcon, S as SearchIcon, c as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-CNfdJ1X8.js';
5
6
  import React from 'react';
6
- import Theme from './theme.js';
7
- export { E as EditIcon } from './index-CWbxXTof.js';
8
- export { a3 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AwsCloudwatchLogo, d as AwsS3Logo, e as AwsXrayLogo, f as AxiomLogo, B as BetterStackLogo, g as BlobStorageLogo, h as BonreeLogo, C as CauselyLogo, i as ChecklyLogo, j as ChronosphereLogo, k as ClickhouseLogo, l as CoralogixLogo, D as Dash0Logo, m as DatadogLogo, a4 as DestinationsIcon, n as DynatraceLogo, E as ElasticApmLogo, o as ElasticSearchLogo, G as GigapipeLogo, p as GoogleCloudPlatformLogo, q as GrafanaLogo, r as GreptimeLogo, s as GroundcoverLogo, H as HoneycombLogo, t as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, u as LightstepLogo, v as LogzioLogo, w as LokiLogo, x as LumigoLogo, M as MiddlewareLogo, a5 as NamespacesIcon, N as NewRelicLogo, O as ObserveLogo, y as OneUptimeLogo, z as OpenObserveLogo, F as OpenTelemetryLogo, P as OpsVerseLogo, Q as OracleLogo, R as PrometheusLogo, S as QrynLogo, T as QuickwitLogo, a6 as RulesIcon, U as SeqLogo, W as SignozLogo, a7 as SourcesIcon, X as SplunkLogo, Y as SumoLogicLogo, Z as TelemetryHubLogo, _ as TempoLogo, $ as TingyunLogo, a0 as TraceloopLogo, a1 as UptraceLogo, a2 as VictoriaMetricsLogo, V as VmLogo } from './index-BbbCCewR.js';
9
- import './index-DMXaEyAB.js';
7
+ export { E as EditIcon } from './index-BQQZyvRz.js';
8
+ export { a3 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AwsCloudwatchLogo, d as AwsS3Logo, e as AwsXrayLogo, f as AxiomLogo, B as BetterStackLogo, g as BlobStorageLogo, h as BonreeLogo, C as CauselyLogo, i as ChecklyLogo, j as ChronosphereLogo, k as ClickhouseLogo, l as CoralogixLogo, D as Dash0Logo, m as DatadogLogo, a4 as DestinationsIcon, n as DynatraceLogo, E as ElasticApmLogo, o as ElasticSearchLogo, G as GigapipeLogo, p as GoogleCloudPlatformLogo, q as GrafanaLogo, r as GreptimeLogo, s as GroundcoverLogo, H as HoneycombLogo, t as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, u as LightstepLogo, v as LogzioLogo, w as LokiLogo, x as LumigoLogo, M as MiddlewareLogo, a5 as NamespacesIcon, N as NewRelicLogo, O as ObserveLogo, y as OneUptimeLogo, z as OpenObserveLogo, F as OpenTelemetryLogo, P as OpsVerseLogo, Q as OracleLogo, R as PrometheusLogo, S as QrynLogo, T as QuickwitLogo, a6 as RulesIcon, U as SeqLogo, W as SignozLogo, a7 as SourcesIcon, X as SplunkLogo, Y as SumoLogicLogo, Z as TelemetryHubLogo, _ as TempoLogo, $ as TingyunLogo, a0 as TraceloopLogo, a1 as UptraceLogo, a2 as VictoriaMetricsLogo, V as VmLogo } from './index-1N9wymEq.js';
10
9
  import './types.js';
11
10
  import 'styled-components';
12
11
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import Theme from './theme.js';
2
+ import { T as Theme } from './index-CVH8Q8Sl.js';
3
3
 
4
4
  const VmLogo = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import Theme from './theme.js';
2
+ import { T as Theme } from './index-CVH8Q8Sl.js';
3
3
 
4
4
  const EditIcon = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();