react-aiops 0.0.1 → 0.0.3

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 ADDED
@@ -0,0 +1,270 @@
1
+ # react-aiops
2
+
3
+ Holographic 3D infrastructure monitoring dashboard for React. Pure CSS-3D components — no WebGL, no canvas, no dependencies beyond React.
4
+
5
+ ```
6
+ npm install react-aiops
7
+ ```
8
+
9
+ ```tsx
10
+ import "react-aiops/dist/index.css";
11
+ ```
12
+
13
+ ---
14
+
15
+ ## Quickstart (absolute minimum)
16
+
17
+ A single server on screen in 5 lines:
18
+
19
+ ```tsx
20
+ import "react-aiops/dist/index.css";
21
+ import { Server3D } from "react-aiops";
22
+
23
+ export default function App() {
24
+ return <Server3D status="online" cpuLoad={42} memLoad={60} />;
25
+ }
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Minimal dashboard
31
+
32
+ A full rotating carousel with one service — no config objects, no state management:
33
+
34
+ ```tsx
35
+ import "react-aiops/dist/index.css";
36
+ import { AIOPsDashboard, SAPService } from "react-aiops";
37
+
38
+ export default function App() {
39
+ return (
40
+ <AIOPsDashboard>
41
+ <SAPService
42
+ config={{
43
+ name: "SAP HR",
44
+ wdStatus: "online",
45
+ msStatus: "online",
46
+ srv1Status: "online",
47
+ srv2Status: "online",
48
+ srv3Status: "online",
49
+ pdbStatus: "online",
50
+ sdbStatus: "online",
51
+ dbSync: true,
52
+ }}
53
+ />
54
+ </AIOPsDashboard>
55
+ );
56
+ }
57
+ ```
58
+
59
+ Click a service to expand its topology. Click a component to drill into its internals.
60
+
61
+ ---
62
+
63
+ ## Full-featured dashboard
64
+
65
+ Multiple services, mixed statuses, service dialog metadata:
66
+
67
+ ```tsx
68
+ import "react-aiops/dist/index.css";
69
+ import {
70
+ AIOPsDashboard,
71
+ SAPService,
72
+ ExchangeService,
73
+ computeSAPServiceStatus,
74
+ computeSAPDialogMetrics,
75
+ computeSAPDialogAlerts,
76
+ computeExchangeServiceStatus,
77
+ computeExchangeDialogMetrics,
78
+ computeExchangeDialogAlerts,
79
+ } from "react-aiops";
80
+ import type { SAPServiceConfig, ExchangeServiceConfig, ServiceMeta } from "react-aiops";
81
+
82
+ const sapHR: SAPServiceConfig = {
83
+ name: "SAP HR",
84
+ wdStatus: "online",
85
+ msStatus: "online",
86
+ srv1Status: "online",
87
+ srv2Status: "warning",
88
+ srv3Status: "online",
89
+ pdbStatus: "online",
90
+ sdbStatus: "online",
91
+ dbSync: true,
92
+ };
93
+
94
+ const exchange: ExchangeServiceConfig = {
95
+ name: "Exchange",
96
+ dispStatus: "critical",
97
+ srv1Status: "online",
98
+ srv2Status: "online",
99
+ srv3Status: "offline",
100
+ pdbStatus: "online",
101
+ sdbStatus: "warning",
102
+ dbSync: false,
103
+ };
104
+
105
+ const services: ServiceMeta[] = [
106
+ {
107
+ name: sapHR.name,
108
+ status: computeSAPServiceStatus(sapHR),
109
+ dbSync: sapHR.dbSync,
110
+ metrics: computeSAPDialogMetrics(sapHR),
111
+ alerts: computeSAPDialogAlerts(sapHR),
112
+ },
113
+ {
114
+ name: exchange.name,
115
+ status: computeExchangeServiceStatus(exchange),
116
+ dbSync: exchange.dbSync,
117
+ metrics: computeExchangeDialogMetrics(exchange),
118
+ alerts: computeExchangeDialogAlerts(exchange),
119
+ },
120
+ ];
121
+
122
+ export default function App() {
123
+ return (
124
+ <AIOPsDashboard services={services} brandName="MY AIOPS" brandTag="LIVE">
125
+ <SAPService config={sapHR} />
126
+ <ExchangeService config={exchange} />
127
+ </AIOPsDashboard>
128
+ );
129
+ }
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Components
135
+
136
+ ### Layout
137
+
138
+ | Component | Description |
139
+ |---|---|
140
+ | `AIOPsDashboard` | Full dashboard shell with header, carousel, and state management. Drop services in as children. |
141
+ | `Carousel` | Low-level carousel container. Use this if you want to manage view state yourself. |
142
+ | `Service` | Service container — positions child nodes on a 3D orbit and draws connection lines. |
143
+ | `ServiceNode` | Positions a 3D component in the topology with floating animation, scan line, and labels. |
144
+
145
+ ### 3D Hardware Models
146
+
147
+ | Component | Props | Description |
148
+ |---|---|---|
149
+ | `Server3D` | `status`, `cpuLoad`, `memLoad`, `name` | Vertical server tower with LEDs, drive bays, CPU/memory bars. |
150
+ | `Database3D` | `status`, `capacity`, `name` | Three-platter database cylinder with status LEDs and capacity bar. |
151
+ | `WebDispatcher3D` | `status`, `traffic`, `activeRoutes`, `name` | Flat network appliance with 8 port LEDs and traffic metrics. |
152
+ | `MessageServer3D` | `status`, `queueDepth`, `msgsPerSec`, `instances`, `name` | Message server with ABAP instance LEDs and queue metrics. |
153
+ | `Human3D` | `status`, `scale` | SVG wireframe person icon for user/actor nodes. |
154
+
155
+ All 3D components share these optional props: `rotateX`, `rotateY`, `rotateZ`, `scale`, `autoRotate`.
156
+
157
+ ### Status Indicators
158
+
159
+ | Component | Props | Description |
160
+ |---|---|---|
161
+ | `SyncBridge` | `synced`, `latencyMs` | Database replication status bridge (synced/lag with latency). |
162
+ | `NodeCallout` | `status`, `title`, `msg`, `ex`, `ey`, `offsetX`, `offsetY` | Alert callout with leader line for unhealthy nodes. |
163
+ | `HoloBase` | `size`, `color`, `widthRatio` | Neon holographic base platform. |
164
+ | `SvgConnection` | `x1`, `y1`, `x2`, `y2`, `show` | Animated dashed SVG connection line. |
165
+
166
+ ### Dialogs
167
+
168
+ | Component | Description |
169
+ |---|---|
170
+ | `ServiceDialog` | Service-level statistics panel (auto-rendered by Carousel). |
171
+ | `ComponentDialog` | Component drill-down with sub-component internals and sparkline graphs. |
172
+
173
+ ### Drill-down Internals
174
+
175
+ These render inside `ComponentDialog` when a component is drilled into:
176
+
177
+ `CPU3D`, `Memory3D`, `DriveBay3D`, `NetworkBlock3D`, `ThreadPool3D`, `Platter3D`, `Port3D`, `HistoricalGraphPanel`, `ComponentDrillView`
178
+
179
+ ### Pre-built Services
180
+
181
+ | Component | Topology |
182
+ |---|---|
183
+ | `SAPService` | Users → Web Dispatcher + Message Server → 3 App Servers → Primary DB + Standby DB |
184
+ | `ExchangeService` | Users → Dispatcher → 3 App Servers → Primary DB + Standby DB |
185
+
186
+ ---
187
+
188
+ ## Building a custom service
189
+
190
+ Compose library primitives to create any topology:
191
+
192
+ ```tsx
193
+ import {
194
+ Service,
195
+ ServiceNode,
196
+ Server3D,
197
+ Database3D,
198
+ NodeCallout,
199
+ SyncBridge,
200
+ } from "react-aiops";
201
+
202
+ function MyService() {
203
+ return (
204
+ <Service
205
+ name="My Service"
206
+ status="online"
207
+ connections={[
208
+ { from: [330, 200], to: [200, 350], visibleAtPhase: 3 },
209
+ { from: [330, 200], to: [460, 350], visibleAtPhase: 3 },
210
+ ]}
211
+ >
212
+ <ServiceNode
213
+ ex={200} ey={350}
214
+ compactOffset={{ x: -30, y: -20 }}
215
+ zIndex={8}
216
+ label="SRV-01" subLabel="APP SERVER"
217
+ componentInfo={{ type: "server", name: "SRV-01", status: "online" }}
218
+ >
219
+ <Server3D status="online" cpuLoad={42} memLoad={60} />
220
+ </ServiceNode>
221
+
222
+ <ServiceNode
223
+ ex={460} ey={350}
224
+ compactOffset={{ x: 30, y: -20 }}
225
+ zIndex={7}
226
+ label="DB-01" subLabel="PRIMARY"
227
+ componentInfo={{ type: "database", name: "DB-01", status: "online" }}
228
+ >
229
+ <Database3D status="online" capacity={55} />
230
+ </ServiceNode>
231
+ </Service>
232
+ );
233
+ }
234
+ ```
235
+
236
+ ---
237
+
238
+ ## Status types
239
+
240
+ ```ts
241
+ type ComponentStatus = "online" | "warning" | "critical" | "offline";
242
+ ```
243
+
244
+ Each status maps to a color/glow pair via `STATUS_CFG`:
245
+
246
+ | Status | Color | Glow |
247
+ |---|---|---|
248
+ | `online` | `#00e5ff` | cyan |
249
+ | `warning` | `#ff8c00` | orange |
250
+ | `critical` | `#ff2255` | red |
251
+ | `offline` | `#1e3a5a` | dim blue |
252
+
253
+ ---
254
+
255
+ ## Theme constants
256
+
257
+ ```ts
258
+ import { STATUS_CFG, HOLO_CYAN, HOLO_BLUE, HOLO_SURFACE, HOLO_GLASS, makeFaceStyles } from "react-aiops";
259
+ ```
260
+
261
+ - `STATUS_CFG` — status-to-color lookup
262
+ - `HOLO_CYAN` / `HOLO_BLUE` — accent colors
263
+ - `HOLO_SURFACE` / `HOLO_GLASS` — CSS gradient backgrounds
264
+ - `makeFaceStyles(W, H, D)` — generates CSS transforms for 6 faces of a 3D box
265
+
266
+ ---
267
+
268
+ ## License
269
+
270
+ MIT
@@ -29,6 +29,8 @@ export interface AIOPsDashboardProps {
29
29
  * Each entry should match a child service component by `name`.
30
30
  */
31
31
  services?: ServiceMeta[];
32
+ /** Optional background image URL. */
33
+ backgroundImage?: string;
32
34
  /**
33
35
  * Service components to display in the carousel.
34
36
  * Each child should be a service component (e.g. `<SAPService>`)
@@ -42,5 +44,5 @@ export interface AIOPsDashboardProps {
42
44
  * Renders a branded header, a 3D carousel of services, and a
43
45
  * controls footer. All interaction state is self-contained.
44
46
  */
45
- export default function AIOPsDashboard({ brandName, brandTag, services, children, }: AIOPsDashboardProps): import("react/jsx-runtime").JSX.Element;
47
+ export default function AIOPsDashboard({ brandName, brandTag, services, backgroundImage, children, }: AIOPsDashboardProps): import("react/jsx-runtime").JSX.Element;
46
48
  //# sourceMappingURL=AIOPsDashboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AIOPsDashboard.d.ts","sourceRoot":"","sources":["../src/AIOPsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAgC,eAAe,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAO1F;;;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,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;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAMD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACnC,SAA0B,EAC1B,QAAuB,EACvB,QAAa,EACb,QAAQ,GACX,EAAE,mBAAmB,2CAiJrB"}
1
+ {"version":3,"file":"AIOPsDashboard.d.ts","sourceRoot":"","sources":["../src/AIOPsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAgC,eAAe,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAM1F;;;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,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;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAMD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACnC,SAA0B,EAC1B,QAAuB,EACvB,QAAa,EACb,eAAe,EACf,QAAQ,GACX,EAAE,mBAAmB,2CAkJrB"}
@@ -4,6 +4,8 @@ import { ServiceDialogMetric, ServiceDialogAlert } from './ServiceDialog';
4
4
  export interface CarouselProps {
5
5
  /** Service components to display in the carousel. Each must be a `<Service>`. */
6
6
  children: React.ReactNode;
7
+ /** Optional logo URL displayed in the center of the carousel. */
8
+ logoUrl?: string;
7
9
  /** Current view state of the carousel. */
8
10
  viewState: ViewState;
9
11
  /** Current expansion animation phase (0–6). */
@@ -56,5 +58,5 @@ export interface CarouselProps {
56
58
  * Positions child services on a 3D elliptical orbit, manages the
57
59
  * rotation animation, and renders overlay dialogs.
58
60
  */
59
- export default function Carousel({ children, viewState, animPhase, selectedSystem, selectedComponent, drillAnimPhase, rotateY, autoRotateComponents, componentScale, drillZoom, autoRotateCarousel, carouselSpeed, width, height, onSelectSystem, onBackgroundClick: _onBackgroundClick, onComponentClick, onCloseDrill, selectedSystemStatus, selectedSystemDbSync, selectedSystemMetrics, selectedSystemAlerts, }: CarouselProps): import("react/jsx-runtime").JSX.Element;
61
+ export default function Carousel({ children, logoUrl, viewState, animPhase, selectedSystem, selectedComponent, drillAnimPhase, rotateY, autoRotateComponents, componentScale, drillZoom, autoRotateCarousel, carouselSpeed, width, height, onSelectSystem, onBackgroundClick: _onBackgroundClick, onComponentClick, onCloseDrill, selectedSystemStatus, selectedSystemDbSync, selectedSystemMetrics, selectedSystemAlerts, }: CarouselProps): import("react/jsx-runtime").JSX.Element;
60
62
  //# sourceMappingURL=Carousel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../src/components/Carousel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI/E,MAAM,WAAW,aAAa;IAC1B,iFAAiF;IACjF,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAI1B,0CAA0C;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8DAA8D;IAC9D,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IAIvB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IAIvB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,wDAAwD;IACxD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,8DAA8D;IAC9D,gBAAgB,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,+DAA+D;IAC/D,YAAY,EAAE,MAAM,IAAI,CAAC;IAIzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,eAAe,CAAC;IACvC,+EAA+E;IAC/E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,sDAAsD;IACtD,qBAAqB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC9C,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC/C;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,OAAY,EACZ,oBAA2B,EAC3B,cAAqB,EACrB,SAAe,EACf,kBAAyB,EACzB,aAAqB,EACrB,KAAW,EACX,MAAY,EACZ,cAAc,EACd,iBAAiB,EAAE,kBAAkB,EACrC,gBAAgB,EAChB,YAAY,EACZ,oBAA+B,EAC/B,oBAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACvB,EAAE,aAAa,2CAmGf"}
1
+ {"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../src/components/Carousel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC1B,iFAAiF;IACjF,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,0CAA0C;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8DAA8D;IAC9D,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IAIvB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IAIvB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,wDAAwD;IACxD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,8DAA8D;IAC9D,gBAAgB,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,+DAA+D;IAC/D,YAAY,EAAE,MAAM,IAAI,CAAC;IAIzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,eAAe,CAAC;IACvC,+EAA+E;IAC/E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,sDAAsD;IACtD,qBAAqB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC9C,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC/C;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC7B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,OAAY,EACZ,oBAA2B,EAC3B,cAAqB,EACrB,SAAe,EACf,kBAAyB,EACzB,aAAqB,EACrB,KAAW,EACX,MAAY,EACZ,cAAc,EACd,iBAAiB,EAAE,kBAAkB,EACrC,gBAAgB,EAChB,YAAY,EACZ,oBAA+B,EAC/B,oBAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACvB,EAAE,aAAa,2CAmGf"}
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ @keyframes holo-ring-pulse{0%,to{transform:scaleY(.22) scale(1)}50%{transform:scaleY(.22) scale(.965)}}@keyframes holo-beam-pulse{0%{opacity:.75;filter:brightness(1)}40%{opacity:1;filter:brightness(1.35)}70%{opacity:.55;filter:brightness(.7)}to{opacity:.75;filter:brightness(1)}}@keyframes holo-scan{0%{top:-3px;opacity:0}6%{opacity:1}90%{opacity:.6}to{top:110%;opacity:0}}@keyframes holo-led-blink{0%,88%,to{opacity:1}93%{opacity:.15}}@keyframes holo-float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes holo-base-spin{0%{transform:translate(-50%) scaleY(.22) rotate(0)}to{transform:translate(-50%) scaleY(.22) rotate(360deg)}}@keyframes component-drill-pulse{0%,to{box-shadow:0 0 #f253}50%{box-shadow:0 0 12px 2px #ff225526}}@keyframes comp-dialog-border-glow{0%,to{border-color:var(--dialog-color, #00e5ff)33;box-shadow:0 0 30px var(--dialog-color, #00e5ff) 18,0 12px 60px #000000bf,inset 0 0 40px #0006}50%{border-color:var(--dialog-color, #00e5ff)66;box-shadow:0 0 50px var(--dialog-color, #00e5ff) 30,0 12px 60px #000000bf,inset 0 0 40px #0006}}@keyframes comp-dialog-icon-pop{0%{opacity:0;transform:scale(.3) translateY(14px)}60%{opacity:1;transform:scale(1.08) translateY(-3px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes comp-dialog-metric-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.app{display:grid;grid-template-rows:52px 1fr;width:100%;height:100vh;overflow:hidden;position:relative;background:#020810;color:#c8dff0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}.app-header{display:flex;align-items:center;gap:18px;padding:0 24px;border-bottom:1px solid rgba(0,229,255,.08);background:#020810eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:relative;z-index:10}.hdr-brand{display:flex;align-items:center;gap:8px}.brand-pulse{width:7px;height:7px;border-radius:50%;background:#00e5ff;box-shadow:0 0 8px #00e5ff,0 0 18px #00e5ff80;animation:holo-led-blink 2s linear infinite}.brand-text{font-size:10px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:#00e5ff;opacity:.7}.hdr-right{display:flex;align-items:center;gap:8px;margin-left:auto}.hdr-tag{font-size:9px;letter-spacing:.2em;color:#00e5ff59;border:1px solid rgba(0,229,255,.15);padding:3px 8px;border-radius:2px}.scene{display:flex;flex-direction:column;align-items:center;overflow:hidden;padding:0;position:relative;z-index:1;gap:0;background:transparent}.float-node{display:flex;flex-direction:column;align-items:center;position:relative}.float-node--interactive:before{content:"";position:absolute;inset:-40px -35px -15px}.float-body{position:relative;animation:holo-float 4s ease-in-out infinite}.scan-line{position:absolute;top:0;left:0;right:0;height:1.5px;animation:holo-scan 3.5s linear infinite;pointer-events:none;z-index:10}.node-tag{font-size:24px;letter-spacing:.2em;text-transform:uppercase;font-family:Courier New,monospace;margin-top:14px;text-align:center;text-shadow:0 0 6px currentColor}.node-subtag{font-size:11px;letter-spacing:.15em;text-transform:uppercase;font-family:Courier New,monospace;margin-top:4px;text-align:center}.sync-bridge{display:flex;flex-direction:column;align-items:center;justify-content:center;width:110px;gap:6px;flex-shrink:0;font-family:Courier New,monospace}.sync-arrows{display:flex;align-items:center;width:100%;gap:4px}.sync-line{flex:1;height:2px;border-radius:1px;animation:holo-beam-pulse 1.8s ease-in-out infinite}.sync-status{font-size:8px;letter-spacing:.18em;text-transform:uppercase;text-align:center}.sync-latency{font-size:6.5px;letter-spacing:.1em;text-align:center;font-family:Courier New,monospace}.base-ring{position:absolute;top:50%;left:50%;border-style:solid;border-radius:50%;transform:translate(-50%,-50%) scaleY(.22);animation:holo-ring-pulse 2.5s ease-in-out infinite}.base-hotspot{position:absolute;top:50%;left:50%;width:8%;height:8%;border-radius:50%;transform:translate(-50%,-50%) scaleY(.22);background:radial-gradient(circle,#ffffff 0%,#ff8c00 35%,transparent 70%);box-shadow:0 0 20px #ff8c00,0 0 40px #ff8c0080}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export { default as AIOPsDashboard } from './AIOPsDashboard';
2
+ export type { AIOPsDashboardProps, ServiceMeta } from './AIOPsDashboard';
1
3
  export * from './components';
2
4
  export * from './services';
3
5
  export * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,OAAO,EACH,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,GACjB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzE,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,OAAO,EACH,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,GACjB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}