import { Textarea } from 'sud-ui';긴 텍스트를 입력할 때.
import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const BasicTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
value={value}
onChange={(e) => setValue(e.target.value)}
placeholder="Enter text here"
/>
);
};
export default BasicTextarea;import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const DisabledTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
value={value}
onChange={(e) => setValue(e.target.value)}
disabled
placeholder="Disabled Textarea"
/>
);
};
export default DisabledTextarea;import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const MaxLengthTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
value={value}
onChange={(e) => setValue(e.target.value)}
maxLength={120}
placeholder="Max Length Textarea"
/>
);
};
export default MaxLengthTextarea;import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const UnderlineTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
value={value}
onChange={(e) => setValue(e.target.value)}
underline
placeholder="Underline Textarea"
/>
);
};
export default UnderlineTextarea;import React, { useState } from 'react';
import { Textarea, Radio, Card } from 'sud-ui';
const ShapeTextarea = () => {
const [shape, setShape] = useState('rounded');
const [shapeValue, setShapeValue] = useState('');
const shapeOptions = [
{ label: 'rounded', value: 'rounded' },
{ label: 'square', value: 'square' }
];
return (
<div className="flex flex-col gap-[20px]">
<Card style={{ width: "100%" }} shadow="none" colorType="sub">
<div className="flex justify-center w-full">
<Radio.Group
options={shapeOptions}
direction="horizontal"
value={shape}
onChange={setShape}
/>
</div>
</Card>
<Textarea
shape={shape}
value={shapeValue}
onChange={(e) => setShapeValue(e.target.value)}
placeholder={`${shape} Shape Textarea`}
/>
</div>
);
};
export default ShapeTextarea;import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const ResizableTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
value={value}
onChange={(e) => setValue(e.target.value)}
resizable
placeholder="Resizable Textarea"
/>
);
};
export default ResizableTextarea;import React, { useState } from 'react';
import { Textarea, Button } from 'sud-ui';
import { PieChartOutline, Chat } from 'sud-icons';
const BottomAddonTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
placeholder="Bottom Button Area Textarea"
value={value}
onChange={(e) => setValue(e.target.value)}
autoSize
bottomLeft={
<Button size="sm" colorType="cool-gray">
Cancel
</Button>
}
bottomRight={
<div style={{ display: "flex", gap: 6 }}>
<Button size="sm" icon={<PieChartOutline size={16} />} />
<Button size="sm" icon={<Chat size={16} />} colorType="primary">
Send
</Button>
</div>
}
/>
);
};
export default BottomAddonTextarea;import React, { useState } from 'react';
import { Textarea, Radio, Card } from 'sud-ui';
const SizeTextarea = () => {
const [size, setSize] = useState('md');
const [value, setValue] = useState('');
const sizeOptions = [
{ label: 'sm', value: 'sm' },
{ label: 'md', value: 'md' },
{ label: 'lg', value: 'lg' }
];
return (
<div className="flex flex-col gap-[20px]">
<Card style={{ width: "100%" }} shadow="none" colorType="sub">
<div className="flex justify-center w-full">
<Radio.Group
options={sizeOptions}
direction="horizontal"
value={size}
onChange={setSize}
/>
</div>
</Card>
<Textarea
size={size}
value={value}
onChange={(e) => setValue(e.target.value)}
placeholder={`${size} size Textarea`}
/>
</div>
);
};
export default SizeTextarea;import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const ReadOnlyTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
value={value}
onChange={(e) => setValue(e.target.value)}
readOnly
placeholder="Read Only Textarea"
/>
);
};
export default ReadOnlyTextarea;import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const LabelTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
value={value}
onChange={(e) => setValue(e.target.value)}
label="name"
placeholder="Label Textarea"
/>
);
};
export default LabelTextarea;import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const ErrorTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
value={value}
onChange={(e) => setValue(e.target.value)}
error={value.length > 0}
errorText="Error Message"
placeholder="Error Textarea"
/>
);
};
export default ErrorTextarea;import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const CustomColorTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
placeholder="Enter text here"
value={value}
onChange={(e) => setValue(e.target.value)}
color="orange-8"
background="orange-1"
borderColor="orange-8"
/>
);
};
export default CustomColorTextarea;import React, { useState } from 'react';
import { Textarea } from 'sud-ui';
const AutoSizeTextarea = () => {
const [value, setValue] = useState("");
return (
<Textarea
value={value}
onChange={(e) => setValue(e.target.value)}
autoSize
placeholder="Auto Size Textarea"
/>
);
};
export default AutoSizeTextarea;속성 이름 | 설명 | 타입 | 기본값 |
|---|
| value | 입력 필드의 값 | string | "" |
| onChange | 값이 변경될 때 호출되는 함수 | (e: { target: { value: string } }) => void | - |
| placeholder | 입력 필드의 placeholder 텍스트 | string | - |
| size | 입력 필드의 크기 | sm | md | lg | md |
| shape | 입력 필드의 모서리 모양 | square | circle | rounded | capsule | rounded |
| disabled | 입력 필드 비활성화 여부 | boolean | false |
| readOnly | 읽기 전용 여부 | boolean | false |
| autoFocus | 자동 포커스 여부 | boolean | false |
| spellCheck | 맞춤법 검사 여부 | boolean | - |
| maxLength | 최대 입력 길이 | number | - |
| label | 입력 필드의 라벨 | string | ReactNode | - |
| underline | 밑줄 스타일 여부 | boolean | false |
| error | 에러 상태 여부 | boolean | false |
| errorText | 에러 메시지 | string | - |
| rows | 기본 행 수 | number | 4 |
| resizable | 크기 조절 가능 여부 | boolean | false |
| autoSize | 자동 크기 조절 여부 | boolean | false |
| bottomLeft | 하단 왼쪽 요소 | ReactNode | - |
| bottomRight | 하단 오른쪽 요소 | ReactNode | - |
| background | 배경색(palette값 또는 HEX code) | string | - |
| color | 텍스트 색상(palette값 또는 HEX code) | string | - |
| border | 테두리 표시 여부 | boolean | true |
| borderColor | 테두리 색상(palette값 또는 HEX code) | string | - |
| borderType | 테두리 스타일 | solid | dashed | dotted | double | groove | ridge | inset | outset | none | solid |
| borderWeight | 테두리 두께 | number | 1 |
| shadow | 그림자 크기 | none | sm | md | lg | sm |
| className | 추가 클래스명 | string | "" |
| style | 추가 스타일 | React.CSSProperties | {} |