react-dashstream 0.0.4 → 0.0.6

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 CHANGED
@@ -287,7 +287,7 @@ All 3D models accept: `rotateX`, `rotateY`, `rotateZ`, `scale`, `autoRotate`.
287
287
  | --------------- | ------------------------------------ | ---------------------------------------------------------------- |
288
288
  | `SyncBridge` | `synced`, `latencyMs` | Database replication bridge between primary and standby. |
289
289
  | `NodeCallout` | `status`, `title`, `msg`, `ex`, `ey` | Alert callout with leader line (auto-rendered by `ServiceNode`). |
290
- | `HoloBase` | `size`, `color`, `widthRatio` | Neon holographic base platform (auto-rendered by `Service`). |
290
+ | `HoloBase` | `size`, `color`, `widthRatio` | Neon holographic base platform (auto-rendered by `Service`). Position via `baseConfig` on `Service`. |
291
291
  | `SvgConnection` | `x1`, `y1`, `x2`, `y2`, `show` | Animated dashed SVG connection line. |
292
292
 
293
293
  ### Dialogs
@@ -321,6 +321,28 @@ Compose compound nodes inside a `Service` container. Each node needs:
321
321
  - **`zIndex`** — Stacking order (higher tiers get higher values).
322
322
  - **`visibleAtPhase`** — When the node fades in during expansion (0–6). Use `2` for top-tier nodes, `3` for middle, etc.
323
323
 
324
+ ### HoloBase position
325
+
326
+ The holographic base platform rendered by each `Service` can be repositioned via `baseConfig`:
327
+
328
+ ```tsx
329
+ <Service
330
+ name="My Service"
331
+ baseConfig={{
332
+ size: 90,
333
+ color: "#00e5ff",
334
+ widthRatio: 3,
335
+ expandedX: 330, // absolute X in expanded view (default: container centre)
336
+ expandedY: 500, // absolute Y in expanded view (default: 570)
337
+ compactOffsetX: 0, // horizontal nudge in compact carousel view
338
+ compactOffsetY: -20, // vertical nudge in compact carousel view
339
+ }}
340
+ ...
341
+ >
342
+ ```
343
+
344
+ ### Connection lines
345
+
324
346
  Define connection lines between nodes via the `connections` prop on `Service`:
325
347
 
