react-dashstream 0.1.2 → 0.2.0

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 (32) hide show
  1. package/README.md +146 -10
  2. package/dashstream-skill.md +97 -20
  3. package/dist/AIOPsDashboard.d.ts +20 -0
  4. package/dist/AIOPsDashboard.d.ts.map +1 -1
  5. package/dist/ThemeContext.d.ts +4 -0
  6. package/dist/ThemeContext.d.ts.map +1 -0
  7. package/dist/components/ComponentDialog.d.ts.map +1 -1
  8. package/dist/components/Database3D.d.ts.map +1 -1
  9. package/dist/components/EventView/EventAlertsContext.d.ts +32 -0
  10. package/dist/components/EventView/EventAlertsContext.d.ts.map +1 -0
  11. package/dist/components/EventView/EventView.d.ts +1 -1
  12. package/dist/components/EventView/EventView.d.ts.map +1 -1
  13. package/dist/components/EventView/fetchEvents.d.ts +10 -0
  14. package/dist/components/EventView/fetchEvents.d.ts.map +1 -0
  15. package/dist/components/EventView/index.d.ts +2 -0
  16. package/dist/components/EventView/index.d.ts.map +1 -1
  17. package/dist/components/EventView/types.d.ts +3 -0
  18. package/dist/components/EventView/types.d.ts.map +1 -1
  19. package/dist/components/NodeCallout.d.ts.map +1 -1
  20. package/dist/components/Server3D.d.ts.map +1 -1
  21. package/dist/components/Service.d.ts.map +1 -1
  22. package/dist/components/ServiceDialog.d.ts.map +1 -1
  23. package/dist/components/ServiceNode.d.ts.map +1 -1
  24. package/dist/components/WebDispatcher3D.d.ts.map +1 -1
  25. package/dist/components/index.d.ts +2 -1
  26. package/dist/components/index.d.ts.map +1 -1
  27. package/dist/data/CredentialsModal.d.ts.map +1 -1
  28. package/dist/index.css +1 -1
  29. package/dist/index.d.ts +2 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +3188 -2635
  32. package/package.json +1 -1
package/README.md CHANGED
@@ -69,6 +69,64 @@ Click a service to expand its topology. Click a component to drill into its inte
69
69
 
70
70
  ---
71
71
 
72
+ ## Theme (light / dark)
73
+
74
+ The dashboard ships with **light** and **dark** visual modes. `AIOPsDashboard` defaults to **light**; the header includes a control to toggle modes.
75
+
76
+ ### Background images
77
+
78
+ | Prop | When used |
79
+ | ---------------------- | -------------------------------------------------- |
80
+ | `backgroundImage` | Dark mode, and light mode if no light asset is set |
81
+ | `lightBackgroundImage` | Light mode when provided |
82
+
83
+ ### Controlled theme (sync with your app shell)
84
+
85
+ Pass **`theme`** and **`onThemeChange`** to drive the dashboard from parent state (for example, to keep tabs, sidebars, and `EventView` in sync):
86
+
87
+ ```tsx
88
+ import { useState } from "react";
89
+ import { AIOPsDashboard, ThemeProvider, type DashboardTheme, type ServiceMeta } from "react-dashstream";
90
+ import lightBg from "./light.webp";
91
+ import darkBg from "./dark.webp";
92
+
93
+ const services: ServiceMeta[] = [
94
+ /* …same shape as Quick start… */
95
+ ];
96
+
97
+ export default function App() {
98
+ const [theme, setTheme] = useState<DashboardTheme>("light");
99
+
100
+ return (
101
+ <ThemeProvider value={theme}>
102
+ <AIOPsDashboard
103
+ theme={theme}
104
+ onThemeChange={setTheme}
105
+ lightBackgroundImage={lightBg}
106
+ backgroundImage={darkBg}
107
+ brandName="MY DASHBOARD"
108
+ services={services}
109
+ >
110
+ {/* Service / node tree — see Quick start */}
111
+ </AIOPsDashboard>
112
+ </ThemeProvider>
113
+ );
114
+ }
115
+ ```
116
+
117
+ When both props are set, the dashboard is **controlled**; the header toggle calls `onThemeChange`. Omit them to use **internal** theme state.
118
+
119
+ ### `ThemeProvider`, `EventView`, and the credentials modal
120
+
121
+ **`ServiceDialog`**, **`ComponentDialog`**, **`EventView`**, and **`CredentialsModal`** (access-key prompt) read the active mode from **`useTheme()`**.
122
+
123
+ - Wrap any subtree that includes **`EventView`** or standalone credential prompts in **`ThemeProvider`** with the same `value` as your dashboard so the event console and lock screen match.
124
+ - Optionally pass **`theme="light"` \| `"dark"`** on **`EventView`** to override context (useful when embedding without a provider).
125
+
126
+ Exports: `ThemeProvider`, `useTheme`, type `DashboardTheme`.
127
+
128
+ ---
129
+
72
130
  ## Full example — multi-service, multi-layer
73
131
 
74
132
  See `example/Dashboard.tsx` in this package for a complete two-service example with Payment Gateway and Auth Service topologies rotating in a 3D carousel.
@@ -145,13 +203,14 @@ If you already have events data, pass them directly — no API call is made:
145
203
 
146
204
  ### EventView props
147
205
 
