Files
claudecodeui/src/shared/view/ui/PillBar.tsx

42 lines
1.3 KiB
TypeScript

import type { ReactNode } from 'react';
import { cn } from '../../../lib/utils';
/* ── Container ─────────────────────────────────────────────────── */
type PillBarProps = {
children: ReactNode;
className?: string;
};
export function PillBar({ children, className }: PillBarProps) {
return (
<div className={cn('inline-flex items-center gap-[2px] rounded-lg bg-muted/60 p-[3px]', className)}>
{children}
</div>
);
}
/* ── Individual pill button ────────────────────────────────────── */
type PillProps = {
isActive: boolean;
onClick: () => void;
children: ReactNode;
className?: string;
};
export function Pill({ isActive, onClick, children, className }: PillProps) {
return (
<button
onClick={onClick}
className={cn(
'flex touch-manipulation items-center gap-1.5 rounded-md px-3 py-2 text-sm font-medium transition-all duration-150',
isActive
? 'bg-background text-foreground shadow-sm'
: 'text-muted-foreground active:bg-background/50',
className,
)}
>
{children}
</button>
);
}