@odigos/ui-kit 0.0.213 → 0.0.215
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 +14 -0
- package/lib/chunks/index-DHTlCrf6.js +3 -0
- package/lib/chunks/ui-components-CICeYnUU.js +2430 -0
- package/lib/components/_v2/autocomplete/index.d.ts +13 -0
- package/lib/components/_v2/drop-data/index.d.ts +4 -0
- package/lib/components/_v2/index.d.ts +1 -0
- package/lib/components/_v2/segment/index.d.ts +8 -1
- package/lib/components/v2.js +1 -1
- package/lib/components.js +1 -1
- package/lib/constants.js +1 -1
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/constants.d.ts +26 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/converters.d.ts +5 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/form-helpers.d.ts +5 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/index.d.ts +6 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/sections/duration-errors.d.ts +9 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/sections/operation.d.ts +9 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/sections/percentage.d.ts +9 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/sections/rule-info.d.ts +9 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/sections/sampling-preview.d.ts +9 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/sections/source-scope.d.ts +10 -0
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/types.d.ts +54 -0
- package/lib/containers/_v2/_drawers/edit-auto-rule-drawer/constants.d.ts +10 -0
- package/lib/containers/_v2/_drawers/edit-auto-rule-drawer/index.d.ts +4 -0
- package/lib/containers/_v2/_drawers/edit-auto-rule-drawer/types.d.ts +8 -0
- package/lib/containers/_v2/_drawers/edit-cost-reduction-auto-rule-drawer/constants.d.ts +10 -0
- package/lib/containers/_v2/_drawers/edit-cost-reduction-auto-rule-drawer/index.d.ts +4 -0
- package/lib/containers/_v2/_drawers/edit-cost-reduction-auto-rule-drawer/types.d.ts +8 -0
- package/lib/containers/_v2/_drawers/edit-highly-relevant-auto-rule-drawer/constants.d.ts +6 -0
- package/lib/containers/_v2/_drawers/edit-highly-relevant-auto-rule-drawer/index.d.ts +4 -0
- package/lib/containers/_v2/_drawers/edit-highly-relevant-auto-rule-drawer/types.d.ts +6 -0
- package/lib/containers/_v2/_drawers/index.d.ts +5 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/constants.d.ts +19 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/footer.d.ts +21 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/index.d.ts +23 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/reverse-converters.d.ts +3 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/sections/duration-errors.d.ts +6 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/sections/operation-details.d.ts +6 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/sections/percentage.d.ts +6 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/sections/rule-info.d.ts +6 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/sections/sampling-preview.d.ts +6 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/sections/source-scopes.d.ts +6 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/sections/styled.d.ts +4 -0
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/types.d.ts +1 -0
- package/lib/containers/_v2/auto-rule-card/constants.d.ts +1 -0
- package/lib/containers/_v2/auto-rule-card/helpers.d.ts +19 -0
- package/lib/containers/_v2/auto-rule-card/index.d.ts +5 -0
- package/lib/containers/_v2/auto-rule-card/types.d.ts +6 -0
- package/lib/containers/_v2/index.d.ts +3 -0
- package/lib/containers/_v2/sampling-rules-list/constants.d.ts +23 -0
- package/lib/containers/_v2/sampling-rules-list/helpers.d.ts +30 -0
- package/lib/containers/_v2/sampling-rules-list/index.d.ts +6 -0
- package/lib/containers/_v2/sampling-rules-list/rule-row.d.ts +12 -0
- package/lib/containers/_v2/sampling-rules-list/summary-span.d.ts +10 -0
- package/lib/containers/_v2/sampling-rules-list/toolbar.d.ts +13 -0
- package/lib/containers/_v2/sampling-rules-list/types.d.ts +47 -0
- package/lib/containers/service-map/helpers/build-map-nodes.d.ts +2 -0
- package/lib/containers/service-map/index.d.ts +1 -0
- package/lib/containers/v2.js +446 -35
- package/lib/containers.js +116 -116
- package/lib/contexts.js +1 -1
- package/lib/functions/get-virtual-service-icon/index.d.ts +2 -0
- package/lib/functions/index.d.ts +1 -0
- package/lib/functions.js +1 -1
- package/lib/hooks.js +1 -1
- package/lib/icons/overview/index.d.ts +1 -0
- package/lib/icons/overview/sampling-icon/index.d.ts +2 -0
- package/lib/icons/programming-languages/aws-logo/index.d.ts +2 -0
- package/lib/icons/programming-languages/index.d.ts +1 -0
- package/lib/icons.js +1 -1
- package/lib/snippets/react-flow/flow.d.ts +1 -0
- package/lib/snippets.js +1 -1
- package/lib/store.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/types/common/index.d.ts +2 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/sampling.d.ts +103 -0
- package/lib/types/service-map/index.d.ts +5 -0
- package/lib/types.js +1 -1
- package/lib/visuals.js +1 -1
- package/package.json +1 -1
- package/lib/chunks/index-Bh2gKc3b.js +0 -3
- package/lib/chunks/ui-components-BliHHDta.js +0 -2388
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
export interface AutocompleteOption {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
6
|
+
export interface AutocompleteProps {
|
|
7
|
+
options: AutocompleteOption[];
|
|
8
|
+
value: string;
|
|
9
|
+
onSelect: (option: AutocompleteOption | null) => void;
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
isLoading?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const Autocomplete: FC<AutocompleteProps>;
|
|
@@ -18,6 +18,8 @@ export interface DropDataOption {
|
|
|
18
18
|
}
|
|
19
19
|
export interface DropDataProps {
|
|
20
20
|
defaultOpen?: boolean;
|
|
21
|
+
open?: boolean;
|
|
22
|
+
onOpenChange?: (open: boolean) => void;
|
|
21
23
|
alignX?: DropDataAlignX;
|
|
22
24
|
alignY?: DropDataAlignY;
|
|
23
25
|
items: (DropDataOption | null)[];
|
|
@@ -29,6 +31,8 @@ export interface DropDataProps {
|
|
|
29
31
|
maxHeight?: CSSProperties['maxHeight'];
|
|
30
32
|
buttonProps?: Omit<ButtonProps, 'fullWidth'>;
|
|
31
33
|
iconButtonProps?: IconButtonProps;
|
|
34
|
+
isLoading?: boolean;
|
|
35
|
+
emptyMessage?: string;
|
|
32
36
|
children?: ReactNode | ((props: {
|
|
33
37
|
ChevronIcon: SVG;
|
|
34
38
|
handleClick: (e: MouseEvent<HTMLElement>) => void;
|
|
@@ -4,18 +4,25 @@ export declare enum SegmentSize {
|
|
|
4
4
|
S = "s",
|
|
5
5
|
L = "l"
|
|
6
6
|
}
|
|
7
|
+
export declare enum SegmentVariant {
|
|
8
|
+
Filled = "filled",
|
|
9
|
+
Underline = "underline"
|
|
10
|
+
}
|
|
7
11
|
interface Option<T> {
|
|
8
12
|
value: T;
|
|
9
13
|
label?: string;
|
|
10
14
|
icon?: SVG;
|
|
15
|
+
tooltip?: string;
|
|
11
16
|
selectedBgColor?: CSSProperties['backgroundColor'];
|
|
17
|
+
disabled?: boolean;
|
|
12
18
|
}
|
|
13
19
|
export interface SegmentProps<T = any> {
|
|
14
20
|
size?: SegmentSize;
|
|
21
|
+
variant?: SegmentVariant;
|
|
15
22
|
options: Option<T>[];
|
|
16
23
|
selected: T;
|
|
17
24
|
setSelected: (value: T) => void;
|
|
18
25
|
disabled?: boolean;
|
|
19
26
|
}
|
|
20
|
-
export declare const Segment: <T>({ size, options, selected, setSelected, disabled }: SegmentProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export declare const Segment: <T>({ size, variant, options, selected, setSelected, disabled }: SegmentProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
21
28
|
export {};
|
package/lib/components/v2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{a4 as Badge,B as Button,t as ButtonSize,
|
|
1
|
+
export{at as Autocomplete,a4 as Badge,B as Button,t as ButtonSize,e2 as ButtonTab,e3 as ButtonTabList,j as ButtonVariants,C as Checkbox,e4 as CheckboxList,au as CheckboxSize,aS as CliCommand,aG as DataCard,D as Drawer,ax as DropData,aF as DropDataAlignX,aE as DropDataAlignY,H as DropDown,c as FieldMessage,a as FieldTitle,e5 as Header,aZ as HoverActions,ag as IconButton,ah as IconButtonSize,I as Input,r as InputList,o as InputTable,aO as Island,L as Loader,e6 as Modal,e7 as Navbar,N as NoData,h as Note,aw as Radio,e8 as RadioGroup,e9 as RadioSize,g as Search,aC as SectionCard,ea as SectionCardSize,z as Segment,al as SegmentSize,eb as SegmentVariant,aV as StatusCard,aP as Stepper,aM as Table,aN as TableVariant,ec as Tag,E as TextArea,aW as TextCard,p as Toggle,q as ToggleLabelAlign,ed as ToggleList,ao as ToggleSize,ee as ToggleVariant,k as Typography,f as TypographySize,ap as TypographyVariants,W as WarningModal}from"../chunks/ui-components-CICeYnUU.js";import"../icons.js";import"react/jsx-runtime";import"styled-components";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{
|
|
1
|
+
export{bv as AutocompleteInput,bP as Badge,bR as Button,bi as CancelWarning,e as CenterThis,b0 as Checkbox,cX as Code,bm as ConditionDetails,bn as DataCard,a_ as DataCardFieldTypes,co as DataCardFields,dP as DataFinger,bT as DataTab,bh as DeleteWarning,cG as DescribeRow,s as Divider,bb as DocsButton,bg as Drawer,dQ as DrawerFooter,dR as DrawerHeader,c9 as Dropdown,dS as ErrorBoundary,cf as ExtendArrow,aR as FadeLoader,b1 as FieldError,a$ as FieldLabel,F as FlexColumn,b as FlexRow,dT as Header,b7 as IconButton,cP as IconGroup,bJ as IconTitleBadge,bE as IconWrapped,cC as IconsNav,dU as ImageControlled,b2 as Input,b6 as InputList,b3 as InputTable,bM as InteractiveTable,b5 as KeyValueInputsList,dV as LoadingText,bs as Modal,bt as ModalBody,bc as MonitorsCheckboxes,bG as MonitorsIcons,bw as NavigationButtons,bN as NoDataFound,bu as NotificationNote,dW as Overlay,aL as PageContent,c4 as Popup,cR as PopupForm,cW as ScrollX,S as ScrollY,ba as SectionTitle,b9 as Segment,c6 as SelectionButton,bY as SkeletonLoader,by as Status,cn as Stepper,dX as TabList,bH as TableContainer,bI as TableTitleWrap,bL as TableWrap,cq as Tag,be as Text,bd as TextArea,b4 as Toggle,cU as ToggleCodeComponent,Z as Tooltip,bO as TraceLoader,aY as UpgradeRequiredWrapper,c5 as VerticalScroll,ct as WarningModal,dY as getLinksFromText,dZ as getStrongsFromText,d_ as renderText}from"./chunks/ui-components-CICeYnUU.js";import"./icons.js";import"react/jsx-runtime";import"styled-components";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/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ad as ACTION_ATTRIBUTE_OPTIONS,
|
|
1
|
+
export{ad as ACTION_ATTRIBUTE_OPTIONS,bl as ACTION_OPTIONS,ae as ACTION_SAMPLER_OPTIONS,aK as BUTTON_TEXTS,a8 as DEFAULT_CLUSTER_ID,a7 as DEFAULT_CLUSTER_NAME,ce as DEFAULT_DATA_STREAM_NAME,aj as DESTINATION_CATEGORIES,a5 as DISPLAY_LANGUAGES,af as DISPLAY_TITLES,y as DOCS_BASE_URL,ai as DestinationCategoryTypes,X as FORM_ALERTS,am as INSTRUMENTATION_RULE_OPTIONS,dC as LANGUAGE_OPTIONS,M as MONITORS_OPTIONS,dD as OTEL_DISTRO_NAME_OPTIONS,ca as STORAGE_KEYS,dE as TOKEN_ABOUT_TO_EXPIRE}from"./chunks/ui-components-CICeYnUU.js";import"./icons.js";import"react/jsx-runtime";import"styled-components";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";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SamplingRuleCategory } from '../../sampling-rules-list/types';
|
|
2
|
+
export { BTN_CANCEL, SECTION_SAMPLING_PREVIEW, SECTION_SOURCE_SCOPE, SECTION_OPERATION, SECTION_DURATION, SECTION_ERRORS, LABEL_RULE_NAME, LABEL_RULE_TYPE, LABEL_NOTE, LABEL_HTTP_ROUTE, LABEL_METHOD, LABEL_KEEP_PERCENTAGE, LABEL_DROP_PERCENTAGE, LABEL_KEEP_TRACES_DURATION, LABEL_KEEP_TRACES_ERRORS, LABEL_KEEP_AT_LEAST, LABEL_KEEP_AT_MOST, CATEGORY_DESCRIPTIONS, } from '../../sampling-rules-list/constants';
|
|
3
|
+
export declare const SAMPLING_DRAWER_WIDTH = "60vw";
|
|
4
|
+
export declare const LABEL_HTTP_ROUTE_PREFIX = "HTTP route prefix";
|
|
5
|
+
export declare const LABEL_TEMPLATED_PATH = "Templated path";
|
|
6
|
+
export declare const LABEL_TEMPLATED_PATH_PREFIX = "Templated path prefix";
|
|
7
|
+
export declare const LABEL_KAFKA_TOPIC = "Kafka topic";
|
|
8
|
+
export declare const LABEL_CUSTOM_DURATION = "Custom duration (ms)";
|
|
9
|
+
export declare const LABEL_CUSTOM_PERCENTAGE = "Custom percentage";
|
|
10
|
+
export declare const LABEL_NO_PREVIEW = "No preview available";
|
|
11
|
+
export declare const LABEL_SERVER_ADDRESS = "Server address";
|
|
12
|
+
export declare const PLACEHOLDER_SERVER_ADDRESS = "e.g. collector.my.vendor.com";
|
|
13
|
+
export declare const PLACEHOLDER_RULE_NAME = "Type rule name";
|
|
14
|
+
export declare const PLACEHOLDER_NOTE = "Add note here...";
|
|
15
|
+
export declare const TOOLTIP_NOTE = "Optional notes (not used by the system). Add any context or details for this sampling rule.";
|
|
16
|
+
export declare const PLACEHOLDER_ROUTE = "Type here";
|
|
17
|
+
export declare const PLACEHOLDER_SEARCH_SOURCE = "Search source name";
|
|
18
|
+
export declare const NOTE_ENTIRE_CLUSTER = "Rule will apply to all sources in the cluster";
|
|
19
|
+
export declare const BTN_CREATE_RULE = "Create rule";
|
|
20
|
+
export declare const DESC_SOURCE_SCOPE = "Define which operations this rule applies to. You can target specific endpoints or requests, or apply the rule to all operations in the selected services.";
|
|
21
|
+
export declare const DESC_OPERATION = "Define which operations this rule applies to. You can target specific endpoints or requests, or apply the rule to all operations in the selected services.";
|
|
22
|
+
export declare const DESC_DURATION = "Define a duration threshold for this rule. Traces with a duration longer than the specified value will be considered important and retained.";
|
|
23
|
+
export declare const DESC_ERRORS = "Retain traces with errors from the selected services and operations.";
|
|
24
|
+
export declare const DESC_KEEP_PERCENTAGE = "Specify the exact percentage of matching traces to keep";
|
|
25
|
+
export declare const DESC_DROP_PERCENTAGE = "Specify the exact percentage of matching traces to drop";
|
|
26
|
+
export declare const CATEGORY_TITLES: Record<SamplingRuleCategory, string>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NoisyOperationRuleInput, HighlyRelevantOperationRuleInput, CostReductionRuleInput } from '@/types';
|
|
2
|
+
import type { SamplingRuleFormState } from './types';
|
|
3
|
+
export declare function formStateToNoisyInput(state: SamplingRuleFormState): NoisyOperationRuleInput;
|
|
4
|
+
export declare function formStateToHighlyRelevantInput(state: SamplingRuleFormState): HighlyRelevantOperationRuleInput;
|
|
5
|
+
export declare function formStateToCostReductionInput(state: SamplingRuleFormState): CostReductionRuleInput;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NoisyOperationRule, HighlyRelevantOperationRule, CostReductionRule } from '@/types';
|
|
2
|
+
import type { SamplingRuleFormState } from './types';
|
|
3
|
+
export declare function formStateToPartialNoisy(state: SamplingRuleFormState): NoisyOperationRule;
|
|
4
|
+
export declare function formStateToPartialHighlyRelevant(state: SamplingRuleFormState): HighlyRelevantOperationRule;
|
|
5
|
+
export declare function formStateToPartialCostReduction(state: SamplingRuleFormState): CostReductionRule;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { CreateSamplingRuleDrawerProps } from './types';
|
|
3
|
+
export type { SamplingRuleFormState, CreateSamplingRuleDrawerProps, DuplicateValidationResult, ScopeType, OperationType, PercentageMode, RouteType, DurationPreset, PercentagePreset } from './types';
|
|
4
|
+
export { getDefaultFormState } from './types';
|
|
5
|
+
export { formStateToNoisyInput, formStateToHighlyRelevantInput, formStateToCostReductionInput } from './converters';
|
|
6
|
+
export declare const CreateSamplingRuleDrawer: FC<CreateSamplingRuleDrawerProps>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { HighlyRelevantBadgeType } from '../../../sampling-rules-list/types';
|
|
3
|
+
import type { SamplingRuleFormState } from '../types';
|
|
4
|
+
export interface FormDurationErrorsProps {
|
|
5
|
+
ruleType: HighlyRelevantBadgeType;
|
|
6
|
+
formState: SamplingRuleFormState;
|
|
7
|
+
onChange: (updates: Partial<SamplingRuleFormState>) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const FormDurationErrors: FC<FormDurationErrorsProps>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { SamplingRuleFormState } from '../types';
|
|
3
|
+
import type { SamplingRuleCategory } from '../../../sampling-rules-list/types';
|
|
4
|
+
export interface FormOperationProps {
|
|
5
|
+
category: SamplingRuleCategory;
|
|
6
|
+
formState: SamplingRuleFormState;
|
|
7
|
+
onChange: (updates: Partial<SamplingRuleFormState>) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const FormOperation: FC<FormOperationProps>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { SamplingRuleFormState } from '../types';
|
|
3
|
+
import type { SamplingRuleCategory } from '../../../sampling-rules-list/types';
|
|
4
|
+
export interface FormPercentageProps {
|
|
5
|
+
category: SamplingRuleCategory;
|
|
6
|
+
formState: SamplingRuleFormState;
|
|
7
|
+
onChange: (updates: Partial<SamplingRuleFormState>) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const FormPercentage: FC<FormPercentageProps>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { SamplingRuleFormState } from '../types';
|
|
3
|
+
import type { SamplingRuleCategory } from '../../../sampling-rules-list/types';
|
|
4
|
+
export interface FormRuleInfoProps {
|
|
5
|
+
category: SamplingRuleCategory;
|
|
6
|
+
formState: SamplingRuleFormState;
|
|
7
|
+
onChange: (updates: Partial<SamplingRuleFormState>) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const FormRuleInfo: FC<FormRuleInfoProps>;
|
package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/sections/sampling-preview.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { SamplingRuleCategory } from '../../../sampling-rules-list/types';
|
|
3
|
+
import type { SamplingRuleFormState } from '../types';
|
|
4
|
+
export interface FormSamplingPreviewProps {
|
|
5
|
+
category: SamplingRuleCategory;
|
|
6
|
+
formState: SamplingRuleFormState;
|
|
7
|
+
onChange?: (updates: Partial<SamplingRuleFormState>) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const FormSamplingPreview: FC<FormSamplingPreviewProps>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type AutocompleteOption } from '@/components/_v2';
|
|
3
|
+
import type { SamplingRuleFormState } from '../types';
|
|
4
|
+
export interface FormSourceScopeProps {
|
|
5
|
+
formState: SamplingRuleFormState;
|
|
6
|
+
onChange: (updates: Partial<SamplingRuleFormState>) => void;
|
|
7
|
+
sourceOptions?: AutocompleteOption[];
|
|
8
|
+
namespaceOptions?: AutocompleteOption[];
|
|
9
|
+
}
|
|
10
|
+
export declare const FormSourceScope: FC<FormSourceScopeProps>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { SamplingRuleCategory, HighlyRelevantBadgeType } from '../../sampling-rules-list/types';
|
|
2
|
+
export type ScopeType = 'all' | 'source' | 'namespace' | 'language';
|
|
3
|
+
export type OperationType = 'all' | 'httpServer' | 'httpClient' | 'kafkaConsumer' | 'kafkaProducer';
|
|
4
|
+
export type PercentageMode = 'all' | 'sample';
|
|
5
|
+
export type RouteType = 'route' | 'routePrefix';
|
|
6
|
+
export type DurationPreset = '5000' | '1000' | '500' | '100' | '50' | 'custom';
|
|
7
|
+
export type PercentagePreset = '50' | '25' | '10' | '1' | '0.5' | '0.1' | 'custom';
|
|
8
|
+
export interface SourceScopeEntry {
|
|
9
|
+
scopeType: ScopeType;
|
|
10
|
+
workloadName: string;
|
|
11
|
+
workloadKind: string;
|
|
12
|
+
workloadNamespace: string;
|
|
13
|
+
workloadLanguage: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SamplingRuleFormState {
|
|
16
|
+
name: string;
|
|
17
|
+
notes: string;
|
|
18
|
+
disabled: boolean;
|
|
19
|
+
ruleType: HighlyRelevantBadgeType;
|
|
20
|
+
sourceScopes: SourceScopeEntry[];
|
|
21
|
+
operationType: OperationType;
|
|
22
|
+
routeType: RouteType;
|
|
23
|
+
route: string;
|
|
24
|
+
serverAddress: string;
|
|
25
|
+
method: string;
|
|
26
|
+
kafkaTopic: string;
|
|
27
|
+
durationPreset: DurationPreset;
|
|
28
|
+
customDurationMs: string;
|
|
29
|
+
keepErrors: boolean;
|
|
30
|
+
percentageMode: PercentageMode;
|
|
31
|
+
percentagePreset: PercentagePreset;
|
|
32
|
+
customPercentage: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function getDefaultFormState(category?: SamplingRuleCategory): SamplingRuleFormState;
|
|
35
|
+
export interface DuplicateValidationResult {
|
|
36
|
+
message: string;
|
|
37
|
+
ruleId: string;
|
|
38
|
+
}
|
|
39
|
+
export interface CreateSamplingRuleDrawerProps {
|
|
40
|
+
isOpen: boolean;
|
|
41
|
+
category: SamplingRuleCategory;
|
|
42
|
+
onClose: () => void;
|
|
43
|
+
onSubmit: (state: SamplingRuleFormState) => void;
|
|
44
|
+
sourceOptions?: {
|
|
45
|
+
id: string;
|
|
46
|
+
label: string;
|
|
47
|
+
}[];
|
|
48
|
+
namespaceOptions?: {
|
|
49
|
+
id: string;
|
|
50
|
+
label: string;
|
|
51
|
+
}[];
|
|
52
|
+
validateForm?: (formState: SamplingRuleFormState) => DuplicateValidationResult | null;
|
|
53
|
+
onNavigateToDuplicate?: (ruleId: string) => void;
|
|
54
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const DRAWER_TITLE = "Edit 'Noisy Operation' auto rule";
|
|
2
|
+
export declare const DRAWER_SUBTITLE = "Automatically detect and sample health probe traces across the cluster.";
|
|
3
|
+
export declare const SECTION_TITLE = "Auto rule - Kubernetes Health Probes";
|
|
4
|
+
export declare const LABEL_RULE_ENABLED = "Rule Enabled";
|
|
5
|
+
export declare const SECTION_KEEP_PERCENTAGE = "Keep Percentage";
|
|
6
|
+
export declare const DESC_KEEP_PERCENTAGE = "Specify the exact percentage of matching traces to keep";
|
|
7
|
+
export declare const LABEL_KEEP_AT_LEAST = "Keep at least this percentage of matching traces";
|
|
8
|
+
export declare const LABEL_CUSTOM_PERCENTAGE = "Custom percentage";
|
|
9
|
+
export declare const BTN_CANCEL = "Cancel";
|
|
10
|
+
export declare const BTN_SAVE = "Save";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type PercentagePreset = '50' | '25' | '10' | '1' | 'custom';
|
|
2
|
+
export interface EditAutoRuleDrawerProps {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
keepPercentage: number;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
onSave: (enabled: boolean, keepPercentage: number) => void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const DRAWER_TITLE = "Edit 'Cost Reduction' auto rule";
|
|
2
|
+
export declare const DRAWER_SUBTITLE = "Automatically drop a percentage of traces across the entire cluster.";
|
|
3
|
+
export declare const SECTION_TITLE = "Auto rule - Drop Traces Cluster-Wide";
|
|
4
|
+
export declare const LABEL_RULE_ENABLED = "Rule Enabled";
|
|
5
|
+
export declare const SECTION_DROP_PERCENTAGE = "Drop Percentage";
|
|
6
|
+
export declare const DESC_DROP_PERCENTAGE = "Specify the exact percentage of matching traces to drop";
|
|
7
|
+
export declare const LABEL_DROP_AT_MOST = "Drop at most this percentage of matching traces";
|
|
8
|
+
export declare const LABEL_CUSTOM_PERCENTAGE = "Custom percentage";
|
|
9
|
+
export declare const BTN_CANCEL = "Cancel";
|
|
10
|
+
export declare const BTN_SAVE = "Save";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type PercentagePreset = '50' | '25' | '10' | '1' | 'custom';
|
|
2
|
+
export interface EditCostReductionAutoRuleDrawerProps {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
dropPercentage: number;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
onSave: (enabled: boolean, dropPercentage: number) => void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const DRAWER_TITLE = "Edit 'Highly Relevant' auto rule";
|
|
2
|
+
export declare const DRAWER_SUBTITLE = "Automatically keep all error traces across the entire cluster.";
|
|
3
|
+
export declare const SECTION_TITLE = "Auto rule - Keep All Error Traces";
|
|
4
|
+
export declare const LABEL_RULE_ENABLED = "Rule Enabled";
|
|
5
|
+
export declare const BTN_CANCEL = "Cancel";
|
|
6
|
+
export declare const BTN_SAVE = "Save";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { EditHighlyRelevantAutoRuleDrawerProps } from './types';
|
|
3
|
+
export type { EditHighlyRelevantAutoRuleDrawerProps } from './types';
|
|
4
|
+
export declare const EditHighlyRelevantAutoRuleDrawer: FC<EditHighlyRelevantAutoRuleDrawerProps>;
|
|
@@ -2,5 +2,10 @@ export * from './add-action-drawer';
|
|
|
2
2
|
export * from './add-destination-drawer';
|
|
3
3
|
export * from './add-rule-drawer';
|
|
4
4
|
export * from './add-source-drawer';
|
|
5
|
+
export * from './create-sampling-rule-drawer';
|
|
6
|
+
export * from './edit-auto-rule-drawer';
|
|
7
|
+
export * from './edit-highly-relevant-auto-rule-drawer';
|
|
8
|
+
export * from './edit-cost-reduction-auto-rule-drawer';
|
|
5
9
|
export * from './edit-config-drawer';
|
|
6
10
|
export * from './system-drawer';
|
|
11
|
+
export * from './view-sampling-rule-drawer';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ViewRuleData } from './types';
|
|
2
|
+
export { SAMPLING_DRAWER_WIDTH } from '../create-sampling-rule-drawer/constants';
|
|
3
|
+
export { UNNAMED_RULE, LABEL_DISABLED_RULE, BTN_EDIT_RULE, BTN_CANCEL, SECTION_SAMPLING_PREVIEW, SECTION_SOURCE_SCOPE, SECTION_OPERATION, SECTION_DURATION, SECTION_ERRORS, LABEL_RULE_NAME, LABEL_RULE_TYPE, LABEL_NOTE, LABEL_HTTP_ROUTE, LABEL_METHOD, LABEL_KEEP_PERCENTAGE, LABEL_DROP_PERCENTAGE, LABEL_KEEP_TRACES_DURATION, LABEL_KEEP_TRACES_ERRORS, LABEL_KEEP_AT_LEAST, LABEL_KEEP_AT_MOST, CATEGORY_DESCRIPTIONS, } from '../../sampling-rules-list/constants';
|
|
4
|
+
export declare const ALL_SOURCES = "All sources";
|
|
5
|
+
export declare const EMPTY_VALUE = "-";
|
|
6
|
+
export declare const LABEL_RULE_ENABLED = "Rule Enabled";
|
|
7
|
+
export declare const LABEL_OPERATION_TYPE = "Operation type";
|
|
8
|
+
export declare const LABEL_SAMPLE = "Sample";
|
|
9
|
+
export declare const LABEL_KEEP_ALL = "Keep all";
|
|
10
|
+
export declare const LABEL_DROP_ALL = "Drop all";
|
|
11
|
+
export declare const BTN_DELETE_RULE = "Delete rule";
|
|
12
|
+
export declare const BTN_SAVE_RULE = "Save";
|
|
13
|
+
export declare const EDIT_TITLES: Record<ViewRuleData['category'], string>;
|
|
14
|
+
export declare const OPERATION_ALL = "All operations";
|
|
15
|
+
export declare const OPERATION_HTTP_SERVER = "HTTP server endpoint";
|
|
16
|
+
export declare const OPERATION_HTTP_CLIENT = "HTTP client endpoint";
|
|
17
|
+
export declare const OPERATION_KAFKA_CONSUMER = "Kafka consumer";
|
|
18
|
+
export declare const OPERATION_KAFKA_PRODUCER = "Kafka producer";
|
|
19
|
+
export declare const CATEGORY_LABELS: Record<ViewRuleData['category'], string>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
interface ViewFooterProps {
|
|
3
|
+
isEditing: false;
|
|
4
|
+
onDelete: () => void;
|
|
5
|
+
onCancel: () => void;
|
|
6
|
+
onEdit: () => void;
|
|
7
|
+
}
|
|
8
|
+
interface DuplicateWarningInfo {
|
|
9
|
+
message: string;
|
|
10
|
+
onViewRule?: () => void;
|
|
11
|
+
}
|
|
12
|
+
interface EditFooterProps {
|
|
13
|
+
isEditing: true;
|
|
14
|
+
onCancelEdit: () => void;
|
|
15
|
+
onSave: () => void;
|
|
16
|
+
onDelete: () => void;
|
|
17
|
+
duplicateWarning?: DuplicateWarningInfo | null;
|
|
18
|
+
}
|
|
19
|
+
export type DrawerFooterProps = ViewFooterProps | EditFooterProps;
|
|
20
|
+
export declare const DrawerFooter: FC<DrawerFooterProps>;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { ViewRuleData } from './types';
|
|
3
|
+
import type { SamplingRuleFormState, DuplicateValidationResult } from '../create-sampling-rule-drawer/types';
|
|
4
|
+
export type { ViewRuleData } from './types';
|
|
5
|
+
export { viewRuleDataToFormState } from './reverse-converters';
|
|
6
|
+
export interface ViewSamplingRuleDrawerProps {
|
|
7
|
+
data: ViewRuleData | null;
|
|
8
|
+
defaultEditMode?: boolean;
|
|
9
|
+
onClose: () => void;
|
|
10
|
+
onDelete: (ruleId: string, samplingId: string) => void;
|
|
11
|
+
onSaveEdit: (formState: SamplingRuleFormState, ruleId: string, samplingId: string) => void;
|
|
12
|
+
sourceOptions?: {
|
|
13
|
+
id: string;
|
|
14
|
+
label: string;
|
|
15
|
+
}[];
|
|
16
|
+
namespaceOptions?: {
|
|
17
|
+
id: string;
|
|
18
|
+
label: string;
|
|
19
|
+
}[];
|
|
20
|
+
validateForm?: (formState: SamplingRuleFormState) => DuplicateValidationResult | null;
|
|
21
|
+
onNavigateToDuplicate?: (ruleId: string) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare const ViewSamplingRuleDrawer: FC<ViewSamplingRuleDrawerProps>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const SectionCard: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
2
|
+
export declare const FlexSectionCard: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>, never>> & string;
|
|
3
|
+
export declare const CellsRow: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
4
|
+
export declare const Cell: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { ViewRuleData } from '../../sampling-rules-list/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const BTN_EDIT_AUTO_RULE = "Edit auto rule";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HighlyRelevantOperationRule, CostReductionRule, SamplingRules } from '@/types';
|
|
2
|
+
import type { SummaryPart } from '../sampling-rules-list/types';
|
|
3
|
+
export interface K8sHealthProbesConfig {
|
|
4
|
+
enabled: boolean | null;
|
|
5
|
+
keepPercentage: number | null;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildAutoRuleSummary(config: K8sHealthProbesConfig | null): SummaryPart[];
|
|
8
|
+
export interface HighlyRelevantAutoRuleMatch {
|
|
9
|
+
rule: HighlyRelevantOperationRule;
|
|
10
|
+
samplingId: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function findHighlyRelevantAutoRule(groups: SamplingRules[]): HighlyRelevantAutoRuleMatch | null;
|
|
13
|
+
export declare function buildHighlyRelevantAutoRuleSummary(rule: HighlyRelevantOperationRule | null): SummaryPart[];
|
|
14
|
+
export interface CostReductionAutoRuleMatch {
|
|
15
|
+
rule: CostReductionRule;
|
|
16
|
+
samplingId: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function findCostReductionAutoRule(groups: SamplingRules[]): CostReductionAutoRuleMatch | null;
|
|
19
|
+
export declare function buildCostReductionAutoRuleSummary(rule: CostReductionRule | null): SummaryPart[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { AutoRuleCardProps } from './types';
|
|
3
|
+
export type { AutoRuleCardProps } from './types';
|
|
4
|
+
export { buildAutoRuleSummary, type K8sHealthProbesConfig, findHighlyRelevantAutoRule, buildHighlyRelevantAutoRuleSummary, type HighlyRelevantAutoRuleMatch, findCostReductionAutoRule, buildCostReductionAutoRuleSummary, type CostReductionAutoRuleMatch, } from './helpers';
|
|
5
|
+
export declare const AutoRuleCard: FC<AutoRuleCardProps>;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export * from './_drawers';
|
|
2
2
|
export * from './_forms';
|
|
3
|
+
export * from './auto-rule-card';
|
|
3
4
|
export * from './central-connections';
|
|
4
5
|
export * from './onboarding';
|
|
5
6
|
export * from './pipeline-collectors';
|
|
7
|
+
export * from './sampling-rules-list';
|
|
8
|
+
export { RichTitle, type RichTitleProps } from '@/snippets/_v2/rich-title';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SamplingRuleCategory } from './types';
|
|
2
|
+
export declare const UNNAMED_RULE = "Unnamed rule";
|
|
3
|
+
export declare const LABEL_DISABLED_RULE = "Disabled rule";
|
|
4
|
+
export declare const BTN_EDIT_RULE = "Edit rule";
|
|
5
|
+
export declare const BTN_CANCEL = "Cancel";
|
|
6
|
+
export declare const SECTION_SAMPLING_PREVIEW = "Sampling Preview";
|
|
7
|
+
export declare const SECTION_SOURCE_SCOPE = "Source Scope";
|
|
8
|
+
export declare const SECTION_OPERATION = "Operation";
|
|
9
|
+
export declare const SECTION_DURATION = "Duration";
|
|
10
|
+
export declare const SECTION_ERRORS = "Errors";
|
|
11
|
+
export declare const LABEL_RULE_NAME = "Rule name";
|
|
12
|
+
export declare const LABEL_RULE_TYPE = "Rule type";
|
|
13
|
+
export declare const LABEL_NOTE = "Note";
|
|
14
|
+
export declare const LABEL_HTTP_ROUTE = "HTTP route";
|
|
15
|
+
export declare const LABEL_METHOD = "Method";
|
|
16
|
+
export declare const LABEL_KEEP_PERCENTAGE = "Keep Percentage";
|
|
17
|
+
export declare const LABEL_DROP_PERCENTAGE = "Drop Percentage";
|
|
18
|
+
export declare const LABEL_KEEP_TRACES_DURATION = "Keep traces with duration larger than";
|
|
19
|
+
export declare const LABEL_KEEP_TRACES_ERRORS = "Keep traces with errors";
|
|
20
|
+
export declare const LABEL_KEEP_AT_LEAST = "Keep at least this percentage of matching traces";
|
|
21
|
+
export declare const LABEL_KEEP_AT_MOST = "Keep at most this percentage of matching traces";
|
|
22
|
+
export declare const FILTER_TYPE_ALL = "All";
|
|
23
|
+
export declare const CATEGORY_DESCRIPTIONS: Record<SamplingRuleCategory, string>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { NoisyOperationRule, HighlyRelevantOperationRule, CostReductionRule, SourcesScopeInput, HeadSamplingOperationMatcher, TailSamplingOperationMatcher, SamplingRules } from '@/types';
|
|
2
|
+
import type { SamplingRuleItem, SamplingRuleCategory, SummaryPart, HighlyRelevantBadgeType, ViewRuleData } from './types';
|
|
3
|
+
export declare enum SamplingCategory {
|
|
4
|
+
Noisy = "noisy",
|
|
5
|
+
HighlyRelevant = "highly-relevant",
|
|
6
|
+
CostReduction = "cost-reduction"
|
|
7
|
+
}
|
|
8
|
+
export declare const SAMPLING_SEGMENT_OPTIONS: {
|
|
9
|
+
value: SamplingCategory;
|
|
10
|
+
label: string;
|
|
11
|
+
tooltip: string;
|
|
12
|
+
}[];
|
|
13
|
+
export declare const SAMPLING_CATEGORY_NOTES: Record<SamplingCategory, string>;
|
|
14
|
+
export declare const SAMPLING_CATEGORY_LIST_TITLES: Record<SamplingCategory, string>;
|
|
15
|
+
export declare const CATEGORY_TO_RULE_CATEGORY: Record<SamplingCategory, SamplingRuleCategory>;
|
|
16
|
+
export declare function buildNoisySummary(rule: NoisyOperationRule): SummaryPart[];
|
|
17
|
+
export declare function buildHighlyRelevantSummary(rule: HighlyRelevantOperationRule): SummaryPart[];
|
|
18
|
+
export declare function buildCostReductionSummary(rule: CostReductionRule): SummaryPart[];
|
|
19
|
+
export declare function getHighlyRelevantTypeBadge(rule: HighlyRelevantOperationRule): HighlyRelevantBadgeType;
|
|
20
|
+
export declare function buildSamplingRuleItems(groups: SamplingRules[], category: SamplingCategory, excludeRuleIds?: Set<string>): SamplingRuleItem[];
|
|
21
|
+
export declare function buildSummaryForRule(category: SamplingRuleCategory, rule: NoisyOperationRule | HighlyRelevantOperationRule | CostReductionRule): SummaryPart[];
|
|
22
|
+
export declare function refreshViewRuleData(groups: SamplingRules[], current: ViewRuleData): ViewRuleData | null;
|
|
23
|
+
export declare function lookupViewRuleData(groups: SamplingRules[], item: SamplingRuleItem): ViewRuleData | null;
|
|
24
|
+
export interface DuplicateCheckInput {
|
|
25
|
+
sourceScopes?: SourcesScopeInput[] | null;
|
|
26
|
+
operation?: HeadSamplingOperationMatcher | TailSamplingOperationMatcher | null;
|
|
27
|
+
error?: boolean;
|
|
28
|
+
durationAtLeastMs?: number | null;
|
|
29
|
+
}
|
|
30
|
+
export declare function findDuplicateRuleId(groups: SamplingRules[], category: SamplingRuleCategory, input: DuplicateCheckInput, excludeRuleId?: string): string | null;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { SamplingRulesListProps } from './types';
|
|
3
|
+
export type { SamplingRuleItem, SamplingRuleCategory, SamplingRulesListProps, SummaryPart, SummaryPartVariant, HighlyRelevantBadgeType, ViewRuleData, TypeFilter } from './types';
|
|
4
|
+
export type { DuplicateCheckInput } from './helpers';
|
|
5
|
+
export { SamplingCategory, SAMPLING_SEGMENT_OPTIONS, SAMPLING_CATEGORY_NOTES, SAMPLING_CATEGORY_LIST_TITLES, CATEGORY_TO_RULE_CATEGORY, buildNoisySummary, buildHighlyRelevantSummary, buildCostReductionSummary, getHighlyRelevantTypeBadge, buildSummaryForRule, buildSamplingRuleItems, refreshViewRuleData, lookupViewRuleData, findDuplicateRuleId, } from './helpers';
|
|
6
|
+
export declare const SamplingRulesList: FC<SamplingRulesListProps>;
|