148
- | Prop | Type | Default | Description |
149
- | ------------- | ---------------- | ----------------- | --------------------------------------------------------------------------- |
150
- | `apiConfig` | `EventApiConfig` | — | API configuration (base URL, payload, field mapping). Required for API mode |
151
- | `events` | `AIOpsEvent[]` | — | Pre-fetched events. When provided, `apiConfig` is not used |
152
- | `credentials` | `Credentials` | — | Explicit credentials. Falls back to DataProvider context, then modal |
153
- | `pageSize` | `number` | `15` | Number of rows per page |
154
- | `title` | `string` | `"Event Console"` | Title displayed in the component header |
206
+ | Prop | Type | Default | Description |
207
+ | -------------------- | --------------------- | ----------------- | ---------------------------------------------------------------------------- |
208
+ | `apiConfig` | `EventApiConfig` | — | API configuration (base URL, payload, field mapping). Required for API mode |
209
+ | `events` | `AIOpsEvent[]` | — | Pre-fetched events. When provided, `apiConfig` is not used |
210
+ | `credentials` | `Credentials` | — | Explicit credentials. Falls back to DataProvider context, then modal |
211
+ | `columnWidthsCookie` | `string` | `"ev_col_widths"` | Cookie name used to persist user-defined column widths |
212
+ | `title` | `string` | `"Event Console"` | Title displayed in the component header |
213
+ | `theme` | `"light"` \| `"dark"` | — | Optional override; otherwise uses `ThemeProvider` / defaults to dark context |
155
214
 
156
215
  ### EventApiConfig
157
216
 
