File size: 897 Bytes
55847d9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import * as React from 'react'
import { cn } from '../../lib/utils'
/** 原生 select 的统一样式封装(轻量替代 Radix Select) */
const NativeSelect = React.forwardRef<HTMLSelectElement, React.SelectHTMLAttributes<HTMLSelectElement>>(
({ className, children, ...props }, ref) => {
return (
<select
className={cn(
'flex h-7 w-full rounded-md border border-[var(--color-border)] bg-[var(--color-panel)] px-2 py-1 text-xs text-[var(--color-text)]',
'focus:outline-none focus:ring-1 focus:ring-[var(--color-accent)] focus:border-[var(--color-accent)]',
'disabled:cursor-not-allowed disabled:opacity-50',
'appearance-none cursor-pointer',
className
)}
ref={ref}
{...props}
>
{children}
</select>
)
}
)
NativeSelect.displayName = 'NativeSelect'
export { NativeSelect }
|