Milestone 3
This commit is contained in:
37
frontend/src/components/ui/FlowNode.tsx
Normal file
37
frontend/src/components/ui/FlowNode.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import type { ReactNode } from 'react';
|
||||
|
||||
import { cn, type Accent } from '@/lib/cn';
|
||||
|
||||
interface FlowNodeProps {
|
||||
accent?: Accent;
|
||||
children: ReactNode;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
const ACCENT_BORDER_TEXT: Record<Accent, string> = {
|
||||
red: 'border-red text-red',
|
||||
orange: 'border-orange text-orange',
|
||||
yellow: 'border-yellow text-yellow',
|
||||
green: 'border-green text-green',
|
||||
cyan: 'border-cyan text-cyan',
|
||||
blue: 'border-blue text-blue',
|
||||
purple: 'border-purple text-purple',
|
||||
pink: 'border-pink text-pink',
|
||||
rose: 'border-rose text-rose',
|
||||
teal: 'border-teal text-teal',
|
||||
};
|
||||
|
||||
/** Flow node from design.md §5.5 — chained horizontally with arrows in flex rows. */
|
||||
export function FlowNode({ accent, children, className }: FlowNodeProps) {
|
||||
return (
|
||||
<span
|
||||
className={cn(
|
||||
'inline-block bg-bg-card rounded-md border px-3 py-2 font-mono text-4xs whitespace-nowrap shrink-0',
|
||||
accent ? ACCENT_BORDER_TEXT[accent] : 'border-border text-text',
|
||||
className,
|
||||
)}
|
||||
>
|
||||
{children}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user