@@ -210,9 +269,75 @@ const fieldMapping: EventFieldMapping = {
210
269
  - **Severity filter chips** — toggle Critical, Major, Minor with live counts
211
270
  - **Free-text search** — filters across message, host, owner, and incident ID
212
271
  - **Sortable columns** — click any header to cycle ascending / descending / none
213
- - **Pagination** — configurable page size (10, 15, 25, 50)
272
+ - **Infinite scroll** — all matching events render in a single scrollable table
273
+ - **Resizable columns** — drag column edges to resize; widths are persisted in cookies
214
274
  - **Loading / error states** — spinner, error badge, last-refresh timestamp, manual refresh button
215
- - **Holographic theme** — dark translucent panels, glowing severity indicators, scan-line header animation
275
+ - **Theming** — dark holographic styling or **light** mode (panels, table, and credentials modal follow `ThemeProvider` / optional `theme` prop)
276
+
277
+ ---
278
+
279
+ ## Event-to-dashboard bridge
280
+
281
+ When the same `EventApiConfig` is passed to `AIOPsDashboard`, events are fetched in the background and **automatically highlight nodes** in the 3D topology whose hostname matches an open event. No extra code, no manual wiring — just pass the config.
282
+
283
+ ### Quick start
284
+
285
+ ```tsx
286
+ <AIOPsDashboard
287
+ brandName="MY DASHBOARD"
288
+ services={services}
289
+ liveData
290
+ dataEndpoint="https://prometheus.example.com/api/v1/query"
291
+ dataBindings={dataBindings}
292
+ eventApiConfig={eventApiConfig} // ← same config used for EventView
293
+ >
294
+ <MyService name="My Service" />
295
+ </AIOPsDashboard>
296
+ ```
297
+
298
+ ### How it works
299
+
300
+ 1. `AIOPsDashboard` wraps its children in an `EventAlertsProvider` that fetches events in the background (using the same polling interval and credentials as the Event Console).
301
+ 2. Each fetched event has a `host` field (mapped via `fieldMapping`).
302
+ 3. Every `ServiceNode` in the topology checks if its `componentInfo.name` matches any event host (**case-insensitive**).
303
+ 4. If a match is found, the node's severity is updated and a `NodeCallout` appears with the event message.
304
+
305
+ ### Severity mapping
306
+
307
+ | Event severity | Dashboard status | Callout color |
308
+ | -------------- | ---------------- | ------------- |
309
+ | Critical | `"critical"` | Red |
310
+ | Major | `"warning"` | Orange |
311
+ | Minor | `"warning"` | Orange |
312
+
313
+ When multiple events exist on the same host, the highest severity wins and the callout shows `"N events – <message>"`.
314
+
315
+ The event alert is a **third severity source** alongside the node's own `status` prop and metric threshold breaches. The highest severity among all three always wins.
316
+
317
+ ### Node name matching
318
+
319
+ For the bridge to work, the `name` prop on your nodes must match the `host` field in the event data:
320
+
321
+ ```tsx
322
+ // If your events API returns host: "SAP-PRD-APP01", name your node:
323
+ <ServerNode name="SAP-PRD-APP01" ... />
324
+
325
+ // Matching is case-insensitive, so these also work:
326
+ <ServerNode name="sap-prd-app01" ... />
327
+ <ServerNode name="Sap-Prd-App01" ... />
328
+ ```
329
+
330
+ ### Credential resolution
331
+
332
+ The `EventAlertsProvider` inside `AIOPsDashboard` resolves credentials in this order:
333
+
334
+ 1. Parent `DataProvider` context (when `liveData` is enabled — **same credentials, single login**)
335
+ 2. Built-in credentials modal (when `liveData` is not enabled)
336
+
337
+ ### Opt-in behavior
338
+
339
+ - **Without `eventApiConfig`** — no events are fetched, no alerts are injected, zero overhead.
340
+ - **Without `EventView`** — the bridge still works. You can use event-based alerts on the 3D dashboard without ever rendering an `EventView`.
216
341
 
217
342
  ---
218
343
 
@@ -1042,13 +1167,24 @@ type ComponentStatus = "online" | "warning" | "critical" | "offline";
1042
1167
  ## Theme constants
1043
1168
 
1044
1169
  ```ts
1045
- import { STATUS_CFG, HOLO_CYAN, HOLO_BLUE, HOLO_SURFACE, HOLO_GLASS, makeFaceStyles } from "react-dashstream";
1170
+ import {
1171
+ STATUS_CFG,
1172
+ HOLO_CYAN,
1173
+ HOLO_BLUE,
1174
+ HOLO_SURFACE,
1175
+ HOLO_GLASS,
1176
+ makeFaceStyles,
1177
+ ThemeProvider,
1178
+ useTheme,
1179
+ type DashboardTheme,
1180
+ } from "react-dashstream";
1046
1181
  ```
1047
1182
 
1048
1183
  - `STATUS_CFG` — status-to-color lookup table
1049
1184
  - `HOLO_CYAN` / `HOLO_BLUE` — accent colors
1050
1185
  - `HOLO_SURFACE` / `HOLO_GLASS` — CSS gradient backgrounds for 3D faces
1051
1186
  - `makeFaceStyles(W, H, D)` — generates CSS transforms for the 6 faces of a 3D box
1187
+ - `ThemeProvider`, `useTheme`, `DashboardTheme` — light/dark for dashboard UI, dialogs, `EventView`, and credentials modal (see **Theme (light / dark)** above)
1052
1188
 
1053
1189
  ---
1054
1190
 
@@ -1,7 +1,7 @@
1
1
  # React DashStream — AI Coding Assistant Skill
2
2
 
3
3
  > **Package**: `react-dashstream` (npm)
4
- > **Version**: 0.0.4
4
+ > **Version**: 0.2.0
5
5
  > **Peer deps**: `react` ^18 || ^19, `react-dom` ^18 || ^19
6
6
  > **License**: MIT
7
7
 
@@ -35,6 +35,19 @@ import { AIOPsDashboard, Service, ServerNode, DatabaseNode } from "react-dashstr
35
35
 
36
36
  ---
37
37
 
38
+ ## Light / dark theme
39
+
40
+ The dashboard supports **`"light"`** and **`"dark"`** modes.
41
+
42
+ - **`AIOPsDashboard`** defaults to **light** and exposes a header toggle. Use **`backgroundImage`** (dark) and **`lightBackgroundImage`** (light when set).
43
+ - **Controlled mode:** pass **`theme`** and **`onThemeChange`** (`DashboardTheme`) so parent state owns the mode (e.g. sync app chrome + `EventView`).
44
+ - **`ThemeProvider`** (export) + **`useTheme()`** — wrap subtrees so **`EventView`**, **`CredentialsModal`**, **`ServiceDialog`**, and **`ComponentDialog`** match the dashboard. Without a provider, `useTheme()` defaults to **`"dark"`**; prefer wrapping when using `EventView` or the lock screen next to a light dashboard.
45
+ - **`EventView`** accepts optional **`theme`** to override context.
46
+
47
+ When generating multi-view apps (3D + Event Console + credentials), wrap the root in **`ThemeProvider`** with the same value passed to **`AIOPsDashboard`**’s controlled props.
48
+
49
+ ---
50
+
38
51
  ## Architecture
39
52
 
40
53
  ```
@@ -69,6 +82,7 @@ src/
69
82
  ├── AIOPsDashboard.tsx # Dashboard shell + live-data wiring
70
83
  ├── types.ts # Shared topology/drill-down types
71
84
  ├── theme.ts # Status tokens, holo palette, 3D face helpers
85
+ ├── ThemeContext.ts # DashboardTheme, ThemeProvider, useTheme
72
86
  ├── styles.css / index.css # Library + dashboard styles
73
87
  ├── data/
74
88
  │ ├── DataProvider.tsx # Polling engine, context, hooks
@@ -82,11 +96,13 @@ src/
82
96
  │ ├── Internal3DComponents.tsx, HistoricalGraphPanel.tsx
83
97
  │ ├── ComponentDrillView.tsx, SvgConnection.tsx, SyncBridge.tsx
84
98
  │ ├── NodeCallout.tsx, HoloBase.tsx, CarouselContext.ts
85
- │ ├── EventView/ # Operations event console
86
- │ │ ├── EventView.tsx # Main component (filter, sort, paginate, search)
87
- │ │ ├── EventView.css # Holographic table styles
88
- │ │ ├── types.ts # AIOpsEvent, EventSeverity, EventClass, etc.
89
- │ │ ├── mockData.ts # 28 realistic mock events
99
+ │ ├── EventView/ # Operations event console
100
+ │ │ ├── EventView.tsx # Table component (filter, sort, search, infinite scroll)
101
+ │ │ ├── EventView.css # Holographic table styles
102
+ │ │ ├── EventAlertsContext.tsx # EventAlertsProvider + per-host alert map
103
+ │ │ ├── fetchEvents.ts # Shared fetch/mapping logic (used by both EventView & provider)
104
+ │ │ ├── types.ts # AIOpsEvent, EventSeverity, EventApiConfig, etc.
105
+ │ │ ├── mockData.ts # 28 realistic mock events
90
106
  │ │ └── index.ts
91
107
  │ └── index.ts
92
108
  ├── services/
@@ -102,7 +118,7 @@ example/
102
118
 
103
119
  ## Complete data flow reference
104
120
 
105
- There are **9 distinct data paths** in this package. Understanding them is critical for building live dashboards.
121
+ There are **10 distinct data paths** in this package. Understanding them is critical for building live dashboards.
106
122
 
107
123
  ### 1. Data bindings — live props injected into service components
108
124
 
@@ -419,7 +435,52 @@ alert?: {
419
435
  }
420
436
  ```
421
437
 
422
- ### 7. Drill-down internalscustom subComponents
438
+ ### 7. Event-to-dashboard bridgeautomatic node alerts from events API
439
+
440
+ When `eventApiConfig` is passed to `AIOPsDashboard`, events are fetched in the background and nodes whose `name` (case-insensitive) matches an event `host` automatically show alert callouts.
441
+
442
+ ```tsx
443
+ <AIOPsDashboard
444
+ eventApiConfig={eventApiConfig} // same EventApiConfig used for EventView
445
+ liveData
446
+ dataEndpoint="..."
447
+ dataBindings={dataBindings}
448
+ services={services}
449
+ >
450
+ <MyService name="My Service" />
451
+ </AIOPsDashboard>
452
+ ```
453
+
454
+ **How it works internally:**
455
+
456
+ 1. `AIOPsDashboard` wraps children in `EventAlertsProvider` (inside `DataProvider` when `liveData` is set — shares credentials automatically)
457
+ 2. `EventAlertsProvider` fetches events using the same `fetchEvents` + `mapRawEvent` logic as `EventView`
458
+ 3. Events are grouped by **lower-cased hostname** into a `Map<string, EventHostAlert>`
459
+ 4. `ServiceNode` reads from `EventAlertsContext` via `useEventAlertsOptional()`
460
+ 5. If `componentInfo.name.toLowerCase()` matches an entry, event severity is factored into the existing `resolveNodeSeverity` pipeline as a **third severity source** (alongside node status and metric breaches)
461
+ 6. Highest severity among all three sources wins
462
+ 7. `NodeCallout` appears automatically with the event message; multi-event hosts show `"N events – message"`
463
+
464
+ **Severity mapping:**
465
+
466
+ | Event severity | → ComponentStatus |
467
+ | -------------- | ----------------- |
468
+ | Critical | `"critical"` |
469
+ | Major | `"warning"` |
470
+ | Minor | `"warning"` |
471
+
472
+ **Key requirement:** Node `name` props must match event `host` values from the API (case-insensitive). Example: if the API returns `host: "SAP-PRD-APP01"`, the node must be `<ServerNode name="SAP-PRD-APP01" ... />`.
473
+
474
+ **Credential resolution order** (for EventAlertsProvider inside AIOPsDashboard):
475
+
476
+ 1. `DataProvider` context credentials (when `liveData` is enabled — same credentials, one login)
477
+ 2. Built-in `CredentialsModal` (when `liveData` is not enabled)
478
+
479
+ **Opt-in:** Without `eventApiConfig`, no events are fetched — zero overhead.
480
+
481
+ **When generating an `AIOPsDashboard` with event bridge:** Reuse the same `EventApiConfig` object that the user already has for their `EventView`. Just add it as `eventApiConfig` on `AIOPsDashboard`.
482
+
483
+ ### 8. Drill-down internals — custom subComponents
423
484
 
424
485
  When clicking a node, the drill-down shows internal 3D sub-components. Default sub-components are auto-generated per type. Override with `subComponents`:
425
486
 
@@ -455,7 +516,7 @@ interface SubComponentConfig {
455
516
 
456
517
  All compound nodes accept `subComponents`.
457
518
 
458
- ### 8. Graph series — custom sparklines
519
+ ### 9. Graph series — custom sparklines
459
520
 
460
521
  The drill-down's historical panel shows sparkline charts. Default graphs are auto-generated. Override with `graphSeries`:
461
522
 
@@ -483,7 +544,7 @@ interface GraphSeries {
483
544
 
484
545
  All compound nodes accept `graphSeries`.
485
546
 
486
- ### 9. Data hooks — programmatic access
547
+ ### 10. Data hooks — programmatic access
487
548
 
488
549
  Access live data context anywhere inside the dashboard:
489
550
 
@@ -562,17 +623,23 @@ SAP sub-component helpers: `getServerSubComponents`, `getServerGraphSeries`, `ge
562
623
 
563
624
  `DataProvider`, `useAIOpsData`, `useAIOpsDataOptional`, `useQueryResult`, `defaultDataTransform`
564
625
 
626
+ ### Event alerts
627
+
628
+ `EventAlertsProvider`, `useEventAlerts`, `useEventAlertsOptional`
629
+
565
630
  ### Theme
566
631
 
567
632
  `STATUS_CFG`, `HOLO_CYAN` (`"#00e5ff"`), `HOLO_BLUE` (`"#0055cc"`), `HOLO_SURFACE`, `HOLO_GLASS`, `makeFaceStyles(W, H, D)`
568
633
 
634
+ `ThemeProvider`, `useTheme`, type `DashboardTheme` (`"light" | "dark"`)
635
+
569
636
  ### Context hooks
570
637
 
571
638
  `CarouselContext`, `CarouselItemContext`, `useCarouselContext`, `useCarouselItemContext`, `ServiceContext`
572
639
 
573
640
  ### Type exports
574
641
 
575
- `AIOPsDashboardProps`, `ServiceMeta`, `ServiceMetricBinding`, `ComponentStatus`, `StatusCfg`, `FaceName`, `Base3DProps`, `ComponentType`, `ComponentContext`, `ComponentDialogMetric`, `SubComponentConfig`, `GraphSeries`, `SelectedComponent`, `ConnectionConfig`, `ViewState`, `DataBinding`, `DataBindings`, `DataProviderConfig`, `Credentials`, `DataContextValue`, `ServiceProps`, `ServiceContextValue`, `ServiceNodeProps`, `CarouselProps`, `ServerNodeProps`, `DatabaseNodeProps`, `HumanNodeProps`, `WebDispatcherNodeProps`, `MessageServerNodeProps`, `SvgConnectionProps`, `SyncBridgeProps`, `NodeCalloutProps`, `ServiceDialogProps`, `ServiceDialogMetric`, `ServiceDialogAlert`, `ComponentDialogProps`, `ComponentDrillViewProps`, `CarouselContextValue`, `CarouselItemContextValue`, `SAPServiceProps`, `SAPServiceOwnProps`, `SAPServiceConfig`, `ExchangeServiceProps`, `ExchangeServiceOwnProps`, `ExchangeServiceConfig`
642
+ `AIOPsDashboardProps`, `ServiceMeta`, `ServiceMetricBinding`, `DashboardTheme`, `ComponentStatus`, `StatusCfg`, `FaceName`, `Base3DProps`, `ComponentType`, `ComponentContext`, `ComponentDialogMetric`, `SubComponentConfig`, `GraphSeries`, `SelectedComponent`, `ConnectionConfig`, `ViewState`, `DataBinding`, `DataBindings`, `DataProviderConfig`, `Credentials`, `DataContextValue`, `ServiceProps`, `ServiceContextValue`, `ServiceNodeProps`, `CarouselProps`, `ServerNodeProps`, `DatabaseNodeProps`, `HumanNodeProps`, `WebDispatcherNodeProps`, `MessageServerNodeProps`, `SvgConnectionProps`, `SyncBridgeProps`, `NodeCalloutProps`, `ServiceDialogProps`, `ServiceDialogMetric`, `ServiceDialogAlert`, `ComponentDialogProps`, `ComponentDrillViewProps`, `CarouselContextValue`, `CarouselItemContextValue`, `SAPServiceProps`, `SAPServiceOwnProps`, `SAPServiceConfig`, `ExchangeServiceProps`, `ExchangeServiceOwnProps`, `ExchangeServiceConfig`, `EventHostAlert`, `EventAlertsContextValue`, `EventAlertsProviderProps`
576
643
 
577
644
  ---
578
645
 
@@ -580,6 +647,8 @@ SAP sub-component helpers: `getServerSubComponents`, `getServerGraphSeries`, `ge
580
647
 
581
648
  ### AIOPsDashboardProps
582
649
 
650
+ `DashboardTheme` is `"light" | "dark"` (exported).
651
+
583
652
  ```ts
584
653
  interface AIOPsDashboardProps {
585
654
  title?: string;
@@ -587,6 +656,9 @@ interface AIOPsDashboardProps {
587
656
  brandTag?: string; // Default: "3D MONITOR"
588
657
  services?: ServiceMeta[];
589
658
  backgroundImage?: string;
659
+ lightBackgroundImage?: string; // Used in light mode when set
660
+ theme?: DashboardTheme; // Controlled theme (pair with onThemeChange)
661
+ onThemeChange?: (theme: DashboardTheme) => void;
590
662
  logoUrl?: string;
591
663
  carouselSpeed?: number; // Default: 0.006
592
664
  fontFamily?: string;
@@ -596,6 +668,7 @@ interface AIOPsDashboardProps {
596
668
  dataTransform?: (raw: unknown) => unknown;
597
669
  dataRefreshInterval?: number; // Default: 60000
598
670
  serviceDataBindings?: Record<string, ServiceMetricBinding[]>;
671
+ eventApiConfig?: EventApiConfig; // Enable event-to-dashboard bridge
599
672
  children: React.ReactNode;
600
673
  }
601
674
  ```
@@ -871,13 +944,14 @@ const apiConfig: EventApiConfig = {
871
944
 
872
945
  ### Props
873
946
 
874
- | Prop | Type | Default | Notes |
875
- | ------------- | ---------------- | ----------------- | -------------------------------------------------- |
876
- | `apiConfig` | `EventApiConfig` | — | Required for API mode |
877
- | `events` | `AIOpsEvent[]` | — | Pre-fetched events (skips API calls) |
878
- | `credentials` | `Credentials` | — | Explicit creds; falls back to DataProvider → modal |
879
- | `pageSize` | `number` | `15` | Rows per page |
880
- | `title` | `string` | `"Event Console"` | Header title |
947
+ | Prop | Type | Default | Notes |
948
+ | -------------------- | ---------------- | ----------------- | -------------------------------------------------- |
949
+ | `apiConfig` | `EventApiConfig` | — | Required for API mode |
950
+ | `events` | `AIOpsEvent[]` | — | Pre-fetched events (skips API calls) |
951
+ | `credentials` | `Credentials` | — | Explicit creds; falls back to DataProvider → modal |
952
+ | `columnWidthsCookie` | `string` | `"ev_col_widths"` | Cookie name for persisting column widths |
953
+ | `title` | `string` | `"Event Console"` | Header title |
954
+ | `theme` | `DashboardTheme` | — | Optional override; else `ThemeProvider` / default |
881
955
 
882
956
  ### EventApiConfig
883
957
 
@@ -942,9 +1016,10 @@ interface AIOpsEvent {
942
1016
  - Severity filter chips with live counts
943
1017
  - Free-text search across message, host, owner, incident ID
944
1018
  - Sortable columns (click header: asc → desc → none)
945
- - Pagination with selectable page size (10/15/25/50)
1019
+ - Infinite scroll all matching events in a single scrollable table
1020
+ - Resizable columns — drag column edges; widths persist in cookies
946
1021
  - Loading spinner, error badge, last-refresh timestamp
947
- - Holographic theme: scan-line header, glowing rows, severity badges
1022
+ - Light / dark table chrome (via `ThemeProvider` or `theme` prop), scan-line header, severity badges
948
1023
 
949
1024
  ### Generating an EventApiConfig from the AI
950
1025
 
@@ -983,3 +1058,5 @@ Output: `dist/index.js` (ESM), `dist/index.d.ts`, `dist/index.css`.
983
1058
  8. **`dialogMetrics` replaces defaults** — When provided, all default gauges (CPU/Memory/Storage) are removed.
984
1059
  9. **`subComponents` replaces defaults** — When provided, all auto-generated sub-components are removed.
985
1060
  10. **`graphSeries` replaces defaults** — When provided, all auto-generated sparklines are removed.
1061
+ 11. **Event bridge matching** — Node `name` must match event `host` (case-insensitive) for `eventApiConfig` to highlight nodes automatically.
1062
+ 12. **Theme context** — `EventView` and `CredentialsModal` use `useTheme()`. Without `ThemeProvider`, context defaults to `"dark"`. Wrap the app (or use `EventView`’s `theme` prop) so light dashboards are not paired with a dark event console or lock screen.
@@ -1,7 +1,9 @@
1
1
  import { default as React } from 'react';
2
2
  import { DataBindings } from './data/DataProvider';
3
+ import { EventApiConfig } from './components/EventView/types';
3
4
  import { ComponentStatus } from './types';
4
5
  import { ServiceDialogMetric, ServiceDialogAlert } from './components/ServiceDialog';
6
+ import { DashboardTheme } from './ThemeContext';
5
7
  /**
6
8
  * Minimal metadata for each service in the carousel.
7
9
  * Used to populate the {@link ServiceDialog} when a service is selected.
@@ -43,6 +45,12 @@ export interface AIOPsDashboardProps {
43
45
  services?: ServiceMeta[];
44
46
  /** Optional background image URL. */
45
47
  backgroundImage?: string;
48
+ /** Optional background image URL used when the light theme is active. */
49
+ lightBackgroundImage?: string;
50
+ /** Controlled theme (pairs with {@link onThemeChange}). */
51
+ theme?: DashboardTheme;
52
+ /** Fired when the user toggles theme via the header control. */
53
+ onThemeChange?: (theme: DashboardTheme) => void;
46
54
  /** Optional logo/image URL displayed in the center of the carousel orbit. */
47
55
  logoUrl?: string;
48
56
  /** Angular speed of the carousel rotation (radians per frame). Defaults to `0.006`. */
@@ -120,6 +128,18 @@ export interface AIOPsDashboardProps {
120
128
  * ```
121
129
  */
122
130
  serviceDataBindings?: Record<string, ServiceMetricBinding[]>;
131
+ /**
132
+ * Event API configuration.
133
+ *
134
+ * When provided, the dashboard fetches events in the background and
135
+ * automatically highlights nodes whose `componentInfo.name` (case-insensitive)
136
+ * matches an event's `host` field.
137
+ *
138
+ * Uses the same `access-key` / `access-secret-key` credentials as the
139
+ * live-data pipeline. If `liveData` is not enabled, a credentials modal
140
+ * is shown on first load.
141
+ */
142
+ eventApiConfig?: EventApiConfig;
123
143
  /**
124
144
  * Service components to display in the carousel.
125
145
  * Each child should be a service component (e.g. `<SAPService>`)
@@ -1 +1 @@
1
- {"version":3,"file":"AIOPsDashboard.d.ts","sourceRoot":"","sources":["../src/AIOPsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAyC,MAAM,OAAO,CAAC;AAI9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAgC,eAAe,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC;AAOtB;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,MAAM,EAAE,eAAe,CAAC;IACxB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAChC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;IAC1C,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC7D;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAMD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CA4BhE"}
1
+ {"version":3,"file":"AIOPsDashboard.d.ts","sourceRoot":"","sources":["../src/AIOPsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAyC,MAAM,OAAO,CAAC;AAI9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAgC,eAAe,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC;AAOtB;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,MAAM,EAAE,eAAe,CAAC;IACxB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAChC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,gEAAgE;IAChE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;IAC1C,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC7D;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAMD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CAqChE"}
@@ -0,0 +1,4 @@
1
+ export type DashboardTheme = "dark" | "light";
2
+ export declare const ThemeProvider: import('react').Provider<DashboardTheme>;
3
+ export declare function useTheme(): DashboardTheme;
4
+ //# sourceMappingURL=ThemeContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../src/ThemeContext.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAI9C,eAAO,MAAM,aAAa,0CAAwB,CAAC;AAEnD,wBAAgB,QAAQ,IAAI,cAAc,CAEzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentDialog.d.ts","sourceRoot":"","sources":["../../src/components/ComponentDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,UAAU,CAAC;AAIzE,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA2BD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACpC,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAgB,EAChB,WAAiB,GACpB,EAAE,oBAAoB,2CAoVtB"}
1
+ {"version":3,"file":"ComponentDialog.d.ts","sourceRoot":"","sources":["../../src/components/ComponentDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,UAAU,CAAC;AAKzE,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA2BD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACpC,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAgB,EAChB,WAAiB,GACpB,EAAE,oBAAoB,2CAwXtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Database3D.d.ts","sourceRoot":"","sources":["../../src/components/Database3D.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAc,KAAK,eAAe,EAAkB,MAAM,UAAU,CAAC;AAkB5E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAoPD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAC/B,OAAa,EACb,OAAa,EACb,OAAW,EACX,KAAS,EACT,UAAkB,EAClB,MAAiB,EAEjB,QAAa,EAEb,QAAQ,GACX,EAAE,eAAe,2CA6HjB"}
1
+ {"version":3,"file":"Database3D.d.ts","sourceRoot":"","sources":["../../src/components/Database3D.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAc,KAAK,eAAe,EAAkB,MAAM,UAAU,CAAC;AAmB5E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AA0RD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAC/B,OAAa,EACb,OAAa,EACb,OAAW,EACX,KAAS,EACT,UAAkB,EAClB,MAAiB,EAEjB,QAAa,EAEb,QAAQ,GACX,EAAE,eAAe,2CAqIjB"}
@@ -0,0 +1,32 @@
1
+ import { default as React } from 'react';
2
+ import { AIOpsEvent, EventApiConfig } from './types';
3
+ import { ComponentStatus } from '../../theme';
4
+ import { Credentials } from '../../data/DataProvider';
5
+ export interface EventHostAlert {
6
+ /** Highest severity among all events on this host. */
7
+ severity: ComponentStatus;
8
+ /** Message from the highest-severity event. */
9
+ message: string;
10
+ /** Total number of open events on this host. */
11
+ count: number;
12
+ }
13
+ export interface EventAlertsContextValue {
14
+ /** Per-host alert map. Keys are **lower-cased** hostnames. */
15
+ alertsByHost: Map<string, EventHostAlert>;
16
+ /** Raw event list from the last successful fetch. */
17
+ events: AIOpsEvent[];
18
+ isLoading: boolean;
19
+ error: string | null;
20
+ lastRefresh: Date | null;
21
+ }
22
+ /** Access event alerts. Throws when called outside an {@link EventAlertsProvider}. */
23
+ export declare function useEventAlerts(): EventAlertsContextValue;
24
+ /** Non-throwing variant — returns `null` when no provider is present. */
25
+ export declare function useEventAlertsOptional(): EventAlertsContextValue | null;
26
+ export interface EventAlertsProviderProps {
27
+ config: EventApiConfig;
28
+ credentials?: Credentials;
29
+ children: React.ReactNode;
30
+ }
31
+ export declare function EventAlertsProvider({ config, credentials: propCreds, children }: EventAlertsProviderProps): import("react/jsx-runtime").JSX.Element;
32
+ //# sourceMappingURL=EventAlertsContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventAlertsContext.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/EventAlertsContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAuF,MAAM,OAAO,CAAC;AAC5G,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAiB,MAAM,SAAS,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAoB3D,MAAM,WAAW,cAAc;IAC3B,sDAAsD;IACtD,QAAQ,EAAE,eAAe,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACpC,8DAA8D;IAC9D,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,qDAAqD;IACrD,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;CAC5B;AAMD,sFAAsF;AACtF,wBAAgB,cAAc,IAAI,uBAAuB,CAIxD;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,IAAI,uBAAuB,GAAG,IAAI,CAEvE;AA+BD,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2CAkEzG"}
@@ -1,3 +1,3 @@
1
1
  import { EventViewProps } from './types';
2
- export default function EventView({ apiConfig, events: externalEvents, credentials: propCreds, columnWidthsCookie, title, }: EventViewProps): import("react/jsx-runtime").JSX.Element;
2
+ export default function EventView({ apiConfig, events: externalEvents, credentials: propCreds, columnWidthsCookie, title, theme: themeProp, }: EventViewProps): import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=EventView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventView.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/EventView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKR,cAAc,EAGjB,MAAM,SAAS,CAAC;AAIjB,OAAO,iBAAiB,CAAC;AA8UzB,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAC9B,SAAS,EACT,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,SAAS,EACtB,kBAAmC,EACnC,KAAuB,GAC1B,EAAE,cAAc,2CAqRhB"}
1
+ {"version":3,"file":"EventView.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/EventView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKR,cAAc,EAEjB,MAAM,SAAS,CAAC;AAMjB,OAAO,iBAAiB,CAAC;AAwPzB,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAC9B,SAAS,EACT,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,SAAS,EACtB,kBAAmC,EACnC,KAAuB,EACvB,KAAK,EAAE,SAAS,GACnB,EAAE,cAAc,2CA2RhB"}
@@ -0,0 +1,10 @@
1
+ import { AIOpsEvent, EventApiConfig } from './types';
2
+ import { Credentials } from '../../data/DataProvider';
3
+ export declare function parseTimestamp(value: unknown): string;
4
+ export declare function mapRawEvent(raw: Record<string, unknown>, config: EventApiConfig, index: number): AIOpsEvent;
5
+ export declare function fetchEvents(config: EventApiConfig, creds: Credentials, signal?: AbortSignal): Promise<{
6
+ events: AIOpsEvent[];
7
+ totalCount: number;
8
+ severityCounts: Record<string, number>;
9
+ }>;
10
+ //# sourceMappingURL=fetchEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchEvents.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/fetchEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAmC,MAAM,SAAS,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAU3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiBrD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAwB3G;AAED,wBAAgB,WAAW,CACvB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC;IACP,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC,CAwBD"}
@@ -1,3 +1,5 @@
1
1
  export { default as EventView } from './EventView';
2
+ export { EventAlertsProvider, useEventAlerts, useEventAlertsOptional } from './EventAlertsContext';
3
+ export type { EventHostAlert, EventAlertsContextValue, EventAlertsProviderProps } from './EventAlertsContext';
2
4
  export type { AIOpsEvent, EventSeverity, EventClass, SMSStatus, MonitoringCategory, SortDirection, SortableColumn, EventFieldMapping, EventSeverityMap, EventApiConfig, EventViewProps, } from './types';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACjB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnG,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC9G,YAAY,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACjB,MAAM,SAAS,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Credentials } from '../../data/DataProvider';
2
+ import { DashboardTheme } from '../../ThemeContext';
2
3
  export type EventSeverity = "Minor" | "Major" | "Critical";
3
4
  export type EventClass = "Self-monitoring" | "SCOM" | "Situation" | "Alarm" | "Event";
4
5
  export type SMSStatus = "" | "SUCCESS" | "FAILED";
@@ -122,5 +123,7 @@ export interface EventViewProps {
122
123
  columnWidthsCookie?: string;
123
124
  /** Title in the component header. @default "Event Console" */
124
125
  title?: string;
126
+ /** Visual theme. When omitted, uses `ThemeContext` from the nearest provider. */
127
+ theme?: DashboardTheme;
125
128
  }
126
129
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAEtF,MAAM,MAAM,SAAS,GAAG,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,cAAc,CAAC;AAEzD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,UAAU,EAAE,MAAM,CAAC,CAAC;AAEjE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,YAAY,EAAE,iBAAiB,CAAC;IAEhC;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAE/B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAEtF,MAAM,MAAM,SAAS,GAAG,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,cAAc,CAAC;AAEzD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,UAAU,EAAE,MAAM,CAAC,CAAC;AAEjE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,YAAY,EAAE,iBAAiB,CAAC;IAEhC;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAE/B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iFAAiF;IACjF,KAAK,CAAC,EAAE,cAAc,CAAC;CAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeCallout.d.ts","sourceRoot":"","sources":["../../src/components/NodeCallout.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,MAAM,WAAW,gBAAgB;IAC7B,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,SAAS,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC5C,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAChC,EAAE,EACF,EAAE,EACF,MAAM,EACN,KAAK,EACL,GAAG,EACH,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAe,EACf,WAAW,GACd,EAAE,gBAAgB,kDAkIlB"}
1
+ {"version":3,"file":"NodeCallout.d.ts","sourceRoot":"","sources":["../../src/components/NodeCallout.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIhD,MAAM,WAAW,gBAAgB;IAC7B,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,SAAS,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC5C,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAChC,EAAE,EACF,EAAE,EACF,MAAM,EACN,KAAK,EACL,GAAG,EACH,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAe,EACf,WAAW,GACd,EAAE,gBAAgB,kDAkJlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Server3D.d.ts","sourceRoot":"","sources":["../../src/components/Server3D.tsx"],"names":[],"mappings":"AAOA,OAAO,EAKH,KAAK,eAAe,EAEvB,MAAM,UAAU,CAAC;AASlB,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC1B,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAwqBD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC7B,OAAa,EACb,OAAY,EACZ,OAAW,EACX,KAAS,EACT,UAAkB,EAClB,MAAiB,EACjB,IAAgB,EAChB,OAAY,EACZ,OAAY,EACZ,UAAqB,EACrB,QAAQ,GACX,EAAE,aAAa,2CA6If"}
1
+ {"version":3,"file":"Server3D.d.ts","sourceRoot":"","sources":["../../src/components/Server3D.tsx"],"names":[],"mappings":"AAOA,OAAO,EAKH,KAAK,eAAe,EAEvB,MAAM,UAAU,CAAC;AAclB,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC1B,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAklCD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC7B,OAAa,EACb,OAAY,EACZ,OAAW,EACX,KAAS,EACT,UAAkB,EAClB,MAAiB,EACjB,IAAgB,EAChB,OAAY,EACZ,OAAY,EACZ,UAAqB,EACrB,QAAQ,GACX,EAAE,aAAa,2CAmKf"}
@@ -1 +1 @@
1
- {"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/components/Service.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/components/Service.tsx"],"names":[],"mappings":"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"}