vchikalkin 0424d8da50 packages/ui: elements style
apps/web: page render elements from meta
2023-11-09 13:47:45 +03:00

30 lines
1.1 KiB
TypeScript

import { cn } from './utils';
import type { VariantProps } from 'class-variance-authority';
import { cva } from 'class-variance-authority';
import { forwardRef } from 'react';
const variants = cva(
'hover:border-primary-500 focus:border-primary-500 block w-full rounded-sm border disabled:hover:border-gray-300 border-gray-300 h-9 p-2 px-3 text-sm text-gray-900 outline-none transition-all ease-linear hover:transition-all focus:transition-all disabled:cursor-not-allowed disabled:text-opacity-30'
);
export type InputProps = React.InputHTMLAttributes<HTMLInputElement> &
VariantProps<typeof variants>;
export const Input = forwardRef<HTMLInputElement, InputProps>(({ className, ...props }, ref) => (
<div className="flex flex-col">
<label
htmlFor={props.id}
className="mb-1 block overflow-hidden overflow-ellipsis whitespace-nowrap text-sm font-medium text-black text-opacity-90"
>
{props.title}
</label>
<input
ref={ref}
type={props.type}
id={props.id}
className={cn(variants({ className }))}
{...props}
/>
</div>
));