extract ui to lib

This commit is contained in:
2026-02-22 20:35:27 +01:00
parent 23423784df
commit ac60855ae5
24 changed files with 4913 additions and 0 deletions

36
src/components/Chip.tsx Normal file
View File

@@ -0,0 +1,36 @@
import type { ElementType, ReactNode } from 'react';
type ChipVariant = 'solid' | 'outlined';
type ChipTone = 'neutral' | 'indigo' | 'cyan';
type ChipProps<T extends ElementType> = {
variant?: ChipVariant;
tone?: ChipTone;
as?: T;
className?: string;
children: ReactNode;
};
const variantClassMap: Record<ChipVariant, string> = {
solid: 'chip-solid',
outlined: 'chip-outlined'
};
const toneClassMap: Record<ChipTone, string> = {
neutral: 'chip-neutral',
indigo: 'chip-indigo',
cyan: 'chip-cyan'
};
export function Chip<T extends ElementType = 'span'>({
variant = 'solid',
tone = 'neutral',
as,
className = '',
children
}: Readonly<ChipProps<T>>) {
const Component = as ?? 'span' as ElementType;
const classes = `chip-root ${variantClassMap[variant]} ${toneClassMap[tone]} ${className}`.trim();
return <Component className={classes}>{children}</Component>;
}