Textarea

A component for multi-line text input.

Basic Usage

Textarea is an input element that can accept multiple lines of text.

HTML
<textarea placeholder="Enter your content..."></textarea>
<textarea placeholder="Enter your content..." rows="5"></textarea>
<textarea placeholder="Disabled" disabled></textarea>
Live Example:

Resizing

By default, textarea is resizable. You can disable resizing using resize: none.

HTML
<!-- Resizable -->
<textarea rows="4" placeholder="You can resize this"></textarea>

<!-- Fixed (resize: none) -->
<textarea class="resize-none" rows="4" placeholder="This is fixed size"></textarea>
Live Example:
SCSS
textarea.resize-none {
  resize: none;
}

States

Textarea supports default, success, danger, disabled, and read-only states.

HTML
<!-- Default -->
<textarea placeholder="Default"></textarea>

<!-- Success -->
<textarea class="success">This is valid input.</textarea>

<!-- Danger -->
<textarea class="danger">This is invalid input.</textarea>

<!-- Disabled -->
<textarea placeholder="Disabled" disabled></textarea>

<!-- Read-only -->
<textarea readonly>This content cannot be modified.</textarea>
Live Example:
SCSS
// Success 상태 (border: 1px solid color('success'))
textarea.success {
  border: 1px solid color('success');

  &:focus-visible:not(:disabled) {
    outline: 4px solid color('success-outline');
  }
}

// Danger 상태 (border: 1px solid color('danger'))
textarea.danger {
  border: 1px solid color('danger');

  &:focus-visible:not(:disabled) {
    outline: 4px solid color('danger-outline');
  }
}

// Disabled 상태
textarea:disabled {
  background: color('bg-disabled');
  cursor: not-allowed;
}

// Read-only 상태 (border: none, resize: none)
textarea:read-only {
  border: none;
  resize: none;
}

SCSS Styling

You can apply textarea styles using podo-ui mixins.

component.module.scss
@use 'podo-ui/mixin' as *;

// 기본 textarea 스타일
textarea {
  @include p3;
  padding: s(3) s(4);
  background-color: color('bg-block');
  border: 1px solid color('border');
  border-radius: r(2);

  &:focus-visible:not(:disabled) {
    border-color: color('primary-base');
    outline: 4px solid color('primary-outline');
  }

  &::placeholder {
    color: color('placeholder');
  }
}

// 크기 조절 방지
textarea.resize-none {
  resize: none;
}

// Success/Danger 상태
textarea.success {
  border: 1px solid color('success');

  &:focus-visible:not(:disabled) {
    outline: 4px solid color('success-outline');
  }
}

textarea.danger {
  border: 1px solid color('danger');

  &:focus-visible:not(:disabled) {
    outline: 4px solid color('danger-outline');
  }
}

// 비활성화 상태
textarea:disabled {
  background: color('bg-disabled');
  cursor: not-allowed;
}

// 읽기 전용 상태
textarea:read-only {
  border: none;
  resize: none;
}

Usage Examples

Check out real-world usage examples.

Comment Form
0 / 500 characters
Feedback Form