aura-glass
Version:
A comprehensive glassmorphism design system for React applications with 142+ production-ready components
154 lines (151 loc) • 6.48 kB
JavaScript
'use client';
import { jsxs, jsx } from 'react/jsx-runtime';
import { useState, useMemo, useEffect } from 'react';
import { cn } from '../../lib/utilsComprehensive.js';
import '../../primitives/GlassCore.js';
import '../../primitives/glass/GlassAdvanced.js';
import { OptimizedGlassCore } from '../../primitives/OptimizedGlassCore.js';
import '../../primitives/glass/OptimizedGlassAdvanced.js';
import '../../primitives/MotionNative.js';
import '../../primitives/motion/MotionFramer.js';
const DEFAULT_SIGNALS = [{
channel: "sensory",
weights: [0.42, -0.31, 0.57, -0.12, 0.25],
phase: 0.6
}, {
channel: "cognitive",
weights: [0.63, -0.44, 0.18, 0.27, -0.35],
phase: 0.52
}, {
channel: "motor",
weights: [0.29, -0.17, 0.41, -0.22, 0.33],
phase: 0.47
}];
const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
const computeMetrics = signals => {
if (signals.length === 0) {
return {
energyUsage: 0,
coherence: 0,
plasticity: 0,
stability: 0,
timestamp: Date.now()
};
}
const allWeights = signals.flatMap(signal => signal.weights);
const mean = allWeights.reduce((sum, weight) => sum + weight, 0) / allWeights.length;
const variance = allWeights.reduce((sum, weight) => sum + (weight - mean) ** 2, 0) / allWeights.length;
const stdDeviation = Math.sqrt(variance);
const averageMagnitude = allWeights.reduce((sum, weight) => sum + Math.abs(weight), 0) / allWeights.length;
const phaseVariance = signals.reduce((sum, signal) => sum + Math.pow((signal.phase ?? 0.5) - 0.5, 2), 0) / signals.length;
return {
energyUsage: clamp(averageMagnitude, 0, 1),
coherence: clamp(1 - stdDeviation, 0, 1),
plasticity: clamp(variance * 2, 0, 1),
stability: clamp(1 - phaseVariance * 4, 0, 1),
timestamp: Date.now()
};
};
function NeuromorphicLearningNetwork({
className,
signals = DEFAULT_SIGNALS,
onSnapshot,
autoSampleInterval
}) {
const [snapshot, setSnapshot] = useState(() => computeMetrics(signals));
const normalizedSignals = useMemo(() => {
return signals.length > 0 ? signals : DEFAULT_SIGNALS;
}, [signals]);
useEffect(() => {
setSnapshot(computeMetrics(normalizedSignals));
}, [normalizedSignals]);
useEffect(() => {
if (!autoSampleInterval) return;
const timer = setInterval(() => {
const latest = computeMetrics(normalizedSignals);
setSnapshot(latest);
onSnapshot?.(latest);
}, clamp(autoSampleInterval, 500, 10000));
return () => clearInterval(timer);
}, [autoSampleInterval, normalizedSignals, onSnapshot]);
useEffect(() => {
onSnapshot?.(snapshot);
}, [snapshot, onSnapshot]);
return jsxs(OptimizedGlassCore, {
role: "article",
"aria-label": "Neuromorphic learning network",
className: cn("glass-radius-3xl glass-border glass-border-soft glass-p-6 space-y-6", "bg-gradient-to-br from-indigo-950/80 via-slate-900/60 to-slate-900/30", className),
children: [jsxs("header", {
children: [jsx("h2", {
className: 'glass-text-xl font-semibold text-primary',
children: "Neuromorphic Learning Network"
}), jsx("p", {
className: 'glass-text-sm text-primary/70',
children: "Monitor coherence between quantum-inspired spikes and adaptive plasticity feedback."
})]
}), jsx("div", {
className: 'glass-grid glass-gap-4 sm:grid-cols-2 lg:grid-cols-4',
children: [["Energy Usage", snapshot.energyUsage], ["Coherence", snapshot.coherence], ["Plasticity", snapshot.plasticity], ["Stability", snapshot.stability]].map(([label, value]) => jsxs("div", {
className: 'glass-radius-2xl glass-border glass-border-white/10 glass-surface-subtle/5 glass-p-4 text-primary',
children: [jsxs("div", {
className: 'glass-flex glass-items-center glass-justify-between glass-text-xs uppercase tracking-wide text-primary/60',
children: [jsx("span", {
children: label
}), jsxs("span", {
children: [(value * 100).toFixed(0), "%"]
})]
}), jsx("div", {
className: 'mt-3 h-2 glass-w-full overflow-hidden glass-radius-full glass-surface-subtle/10',
children: jsx("div", {
className: 'glass-h-full glass-radius-full bg-gradient-to-r from-sky-400/70 to-cyan-500/80',
style: {
width: `${value * 100}%`
}
})
})]
}, label))
}), jsxs("section", {
className: 'space-y-3',
children: [jsx("h3", {
className: 'glass-text-sm font-semibold uppercase tracking-wide text-primary/60',
children: "Signal channels"
}), jsx("div", {
className: 'glass-grid glass-gap-3 sm:grid-cols-2 lg:grid-cols-3',
children: normalizedSignals.map(signal => jsxs("div", {
className: 'glass-radius-2xl glass-border glass-border-white/10 glass-surface-subtle/5 glass-p-4 text-primary/80',
children: [jsxs("div", {
className: 'glass-flex glass-items-center glass-justify-between glass-text-sm text-primary',
children: [jsx("span", {
className: 'font-semibold',
children: signal.channel
}), jsxs("span", {
className: 'glass-text-xs text-primary/60',
children: ["Weights ", signal.weights.length]
})]
}), jsxs("div", {
className: 'mt-3 space-y-2 glass-text-xs',
children: [jsxs("div", {
className: 'glass-flex glass-items-center glass-justify-between text-primary/60',
children: [jsx("span", {
children: "Avg Weight"
}), jsx("span", {
className: 'font-semibold text-primary/80',
children: (signal.weights.reduce((sum, weight) => sum + weight, 0) / signal.weights.length).toFixed(2)
})]
}), jsxs("div", {
className: 'glass-flex glass-items-center glass-justify-between text-primary/60',
children: [jsx("span", {
children: "Phase Alignment"
}), jsxs("span", {
className: 'font-semibold text-primary/80',
children: [((signal.phase ?? 0.5) * 100).toFixed(0), "%"]
})]
})]
})]
}, signal.channel))
})]
})]
});
}
export { NeuromorphicLearningNetwork, NeuromorphicLearningNetwork as default };
//# sourceMappingURL=NeuromorphicLearningNetwork.js.map