Initial commit: TopSysOps site + admin panel
Multi-page public site (Next.js), Node/Express backend with Postgres, and Vite admin/account app, restructured from a single-page layout into dedicated service, promotions, cases, about, FAQ, and blog pages for SEO. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013otXCiTZsxdZ4SJKZ9wUky
This commit is contained in:
commit
130c5382cd
108 files changed
+7146
No files matched your search
@@ -0,0 +1,23 @@
|
||||
function cx(...args) {
|
||||
return args.filter(Boolean).join(' ');
|
||||
}
|
||||
|
||||
const COLORS = {
|
||||
ok: 'bg-emerald-500',
|
||||
warn: 'bg-amber-500',
|
||||
danger: 'bg-rose-500',
|
||||
neutral: 'bg-slate-400',
|
||||
};
|
||||
|
||||
export default function StatusDot({ tone = 'neutral', pulse, label, mono }) {
|
||||
const dot = COLORS[tone] || COLORS.neutral;
|
||||
return (
|
||||
<span className="inline-flex items-center gap-2">
|
||||
<span className="relative flex h-2 w-2">
|
||||
{pulse && <span className={cx('animate-ping absolute inline-flex h-full w-full rounded-full opacity-60', dot)} />}
|
||||
<span className={cx('relative inline-flex rounded-full h-2 w-2', dot)} />
|
||||
</span>
|
||||
{label && <span className={cx('text-xs', mono && 'font-mono')}>{label}</span>}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user