Textarea.tsx 774 B

1234567891011121314151617181920212223242526272829
  1. import { JSX } from "preact";
  2. interface TextareaProps
  3. extends JSX.TextareaHTMLAttributes<HTMLTextAreaElement> {
  4. error?: boolean;
  5. label?: string;
  6. }
  7. export default function Textarea({
  8. error = false,
  9. label,
  10. className = "",
  11. ...props
  12. }: TextareaProps) {
  13. const textareaClasses = `w-full block box-border rounded border ${
  14. error ? "border-red-600" : "border-gray-300 dark:border-gray-600"
  15. } text-sm outline-none h-full p-1.5 resize-none dark:bg-gray-800 dark:text-gray-100 ${className}`;
  16. if (label) {
  17. return (
  18. <div className="mb-2">
  19. <label className="block mb-1 text-sm">{label}</label>
  20. <textarea className={textareaClasses} {...props} />
  21. </div>
  22. );
  23. }
  24. return <textarea className={textareaClasses} {...props} />;
  25. }