Jake Shore 96e52666c5 MCPEngine full sync — studio scaffold, factory v2, server updates, state.json — 2026-02-12
=== NEW ===
- studio/ — MCPEngine Studio scaffold (Next.js monorepo, build plan)
- docs/FACTORY-V2.md — Factory v2 architecture doc
- docs/CALENDLY_MCP_BUILD_SUMMARY.md — Calendly MCP build report

=== UPDATED SERVERS ===
- fieldedge: Added jobs-tools, UI build script, main entry update
- lightspeed: Updated main + server entry points
- squarespace: Added collection-browser + page-manager apps
- toast: Added main + server entry points

=== INFRA ===
- infra/command-center/state.json — Updated pipeline state
- infra/command-center/FACTORY-V2.md — Factory v2 operator playbook
2026-02-12 17:58:33 -05:00

42 lines
956 B
TypeScript

import React from 'react';
import { clsx } from 'clsx';
import { twMerge } from 'tailwind-merge';
export type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
export interface BadgeProps {
variant?: BadgeVariant;
children: React.ReactNode;
className?: string;
}
const variantStyles: Record<BadgeVariant, string> = {
default: 'bg-gray-700 text-gray-300',
success: 'bg-emerald-500/15 text-emerald-400',
warning: 'bg-amber-500/15 text-amber-400',
error: 'bg-red-500/15 text-red-400',
info: 'bg-blue-500/15 text-blue-400',
};
export const Badge: React.FC<BadgeProps> = ({
variant = 'default',
children,
className,
}) => {
return (
<span
className={twMerge(
clsx(
'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium',
variantStyles[variant],
),
className,
)}
>
{children}
</span>
);
};
Badge.displayName = 'Badge';