@odigos/ui-kit 0.0.230 → 0.0.232

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 (84) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/lib/chunks/index-Bbukn13F.js +77 -0
  3. package/lib/chunks/{index-DJZLguZq.js → index-Cw4LkdaE.js} +1 -1
  4. package/lib/chunks/index-D7sjsMOG.js +145 -0
  5. package/lib/chunks/ui-components-of0mjGMv.js +2671 -0
  6. package/lib/components/_v2/cards/section-card/index.d.ts +11 -0
  7. package/lib/components/_v2/drop-down/index.d.ts +1 -1
  8. package/lib/components/_v2/search/index.d.ts +2 -0
  9. package/lib/components/_v2/segment/index.d.ts +1 -0
  10. package/lib/components/_v2/table/index.d.ts +8 -1
  11. package/lib/components/_v2/typography/index.d.ts +20 -1
  12. package/lib/components/_v2/warning-modal/index.d.ts +5 -5
  13. package/lib/components/v2.js +1 -1
  14. package/lib/components.js +1 -1
  15. package/lib/constants/sampling/index.d.ts +7 -0
  16. package/lib/constants/strings/index.d.ts +6 -0
  17. package/lib/constants.js +1 -1
  18. package/lib/containers/_v2/_drawers/add-destination-drawer/form-column/index.d.ts +1 -1
  19. package/lib/containers/_v2/_drawers/add-destination-drawer/lists-column/index.d.ts +1 -1
  20. package/lib/containers/_v2/_drawers/add-source-drawer/namespaces-column/index.d.ts +1 -1
  21. package/lib/containers/_v2/_drawers/add-source-drawer/workloads-column/index.d.ts +1 -1
  22. package/lib/containers/_v2/_forms/data-stream-form/index.d.ts +6 -0
  23. package/lib/containers/_v2/_forms/data-stream-form/merge-warning.d.ts +11 -0
  24. package/lib/containers/_v2/_forms/index.d.ts +1 -0
  25. package/lib/containers/_v2/_modals/add-data-stream-modal/index.d.ts +8 -0
  26. package/lib/containers/_v2/_modals/edit-data-stream-modal/index.d.ts +8 -0
  27. package/lib/containers/_v2/_modals/index.d.ts +2 -0
  28. package/lib/containers/_v2/index.d.ts +2 -0
  29. package/lib/containers/_v2/overview/columns/column/empty-add.d.ts +7 -0
  30. package/lib/containers/_v2/overview/columns/column/head.d.ts +14 -0
  31. package/lib/containers/_v2/overview/columns/column/index.d.ts +12 -0
  32. package/lib/containers/_v2/overview/columns/column/list-item.d.ts +17 -0
  33. package/lib/containers/_v2/overview/columns/column/namespace-divider.d.ts +7 -0
  34. package/lib/containers/_v2/overview/columns/column/source-visual-state.d.ts +9 -0
  35. package/lib/containers/_v2/overview/columns/index.d.ts +11 -0
  36. package/lib/containers/_v2/overview/data-stream-select/index.d.ts +12 -0
  37. package/lib/containers/_v2/overview/drawers/index.d.ts +31 -0
  38. package/lib/containers/_v2/overview/filters/index.d.ts +2 -0
  39. package/lib/containers/_v2/overview/index.d.ts +14 -0
  40. package/lib/containers/_v2/overview/multi-source-control/index.d.ts +7 -0
  41. package/lib/containers/_v2/overview/search/builder.d.ts +25 -0
  42. package/lib/containers/_v2/overview/search/index.d.ts +7 -0
  43. package/lib/containers/source-drawer/index.d.ts +2 -2
  44. package/lib/containers/source-drawer/profiling/flame-graph-canvas.d.ts +12 -0
  45. package/lib/containers/source-drawer/profiling/flamebearer.d.ts +21 -2
  46. package/lib/containers/source-drawer/profiling/index.d.ts +1 -9
  47. package/lib/containers/source-drawer/profiling/symbol-table.d.ts +13 -0
  48. package/lib/containers/v2.js +348 -43
  49. package/lib/containers.js +122 -200
  50. package/lib/contexts/data-stream-form-context.d.ts +60 -0
  51. package/lib/contexts/index.d.ts +1 -0
  52. package/lib/contexts/sampling-rules-form-context.d.ts +3 -1
  53. package/lib/contexts.js +1 -1
  54. package/lib/functions.js +1 -1
  55. package/lib/hooks/useOnClickOutside.d.ts +1 -0
  56. package/lib/hooks.js +1 -1
  57. package/lib/icons/common/index.d.ts +1 -0
  58. package/lib/icons/common/star-icon/index.d.ts +2 -0
  59. package/lib/icons.js +1 -1
  60. package/lib/mock-data/index.d.ts +1 -0
  61. package/lib/mock-data/sources/index.d.ts +1 -0
  62. package/lib/snippets/_v2/cancel-modal/index.d.ts +4 -1
  63. package/lib/snippets/_v2/delete-modal/index.d.ts +3 -1
  64. package/lib/snippets/_v2/rich-title/index.d.ts +1 -0
  65. package/lib/snippets/_v2/sampling-rule-form-sections/index.d.ts +1 -0
  66. package/lib/snippets/_v2/sampling-rule-form-sections/rule-type.d.ts +8 -0
  67. package/lib/snippets/_v2/sampling-rule-form-sections/sampling-preview.d.ts +3 -1
  68. package/lib/snippets/v2.js +1 -1
  69. package/lib/snippets.js +1 -1
  70. package/lib/store.js +1 -1
  71. package/lib/theme/palettes/index.d.ts +10 -0
  72. package/lib/theme.js +1 -1
  73. package/lib/types/actions/index.d.ts +2 -0
  74. package/lib/types/config/index.d.ts +2 -0
  75. package/lib/types/destinations/index.d.ts +1 -0
  76. package/lib/types/instrumentation-rules/index.d.ts +2 -0
  77. package/lib/types/sources/index.d.ts +44 -0
  78. package/lib/types.js +1 -1
  79. package/lib/visuals/index.d.ts +1 -0
  80. package/lib/visuals/visual-purple-rings/index.d.ts +7 -0
  81. package/lib/visuals.js +1 -1
  82. package/package.json +11 -11
  83. package/lib/chunks/index-CGrd7Nq0.js +0 -149
  84. package/lib/chunks/ui-components-B4xHrszQ.js +0 -2659
@@ -10,8 +10,19 @@ export interface SectionCardProps {
10
10
  id?: string;
11
11
  size?: SectionCardSize;
12
12
  fullHeight?: boolean;
13
+ /**
14
+ * Static title rendered via `<RichTitle />`. Use `customTitle` instead when the
15
+ * title needs interactivity (e.g. a dropdown trigger). When both are passed,
16
+ * `customTitle` wins.
17
+ */
13
18
  richTitle?: RichTitleProps;
19
+ /** Custom node rendered in the title slot. Overrides `richTitle` when provided. */
20
+ customTitle?: ReactNode;
14
21
  search?: SearchProps;
22
+ /** Custom node rendered in the search slot. Overrides `search` when provided (e.g. a Search with custom popup). */
23
+ customSearch?: ReactNode;
24
+ /** Optional filters node rendered next to the search (e.g. a popover with filter controls). */
25
+ filters?: ReactNode;
15
26
  actions?: ActionsProps['actions'];
16
27
  children?: ReactNode;
17
28
  }
