@odigos/ui-kit 0.0.94 → 0.0.97

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,27 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.97](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.96...ui-kit-v0.0.97) (2025-08-26)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * release of 0.0.97 ([#359](https://github.com/odigos-io/ui-kit/issues/359)) ([67659cc](https://github.com/odigos-io/ui-kit/commit/67659cc785acbf6934293098be331274b9d0fa13))
9
+
10
+ ## [0.0.96](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.95...ui-kit-v0.0.96) (2025-08-26)
11
+
12
+
13
+ ### Features
14
+
15
+ * **trace-view:** add loading state to TraceView component ([#356](https://github.com/odigos-io/ui-kit/issues/356)) ([12d811c](https://github.com/odigos-io/ui-kit/commit/12d811c6b3bd4ae0b5773d4f8aa488f88a08322e))
16
+ * **trace-view:** add SpanDrawer with detailed span and process information ([#358](https://github.com/odigos-io/ui-kit/issues/358)) ([861635e](https://github.com/odigos-io/ui-kit/commit/861635ea0de73535a778b4a54d0cac2ed5cf8594))
17
+
18
+ ## [0.0.95](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.94...ui-kit-v0.0.95) (2025-08-26)
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **trace-view:** update DurationDivider positioning ([#354](https://github.com/odigos-io/ui-kit/issues/354)) ([e86078b](https://github.com/odigos-io/ui-kit/commit/e86078b56c767cb2876b1b2325bd97b93fe04b3d))
24
+
3
25
  ## [0.0.94](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.93...ui-kit-v0.0.94) (2025-08-25)
4
26
 
5
27
 
@@ -1,5 +1,5 @@
1
1
  import { type FC } from 'react';
2
- import { AnyObj } from '@/types';
2
+ import { AnyObj, SVG } from '@/types';
3
3
  declare enum DataCardFieldTypes {
4
4
  Code = "code",
5
5
  Table = "table",
@@ -13,6 +13,7 @@ declare enum DataCardFieldTypes {
13
13
  interface DataCardField {
14
14
  type?: DataCardFieldTypes;
15
15
  title?: string;
16
+ titleIcon?: SVG;
16
17
  tooltip?: string;
17
18
  value?: string | AnyObj;
18
19
  }
@@ -1,9 +1,10 @@
1
1
  import { type ReactNode, type FC, type PropsWithChildren } from 'react';
2
- import { OtherStatus } from '@/types';
2
+ import { OtherStatus, SVG } from '@/types';
3
3
  import { DataCardFields, type DataCardFieldsProps, DataCardFieldTypes } from './data-card-fields';
4
4
  interface DataCardProps extends PropsWithChildren {
5
5
  title?: string;
6
6
  titleBadge?: string | number | OtherStatus.Loading;
7
+ titleIcon?: SVG;
7
8
  description?: string;
8
9
  action?: ReactNode | (() => ReactNode);
9
10
  withExtend?: boolean;
@@ -1,8 +1,9 @@
1
- import { type FC, type ReactNode } from 'react';
1
+ import { CSSProperties, type FC, type ReactNode } from 'react';
2
2
  import type { SVG } from '@/types';
3
3
  import { type ButtonProps } from '@/components/button';
4
4
  interface DrawerHeaderProps {
5
5
  onClose: () => void;
6
+ width?: CSSProperties['width'];
6
7
  icons?: SVG[];
7
8
  iconSrcs?: string[];
8
9
  title?: string;
@@ -1,4 +1,4 @@
1
- import { type ReactNode, type FC } from 'react';
1
+ import { type ReactNode, type FC, CSSProperties } from 'react';
2
2
  import { DrawerHeader, DrawerHeaderProps } from './drawer-header';
3
3
  import { DrawerFooter, DrawerFooterProps } from './drawer-footer';
4
4
  interface DrawerProps {
@@ -6,7 +6,7 @@ interface DrawerProps {
6
6
  onClose: () => void;
7
7
  closeOnEscape?: boolean;
8
8
  position?: 'right' | 'left';
9
- width?: string;
9
+ width?: CSSProperties['width'];
10
10
  children: ReactNode;
11
11
  header: Omit<DrawerHeaderProps, 'onClose'>;
12
12
  footer: DrawerFooterProps;
@@ -1,4 +1,4 @@
1
- import { type DetailedHTMLProps, type FC, type HTMLAttributes, type ReactNode } from 'react';
1
+ import { type DetailedHTMLProps, type FC, type HTMLAttributes, type ReactNode, CSSProperties } from 'react';
2
2
  import { DefaultTheme } from 'styled-components';
3
3
  interface TextProps extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> {
4
4
  children?: ReactNode;
@@ -9,6 +9,7 @@ interface TextProps extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HT
9
9
  family?: 'primary' | 'secondary';
10
10
  opacity?: number;
11
11
  decoration?: string;
12
+ transform?: CSSProperties['textTransform'];
12
13
  }
13
14
  declare const getLinksFromText: (text: string) => {
14
15
  original: string;
package/lib/components.js CHANGED
@@ -1,6 +1,6 @@
1
- import { B as Button } from './index-c529b896.js';
2
- export { A as AutocompleteInput, a as Badge, a9 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, a8 as FlexColumn, a7 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, ac as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, ab 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, ad as TableContainer, ae as TableTitleWrap, af as TableWrap, Z as Tag, _ as Text, a2 as TextArea, a3 as Toggle, T as ToggleCodeComponent, a4 as Tooltip, a5 as TraceLoader, aa as VerticalScroll, a6 as WarningModal, $ as getLinksFromText, a0 as getStrongsFromText, a1 as renderText } from './index-c529b896.js';
3
- export { C as CancelWarning, D as DeleteWarning } from './index-9a7beddb.js';
1
+ import { B as Button } from './index-a8da9518.js';
2
+ export { A as AutocompleteInput, a as Badge, a9 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, a8 as FlexColumn, a7 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, ac as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, ab 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, ad as TableContainer, ae as TableTitleWrap, af as TableWrap, Z as Tag, _ as Text, a2 as TextArea, a3 as Toggle, T as ToggleCodeComponent, a4 as Tooltip, a5 as TraceLoader, aa as VerticalScroll, a6 as WarningModal, $ as getLinksFromText, a0 as getStrongsFromText, a1 as renderText } from './index-a8da9518.js';
3
+ export { C as CancelWarning, D as DeleteWarning } from './index-5d1b3a92.js';
4
4
  import React, { createContext, Component, createElement } from 'react';
5
5
  import { T as Theme } from './index-40dfa720.js';
6
6
  import 'styled-components';
@@ -3,6 +3,7 @@ import type { Trace } from '@/types';
3
3
  interface TraceViewProps {
4
4
  heightToRemove: number;
5
5
  traces: Trace[];
6
+ isLoading: boolean;
6
7
  }
7
8
  declare const TraceView: FC<TraceViewProps>;
8
9
  export { TraceView, type TraceViewProps };
@@ -13,6 +13,7 @@ interface SpanProps {
13
13
  isOpen?: boolean;
14
14
  withToggle?: boolean;
15
15
  onToggleOpen?: () => void;
16
+ onSelect: () => void;
16
17
  }
17
18
  interface RecursiveSpansProps {
18
19
  spans: TraceSpan[];
@@ -26,6 +27,10 @@ interface RecursiveSpansProps {
26
27
  value: string[];
27
28
  set: React.Dispatch<React.SetStateAction<string[]>>;
28
29
  };
30
+ selectedSpanState: {
31
+ value: TraceSpan | null;
32
+ set: React.Dispatch<React.SetStateAction<TraceSpan | null>>;
33
+ };
29
34
  }
30
35
  export declare const LEFT_MAX_WIDTH = 370;
31
36
  declare const Span: FC<SpanProps>;
@@ -0,0 +1,3 @@
1
+ import type { TraceSpan } from '@/types';
2
+ declare const buildDetailsCard: (span: TraceSpan) => import("../../../components/data-card/data-card-fields").DataCardField[];
3
+ export { buildDetailsCard };
@@ -0,0 +1,3 @@
1
+ import type { TraceSpan } from '@/types';
2
+ declare const buildLogsCard: (span: TraceSpan) => import("../../../components/data-card/data-card-fields").DataCardField[];
3
+ export { buildLogsCard };
@@ -0,0 +1,3 @@
1
+ import type { TraceProcess } from '@/types';
2
+ declare const buildProcessCard: (process: TraceProcess, isPrettyMode: boolean) => import("../../../components/data-card/data-card-fields").DataCardField[];
3
+ export { buildProcessCard };
@@ -0,0 +1,3 @@
1
+ import type { TraceSpan } from '@/types';
2
+ declare const buildTagsCard: (span: TraceSpan, isPrettyMode: boolean) => import("../../../components/data-card/data-card-fields").DataCardField[];
3
+ export { buildTagsCard };
@@ -0,0 +1,9 @@
1
+ import { type FC } from 'react';
2
+ import { TraceProcess, type TraceSpan } from '@/types';
3
+ interface SpanDrawerProps {
4
+ span: TraceSpan;
5
+ process?: TraceProcess;
6
+ onClose: () => void;
7
+ }
8
+ declare const SpanDrawer: FC<SpanDrawerProps>;
9
+ export { SpanDrawer, type SpanDrawerProps };
package/lib/containers.js CHANGED
@@ -2,16 +2,16 @@ import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle, us
2
2
  import styled, { css } from 'styled-components';
3
3
  import { b as DISPLAY_TITLES, T as Theme, V as usePendingStore, W as useNotificationStore, Q as useDrawerStore, B as BUTTON_TEXTS, X as useEntityStore, A as ACTION_OPTIONS, g as getActionIcon, O as useModalStore, F as FORM_ALERTS, Y as useFilterStore, e as getInstrumentationRuleIcon, Z as useDataStreamStore, _ as useInstrumentStore, d as getEntityId, D as DISPLAY_LANGUAGES, M as MONITORS_OPTIONS, S as STORAGE_KEYS, a as DEFAULT_DATA_STREAM_NAME, c as compareCondition, $ as useSetupStore, f as getProgrammingLanguageIcon, I as INSTRUMENTATION_RULE_OPTIONS, a0 as useSelectedStore, l as ImageErrorIcon, a1 as useDarkMode } from './index-40dfa720.js';
4
4
  import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, EdgeTypes, AddNodeTypes, SignalType, HeadersCollectionKeyTypes, CustomInstrumentationsKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType, K8sResourceKind, ProgrammingLanguages, MountMethod, AgentEnvVarsInjectionMethod, Profile, InstallationMethod } from './types.js';
5
- import { e as DataCardFieldTypes, p as FieldLabel, C as Checkbox, o as FieldError, v as Input, x as InputTable, a3 as Toggle, K as KeyValueInputsList, w as InputList, _ as Text, R as Segment, Q as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, a2 as TextArea, k as Drawer, c as ConditionDetails, D as DataCard, a8 as FlexColumn, M as Modal, N as NavigationButtons, ac as ModalBody, L as NotificationNote, A as AutocompleteInput, i as Divider, W as Status, a7 as FlexRow, a4 as Tooltip, s as IconWrapped, G as MonitorsIcons, ad as TableContainer, ae as TableTitleWrap, r as IconTitleBadge, af as TableWrap, y as InteractiveTable, a9 as CenterThis, J as NoDataFound, a5 as TraceLoader, a as Badge, ag as nodeConfig, ah as useNodesState, ai as useEdgesState, aj as Flow, ak as applyNodeChanges, P as Popup, U as SelectionButton, aa as VerticalScroll, n as Dropdown, B as Button, I as IconButton, E as ExtendArrow, al as AddButton, F as FadeLoader, g as DataTab, X as Stepper, d as DataCardFields, Z as Tag, am as MarkerType, t as IconsNav, an as CopyText, h as DescribeRow, ao as PodContainer, ap as SourceContainer, q as IconGroup, O as PopupForm, S as ScrollX } from './index-c529b896.js';
5
+ import { e as DataCardFieldTypes, p as FieldLabel, C as Checkbox, o as FieldError, v as Input, x as InputTable, a3 as Toggle, K as KeyValueInputsList, w as InputList, _ as Text, R as Segment, Q as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, a2 as TextArea, k as Drawer, c as ConditionDetails, D as DataCard, a8 as FlexColumn, M as Modal, N as NavigationButtons, ac as ModalBody, L as NotificationNote, A as AutocompleteInput, i as Divider, W as Status, a7 as FlexRow, a4 as Tooltip, s as IconWrapped, G as MonitorsIcons, ad as TableContainer, ae as TableTitleWrap, r as IconTitleBadge, af as TableWrap, y as InteractiveTable, a9 as CenterThis, J as NoDataFound, a5 as TraceLoader, a as Badge, ag as nodeConfig, ah as useNodesState, ai as useEdgesState, aj as Flow, ak as applyNodeChanges, P as Popup, U as SelectionButton, aa as VerticalScroll, n as Dropdown, B as Button, I as IconButton, E as ExtendArrow, al as AddButton, F as FadeLoader, g as DataTab, X as Stepper, d as DataCardFields, Z as Tag, am as MarkerType, t as IconsNav, an as CopyText, h as DescribeRow, ao as PodContainer, ap as SourceContainer, q as IconGroup, O as PopupForm, T as ToggleCodeComponent, S as ScrollX } from './index-a8da9518.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, E as ErrorTriangleIcon } from './index-eff01b3d.js';
8
- import { C as CrossCircledIcon, O as OdigosLogoText, F as FilterIcon, D as DataStreamsIcon, A as ArrowIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, a as OverviewIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon, G as GearIcon } from './index-a53852b3.js';
7
+ import { C as CheckCircledIcon, O as OdigosLogo, W as WarningTriangleIcon, E as ErrorTriangleIcon } from './index-eff01b3d.js';
8
+ import { C as CrossCircledIcon, O as OdigosLogoText, F as FilterIcon, D as DataStreamsIcon, A as ArrowIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, a as OverviewIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon, G as GearIcon, b as TraceViewIcon } from './index-57d03703.js';
9
9
  import { useActionFormData, useSessionStorage, useDataStreamFormData, useDestinationFormData, useClickNotification, useSourceFormData, useSourceSelectionFormData } from './hooks.js';
10
10
  import { u as useKeyDown, a as useContainerSize, b as useClickNode, c as usePopup, d as useOnClickOutside, e as useInstrumentationRuleFormData, f as useTransition, g as useTimeAgo, h as useCopy, i as useGenericForm } from './useTransition-2df374a9.js';
11
11
  import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, P as PlusIcon, a as CopyIcon } from './index-1bc2b507.js';
12
- import { D as DeleteWarning, C as CancelWarning } from './index-9a7beddb.js';
12
+ import { D as DeleteWarning, C as CancelWarning } from './index-5d1b3a92.js';
13
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-d92ef50b.js';
14
- import { f as filterActions, l as getEntityLabel, k as getEntityIcon, u as sleep, e as formatBytes, i as getContainersIcons, o as getValueForRange, j as getDestinationIcon, d as filterSourcesByStream, c as filterSources, b as filterDestinationsByStream, a as filterDestinations, t as mapDestinationFieldsForDisplay, q as getYamlFieldsForDestination, m as getMetricForEntity, p as getWorkloadId, r as hasUnhealthyInstances, h as getContainersInstrumentedCount, s as isOverTime, n as getRecursiveValues, g as formatDuration } from './index-bf427e64.js';
14
+ import { f as filterActions, l as getEntityLabel, k as getEntityIcon, u as sleep, e as formatBytes, i as getContainersIcons, o as getValueForRange, j as getDestinationIcon, d as filterSourcesByStream, c as filterSources, b as filterDestinationsByStream, a as filterDestinations, t as mapDestinationFieldsForDisplay, q as getYamlFieldsForDestination, m as getMetricForEntity, p as getWorkloadId, r as hasUnhealthyInstances, h as getContainersInstrumentedCount, s as isOverTime, g as formatDuration, n as getRecursiveValues } from './index-bf427e64.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';
@@ -677,7 +677,7 @@ const FormContainer$4 = styled.div `
677
677
  overflow: overlay;
678
678
  overflow-y: auto;
679
679
  `;
680
- const DataContainer$4 = styled.div `
680
+ const DataContainer$5 = 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$4, null,
735
+ } }))) : (React.createElement(DataContainer$5, 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
  };
@@ -2373,7 +2373,7 @@ const FormContainer$2 = styled.div `
2373
2373
  overflow: overlay;
2374
2374
  overflow-y: auto;
2375
2375
  `;
2376
- const DataContainer$3 = styled.div `
2376
+ const DataContainer$4 = styled.div `
2377
2377
  display: flex;
2378
2378
  flex-direction: column;
2379
2379
  gap: 12px;
@@ -2438,7 +2438,7 @@ const DestinationDrawer = ({ categories, updateDestination, deleteDestination, t
2438
2438
  }, dynamicFields: dynamicFields, setDynamicFields: (...params) => {
2439
2439
  setIsFormDirty(true);
2440
2440
  setDynamicFields(...params);
2441
- }, validateForm: validateForm, testConnection: testConnection }))) : (React.createElement(DataContainer$3, null,
2441
+ }, validateForm: validateForm, testConnection: testConnection }))) : (React.createElement(DataContainer$4, null,
2442
2442
  thisItem.conditions?.length ? React.createElement(ConditionDetails, { conditions: thisItem.conditions }) : null,
2443
2443
  React.createElement(DataCard, { title: DISPLAY_TITLES.DESTINATION_DETAILS, data: !!thisItem ? buildCard$2(thisItem, yamlFields) : [] })))));
2444
2444
  };
@@ -4250,7 +4250,7 @@ const FormContainer = styled.div `
4250
4250
  overflow: overlay;
4251
4251
  overflow-y: auto;
4252
4252
  `;
4253
- const DataContainer$2 = styled.div `
4253
+ const DataContainer$3 = styled.div `
4254
4254
  display: flex;
4255
4255
  flex-direction: column;
4256
4256
  gap: 12px;
@@ -4359,7 +4359,7 @@ const SourceDrawer = ({ persistSources, updateSource, restartWorkloads, fetchSou
4359
4359
  setIsFormDirty(true);
4360
4360
  handleFormChange(...params);
4361
4361
  handleFormChange('currentStreamName', selectedStreamName);
4362
- } }))) : (React.createElement(DataContainer$2, null,
4362
+ } }))) : (React.createElement(DataContainer$3, null,
4363
4363
  React.createElement(ConditionDetails, { conditions: thisItem.conditions || [] }),
4364
4364
  React.createElement(DataCard, { title: DISPLAY_TITLES.SOURCE_DETAILS, data: !!thisItem ? buildCard(thisItem) : [] }),
4365
4365
  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) }))))))) : selectedTab === Tabs.Pods ? (React.createElement(Describe$1, { source: thisItem, fetchSourceDescribe: fetchSourceDescribe })) : (React.createElement(Libraries, { source: thisItem, fetchSourceLibraries: fetchSourceLibraries }))));
@@ -4690,12 +4690,12 @@ const Describe = ({ fetchDescribeOdigos }) => {
4690
4690
  React.createElement(DataCard, { title: 'Node Collector', withExtend: true }, Object.values(describe?.nodeCollector || {}).map(mapObjectToCardChildren))));
4691
4691
  };
4692
4692
 
4693
- const DataContainer$1 = styled.div `
4693
+ const DataContainer$2 = styled.div `
4694
4694
  display: flex;
4695
4695
  flex-direction: column;
4696
4696
  gap: 12px;
4697
4697
  `;
4698
- const DRAWER_WIDTH$1 = '750px';
4698
+ const DRAWER_WIDTH$2 = '750px';
4699
4699
  const TITLE_TEXT$1 = 'System Overview';
4700
4700
  const SystemOverview = ({ tokens, saveToken, fetchDescribeOdigos }) => {
4701
4701
  const [isOpen, setIsOpen] = useState(false);
@@ -4703,13 +4703,13 @@ const SystemOverview = ({ tokens, saveToken, fetchDescribeOdigos }) => {
4703
4703
  return (React.createElement(React.Fragment, null,
4704
4704
  React.createElement(IconButton, { key: TITLE_TEXT$1, onClick: toggleOpen, tooltip: TITLE_TEXT$1 },
4705
4705
  React.createElement(TerminalIcon, { size: 18 })),
4706
- React.createElement(Drawer, { width: DRAWER_WIDTH$1, isOpen: isOpen, onClose: toggleOpen, header: {
4706
+ React.createElement(Drawer, { width: DRAWER_WIDTH$2, isOpen: isOpen, onClose: toggleOpen, header: {
4707
4707
  icons: [TerminalIcon],
4708
4708
  title: TITLE_TEXT$1,
4709
4709
  }, footer: {
4710
4710
  isOpen: false,
4711
4711
  } },
4712
- React.createElement(DataContainer$1, null,
4712
+ React.createElement(DataContainer$2, null,
4713
4713
  !!tokens?.length && React.createElement(Tokens, { tokens: tokens, saveToken: saveToken }),
4714
4714
  React.createElement(Describe, { fetchDescribeOdigos: fetchDescribeOdigos })))));
4715
4715
  };
@@ -4952,7 +4952,7 @@ const CollectorGatewaySettings = forwardRef(({ isAdvanced, formData, handleFormC
4952
4952
  });
4953
4953
  CollectorGatewaySettings.displayName = CollectorGatewaySettings.name;
4954
4954
 
4955
- const DataContainer = styled.div `
4955
+ const DataContainer$1 = styled.div `
4956
4956
  display: flex;
4957
4957
  flex-direction: column;
4958
4958
  gap: 12px;
@@ -4962,7 +4962,7 @@ const DataContainer = styled.div `
4962
4962
  const Relative = styled.div `
4963
4963
  position: relative;
4964
4964
  `;
4965
- const DRAWER_WIDTH = '750px';
4965
+ const DRAWER_WIDTH$1 = '750px';
4966
4966
  const TITLE_TEXT = 'System Settings';
4967
4967
  const SystemSettings = ({ installationMethod, fetchSettings, onSave }) => {
4968
4968
  const [settings, setSettings] = useState(undefined);
@@ -5048,7 +5048,7 @@ const SystemSettings = ({ installationMethod, fetchSettings, onSave }) => {
5048
5048
  return (React.createElement(React.Fragment, null,
5049
5049
  React.createElement(IconButton, { key: TITLE_TEXT, onClick: toggleOpen, tooltip: TITLE_TEXT },
5050
5050
  React.createElement(GearIcon, { size: 18 })),
5051
- React.createElement(Drawer, { width: DRAWER_WIDTH, isOpen: isOpen, onClose: () => handleWithCancelWarning(toggleOpen), header: {
5051
+ React.createElement(Drawer, { width: DRAWER_WIDTH$1, isOpen: isOpen, onClose: () => handleWithCancelWarning(toggleOpen), header: {
5052
5052
  icons: [GearIcon],
5053
5053
  title: TITLE_TEXT,
5054
5054
  tabs: tabsArray.map((tab) => ({
@@ -5079,7 +5079,7 @@ const SystemSettings = ({ installationMethod, fetchSettings, onSave }) => {
5079
5079
  children: BUTTON_TEXTS.SAVE,
5080
5080
  },
5081
5081
  ],
5082
- } }, formData?.imagePrefix !== undefined && !isSaving ? (React.createElement(DataContainer, { ref: scrollContainerRef },
5082
+ } }, formData?.imagePrefix !== undefined && !isSaving ? (React.createElement(DataContainer$1, { ref: scrollContainerRef },
5083
5083
  installationMethod === InstallationMethod.Helm && React.createElement(NotificationNote, { type: StatusType.Warning, title: 'Helm', message: "Changes won't persist unless you update the `values.yaml` file" }),
5084
5084
  React.createElement(GeneralSettings, { ref: generalRef, isAdvanced: isAdvanced, formData: formData, handleFormChange: handleFormChange }),
5085
5085
  React.createElement(UiSettings, { ref: uiRef, isAdvanced: isAdvanced, formData: formData, handleFormChange: handleFormChange }),
@@ -5228,6 +5228,100 @@ const buildSpans = (trace) => {
5228
5228
  return rootSpans.sort((a, b) => a.startTime - b.startTime);
5229
5229
  };
5230
5230
 
5231
+ const buildTagsCard = (span, isPrettyMode) => {
5232
+ const { tags } = span;
5233
+ const jsonTags = {};
5234
+ const arr = [];
5235
+ tags.forEach((tag) => {
5236
+ jsonTags[tag.key] = tag.value;
5237
+ });
5238
+ arr.push({
5239
+ type: DataCardFieldTypes.Code,
5240
+ value: {
5241
+ language: 'json',
5242
+ code: JSON.stringify(jsonTags, null, 2),
5243
+ pretty: isPrettyMode,
5244
+ },
5245
+ });
5246
+ return arr;
5247
+ };
5248
+
5249
+ const buildLogsCard = (span) => {
5250
+ const { logs } = span;
5251
+ const arr = [];
5252
+ logs.forEach((log, i) => {
5253
+ log.fields.forEach((field) => {
5254
+ arr.push({
5255
+ title: field.key,
5256
+ value: field.value,
5257
+ });
5258
+ });
5259
+ if (i !== logs.length - 1) {
5260
+ arr.push({ type: DataCardFieldTypes.Divider });
5261
+ }
5262
+ });
5263
+ return arr;
5264
+ };
5265
+
5266
+ const buildDetailsCard = (span) => {
5267
+ const { traceID, spanID, processID, operationName, duration, startTime, warnings } = span;
5268
+ const arr = [];
5269
+ arr.push({ type: DataCardFieldTypes.CopyText, title: 'Trace ID', value: traceID });
5270
+ arr.push({ type: DataCardFieldTypes.CopyText, title: 'Span ID', value: spanID });
5271
+ arr.push({ type: DataCardFieldTypes.Divider });
5272
+ arr.push({ title: 'Service', value: processID });
5273
+ arr.push({ title: 'Operation', value: operationName });
5274
+ arr.push({ title: 'Duration', value: formatDuration(duration) });
5275
+ arr.push({ title: 'Start time', value: new Date(startTime / 1000).toLocaleString() });
5276
+ if (warnings.length) {
5277
+ arr.push({ type: DataCardFieldTypes.Divider });
5278
+ arr.push({ title: 'Warnings', titleIcon: WarningTriangleIcon, value: warnings });
5279
+ }
5280
+ return arr;
5281
+ };
5282
+
5283
+ const buildProcessCard = (process, isPrettyMode) => {
5284
+ const { tags } = process;
5285
+ const jsonTags = {};
5286
+ const arr = [];
5287
+ tags.forEach((tag) => {
5288
+ jsonTags[tag.key] = tag.value;
5289
+ });
5290
+ arr.push({
5291
+ type: DataCardFieldTypes.Code,
5292
+ value: {
5293
+ language: 'json',
5294
+ code: JSON.stringify(jsonTags, null, 2),
5295
+ pretty: isPrettyMode,
5296
+ },
5297
+ });
5298
+ return arr;
5299
+ };
5300
+
5301
+ const DataContainer = styled.div `
5302
+ display: flex;
5303
+ flex-direction: column;
5304
+ gap: 12px;
5305
+ max-height: 100vh;
5306
+ overflow-y: auto;
5307
+ `;
5308
+ const DRAWER_WIDTH = '750px';
5309
+ const SpanDrawer = ({ span, process, onClose }) => {
5310
+ const [isTagsCodePretty, setIsTagsCodePretty] = useState(true);
5311
+ const [isProcessCodePretty, setIsProcessCodePretty] = useState(true);
5312
+ return (React.createElement(Drawer, { width: DRAWER_WIDTH, isOpen: true, onClose: onClose, header: {
5313
+ icons: [TraceViewIcon],
5314
+ title: span.operationName,
5315
+ }, footer: {
5316
+ isOpen: false,
5317
+ } },
5318
+ React.createElement(DataContainer, null,
5319
+ React.createElement(DataCard, { title: 'Details', data: buildDetailsCard(span) }),
5320
+ span.logs.length > 0 && React.createElement(DataCard, { title: 'Errors', titleBadge: span.logs.length, titleIcon: ErrorTriangleIcon, data: buildLogsCard(span) }),
5321
+ React.createElement(DataCard, { title: 'Tags', data: buildTagsCard(span, isTagsCodePretty), action: React.createElement(ToggleCodeComponent, { isPrettyMode: isTagsCodePretty, setIsPrettyMode: setIsTagsCodePretty }) }),
5322
+ process && (React.createElement(DataCard, { title: `Process (${process.serviceName})`, data: buildProcessCard(process, isProcessCodePretty), action: React.createElement(ToggleCodeComponent, { isPrettyMode: isProcessCodePretty, setIsPrettyMode: setIsProcessCodePretty }) })))));
5323
+ };
5324
+
5231
5325
  const LEFT_MAX_WIDTH = 370;
5232
5326
  const DURATION_COLORS = ['#33DCA7', '#50F6E8', '#444AD9', '#8B55FF', '#FF7CA9'].reverse();
5233
5327
  const Container$1 = styled.div `
@@ -5235,6 +5329,10 @@ const Container$1 = styled.div `
5235
5329
  align-items: center;
5236
5330
  width: ${LEFT_MAX_WIDTH}px;
5237
5331
  background-color: ${({ $withErrors, theme }) => ($withErrors ? theme.colors.error + Theme.opacity.hex['042'] : theme.colors.dark_grey)};
5332
+ &:hover {
5333
+ ${({ $withErrors, $preventHover, theme }) => !$preventHover && `background-color: ${$withErrors ? theme.colors.error : theme.colors.secondary + Theme.opacity.hex['010']};`}
5334
+ cursor: ${({ $preventHover }) => ($preventHover ? 'default' : 'pointer')};
5335
+ }
5238
5336
  `;
5239
5337
  const Left = styled(FlexRow) `
5240
5338
  align-items: center;
@@ -5245,11 +5343,11 @@ const Left = styled(FlexRow) `
5245
5343
  width: calc(${LEFT_MAX_WIDTH}px - ${({ $depth }) => $depth * 12}px);
5246
5344
  `;
5247
5345
  const Right = styled(FlexRow) `
5248
- position: absolute;
5249
- right: 64px;
5250
5346
  align-items: center;
5251
5347
  gap: 4px;
5252
- width: calc(100% - ${LEFT_MAX_WIDTH + 80}px);
5348
+ position: absolute;
5349
+ right: 56px;
5350
+ width: calc(100% - ${LEFT_MAX_WIDTH + 64}px);
5253
5351
  `;
5254
5352
  const DurationBar = styled.div `
5255
5353
  position: absolute;
@@ -5266,8 +5364,9 @@ const DurationText = styled(Text) `
5266
5364
  font-family: ${({ theme }) => theme.font_family.secondary};
5267
5365
  white-space: nowrap;
5268
5366
  `;
5269
- const Span = ({ span, depth, indexInMatrix, maxDuration, minStartTime, maxEndTime, withErrors, errorTooltip, isOpen, withToggle, onToggleOpen }) => {
5367
+ const Span = ({ span, depth, indexInMatrix, maxDuration, minStartTime, maxEndTime, withErrors, errorTooltip, isOpen, withToggle, onToggleOpen, onSelect }) => {
5270
5368
  const theme = Theme.useTheme();
5369
+ const [isButtonHovered, setIsButtonHovered] = useState(false);
5271
5370
  const textMaxWidth = LEFT_MAX_WIDTH -
5272
5371
  // 12px times depth is the left padding, 12px is the right padding
5273
5372
  12 * depth -
@@ -5276,11 +5375,15 @@ const Span = ({ span, depth, indexInMatrix, maxDuration, minStartTime, maxEndTim
5276
5375
  // 16px is the width of the error icon, 4px is the gap between the text and the error icon
5277
5376
  (withErrors ? 16 - 4 : 0);
5278
5377
  const withErrorIcon = withErrors && (depth === 1 || span.logs.length > 0);
5279
- return (React.createElement(Container$1, { className: 'span-container', "$withErrors": withErrors },
5378
+ return (React.createElement(Container$1, { className: 'span-container', "$withErrors": withErrors, "$preventHover": isButtonHovered, onClick: onSelect },
5280
5379
  React.createElement(Left, { "$depth": depth, className: 'span-left' },
5281
5380
  React.createElement(FlexRow, { "$gap": 4, "$alignItems": 'center' },
5282
- withToggle ? (React.createElement(IconButton, { onClick: onToggleOpen, size: 24 },
5283
- React.createElement(ExtendArrow, { extend: isOpen ?? false }))) : (React.createElement("div", { style: { width: '24px' } })),
5381
+ withToggle ? (React.createElement("div", { onMouseEnter: () => setIsButtonHovered(true), onMouseLeave: () => setIsButtonHovered(false) },
5382
+ React.createElement(IconButton, { onClick: (e) => {
5383
+ e.stopPropagation();
5384
+ onToggleOpen?.();
5385
+ }, size: 24 },
5386
+ React.createElement(ExtendArrow, { extend: isOpen ?? false })))) : (React.createElement("div", { style: { width: '24px' } })),
5284
5387
  React.createElement(ScrollX, { maxWidth: textMaxWidth / 2, text: span.processID, textSize: 14 }),
5285
5388
  React.createElement(Text, { size: 12, color: theme.text.darker_grey }, "\u2022"),
5286
5389
  React.createElement(ScrollX, { maxWidth: textMaxWidth / 2, text: span.operationName, textSize: 12, textColor: theme.text.darker_grey })),
@@ -5293,7 +5396,7 @@ const Span = ({ span, depth, indexInMatrix, maxDuration, minStartTime, maxEndTim
5293
5396
  React.createElement(DurationBar, { "$indexInMatrix": indexInMatrix, "$duration": span.duration, "$maxDuration": maxDuration, "$startTime": span.startTime, "$minStartTime": minStartTime, "$maxEndTime": maxEndTime },
5294
5397
  React.createElement(DurationText, null, formatDuration(span.duration))))));
5295
5398
  };
5296
- const RecursiveSpans = ({ spans, logs, depth, indexInMatrix, maxDuration, minStartTime, maxEndTime, openSpanIdsState }) => {
5399
+ const RecursiveSpans = ({ spans, logs, depth, indexInMatrix, maxDuration, minStartTime, maxEndTime, openSpanIdsState, selectedSpanState }) => {
5297
5400
  const theme = Theme.useTheme();
5298
5401
  return spans.map((span, i) => {
5299
5402
  const id = span.spanID;
@@ -5313,8 +5416,12 @@ const RecursiveSpans = ({ spans, logs, depth, indexInMatrix, maxDuration, minSta
5313
5416
  if (alreadyOpen)
5314
5417
  return prev.filter((st) => st != id);
5315
5418
  return [...prev, id, ...getRecursiveValues(span, 'spans', 'spanID')];
5419
+ }), onSelect: () => selectedSpanState.set((prev) => {
5420
+ if (prev?.spanID === id)
5421
+ return null;
5422
+ return span;
5316
5423
  }) }),
5317
- isOpen && hasChildSpans ? (React.createElement(RecursiveSpans, { spans: span.spans || [], logs: allLogs, depth: depth + 1, indexInMatrix: indexInMatrix + i, maxDuration: maxDuration, minStartTime: minStartTime, maxEndTime: maxEndTime, openSpanIdsState: openSpanIdsState })) : null));
5424
+ isOpen && hasChildSpans ? (React.createElement(RecursiveSpans, { spans: span.spans || [], logs: allLogs, depth: depth + 1, indexInMatrix: indexInMatrix + i, maxDuration: maxDuration, minStartTime: minStartTime, maxEndTime: maxEndTime, openSpanIdsState: openSpanIdsState, selectedSpanState: selectedSpanState })) : null));
5318
5425
  });
5319
5426
  };
5320
5427
 
@@ -5343,9 +5450,8 @@ const DurationDivider = styled.div `
5343
5450
  height: ${({ $heightToRemove }) => `calc(100vh - ${$heightToRemove}px + 2px)`};
5344
5451
  background: ${({ theme }) => `linear-gradient(to bottom, ${theme.colors.border}, transparent)`};
5345
5452
 
5346
- position: fixed;
5347
- left: calc(${LEFT_MAX_WIDTH + 18}px + ((100% - ${LEFT_MAX_WIDTH}px) / ${NUM_OF_DURATION_DIVIDERS}) * ${({ index }) => index});
5348
- z-index: -1;
5453
+ position: absolute;
5454
+ left: calc(${LEFT_MAX_WIDTH}px + ((100% - ${LEFT_MAX_WIDTH}px) / ${NUM_OF_DURATION_DIVIDERS}) * ${({ index }) => index});
5349
5455
  `;
5350
5456
  const DurationTitle = styled(Text) `
5351
5457
  color: ${({ theme }) => theme.text.darker_grey};
@@ -5355,8 +5461,9 @@ const DurationTitle = styled(Text) `
5355
5461
  padding-left: 12px;
5356
5462
  white-space: nowrap;
5357
5463
  `;
5358
- const TraceView = ({ heightToRemove, traces }) => {
5464
+ const TraceView = ({ heightToRemove, traces, isLoading }) => {
5359
5465
  const [openSpanIds, setOpenSpanIds] = useState([]);
5466
+ const [selectedSpan, setSelectedSpan] = useState(null);
5360
5467
  const finalTraces = useMemo(() => {
5361
5468
  const sorted = deepClone(traces).sort((a, b) => b.spans[0].startTime - a.spans[0].startTime);
5362
5469
  const mapped = sorted.map((trace) => ({ ...trace, spans: buildSpans(trace) }));
@@ -5367,23 +5474,34 @@ const TraceView = ({ heightToRemove, traces }) => {
5367
5474
  return Math.max(max, trace.spans.reduce((max, span) => max + span.duration, 0));
5368
5475
  }, 0);
5369
5476
  }, [finalTraces]);
5370
- return (React.createElement(Container, { "$heightToRemove": heightToRemove }, finalTraces.length ? (React.createElement(ContainSpans, { "$heightToRemove": heightToRemove },
5371
- React.createElement(ContainTitle, null,
5372
- React.createElement(Text, null, "Service & operation")),
5373
- finalTraces.map((trace, i) => {
5374
- const { spans } = trace;
5375
- // is equal CSS left: 0%;
5376
- const minStartTime = spans.reduce((min, span) => Math.min(min, span.startTime), Number.MAX_SAFE_INTEGER);
5377
- // is equal CSS left: 100%;
5378
- const maxEndTime = spans.reduce((max, span) => Math.max(max, span.startTime + span.duration), 0);
5379
- return (React.createElement(RecursiveSpans, { key: `recursive-spans-${trace.traceID}`, spans: spans, logs: [], depth: 1, indexInMatrix: i, maxDuration: maxDuration, minStartTime: minStartTime, maxEndTime: maxEndTime, openSpanIdsState: {
5380
- value: openSpanIds,
5381
- set: setOpenSpanIds,
5382
- } }));
5383
- }),
5384
- new Array(NUM_OF_DURATION_DIVIDERS).fill(null).map((_, i) => (React.createElement(DurationDivider, { key: `${i}-divider`, "$heightToRemove": heightToRemove, index: i },
5385
- React.createElement(DurationTitle, null, formatDuration((maxDuration / NUM_OF_DURATION_DIVIDERS) * i))))))) : (React.createElement(CenterThis, { "$height": '50vh' },
5386
- React.createElement(NoDataFound, { title: DISPLAY_TITLES.NO_TRACES_FOUND, subTitle: DISPLAY_TITLES.ARE_SERVICES_INSTRUMENTED_AND_PRODUCING_TRAFFIC })))));
5477
+ const selectedSpanProcess = useMemo(() => {
5478
+ const foundTrace = finalTraces.find((t) => t.spans.some((s) => s.spanID === selectedSpan?.spanID));
5479
+ const foundProcess = foundTrace?.processes.find((p) => p.serviceName === selectedSpan?.processID);
5480
+ return foundProcess;
5481
+ }, [finalTraces, selectedSpan]);
5482
+ return (React.createElement(React.Fragment, null,
5483
+ React.createElement(Container, { "$heightToRemove": heightToRemove }, isLoading ? (React.createElement(CenterThis, { "$height": '50vh' },
5484
+ React.createElement(FadeLoader, { scale: 1.5 }))) : !finalTraces.length ? (React.createElement(CenterThis, { "$height": '50vh' },
5485
+ React.createElement(NoDataFound, { title: DISPLAY_TITLES.NO_TRACES_FOUND, subTitle: DISPLAY_TITLES.ARE_SERVICES_INSTRUMENTED_AND_PRODUCING_TRAFFIC }))) : (React.createElement(ContainSpans, { "$heightToRemove": heightToRemove },
5486
+ React.createElement(ContainTitle, null,
5487
+ React.createElement(Text, null, "Service & operation")),
5488
+ new Array(NUM_OF_DURATION_DIVIDERS).fill(null).map((_, i) => (React.createElement(DurationDivider, { key: `${i}-divider`, "$heightToRemove": heightToRemove, index: i },
5489
+ React.createElement(DurationTitle, null, formatDuration((maxDuration / NUM_OF_DURATION_DIVIDERS) * i))))),
5490
+ finalTraces.map((trace, i) => {
5491
+ const { spans } = trace;
5492
+ // is equal CSS left: 0%;
5493
+ const minStartTime = spans.reduce((min, span) => Math.min(min, span.startTime), Number.MAX_SAFE_INTEGER);
5494
+ // is equal CSS left: 100%;
5495
+ const maxEndTime = spans.reduce((max, span) => Math.max(max, span.startTime + span.duration), 0);
5496
+ return (React.createElement(RecursiveSpans, { key: `recursive-spans-${trace.traceID}`, spans: spans, logs: [], depth: 1, indexInMatrix: i, maxDuration: maxDuration, minStartTime: minStartTime, maxEndTime: maxEndTime, openSpanIdsState: {
5497
+ value: openSpanIds,
5498
+ set: setOpenSpanIds,
5499
+ }, selectedSpanState: {
5500
+ value: selectedSpan,
5501
+ set: setSelectedSpan,
5502
+ } }));
5503
+ })))),
5504
+ selectedSpan && React.createElement(SpanDrawer, { span: selectedSpan, process: selectedSpanProcess, onClose: () => setSelectedSpan(null) })));
5387
5505
  };
5388
5506
 
5389
5507
  export { ActionDrawer, ActionForm, ActionModal, ActionTable, AwaitPipeline, ConditionDropdown, 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, TraceView };
package/lib/icons.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { T as Theme } from './index-40dfa720.js';
2
2
  export { i as AddClusterInfoIcon, o as CPlusPlusLogo, p as CSharpLogo, C as CodeAttributesIcon, m as CustomInstrumentationIcon, j as DeleteAttributeIcon, q as DotnetLogo, E as ElixirLogo, G as GoLogo, H as HeadersCollectionIcon, l as ImageErrorIcon, J as JavaLogo, K as K8sLogo, h as KafkaLogo, r as MysqlLogo, N as NginxLogo, s as NodejsLogo, n as PayloadCollectionIcon, t as PhpLogo, P as PiiMaskingIcon, u as PostgresLogo, v as PythonLogo, w as RedisLogo, R as RenameAttributeIcon, x as RubyLogo, y as RustLogo, k as SamplerIcon, z as SwiftLogo } from './index-40dfa720.js';
3
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-eff01b3d.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-a53852b3.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, b as TraceViewIcon, U as UserIcon } from './index-57d03703.js';
5
5
  import React from 'react';
6
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-1bc2b507.js';
7
7
  export { V as VmLogo } from './index-333086d8.js';
@@ -170,13 +170,6 @@ const ServiceMapIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth =
170
170
  React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M4.67333 8.61735H4.66667M7.34667 8.61735H7.34M9.66667 7.61735L10.6668 8.61744M10.6668 8.61744L11.6667 9.61735M10.6668 8.61744L11.6668 7.61735M10.6668 8.61744L9.66684 9.61735M6.95406 3.76106L9.05573 4.81189C9.39594 4.982 9.56605 5.06705 9.74417 5.10188C9.91313 5.13491 10.0869 5.13491 10.2558 5.10188C10.434 5.06705 10.6041 4.982 10.9443 4.81189C11.9382 4.31494 12.4351 4.06646 12.8395 4.11932C13.2185 4.16887 13.5581 4.37871 13.7719 4.69556C14 5.0336 14 5.58921 14 6.70044V10.6322C14 11.1108 14 11.3501 13.9271 11.5614C13.8627 11.7482 13.7575 11.9184 13.6192 12.0596C13.4628 12.2193 13.2488 12.3263 12.8207 12.5403L10.9541 13.4737C10.6042 13.6486 10.4293 13.736 10.2459 13.7705C10.0834 13.8009 9.91663 13.8009 9.75414 13.7705C9.57067 13.736 9.39576 13.6486 9.04595 13.4737L6.94427 12.4228C6.60406 12.2527 6.43395 12.1677 6.25583 12.1328C6.08687 12.0998 5.91313 12.0998 5.74417 12.1328C5.56605 12.1677 5.39594 12.2527 5.05573 12.4228C4.06182 12.9198 3.56486 13.1683 3.16049 13.1154C2.78147 13.0658 2.44195 12.856 2.22812 12.5392C2 12.2011 2 11.6455 2 10.5343V6.6025C2 6.12389 2 5.88458 2.07287 5.67331C2.13732 5.48648 2.24249 5.31631 2.38078 5.17511C2.53715 5.01545 2.7512 4.90843 3.17928 4.69439L5.04594 3.76106C5.39576 3.58615 5.57067 3.49869 5.75414 3.46427C5.91663 3.43378 6.08337 3.43378 6.24586 3.46427C6.42933 3.49869 6.60424 3.58615 6.95406 3.76106Z' })));
171
171
  };
172
172
 
173
- const TraceViewIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
174
- const theme = Theme.useTheme();
175
- const fill = f || theme.text.secondary;
176
- return (React.createElement("svg", { width: size * (16 / 17), height: size, viewBox: '0 0 16 17', xmlns: 'http://www.w3.org/2000/svg', fill: 'none', style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
177
- React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M2.66666 8.61719H6.66666M2.66666 12.6172H6.66666M2.66666 4.61719H13.3333M14 12.9505L13.0809 12.0315M13.0809 12.0315C13.4438 11.6686 13.6667 11.1686 13.6667 10.6172C13.6667 9.51147 12.7724 8.61719 11.6667 8.61719C10.5609 8.61719 9.66666 9.51147 9.66666 10.6172C9.66666 11.7229 10.5609 12.6172 11.6667 12.6172C12.2181 12.6172 12.7181 12.3943 13.0809 12.0315Z' })));
178
- };
179
-
180
173
  const ConnectionsIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
181
174
  const theme = Theme.useTheme();
182
175
  const fill = f || theme.text.secondary;
@@ -191,4 +184,4 @@ const ErrorRoundIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth =
191
184
  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' })));
192
185
  };
193
186
 
194
- export { AvatarIcon, CodeBracketsIcon, CommandIcon, ConnectionsIcon, ErrorRoundIcon, FolderIcon, GoogleCloudStorageLogo, LightOffIcon, LightOnIcon, MinusCircledIcon, MoonIcon, OdigosDestinationLogo, PlusCircledIcon, RefreshArrowsIcon, RefreshRightArrowIcon, RotateArrowsIcon, SentryLogo, ServiceMapIcon, SunIcon, TraceViewIcon, UserGroupIcon, UserSettingsIcon };
187
+ export { AvatarIcon, CodeBracketsIcon, CommandIcon, ConnectionsIcon, ErrorRoundIcon, FolderIcon, GoogleCloudStorageLogo, LightOffIcon, LightOnIcon, MinusCircledIcon, MoonIcon, OdigosDestinationLogo, PlusCircledIcon, RefreshArrowsIcon, RefreshRightArrowIcon, RotateArrowsIcon, SentryLogo, ServiceMapIcon, SunIcon, UserGroupIcon, UserSettingsIcon };
@@ -91,6 +91,13 @@ const OverviewIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1
91
91
  React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M9.33348 11.4667C9.33348 10.7199 9.33348 10.3466 9.47881 10.0613C9.60664 9.81046 9.81061 9.60649 10.0615 9.47866C10.3467 9.33333 10.7201 9.33333 11.4668 9.33333H11.8668C12.6136 9.33333 12.9869 9.33333 13.2721 9.47866C13.523 9.60649 13.727 9.81046 13.8548 10.0613C14.0002 10.3466 14.0002 10.7199 14.0002 11.4667V11.8667C14.0002 12.6134 14.0002 12.9868 13.8548 13.272C13.727 13.5229 13.523 13.7268 13.2721 13.8547C12.9869 14 12.6136 14 11.8668 14H11.4668C10.7201 14 10.3467 14 10.0615 13.8547C9.81061 13.7268 9.60664 13.5229 9.47881 13.272C9.33348 12.9868 9.33348 12.6134 9.33348 11.8667V11.4667Z' })));
92
92
  };
93
93
 
94
+ const TraceViewIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
95
+ const theme = Theme.useTheme();
96
+ const fill = f || theme.text.secondary;
97
+ return (React.createElement("svg", { width: size * (16 / 17), height: size, viewBox: '0 0 16 17', xmlns: 'http://www.w3.org/2000/svg', fill: 'none', style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
98
+ React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M2.66666 8.61719H6.66666M2.66666 12.6172H6.66666M2.66666 4.61719H13.3333M14 12.9505L13.0809 12.0315M13.0809 12.0315C13.4438 11.6686 13.6667 11.1686 13.6667 10.6172C13.6667 9.51147 12.7724 8.61719 11.6667 8.61719C10.5609 8.61719 9.66666 9.51147 9.66666 10.6172C9.66666 11.7229 10.5609 12.6172 11.6667 12.6172C12.2181 12.6172 12.7181 12.3943 13.0809 12.0315Z' })));
99
+ };
100
+
94
101
  const DataStreamsIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
95
102
  const theme = Theme.useTheme();
96
103
  const fill = f || theme.text.secondary;
@@ -114,4 +121,4 @@ const CrossCircledIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth
114
121
  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' })));
115
122
  };
116
123
 
117
- 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 };
124
+ 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, TraceViewIcon as b };
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { a6 as WarningModal } from './index-c529b896.js';
2
+ import { a6 as WarningModal } from './index-a8da9518.js';
3
3
  import { StatusType, EntityTypes } from './types.js';
4
4
  import './index-40dfa720.js';
5
5
  import 'styled-components';
@@ -16,7 +16,7 @@ const TextWrapper$2 = styled.div `
16
16
  text-align: ${({ $align }) => $align || 'left'};
17
17
  opacity: ${({ $opacity }) => ($opacity !== undefined ? $opacity : 1)};
18
18
  text-decoration: ${({ $decoration }) => $decoration || 'none'};
19
- text-transform: ${({ $family }) => ($family === 'secondary' ? 'uppercase' : 'none')};
19
+ text-transform: ${({ $transform, $family }) => $transform || ($family === 'secondary' ? 'uppercase' : 'none')};
20
20
  font-family: ${({ theme, $family = 'primary' }) => theme.font_family[$family]};
21
21
  `;
22
22
  const getLinksFromText = (text) => {
@@ -69,7 +69,7 @@ const renderText = (text, theme) => {
69
69
  });
70
70
  return mappedText;
71
71
  };
72
- const Text = ({ children, color, size, weight, align, family, opacity, decoration, ...props }) => {
72
+ const Text = ({ children, color, size, weight, align, family, opacity, decoration, transform, ...props }) => {
73
73
  const theme = Theme.useTheme();
74
74
  const textArray = useMemo(() => {
75
75
  const str = !children
@@ -85,7 +85,7 @@ const Text = ({ children, color, size, weight, align, family, opacity, decoratio
85
85
  : '';
86
86
  return str.split('\n');
87
87
  }, [children]);
88
- return (React.createElement(TextWrapper$2, { "$color": color, "$size": size, "$weight": weight, "$align": align, "$family": family, "$opacity": opacity, "$decoration": decoration, ...props }, textArray.length
88
+ return (React.createElement(TextWrapper$2, { "$color": color, "$size": size, "$weight": weight, "$align": align, "$family": family, "$opacity": opacity, "$decoration": decoration, "$transform": transform, ...props }, textArray.length
89
89
  ? textArray.map((str, i) => (React.createElement(Fragment, { key: `text-${i}-${str}` },
90
90
  renderText(str, theme),
91
91
  i !== textArray.length - 1 ? React.createElement("br", null) : null)))
@@ -3783,6 +3783,10 @@ const Title$c = styled(Text) `
3783
3783
  const CodeLineToken = styled.span `
3784
3784
  white-space: ${({ $noWrap }) => ($noWrap ? 'nowrap' : 'pre-wrap')};
3785
3785
  overflow-wrap: break-word;
3786
+ word-break: break-word;
3787
+ word-wrap: break-word;
3788
+ /* Fallback for older browsers */
3789
+ -ms-word-break: break-all;
3786
3790
  font-size: 12px;
3787
3791
  `;
3788
3792
  const Code = ({ language, code, flatten, pretty }) => {
@@ -3857,7 +3861,7 @@ const PrettyJsonCode = ({ darkMode, str }) => {
3857
3861
  React.createElement(TableData, null))));
3858
3862
  return (React.createElement(Fragment, null, rows.map((R, i) => (React.createElement(R, { key: `empty-row-${idx}-${i}`, style: i === 0 ? { borderBottom: `1px solid ${theme.colors.border}` } : {} })))));
3859
3863
  };
3860
- return (React.createElement(Highlight2, { theme: darkMode ? themes_exports.palenight : themes_exports.vsLight, language: 'json', code: str }, ({ getLineProps, tokens }) => (React.createElement(Table$1, null,
3864
+ return (React.createElement(Highlight2, { theme: darkMode ? themes_exports.palenight : themes_exports.vsLight, language: 'json', code: str }, ({ getLineProps, getTokenProps, tokens }) => (React.createElement(Table$1, null,
3861
3865
  React.createElement(TableBody$1, null, tokens.map((line, i) => {
3862
3866
  const formattedLine = formatLineForPrettyMode(line);
3863
3867
  const lineProps = getLineProps({ line: formattedLine });
@@ -3876,7 +3880,7 @@ const PrettyJsonCode = ({ darkMode, str }) => {
3876
3880
  return (React.createElement(TableData, { key: `line-${i}-token-${ii}` },
3877
3881
  React.createElement(FlexRow, null,
3878
3882
  React.createElement(FlexRow, null, components),
3879
- React.createElement(CodeLineToken, { "$noWrap": isRowTitle }, text))));
3883
+ React.createElement(CodeLineToken, { "$noWrap": isRowTitle, ...getTokenProps({ token }) }, text))));
3880
3884
  })));
3881
3885
  }
3882
3886
  else {
@@ -17273,12 +17277,15 @@ const PreWrap = styled(Text) `
17273
17277
  white-space: pre-wrap;
17274
17278
  `;
17275
17279
  const DataCardFields = ({ data }) => {
17276
- return (React.createElement(ListContainer$3, null, data?.map(({ type, title, tooltip, value }, idx) => (React.createElement(ListItem, { key: `data-field-${title || (!!value ? JSON.stringify(value) : idx)}`, "$width": !!type && [DataCardFieldTypes.Code, DataCardFieldTypes.Table].includes(type)
17280
+ return (React.createElement(ListContainer$3, null, data?.map(({ type, title, titleIcon: TitleIcon, tooltip, value }, idx) => (React.createElement(ListItem, { key: `data-field-${title || (!!value ? JSON.stringify(value) : idx)}`, "$width": !!type && [DataCardFieldTypes.Code, DataCardFieldTypes.Table].includes(type)
17277
17281
  ? 'inherit'
17278
17282
  : !!type && [DataCardFieldTypes.Loader, DataCardFieldTypes.Divider, DataCardFieldTypes.CopyText].includes(type)
17279
17283
  ? '100%'
17280
17284
  : 'unset' },
17281
- React.createElement(Tooltip, { text: tooltip, withIcon: true }, !!title && React.createElement(ItemTitle, null, title)),
17285
+ React.createElement(Tooltip, { text: tooltip, withIcon: true },
17286
+ React.createElement(FlexRow, { "$alignItems": 'center', "$gap": 4 },
17287
+ TitleIcon && React.createElement(TitleIcon, { size: 14 }),
17288
+ !!title && React.createElement(ItemTitle, { transform: 'capitalize' }, title))),
17282
17289
  React.createElement(RenderValue, { type: type, value: value }))))));
17283
17290
  };
17284
17291
  // We need to maintain this with new components every time we add a new type to "DataCardFieldTypes"
@@ -17357,15 +17364,17 @@ const ActionWrapper = styled(FlexRow) `
17357
17364
  margin-left: auto;
17358
17365
  gap: 8px;
17359
17366
  `;
17360
- const DataCard = ({ title = 'Details', titleBadge, description, action: Action, withExtend, initialExtended = false, data, children }) => {
17367
+ const DataCard = ({ title = 'Details', titleBadge, titleIcon: TitleIcon, description, action: Action, withExtend, initialExtended = false, data, children }) => {
17361
17368
  const [extend, setExtend] = useState(initialExtended);
17362
17369
  const [hovered, setHovered] = useState(false);
17363
17370
  return (React.createElement(CardContainer, { "$hovered": hovered },
17364
- !!title || !!description || !!Action ? (React.createElement(Header$1, { "$clickable": withExtend || false, onClick: () => withExtend && setExtend((prev) => !prev), onMouseEnter: () => withExtend && setHovered(true), onMouseLeave: () => withExtend && setHovered(false) },
17371
+ !!title || !!TitleIcon || !!description || !!Action ? (React.createElement(Header$1, { "$clickable": withExtend || false, onClick: () => withExtend && setExtend((prev) => !prev), onMouseEnter: () => withExtend && setHovered(true), onMouseLeave: () => withExtend && setHovered(false) },
17365
17372
  React.createElement(FlexRow, null,
17366
- !!title && (React.createElement(Title$7, null,
17367
- title,
17368
- titleBadge === OtherStatus.Loading ? React.createElement(FadeLoader, null) : titleBadge !== undefined && React.createElement(Badge, { label: titleBadge }))),
17373
+ React.createElement(FlexRow, { "$alignItems": 'center', "$gap": 8 },
17374
+ TitleIcon && (React.createElement(FlexRow, { "$alignItems": 'center' },
17375
+ React.createElement(TitleIcon, { size: 20 }))),
17376
+ !!title && React.createElement(Title$7, { transform: 'capitalize' }, title),
17377
+ titleBadge === OtherStatus.Loading ? React.createElement(FadeLoader, null) : titleBadge !== undefined && React.createElement(Badge, { label: titleBadge })),
17369
17378
  (!!Action || withExtend) && (React.createElement(ActionWrapper, null,
17370
17379
  typeof Action === 'function' ? React.createElement(Action, null) : Action,
17371
17380
  withExtend && React.createElement(ExtendArrow, { extend: extend })))),
@@ -17488,7 +17497,7 @@ const SectionItemsWrapper = styled.div `
17488
17497
  const Title$6 = styled(Text) `
17489
17498
  font-size: 18px;
17490
17499
  line-height: 26px;
17491
- max-width: 270px;
17500
+ max-width: ${({ $maxWidth }) => $maxWidth};
17492
17501
  overflow: hidden;
17493
17502
  white-space: nowrap;
17494
17503
  text-overflow: ellipsis;
@@ -17497,7 +17506,7 @@ const ActionButton$3 = styled(Button$4) `
17497
17506
  gap: 8px;
17498
17507
  `;
17499
17508
  const CloseButton = styled(Button$4) ``;
17500
- const DrawerHeader = ({ onClose, icons, iconSrcs, title, titleTooltip, replaceTitleWith: ReplaceTitleWith, actions, actionButtons = [], tabs }) => {
17509
+ const DrawerHeader = ({ onClose, width, icons, iconSrcs, title, titleTooltip, replaceTitleWith: ReplaceTitleWith, actions, actionButtons = [], tabs }) => {
17501
17510
  const renderReplaceTitleWith = () => {
17502
17511
  if (typeof ReplaceTitleWith === 'function') {
17503
17512
  return React.createElement(ReplaceTitleWith, null);
@@ -17511,7 +17520,7 @@ const DrawerHeader = ({ onClose, icons, iconSrcs, title, titleTooltip, replaceTi
17511
17520
  React.createElement(TopRow, null,
17512
17521
  React.createElement(SectionItemsWrapper, null,
17513
17522
  icons?.length || iconSrcs?.length ? React.createElement(IconGroup, { icons: icons, iconSrcs: iconSrcs, id: `drawer-header-${title}` }) : null,
17514
- renderReplaceTitleWith() || (React.createElement(Tooltip, { text: titleTooltip, withIcon: true }, title && React.createElement(Title$6, null, title)))),
17523
+ renderReplaceTitleWith() || (React.createElement(Tooltip, { text: titleTooltip || title, withIcon: !!titleTooltip }, title && React.createElement(Title$6, { "$maxWidth": `calc(${width} ${actions || actionButtons.length ? '/ 5' : '- 192px'})` }, title)))),
17515
17524
  React.createElement(SectionItemsWrapper, { "$gap": 2 },
17516
17525
  actions,
17517
17526
  actionButtons.map((btn, i) => (React.createElement(ActionButton$3, { key: `header-action-button-${i}`, ...btn }))),
@@ -17591,7 +17600,7 @@ const Drawer = ({ isOpen, onClose, closeOnEscape = true, position = 'right', wid
17591
17600
  React.createElement(Overlay, { hidden: !isOpen, onClick: onClose }),
17592
17601
  React.createElement(Transition, { "data-id": 'drawer', enter: isOpen, "$position": position, "$width": width },
17593
17602
  React.createElement(DrawerBody, null,
17594
- React.createElement(DrawerHeader, { onClose: onClose, ...headerProps }),
17603
+ React.createElement(DrawerHeader, { onClose: onClose, width: width, ...headerProps }),
17595
17604
  React.createElement(Content$4, null, children),
17596
17605
  React.createElement(DrawerFooter, { ...footerProps })))), document.body);
17597
17606
  };
package/lib/snippets.js CHANGED
@@ -1,5 +1,5 @@
1
- import { B as Button, _ as Text, L as NotificationNote } from './index-c529b896.js';
2
- export { al as AddButton, aq as AddNode, ar as BaseNode, an as CopyText, as as EdgedNode, aj as Flow, at as FrameNode, au as HeaderNode, az as LabeledEdge, av as MapItemNode, aw as NoDataNode, ao as PodContainer, ax as ScrollNode, ay as SkeletonNode, ap as SourceContainer, ag as nodeConfig } from './index-c529b896.js';
1
+ import { B as Button, _ as Text, L as NotificationNote } from './index-a8da9518.js';
2
+ export { al as AddButton, aq as AddNode, ar as BaseNode, an as CopyText, as as EdgedNode, aj as Flow, at as FrameNode, au as HeaderNode, az as LabeledEdge, av as MapItemNode, aw as NoDataNode, ao as PodContainer, ax as ScrollNode, ay as SkeletonNode, ap as SourceContainer, ag as nodeConfig } from './index-a8da9518.js';
3
3
  import React from 'react';
4
4
  import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-40dfa720.js';
5
5
  import { E as EditIcon } from './index-1bc2b507.js';
@@ -25,7 +25,7 @@ export interface TraceSpan {
25
25
  warnings: string;
26
26
  spans?: TraceSpan[];
27
27
  }
28
- interface TraceProcess {
28
+ export interface TraceProcess {
29
29
  serviceName: string;
30
30
  tags: TraceTag[];
31
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odigos/ui-kit",
3
- "version": "0.0.94",
3
+ "version": "0.0.97",
4
4
  "author": "Odigos",
5
5
  "repository": {
6
6
  "type": "git",