Spaces:
Sleeping
Sleeping
| import React from 'react'; | |
| export const NeoCard = ({ children, className = '', noBorder = false }) => ( | |
| <div className={`bg-slate-900/80 backdrop-blur-sm rounded-none border ${noBorder ? 'border-transparent' : 'border-slate-700'} shadow-lg relative overflow-hidden ${className}`}> | |
| {!noBorder && ( | |
| <> | |
| <div className="absolute top-0 left-0 w-2 h-2 border-t border-l border-cyan-500/50" /> | |
| <div className="absolute top-0 right-0 w-2 h-2 border-t border-r border-cyan-500/50" /> | |
| <div className="absolute bottom-0 left-0 w-2 h-2 border-b border-l border-cyan-500/50" /> | |
| <div className="absolute bottom-0 right-0 w-2 h-2 border-b border-r border-cyan-500/50" /> | |
| </> | |
| )} | |
| {children} | |
| </div> | |
| ); | |
| export const NeoBadge = ({ children, color = 'cyan' }) => { | |
| const styles = { | |
| cyan: 'bg-cyan-900/30 text-cyan-400 border-cyan-500/30 shadow-[0_0_10px_rgba(34,211,238,0.2)]', | |
| pink: 'bg-fuchsia-900/30 text-fuchsia-400 border-fuchsia-500/30 shadow-[0_0_10px_rgba(232,121,249,0.2)]', | |
| red: 'bg-red-900/30 text-red-400 border-red-500/30', | |
| amber: 'bg-amber-900/30 text-amber-400 border-amber-500/30', | |
| }; | |
| return ( | |
| <span className={`px-2 py-1 rounded-none border text-xs font-mono tracking-wider ${styles[color] || styles.cyan}`}> | |
| {children} | |
| </span> | |
| ); | |
| }; | |
| // Fix #12: Stable slider component — onChange receives raw float, no inline closure needed | |
| export const Slider = ({ label, value, onChange, min, max, step, unit }) => ( | |
| <div className="flex flex-col gap-1 mb-3"> | |
| <label className="flex justify-between text-xs font-mono text-slate-400"> | |
| <span className="uppercase tracking-widest">{label}</span> | |
| <span className="text-cyan-400">{value}{unit}</span> | |
| </label> | |
| <input | |
| type="range" | |
| min={min} max={max} step={step} | |
| value={value} | |
| onChange={onChange} | |
| className="w-full h-1 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-cyan-500 hover:accent-cyan-400" | |
| /> | |
| </div> | |
| ); | |