'use client'; import React from 'react'; import { createTextarea } from '@gluestack-ui/textarea'; import { View, TextInput } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { withStyleContext, useStyleContext, } from '@gluestack-ui/nativewind-utils/withStyleContext'; import type { VariantProps } from '@gluestack-ui/nativewind-utils'; const SCOPE = 'TEXTAREA'; const UITextarea = createTextarea({ Root: withStyleContext(View, SCOPE), Input: TextInput, }); const textareaStyle = tva({ base: 'w-full h-[100px] border border-background-300 rounded data-[hover=true]:border-outline-400 data-[focus=true]:border-primary-700 data-[focus=true]:data-[hover=true]:border-primary-700 data-[disabled=true]:opacity-40 data-[disabled=true]:bg-background-50 data-[disabled=true]:data-[hover=true]:border-background-300', variants: { variant: { default: 'data-[focus=true]:border-primary-700 data-[focus=true]:web:ring-1 data-[focus=true]:web:ring-inset data-[focus=true]:web:ring-indicator-primary data-[invalid=true]:border-error-700 data-[invalid=true]:web:ring-1 data-[invalid=true]:web:ring-inset data-[invalid=true]:web:ring-indicator-error data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-primary-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-indicator-primary data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-indicator-error ', }, size: { sm: '', md: '', lg: '', xl: '', }, }, }); const textareaInputStyle = tva({ base: 'p-2 web:outline-0 web:outline-none flex-1 color-typography-900 align-text-top placeholder:text-typography-500 web:cursor-text web:data-[disabled=true]:cursor-not-allowed', parentVariants: { size: { sm: 'text-sm', md: 'text-base', lg: 'text-lg', xl: 'text-xl', }, }, }); type ITextareaProps = React.ComponentProps & VariantProps; const Textarea = React.forwardRef< React.ComponentRef, ITextareaProps >(function Textarea( { className, variant = 'default', size = 'md', ...props }, ref ) { return ( ); }); type ITextareaInputProps = React.ComponentProps & VariantProps; const TextareaInput = React.forwardRef< React.ComponentRef, ITextareaInputProps >(function TextareaInput({ className, ...props }, ref) { const { size: parentSize } = useStyleContext(SCOPE); return ( ); }); Textarea.displayName = 'Textarea'; TextareaInput.displayName = 'TextareaInput'; export { Textarea, TextareaInput };