326
348
  ```tsx
@@ -70,11 +70,26 @@ export interface ServiceProps {
70
70
  /**
71
71
  * Configuration for the holographic base platform.
72
72
  * Defaults to `{ size: 90, color: "#00e5ff", widthRatio: 3 }`.
73
+ *
74
+ * Use `expandedX` / `expandedY` to reposition the base in the expanded
75
+ * (topology) view. Values are absolute pixel coordinates; the base is
76
+ * centred on this point. Defaults: centred horizontally, `y = 570`.
77
+ *
78
+ * Use `compactOffsetX` / `compactOffsetY` to nudge the base relative to
79
+ * its default compact-carousel position. Defaults: `0`.
73
80
  */
74
81
  baseConfig?: {
75
82
  size?: number;
76
83
  color?: string;
77
84
  widthRatio?: number;
85
+ /** Absolute X position in the expanded view (default: container centre). */
86
+ expandedX?: number;
87
+ /** Absolute Y position in the expanded view (default: 570). */
88
+ expandedY?: number;
89
+ /** Horizontal offset in the compact carousel view (default: 0). */
90
+ compactOffsetX?: number;
91
+ /** Vertical offset in the compact carousel view (default: 0). */
92
+ compactOffsetY?: number;
78
93
  };
79
94
  /** Child nodes (ServiceNode, NodeCallout, bare ServiceNode with SyncBridge, etc.). */
80
95
  children: React.ReactNode;
@@ -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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"}
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- @keyframes status-change-pulse{0%{opacity:0;transform:scale(.6)}10%{opacity:1;transform:scale(1.15)}25%{opacity:.1;transform:scale(.95)}40%{opacity:.9;transform:scale(1.1)}60%{opacity:.15;transform:scale(1)}to{opacity:0;transform:scale(1.3)}}.app{display:grid;grid-template-rows:52px 1fr;width:100%;height:100vh;overflow:hidden;position:relative;background:#020810;color:#c8dff0;font-family:var(--aiops-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:var(--aiops-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:var(--aiops-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:var(--aiops-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:var(--aiops-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}@keyframes refresh-error-pulse{0%,to{opacity:1;box-shadow:0 0 6px #f25,0 0 14px #f256}50%{opacity:.5;box-shadow:0 0 3px #f25}}.hdr-refresh-error{display:flex;align-items:center;gap:7px;padding:3px 10px;border:1px solid rgba(255,34,85,.35);border-radius:3px;background:#ff22550f;animation:refresh-error-pulse 2s ease-in-out infinite}.refresh-error-dot{width:6px;height:6px;border-radius:50%;background:#f25;box-shadow:0 0 6px #f25;flex-shrink:0}.refresh-error-text{font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:#f25;white-space:nowrap;font-family:var(--aiops-font-family, "Courier New", monospace)}@keyframes cred-panel-glow{0%,to{border-color:#00e5ff2e;box-shadow:0 0 40px #00e5ff14,0 20px 80px #000c,inset 0 0 60px #00000080}50%{border-color:#00e5ff59;box-shadow:0 0 60px #00e5ff26,0 20px 80px #000c,inset 0 0 60px #00000080}}@keyframes cred-fade-in{0%{opacity:0}to{opacity:1}}@keyframes cred-panel-enter{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes cred-icon-pop{0%{opacity:0;transform:scale(.4) translateY(10px)}60%{opacity:1;transform:scale(1.1) translateY(-3px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes cred-scanline-sweep{0%{top:-2px;opacity:0}5%{opacity:.7}90%{opacity:.4}to{top:100%;opacity:0}}@keyframes cred-btn-shine{0%{left:-100%}to{left:200%}}.cred-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#020810e0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);animation:cred-fade-in .4s ease-out}.cred-panel{position:relative;width:380px;padding:40px 36px 32px;border:1px solid rgba(0,229,255,.18);border-radius:6px;background:linear-gradient(170deg,#061226f7,#030a16fa);animation:cred-panel-enter .5s ease-out,cred-panel-glow 4s ease-in-out infinite;overflow:hidden}.cred-scanline{position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(0,229,255,.5) 50%,transparent 100%);animation:cred-scanline-sweep 4s linear infinite;pointer-events:none;z-index:2}.cred-corner{position:absolute;width:18px;height:18px;pointer-events:none;z-index:3}.cred-corner:before,.cred-corner:after{content:"";position:absolute;background:#00e5ff73}.cred-corner:before{top:0;left:0;width:18px;height:1px}.cred-corner:after{top:0;left:0;width:1px;height:18px}.cred-corner--tl{top:-1px;left:-1px}.cred-corner--tr{top:-1px;right:-1px;transform:scaleX(-1)}.cred-corner--bl{bottom:-1px;left:-1px;transform:scaleY(-1)}.cred-corner--br{bottom:-1px;right:-1px;transform:scale(-1)}.cred-icon{display:flex;justify-content:center;margin-bottom:18px;animation:cred-icon-pop .6s ease-out .15s both}.cred-title{text-align:center;font-size:13px;font-weight:700;letter-spacing:.28em;text-transform:uppercase;color:#00e5ff;margin-bottom:6px}.cred-subtitle{text-align:center;font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:#00e5ff59;margin-bottom:28px;font-family:var(--aiops-font-family, "Courier New", monospace)}.cred-field{margin-bottom:18px}.cred-label{display:block;font-size:8px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:#00e5ff8c;margin-bottom:6px;font-family:var(--aiops-font-family, "Courier New", monospace)}.cred-input{width:100%;padding:10px 14px;border:1px solid rgba(0,229,255,.15);border-radius:4px;background:#000a19b3;color:#c8dff0;font-size:13px;font-family:var(--aiops-font-family, "Courier New", monospace);letter-spacing:.04em;outline:none;transition:border-color .25s,box-shadow .25s;box-sizing:border-box}.cred-input::placeholder{color:#c8dff02e;letter-spacing:.06em}.cred-btn{position:relative;display:block;width:100%;margin-top:26px;padding:12px 0;border:1px solid rgba(0,229,255,.3);border-radius:4px;background:#00e5ff0f;color:#00e5ff;font-size:11px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;font-family:inherit;transition:background .25s,box-shadow .25s,opacity .25s;overflow:hidden}.cred-btn-glow{position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(0,229,255,.08),transparent);pointer-events:none;animation:cred-btn-shine 3s ease-in-out infinite}.cred-footer{margin-top:20px;text-align:center;font-size:7px;letter-spacing:.2em;text-transform:uppercase;color:#c8dff02e;font-family:var(--aiops-font-family, "Courier New", monospace)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--aiops-font-family, "Segoe UI", system-ui, -apple-system, sans-serif);background-color:#020810;color:#c8dff0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#1e508c66;border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#22d3ee4d}*{scrollbar-width:thin;scrollbar-color:rgba(30,80,140,.4) transparent}@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)}}
1
+ @keyframes status-change-pulse{0%{opacity:0;transform:scale(.6)}10%{opacity:1;transform:scale(1.15)}25%{opacity:.1;transform:scale(.95)}40%{opacity:.9;transform:scale(1.1)}60%{opacity:.15;transform:scale(1)}to{opacity:0;transform:scale(1.3)}}.app{display:grid;grid-template-rows:52px 1fr;width:100%;height:100vh;overflow:hidden;position:relative;background:#020810;color:#c8dff0;font-family:var(--aiops-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:var(--aiops-font-family, "Courier New", monospace);margin-top:24px;text-align:center;text-shadow:0 0 6px currentColor}.node-subtag{font-size:11px;letter-spacing:.15em;text-transform:uppercase;font-family:var(--aiops-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:var(--aiops-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:var(--aiops-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}@keyframes refresh-error-pulse{0%,to{opacity:1;box-shadow:0 0 6px #f25,0 0 14px #f256}50%{opacity:.5;box-shadow:0 0 3px #f25}}.hdr-refresh-error{display:flex;align-items:center;gap:7px;padding:3px 10px;border:1px solid rgba(255,34,85,.35);border-radius:3px;background:#ff22550f;animation:refresh-error-pulse 2s ease-in-out infinite}.refresh-error-dot{width:6px;height:6px;border-radius:50%;background:#f25;box-shadow:0 0 6px #f25;flex-shrink:0}.refresh-error-text{font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:#f25;white-space:nowrap;font-family:var(--aiops-font-family, "Courier New", monospace)}@keyframes cred-panel-glow{0%,to{border-color:#00e5ff2e;box-shadow:0 0 40px #00e5ff14,0 20px 80px #000c,inset 0 0 60px #00000080}50%{border-color:#00e5ff59;box-shadow:0 0 60px #00e5ff26,0 20px 80px #000c,inset 0 0 60px #00000080}}@keyframes cred-fade-in{0%{opacity:0}to{opacity:1}}@keyframes cred-panel-enter{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes cred-icon-pop{0%{opacity:0;transform:scale(.4) translateY(10px)}60%{opacity:1;transform:scale(1.1) translateY(-3px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes cred-scanline-sweep{0%{top:-2px;opacity:0}5%{opacity:.7}90%{opacity:.4}to{top:100%;opacity:0}}@keyframes cred-btn-shine{0%{left:-100%}to{left:200%}}.cred-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#020810e0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);animation:cred-fade-in .4s ease-out}.cred-panel{position:relative;width:380px;padding:40px 36px 32px;border:1px solid rgba(0,229,255,.18);border-radius:6px;background:linear-gradient(170deg,#061226f7,#030a16fa);animation:cred-panel-enter .5s ease-out,cred-panel-glow 4s ease-in-out infinite;overflow:hidden}.cred-scanline{position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(0,229,255,.5) 50%,transparent 100%);animation:cred-scanline-sweep 4s linear infinite;pointer-events:none;z-index:2}.cred-corner{position:absolute;width:18px;height:18px;pointer-events:none;z-index:3}.cred-corner:before,.cred-corner:after{content:"";position:absolute;background:#00e5ff73}.cred-corner:before{top:0;left:0;width:18px;height:1px}.cred-corner:after{top:0;left:0;width:1px;height:18px}.cred-corner--tl{top:-1px;left:-1px}.cred-corner--tr{top:-1px;right:-1px;transform:scaleX(-1)}.cred-corner--bl{bottom:-1px;left:-1px;transform:scaleY(-1)}.cred-corner--br{bottom:-1px;right:-1px;transform:scale(-1)}.cred-icon{display:flex;justify-content:center;margin-bottom:18px;animation:cred-icon-pop .6s ease-out .15s both}.cred-title{text-align:center;font-size:13px;font-weight:700;letter-spacing:.28em;text-transform:uppercase;color:#00e5ff;margin-bottom:6px}.cred-subtitle{text-align:center;font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:#00e5ff59;margin-bottom:28px;font-family:var(--aiops-font-family, "Courier New", monospace)}.cred-field{margin-bottom:18px}.cred-label{display:block;font-size:8px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:#00e5ff8c;margin-bottom:6px;font-family:var(--aiops-font-family, "Courier New", monospace)}.cred-input{width:100%;padding:10px 14px;border:1px solid rgba(0,229,255,.15);border-radius:4px;background:#000a19b3;color:#c8dff0;font-size:13px;font-family:var(--aiops-font-family, "Courier New", monospace);letter-spacing:.04em;outline:none;transition:border-color .25s,box-shadow .25s;box-sizing:border-box}.cred-input::placeholder{color:#c8dff02e;letter-spacing:.06em}.cred-btn{position:relative;display:block;width:100%;margin-top:26px;padding:12px 0;border:1px solid rgba(0,229,255,.3);border-radius:4px;background:#00e5ff0f;color:#00e5ff;font-size:11px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;font-family:inherit;transition:background .25s,box-shadow .25s,opacity .25s;overflow:hidden}.cred-btn-glow{position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(0,229,255,.08),transparent);pointer-events:none;animation:cred-btn-shine 3s ease-in-out infinite}.cred-footer{margin-top:20px;text-align:center;font-size:7px;letter-spacing:.2em;text-transform:uppercase;color:#c8dff02e;font-family:var(--aiops-font-family, "Courier New", monospace)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--aiops-font-family, "Segoe UI", system-ui, -apple-system, sans-serif);background-color:#020810;color:#c8dff0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#1e508c66;border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#22d3ee4d}*{scrollbar-width:thin;scrollbar-color:rgba(30,80,140,.4) transparent}@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)}}
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { jsxs as c, jsx as e, Fragment as ze } from "react/jsx-runtime";
2
2
  import X, { createContext as et, useContext as xe, useState as C, useCallback as _e, useEffect as de, useMemo as Be, useRef as q } from "react";
3
- const Xt = {
3
+ const Gt = {
4
4
  info: { color: "#00ff88", bg: "rgba(0, 255, 136, 0.1)", border: "#00ff88", icon: "✅" },
5
5
  warning: { color: "#ff8c00", bg: "rgba(255, 140, 0, 0.1)", border: "#ff8c00", icon: "⚠️" },
6
6
  critical: { color: "#ff2255", bg: "rgba(255, 34, 85, 0.1)", border: "#ff2255", icon: "🛑" }
7
7
  };
8
- function qt({
8
+ function Zt({
9
9
  name: t,
10
10
  status: n,
11
11
  dbSync: o = !0,
@@ -146,7 +146,7 @@ function qt({
146
146
  }
147
147
  ),
148
148
  d.map((p, f) => {
149
- const b = Xt[p.level];
149
+ const b = Gt[p.level];
150
150
  return /* @__PURE__ */ c(
151
151
  "div",
152
152
  {
@@ -182,7 +182,7 @@ const E = {
182
182
  warning: { color: "#ff8c00", glow: "rgba(255,140,0,0.55)" },
183
183
  critical: { color: "#ff2255", glow: "rgba(255,34,85,0.55)" },
184
184
  offline: { color: "#1e3a5a", glow: "rgba(30,58,90,0.25)" }
185
- }, _i = "#00e5ff", ji = "#0055cc", Ue = "linear-gradient(180deg, #071428 0%, #040c1c 60%, #030810 100%)", dt = "linear-gradient(180deg, rgba(10,25,50,0.35) 0%, rgba(5,15,35,0.25) 60%, rgba(3,10,20,0.15) 100%)";
185
+ }, Qi = "#00e5ff", Ki = "#0055cc", Ue = "linear-gradient(180deg, #071428 0%, #040c1c 60%, #030810 100%)", dt = "linear-gradient(180deg, rgba(10,25,50,0.35) 0%, rgba(5,15,35,0.25) 60%, rgba(3,10,20,0.15) 100%)";
186
186
  function ct(t, n, o) {
187
187
  const i = {
188
188
  position: "absolute",
@@ -237,13 +237,13 @@ const lt = "cubic-bezier(0.34, 1.56, 0.64, 1)", qe = "cubic-bezier(0.16, 1, 0.3,
237
237
  function Pt(t) {
238
238
  return E[t]?.color ?? E.online.color;
239
239
  }
240
- function Qt(t, n, o) {
240
+ function Jt(t, n, o) {
241
241
  return t >= o ? "#ff2255" : t >= n ? "#ff8c00" : "#00e5ff";
242
242
  }
243
243
  function Xe(t, n, o, i) {
244
244
  return t === "offline" ? "offline" : t === "critical" && n >= i ? "critical" : (t === "critical" || t === "warning") && n >= o ? "warning" : "online";
245
245
  }
246
- function Kt({
246
+ function ei({
247
247
  component: t,
248
248
  onClose: n,
249
249
  visible: o,
@@ -521,7 +521,7 @@ function Kt({
521
521
  position: "relative",
522
522
  zIndex: 2
523
523
  },
524
- children: $.map((g) => /* @__PURE__ */ e(Gt, { metric: g, visible: o, accentColor: f }, g.id))
524
+ children: $.map((g) => /* @__PURE__ */ e(ti, { metric: g, visible: o, accentColor: f }, g.id))
525
525
  }
526
526
  ),
527
527
  /* @__PURE__ */ c(
@@ -570,7 +570,7 @@ function Kt({
570
570
  }
571
571
  );
572
572
  }
573
- function Gt({
573
+ function ti({
574
574
  metric: t,
575
575
  visible: n,
576
576
  accentColor: o
@@ -586,7 +586,7 @@ function Gt({
586
586
  colorOverride: p,
587
587
  warnAt: f = 70,
588
588
  critAt: b = 85
589
- } = t, h = p ?? Qt(a, f, b), y = p ?? Pt(l);
589
+ } = t, h = p ?? Jt(a, f, b), y = p ?? Pt(l);
590
590
  return /* @__PURE__ */ c(
591
591
  "div",
592
592
  {
@@ -618,7 +618,7 @@ function Gt({
618
618
  animation: n ? `comp-dialog-icon-pop 0.5s ${lt} ${0.35 + d * 0.12}s both` : "none"
619
619
  },
620
620
  children: [
621
- /* @__PURE__ */ e(Zt, { type: u, color: y }),
621
+ /* @__PURE__ */ e(ii, { type: u, color: y }),
622
622
  (l === "warning" || l === "critical") && /* @__PURE__ */ e(
623
623
  "div",
624
624
  {
@@ -813,7 +813,7 @@ function Gt({
813
813
  }
814
814
  );
815
815
  }
816
- function Zt({ type: t, color: n }) {
816
+ function ii({ type: t, color: n }) {
817
817
  return t === "cpu" ? /* @__PURE__ */ c("svg", { width: 28, height: 28, viewBox: "0 0 24 24", fill: "none", children: [
818
818
  /* @__PURE__ */ e("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2", stroke: n, strokeWidth: "1.5" }),
819
819
  /* @__PURE__ */ e(
@@ -899,13 +899,13 @@ function Zt({ type: t, color: n }) {
899
899
  ] });
900
900
  }
901
901
  const pt = et(null), ft = et({ index: 0 });
902
- function Xi() {
902
+ function Gi() {
903
903
  return xe(pt);
904
904
  }
905
- function qi() {
905
+ function Zi() {
906
906
  return xe(ft);
907
907
  }
908
- function Jt({
908
+ function ni({
909
909
  children: t,
910
910
  logoUrl: n,
911
911
  viewState: o,
@@ -1012,7 +1012,7 @@ function Jt({
1012
1012
  we
1013
1013
  ] }),
1014
1014
  r && /* @__PURE__ */ e("div", { onClick: (S) => S.stopPropagation(), children: /* @__PURE__ */ e(
1015
- qt,
1015
+ Zt,
1016
1016
  {
1017
1017
  name: r,
1018
1018
  status: R,
@@ -1023,7 +1023,7 @@ function Jt({
1023
1023
  }
1024
1024
  ) }),
1025
1025
  a && /* @__PURE__ */ e("div", { onClick: (S) => S.stopPropagation(), children: /* @__PURE__ */ e(
1026
- Kt,
1026
+ ei,
1027
1027
  {
1028
1028
  component: a,
1029
1029
  onClose: g,
@@ -1034,7 +1034,7 @@ function Jt({
1034
1034
  ) })
1035
1035
  ] });
1036
1036
  }
1037
- function ei({
1037
+ function oi({
1038
1038
  x1: t,
1039
1039
  y1: n,
1040
1040
  x2: o,
@@ -1101,14 +1101,14 @@ function ei({
1101
1101
  ] })
1102
1102
  ] });
1103
1103
  }
1104
- const ti = [
1104
+ const ri = [
1105
1105
  { scale: 1, op: 1, delay: "0.0s", bw: "2px", glow: 1 },
1106
1106
  { scale: 0.82, op: 0.88, delay: "0.5s", bw: "1.5px", glow: 0.7 },
1107
1107
  { scale: 0.64, op: 0.72, delay: "1.0s", bw: "1px", glow: 0.5 },
1108
1108
  { scale: 0.47, op: 0.58, delay: "1.5s", bw: "1px", glow: 0.35 },
1109
1109
  { scale: 0.3, op: 0.45, delay: "2.0s", bw: "1px", glow: 0.25 }
1110
1110
  ];
1111
- function ii({
1111
+ function ai({
1112
1112
  children: t,
1113
1113
  size: n = 230,
1114
1114
  widthRatio: o = 1,
@@ -1274,7 +1274,7 @@ function ii({
1274
1274
  background: `radial-gradient(ellipse, ${i}88 0%, ${i}33 40%, transparent 72%)`,
1275
1275
  filter: "blur(12px)"
1276
1276
  } }),
1277
- ti.map((s, l) => /* @__PURE__ */ e("div", { style: {
1277
+ ri.map((s, l) => /* @__PURE__ */ e("div", { style: {
1278
1278
  position: "absolute",
1279
1279
  width: a * s.scale,
1280
1280
  height: n * s.scale,
@@ -1317,7 +1317,7 @@ function ii({
1317
1317
  }, children: r })
1318
1318
  ] });
1319
1319
  }
1320
- const Re = et(null), ni = "cubic-bezier(0.34, 1.56, 0.64, 1)", vt = 330, wt = 340, oi = 660;
1320
+ const Re = et(null), li = "cubic-bezier(0.34, 1.56, 0.64, 1)", vt = 330, wt = 340, si = 660;
1321
1321
  function At({
1322
1322
  name: t,
1323
1323
  status: n = "online",
@@ -1342,19 +1342,27 @@ function At({
1342
1342
  const g = xe(pt), R = xe(ft), A = a ?? R.index, L = s ?? g?.totalSystems ?? 1, w = l ?? g?.carouselRotation ?? 0, I = u ?? g?.viewState ?? "compact", H = d ?? g?.animPhase ?? 0, D = p ?? g?.selectedSystem ?? null, ee = f ?? g?.selectedComponent ?? null, ce = b ?? g?.rotateY ?? 20, pe = h ?? g?.autoRotateComponents ?? !0, se = y ?? g?.componentScale ?? 0.35, ve = m ?? g?.drillZoom ?? 3.3, we = k ?? g?.onSelectSystem, Se = v ?? g?.onComponentClick, G = g?.onComponentDataUpdate, S = $ ?? g?.containerWidth ?? 950, P = g?.onNodeAlertsChange, M = q(P);
1343
1343
  M.current = P;
1344
1344
  const Y = q(/* @__PURE__ */ new Map()), Z = _e(
1345
- (J, Ve, _t) => {
1345
+ (J, Ve, Qt) => {
1346
1346
  const it = Y.current;
1347
- Ve && Ve !== "online" ? it.set(J, { severity: Ve, msg: _t }) : it.delete(J);
1347
+ Ve && Ve !== "online" ? it.set(J, { severity: Ve, msg: Qt }) : it.delete(J);
1348
1348
  const xt = [];
1349
- for (const [jt, nt] of it)
1349
+ for (const [Kt, nt] of it)
1350
1350
  xt.push({
1351
1351
  level: nt.severity === "critical" || nt.severity === "offline" ? "critical" : "warning",
1352
- message: `${jt}: ${nt.msg}`
1352
+ message: `${Kt}: ${nt.msg}`
1353
1353
  });
1354
1354
  M.current?.(t, xt);
1355
1355
  },
1356
1356
  [t]
1357
- ), Q = D === t, z = Q && (I === "expanded" || I === "expanding" && H >= 1), oe = !z, fe = (S - oi) / 2, ue = vt + fe, he = A / L * Math.PI * 2 + w, Fe = 420, Ce = 160, re = ue + Math.cos(he) * Fe, x = 450 + Math.sin(he) * Ce, V = Math.round(x), ae = !Q && (I === "expanding" || I === "expanded"), _ = ae ? 0 : 1, j = oe ? 0.3 + (Math.sin(he) + 1) * 0.1 : 1, B = oe ? j : se, Ee = I === "compact" || I === "collapsing" ? "none" : "all 1s cubic-bezier(0.34, 1.56, 0.64, 1)", Ye = Q && ee, tt = Ye ? ve : 1, Bt = ee?.ex ?? 330, Ut = ee?.ey ?? 300, { size: Ft = 90, color: Ht = "#00e5ff", widthRatio: Yt = 3 } = i ?? {}, Vt = {
1357
+ ), Q = D === t, z = Q && (I === "expanded" || I === "expanding" && H >= 1), oe = !z, fe = (S - si) / 2, ue = vt + fe, he = A / L * Math.PI * 2 + w, Fe = 420, Ce = 160, re = ue + Math.cos(he) * Fe, x = 450 + Math.sin(he) * Ce, V = Math.round(x), ae = !Q && (I === "expanding" || I === "expanded"), _ = ae ? 0 : 1, j = oe ? 0.3 + (Math.sin(he) + 1) * 0.1 : 1, B = oe ? j : se, Ee = I === "compact" || I === "collapsing" ? "none" : "all 1s cubic-bezier(0.34, 1.56, 0.64, 1)", Ye = Q && ee, tt = Ye ? ve : 1, Bt = ee?.ex ?? 330, Ut = ee?.ey ?? 300, {
1358
+ size: Ft = 90,
1359
+ color: Ht = "#00e5ff",
1360
+ widthRatio: Yt = 3,
1361
+ expandedX: Vt,
1362
+ expandedY: _t = 570,
1363
+ compactOffsetX: jt = 0,
1364
+ compactOffsetY: Xt = 0
1365
+ } = i ?? {}, qt = {
1358
1366
  name: t,
1359
1367
  isSelected: Q,
1360
1368
  isExpandedPos: z,
@@ -1373,7 +1381,7 @@ function At({
1373
1381
  expandedOffsetX: fe,
1374
1382
  registerNodeAlert: Z
1375
1383
  };
1376
- return /* @__PURE__ */ e(Re.Provider, { value: Vt, children: /* @__PURE__ */ c(
1384
+ return /* @__PURE__ */ e(Re.Provider, { value: qt, children: /* @__PURE__ */ c(
1377
1385
  "div",
1378
1386
  {
1379
1387
  style: {
@@ -1384,7 +1392,7 @@ function At({
1384
1392
  height: "100%",
1385
1393
  pointerEvents: "none",
1386
1394
  opacity: _,
1387
- transition: `opacity 0.8s ease, filter 0.5s ease, transform 0.6s ${ni}`,
1395
+ transition: `opacity 0.8s ease, filter 0.5s ease, transform 0.6s ${li}`,
1388
1396
  filter: oe && Math.sin(he) < -0.5 ? "brightness(0.5) blur(2px)" : "none",
1389
1397
  zIndex: Q ? 500 : ae ? 0 : V,
1390
1398
  transformOrigin: `${ue}px ${wt}px`,
@@ -1497,7 +1505,7 @@ function At({
1497
1505
  transition: Ee
1498
1506
  },
1499
1507
  children: o.map((J, Ve) => /* @__PURE__ */ e(
1500
- ei,
1508
+ oi,
1501
1509
  {
1502
1510
  x1: J.from[0],
1503
1511
  y1: J.from[1],
@@ -1516,13 +1524,13 @@ function At({
1516
1524
  {
1517
1525
  style: {
1518
1526
  position: "absolute",
1519
- left: z ? ue : re,
1520
- top: z ? 570 : x + 70,
1527
+ left: z ? Vt ?? ue : re + jt,
1528
+ top: z ? _t : x + 70 + Xt,
1521
1529
  transform: `translate(-50%, -50%) scaleX(${z ? 1 : 0.4}) scaleY(${z ? 1 : 0.6}) scale(${z ? 1 : j})`,
1522
1530
  transition: Ee,
1523
1531
  zIndex: 1
1524
1532
  },
1525
- children: /* @__PURE__ */ e(ii, { size: Ft, color: Ht, widthRatio: Yt, children: /* @__PURE__ */ e("div", { className: "base-hotspot" }) })
1533
+ children: /* @__PURE__ */ e(ai, { size: Ft, color: Ht, widthRatio: Yt, children: /* @__PURE__ */ e("div", { className: "base-hotspot" }) })
1526
1534
  }
1527
1535
  ),
1528
1536
  r
@@ -1677,21 +1685,21 @@ function U({
1677
1685
  }
1678
1686
  );
1679
1687
  }
1680
- const Tt = 70, Ot = 85, ri = {
1688
+ const Tt = 70, Ot = 85, di = {
1681
1689
  online: 0,
1682
1690
  warning: 1,
1683
1691
  offline: 2,
1684
1692
  critical: 3
1685
1693
  };
1686
1694
  function St(t) {
1687
- return ri[t] ?? 0;
1695
+ return di[t] ?? 0;
1688
1696
  }
1689
- function ai(t) {
1697
+ function ci(t) {
1690
1698
  if (!t) return null;
1691
1699
  const n = t.dialogMetrics ?? t.context?.dialogMetrics;
1692
- return n && n.length > 0 ? li(n) : si(t.context);
1700
+ return n && n.length > 0 ? pi(n) : fi(t.context);
1693
1701
  }
1694
- function li(t) {
1702
+ function pi(t) {
1695
1703
  let n = null;
1696
1704
  for (const r of t) {
1697
1705
  if (r.color) continue;
@@ -1706,7 +1714,7 @@ function li(t) {
1706
1714
  internalRef: o.id.toUpperCase()
1707
1715
  };
1708
1716
  }
1709
- function si(t) {
1717
+ function fi(t) {
1710
1718
  if (!t) return null;
1711
1719
  const n = [];
1712
1720
  t.cpuLoad !== void 0 && n.push({ label: "CPU", value: t.cpuLoad, id: "CPU" }), t.memLoad !== void 0 && n.push({ label: "MEM", value: t.memLoad, id: "HEAP" }), t.traffic !== void 0 && n.push({ label: "TRAFFIC", value: t.traffic, id: "NET" }), t.queueDepth !== void 0 && n.push({ label: "QUEUE", value: t.queueDepth, id: "QUEUE" }), t.capacity !== void 0 && n.push({ label: "CAPACITY", value: t.capacity, id: "DISK" });
@@ -1721,8 +1729,8 @@ function si(t) {
1721
1729
  internalRef: i.id
1722
1730
  };
1723
1731
  }
1724
- function di(t, n) {
1725
- const o = t?.status ?? "online", i = St(o), r = ai(t), a = r ? St(r.severity) : 0, s = i >= a ? o : r.severity;
1732
+ function ui(t, n) {
1733
+ const o = t?.status ?? "online", i = St(o), r = ci(t), a = r ? St(r.severity) : 0, s = i >= a ? o : r.severity;
1726
1734
  if (i === 0 && a === 0)
1727
1735
  return { effectiveSeverity: "online", callout: null };
1728
1736
  let l;
@@ -1765,7 +1773,7 @@ function O({
1765
1773
  registerNodeAlert: H,
1766
1774
  onComponentDataUpdate: D
1767
1775
  } = y, ce = p === 0 || y.isSelected && k >= p ? 1 : 0, pe = v + o.x, se = $ + o.y, ve = m ? t + I : pe, we = m ? n : se, Se = f !== void 0 ? f : y.isCompact ? g : R, G = !!d && !!w && d.name === w, { effectiveSeverity: S, callout: P } = Be(
1768
- () => di(d, h),
1776
+ () => ui(d, h),
1769
1777
  [d, h]
1770
1778
  );
1771
1779
  de(() => (d?.name && H && H(
@@ -1844,7 +1852,7 @@ function O({
1844
1852
  }
1845
1853
  ),
1846
1854
  b ? re : /* @__PURE__ */ e(
1847
- ci,
1855
+ hi,
1848
1856
  {
1849
1857
  statusColor: fe,
1850
1858
  label: s,
@@ -1878,7 +1886,7 @@ function O({
1878
1886
  )
1879
1887
  ] });
1880
1888
  }
1881
- function ci({
1889
+ function hi({
1882
1890
  children: t,
1883
1891
  statusColor: n,
1884
1892
  label: o,
@@ -1997,7 +2005,7 @@ function It({ synced: t, latencyMs: n }) {
1997
2005
  ] });
1998
2006
  }
1999
2007
  const be = 140, te = 240, me = 160, Pe = ct(be, te, me);
2000
- function pi({
2008
+ function bi({
2001
2009
  cfg: t,
2002
2010
  name: n,
2003
2011
  cpuLoad: o,
@@ -2409,7 +2417,7 @@ function pi({
2409
2417
  }
2410
2418
  );
2411
2419
  }
2412
- function fi() {
2420
+ function gi() {
2413
2421
  return /* @__PURE__ */ c(
2414
2422
  "div",
2415
2423
  {
@@ -2623,7 +2631,7 @@ function $t({
2623
2631
  }
2624
2632
  );
2625
2633
  }
2626
- function ui({ cpuLoad: t }) {
2634
+ function yi({ cpuLoad: t }) {
2627
2635
  const n = t / 100, o = n > 0.75 ? "rgba(255,34,85,0.16)" : n > 0.45 ? "rgba(255,140,0,0.12)" : "rgba(0,229,255,0.08)", i = Math.floor((me - 18) / 7);
2628
2636
  return /* @__PURE__ */ c(
2629
2637
  "div",
@@ -2820,7 +2828,7 @@ function ke({
2820
2828
  },
2821
2829
  children: [
2822
2830
  /* @__PURE__ */ e("div", { style: Pe.front, children: /* @__PURE__ */ e(
2823
- pi,
2831
+ bi,
2824
2832
  {
2825
2833
  cfg: m,
2826
2834
  name: s,
@@ -2831,10 +2839,10 @@ function ke({
2831
2839
  brandLabel: d
2832
2840
  }
2833
2841
  ) }),
2834
- /* @__PURE__ */ e("div", { style: Pe.back, children: /* @__PURE__ */ e(fi, {}) }),
2842
+ /* @__PURE__ */ e("div", { style: Pe.back, children: /* @__PURE__ */ e(gi, {}) }),
2835
2843
  /* @__PURE__ */ e("div", { style: Pe.left, children: /* @__PURE__ */ e($t, { side: "left", color: m.color, brandLabel: d }) }),
2836
2844
  /* @__PURE__ */ e("div", { style: Pe.right, children: /* @__PURE__ */ e($t, { side: "right", color: m.color, brandLabel: d }) }),
2837
- /* @__PURE__ */ e("div", { style: Pe.top, children: /* @__PURE__ */ e(ui, { cpuLoad: l }) }),
2845
+ /* @__PURE__ */ e("div", { style: Pe.top, children: /* @__PURE__ */ e(yi, { cpuLoad: l }) }),
2838
2846
  /* @__PURE__ */ e("div", { style: Pe.bottom, children: /* @__PURE__ */ e(
2839
2847
  "div",
2840
2848
  {
@@ -2854,7 +2862,7 @@ function ke({
2854
2862
  }
2855
2863
  );
2856
2864
  }
2857
- function Qi({
2865
+ function Ji({
2858
2866
  ex: t,
2859
2867
  ey: n,
2860
2868
  compactOffset: o,
@@ -2904,7 +2912,7 @@ const st = 12, $e = 55, le = $e * 2, Ie = 52, ut = 10, ot = 3 * Ie + 2 * ut, Ae
2904
2912
  function at(t) {
2905
2913
  return Math.cos(t * Math.PI / 180) * 0.42 + 0.58;
2906
2914
  }
2907
- function hi({
2915
+ function mi({
2908
2916
  diskY: t,
2909
2917
  diskIdx: n,
2910
2918
  cfg: o,
@@ -3236,7 +3244,7 @@ function je({
3236
3244
  transition: r ? "none" : "transform 0.55s cubic-bezier(0.25, 0.46, 0.45, 0.94)"
3237
3245
  },
3238
3246
  children: [0, 1, 2].map((h) => /* @__PURE__ */ e(
3239
- hi,
3247
+ mi,
3240
3248
  {
3241
3249
  diskY: h * (Ie + ut),
3242
3250
  diskIdx: h,
@@ -3255,7 +3263,7 @@ function je({
3255
3263
  }
3256
3264
  );
3257
3265
  }
3258
- function Ki({
3266
+ function en({
3259
3267
  ex: t,
3260
3268
  ey: n,
3261
3269
  compactOffset: o,
@@ -3411,7 +3419,7 @@ function ht({ status: t = "online", scale: n = 1 }) {
3411
3419
  }
3412
3420
  );
3413
3421
  }
3414
- function Gi({
3422
+ function tn({
3415
3423
  ex: t,
3416
3424
  ey: n,
3417
3425
  compactOffset: o,
@@ -3435,7 +3443,7 @@ function Gi({
3435
3443
  );
3436
3444
  }
3437
3445
  const ge = 190, ie = 72, Le = 120, Te = ct(ge, ie, Le);
3438
- function bi({
3446
+ function xi({
3439
3447
  cfg: t,
3440
3448
  name: n,
3441
3449
  traffic: o,
@@ -3697,7 +3705,7 @@ function bi({
3697
3705
  }
3698
3706
  );
3699
3707
  }
3700
- function gi() {
3708
+ function vi() {
3701
3709
  return /* @__PURE__ */ c(
3702
3710
  "div",
3703
3711
  {
@@ -3842,7 +3850,7 @@ function kt({ side: t, color: n }) {
3842
3850
  }
3843
3851
  );
3844
3852
  }
3845
- function yi({ traffic: t }) {
3853
+ function wi({ traffic: t }) {
3846
3854
  const n = Math.floor((Le - 14) / 7);
3847
3855
  return /* @__PURE__ */ c(
3848
3856
  "div",
@@ -4025,7 +4033,7 @@ function bt({
4025
4033
  },
4026
4034
  children: [
4027
4035
  /* @__PURE__ */ e("div", { style: Te.front, children: /* @__PURE__ */ e(
4028
- bi,
4036
+ xi,
4029
4037
  {
4030
4038
  cfg: y,
4031
4039
  name: s,
@@ -4034,10 +4042,10 @@ function bt({
4034
4042
  compact: d
4035
4043
  }
4036
4044
  ) }),
4037
- /* @__PURE__ */ e("div", { style: Te.back, children: /* @__PURE__ */ e(gi, {}) }),
4045
+ /* @__PURE__ */ e("div", { style: Te.back, children: /* @__PURE__ */ e(vi, {}) }),
4038
4046
  /* @__PURE__ */ e("div", { style: Te.left, children: /* @__PURE__ */ e(kt, { side: "left", color: y.color }) }),
4039
4047
  /* @__PURE__ */ e("div", { style: Te.right, children: /* @__PURE__ */ e(kt, { side: "right", color: y.color }) }),
4040
- /* @__PURE__ */ e("div", { style: Te.top, children: /* @__PURE__ */ e(yi, { traffic: l }) }),
4048
+ /* @__PURE__ */ e("div", { style: Te.top, children: /* @__PURE__ */ e(wi, { traffic: l }) }),
4041
4049
  /* @__PURE__ */ e("div", { style: Te.bottom, children: /* @__PURE__ */ e("div", { style: { width: ge, height: Le, background: "#020508" } }) })
4042
4050
  ]
4043
4051
  }
@@ -4048,7 +4056,7 @@ function bt({
4048
4056
  }
4049
4057
  );
4050
4058
  }
4051
- function Zi({
4059
+ function nn({
4052
4060
  ex: t,
4053
4061
  ey: n,
4054
4062
  compactOffset: o,
@@ -4099,7 +4107,7 @@ const ye = 190, ne = 72, De = 120, Oe = ct(ye, ne, De), Rt = {
4099
4107
  critical: { color: "#ff2255", glow: "rgba(255,34,85,0.50)" },
4100
4108
  offline: { color: "#1e3a5a", glow: "rgba(30,58,90,0.25)" }
4101
4109
  };
4102
- function mi({
4110
+ function Si({
4103
4111
  cfg: t,
4104
4112
  name: n,
4105
4113
  queueDepth: o,
@@ -4358,7 +4366,7 @@ function mi({
4358
4366
  }
4359
4367
  );
4360
4368
  }
4361
- function xi() {
4369
+ function $i() {
4362
4370
  return /* @__PURE__ */ c(
4363
4371
  "div",
4364
4372
  {
@@ -4503,7 +4511,7 @@ function Ct({ side: t, color: n }) {
4503
4511
  }
4504
4512
  );
4505
4513
  }
4506
- function vi({ queueDepth: t, color: n }) {
4514
+ function ki({ queueDepth: t, color: n }) {
4507
4515
  const o = Math.floor((De - 14) / 7);
4508
4516
  return /* @__PURE__ */ c(
4509
4517
  "div",
@@ -4687,7 +4695,7 @@ function Lt({
4687
4695
  },
4688
4696
  children: [
4689
4697
  /* @__PURE__ */ e("div", { style: Oe.front, children: /* @__PURE__ */ e(
4690
- mi,
4698
+ Si,
4691
4699
  {
4692
4700
  cfg: m,
4693
4701
  name: s,
@@ -4697,10 +4705,10 @@ function Lt({
4697
4705
  compact: p
4698
4706
  }
4699
4707
  ) }),
4700
- /* @__PURE__ */ e("div", { style: Oe.back, children: /* @__PURE__ */ e(xi, {}) }),
4708
+ /* @__PURE__ */ e("div", { style: Oe.back, children: /* @__PURE__ */ e($i, {}) }),
4701
4709
  /* @__PURE__ */ e("div", { style: Oe.left, children: /* @__PURE__ */ e(Ct, { side: "left", color: m.color }) }),
4702
4710
  /* @__PURE__ */ e("div", { style: Oe.right, children: /* @__PURE__ */ e(Ct, { side: "right", color: m.color }) }),
4703
- /* @__PURE__ */ e("div", { style: Oe.top, children: /* @__PURE__ */ e(vi, { queueDepth: l, color: m.color }) }),
4711
+ /* @__PURE__ */ e("div", { style: Oe.top, children: /* @__PURE__ */ e(ki, { queueDepth: l, color: m.color }) }),
4704
4712
  /* @__PURE__ */ e("div", { style: Oe.bottom, children: /* @__PURE__ */ e("div", { style: { width: ye, height: De, background: "#020508" } }) })
4705
4713
  ]
4706
4714
  }
@@ -4711,13 +4719,13 @@ function Lt({
4711
4719
  }
4712
4720
  );
4713
4721
  }
4714
- const wi = {
4722
+ const Ri = {
4715
4723
  online: "#bb55ff",
4716
4724
  warning: "#ff8c00",
4717
4725
  critical: "#ff2255",
4718
4726
  offline: "#1e3a5a"
4719
4727
  };
4720
- function Ji({
4728
+ function on({
4721
4729
  ex: t,
4722
4730
  ey: n,
4723
4731
  compactOffset: o,
@@ -4736,7 +4744,7 @@ function Ji({
4736
4744
  graphSeries: m,
4737
4745
  alert: k
4738
4746
  }) {
4739
- const v = wi[a] ?? l ?? "#bb55ff";
4747
+ const v = Ri[a] ?? l ?? "#bb55ff";
4740
4748
  return /* @__PURE__ */ e(
4741
4749
  O,
4742
4750
  {
@@ -4777,7 +4785,7 @@ function N(t, n, o = 24) {
4777
4785
  return Math.min(100, Math.max(0, t + Math.sin(a * Math.PI * 2) * n + (Math.random() - 0.5) * 10));
4778
4786
  });
4779
4787
  }
4780
- function Si({ data: t, color: n, height: o = 28 }) {
4788
+ function Ci({ data: t, color: n, height: o = 28 }) {
4781
4789
  const r = o, a = Math.max(...t, 1), s = t.map((l, u) => {
4782
4790
  const d = u / (t.length - 1) * 120, p = r - l / a * (r - 4) - 2;
4783
4791
  return `${d},${p}`;
@@ -4795,7 +4803,7 @@ function Si({ data: t, color: n, height: o = 28 }) {
4795
4803
  }
4796
4804
  ) });
4797
4805
  }
4798
- function $i({
4806
+ function Ei({
4799
4807
  type: t,
4800
4808
  name: n,
4801
4809
  context: o = {},
@@ -4803,7 +4811,7 @@ function $i({
4803
4811
  animPhase: r,
4804
4812
  series: a
4805
4813
  }) {
4806
- const s = i === "critical" || i === "offline" ? "#ff2255" : i === "warning" ? "#ff8c00" : "#00e5ff", l = a ? a.map((p) => ({ ...p })) : ki(t, o), u = r >= 0.3 ? 0 : -280, d = r >= 0.2 ? 1 : 0;
4814
+ const s = i === "critical" || i === "offline" ? "#ff2255" : i === "warning" ? "#ff8c00" : "#00e5ff", l = a ? a.map((p) => ({ ...p })) : Pi(t, o), u = r >= 0.3 ? 0 : -280, d = r >= 0.2 ? 1 : 0;
4807
4815
  return /* @__PURE__ */ c(
4808
4816
  "div",
4809
4817
  {
@@ -4858,7 +4866,7 @@ function $i({
4858
4866
  p.unit
4859
4867
  ] })
4860
4868
  ] }),
4861
- /* @__PURE__ */ e(Si, { data: p.data, color: p.color, height: 26 })
4869
+ /* @__PURE__ */ e(Ci, { data: p.data, color: p.color, height: 26 })
4862
4870
  ]
4863
4871
  },
4864
4872
  p.id
@@ -4867,7 +4875,7 @@ function $i({
4867
4875
  }
4868
4876
  );
4869
4877
  }
4870
- function ki(t, n) {
4878
+ function Pi(t, n) {
4871
4879
  if (t === "server") {
4872
4880
  const o = n.cpuLoad ?? 50, i = n.memLoad ?? 60;
4873
4881
  return [
@@ -5468,7 +5476,7 @@ function K({
5468
5476
  }
5469
5477
  );
5470
5478
  }
5471
- function Ri(t, n, o, i) {
5479
+ function Ai(t, n, o, i) {
5472
5480
  const r = o === "online" ? "online" : o;
5473
5481
  return t === "server" ? [
5474
5482
  {
@@ -5572,8 +5580,8 @@ function Ri(t, n, o, i) {
5572
5580
  }
5573
5581
  ] : [];
5574
5582
  }
5575
- const W = "cubic-bezier(0.34, 1.56, 0.64, 1)", Ci = "cubic-bezier(0.16, 1, 0.3, 1)";
5576
- function Ei({ items: t, revealPhase: n }) {
5583
+ const W = "cubic-bezier(0.34, 1.56, 0.64, 1)", Ti = "cubic-bezier(0.16, 1, 0.3, 1)";
5584
+ function Oi({ items: t, revealPhase: n }) {
5577
5585
  return /* @__PURE__ */ e(
5578
5586
  "div",
5579
5587
  {
@@ -5600,7 +5608,7 @@ function Ei({ items: t, revealPhase: n }) {
5600
5608
  }
5601
5609
  );
5602
5610
  }
5603
- function Pi({
5611
+ function Ii({
5604
5612
  type: t,
5605
5613
  status: n,
5606
5614
  context: o,
@@ -5910,7 +5918,7 @@ function Pi({
5910
5918
  }
5911
5919
  return null;
5912
5920
  }
5913
- function en({
5921
+ function rn({
5914
5922
  type: t,
5915
5923
  name: n,
5916
5924
  status: o,
@@ -5920,7 +5928,7 @@ function en({
5920
5928
  subComponents: s,
5921
5929
  graphSeries: l
5922
5930
  }) {
5923
- const u = Ri(t, n, o, a), d = E[o]?.color ?? E.online.color, p = r >= 0.1 ? 1 : r * 10, f = r >= 0.2 ? "-50%" : "0%", b = r >= 0.2 ? "50%" : "0%", h = r >= 0.25 ? Math.min(1, (r - 0.25) * 1.5) : 0;
5931
+ const u = Ai(t, n, o, a), d = E[o]?.color ?? E.online.color, p = r >= 0.1 ? 1 : r * 10, f = r >= 0.2 ? "-50%" : "0%", b = r >= 0.2 ? "50%" : "0%", h = r >= 0.25 ? Math.min(1, (r - 0.25) * 1.5) : 0;
5924
5932
  return /* @__PURE__ */ c(
5925
5933
  "div",
5926
5934
  {
@@ -5944,13 +5952,13 @@ function en({
5944
5952
  backdropFilter: "blur(10px)",
5945
5953
  WebkitBackdropFilter: "blur(10px)",
5946
5954
  opacity: p,
5947
- transition: `opacity 0.4s ${Ci}`
5955
+ transition: `opacity 0.4s ${Ti}`
5948
5956
  },
5949
5957
  onClick: i
5950
5958
  }
5951
5959
  ),
5952
5960
  /* @__PURE__ */ e(
5953
- $i,
5961
+ Ei,
5954
5962
  {
5955
5963
  type: t,
5956
5964
  name: n,
@@ -6120,8 +6128,8 @@ function en({
6120
6128
  }
6121
6129
  }
6122
6130
  ),
6123
- /* @__PURE__ */ e("div", { style: { flex: 1, padding: "8px 0 24px" }, children: s ? /* @__PURE__ */ e(Ei, { items: s, revealPhase: h }) : /* @__PURE__ */ e(
6124
- Pi,
6131
+ /* @__PURE__ */ e("div", { style: { flex: 1, padding: "8px 0 24px" }, children: s ? /* @__PURE__ */ e(Oi, { items: s, revealPhase: h }) : /* @__PURE__ */ e(
6132
+ Ii,
6125
6133
  {
6126
6134
  type: t,
6127
6135
  name: n,
@@ -6141,7 +6149,7 @@ function en({
6141
6149
  }
6142
6150
  );
6143
6151
  }
6144
- function Ai({ onSubmit: t }) {
6152
+ function Li({ onSubmit: t }) {
6145
6153
  const [n, o] = C(""), [i, r] = C(""), [a, s] = C(null), [l, u] = C(!1), d = n.trim().length > 0 && i.trim().length > 0;
6146
6154
  return /* @__PURE__ */ e("div", { className: "cred-overlay", children: /* @__PURE__ */ c("form", { className: "cred-panel", onSubmit: (f) => {
6147
6155
  f.preventDefault(), d && t({ accessKey: n.trim(), secretKey: i.trim() });
@@ -6233,27 +6241,27 @@ function Ai({ onSubmit: t }) {
6233
6241
  ] }) });
6234
6242
  }
6235
6243
  const gt = et(null);
6236
- function Ti() {
6244
+ function Di() {
6237
6245
  const t = xe(gt);
6238
6246
  if (!t)
6239
6247
  throw new Error("useAIOpsData must be used within an AIOPsDashboard with dataEndpoint configured");
6240
6248
  return t;
6241
6249
  }
6242
- function Oi() {
6250
+ function Ni() {
6243
6251
  return xe(gt);
6244
6252
  }
6245
- function tn(t) {
6246
- const { data: n } = Ti();
6253
+ function an(t) {
6254
+ const { data: n } = Di();
6247
6255
  return n[t] ?? null;
6248
6256
  }
6249
- function Ii(t) {
6257
+ function Wi(t) {
6250
6258
  const n = /* @__PURE__ */ new Set();
6251
6259
  for (const o of Object.values(t))
6252
6260
  for (const i of Object.values(o))
6253
6261
  n.add(typeof i == "string" ? i : i.query);
6254
6262
  return Array.from(n);
6255
6263
  }
6256
- function Li(t) {
6264
+ function Mi(t) {
6257
6265
  if (typeof t == "number") return t;
6258
6266
  if (typeof t == "string") {
6259
6267
  const n = Number(t);
@@ -6261,7 +6269,7 @@ function Li(t) {
6261
6269
  }
6262
6270
  return t;
6263
6271
  }
6264
- function Di({ config: t, children: n }) {
6272
+ function zi({ config: t, children: n }) {
6265
6273
  const [o, i] = C({}), [r, a] = C(null), [s, l] = C(!1), [u, d] = C(null), [p, f] = C(null), b = q(t);
6266
6274
  b.current = t;
6267
6275
  const h = q(r);
@@ -6320,20 +6328,20 @@ function Di({ config: t, children: n }) {
6320
6328
  };
6321
6329
  return /* @__PURE__ */ c(gt.Provider, { value: k, children: [
6322
6330
  n,
6323
- !r && /* @__PURE__ */ e(Ai, { onSubmit: m })
6331
+ !r && /* @__PURE__ */ e(Li, { onSubmit: m })
6324
6332
  ] });
6325
6333
  }
6326
- function nn(t) {
6334
+ function ln(t) {
6327
6335
  const { liveData: n, dataEndpoint: o, dataBindings: i, dataRefreshInterval: r, serviceDataBindings: a } = t;
6328
6336
  if (n && o && i) {
6329
- const s = Ii(i), l = [];
6337
+ const s = Wi(i), l = [];
6330
6338
  if (a)
6331
6339
  for (const d of Object.values(a))
6332
6340
  for (const p of d)
6333
6341
  s.includes(p.query) || l.push(p.query);
6334
6342
  const u = [...s, ...l];
6335
6343
  return /* @__PURE__ */ e(
6336
- Di,
6344
+ zi,
6337
6345
  {
6338
6346
  config: {
6339
6347
  endpoint: o,
@@ -6359,7 +6367,7 @@ function Et({
6359
6367
  serviceDataBindings: d,
6360
6368
  children: p
6361
6369
  }) {
6362
- const f = Oi(), [b] = C(20), [h] = C(!1), [y] = C(!0), [m] = C(0.45), [k] = C(3.3), [v, $] = C("compact"), [g, R] = C(0), [A, L] = C(null), [w, I] = C(null), [H, D] = C(0), [ee, ce] = C(0), pe = (x) => {
6370
+ const f = Ni(), [b] = C(20), [h] = C(!1), [y] = C(!0), [m] = C(0.45), [k] = C(3.3), [v, $] = C("compact"), [g, R] = C(0), [A, L] = C(null), [w, I] = C(null), [H, D] = C(0), [ee, ce] = C(0), pe = (x) => {
6363
6371
  v === "compact" && (L(x), $("expanding"), R(0), setTimeout(() => R(1), 50), setTimeout(() => R(2), 800), setTimeout(() => R(3), 1200), setTimeout(() => R(4), 1600), setTimeout(() => R(5), 2e3), setTimeout(() => {
6364
6372
  R(6), $("expanded");
6365
6373
  }, 2400));
@@ -6382,7 +6390,7 @@ function Et({
6382
6390
  }, [ee]);
6383
6391
  const Se = () => {
6384
6392
  I(null), D(0);
6385
- }, G = o.find((x) => x.name === A), S = G?.status ?? "online", P = G?.dbSync ?? !0, M = G?.alerts, Y = f?.data, Z = u ?? Li, Q = Be(() => {
6393
+ }, G = o.find((x) => x.name === A), S = G?.status ?? "online", P = G?.dbSync ?? !0, M = G?.alerts, Y = f?.data, Z = u ?? Mi, Q = Be(() => {
6386
6394
  if (!Y || !d) return null;
6387
6395
  const x = {};
6388
6396
  for (const [V, ae] of Object.entries(d))
@@ -6459,7 +6467,7 @@ function Et({
6459
6467
  },
6460
6468
  onClick: se,
6461
6469
  children: /* @__PURE__ */ e(
6462
- Jt,
6470
+ ni,
6463
6471
  {
6464
6472
  viewState: v,
6465
6473
  animPhase: g,
@@ -6552,7 +6560,7 @@ function zt(t) {
6552
6560
  { id: "worker", label: "WORKER", unit: "%", color: "#bb55ff", data: T(n * 0.9, 15) }
6553
6561
  ];
6554
6562
  }
6555
- function Ni(t, n, o) {
6563
+ function Bi(t, n, o) {
6556
6564
  const i = t === "online" ? "online" : t, r = i === "critical" ? "critical" : "online", a = i === "critical" || i === "offline" ? i : i === "warning" ? "warning" : "online", s = i === "critical" ? "critical" : "online";
6557
6565
  return [
6558
6566
  { id: "inst-0", label: "INST-0", status: "online", element: /* @__PURE__ */ e(K, { color: "#bb55ff", label: "INST-0", status: "online" }) },
@@ -6564,7 +6572,7 @@ function Ni(t, n, o) {
6564
6572
  { id: "worker-3", label: "WORKER-3", status: s, detail: s === "critical" ? "Worker timeout" : void 0, element: /* @__PURE__ */ e(F, { color: "#bb55ff", label: "WORKER-3", status: s }) }
6565
6573
  ];
6566
6574
  }
6567
- function Wi(t) {
6575
+ function Ui(t) {
6568
6576
  const n = t?.queueDepth ?? 50;
6569
6577
  return [
6570
6578
  { id: "traffic", label: "TRAFFIC", unit: "%", color: "#00e5ff", data: T(n, 20) },
@@ -6606,7 +6614,7 @@ function yt(t) {
6606
6614
  ];
6607
6615
  return n.includes("critical") ? "critical" : n.includes("warning") ? "warning" : n.includes("offline") ? "offline" : "online";
6608
6616
  }
6609
- function on(t) {
6617
+ function sn(t) {
6610
6618
  const n = yt(t), o = n === "critical" || n === "offline", i = n === "warning";
6611
6619
  return [
6612
6620
  {
@@ -6628,7 +6636,7 @@ function on(t) {
6628
6636
  }
6629
6637
  ];
6630
6638
  }
6631
- function rn(t) {
6639
+ function dn(t) {
6632
6640
  const n = yt(t), o = n === "critical" || n === "offline", i = n === "warning";
6633
6641
  return [
6634
6642
  ...t.dbSync ? [] : [{ level: "warning", message: "DB Replication Lag Detected" }],
@@ -6637,7 +6645,7 @@ function rn(t) {
6637
6645
  ...!o && !i && t.dbSync ? [{ level: "info", message: "All Systems Nominal" }] : []
6638
6646
  ];
6639
6647
  }
6640
- const Mi = [
6648
+ const Fi = [
6641
6649
  { from: [330, 120], to: [220, 260], visibleAtPhase: 3 },
6642
6650
  { from: [330, 120], to: [440, 260], visibleAtPhase: 3 },
6643
6651
  { from: [220, 260], to: [165, 390], visibleAtPhase: 4 },
@@ -6650,7 +6658,7 @@ const Mi = [
6650
6658
  { from: [330, 390], to: [200, 520], visibleAtPhase: 5, color: "#ff8c00" },
6651
6659
  { from: [495, 390], to: [200, 520], visibleAtPhase: 5, color: "#ff8c00" }
6652
6660
  ];
6653
- function zi({ config: t }) {
6661
+ function Hi({ config: t }) {
6654
6662
  const n = X.useContext(Re), o = n?.rotateY ?? 20, i = n?.autoRotateComponents ?? !0, { wdStatus: r, msStatus: a, srv1Status: s, srv2Status: l, srv3Status: u, pdbStatus: d, sdbStatus: p, dbSync: f } = t;
6655
6663
  return /* @__PURE__ */ c(ze, { children: [
6656
6664
  /* @__PURE__ */ e(
@@ -6714,8 +6722,8 @@ function zi({ config: t }) {
6714
6722
  name: "MSG-SRV",
6715
6723
  status: a,
6716
6724
  context: { queueDepth: 45 },
6717
- subComponents: Ni(a),
6718
- graphSeries: Wi({ queueDepth: 45 })
6725
+ subComponents: Bi(a),
6726
+ graphSeries: Ui({ queueDepth: 45 })
6719
6727
  },
6720
6728
  children: /* @__PURE__ */ e(
6721
6729
  Lt,
@@ -6910,10 +6918,10 @@ function zi({ config: t }) {
6910
6918
  children: /* @__PURE__ */ e(It, { synced: f, latencyMs: f ? 8 : 342 })
6911
6919
  }
6912
6920
  ),
6913
- /* @__PURE__ */ e(Bi, { config: t })
6921
+ /* @__PURE__ */ e(Yi, { config: t })
6914
6922
  ] });
6915
6923
  }
6916
- function Bi({ config: t }) {
6924
+ function Yi({ config: t }) {
6917
6925
  const n = X.useContext(Re), { wdStatus: o, msStatus: i, srv1Status: r, srv2Status: a, srv3Status: s, pdbStatus: l, sdbStatus: u, dbSync: d } = t, p = n?.isSelected && n?.isExpandedPos;
6918
6926
  return n?.isSelected ? /* @__PURE__ */ c("div", { style: { pointerEvents: "none" }, children: [
6919
6927
  /* @__PURE__ */ e(
@@ -7038,15 +7046,15 @@ function Bi({ config: t }) {
7038
7046
  )
7039
7047
  ] }) : null;
7040
7048
  }
7041
- function an({ config: t, ...n }) {
7049
+ function cn({ config: t, ...n }) {
7042
7050
  return /* @__PURE__ */ e(
7043
7051
  At,
7044
7052
  {
7045
7053
  name: t.name,
7046
7054
  status: yt(t),
7047
- connections: Mi,
7055
+ connections: Fi,
7048
7056
  ...n,
7049
- children: /* @__PURE__ */ e(zi, { config: t })
7057
+ children: /* @__PURE__ */ e(Hi, { config: t })
7050
7058
  }
7051
7059
  );
7052
7060
  }
@@ -7061,7 +7069,7 @@ function mt(t) {
7061
7069
  ];
7062
7070
  return n.includes("critical") ? "critical" : n.includes("warning") ? "warning" : n.includes("offline") ? "offline" : "online";
7063
7071
  }
7064
- function ln(t) {
7072
+ function pn(t) {
7065
7073
  const n = mt(t), o = n === "critical" || n === "offline", i = n === "warning";
7066
7074
  return [
7067
7075
  {
@@ -7083,7 +7091,7 @@ function ln(t) {
7083
7091
  }
7084
7092
  ];
7085
7093
  }
7086
- function sn(t) {
7094
+ function fn(t) {
7087
7095
  const n = mt(t), o = n === "critical" || n === "offline", i = n === "warning";
7088
7096
  return [
7089
7097
  ...t.dbSync ? [] : [{ level: "warning", message: "DB Replication Lag Detected" }],
@@ -7092,7 +7100,7 @@ function sn(t) {
7092
7100
  ...!o && !i && t.dbSync ? [{ level: "info", message: "All Systems Nominal" }] : []
7093
7101
  ];
7094
7102
  }
7095
- const Ui = [
7103
+ const Vi = [
7096
7104
  { from: [330, 120], to: [330, 260], visibleAtPhase: 3 },
7097
7105
  { from: [330, 260], to: [165, 390], visibleAtPhase: 4 },
7098
7106
  { from: [330, 260], to: [330, 390], visibleAtPhase: 4 },
@@ -7101,7 +7109,7 @@ const Ui = [
7101
7109
  { from: [330, 390], to: [200, 520], visibleAtPhase: 5, color: "#ff8c00" },
7102
7110
  { from: [495, 390], to: [200, 520], visibleAtPhase: 5, color: "#ff8c00" }
7103
7111
  ];
7104
- function Fi({ config: t }) {
7112
+ function _i({ config: t }) {
7105
7113
  const n = X.useContext(Re), o = n?.rotateY ?? 20, i = n?.autoRotateComponents ?? !0, { dispStatus: r, srv1Status: a, srv2Status: s, srv3Status: l, pdbStatus: u, sdbStatus: d, dbSync: p } = t;
7106
7114
  return /* @__PURE__ */ c(ze, { children: [
7107
7115
  /* @__PURE__ */ e(
@@ -7327,10 +7335,10 @@ function Fi({ config: t }) {
7327
7335
  children: /* @__PURE__ */ e(It, { synced: p, latencyMs: p ? 8 : 342 })
7328
7336
  }
7329
7337
  ),
7330
- /* @__PURE__ */ e(Hi, { config: t })
7338
+ /* @__PURE__ */ e(ji, { config: t })
7331
7339
  ] });
7332
7340
  }
7333
- function Hi({ config: t }) {
7341
+ function ji({ config: t }) {
7334
7342
  const n = X.useContext(Re), { dispStatus: o, srv1Status: i, srv2Status: r, srv3Status: a, pdbStatus: s, sdbStatus: l, dbSync: u } = t, d = n?.isSelected && n?.isExpandedPos;
7335
7343
  return n?.isSelected ? /* @__PURE__ */ c("div", { style: { pointerEvents: "none" }, children: [
7336
7344
  /* @__PURE__ */ e(
@@ -7440,80 +7448,80 @@ function Hi({ config: t }) {
7440
7448
  )
7441
7449
  ] }) : null;
7442
7450
  }
7443
- function dn({ config: t, ...n }) {
7451
+ function un({ config: t, ...n }) {
7444
7452
  return /* @__PURE__ */ e(
7445
7453
  At,
7446
7454
  {
7447
7455
  name: t.name,
7448
7456
  status: mt(t),
7449
- connections: Ui,
7457
+ connections: Vi,
7450
7458
  ...n,
7451
- children: /* @__PURE__ */ e(Fi, { config: t })
7459
+ children: /* @__PURE__ */ e(_i, { config: t })
7452
7460
  }
7453
7461
  );
7454
7462
  }
7455
7463
  export {
7456
- nn as AIOPsDashboard,
7464
+ ln as AIOPsDashboard,
7457
7465
  Ke as CPU3D,
7458
- Jt as Carousel,
7466
+ ni as Carousel,
7459
7467
  pt as CarouselContext,
7460
7468
  ft as CarouselItemContext,
7461
- Kt as ComponentDialog,
7462
- en as ComponentDrillView,
7463
- Di as DataProvider,
7469
+ ei as ComponentDialog,
7470
+ rn as ComponentDrillView,
7471
+ zi as DataProvider,
7464
7472
  je as Database3D,
7465
- Ki as DatabaseNode,
7473
+ en as DatabaseNode,
7466
7474
  Ne as DriveBay3D,
7467
- Ui as EXCHANGE_CONNECTIONS,
7468
- dn as ExchangeService,
7469
- ji as HOLO_BLUE,
7470
- _i as HOLO_CYAN,
7475
+ Vi as EXCHANGE_CONNECTIONS,
7476
+ un as ExchangeService,
7477
+ Ki as HOLO_BLUE,
7478
+ Qi as HOLO_CYAN,
7471
7479
  dt as HOLO_GLASS,
7472
7480
  Ue as HOLO_SURFACE,
7473
- $i as HistoricalGraphPanel,
7474
- ii as HoloBase,
7481
+ Ei as HistoricalGraphPanel,
7482
+ ai as HoloBase,
7475
7483
  ht as Human3D,
7476
- Gi as HumanNode,
7484
+ tn as HumanNode,
7477
7485
  Ge as Memory3D,
7478
7486
  Lt as MessageServer3D,
7479
- Ji as MessageServerNode,
7487
+ on as MessageServerNode,
7480
7488
  Nt as NetworkBlock3D,
7481
7489
  U as NodeCallout,
7482
7490
  Qe as Platter3D,
7483
7491
  K as Port3D,
7484
- an as SAPService,
7485
- Mi as SAP_CONNECTIONS,
7492
+ cn as SAPService,
7493
+ Fi as SAP_CONNECTIONS,
7486
7494
  E as STATUS_CFG,
7487
7495
  ke as Server3D,
7488
- Qi as ServerNode,
7496
+ Ji as ServerNode,
7489
7497
  At as Service,
7490
7498
  Re as ServiceContext,
7491
- qt as ServiceDialog,
7499
+ Zt as ServiceDialog,
7492
7500
  O as ServiceNode,
7493
- ei as SvgConnection,
7501
+ oi as SvgConnection,
7494
7502
  It as SyncBridge,
7495
7503
  F as ThreadPool3D,
7496
7504
  bt as WebDispatcher3D,
7497
- Zi as WebDispatcherNode,
7498
- sn as computeExchangeDialogAlerts,
7499
- ln as computeExchangeDialogMetrics,
7505
+ nn as WebDispatcherNode,
7506
+ fn as computeExchangeDialogAlerts,
7507
+ pn as computeExchangeDialogMetrics,
7500
7508
  mt as computeExchangeServiceStatus,
7501
- rn as computeSAPDialogAlerts,
7502
- on as computeSAPDialogMetrics,
7509
+ dn as computeSAPDialogAlerts,
7510
+ sn as computeSAPDialogMetrics,
7503
7511
  yt as computeSAPServiceStatus,
7504
- Li as defaultDataTransform,
7512
+ Mi as defaultDataTransform,
7505
7513
  Je as getDatabaseGraphSeries,
7506
7514
  Ze as getDatabaseSubComponents,
7507
7515
  zt as getDispatcherGraphSeries,
7508
7516
  Mt as getDispatcherSubComponents,
7509
- Wi as getMessageServerGraphSeries,
7510
- Ni as getMessageServerSubComponents,
7517
+ Ui as getMessageServerGraphSeries,
7518
+ Bi as getMessageServerSubComponents,
7511
7519
  Me as getServerGraphSeries,
7512
7520
  We as getServerSubComponents,
7513
7521
  ct as makeFaceStyles,
7514
- Ti as useAIOpsData,
7515
- Oi as useAIOpsDataOptional,
7516
- Xi as useCarouselContext,
7517
- qi as useCarouselItemContext,
7518
- tn as useQueryResult
7522
+ Di as useAIOpsData,
7523
+ Ni as useAIOpsDataOptional,
7524
+ Gi as useCarouselContext,
7525
+ Zi as useCarouselItemContext,
7526
+ an as useQueryResult
7519
7527
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-dashstream",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "type": "module",
5
5
  "author": "Busaud",
6
6
  "license": "MIT",