Skip to content

Textarea

A multi-line text input component with configurable variants, sizes, label placements, and validation states.

Basic Usage

blade
<x-basekit-ui::textarea
    name="description"
    label="Description"
    placeholder="Enter description"
/>

Props

PropTypeDefaultDescription
rowsint4Number of visible rows
variantstring'secondary'Visual style: primary, secondary, success, warning, info, ghost
sizestring'md'Control size: sm, md, lg
labelstringnullLabel text
errorstringnullError message shown below the field
hintstringnullHelper text shown below the field
placeholderstringnullPlaceholder text
valuestringnullInitial textarea value
corner-hintstringnullTop-right label row hint
label-stylestring'default'Label placement: default, inset, overlap
is-underlineboolfalseUse underline-only styling

Standard textarea attributes such as name, maxlength, disabled, and readonly pass through to the underlying <textarea> element.

Slots

SlotDescription
labelCustom label markup
errorCustom error markup
hintCustom helper text

Variants

Supported variants: primary, secondary, success, warning, info, ghost.

blade
<x-basekit-ui::textarea name="primary" label="Primary" variant="primary" />
<x-basekit-ui::textarea name="secondary" label="Secondary" variant="secondary" />
<x-basekit-ui::textarea name="success" label="Success" variant="success" value="Looks good" />
<x-basekit-ui::textarea name="warning" label="Warning" variant="warning" value="Needs review" />
<x-basekit-ui::textarea name="info" label="Info" variant="info" />
<x-basekit-ui::textarea name="ghost" label="Ghost" variant="ghost" />

Sizes

Supported sizes: sm,md,lg.

blade
<x-basekit-ui::textarea name="small" size="sm" rows="3" />
<x-basekit-ui::textarea name="medium" size="md" rows="4" />
<x-basekit-ui::textarea name="large" size="lg" rows="5" />

Label Styles

blade
<x-basekit-ui::textarea name="bio" label="Bio" label-style="inset" />
<x-basekit-ui::textarea name="notes" label="Notes" label-style="overlap" />
<x-basekit-ui::textarea name="message" label="Message" is-underline />

With Corner Hint

blade
<x-basekit-ui::textarea
    name="summary"
    label="Summary"
    corner-hint="Optional"
/>

Validation State

blade
<x-basekit-ui::textarea
    name="description"
    label="Description"
    error="Description is required"
/>

Custom Classes

Override or extend styles with the class attribute:

blade
<x-basekit-ui::textarea
    name="custom-description"
    label="Description"
    class="mt-2"
/>

CSS Variables

Customize textarea appearance via CSS variables:

css
:root {
  --textarea-radius: var(--radius-md);
  --textarea-transition:
    border-color var(--transition-normal) ease,
    box-shadow var(--transition-normal) ease;

  /* Sizes */
  --textarea-padding-y-sm: 0.375rem;
  --textarea-padding-x-sm: 0.75rem;
  --textarea-font-size-sm: var(--font-size-sm);

  --textarea-padding-y-md: 0.625rem;
  --textarea-padding-x-md: 0.875rem;
  --textarea-font-size-md: var(--font-size-md);

  --textarea-padding-y-lg: 0.75rem;
  --textarea-padding-x-lg: 1rem;
  --textarea-font-size-lg: var(--font-size-lg);

  /* Colors */
  --textarea-bg: var(--surface-base);
  --textarea-border: var(--color-slate-300);
  --textarea-text: var(--color-slate-900);
  --textarea-placeholder: var(--color-slate-400);

  --textarea-focus-border: var(--color-primary-500);
  --textarea-focus-ring: var(--color-primary-100);

  --textarea-primary-border: var(--color-primary-500);
  --textarea-primary-ring: var(--color-primary-100);

  --textarea-secondary-border: var(--color-slate-300);
  --textarea-secondary-ring: var(--color-slate-100);

  --textarea-error-border: var(--color-danger-500);
  --textarea-error-ring: var(--color-danger-100);

  --textarea-success-border: var(--color-success-500);
  --textarea-success-ring: var(--color-success-100);

  --textarea-warning-border: var(--color-warning-500);
  --textarea-warning-ring: var(--color-warning-100);

  --textarea-danger-border: var(--color-danger-500);
  --textarea-danger-ring: var(--color-danger-100);

  --textarea-info-border: var(--color-info-500);
  --textarea-info-ring: var(--color-info-100);

  --textarea-ghost-border: transparent;
  --textarea-ghost-ring: var(--color-slate-100);
  --textarea-ghost-bg: transparent;
}

Configuration

Configure defaults in config/basekit-laravel-ui.php:

php
'textarea' => [
    'enabled' => true,
    'variants' => ['primary', 'secondary', 'success', 'warning', 'info', 'ghost'],
    'sizes' => ['sm', 'md', 'lg'],
    'default_variant' => 'secondary',
    'default_size' => 'md',
],

Released under the MIT License.