@devicechain/widgets 0.23.0-rc.1 → 0.24.0-rc.1
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/README.md +8 -3
- package/dist/aggregate-fold.d.ts +3 -2
- package/dist/aggregate-strings.d.ts +1 -0
- package/dist/alarm-strings.d.ts +18 -0
- package/dist/binding-policy.d.ts +4 -0
- package/dist/bound-devices-notice.d.ts +30 -0
- package/dist/builtin-descriptors.d.ts +290 -249
- package/dist/builtin-option-docs.d.ts +2 -0
- package/dist/builtin-registry.d.ts +249 -226
- package/dist/category-geometry.d.ts +1 -0
- package/dist/chunks/{aggregate-feed-BD3CHNFU.js → aggregate-feed-4FSBQYJL.js} +39 -11
- package/dist/chunks/aggregate-feed-4FSBQYJL.js.map +7 -0
- package/dist/chunks/{aggregate-widgets-HZQI5HTX.js → aggregate-widgets-2ZQBW3YF.js} +376 -182
- package/dist/chunks/aggregate-widgets-2ZQBW3YF.js.map +7 -0
- package/dist/chunks/alarm-widgets-X4PX5MYJ.js +72 -0
- package/dist/chunks/alarm-widgets-X4PX5MYJ.js.map +7 -0
- package/dist/chunks/chunk-546TK2QG.js +722 -0
- package/dist/chunks/chunk-546TK2QG.js.map +7 -0
- package/dist/chunks/{chunk-WBKHYZU2.js → chunk-62CHYCHI.js} +6 -62
- package/dist/chunks/chunk-62CHYCHI.js.map +7 -0
- package/dist/chunks/chunk-BMFQOTYG.js +41 -0
- package/dist/chunks/chunk-BMFQOTYG.js.map +7 -0
- package/dist/chunks/{chunk-2D7JNKFE.js → chunk-JFH4QMLA.js} +28 -4
- package/dist/chunks/chunk-JFH4QMLA.js.map +7 -0
- package/dist/chunks/chunk-QMGKB6J3.js +84 -0
- package/dist/chunks/chunk-QMGKB6J3.js.map +7 -0
- package/dist/chunks/chunk-XNEBAY4J.js +19 -0
- package/dist/chunks/chunk-XNEBAY4J.js.map +7 -0
- package/dist/chunks/chunk-YYJV54BV.js +58 -0
- package/dist/chunks/chunk-YYJV54BV.js.map +7 -0
- package/dist/chunks/compare-feed-AY3CVKUZ.js +346 -0
- package/dist/chunks/compare-feed-AY3CVKUZ.js.map +7 -0
- package/dist/chunks/{control-widgets-3V2LSSRF.js → control-widgets-UCTJJJ2D.js} +267 -78
- package/dist/chunks/control-widgets-UCTJJJ2D.js.map +7 -0
- package/dist/chunks/event-markers-feed-GEGTIHXT.js +373 -0
- package/dist/chunks/event-markers-feed-GEGTIHXT.js.map +7 -0
- package/dist/chunks/{fleet-feed-5QGDLOV5.js → fleet-feed-2SKDR6ZQ.js} +47 -8
- package/dist/chunks/fleet-feed-2SKDR6ZQ.js.map +7 -0
- package/dist/chunks/presence-widgets-2LIUKN4Y.js +350 -0
- package/dist/chunks/presence-widgets-2LIUKN4Y.js.map +7 -0
- package/dist/command-control-strings.d.ts +5 -0
- package/dist/compare-feed.d.ts +13 -0
- package/dist/compare-model.d.ts +38 -0
- package/dist/compare-strings.d.ts +13 -0
- package/dist/documented-descriptors.d.ts +4826 -0
- package/dist/event-markers-feed.d.ts +11 -0
- package/dist/event-markers-model.d.ts +38 -0
- package/dist/event-markers-strings.d.ts +20 -0
- package/dist/event-markers-types.d.ts +7 -0
- package/dist/fleet-count-model.d.ts +13 -0
- package/dist/fleet-feed.d.ts +1 -0
- package/dist/fleet-model.d.ts +1 -0
- package/dist/fleet-strings.d.ts +11 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.js +946 -398
- package/dist/index.js.map +4 -4
- package/dist/presence-feed.d.ts +24 -0
- package/dist/presence-model.d.ts +13 -0
- package/dist/presence-strings.d.ts +19 -0
- package/dist/sparkline.d.ts +23 -0
- package/dist/use-bound-devices.d.ts +26 -0
- package/dist/widgets/aggregate-lazy.d.ts +81 -46
- package/dist/widgets/aggregate-widgets.d.ts +1 -0
- package/dist/widgets/alarm-grouped.d.ts +17 -0
- package/dist/widgets/alarm-lazy.d.ts +63 -16
- package/dist/widgets/alarm-severity.d.ts +8 -0
- package/dist/widgets/alarm-table.d.ts +2 -0
- package/dist/widgets/alarm-type-tabs.d.ts +10 -0
- package/dist/widgets/alarm-widgets.d.ts +2 -0
- package/dist/widgets/command-stepper.d.ts +22 -0
- package/dist/widgets/control-lazy.d.ts +16 -24
- package/dist/widgets/device-status.d.ts +4 -0
- package/dist/widgets/fleet-count.d.ts +2 -0
- package/dist/widgets/gauge.d.ts +2 -15
- package/dist/widgets/image.d.ts +2 -6
- package/dist/widgets/label.d.ts +2 -6
- package/dist/widgets/latest-card.d.ts +2 -13
- package/dist/widgets/lazy-chunk.d.ts +7 -2
- package/dist/widgets/level-lazy.d.ts +14 -96
- package/dist/widgets/map.d.ts +8 -5
- package/dist/widgets/online-doughnut.d.ts +2 -0
- package/dist/widgets/presence-lazy.d.ts +27 -0
- package/dist/widgets/presence-widgets.d.ts +3 -0
- package/dist/widgets/selection-lazy.d.ts +2 -4
- package/dist/widgets/table-lazy.d.ts +2 -7
- package/dist/widgets/time-series-chart.d.ts +62 -12
- package/package.json +13 -13
- package/dist/chunks/aggregate-feed-BD3CHNFU.js.map +0 -7
- package/dist/chunks/aggregate-widgets-HZQI5HTX.js.map +0 -7
- package/dist/chunks/alarm-widgets-7UY6MIYZ.js +0 -9
- package/dist/chunks/alarm-widgets-7UY6MIYZ.js.map +0 -7
- package/dist/chunks/chunk-2D7JNKFE.js.map +0 -7
- package/dist/chunks/chunk-6OGI4UFJ.js +0 -367
- package/dist/chunks/chunk-6OGI4UFJ.js.map +0 -7
- package/dist/chunks/chunk-WBKHYZU2.js.map +0 -7
- package/dist/chunks/control-widgets-3V2LSSRF.js.map +0 -7
- package/dist/chunks/fleet-feed-5QGDLOV5.js.map +0 -7
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type DevicePresence, type FleetState, type MemberRoster, type WidgetActions, type WidgetDataSource, type WidgetDescriptor, type WidgetInstance } from '@devicechain/dashboards';
|
|
2
|
+
import { type ComponentType } from 'react';
|
|
3
|
+
export interface PresenceFeedProps {
|
|
4
|
+
hub: WidgetDataSource;
|
|
5
|
+
widget: WidgetInstance;
|
|
6
|
+
descriptor: WidgetDescriptor;
|
|
7
|
+
Component: ComponentType<any>;
|
|
8
|
+
actions: WidgetActions | undefined;
|
|
9
|
+
ErrorFrame: ComponentType<{
|
|
10
|
+
widget: WidgetInstance;
|
|
11
|
+
error: unknown;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
interface Store {
|
|
15
|
+
key: string | null;
|
|
16
|
+
roster: MemberRoster | null;
|
|
17
|
+
states: Map<string, DevicePresence> | null;
|
|
18
|
+
forbidden: boolean;
|
|
19
|
+
error: unknown | null;
|
|
20
|
+
readAt: number | null;
|
|
21
|
+
}
|
|
22
|
+
export declare function buildPresenceFleet(store: Pick<Store, 'roster' | 'states' | 'forbidden' | 'error'>): FleetState;
|
|
23
|
+
export default function PresenceFeed({ hub, widget, descriptor, Component, actions }: PresenceFeedProps): import("react").JSX.Element;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FleetMember, MemberPresence } from '@devicechain/dashboards';
|
|
2
|
+
export type PresenceKind = 'online' | 'offline' | 'unknown' | 'pending' | 'failed';
|
|
3
|
+
export declare function presenceKind(presence: MemberPresence | undefined): PresenceKind;
|
|
4
|
+
export declare function lastActivityMs(presence: MemberPresence | undefined): number | undefined;
|
|
5
|
+
export interface PresenceTally {
|
|
6
|
+
online: number;
|
|
7
|
+
offline: number;
|
|
8
|
+
unknown: number;
|
|
9
|
+
pending: number;
|
|
10
|
+
failed: number;
|
|
11
|
+
newest: number | undefined;
|
|
12
|
+
}
|
|
13
|
+
export declare function tallyPresence(members: readonly FleetMember[]): PresenceTally;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface PresenceStrings {
|
|
2
|
+
online: string;
|
|
3
|
+
offline: string;
|
|
4
|
+
unknown: string;
|
|
5
|
+
neverSeen: string;
|
|
6
|
+
lastSeen: (when: string) => string;
|
|
7
|
+
failed: string;
|
|
8
|
+
unsupported: string;
|
|
9
|
+
unbound: string;
|
|
10
|
+
oneDevice: string;
|
|
11
|
+
useDoughnut: string;
|
|
12
|
+
ofTotal: (total: number) => string;
|
|
13
|
+
onlineCaption: string;
|
|
14
|
+
notRead: (n: number) => string;
|
|
15
|
+
noStatusYet: (n: number) => string;
|
|
16
|
+
chartLabel: (online: number, offline: number, unknown: number) => string;
|
|
17
|
+
}
|
|
18
|
+
export declare const PRESENCE_STRINGS: Record<'en' | 'es', PresenceStrings>;
|
|
19
|
+
export declare function presenceStrings(locale?: string | undefined): PresenceStrings;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AggregateTrendPoint } from '@devicechain/dashboards';
|
|
2
|
+
import type { AggregateStat } from './aggregate-strings';
|
|
3
|
+
export interface TrendPoint {
|
|
4
|
+
at: number;
|
|
5
|
+
value: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function trendValue(point: AggregateTrendPoint, stat: AggregateStat): number;
|
|
8
|
+
export declare function trendPoints(series: readonly AggregateTrendPoint[] | undefined, stat: AggregateStat): TrendPoint[];
|
|
9
|
+
export interface SparklineGeometry {
|
|
10
|
+
d: string;
|
|
11
|
+
end: {
|
|
12
|
+
left: number;
|
|
13
|
+
top: number;
|
|
14
|
+
} | undefined;
|
|
15
|
+
points: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function sparklineGeometry(points: readonly TrendPoint[], height: number, bucketSeconds: number): SparklineGeometry;
|
|
18
|
+
export declare function Sparkline({ points, height, bucketSeconds, label, }: {
|
|
19
|
+
points: readonly TrendPoint[];
|
|
20
|
+
height: number;
|
|
21
|
+
bucketSeconds: number;
|
|
22
|
+
label: string;
|
|
23
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type BindCheck, type BindParamIssue, type DashboardDefinition, type DeviceResolver, type SelectionTarget, type SlotBinding } from '@devicechain/dashboards';
|
|
2
|
+
export interface BoundDevicesAddress {
|
|
3
|
+
search: string;
|
|
4
|
+
replaceSearch: (search: string) => void;
|
|
5
|
+
}
|
|
6
|
+
export interface LinkProblems {
|
|
7
|
+
issues: BindParamIssue[];
|
|
8
|
+
missing: BindCheck['missing'];
|
|
9
|
+
failed: BindCheck['failed'];
|
|
10
|
+
}
|
|
11
|
+
export type BoundDevicesPhase = 'ready' | 'checking' | 'refused';
|
|
12
|
+
export interface BoundDevices {
|
|
13
|
+
selection: Record<string, SlotBinding>;
|
|
14
|
+
select: (target: SelectionTarget) => void;
|
|
15
|
+
reset: () => void;
|
|
16
|
+
phase: BoundDevicesPhase;
|
|
17
|
+
problems: LinkProblems | null;
|
|
18
|
+
dismiss: () => void;
|
|
19
|
+
retry: () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function useBoundDevices({ definition, resolver, address, enabled, }: {
|
|
22
|
+
definition: DashboardDefinition;
|
|
23
|
+
resolver: Pick<DeviceResolver, 'deviceExists'>;
|
|
24
|
+
address: BoundDevicesAddress;
|
|
25
|
+
enabled?: boolean;
|
|
26
|
+
}): BoundDevices;
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
export declare const loadAggregateWidgets: () => Promise<typeof import("./aggregate-widgets")>;
|
|
2
|
-
export declare const statCardWidget: import("@devicechain/widget-sdk").WidgetDefinition<"aggregate", {
|
|
2
|
+
export declare const statCardWidget: import("@devicechain/widget-sdk").WidgetDefinition<"aggregate", import("../builtin-descriptors").DocumentedSpecs<{
|
|
3
3
|
readonly title: {
|
|
4
4
|
readonly kind: 'string';
|
|
5
5
|
readonly labelId: 'widgetLabelTitle';
|
|
6
|
-
readonly doc: 'Heading shown in the widget frame. Defaults to the displayed measurement name.';
|
|
7
6
|
};
|
|
8
7
|
readonly measurement: {
|
|
9
8
|
readonly kind: 'string';
|
|
10
9
|
readonly labelId: 'widgetLabelMeasurement';
|
|
11
10
|
readonly helpId: 'widgetHintMeasurement';
|
|
12
|
-
readonly doc: 'Which measurement to display. Defaults to the first the datasource selects.';
|
|
13
11
|
};
|
|
14
12
|
readonly stat: {
|
|
15
13
|
readonly kind: "enum";
|
|
@@ -25,12 +23,10 @@ export declare const statCardWidget: import("@devicechain/widget-sdk").WidgetDef
|
|
|
25
23
|
readonly last: "widgetStatLast";
|
|
26
24
|
};
|
|
27
25
|
readonly placeholderId: "widgetPlaceholderDefault";
|
|
28
|
-
readonly doc: "Which figure to show. Default average.";
|
|
29
26
|
};
|
|
30
27
|
readonly unit: {
|
|
31
28
|
readonly kind: 'string';
|
|
32
29
|
readonly labelId: 'widgetLabelUnit';
|
|
33
|
-
readonly doc: 'Unit suffix shown beside the value.';
|
|
34
30
|
};
|
|
35
31
|
readonly precision: {
|
|
36
32
|
readonly kind: 'number';
|
|
@@ -39,20 +35,17 @@ export declare const statCardWidget: import("@devicechain/widget-sdk").WidgetDef
|
|
|
39
35
|
readonly max: 100;
|
|
40
36
|
readonly labelId: 'widgetLabelPrecision';
|
|
41
37
|
readonly helpId: 'widgetHintPrecision';
|
|
42
|
-
readonly doc: 'Decimal places to round displayed values to. Unset rounds to at most 3 decimals (4 significant digits under 1).';
|
|
43
38
|
};
|
|
44
39
|
readonly thresholds: {
|
|
45
40
|
readonly kind: 'list';
|
|
46
41
|
readonly maxItems: 12;
|
|
47
42
|
readonly labelId: 'widgetLabelThresholds';
|
|
48
43
|
readonly helpId: 'widgetHintThresholds';
|
|
49
|
-
readonly doc: 'Severity bands over the value. Each entry starts a band at its value that runs to the next entry; below the first, and in a normal band, the widget keeps its own colour.';
|
|
50
44
|
readonly item: {
|
|
51
45
|
readonly value: {
|
|
52
46
|
readonly kind: 'number';
|
|
53
47
|
readonly required: true;
|
|
54
48
|
readonly labelId: 'widgetLabelThresholdValue';
|
|
55
|
-
readonly doc: 'The value at which this band starts.';
|
|
56
49
|
};
|
|
57
50
|
readonly level: {
|
|
58
51
|
readonly kind: 'enum';
|
|
@@ -67,15 +60,18 @@ export declare const statCardWidget: import("@devicechain/widget-sdk").WidgetDef
|
|
|
67
60
|
readonly critical: 'widgetSeverityCritical';
|
|
68
61
|
};
|
|
69
62
|
readonly placeholderId: 'widgetPlaceholderThresholdLevel';
|
|
70
|
-
readonly doc: 'The severity of this band. The theme decides the colour; normal has none.';
|
|
71
63
|
};
|
|
72
64
|
readonly label: {
|
|
73
65
|
readonly kind: 'string';
|
|
74
66
|
readonly labelId: 'widgetLabelThresholdLabel';
|
|
75
|
-
readonly doc: 'Text shown on the chart line for this threshold. Defaults to its value.';
|
|
76
67
|
};
|
|
77
68
|
};
|
|
78
69
|
};
|
|
70
|
+
readonly sparkline: {
|
|
71
|
+
readonly kind: "boolean";
|
|
72
|
+
readonly labelId: "widgetLabelSparkline";
|
|
73
|
+
readonly helpId: "widgetHintSparkline";
|
|
74
|
+
};
|
|
79
75
|
readonly windowSeconds: {
|
|
80
76
|
readonly kind: 'number';
|
|
81
77
|
readonly integer: true;
|
|
@@ -83,14 +79,12 @@ export declare const statCardWidget: import("@devicechain/widget-sdk").WidgetDef
|
|
|
83
79
|
readonly max: 604800;
|
|
84
80
|
readonly labelId: 'widgetLabelWindowSeconds';
|
|
85
81
|
readonly helpId: 'widgetHintWindowSeconds';
|
|
86
|
-
readonly doc: 'Seconds of history the widget covers, back from now. Leave unset to follow the board’s time range; set it to pin this widget to a fixed span that the viewer’s range picker does not change. 60 to 604800.';
|
|
87
82
|
};
|
|
88
|
-
}
|
|
89
|
-
export declare const barChartWidget: import("@devicechain/widget-sdk").WidgetDefinition<"measurement", {
|
|
83
|
+
}>>;
|
|
84
|
+
export declare const barChartWidget: import("@devicechain/widget-sdk").WidgetDefinition<"measurement", import("../builtin-descriptors").DocumentedSpecs<{
|
|
90
85
|
readonly title: {
|
|
91
86
|
readonly kind: 'string';
|
|
92
87
|
readonly labelId: 'widgetLabelTitle';
|
|
93
|
-
readonly doc: 'Heading shown in the widget frame. Blank hides the frame heading.';
|
|
94
88
|
};
|
|
95
89
|
readonly groupBy: {
|
|
96
90
|
readonly kind: "enum";
|
|
@@ -102,18 +96,15 @@ export declare const barChartWidget: import("@devicechain/widget-sdk").WidgetDef
|
|
|
102
96
|
readonly device: "widgetGroupByDevice";
|
|
103
97
|
};
|
|
104
98
|
readonly placeholderId: "widgetPlaceholderDefault";
|
|
105
|
-
readonly doc: "One bar per measurement (the default), or per device of the group for the measurement set below.";
|
|
106
99
|
};
|
|
107
100
|
readonly measurement: {
|
|
108
101
|
readonly kind: 'string';
|
|
109
102
|
readonly labelId: 'widgetLabelMeasurement';
|
|
110
103
|
readonly helpId: 'widgetHintMeasurement';
|
|
111
|
-
readonly doc: 'Which measurement to display. Defaults to the first the datasource selects.';
|
|
112
104
|
};
|
|
113
105
|
readonly unit: {
|
|
114
106
|
readonly kind: 'string';
|
|
115
107
|
readonly labelId: 'widgetLabelUnit';
|
|
116
|
-
readonly doc: 'Unit suffix shown beside the value.';
|
|
117
108
|
};
|
|
118
109
|
readonly precision: {
|
|
119
110
|
readonly kind: 'number';
|
|
@@ -122,7 +113,6 @@ export declare const barChartWidget: import("@devicechain/widget-sdk").WidgetDef
|
|
|
122
113
|
readonly max: 100;
|
|
123
114
|
readonly labelId: 'widgetLabelPrecision';
|
|
124
115
|
readonly helpId: 'widgetHintPrecision';
|
|
125
|
-
readonly doc: 'Decimal places to round displayed values to. Unset rounds to at most 3 decimals (4 significant digits under 1).';
|
|
126
116
|
};
|
|
127
117
|
readonly sort: {
|
|
128
118
|
readonly kind: 'enum';
|
|
@@ -134,19 +124,16 @@ export declare const barChartWidget: import("@devicechain/widget-sdk").WidgetDef
|
|
|
134
124
|
readonly descending: 'widgetSortDescending';
|
|
135
125
|
};
|
|
136
126
|
readonly placeholderId: 'widgetPlaceholderDefault';
|
|
137
|
-
readonly doc: 'Order of the categories. Default: as the data source lists them.';
|
|
138
127
|
};
|
|
139
|
-
}
|
|
140
|
-
export declare const pieChartWidget: import("@devicechain/widget-sdk").WidgetDefinition<"measurement", {
|
|
128
|
+
}>>;
|
|
129
|
+
export declare const pieChartWidget: import("@devicechain/widget-sdk").WidgetDefinition<"measurement", import("../builtin-descriptors").DocumentedSpecs<{
|
|
141
130
|
readonly title: {
|
|
142
131
|
readonly kind: 'string';
|
|
143
132
|
readonly labelId: 'widgetLabelTitle';
|
|
144
|
-
readonly doc: 'Heading shown in the widget frame. Blank hides the frame heading.';
|
|
145
133
|
};
|
|
146
134
|
readonly unit: {
|
|
147
135
|
readonly kind: 'string';
|
|
148
136
|
readonly labelId: 'widgetLabelUnit';
|
|
149
|
-
readonly doc: 'Unit suffix shown beside the value.';
|
|
150
137
|
};
|
|
151
138
|
readonly precision: {
|
|
152
139
|
readonly kind: 'number';
|
|
@@ -155,7 +142,6 @@ export declare const pieChartWidget: import("@devicechain/widget-sdk").WidgetDef
|
|
|
155
142
|
readonly max: 100;
|
|
156
143
|
readonly labelId: 'widgetLabelPrecision';
|
|
157
144
|
readonly helpId: 'widgetHintPrecision';
|
|
158
|
-
readonly doc: 'Decimal places to round displayed values to. Unset rounds to at most 3 decimals (4 significant digits under 1).';
|
|
159
145
|
};
|
|
160
146
|
readonly sort: {
|
|
161
147
|
readonly kind: 'enum';
|
|
@@ -167,37 +153,99 @@ export declare const pieChartWidget: import("@devicechain/widget-sdk").WidgetDef
|
|
|
167
153
|
readonly descending: 'widgetSortDescending';
|
|
168
154
|
};
|
|
169
155
|
readonly placeholderId: 'widgetPlaceholderDefault';
|
|
170
|
-
readonly doc: 'Order of the categories. Default: as the data source lists them.';
|
|
171
156
|
};
|
|
172
|
-
}
|
|
173
|
-
export declare const
|
|
157
|
+
}>>;
|
|
158
|
+
export declare const fleetCountWidget: import("@devicechain/widget-sdk").WidgetDefinition<"measurement", import("../builtin-descriptors").DocumentedSpecs<{
|
|
159
|
+
readonly title: {
|
|
160
|
+
readonly kind: 'string';
|
|
161
|
+
readonly labelId: 'widgetLabelTitle';
|
|
162
|
+
};
|
|
163
|
+
readonly show: {
|
|
164
|
+
readonly kind: "enum";
|
|
165
|
+
readonly values: readonly ["attention", "devices"];
|
|
166
|
+
readonly labelId: "widgetLabelFleetShow";
|
|
167
|
+
readonly helpId: "widgetHintFleetShow";
|
|
168
|
+
readonly valueLabelIds: {
|
|
169
|
+
readonly attention: "widgetFleetShowAttention";
|
|
170
|
+
readonly devices: "widgetFleetShowDevices";
|
|
171
|
+
};
|
|
172
|
+
readonly placeholderId: "widgetPlaceholderDefault";
|
|
173
|
+
};
|
|
174
|
+
readonly measurement: {
|
|
175
|
+
readonly kind: 'string';
|
|
176
|
+
readonly labelId: 'widgetLabelMeasurement';
|
|
177
|
+
readonly helpId: 'widgetHintMeasurement';
|
|
178
|
+
};
|
|
179
|
+
readonly thresholds: {
|
|
180
|
+
readonly kind: 'list';
|
|
181
|
+
readonly maxItems: 12;
|
|
182
|
+
readonly labelId: 'widgetLabelThresholds';
|
|
183
|
+
readonly helpId: 'widgetHintThresholds';
|
|
184
|
+
readonly item: {
|
|
185
|
+
readonly value: {
|
|
186
|
+
readonly kind: 'number';
|
|
187
|
+
readonly required: true;
|
|
188
|
+
readonly labelId: 'widgetLabelThresholdValue';
|
|
189
|
+
};
|
|
190
|
+
readonly level: {
|
|
191
|
+
readonly kind: 'enum';
|
|
192
|
+
readonly required: true;
|
|
193
|
+
readonly values: readonly ["normal", "warning", "minor", "major", "critical"];
|
|
194
|
+
readonly labelId: 'widgetLabelThresholdLevel';
|
|
195
|
+
readonly valueLabelIds: {
|
|
196
|
+
readonly normal: 'widgetSeverityNormal';
|
|
197
|
+
readonly warning: 'widgetSeverityWarning';
|
|
198
|
+
readonly minor: 'widgetSeverityMinor';
|
|
199
|
+
readonly major: 'widgetSeverityMajor';
|
|
200
|
+
readonly critical: 'widgetSeverityCritical';
|
|
201
|
+
};
|
|
202
|
+
readonly placeholderId: 'widgetPlaceholderThresholdLevel';
|
|
203
|
+
};
|
|
204
|
+
readonly label: {
|
|
205
|
+
readonly kind: 'string';
|
|
206
|
+
readonly labelId: 'widgetLabelThresholdLabel';
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
readonly staleAfterSeconds: {
|
|
211
|
+
readonly kind: 'number';
|
|
212
|
+
readonly integer: true;
|
|
213
|
+
readonly min: 1;
|
|
214
|
+
readonly labelId: 'widgetLabelStaleAfter';
|
|
215
|
+
readonly helpId: 'widgetHintStaleAfter';
|
|
216
|
+
};
|
|
217
|
+
readonly windowSeconds: {
|
|
218
|
+
readonly kind: 'number';
|
|
219
|
+
readonly integer: true;
|
|
220
|
+
readonly min: 60;
|
|
221
|
+
readonly max: 604800;
|
|
222
|
+
readonly labelId: 'widgetLabelWindowSeconds';
|
|
223
|
+
readonly helpId: 'widgetHintWindowSeconds';
|
|
224
|
+
};
|
|
225
|
+
}>>;
|
|
226
|
+
export declare const fleetTableWidget: import("@devicechain/widget-sdk").WidgetDefinition<"measurement", import("../builtin-descriptors").DocumentedSpecs<{
|
|
174
227
|
readonly title: {
|
|
175
228
|
readonly kind: 'string';
|
|
176
229
|
readonly labelId: 'widgetLabelTitle';
|
|
177
|
-
readonly doc: 'Heading shown in the widget frame. Blank hides the frame heading.';
|
|
178
230
|
};
|
|
179
231
|
readonly columns: {
|
|
180
232
|
readonly kind: 'list';
|
|
181
233
|
readonly maxItems: 24;
|
|
182
234
|
readonly labelId: 'widgetLabelColumns';
|
|
183
235
|
readonly helpId: 'widgetHintColumns';
|
|
184
|
-
readonly doc: 'Heading, unit and precision per measurement column; a column with none shows its name.';
|
|
185
236
|
readonly item: {
|
|
186
237
|
readonly measurement: {
|
|
187
238
|
readonly kind: 'string';
|
|
188
239
|
readonly required: true;
|
|
189
240
|
readonly labelId: 'widgetLabelMeasurement';
|
|
190
|
-
readonly doc: 'The measurement column this entry applies to.';
|
|
191
241
|
};
|
|
192
242
|
readonly label: {
|
|
193
243
|
readonly kind: 'string';
|
|
194
244
|
readonly labelId: 'widgetLabelColumnHeading';
|
|
195
|
-
readonly doc: 'Column heading. Defaults to the measurement name.';
|
|
196
245
|
};
|
|
197
246
|
readonly unit: {
|
|
198
247
|
readonly kind: 'string';
|
|
199
248
|
readonly labelId: 'widgetLabelUnit';
|
|
200
|
-
readonly doc: 'Unit suffix shown beside the value.';
|
|
201
249
|
};
|
|
202
250
|
readonly precision: {
|
|
203
251
|
readonly kind: 'number';
|
|
@@ -206,7 +254,6 @@ export declare const fleetTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
206
254
|
readonly max: 100;
|
|
207
255
|
readonly labelId: 'widgetLabelPrecision';
|
|
208
256
|
readonly helpId: 'widgetHintPrecision';
|
|
209
|
-
readonly doc: 'Decimal places to round displayed values to. Unset rounds to at most 3 decimals (4 significant digits under 1).';
|
|
210
257
|
};
|
|
211
258
|
};
|
|
212
259
|
};
|
|
@@ -215,13 +262,11 @@ export declare const fleetTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
215
262
|
readonly maxItems: 12;
|
|
216
263
|
readonly labelId: 'widgetLabelThresholds';
|
|
217
264
|
readonly helpId: 'widgetHintThresholds';
|
|
218
|
-
readonly doc: 'Severity bands over the value. Each entry starts a band at its value that runs to the next entry; below the first, and in a normal band, the widget keeps its own colour.';
|
|
219
265
|
readonly item: {
|
|
220
266
|
readonly value: {
|
|
221
267
|
readonly kind: 'number';
|
|
222
268
|
readonly required: true;
|
|
223
269
|
readonly labelId: 'widgetLabelThresholdValue';
|
|
224
|
-
readonly doc: 'The value at which this band starts.';
|
|
225
270
|
};
|
|
226
271
|
readonly level: {
|
|
227
272
|
readonly kind: 'enum';
|
|
@@ -236,18 +281,15 @@ export declare const fleetTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
236
281
|
readonly critical: 'widgetSeverityCritical';
|
|
237
282
|
};
|
|
238
283
|
readonly placeholderId: 'widgetPlaceholderThresholdLevel';
|
|
239
|
-
readonly doc: 'The severity of this band. The theme decides the colour; normal has none.';
|
|
240
284
|
};
|
|
241
285
|
readonly label: {
|
|
242
286
|
readonly kind: 'string';
|
|
243
287
|
readonly labelId: 'widgetLabelThresholdLabel';
|
|
244
|
-
readonly doc: 'Text shown on the chart line for this threshold. Defaults to its value.';
|
|
245
288
|
};
|
|
246
289
|
readonly measurement: {
|
|
247
290
|
readonly kind: 'string';
|
|
248
291
|
readonly required: true;
|
|
249
292
|
readonly labelId: 'widgetLabelMeasurement';
|
|
250
|
-
readonly doc: 'The measurement column this entry applies to.';
|
|
251
293
|
};
|
|
252
294
|
};
|
|
253
295
|
};
|
|
@@ -257,7 +299,6 @@ export declare const fleetTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
257
299
|
readonly min: 1;
|
|
258
300
|
readonly labelId: 'widgetLabelStaleAfter';
|
|
259
301
|
readonly helpId: 'widgetHintStaleAfter';
|
|
260
|
-
readonly doc: 'Seconds after which the newest sample is called stale: the value is greyed out and badged. Unset shows the sample age only and never marks the widget stale.';
|
|
261
302
|
};
|
|
262
303
|
readonly ageLagSeconds: {
|
|
263
304
|
readonly kind: "number";
|
|
@@ -265,18 +306,15 @@ export declare const fleetTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
265
306
|
readonly min: 1;
|
|
266
307
|
readonly labelId: "widgetLabelAgeLag";
|
|
267
308
|
readonly helpId: "widgetHintAgeLag";
|
|
268
|
-
readonly doc: "Show a reading's age under it only when the reading is at least this many seconds older than the newest reading in the table (or stale). Unset shows every reading's age.";
|
|
269
309
|
};
|
|
270
310
|
readonly sortBy: {
|
|
271
311
|
readonly kind: "string";
|
|
272
312
|
readonly labelId: "widgetLabelSortBy";
|
|
273
313
|
readonly helpId: "widgetHintSortBy";
|
|
274
|
-
readonly doc: "The measurement the table is ordered by. Blank orders by device name.";
|
|
275
314
|
};
|
|
276
315
|
readonly sortDescending: {
|
|
277
316
|
readonly kind: "boolean";
|
|
278
317
|
readonly labelId: "widgetLabelSortDescending";
|
|
279
|
-
readonly doc: "Largest first.";
|
|
280
318
|
};
|
|
281
319
|
readonly pageSize: {
|
|
282
320
|
readonly kind: "number";
|
|
@@ -284,14 +322,12 @@ export declare const fleetTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
284
322
|
readonly min: 5;
|
|
285
323
|
readonly max: 100;
|
|
286
324
|
readonly labelId: "widgetLabelPageSize";
|
|
287
|
-
readonly doc: "Devices per page. Default 20.";
|
|
288
325
|
};
|
|
289
326
|
readonly selectionTarget: {
|
|
290
327
|
readonly kind: 'string';
|
|
291
328
|
readonly labelId: 'widgetLabelTargetSlot';
|
|
292
329
|
readonly helpId: 'widgetTargetSlotHint';
|
|
293
330
|
readonly control: 'slot-target';
|
|
294
|
-
readonly doc: 'Name of the slot this widget re-points when the viewer picks an entity.';
|
|
295
331
|
};
|
|
296
332
|
readonly windowSeconds: {
|
|
297
333
|
readonly kind: 'number';
|
|
@@ -300,6 +336,5 @@ export declare const fleetTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
300
336
|
readonly max: 604800;
|
|
301
337
|
readonly labelId: 'widgetLabelWindowSeconds';
|
|
302
338
|
readonly helpId: 'widgetHintWindowSeconds';
|
|
303
|
-
readonly doc: 'Seconds of history the widget covers, back from now. Leave unset to follow the board’s time range; set it to pin this widget to a fixed span that the viewer’s range picker does not change. 60 to 604800.';
|
|
304
339
|
};
|
|
305
|
-
}
|
|
340
|
+
}>>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AlarmSubscription, AlarmTypeCount, AlarmTypeTab, WidgetActions, WidgetDataSource, WidgetInstance } from '@devicechain/dashboards';
|
|
2
|
+
import { type ComponentType } from 'react';
|
|
3
|
+
import type { useHeld as UseHeld } from '../use-held';
|
|
4
|
+
export interface GroupedAlarmProps {
|
|
5
|
+
hub: WidgetDataSource;
|
|
6
|
+
widget: WidgetInstance;
|
|
7
|
+
base: AlarmSubscription;
|
|
8
|
+
useHeld: typeof UseHeld;
|
|
9
|
+
Component: ComponentType<any>;
|
|
10
|
+
actions: WidgetActions | undefined;
|
|
11
|
+
ErrorFrame: ComponentType<{
|
|
12
|
+
widget: WidgetInstance;
|
|
13
|
+
error: unknown;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export declare function foldTypeTabs(counts: readonly AlarmTypeCount[], selected: string | null, names: Map<string, string | null>): AlarmTypeTab[];
|
|
17
|
+
export declare function GroupedAlarm({ widget, hub, base, useHeld, Component, actions, ErrorFrame }: GroupedAlarmProps): import("react").JSX.Element;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
export declare const loadAlarmWidgets: () => Promise<typeof import("./alarm-widgets")>;
|
|
2
|
-
export declare const alarmTableWidget: import("@devicechain/widget-sdk").WidgetDefinition<"alarm", {
|
|
2
|
+
export declare const alarmTableWidget: import("@devicechain/widget-sdk").WidgetDefinition<"alarm", import("../builtin-descriptors").DocumentedSpecs<{
|
|
3
3
|
readonly title: {
|
|
4
4
|
readonly kind: 'string';
|
|
5
5
|
readonly labelId: 'widgetLabelTitle';
|
|
6
|
-
readonly doc: 'Heading shown in the widget frame. Blank hides the frame heading.';
|
|
7
6
|
};
|
|
8
7
|
readonly state: {
|
|
9
8
|
readonly kind: 'enum';
|
|
@@ -15,7 +14,6 @@ export declare const alarmTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
15
14
|
readonly CLEARED: 'widgetAlarmStateCleared';
|
|
16
15
|
};
|
|
17
16
|
readonly placeholderId: 'widgetPlaceholderAny';
|
|
18
|
-
readonly doc: 'Show only alarms in this state. Unset shows every state.';
|
|
19
17
|
};
|
|
20
18
|
readonly severity: {
|
|
21
19
|
readonly kind: 'enum';
|
|
@@ -30,7 +28,6 @@ export declare const alarmTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
30
28
|
readonly INDETERMINATE: 'widgetAlarmSeverityIndeterminate';
|
|
31
29
|
};
|
|
32
30
|
readonly placeholderId: 'widgetPlaceholderAny';
|
|
33
|
-
readonly doc: 'Show only alarms at this severity. Unset shows every severity.';
|
|
34
31
|
};
|
|
35
32
|
readonly acknowledged: {
|
|
36
33
|
readonly kind: 'enum';
|
|
@@ -42,7 +39,31 @@ export declare const alarmTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
42
39
|
readonly false: 'widgetAlarmAckUnacknowledged';
|
|
43
40
|
};
|
|
44
41
|
readonly placeholderId: 'widgetPlaceholderAny';
|
|
45
|
-
|
|
42
|
+
};
|
|
43
|
+
readonly groupBy: {
|
|
44
|
+
readonly kind: "enum";
|
|
45
|
+
readonly values: readonly ["none", "deviceType"];
|
|
46
|
+
readonly labelId: "widgetLabelAlarmGroupBy";
|
|
47
|
+
readonly helpId: "widgetHintAlarmGroupBy";
|
|
48
|
+
readonly valueLabelIds: {
|
|
49
|
+
readonly none: "widgetAlarmGroupByNone";
|
|
50
|
+
readonly deviceType: "widgetAlarmGroupByDeviceType";
|
|
51
|
+
};
|
|
52
|
+
readonly placeholderId: "widgetPlaceholderDefault";
|
|
53
|
+
};
|
|
54
|
+
readonly deviceTypes: {
|
|
55
|
+
readonly kind: "list";
|
|
56
|
+
readonly maxItems: 24;
|
|
57
|
+
readonly ordered: true;
|
|
58
|
+
readonly labelId: "widgetLabelAlarmDeviceTypes";
|
|
59
|
+
readonly helpId: "widgetHintAlarmDeviceTypes";
|
|
60
|
+
readonly item: {
|
|
61
|
+
readonly token: {
|
|
62
|
+
readonly kind: "string";
|
|
63
|
+
readonly control: "device-type";
|
|
64
|
+
readonly labelId: "widgetLabelAlarmDeviceTypeToken";
|
|
65
|
+
};
|
|
66
|
+
};
|
|
46
67
|
};
|
|
47
68
|
readonly maxRows: {
|
|
48
69
|
readonly kind: "number";
|
|
@@ -50,7 +71,6 @@ export declare const alarmTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
50
71
|
readonly min: 1;
|
|
51
72
|
readonly labelId: "widgetLabelMaxRows";
|
|
52
73
|
readonly helpId: "widgetMaxRowsAlarmHint";
|
|
53
|
-
readonly doc: "Alarms loaded into the table. Default 50.";
|
|
54
74
|
};
|
|
55
75
|
readonly precision: {
|
|
56
76
|
readonly kind: 'number';
|
|
@@ -59,27 +79,57 @@ export declare const alarmTableWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
59
79
|
readonly max: 100;
|
|
60
80
|
readonly labelId: 'widgetLabelPrecision';
|
|
61
81
|
readonly helpId: 'widgetHintPrecision';
|
|
62
|
-
readonly doc: 'Decimal places to round displayed values to. Unset rounds to at most 3 decimals (4 significant digits under 1).';
|
|
63
82
|
};
|
|
64
83
|
readonly flashOnChange: {
|
|
65
84
|
readonly kind: 'boolean';
|
|
66
85
|
readonly labelId: 'widgetFlashOnChange';
|
|
67
86
|
readonly helpId: 'widgetFlashOnChangeHint';
|
|
68
|
-
readonly doc: 'Briefly tint a value green on a rise and red on a fall when it changes.';
|
|
69
87
|
};
|
|
70
88
|
readonly selectionTarget: {
|
|
71
89
|
readonly kind: 'string';
|
|
72
90
|
readonly labelId: 'widgetLabelTargetSlot';
|
|
73
91
|
readonly helpId: 'widgetTargetSlotHint';
|
|
74
92
|
readonly control: 'slot-target';
|
|
75
|
-
readonly doc: 'Name of the slot this widget re-points when the viewer picks an entity.';
|
|
76
93
|
};
|
|
77
|
-
}
|
|
78
|
-
export declare const
|
|
94
|
+
}>>;
|
|
95
|
+
export declare const alarmSeverityWidget: import("@devicechain/widget-sdk").WidgetDefinition<"alarm", import("../builtin-descriptors").DocumentedSpecs<{
|
|
96
|
+
readonly title: {
|
|
97
|
+
readonly kind: 'string';
|
|
98
|
+
readonly labelId: 'widgetLabelTitle';
|
|
99
|
+
};
|
|
100
|
+
readonly state: {
|
|
101
|
+
readonly kind: 'enum';
|
|
102
|
+
readonly values: readonly ["ACTIVE", "CLEARED"];
|
|
103
|
+
readonly labelId: 'widgetLabelState';
|
|
104
|
+
readonly helpId: 'widgetStateHint';
|
|
105
|
+
readonly valueLabelIds: {
|
|
106
|
+
readonly ACTIVE: 'widgetAlarmStateActive';
|
|
107
|
+
readonly CLEARED: 'widgetAlarmStateCleared';
|
|
108
|
+
};
|
|
109
|
+
readonly placeholderId: 'widgetPlaceholderAny';
|
|
110
|
+
};
|
|
111
|
+
readonly acknowledged: {
|
|
112
|
+
readonly kind: 'enum';
|
|
113
|
+
readonly values: readonly ["true", "false"];
|
|
114
|
+
readonly labelId: 'widgetLabelAcknowledged';
|
|
115
|
+
readonly helpId: 'widgetAcknowledgedHint';
|
|
116
|
+
readonly valueLabelIds: {
|
|
117
|
+
readonly true: 'widgetAlarmAckAcknowledged';
|
|
118
|
+
readonly false: 'widgetAlarmAckUnacknowledged';
|
|
119
|
+
};
|
|
120
|
+
readonly placeholderId: 'widgetPlaceholderAny';
|
|
121
|
+
};
|
|
122
|
+
readonly deviceType: {
|
|
123
|
+
readonly kind: "string";
|
|
124
|
+
readonly control: "device-type";
|
|
125
|
+
readonly labelId: "widgetLabelAlarmSeverityType";
|
|
126
|
+
readonly helpId: "widgetHintAlarmSeverityType";
|
|
127
|
+
};
|
|
128
|
+
}>>;
|
|
129
|
+
export declare const alarmCountWidget: import("@devicechain/widget-sdk").WidgetDefinition<"alarm", import("../builtin-descriptors").DocumentedSpecs<{
|
|
79
130
|
readonly title: {
|
|
80
131
|
readonly kind: 'string';
|
|
81
132
|
readonly labelId: 'widgetLabelTitle';
|
|
82
|
-
readonly doc: 'Heading shown in the widget frame. Blank hides the frame heading.';
|
|
83
133
|
};
|
|
84
134
|
readonly state: {
|
|
85
135
|
readonly kind: 'enum';
|
|
@@ -91,7 +141,6 @@ export declare const alarmCountWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
91
141
|
readonly CLEARED: 'widgetAlarmStateCleared';
|
|
92
142
|
};
|
|
93
143
|
readonly placeholderId: 'widgetPlaceholderAny';
|
|
94
|
-
readonly doc: 'Show only alarms in this state. Unset shows every state.';
|
|
95
144
|
};
|
|
96
145
|
readonly severity: {
|
|
97
146
|
readonly kind: 'enum';
|
|
@@ -106,7 +155,6 @@ export declare const alarmCountWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
106
155
|
readonly INDETERMINATE: 'widgetAlarmSeverityIndeterminate';
|
|
107
156
|
};
|
|
108
157
|
readonly placeholderId: 'widgetPlaceholderAny';
|
|
109
|
-
readonly doc: 'Show only alarms at this severity. Unset shows every severity.';
|
|
110
158
|
};
|
|
111
159
|
readonly acknowledged: {
|
|
112
160
|
readonly kind: 'enum';
|
|
@@ -118,6 +166,5 @@ export declare const alarmCountWidget: import("@devicechain/widget-sdk").WidgetD
|
|
|
118
166
|
readonly false: 'widgetAlarmAckUnacknowledged';
|
|
119
167
|
};
|
|
120
168
|
readonly placeholderId: 'widgetPlaceholderAny';
|
|
121
|
-
readonly doc: "Show only acknowledged ('true') or unacknowledged ('false') alarms. Unset shows both.";
|
|
122
169
|
};
|
|
123
|
-
}
|
|
170
|
+
}>>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type AlarmStreamState, type WidgetProps } from '@devicechain/widget-sdk';
|
|
2
|
+
export declare const SEVERITY_SCALE: readonly ['CRITICAL', 'MAJOR', 'MINOR', 'WARNING', 'INDETERMINATE'];
|
|
3
|
+
export type ScaleSeverity = (typeof SEVERITY_SCALE)[number];
|
|
4
|
+
export declare function severityCounts(source: readonly {
|
|
5
|
+
severity: string;
|
|
6
|
+
count: number;
|
|
7
|
+
}[]): Record<ScaleSeverity, number>;
|
|
8
|
+
export declare function AlarmSeverity({ widget, data }: WidgetProps<AlarmStreamState>): import("react").JSX.Element;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import type { AlarmTypeTab } from '@devicechain/dashboards';
|
|
1
2
|
import { type ReactNode } from 'react';
|
|
2
3
|
import { type AlarmStreamState, type WidgetProps } from '@devicechain/widget-sdk';
|
|
3
4
|
export declare const ALARM_TABLE_NARROW_PX = 480;
|
|
4
5
|
export declare function hyphenBreaks(text: string): ReactNode;
|
|
6
|
+
export declare function shownTabs(discovered: readonly AlarmTypeTab[], pinned: readonly string[]): AlarmTypeTab[];
|
|
5
7
|
export declare function AlarmTable({ widget, data, actions }: WidgetProps<AlarmStreamState>): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AlarmTypeTab } from '@devicechain/dashboards';
|
|
2
|
+
export interface AlarmTypeTabsProps {
|
|
3
|
+
tabs: readonly AlarmTypeTab[];
|
|
4
|
+
selected: string | null;
|
|
5
|
+
onSelect: (token: string | null) => void;
|
|
6
|
+
idBase: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const tabDomId: (idBase: string, token: string | null) => string;
|
|
9
|
+
export declare const panelDomId: (idBase: string) => string;
|
|
10
|
+
export declare function AlarmTypeTabsStrip({ tabs, selected, onSelect, idBase }: AlarmTypeTabsProps): import("react").JSX.Element;
|