@@ -2,7 +2,7 @@ import { type FC } from 'react';
2
2
  import { type InputProps } from '../input';
3
3
  import { type DropDataProps, type DropDataOption } from '../drop-data';
4
4
  export interface DropDownProps extends Omit<InputProps, 'rightIcon' | 'value' | 'onChange' | 'onClick'>, Pick<DropDataProps, 'withMultiSelect' | 'withSearch'> {
5
- options: Pick<DropDataOption, 'id' | 'label'>[];
5
+ options: DropDataOption[];
6
6
  values: string[];
7
7
  setValues: (values: string[]) => void;
8
8
  }
@@ -4,6 +4,8 @@ export interface SearchProps {
4
4
  'data-id'?: string;
5
5
  value: string;
6
6
  onChange: (value: string) => void;
7
+ onFocus?: () => void;
8
+ onBlur?: () => void;
7
9
  placeholder?: string;
8
10
  width?: CSSProperties['width'];
9
11
  segment?: Pick<SegmentProps, 'data-id' | 'options' | 'selected' | 'setSelected'>;
@@ -14,6 +14,7 @@ interface Option<T> {
14
14
  icon?: SVG;
15
15
  tooltip?: string;
16
16
  selectedBgColor?: CSSProperties['backgroundColor'];
17
+ selectedBorderColor?: CSSProperties['borderColor'];
17
18
  disabled?: boolean;
18
19
  }
19
20
  export interface SegmentProps<T = any> {
@@ -1,7 +1,7 @@
1
1
  import { type FC, type CSSProperties } from 'react';
2
2
  import { HoverAction } from '../hover-actions';
3
3
  import { type NoDataProps } from '../no-data';
4
- import { type TableColumn, type TableRow, TableVariant } from './types';
4
+ import { type TableColumn, type TableRow, TableVariant, TableRowCell } from './types';
5
5
  export * from './types';
6
6
  export interface TableProps {
7
7
  variant: TableVariant;
@@ -16,5 +16,12 @@ export interface TableProps {
16
16
  rowActionsPushRightPosition?: CSSProperties['right'];
17
17
  rowActionsPushLeftPosition?: CSSProperties['left'];
18
18
  withCheckboxes?: boolean;
19
+ /** Controlled column filters (option ids per column key). Provide together with `onFiltersChange` to lift filter state out of the table. */
20
+ filters?: {
21
+ [key: string]: TableRowCell['rawValue'][];
22
+ };
23
+ onFiltersChange?: (filters: {
24
+ [key: string]: TableRowCell['rawValue'][];
25
+ }) => void;
19
26
  }
20
27
  export declare const Table: FC<TableProps>;
@@ -20,10 +20,29 @@ export declare enum TypographySize {
20
20
  XXL = "xxl",
21
21
  XXXL = "xxxl"
22
22
  }
23
+ /**
24
+ * Semantic color variants that resolve to design-system tokens at render time.
25
+ * Prefer these over passing raw theme colors so consumers don't need `useTheme()`
26
+ * just to color text.
27
+ */
28
+ export declare enum TypographyColor {
29
+ Primary = "primary",
30
+ Secondary = "secondary",
31
+ Tertiary = "tertiary",
32
+ Disable = "disable",
33
+ Error = "error",
34
+ Mandatory = "mandatory",
35
+ Link = "link",
36
+ Success = "success"
37
+ }
23
38
  export interface TypographyProps {
24
39
  children: React.ReactNode;
25
40
  variant?: TypographyVariants;
26
- color?: CSSProperties['color'];
41
+ /**
42
+ * Either a `TypographyColor` semantic variant (resolved from the theme) or any
43
+ * raw CSS color string for ad-hoc overrides.
44
+ */
45
+ color?: TypographyColor | CSSProperties['color'];
27
46
  size?: TypographySize;
28
47
  weight?: CSSProperties['fontWeight'];
29
48
  opacity?: CSSProperties['opacity'];
@@ -1,13 +1,13 @@
1
- import { type FC } from 'react';
1
+ import React, { type FC } from 'react';
2
2
  import { type ModalProps } from '../modal';
3
+ import { type ButtonProps } from '../button';
3
4
  export interface WarningModalProps extends Omit<ModalProps, 'onBack' | 'onClose' | 'children'> {
4
5
  visual?: FC;
5
6
  title: string;
6
7
  description: string;
7
8
  onClose: () => void;
8
- onDeny?: () => void;
9
- denyLabel?: string;
10
- onApprove?: () => void;
11
- approveLabel?: string;
9
+ denyButton?: ButtonProps;
10
+ approveButton?: ButtonProps;
11
+ children?: React.ReactNode;
12
12
  }
13
13
  export declare const WarningModal: FC<WarningModalProps>;
@@ -1 +1 @@
1
- export{e$ as Autocomplete,Y as Badge,o as Button,B as ButtonSize,gd as ButtonTab,ge as ButtonTabList,a as ButtonVariants,e as Checkbox,gf as CheckboxList,f1 as CheckboxSize,bz as CliCommand,gg as Condition,aL as Conditions,gh as DEFAULT_TIME_UNITS,D as DataCard,aI as Drawer,bj as DropData,bl as DropDataAlignX,bk as DropDataAlignY,am as DropDown,f as FieldMessage,d as FieldTitle,bC as GaugeChart,gi as GaugeChartVariant,gj as Header,dV as HoverActions,ag as IconButton,ah as IconButtonSize,I as Input,l as InputList,j as InputTable,bu as Island,aj as Loader,gk as Modal,gl as Navbar,N as NoData,z as Note,el as Radio,gm as RadioGroup,gn as RadioSize,dP as Search,aa as SectionCard,go as SectionCardSize,S as Segment,an as SegmentSize,bF as SegmentVariant,bB as StatusCard,bv as Stepper,bo as Table,bp as TableVariant,aV as Tag,w as TextArea,bD as TextCard,e9 as TimeInput,T as Toggle,k as ToggleLabelAlign,gp as ToggleList,ax as ToggleSize,bf as ToggleVariant,gq as TruncatableTypography,s as Typography,t as TypographySize,ay as TypographyVariants,c5 as WarningModal}from"../chunks/ui-components-B4xHrszQ.js";import"react/jsx-runtime";import"styled-components";import"../icons.js";import"zustand";import"react";import"javascript-time-ago";import"../chunks/vendor-C150cdxb.js";import"@xyflow/react";import"react-dom";import"prism-react-renderer";import"react-error-boundary";import"lottie-react";import"virtua";
1
+ export{f7 as Autocomplete,x as Badge,m as Button,B as ButtonSize,gp as ButtonTab,gq as ButtonTabList,a as ButtonVariants,ag as Checkbox,gr as CheckboxList,c8 as CheckboxSize,cu as CliCommand,gs as Condition,bm as Conditions,gt as DEFAULT_TIME_UNITS,D as DataCard,bk as Drawer,bQ as DropData,bS as DropDataAlignX,bR as DropDataAlignY,b0 as DropDown,ah as FieldMessage,af as FieldTitle,cx as GaugeChart,gu as GaugeChartVariant,gv as Header,_ as HoverActions,b1 as IconButton,b2 as IconButtonSize,ai as Input,an as InputList,al as InputTable,bZ as Island,L as Loader,gw as Modal,gx as Navbar,N as NoData,av as Note,eq as Radio,gy as RadioGroup,gz as RadioSize,w as Search,aW as SectionCard,gA as SectionCardSize,S as Segment,s as SegmentSize,r as SegmentVariant,cw as StatusCard,b_ as Stepper,t as Table,v as TableVariant,bu as Tag,as as TextArea,cy as TextCard,ee as TimeInput,j as Toggle,l as ToggleLabelAlign,gB as ToggleList,k as ToggleSize,gC as ToggleVariant,ca as TruncatableTypography,n as Typography,o as TypographyColor,p as TypographySize,bb as TypographyVariants,aL as WarningModal}from"../chunks/ui-components-of0mjGMv.js";import"react/jsx-runtime";import"styled-components";import"../icons.js";import"zustand";import"react";import"javascript-time-ago";import"../chunks/vendor-C150cdxb.js";import"@xyflow/react";import"react-dom";import"prism-react-renderer";import"react-error-boundary";import"lottie-react";import"virtua";
package/lib/components.js CHANGED
@@ -1 +1 @@
1
- export{cG as AutocompleteInput,c_ as Badge,d1 as Button,cv as CancelWarning,b as CenterThis,cd as Checkbox,C as Code,cy as ConditionDetails,cz as DataCard,cb as DataCardFieldTypes,dA as DataCardFields,g1 as DataFinger,d3 as DataTab,cu as DeleteWarning,dT as DescribeRow,m as Divider,co as DocsButton,ct as Drawer,g2 as DrawerFooter,g3 as DrawerHeader,dl as Dropdown,g4 as ErrorBoundary,dt as ExtendArrow,d0 as FadeLoader,ce as FieldError,cc as FieldLabel,F as FlexColumn,n as FlexRow,g5 as Header,ck as IconButton,e1 as IconGroup,cU as IconTitleBadge,cP as IconWrapped,dN as IconsNav,g6 as ImageControlled,cf as Input,cj as InputList,cg as InputTable,cX as InteractiveTable,ci as KeyValueInputsList,g7 as LoadingText,cD as Modal,cE as ModalBody,cp as MonitorsCheckboxes,cR as MonitorsIcons,cH as NavigationButtons,cY as NoDataFound,cF as NotificationNote,g8 as Overlay,aK as Padding,bn as PageContent,dh as Popup,e3 as PopupForm,e8 as ScrollX,d7 as ScrollY,cn as SectionTitle,cm as Segment,dj as SelectionButton,da as SkeletonLoader,cJ as Status,dz as Stepper,g9 as TabList,cS as TableContainer,cT as TableTitleWrap,cW as TableWrap,dC as Tag,cr as Text,cq as TextArea,ch as Toggle,e6 as ToggleCodeComponent,O as Tooltip,cZ as TraceLoader,bE as UpgradeRequiredWrapper,di as VerticalScroll,dE as WarningModal,ga as getLinksFromText,gb as getStrongsFromText,gc as renderText}from"./chunks/ui-components-B4xHrszQ.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"./chunks/vendor-C150cdxb.js";import"@xyflow/react";import"react-dom";import"prism-react-renderer";import"react-error-boundary";import"lottie-react";import"virtua";
1
+ export{dt as AutocompleteInput,dE as Badge,dG as Button,i as CancelWarning,b as CenterThis,d9 as Checkbox,C as Code,aa as ConditionDetails,Z as DataCard,G as DataCardFieldTypes,dV as DataCardFields,gd as DataFinger,dH as DataTab,h as DeleteWarning,X as DescribeRow,W as Divider,dj as DocsButton,f as Drawer,ge as DrawerFooter,gf as DrawerHeader,dM as Dropdown,gg as ErrorBoundary,dO as ExtendArrow,M as FadeLoader,da as FieldError,d8 as FieldLabel,y as FlexColumn,F as FlexRow,gh as Header,df as IconButton,e6 as IconGroup,dA as IconTitleBadge,dw as IconWrapped,e4 as IconsNav,gi as ImageControlled,I as Input,de as InputList,db as InputTable,dC as InteractiveTable,dd as KeyValueInputsList,gj as LoadingText,dr as Modal,ds as ModalBody,dk as MonitorsCheckboxes,dx as MonitorsIcons,du as NavigationButtons,Q as NoDataFound,a0 as NotificationNote,gk as Overlay,bl as Padding,bU as PageContent,dJ as Popup,e8 as PopupForm,ed as ScrollX,ce as ScrollY,di as SectionTitle,dh as Segment,dL as SelectionButton,cf as SkeletonLoader,J as Status,dU as Stepper,gl as TabList,dy as TableContainer,dz as TableTitleWrap,dB as TableWrap,dX as Tag,T as Text,dl as TextArea,dc as Toggle,eb as ToggleCodeComponent,q as Tooltip,dD as TraceLoader,cz as UpgradeRequiredWrapper,dK as VerticalScroll,ac as WarningModal,gm as getLinksFromText,gn as getStrongsFromText,go as renderText}from"./chunks/ui-components-of0mjGMv.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"./chunks/vendor-C150cdxb.js";import"@xyflow/react";import"react-dom";import"prism-react-renderer";import"react-error-boundary";import"lottie-react";import"virtua";
@@ -6,10 +6,17 @@ export declare const BTN_EDIT_AUTO_RULE = "Edit auto rule";
6
6
  export declare const BTN_CREATE_RULE = "Create rule";
7
7
  export declare const BTN_DELETE_RULE = "Delete rule";
8
8
  export declare const BTN_SAVE_RULE = "Save";
9
+ export declare const BTN_CREATE_FIRST_RULE = "Create your first rule";
10
+ export declare const TITLE_NO_RULES = "No Rules Exist";
11
+ export declare const TITLE_NO_RESULTS = "No Results";
12
+ export declare const getNoResultsSubTitle: (search: string) => string;
9
13
  export declare const LABEL_RULE_NAME = "Rule name";
10
14
  export declare const LABEL_RULE_TYPE = "Rule type";
15
+ export declare const DESC_RULE_TYPE = "Select the type of condition that makes a trace highly relevant.";
11
16
  export declare const LABEL_RULE_ENABLED = "Rule Enabled";
12
17
  export declare const LABEL_RULE_DISABLED = "Rule Disabled";
18
+ export declare const LABEL_ENABLED = "Enabled";
19
+ export declare const LABEL_DISABLED = "Disabled";
13
20
  export declare const LABEL_NOTE = "Note";
14
21
  export declare const LABEL_HTTP_ROUTE = "HTTP route";
15
22
  export declare const LABEL_METHOD = "Method";
@@ -34,7 +34,9 @@ export declare const DISPLAY_TITLES: {
34
34
  NAME_YOUR_STREAM_PLACEHOLDER: string;
35
35
  STREAM_DESCRIPTION: string;
36
36
  STREAM_CONFIRM: string;
37
+ RENAME_STREAM: (name: string) => string;
37
38
  DATA_STREAM_EXISTS_WARNING: (curr: string, next: string) => string;
39
+ DATA_STREAM_MERGE_WARNING: (editingName: string | undefined, existingName: string) => string;
38
40
  ACTION: string;
39
41
  ACTIONS: string;
40
42
  ADD_ACTION: string;
@@ -108,6 +110,10 @@ export declare const DISPLAY_TITLES: {
108
110
  TO_COLLECT_OTEL_DATA: string;
109
111
  TO_MONITOR_OTEL_DATA: string;
110
112
  TO_MODIFY_OTEL_DATA: string;
113
+ NO_DATA_INSTRUMENTATION_RULES: string;
114
+ NO_DATA_SOURCES: string;
115
+ NO_DATA_ACTIONS: string;
116
+ NO_DATA_DESTINATIONS: string;
111
117
  QUICK_BACK_TO_SUMMARY: string;
112
118
  GO_TO_SUMMARY: string;
113
119
  FUTURE_APPS_TITLE: string;
package/lib/constants.js CHANGED
@@ -1 +1 @@
1
- export{ad as ACTION_ATTRIBUTE_OPTIONS,cx as ACTION_OPTIONS,ae as ACTION_SAMPLER_OPTIONS,fL as ALL_SOURCES,aX as BTN_CANCEL,b3 as BTN_CREATE_RULE,a_ as BTN_DELETE_RULE,eO as BTN_EDIT_AUTO_RULE,aZ as BTN_EDIT_RULE,bb as BTN_SAVE,aY as BTN_SAVE_RULE,aJ as BUTTON_TEXTS,b0 as CATEGORY_DESCRIPTIONS,eM as CATEGORY_LABELS,b4 as CATEGORY_TITLES,fM as CREATE_COST_REDUCTION_AUTO_RULE_DRAWER_TITLE,fN as CREATE_HIGHLY_RELEVANT_AUTO_RULE_DRAWER_TITLE,fO as CREATE_NOISY_AUTO_RULE_DRAWER_TITLE,aG as DEFAULT_CLUSTER_ID,aF as DEFAULT_CLUSTER_NAME,ds as DEFAULT_DATA_STREAM_NAME,a3 as DESC_DROP_PERCENTAGE,ef as DESC_DURATION,ee as DESC_ERRORS,a7 as DESC_KEEP_PERCENTAGE,ei as DESC_OPERATION,eZ as DESC_SOURCE_SCOPE,ak as DESTINATION_CATEGORIES,Z as DISPLAY_LANGUAGES,af as DISPLAY_TITLES,v as DOCS_BASE_URL,ai as DestinationCategoryTypes,b7 as EDIT_COST_REDUCTION_AUTO_RULE_DRAWER_SUBTITLE,b8 as EDIT_COST_REDUCTION_AUTO_RULE_DRAWER_TITLE,b5 as EDIT_HIGHLY_RELEVANT_AUTO_RULE_DRAWER_SUBTITLE,b6 as EDIT_HIGHLY_RELEVANT_AUTO_RULE_DRAWER_TITLE,b9 as EDIT_NOISY_AUTO_RULE_DRAWER_SUBTITLE,ba as EDIT_NOISY_AUTO_RULE_DRAWER_TITLE,b1 as EDIT_TITLES,ev as EMPTY_VALUE,bI as FILTER_TYPE_ALL,aU as FORM_ALERTS,ar as INSTRUMENTATION_RULE_OPTIONS,eg as LABEL_CUSTOM_DURATION,ab as LABEL_CUSTOM_PERCENTAGE,bH as LABEL_DISABLED_RULE,eE as LABEL_DROP_ALL,a2 as LABEL_DROP_AT_MOST,eB as LABEL_DROP_PERCENTAGE,eo as LABEL_HTTP_ROUTE,eq as LABEL_HTTP_ROUTE_PREFIX,es as LABEL_KAFKA_TOPIC,eF as LABEL_KEEP_ALL,a6 as LABEL_KEEP_AT_LEAST,eC as LABEL_KEEP_AT_MOST,eA as LABEL_KEEP_PERCENTAGE,ed as LABEL_KEEP_TRACES_DURATION,eb as LABEL_KEEP_TRACES_ERRORS,er as LABEL_METHOD,eI as LABEL_NOTE,eW as LABEL_NO_PREVIEW,eu as LABEL_OPERATION_TYPE,be as LABEL_RULE_DISABLED,bd as LABEL_RULE_ENABLED,eG as LABEL_RULE_NAME,eH as LABEL_RULE_TYPE,eD as LABEL_SAMPLE,ek as LABEL_SERVER_ADDRESS,en as LABEL_TEMPLATED_PATH,ep as LABEL_TEMPLATED_PATH_PREFIX,fP as LANGUAGE_OPTIONS,dm as MONITORS_OPTIONS,eY as NOTE_ENTIRE_CLUSTER,e_ as NOTE_SOURCE_SCOPE_LOGIC,fQ as OPENTELEMETRY_EBPF_DISTRO_OPTION,ex as OPERATION_ALL,ew as OPERATION_HTTP_CLIENT,et as OPERATION_HTTP_SERVER,ey as OPERATION_KAFKA_CONSUMER,ez as OPERATION_KAFKA_PRODUCER,fR as OTEL_DISTRO_NAME_OPTIONS,eK as PLACEHOLDER_NOTE,em as PLACEHOLDER_ROUTE,eJ as PLACEHOLDER_RULE_NAME,f0 as PLACEHOLDER_SEARCH_SOURCE,ej as PLACEHOLDER_SERVER_ADDRESS,a9 as SAMPLING_AUTO_RULE_TITLE,b$ as SAMPLING_BTN_CREATE_RULE,bZ as SAMPLING_BTN_DOCS,b_ as SAMPLING_BTN_REFRESH,a5 as SAMPLING_COST_REDUCTION_AUTO_RULE_TITLE,c7 as SAMPLING_DELETE_MODAL_APPROVE,c6 as SAMPLING_DELETE_MODAL_CANCEL,c8 as SAMPLING_DELETE_MODAL_DESCRIPTION,c9 as SAMPLING_DELETE_MODAL_TITLE,bc as SAMPLING_DRAWER_WIDTH,bY as SAMPLING_DUPLICATE_RULE_WARNING,a1 as SAMPLING_HIGHLY_RELEVANT_AUTO_RULE_TITLE,c0 as SAMPLING_PAGE_DESCRIPTION,c1 as SAMPLING_PAGE_TITLE,a4 as SECTION_DROP_PERCENTAGE,ec as SECTION_DURATION,ea as SECTION_ERRORS,a8 as SECTION_KEEP_PERCENTAGE,eh as SECTION_OPERATION,eV as SECTION_SAMPLING_PREVIEW,eX as SECTION_SOURCE_SCOPE,dn as STORAGE_KEYS,fS as TOKEN_ABOUT_TO_EXPIRE,eL as TOOLTIP_NOTE,b2 as UNNAMED_RULE}from"./chunks/ui-components-B4xHrszQ.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"./chunks/vendor-C150cdxb.js";import"@xyflow/react";import"react-dom";import"prism-react-renderer";import"react-error-boundary";import"lottie-react";import"virtua";
1
+ export{aZ as ACTION_ATTRIBUTE_OPTIONS,dn as ACTION_OPTIONS,a_ as ACTION_SAMPLER_OPTIONS,fT as ALL_SOURCES,bw as BTN_CANCEL,cE as BTN_CREATE_FIRST_RULE,bE as BTN_CREATE_RULE,bz as BTN_DELETE_RULE,eW as BTN_EDIT_AUTO_RULE,by as BTN_EDIT_RULE,bM as BTN_SAVE,bx as BTN_SAVE_RULE,e as BUTTON_TEXTS,bB as CATEGORY_DESCRIPTIONS,eT as CATEGORY_LABELS,bF as CATEGORY_TITLES,fU as CREATE_COST_REDUCTION_AUTO_RULE_DRAWER_TITLE,fV as CREATE_HIGHLY_RELEVANT_AUTO_RULE_DRAWER_TITLE,fW as CREATE_NOISY_AUTO_RULE_DRAWER_TITLE,bi as DEFAULT_CLUSTER_ID,bh as DEFAULT_CLUSTER_NAME,cq as DEFAULT_DATA_STREAM_NAME,aQ as DESC_DROP_PERCENTAGE,ek as DESC_DURATION,ej as DESC_ERRORS,eF as DESC_KEEP_PERCENTAGE,en as DESC_OPERATION,eU as DESC_RULE_TYPE,f5 as DESC_SOURCE_SCOPE,b3 as DESTINATION_CATEGORIES,aI as DISPLAY_LANGUAGES,z as DISPLAY_TITLES,ar as DOCS_BASE_URL,a$ as DestinationCategoryTypes,bI as EDIT_COST_REDUCTION_AUTO_RULE_DRAWER_SUBTITLE,bJ as EDIT_COST_REDUCTION_AUTO_RULE_DRAWER_TITLE,bG as EDIT_HIGHLY_RELEVANT_AUTO_RULE_DRAWER_SUBTITLE,bH as EDIT_HIGHLY_RELEVANT_AUTO_RULE_DRAWER_TITLE,bK as EDIT_NOISY_AUTO_RULE_DRAWER_SUBTITLE,bL as EDIT_NOISY_AUTO_RULE_DRAWER_TITLE,bC as EDIT_TITLES,eA as EMPTY_VALUE,cC as FILTER_TYPE_ALL,bt as FORM_ALERTS,b6 as INSTRUMENTATION_RULE_OPTIONS,el as LABEL_CUSTOM_DURATION,aX as LABEL_CUSTOM_PERCENTAGE,aV as LABEL_DISABLED,cB as LABEL_DISABLED_RULE,eL as LABEL_DROP_ALL,aP as LABEL_DROP_AT_MOST,eH as LABEL_DROP_PERCENTAGE,aU as LABEL_ENABLED,et as LABEL_HTTP_ROUTE,ev as LABEL_HTTP_ROUTE_PREFIX,ex as LABEL_KAFKA_TOPIC,eM as LABEL_KEEP_ALL,eI as LABEL_KEEP_AT_LEAST,eJ as LABEL_KEEP_AT_MOST,eG as LABEL_KEEP_PERCENTAGE,ei as LABEL_KEEP_TRACES_DURATION,eg as LABEL_KEEP_TRACES_ERRORS,ew as LABEL_METHOD,eP as LABEL_NOTE,f2 as LABEL_NO_PREVIEW,ez as LABEL_OPERATION_TYPE,fX as LABEL_RULE_DISABLED,fY as LABEL_RULE_ENABLED,eN as LABEL_RULE_NAME,eO as LABEL_RULE_TYPE,eK as LABEL_SAMPLE,ep as LABEL_SERVER_ADDRESS,es as LABEL_TEMPLATED_PATH,eu as LABEL_TEMPLATED_PATH_PREFIX,fZ as LANGUAGE_OPTIONS,c2 as MONITORS_OPTIONS,f4 as NOTE_ENTIRE_CLUSTER,f6 as NOTE_SOURCE_SCOPE_LOGIC,f_ as OPENTELEMETRY_EBPF_DISTRO_OPTION,eC as OPERATION_ALL,eB as OPERATION_HTTP_CLIENT,ey as OPERATION_HTTP_SERVER,eD as OPERATION_KAFKA_CONSUMER,eE as OPERATION_KAFKA_PRODUCER,f$ as OTEL_DISTRO_NAME_OPTIONS,eR as PLACEHOLDER_NOTE,er as PLACEHOLDER_ROUTE,eQ as PLACEHOLDER_RULE_NAME,f8 as PLACEHOLDER_SEARCH_SOURCE,eo as PLACEHOLDER_SERVER_ADDRESS,aT as SAMPLING_AUTO_RULE_TITLE,cZ as SAMPLING_BTN_CREATE_RULE,cX as SAMPLING_BTN_DOCS,cY as SAMPLING_BTN_REFRESH,aS as SAMPLING_COST_REDUCTION_AUTO_RULE_TITLE,d3 as SAMPLING_DELETE_MODAL_APPROVE,d4 as SAMPLING_DELETE_MODAL_CANCEL,d5 as SAMPLING_DELETE_MODAL_DESCRIPTION,d6 as SAMPLING_DELETE_MODAL_TITLE,bN as SAMPLING_DRAWER_WIDTH,cW as SAMPLING_DUPLICATE_RULE_WARNING,aO as SAMPLING_HIGHLY_RELEVANT_AUTO_RULE_TITLE,c_ as SAMPLING_PAGE_DESCRIPTION,c$ as SAMPLING_PAGE_TITLE,aR as SECTION_DROP_PERCENTAGE,eh as SECTION_DURATION,ef as SECTION_ERRORS,g0 as SECTION_KEEP_PERCENTAGE,em as SECTION_OPERATION,f1 as SECTION_SAMPLING_PREVIEW,f3 as SECTION_SOURCE_SCOPE,c0 as STORAGE_KEYS,cD as TITLE_NO_RESULTS,cF as TITLE_NO_RULES,g1 as TOKEN_ABOUT_TO_EXPIRE,eS as TOOLTIP_NOTE,bD as UNNAMED_RULE,cG as getNoResultsSubTitle}from"./chunks/ui-components-of0mjGMv.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"./chunks/vendor-C150cdxb.js";import"@xyflow/react";import"react-dom";import"prism-react-renderer";import"react-error-boundary";import"lottie-react";import"virtua";
@@ -3,4 +3,4 @@ import { AddDestinationFormProps } from '@/containers/_v2/_forms/add-destination
3
3
  export interface FormColumnProps {
4
4
  testConnection: AddDestinationFormProps['testConnection'];
5
5
  }
6
- export declare const formColumn: ({ testConnection }: FormColumnProps) => WideDrawerProps["leftColumn"];
6
+ export declare const useFormColumn: ({ testConnection }: FormColumnProps) => WideDrawerProps["rightColumn"];
@@ -8,4 +8,4 @@ export interface ListsColumnProps {
8
8
  searchText: string;
9
9
  filters: Filters;
10
10
  }
11
- export declare const listsColumn: ({ isFetching, destinationsByCategory, searchText, filters }: ListsColumnProps) => WideDrawerProps["leftColumn"];
11
+ export declare const useListsColumn: ({ isFetching, destinationsByCategory, searchText, filters }: ListsColumnProps) => WideDrawerProps["leftColumn"];
@@ -12,4 +12,4 @@ export interface NamespacesColumnProps {
12
12
  searchBy: string;
13
13
  filters: Filters;
14
14
  }
15
- export declare const namespacesColumn: ({ isFetching, formData, handleSourceChange, handleSelectAll, selectedArea, setSelectedArea, searchText, searchBy, filters, }: NamespacesColumnProps) => WideDrawerProps["leftColumn"];
15
+ export declare const useNamespacesColumn: ({ isFetching, formData, handleSourceChange, handleSelectAll, selectedArea, setSelectedArea, searchText, searchBy, filters, }: NamespacesColumnProps) => WideDrawerProps["leftColumn"];
@@ -13,4 +13,4 @@ export interface WorkloadsColumnProps {
13
13
  searchBy: string;
14
14
  filters: Filters;
15
15
  }
16
- export declare const workloadsColumn: ({ formData, handleSourceChange, handleSelectAll, selectedArea, searchText, searchBy, filters }: WorkloadsColumnProps) => WideDrawerProps["rightColumn"];
16
+ export declare const useWorkloadsColumn: ({ formData, handleSourceChange, handleSelectAll, selectedArea, searchText, searchBy, filters }: WorkloadsColumnProps) => WideDrawerProps["rightColumn"];
@@ -0,0 +1,6 @@
1
+ import { type FC } from 'react';
2
+ export * from './merge-warning';
3
+ export interface DataStreamFormProps {
4
+ autoFocus?: boolean;
5
+ }
6
+ export declare const DataStreamForm: FC<DataStreamFormProps>;
@@ -0,0 +1,11 @@
1
+ import { type FC } from 'react';
2
+ /**
3
+ * Confirmation prompt shown when the user tries to save a Data Stream form whose
4
+ * name collides with another existing stream. Driven entirely by
5
+ * `DataStreamFormContext` (read `pendingMerge`, dispatch `confirmMerge` / `cancelMerge`)
6
+ * so consumers just need to drop this component anywhere within the provider scope.
7
+ *
8
+ * Pair with `requestSubmit(onConfirmed)` instead of calling the API directly so the
9
+ * gate fires before the actual mutation.
10
+ */
11
+ export declare const DataStreamMergeWarning: FC;
@@ -1,4 +1,5 @@
1
1
  export * from './add-action-form';
2
2
  export * from './add-destination-form';
3
3
  export * from './add-rule-form';
4
+ export * from './data-stream-form';
4
5
  export * from './sampling-rule-form';
@@ -0,0 +1,8 @@
1
+ import { type FC } from 'react';
2
+ import { type DataStream } from '@/types';
3
+ export interface AddDataStreamModalProps {
4
+ onClose: () => void;
5
+ /** When omitted, the modal just adds the new stream to the local store and selects it. */
6
+ createDataStream?: (dataStream: DataStream) => void | Promise<void>;
7
+ }
8
+ export declare const AddDataStreamModal: FC<AddDataStreamModalProps>;
@@ -0,0 +1,8 @@
1
+ import { type FC } from 'react';
2
+ import { type DataStream } from '@/types';
3
+ export interface EditDataStreamModalProps {
4
+ onClose: () => void;
5
+ dataStreamName: string;
6
+ updateDataStream: (dataStreamName: string, dataStream: DataStream) => void | Promise<void>;
7
+ }
8
+ export declare const EditDataStreamModal: FC<EditDataStreamModalProps>;
@@ -0,0 +1,2 @@
1
+ export * from './add-data-stream-modal';
2
+ export * from './edit-data-stream-modal';
@@ -1,7 +1,9 @@
1
1
  export * from './_drawers';
2
2
  export * from './_forms';
3
+ export * from './_modals';
3
4
  export * from './central-connections';
4
5
  export * from './onboarding';
6
+ export * from './overview';
5
7
  export * from './pipeline-collectors';
6
8
  export * from './sampling-rules';
7
9
  export * from './settings';
@@ -0,0 +1,7 @@
1
+ import { type FC } from 'react';
2
+ import { EntityTypes } from '@/types';
3
+ export interface EmptyAddProps {
4
+ entityType: EntityTypes;
5
+ description: string;
6
+ }
7
+ export declare const EmptyAdd: FC<EmptyAddProps>;
@@ -0,0 +1,14 @@
1
+ import { type FC } from 'react';
2
+ import { EntityTypes } from '@/types';
3
+ export interface HeadProps {
4
+ entityType: EntityTypes;
5
+ badge: string | number;
6
+ badgeTooltip?: string;
7
+ isLoading?: boolean;
8
+ refetch: () => void;
9
+ partiallySelected?: boolean;
10
+ allSelected?: boolean;
11
+ onSelectAll?: (bool: boolean) => void;
12
+ progressPercent?: number;
13
+ }
14
+ export declare const Head: FC<HeadProps>;
@@ -0,0 +1,12 @@
1
+ import { type FC } from 'react';
2
+ import { type Action, type Destination, EntityTypes, type InstrumentationRule, type Source, type Metrics } from '@/types';
3
+ export interface ColumnProps {
4
+ entityType: EntityTypes;
5
+ entities: Source[] | Destination[] | Action[] | InstrumentationRule[];
6
+ unfilteredCount: number;
7
+ metrics?: Metrics;
8
+ loading: boolean;
9
+ maxHeight: number;
10
+ refetch: () => void;
11
+ }
12
+ export declare const Column: FC<ColumnProps>;
@@ -0,0 +1,17 @@
1
+ import { type FC } from 'react';
2
+ import { type Action, type Destination, EntityTypes, type InstrumentationRule, type Source, StatusType, type SVG, type WorkloadId } from '@/types';
3
+ export interface ListItemProps {
4
+ entityId: string | WorkloadId;
5
+ entityType: EntityTypes;
6
+ title: string;
7
+ status?: StatusType;
8
+ faded?: boolean;
9
+ tooltip?: string;
10
+ throughput?: string;
11
+ icon?: SVG;
12
+ icons?: SVG[];
13
+ iconSrc?: string;
14
+ isActive?: boolean;
15
+ raw: Source | Destination | Action | InstrumentationRule;
16
+ }
17
+ export declare const ListItem: FC<ListItemProps>;
@@ -0,0 +1,7 @@
1
+ import { type FC } from 'react';
2
+ interface NamespaceProps {
3
+ namespace: string;
4
+ }
5
+ export declare const StickyNamespaceHeader: FC<NamespaceProps>;
6
+ export declare const NamespaceDividerRow: FC<NamespaceProps>;
7
+ export {};
@@ -0,0 +1,9 @@
1
+ import { type Source, StatusType } from '@/types';
2
+ interface SourceVisualState {
3
+ status?: StatusType;
4
+ faded: boolean;
5
+ tooltip?: string;
6
+ displaySource: Source;
7
+ }
8
+ export declare function getSourceVisualState(source: Source): SourceVisualState;
9
+ export {};
@@ -0,0 +1,11 @@
1
+ import { type CSSProperties, type FC } from 'react';
2
+ import { type Metrics } from '@/types';
3
+ export interface ColumnsProps {
4
+ height?: CSSProperties['height'];
5
+ metrics: Metrics;
6
+ refetchSources: () => void;
7
+ refetchDestinations: () => void;
8
+ refetchActions: () => void;
9
+ refetchInstrumentationRules: () => void;
10
+ }
11
+ export declare const Columns: FC<ColumnsProps>;
@@ -0,0 +1,12 @@
1
+ import { type FC } from 'react';
2
+ import { type DataStream } from '@/types';
3
+ export interface DataStreamSelectProps {
4
+ updateDataStream: (dataStreamName: string, dataStream: DataStream) => void | Promise<void>;
5
+ deleteDataStream: (dataStreamName: string) => void | Promise<void>;
6
+ /**
7
+ * Optional. When omitted, "create" just appends to the local data-streams store
8
+ * and selects the new stream. Provide this when there's a remote create mutation.
9
+ */
10
+ createDataStream?: (dataStream: DataStream) => void | Promise<void>;
11
+ }
12
+ export declare const DataStreamSelect: FC<DataStreamSelectProps>;
@@ -0,0 +1,31 @@
1
+ import { type FC } from 'react';
2
+ import { type CreateActionFunc, type CreateDestinationFunc, type CreateInstrumentationRuleFunc, type DeleteActionFunc, type DeleteDestinationFunc, type DeleteInstrumentationRuleFunc, type EffectiveConfig, type EnableProfilingFunc, type FetchNamespacesWithWorkloads, type FetchPeerSourcesFunc, type FetchProfilingSlotsFunc, type FetchSourceByIdFunc, type FetchSourceDescribeFunc, type FetchSourceLibrariesFunc, type FetchSourceProfilingFunc, type GetDestinationCategoriesFunc, type GetPotentialDestinationsFunc, type PersistSourcesFunc, type RecoverFromRollbackFunc, type RestartPodFunc, type RestartWorkloadsFunc, type TestConnectionFunc, type UpdateActionFunc, type UpdateDestinationFunc, type UpdateInstrumentationRuleFunc, type UpdateSourceFunc } from '@/types';
3
+ export interface DrawersProps {
4
+ effectiveConfig: EffectiveConfig;
5
+ fetchNamespacesWithWorkloads: FetchNamespacesWithWorkloads;
6
+ persistSources: PersistSourcesFunc;
7
+ restartWorkloads: RestartWorkloadsFunc;
8
+ restartPod: RestartPodFunc;
9
+ recoverFromRollback: RecoverFromRollbackFunc;
10
+ updateSource: UpdateSourceFunc;
11
+ fetchSourceById: FetchSourceByIdFunc;
12
+ fetchSourceDescribe: FetchSourceDescribeFunc;
13
+ fetchSourceLibraries: FetchSourceLibrariesFunc;
14
+ fetchPeerSources: FetchPeerSourcesFunc;
15
+ enableProfiling: EnableProfilingFunc;
16
+ fetchProfilingSlots: FetchProfilingSlotsFunc;
17
+ fetchSourceProfiling: FetchSourceProfilingFunc;
18
+ getDestinationCategories: GetDestinationCategoriesFunc;
19
+ getPotentialDestinations: GetPotentialDestinationsFunc;
20
+ testConnection: TestConnectionFunc;
21
+ createDestination: CreateDestinationFunc;
22
+ updateDestination: UpdateDestinationFunc;
23
+ deleteDestination: DeleteDestinationFunc;
24
+ createInstrumentationRule: CreateInstrumentationRuleFunc;
25
+ updateInstrumentationRule: UpdateInstrumentationRuleFunc;
26
+ deleteInstrumentationRule: DeleteInstrumentationRuleFunc;
27
+ createAction: CreateActionFunc;
28
+ updateAction: UpdateActionFunc;
29
+ deleteAction: DeleteActionFunc;
30
+ }
31
+ export declare const Drawers: FC<DrawersProps>;
@@ -0,0 +1,2 @@
1
+ import { type FC } from 'react';
2
+ export declare const Filters: FC;
@@ -0,0 +1,14 @@
1
+ import { type FC } from 'react';
2
+ import { type ColumnsProps } from './columns';
3
+ import { type DrawersProps } from './drawers';
4
+ import { CSSProperties } from 'styled-components';
5
+ import { type DataStreamSelectProps } from './data-stream-select';
6
+ export interface OverviewProps extends DrawersProps, DataStreamSelectProps {
7
+ columnsMaxHeight: CSSProperties['maxHeight'];
8
+ metrics: ColumnsProps['metrics'];
9
+ refetchSources: ColumnsProps['refetchSources'];
10
+ refetchDestinations: ColumnsProps['refetchDestinations'];
11
+ refetchActions: ColumnsProps['refetchActions'];
12
+ refetchInstrumentationRules: ColumnsProps['refetchInstrumentationRules'];
13
+ }
14
+ export declare const Overview: FC<OverviewProps>;
@@ -0,0 +1,7 @@
1
+ import { type FC } from 'react';
2
+ import { type PersistSourcesFunc, type RestartWorkloadsFunc } from '@/types';
3
+ export interface MultiSourceControlProps {
4
+ restartWorkloads: RestartWorkloadsFunc;
5
+ persistSources: PersistSourcesFunc;
6
+ }
7
+ export declare const MultiSourceControl: FC<MultiSourceControlProps>;
@@ -0,0 +1,25 @@
1
+ import { type Action, type Destination, EntityTypes, type InstrumentationRule, type Source } from '@/types';
2
+ export type Category = 'all' | EntityTypes;
3
+ interface Params {
4
+ searchText: string;
5
+ selectedCategory: Category;
6
+ sources: Source[];
7
+ destinations: Destination[];
8
+ actions: Action[];
9
+ instrumentationRules: InstrumentationRule[];
10
+ }
11
+ export declare const buildSearchResults: ({ instrumentationRules, sources, actions, destinations, searchText, selectedCategory }: Params) => {
12
+ categories: {
13
+ category: Category;
14
+ label: string;
15
+ count: number;
16
+ entities: InstrumentationRule[] | Source[] | Action[] | Destination[];
17
+ }[];
18
+ searchResults: {
19
+ entities: Action[] | Destination[] | Source[] | InstrumentationRule[];
20
+ category: Category;
21
+ label: string;
22
+ count: number;
23
+ }[];
24
+ };
25
+ export {};
@@ -0,0 +1,7 @@
1
+ import { type FC } from 'react';
2
+ export interface OverviewSearchProps {
3
+ width?: string;
4
+ /** When true, the results popup is suppressed (e.g. when the parent already renders results inline). */
5
+ preventPopup?: boolean;
6
+ }
7
+ export declare const OverviewSearch: FC<OverviewSearchProps>;
@@ -3,9 +3,9 @@ import { type ProfilingProps } from './profiling';
3
3
  import { type DescribeProps } from './describe';
4
4
  import { type LibrariesProps } from './libraries';
5
5
  import { type PeerSourcesProps } from './peers';
6
- import { type PersistSources, type SourceFormData, type WorkloadId, type Source } from '@/types';
6
+ import { type PersistSourcesFunc, type SourceFormData, type WorkloadId, type Source } from '@/types';
7
7
  interface SourceDrawerProps {
8
- persistSources: PersistSources;
8
+ persistSources: PersistSourcesFunc;
9
9
  updateSource: (sourceId: WorkloadId, payload: SourceFormData) => Promise<void>;
10
10
  restartWorkloads: (sourceIds: WorkloadId[]) => Promise<void>;
11
11
  restartPod: (namespace: string, name: string) => Promise<void>;
@@ -1,12 +1,24 @@
1
1
  import { type FC } from 'react';
2
2
  import type { Flamebearer } from './flamebearer';
3
+ export interface ProfilingSlots {
4
+ activeKeys: string[];
5
+ keysWithData: string[];
6
+ totalBytesUsed: number;
7
+ slotMaxBytes: number;
8
+ maxSlots: number;
9
+ maxTotalBytesBudget: number;
10
+ slotTtlSeconds: number;
11
+ }
3
12
  export interface FlameGraphCanvasProps {
4
13
  flamebearer: Flamebearer;
5
14
  maxRowPx?: number;
6
15
  /** Non-empty: only stack frames whose name contains the query are drawn (case-insensitive). */
7
16
  searchQuery?: string;
17
+ /** Symbol-name predicate driven by the table's column filters. Frames whose name returns false are dropped from the layout entirely (not just dimmed), so the remaining stacks rise to fill the space. */
18
+ shouldKeepName?: (name: string) => boolean;
8
19
  minHostHeight?: number;
9
20
  /** Notifies the parent whenever the user toggles fullscreen, so the parent can react (e.g. widen the surrounding drawer). */
10
21
  onFullscreenChange?: (isFullscreen: boolean) => void;
22
+ profilingSlots: ProfilingSlots | null;
11
23
  }
12
24
  export declare const FlameGraphCanvas: FC<FlameGraphCanvasProps>;
@@ -67,10 +67,29 @@ export type FlameLayoutBar = {
67
67
  name: string;
68
68
  matchesSearch: boolean;
69
69
  };
70
+ export interface ComputeFlameLayoutOptions {
71
+ /** When set, layout only that frame’s subtree and scale the X axis to its cumulative size (click-to-zoom, same idea as pprof’s pivot). */
72
+ zoomRoot?: FlameRect | null;
73
+ /** Drop frames whose `name` returns false. Used by the table-driven filter (e.g. "filter out void" in Java). */
74
+ shouldKeepName?: (name: string) => boolean;
75
+ /** Merge straight-line recursion (parent → single same-name child of equal width) into a single bar — pyroscope's "collapse recursive frames". */
76
+ collapseRecursive?: boolean;
77
+ }
78
+ /**
79
+ * Compute the on-canvas layout. See `ComputeFlameLayoutOptions` for the toggles.
80
+ *
81
+ * Note: when `shouldKeepName` removes a frame mid-stack, the children below it visually "rise" by one row because we shrink the
82
+ * level count, but their absolute X offsets are kept (they still align with the parent above the dropped frame). This matches
83
+ * how pprof/pyroscope behave when you suppress frames — siblings stay anchored, the stack just gets shorter.
84
+ */
85
+ export declare function computeFlameLayout(fb: Flamebearer, cw: number, ch: number, maxRowPx: number | undefined, searchQuery: string, options?: ComputeFlameLayoutOptions): FlameLayoutBar[] | null;
70
86
  /**
71
- * @param zoomRoot When set, layout only that frame’s subtree and scale the X axis to its cumulative size (click-to-zoom, same idea as pprof’s pivot).
87
+ * Pyroscope-style "collapse recursive frames": when a frame has exactly one child that shares its name and full width
88
+ * (i.e. straight-line A → A → A recursion), drop the deeper duplicates and lift the descendants up. Diamond shapes,
89
+ * mutual recursion patterns where the same frame reappears via a different path, or a parent with multiple children
90
+ * are left untouched on purpose — collapsing those would change the meaning of the graph.
72
91
  */
73
- export declare function computeFlameLayout(fb: Flamebearer, cw: number, ch: number, maxRowPx: number | undefined, searchQuery: string, zoomRoot?: FlameRect | null): FlameLayoutBar[] | null;
92
+ export declare function collapseRecursiveRects(fb: Pick<Flamebearer, 'names'>, rects: FlameRect[]): FlameRect[];
74
93
  /** Deepest stack frames first so hit tests prefer narrow children over parents. */
75
94
  export declare function sortFlameBarsDeepestFirst<T extends {
76
95
  level: number;
@@ -1,14 +1,6 @@
1
1
  import { type FC } from 'react';
2
+ import { type ProfilingSlots } from './flame-graph-canvas';
2
3
  import { type WorkloadId, type Source } from '@/types';
3
- interface ProfilingSlots {
4
- activeKeys: string[];
5
- keysWithData: string[];
6
- totalBytesUsed: number;
7
- slotMaxBytes: number;
8
- maxSlots: number;
9
- maxTotalBytesBudget: number;
10
- slotTtlSeconds: number;
11
- }
12
4
  interface SourceProfilingResult {
13
5
  profileJson: string;
14
6
  }
@@ -1,8 +1,21 @@
1
1
  import { type FC } from 'react';
2
2
  import { ProgrammingLanguages } from '@/types';
3
3
  import { type SymbolTableRow } from './flamebearer';
4
+ import { type TableRowCell } from '@/components/_v2';
5
+ /** Shape of `Table`'s controlled filters map (columnKey → selected option ids). Re-exported so callers can hold the lifted state. */
6
+ export type SymbolTableFilters = {
7
+ [columnKey: string]: TableRowCell['rawValue'][];
8
+ };
4
9
  export interface SymbolTableProps {
5
10
  rows: SymbolTableRow[];
6
11
  languages?: ProgrammingLanguages[] | null;
12
+ /** Controlled column filters. Provide together with `onFiltersChange` to share the table's filters with the flame graph (PLAT-1001 #1). */
13
+ filters?: SymbolTableFilters;
14
+ onFiltersChange?: (filters: SymbolTableFilters) => void;
7
15
  }
16
+ /**
17
+ * Build a flame-graph-friendly name predicate from the table's lifted column filters. Returns `undefined` when no
18
+ * filtering is needed so callers can pass it straight through to `FlameGraphCanvas` without an unnecessary identity churn.
19
+ */
20
+ export declare function buildJavaSymbolNamePredicate(filters: SymbolTableFilters | undefined, languages: ProgrammingLanguages[] | null | undefined): ((name: string) => boolean) | undefined;
8
21
  export declare const SymbolTable: FC<SymbolTableProps>;